LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

Ahora puedes ver en tu componente hello-world un formulario con dos columnas, dos filas y casillas de verificación. Puedes hacer clic en las casillas para seleccionar las opciones que desees (Figura 11).

Figura 11

8- Añadir la gestión de idiomas

Joomla! 2.5 gestiona los idiomas de los componentes en cuatro situaciones diferentes:

  • Mostrando un componente en el sitio público
  • Gestionando un componente en la administración
  • Gestionando los menús en la administración
  • Instalando un componente (nuevo en 1.7)

Joomla! 2.5 utiliza dos ubicaciones de carpetas diferentes para los idiomas:

  • Una en administrator/language o language
  • Una en la carpeta del componente (administrator/components/*componente*/language o components/*componente*/language)

Esto depende de como se instale el componente.

Gestión del idioma en el sitio público

Con el gestor de archivo y editor favorito, coloque un archivo en site/language/es-ES/es-ES.com_helloworld.ini .  Este archivo contendrá la traducción para la parte pública. Por el momento, este archivo estará vacío.

Gestión del idioma en el manejo del componente

Con el gestor de archivo y editor favorito, coloque el archivo admin/language/es-ES/es-ES.com_helloworld.ini . Este archivo contendrá la traducción de la administración.

COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="El mensaje de bienvenida que se visualizará"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Mensaje"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Bienvenida"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"

Gestión del idioma en el manejo de los menús en la administración

Con el gestor de archivos y editor favorito, coloque el archivo admin/language/es-ES/es-ES.com_helloworld.sys.ini . Este archivo contendrá la traducción de la administración.

COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="Esta es la descripción del componente  Hello World"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Hello World"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="Esta vista muestra un mensaje seleccionado"
COM_HELLOWORLD_MENU="Hello World!"

Opciones de ubicación para los archivos de los diferentes idiomas

A partir de la versión 1.7 hay dos formas de instalar los archivos de idiomas para una extensión. Se puede utilizar uno u otro o una combinación de ambos.

En la versión 1.5 los archivos se instalan en la carpeta language del núcleo de Joomla! (RAÍZ/administrator/language/ y RAÍZ/language/). Desde la versión 1.6 existe una nueva vía que incluye los archivos de idiomas en la carpeta language de la raíz de la extensión.

Por lo tanto, una extensión puede incluir una carpeta language  con un .sys.ini diferente a la instalada en la carpeta language del núcleo de Joomla! (este último no está incluido en la carpeta language del núcleo de Joomla!, ya que en la característica multi-idioma de Joomla! podemos tener idiomas a la espera de que sean instalados). Entonces, con esto tenemos dos formas diferentes de mostrar las descripciones: una el .sys.ini en la carpeta language, que se utiliza para los mensajes que van ha ser mostrados cuando la instalación se haya completado, y otra (desde el .ini) se utiliza para el funcionamiento “normal” del componente, es decir, cuando la extensión es usada en la administración.

Esto puede ser extremadamente útil en la instalación ya que puede existir la necesidad de que las descripciones requieran valores diferentes.

Nota:  El archivo .sys.ini también se utiliza para traducir el nombre de las extensiones en algunos gestores en la administración, y para proporcionar a los componentes una traducción al menú.

Por lo tanto, el archivo helloworld.xml incluiría desde la versión 1.6:


 

<files>
[...]
/*
   * Esta carpeta debe incluir las subcarpetas adecuadas, es decir, language/es-ES/ ... language/fr-FR
*/
<folder>language</folder>
<filename>cualquier cosa</filename>
[...]
</files>

Y desde la versión 1.5 (o puede ser que no se incluya):

[...]
<languages folder="carpetaidiomanucleojoomla"> // si se usa otra carpeta de idioma (puede colocar cualquier nombre que se ajuste)
<language tag="es-ES">es-ES/es-ES.cualquiercosa.ini</language> // o
<language tag="es-ES">es-ES.cualquiercosa.ini</language> // si no existe una subcarpeta
<language tag="es-ES">es-ES/en-ES.cualquiercosa.sys.ini</language> // o
<language tag="es-ES">es-ES.cualquiercosa.sys.ini</language> si no existe una subcarpeta
</languages>
[...]

 O simplemente en la raíz:


 

<languages>
<language tag="es-ES">es-ES.cualquiercosa.ini</language>
<language tag="es-ES">es-ES.cualquiercosa.sys.ini</language>
</languages>

Al instalar o actualizar la extensión, el archivo .sys.ini presente en la carpeta language en la raíz de la extensión, mostrará el resultado de la instalación a partir del valor asociado a la descripción del mismo.

A partir de entonces, si está presente, el .sys.ini así como el .ini instalado en la carpeta language del núcleo de Joomla!, tendrá prioridad sobre los archivos presentes en la carpeta language en la raíz de la extensión.

Nota: Una de las ventajas de la instalación de los archivos en la carpeta language en la raíz de la extensión, es que estos no se tocan cuando se actualiza un paquete de idioma.  La otra ventaja es que esta carpeta puede incluir varios idiomas (en-GB, fr-FR, es-ES, etc) que no requieren que el usuario instale el paquete de idioma correspondiente.  Esto es útil ya que están disponibles si, más adelante, un usuario instala el paquete correspondiente.

Añadir traducción al instalar el componente

Vea: Opciones de ubicación para los archivos de los diferentes idiomas

Con tu gestor de archivos y editor favorito, crea un archivo en RaízExtensión/language/es-ES/es-ES.miextension.sys.ini . Este archivo contendrá la traducción para la instalación.

COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="Esta es la descripción del componente Hello World"

El COM_HELLOWORLD_DESCRIPTION se puede utilizar en el archivo helloworld.xml.

Entonces, debido a las modificaciones antes expuestas, nuestro archivo helloworld.xml se actualiza de la siguiente forma:


 

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">

<name>COM_HELLOWORLD</name>
<creationDate>Octubre 2012</creationDate>
<author>Carlos R & Andoitz B</author>
<authorEmail>email</authorEmail>
<authorUrl>http://www.ejemplo.org</authorUrl>
<copyright>Copyright Info</copyright>
<license>Licensia Info</license>
<version>0.0.8</version>
<description>COM_HELLOWORLD_DESCRIPTION</description>

<install>
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>

<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update>
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>

<files folder="site">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
<folder>language</folder> // Carpeta para los idiomas en la interfaz de usuario
</files>

<administration>

<menu>COM_HELLOWORLD_MENU</menu>

<files folder="admin">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>sql</folder>
<folder>tables</folder>
<folder>models</folder>
<folder>views</folder>
</files>

/*
* Carpetas y archivos para el idioma en la administración
*/
<languages folder="admin">
<language tag="es-ES">language/es-ES/es-ES.com_helloworld.ini</language>
<language tag="es-ES">language/es-ES/es-ES.com_helloworld.sys.ini</language>
</languages>
</administration>

</extension>

 En este archivo helloworld.xml, los idiomas están instalados en:

  • administrator/language para la parte de administración (ver la etiqueta de idiomas xml)
  • components/com_helloworld/language para la parte de la interfaz de usuario (No existe ninguna etiqueta de idiomas xml,  pero la carpeta del idioma está incluida)

Ahora para probar lo modificado ya sabes que hacer.

9- Añadir acciones a la administración

Añadir una barra de herramientas

En Joomla!, el administrador normalmente interactúa con los componentes a través de la barra de herramientas. Añade este contenido en el archivo admin/views/helloworlds/view.html.php. Esto creará una barra de herramientas básica y un título para el componente:


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted access');

// Importar librería de vistas de Joomla
jimport('joomla.application.component.view');

/**
* Vistas HelloWorlds
*/
class HelloWorldViewHelloWorlds extends JView
{
/**
* método de presentación de la vista HelloWorlds
* @return void
*/
function display($tpl = null)
{
// Obtener datos del modelo
$items = $this->get('Items');
$pagination = $this->get('Pagination');

// Comprobación de errores
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Asignar datos a la vista
$this->items = $items;
$this->pagination = $pagination;

// Establecer la barra de herramientas
$this->addToolBar();

// Mostrar la plantilla
parent::display($tpl);
}

/**
* Configurar la barra de herramientas
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'));
JToolBarHelper::deleteList('', 'helloworlds.delete');
JToolBarHelper::editList('helloworld.edit');
JToolBarHelper::addNew('helloworld.add');
}
}

 Puedes encontrar otras acciones básicas de Administración en el archivo administrator/includes/toolbar.php de tu instalación de Joomla!.

Ya que la vista puede realizar algunas acciones, tenemos que añadir algunos datos de entrada. Con tu gestor y editor de archivos favorito, añade lo siguiente en el archivo admin/views/helloworlds/tmpl/default.php :


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted Access');
// cargar tooltip
JHtml::_('behavior.tooltip');
?>
<form action="<?php echo JRoute::_('index.php?option=com_helloworld'); ?>" method="post" name="adminForm" id="adminForm">
<table class="adminlist">
<thead><?php echo $this->loadTemplate('head');?></thead>
<tfoot><?php echo $this->loadTemplate('foot');?></tfoot>
<tbody><?php echo $this->loadTemplate('body');?></tbody>
</table>
<div>
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>

 

Añadir controladores específicos

Hay que incluir tres acciones:

  • helloworlds.delete
  • helloworld.edit
  • helloworld.add

Aquí puedes leer más sobre subcontroladores (en Inglés).

Estas son tareas compuestas (controller.task), así que hay que codificar dos nuevos controladores: HelloWorldControllerHelloWorlds y HelloWorldControllerHelloWorld .

admin/controllers/helloworlds.php 


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted access');

// importar librería de controladores de Joomla!
jimport('joomla.application.component.controlleradmin');

/**
*Controlador HelloWorlds
*/
class HelloWorldControllerHelloWorlds extends JControllerAdmin
{
/**
* Proxy para getModel.
* @desde 2.5
*/
public function getModel($name = 'HelloWorld', $prefix = 'HelloWorldModel')
{
$model = parent::getModel($name, $prefix, array('ignore_request' => true));
return $model;
}
}

 admin/controllers/helloworld.php 


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted access');

// Importar librería de controladores de formulario de Joomla
jimport('joomla.application.component.controllerform');

/**
*Controlador HelloWorld
*/
class HelloWorldControllerHelloWorld extends JControllerForm
{
}

 

Añadir y editar la vista

Esta vista mostrará datos utilizando un diseño.
Crea el archivo admin/views/helloworld/tmpl/edit.php que contenga:


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
?>
<form action="<?php echo JRoute::_('index.php?option=com_helloworld&layout=edit&id='.(int) $this->item->id); ?>"
method="post" name="adminForm" id="helloworld-form">
<fieldset class="adminform">
<legend><?php echo JText::_( 'COM_HELLOWORLD_HELLOWORLD_DETAILS' ); ?></legend>
<ul class="adminformlist">
<?php foreach($this->form->getFieldset() as $field): ?>
<li><?php echo $field->label;echo $field->input;?></li>
<?php endforeach; ?>
</ul>
</fieldset>
<div>
<input type="hidden" name="task" value="helloworld.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>

 

Añadir un modelo y modificar el existente

La vista HelloWorldViewHelloWorld pide el formulario y los datos a través de un modelo. Este modelo tiene que proporcionar un método getTable, un método getForm y un método loadData (llamados desde el controlador JModelAdmin)

admin/models/helloworld.php


 

<?php
// No permitir acceso directo al archivo
defined('_JEXEC') or die('Restricted access');

// importar librería modelform de Joomla
jimport('joomla.application.component.modeladmin');

/**
*Modelo HelloWorld
*/
class HelloWorldModelHelloWorld extends JModelAdmin
{
/**
* Devuelve una referencia al objeto Table, siempre creándolo.
*
* @param type Tipo de tabla a instanciar
* @paramstring Prefijo para el nombre de clase de tabla. Opcional.
* @paramarray Array de configuración para el modelo. Opcional.
* @return JTable Objeto de base de datos
* @since 2.5
*/
public function getTable($type = 'HelloWorld', $prefix = 'HelloWorldTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Método para conseguir el formulario.
*
* @paramarray $data Datos para el formulario.
* @paramboolean $loadData Verdadero si el formulario va a cargar sus propios datos (por defecto), falso si no.
* @return mixed Un objeto JForm object si funciona, false si falla
* @since 2.5
*/
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_helloworld.helloworld', 'helloworld',
array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{
return false;
}
return $form;
}
/**
* Método para obtener datos que deberían ser inyectados al formulario.
*
* @return mixed Datos para el formulario.
* @since 2.5
*/
protected function loadFormData()
{
// Comprueba la sesión para comprobar datos introducidos previamente.
$data = JFactory::getApplication()->getUserState('com_helloworld.edit.helloworld.data', array());
if (empty($data))
{
$data = $this->getItem();
}
return $data;
}
}

Este modelo hereda de la clase JModelAdmin y utiliza el método loadForm. Busca formularios en la carpeta forms. Con tu gestor y editor de archivos favorito, crea un archivo admin/models/forms/helloworld.xml que contenga:


 

<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field
name="id"
type="hidden"
/>
<field
name="greeting"
type="text"
label="COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL"
description="COM_HELLOWORLD_HELLOWORLD_GREETING_DESC"
size="40"
class="inputbox"
default=""
/>
</fieldset>
</form>

 Modificando el archivo helloworld.xml quedaría:


 

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">

<name>Hello World!</name>
<creationDate>Octubre 2012</creationDate>
<author>Carlos R & Andoitz B</author>
<authorEmail>email</authorEmail>
<authorUrl>http://www.ejemplo.org</authorUrl>
<copyright>Copyright Info</copyright>
<license>Licencia info</license>
<version>0.0.9</version>
<description>COM_HELLOWORLD_DESCRIPTION</description>

<install> <!-- Se ejecuta al instalar -->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall> <!-- Se ejecuta al desinstalar -->
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update> <!-- Se ejecuta al actualizar; Nuevo en 2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>

<files folder="site">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
<folder>language</folder>
</files>

<administration>

<menu>COM_HELLOWORLD_MENU</menu>
<files folder="admin">
<!-- Sección principal de Copia de Archivos de Administración -->
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>

<!-- Sección de archivos SQL -->
<folder>sql</folder>

<!-- Sección de archivos de tablas -->
<folder>tables</folder>

<!-- Sección de archivos de modelos -->
<folder>models</folder>

<!-- Sección de archivos de vistas -->
<folder>views</folder>

<!-- Sección de archivos de controladores -->
<folder>controllers</folder>
</files>

<languages folder="admin">
<language tag="es-ES">language/es-ES/es-ES.com_helloworld.ini</language>
<language tag="es-ES">language/es-ES/es-ES.com_helloworld.sys.ini</language>
</languages>
</administration>

</extension>

Ahora crea un archivo comprimido de este directorio o descarga directamente el archivo (modificando el código en /admin/models/helloworld.php por el expuesto aquí) e instálalo utilizando el gestor de extensiones de Joomla.

Desarrollo de componentes en Joomla 2.5 (3 de 8) | Desarrollo de componentes en Joomla 2.5 (5 de 8)

 



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Formulario de acceso

Filtro por Categorías