35
Taller: Desarrollo de extensiones en Joomla! 1.6 Jordi Vila Gallardo [email protected] www.arambee.com · www.dunlock.com · www.criteria.cat · www.webactualizable.com

Presentación joomla-day-2010 Jordi Vila

Embed Size (px)

DESCRIPTION

Conferencia de desarrollo en la nueva version 1.6 de Joomla por Jordi Vila, Joomla!Day Valencia, Joomla Spain

Citation preview

Page 1: Presentación joomla-day-2010 Jordi Vila

Taller: Desarrollo de extensiones en Joomla! 1.6

Jordi Vila Gallardo [email protected] · www.dunlock.com · www.criteria.cat · www.webactualizable.com

Page 2: Presentación joomla-day-2010 Jordi Vila

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Sobre mi

Jordi Vila Ingeniero Técnico en Informática, especializado en Ingeniería web

D-Unlock Ingeniería Web

Consultoría Web, Ingeniería Web, Comunicación Digital, Consultoría Joomla, Arquitectura Web

•Participo en varias asociaciones:– JCI Girona (Asociación de jovenes emprendedores)

Empecé con Joomla 1.5.

Page 3: Presentación joomla-day-2010 Jordi Vila

Índice: Parte 1

PART 1

● Requerimientos básicos

● Nuevo diseño

● Categorías anidadas

● Control de permisos (ACL)

● Mantenimieto de redirecciones

● Papelera Integrada

● Nuevos botones

● Artículo destacados

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 4: Presentación joomla-day-2010 Jordi Vila

Índice: Parte 2

PART 2

● Introducción al componente de saludos

● Estructura de directorios

● La clase controlador

● La clase modelo

● Gestión de permisos

● Gestión de validaciones

● Gestión de layouts

● Añadir nuevos “felds”

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 5: Presentación joomla-day-2010 Jordi Vila

Requerimientos básicos

Joomla! 1.6

● PHP 5.2+

● MySQL 5.0.4+

Joomla! 1.5

● PHP 5.2+

● MySQL 4.1.x +

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 6: Presentación joomla-day-2010 Jordi Vila

Nuevo diseño

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 7: Presentación joomla-day-2010 Jordi Vila

Categorías anidadas

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 8: Presentación joomla-day-2010 Jordi Vila

Control de permisos

● En Joomla! 1.6 un usuario puede formar parte de múltiples grupos, que por lo contrario, en Joomla! 1.5 un usuario podía ser asignado a un único grupo.

● En Joomla! 1.6 es posible crear todos los niveles de acceso que se quiera para una buena gestión de la web, que por el contrario en Joomla! 1.5 se limitavan en los niveles (público, registrado y especial).

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 9: Presentación joomla-day-2010 Jordi Vila

Tipos de atorgamiento● No determinado: el permiso asume el valor “negativo” o el

valor del elemento padre y no quedan afectados los elementos hijos, es decir, podrán ser modifcados los permisos sin heredar los permisos del padre.

● Heredado: El elemento hijo hereda los permisos de los elementos padre.

● Denegar: Se niega permisos. A diferencia de la primera opción esta involucrara a los elementos hijo, es decir, en caso que se otorgue permisos a niveles de jerarquía inferior esto no tendrá ningún efecto y se mantendrá el permiso del elemento padre.

● Permitir: Habilita el permiso al elemento o acción. Al igual que en el caso anterior, hereda el permiso a los niveles inferiores.

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 10: Presentación joomla-day-2010 Jordi Vila

Niveles / Tipos de acciones

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 11: Presentación joomla-day-2010 Jordi Vila

Mantenimiento de redirecciones

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 12: Presentación joomla-day-2010 Jordi Vila

Papelera integrada

Nuevos botones

Joomla! 1.6

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 13: Presentación joomla-day-2010 Jordi Vila

Artículos destacados

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 14: Presentación joomla-day-2010 Jordi Vila

Introducción: Listado de saludos

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 15: Presentación joomla-day-2010 Jordi Vila

Introducción: Permisos del componenteJoomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 16: Presentación joomla-day-2010 Jordi Vila

Introducción: Listado de categorías

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 17: Presentación joomla-day-2010 Jordi Vila

Introducción: Edición de un saludo

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 18: Presentación joomla-day-2010 Jordi Vila

Introducción: Permisos de un elemento

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 19: Presentación joomla-day-2010 Jordi Vila

Estructura de directorios: Diferencias

Joomla! 1.5 Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 20: Presentación joomla-day-2010 Jordi Vila

La librería Jform: Ejemplo

<form> ... <fieldset name="data" label="COM_HELLOS_FIELDSET_DATA"> <field name="title" type="text" class="inputbox" size="40" label="JGLOBAL_TITLE" description="COM_HELLOS_FIELD_TITLE_DESC" required="true" /> <field name="alias" type="text" class="inputbox" size="40" label="JFIELD_ALIAS_LABEL" description="COM_HELLOS_FIELD_ALIAS_DESC" /> ... </fieldset></form>

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 21: Presentación joomla-day-2010 Jordi Vila

La librería Jform: Otros tipos

<form> <fieldset name="data" label="COM_HELLOS_FIELDSET_DATA"> <field name="ordering" type="Ordering" ... />

<field name="access" type="accesslevel" ... /> <field name="language" type="contentlanguage" ... <option value="*">JALL</option> </field>

<field name="rules" type="rules" filter="rules" component="com_hellos" section="hello"/> </fieldset></form>

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 22: Presentación joomla-day-2010 Jordi Vila

La librería JForm: Mostrar atributos a la vista

<?phpforeach($this->form->getFieldset('data') as $field):

if (!$field->hidden): echo $field->label; endif; if ($field->type=="Editor"): ?>

<div class="clr"></div><? endif; echo $field->input; endforeach;?>

<?php echo $this->form->getLabel('rules');

echo $this->form->getInput('rules'); ?>

Joomla! 1.6

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 23: Presentación joomla-day-2010 Jordi Vila

La clase controlador: Herencia

// No direct accessdefined('_JEXEC') or die;

jimport('joomla.application.component.controller');

class HellosControllerHello extends JController {…}

// No direct accessdefined('_JEXEC') or die;

jimport('joomla.application.component.controllerform');

class HellosControllerHello extends JControllerForm {…

}

Joomla! 1.6

Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 24: Presentación joomla-day-2010 Jordi Vila

La clase controlador: Funciones

class HellosControllerHello extends JController {…

function edit() {…}

function save() {…}

function remove() {…}

function cancel() {…}

}

class HellosControllerHello extends JControllerForm {…

function allowAdd($data = array() ) {/* Si hay categorías */…}

function allowEdit($data = array() ) {/* Si hay categorías */…}

/*El resto de las clases ja están implementadas en la clase

JControllerForm*/

}

Joomla! 1.6Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 25: Presentación joomla-day-2010 Jordi Vila

Las clases modelo: Herencia

// No direct accessdefined('_JEXEC') or die;

jimport('joomla.application.component.model');

class HellosModelHello extends JModel {…}

// No direct accessdefined('_JEXEC') or die;

jimport('joomla.application.component.modeladmin');

class HellosModelHello extends JModelAdmin {…

}

Joomla! 1.6

Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 26: Presentación joomla-day-2010 Jordi Vila

La clase modelo: Funciones

class HelloModelHello extends JModel { …

function setId($id) {…}

function getData() {…}

function store() {…}

function delete() {…}

}

class HellosModelHello extends JModelAdmin {

…function getForm($data=array(),

$loadData=true) { … }

function loadFormData() { /* Implementado en JmodelAdmin */… }function getItem($pk = null) {/* Implementado en JModelAdmin */ … }function prepareTable(& $table) {/* Implementación en JModelAdmin *//* Ej: Insertar el ordering */… }

}

Joomla! 1.6Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 27: Presentación joomla-day-2010 Jordi Vila

La clase modelo: Obtener formulario

public function getForm($data = array(), $loadData = true) {

// Initialise variables. $app = JFactory::getApplication();

// Get the form. $form = $this->loadForm('com_hellos.hello','hello',array('control'=> 'jform', 'load_data'=>$loadData));

if (empty($form)) { return false; }

... return $form;}

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 28: Presentación joomla-day-2010 Jordi Vila

La clase modelo: Lectura de datos

protected function loadFormData() {

// Check the session for previously entered form data. $data = Jfactory::getApplication() >getUserState('com_hellos.edit.hello.data', array());

if (empty($data)) { $data = $this->getItem(); // Prime some default values. if ($this->getState('hello.id') == 0) { $app = JFactory::getApplication(); $data->set('catid', JRequest::getInt('catid', $app- >getUserState('com_hellos.hellos.filter.category_id'))); } }

... return $data;}

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 29: Presentación joomla-day-2010 Jordi Vila

La clase modelo: Obtener listado

class HelloModelHellos extends JModel { …

function _buildQuery() {…}

function getData() {…}…

}

class HellosModelHellos extends JModelList {

…function getListQuery() { … }

}

Joomla! 1.6Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 30: Presentación joomla-day-2010 Jordi Vila

La clase model: Función para obtener el listado

function getData(){// Lets load the data if it doesn't already existif (empty( $this->_data )) {

$query = $this->_buildQuery();$this->_data = $this->_getList( $query );

}return $this->_data;

}

protected function getListQuery() { // Create a new query object. $db = $this->getDbo(); $query = $db->getQuery(true); // Select the required fields from the table. $query->select(a.id, ...); $query->from('`#__hellos` AS a');

$query->where('a.state = 1');}

Joomla! 1.6

Joomla! 1.5

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 31: Presentación joomla-day-2010 Jordi Vila

Gestión de permisos: Implementación

/* La función está en una clase helper */

public static function getActions($categoryId = 0, $helloId = 0) {... }

/* Modo de empleo en la vista */

$canDo = HellosHelper::getActions($this->state->get('filter.category_id'), $this->item->id);

$canDo->get('core.create')

* Ver los fichero access.xml, hello.xml, config.xml

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 32: Presentación joomla-day-2010 Jordi Vila

Gestión de validaciones: Ejemplo

<form> <fieldset name="data" label="COM_HELLOS_FIELDSET_DATA"> <field name="email_to" class="inputbox validate-email" ... />

<field name="width" class="inputbox validate-numeric" ... /> <field name="title" required="true" ...

/> </fieldset></form>

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 33: Presentación joomla-day-2010 Jordi Vila

Gestión de layouts: Ejemplo

<?php// No direct access.defined('_JEXEC') or die; echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_PUBLISHING'), 'publishing-details');?><fieldset class="panelform"> <ul class="adminformlist"> <?php foreach ($this->form->getFieldset('publishing') as $field) : ?> <li><?php echo $field->label; ?> <?php echo $field->input; ?></li> <?php endforeach; ?> </ul></fieldset>

<?php echo $this->loadTemplate('rules'); ?>

Joomla! 1.6

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 34: Presentación joomla-day-2010 Jordi Vila

Directorio “felds”: Añadir nuevo

* Ver ejemplo de ordering

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6

Page 35: Presentación joomla-day-2010 Jordi Vila

¿ Preguntas, dudas ?Gracias por vuestra asistencia

Taller: Desarrollo de extensiones en Joomla! 1.6

Jordi Vila Gallardo [email protected] · www.dunlock.com · www.criteria.cat · www.webactualizable.com