SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Taller: Desarrollo de extensiones en Joomla! 1.6




Jordi Vila Gallardo jordi.vila@dunlock.com
www.arambee.com · www.dunlock.com · www.criteria.cat · www.webactualizable.com
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.




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Í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
Í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
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
Nuevo diseño

                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Categorías anidadas

                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
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
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
Niveles / Tipos de acciones




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




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




                                Nuevos botones
                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Artículos destacados

                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Introducción: Listado de saludos

                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Introducción: Permisos del componente
                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Introducción: Listado de categorías
                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Introducción: Edición de un saludo
                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Introducción: Permisos de un elemento


                                         Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Estructura de directorios: Diferencias




         Joomla! 1.5                                Joomla! 1.6




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La librería Jform: Ejemplo
                                     Joomla! 1.6

            <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La librería Jform: Otros tipos
                                          Joomla! 1.6

    <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La librería JForm: Mostrar atributos a la vista

                       <?php
                          foreach($this->form->getFieldset('data') as $field):
                          if (!$field->hidden):
                                echo $field->label;
                          endif;
        Joomla! 1.6       if ($field->type=="Editor"): ?>
                                     <div class="clr"></div><?
                          endif;
                                echo $field->input;
                          endforeach;
                       ?>


                       <?php
        Joomla! 1.6       echo $this->form->getLabel('rules');
                          echo $this->form->getInput('rules');
                       ?>




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase controlador: Herencia

                           // No direct access
                           defined('_JEXEC') or die;

             Joomla! 1.5   jimport('joomla.application.component.controller');

                           class HellosControllerHello extends JController {
                           …
                           }


                           // No direct access
                           defined('_JEXEC') or die;

                           jimport('joomla.application.component.controllerform');
             Joomla! 1.6
                           class HellosControllerHello extends JControllerForm {
                               …
                           }



Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase controlador: Funciones
                   Joomla! 1.5                                   Joomla! 1.6

  class HellosControllerHello extends          class HellosControllerHello extends
  JController {                                JControllerForm {
  …                                            …
      function edit() {                            function allowAdd($data = array() ) {
      …                                            /* Si hay categorías */
      }                                            …
                                                   }
      function save() {
      …                                             function allowEdit($data = array() ) {
      }                                             /* Si hay categorías */
                                                    …
      function remove() {                           }
      …
      }                                            /*
                                                   El resto de las clases ja están
      function cancel() {                          implementadas en la clase
      …                                            JControllerForm
      }                                            */
  }                                            }

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Las clases modelo: Herencia

                            // No direct access
                            defined('_JEXEC') or die;

             Joomla! 1.5    jimport('joomla.application.component.model');

                            class HellosModelHello extends JModel {
                            …
                            }


                            // No direct access
                            defined('_JEXEC') or die;

                            jimport('joomla.application.component.modeladmin');
             Joomla! 1.6
                            class HellosModelHello extends JModelAdmin {
                                …
                            }



Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase modelo: Funciones
                   Joomla! 1.5                                  Joomla! 1.6

  class HelloModelHello extends JModel {       class HellosModelHello extends
      …                                        JModelAdmin {
      function setId($id) {                        …
      …                                            function getForm($data=array(),
      }                                             $loadData=true) { … }

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

Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase modelo: Obtener formulario

                                              Joomla! 1.6

    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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase modelo: Lectura de datos
                                             Joomla! 1.6

    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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase modelo: Obtener listado

                     Joomla! 1.5                                Joomla! 1.6

  class HelloModelHellos extends JModel {      class HellosModelHellos extends JModelList
      …                                        {
      function _buildQuery() {                     …
      …                                            function getListQuery() {
      }                                            …
                                                   }
      function getData() {
      …                                        }
      }
      …
  }




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
La clase model: Función para obtener el listado

                           function getData(){
                               // Lets load the data if it doesn't already exist
                               if (empty( $this->_data )) {
             Joomla! 1.5            $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);
             Joomla! 1.6       // Select the required fields from the table.
                               $query->select(a.id, ...);
                               $query->from('`#__hellos` AS a');
                               $query->where('a.state = 1');
                           }


Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Gestión de permisos: Implementación
                                            Joomla! 1.6

    /* 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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Gestión de validaciones: Ejemplo
                                         Joomla! 1.6

      <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Gestión de layouts: Ejemplo
                                                 Joomla! 1.6

      <?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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
Directorio “felds”: Añadir nuevo

                               * Ver ejemplo de ordering




Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
¿ Preguntas, dudas ?
                     Gracias por vuestra asistencia

                          Taller: Desarrollo de extensiones en Joomla! 1.6




Jordi Vila Gallardo jordi.vila@dunlock.com
www.arambee.com · www.dunlock.com · www.criteria.cat · www.webactualizable.com

Mais conteúdo relacionado

Semelhante a Presentación joomla-day-2010 Jordi Vila

Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...Knowmades.com
 
Joomla! Presentación 2009
Joomla! Presentación 2009Joomla! Presentación 2009
Joomla! Presentación 2009guest3ef4f6
 
Joomla Presentación 2009
Joomla Presentación 2009Joomla Presentación 2009
Joomla Presentación 2009guest3ef4f6
 
Cursojoomlabsico 111125234318-phpapp01
Cursojoomlabsico 111125234318-phpapp01Cursojoomlabsico 111125234318-phpapp01
Cursojoomlabsico 111125234318-phpapp01Ricardo Franco Santos
 
Presentación Joomla en encuentrocms.com
Presentación Joomla en encuentrocms.comPresentación Joomla en encuentrocms.com
Presentación Joomla en encuentrocms.comOpenWeb Software
 
Presentacion del Curso de Joomla
Presentacion del Curso de JoomlaPresentacion del Curso de Joomla
Presentacion del Curso de JoomlaWinfo System Perú
 
Manual pagina web
Manual pagina webManual pagina web
Manual pagina webruby1913
 
Presentacion joomla
Presentacion joomlaPresentacion joomla
Presentacion joomlacampus party
 
Qué es joomla15
Qué es joomla15Qué es joomla15
Qué es joomla15dragondw
 
Cuestionario de joomlas
Cuestionario de joomlasCuestionario de joomlas
Cuestionario de joomlasmatias1025
 
Joomla! Presentación 2009 : Introducción
Joomla! Presentación 2009 : IntroducciónJoomla! Presentación 2009 : Introducción
Joomla! Presentación 2009 : Introducciónguest3ef4f6
 
Joomla 1.6
Joomla 1.6Joomla 1.6
Joomla 1.6iibanez
 

Semelhante a Presentación joomla-day-2010 Jordi Vila (20)

Trabajando con Joomla
Trabajando con JoomlaTrabajando con Joomla
Trabajando con Joomla
 
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...Presentación del proyecto Joomla!  en el congreso Hispalinux - Cáceres - 14-1...
Presentación del proyecto Joomla! en el congreso Hispalinux - Cáceres - 14-1...
 
Joomla! Presentación 2009
Joomla! Presentación 2009Joomla! Presentación 2009
Joomla! Presentación 2009
 
Joomla Presentación 2009
Joomla Presentación 2009Joomla Presentación 2009
Joomla Presentación 2009
 
Cursojoomlabsico 111125234318-phpapp01
Cursojoomlabsico 111125234318-phpapp01Cursojoomlabsico 111125234318-phpapp01
Cursojoomlabsico 111125234318-phpapp01
 
A.3 bolaños.coronel.henry.g2.ppt
A.3 bolaños.coronel.henry.g2.pptA.3 bolaños.coronel.henry.g2.ppt
A.3 bolaños.coronel.henry.g2.ppt
 
Cms joobla
Cms jooblaCms joobla
Cms joobla
 
Presentación Joomla en encuentrocms.com
Presentación Joomla en encuentrocms.comPresentación Joomla en encuentrocms.com
Presentación Joomla en encuentrocms.com
 
Presentacion del Curso de Joomla
Presentacion del Curso de JoomlaPresentacion del Curso de Joomla
Presentacion del Curso de Joomla
 
Joomla Basico
Joomla BasicoJoomla Basico
Joomla Basico
 
Manual pagina web
Manual pagina webManual pagina web
Manual pagina web
 
Presentacion joomla
Presentacion joomlaPresentacion joomla
Presentacion joomla
 
01 Joomla. Por Que Joomla
01 Joomla. Por Que Joomla01 Joomla. Por Que Joomla
01 Joomla. Por Que Joomla
 
Presentacion joomla-publicador
Presentacion joomla-publicadorPresentacion joomla-publicador
Presentacion joomla-publicador
 
Qué es joomla15
Qué es joomla15Qué es joomla15
Qué es joomla15
 
Cuestionario joomlas
Cuestionario joomlasCuestionario joomlas
Cuestionario joomlas
 
Cuestionario de joomlas
Cuestionario de joomlasCuestionario de joomlas
Cuestionario de joomlas
 
Joomla! Presentación 2009 : Introducción
Joomla! Presentación 2009 : IntroducciónJoomla! Presentación 2009 : Introducción
Joomla! Presentación 2009 : Introducción
 
Joomla 1.6
Joomla 1.6Joomla 1.6
Joomla 1.6
 
04 Joomla. Usuarios
04 Joomla. Usuarios04 Joomla. Usuarios
04 Joomla. Usuarios
 

Mais de Jordi Catà

Introducción a la Financiación alternativa
Introducción a la Financiación alternativaIntroducción a la Financiación alternativa
Introducción a la Financiación alternativaJordi Catà
 
Finançament alternatiu per a empreses, Introducció
Finançament alternatiu per a empreses, IntroduccióFinançament alternatiu per a empreses, Introducció
Finançament alternatiu per a empreses, IntroduccióJordi Catà
 
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendible
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendibleEstrategias/consejos para mejorar tu eCommerce y hacerlo más rendible
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendibleJordi Catà
 
Mobile Commerce Business Networking Event JCI Girona 2013
Mobile Commerce Business Networking Event JCI Girona 2013Mobile Commerce Business Networking Event JCI Girona 2013
Mobile Commerce Business Networking Event JCI Girona 2013Jordi Catà
 
Jove Cambra Internacional de Girona Resum president 2009
Jove Cambra Internacional de Girona Resum president 2009 Jove Cambra Internacional de Girona Resum president 2009
Jove Cambra Internacional de Girona Resum president 2009 Jordi Catà
 
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundra
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundraJoomla!day2013 Albacete Spain, Responsive, Adaptive y la tundra
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundraJordi Catà
 
Models de negoci amb Programari Lliure : Joomla
Models de negoci amb Programari Lliure : JoomlaModels de negoci amb Programari Lliure : Joomla
Models de negoci amb Programari Lliure : JoomlaJordi Catà
 
Eshow2012 Madrid, Joomla y Ecommerce
Eshow2012 Madrid, Joomla y EcommerceEshow2012 Madrid, Joomla y Ecommerce
Eshow2012 Madrid, Joomla y EcommerceJordi Catà
 
Joomla!day2012 Merida
Joomla!day2012 MeridaJoomla!day2012 Merida
Joomla!day2012 MeridaJordi Catà
 
Introducció a Scrum
Introducció a ScrumIntroducció a Scrum
Introducció a ScrumJordi Catà
 
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011Conferencia Joomla y Comercio Electrónico: Ecommretail 2011
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011Jordi Catà
 
Joomla!day2010 Valencia - Joomla! casos de exito
Joomla!day2010 Valencia - Joomla! casos de exitoJoomla!day2010 Valencia - Joomla! casos de exito
Joomla!day2010 Valencia - Joomla! casos de exitoJordi Catà
 
Presentación Joomla y comerció electrónico, casos de èxito
Presentación Joomla y comerció electrónico, casos de èxitoPresentación Joomla y comerció electrónico, casos de èxito
Presentación Joomla y comerció electrónico, casos de èxitoJordi Catà
 
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectos
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectosJoomla!Day Spain Barcelona, Joomla! para todo tipo de proyectos
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectosJordi Catà
 
Presentacion Joomla Phpconference Barcelona 2009
Presentacion Joomla Phpconference Barcelona 2009Presentacion Joomla Phpconference Barcelona 2009
Presentacion Joomla Phpconference Barcelona 2009Jordi Catà
 
Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Jordi Catà
 
Flyer Netcoffee Imatge
Flyer Netcoffee ImatgeFlyer Netcoffee Imatge
Flyer Netcoffee ImatgeJordi Catà
 
Presentacio Productivitat Tic
Presentacio Productivitat TicPresentacio Productivitat Tic
Presentacio Productivitat TicJordi Catà
 
Framework Llibreries Lliures
Framework Llibreries LliuresFramework Llibreries Lliures
Framework Llibreries LliuresJordi Catà
 

Mais de Jordi Catà (20)

Introducción a la Financiación alternativa
Introducción a la Financiación alternativaIntroducción a la Financiación alternativa
Introducción a la Financiación alternativa
 
Finançament alternatiu per a empreses, Introducció
Finançament alternatiu per a empreses, IntroduccióFinançament alternatiu per a empreses, Introducció
Finançament alternatiu per a empreses, Introducció
 
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendible
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendibleEstrategias/consejos para mejorar tu eCommerce y hacerlo más rendible
Estrategias/consejos para mejorar tu eCommerce y hacerlo más rendible
 
Mobile Commerce Business Networking Event JCI Girona 2013
Mobile Commerce Business Networking Event JCI Girona 2013Mobile Commerce Business Networking Event JCI Girona 2013
Mobile Commerce Business Networking Event JCI Girona 2013
 
Jove Cambra Internacional de Girona Resum president 2009
Jove Cambra Internacional de Girona Resum president 2009 Jove Cambra Internacional de Girona Resum president 2009
Jove Cambra Internacional de Girona Resum president 2009
 
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundra
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundraJoomla!day2013 Albacete Spain, Responsive, Adaptive y la tundra
Joomla!day2013 Albacete Spain, Responsive, Adaptive y la tundra
 
Models de negoci amb Programari Lliure : Joomla
Models de negoci amb Programari Lliure : JoomlaModels de negoci amb Programari Lliure : Joomla
Models de negoci amb Programari Lliure : Joomla
 
Eshow2012 Madrid, Joomla y Ecommerce
Eshow2012 Madrid, Joomla y EcommerceEshow2012 Madrid, Joomla y Ecommerce
Eshow2012 Madrid, Joomla y Ecommerce
 
Joomla!day2012 Merida
Joomla!day2012 MeridaJoomla!day2012 Merida
Joomla!day2012 Merida
 
Introducció a Scrum
Introducció a ScrumIntroducció a Scrum
Introducció a Scrum
 
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011Conferencia Joomla y Comercio Electrónico: Ecommretail 2011
Conferencia Joomla y Comercio Electrónico: Ecommretail 2011
 
Joomla!day2010 Valencia - Joomla! casos de exito
Joomla!day2010 Valencia - Joomla! casos de exitoJoomla!day2010 Valencia - Joomla! casos de exito
Joomla!day2010 Valencia - Joomla! casos de exito
 
Presentación Joomla y comerció electrónico, casos de èxito
Presentación Joomla y comerció electrónico, casos de èxitoPresentación Joomla y comerció electrónico, casos de èxito
Presentación Joomla y comerció electrónico, casos de èxito
 
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectos
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectosJoomla!Day Spain Barcelona, Joomla! para todo tipo de proyectos
Joomla!Day Spain Barcelona, Joomla! para todo tipo de proyectos
 
Presentacion Joomla Phpconference Barcelona 2009
Presentacion Joomla Phpconference Barcelona 2009Presentacion Joomla Phpconference Barcelona 2009
Presentacion Joomla Phpconference Barcelona 2009
 
Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009
 
Volcanica2007
Volcanica2007Volcanica2007
Volcanica2007
 
Flyer Netcoffee Imatge
Flyer Netcoffee ImatgeFlyer Netcoffee Imatge
Flyer Netcoffee Imatge
 
Presentacio Productivitat Tic
Presentacio Productivitat TicPresentacio Productivitat Tic
Presentacio Productivitat Tic
 
Framework Llibreries Lliures
Framework Llibreries LliuresFramework Llibreries Lliures
Framework Llibreries Lliures
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (13)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Presentación joomla-day-2010 Jordi Vila

  • 1. Taller: Desarrollo de extensiones en Joomla! 1.6 Jordi Vila Gallardo jordi.vila@dunlock.com www.arambee.com · www.dunlock.com · www.criteria.cat · www.webactualizable.com
  • 2. 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. Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 3. Í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
  • 4. Í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
  • 5. 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
  • 6. Nuevo diseño Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 7. Categorías anidadas Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 8. 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
  • 9. 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
  • 10. Niveles / Tipos de acciones Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 11. Mantenimiento de redirecciones Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 12. Papelera integrada Joomla! 1.6 Nuevos botones Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 13. Artículos destacados Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 14. Introducción: Listado de saludos Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 15. Introducción: Permisos del componente Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 16. Introducción: Listado de categorías Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 17. Introducción: Edición de un saludo Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 18. Introducción: Permisos de un elemento Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 19. Estructura de directorios: Diferencias Joomla! 1.5 Joomla! 1.6 Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 20. La librería Jform: Ejemplo Joomla! 1.6 <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 21. La librería Jform: Otros tipos Joomla! 1.6 <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 22. La librería JForm: Mostrar atributos a la vista <?php foreach($this->form->getFieldset('data') as $field): if (!$field->hidden): echo $field->label; endif; Joomla! 1.6 if ($field->type=="Editor"): ?> <div class="clr"></div><? endif; echo $field->input; endforeach; ?> <?php Joomla! 1.6 echo $this->form->getLabel('rules'); echo $this->form->getInput('rules'); ?> Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 23. La clase controlador: Herencia // No direct access defined('_JEXEC') or die; Joomla! 1.5 jimport('joomla.application.component.controller'); class HellosControllerHello extends JController { … } // No direct access defined('_JEXEC') or die; jimport('joomla.application.component.controllerform'); Joomla! 1.6 class HellosControllerHello extends JControllerForm { … } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 24. La clase controlador: Funciones Joomla! 1.5 Joomla! 1.6 class HellosControllerHello extends class HellosControllerHello extends JController { JControllerForm { … … function edit() { function allowAdd($data = array() ) { … /* Si hay categorías */ } … } function save() { … function allowEdit($data = array() ) { } /* Si hay categorías */ … function remove() { } … } /* El resto de las clases ja están function cancel() { implementadas en la clase … JControllerForm } */ } } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 25. Las clases modelo: Herencia // No direct access defined('_JEXEC') or die; Joomla! 1.5 jimport('joomla.application.component.model'); class HellosModelHello extends JModel { … } // No direct access defined('_JEXEC') or die; jimport('joomla.application.component.modeladmin'); Joomla! 1.6 class HellosModelHello extends JModelAdmin { … } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 26. La clase modelo: Funciones Joomla! 1.5 Joomla! 1.6 class HelloModelHello extends JModel { class HellosModelHello extends … JModelAdmin { function setId($id) { … … function getForm($data=array(), } $loadData=true) { … } function getData() { function loadFormData() { … /* Implementado en JmodelAdmin */ } … } function store() { function getItem($pk = null) { … /* Implementado en JModelAdmin */ } … } function delete() { function prepareTable(& $table) { … /* Implementación en JModelAdmin */ } /* Ej: Insertar el ordering */ } … } } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 27. La clase modelo: Obtener formulario Joomla! 1.6 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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 28. La clase modelo: Lectura de datos Joomla! 1.6 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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 29. La clase modelo: Obtener listado Joomla! 1.5 Joomla! 1.6 class HelloModelHellos extends JModel { class HellosModelHellos extends JModelList … { function _buildQuery() { … … function getListQuery() { } … } function getData() { … } } … } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 30. La clase model: Función para obtener el listado function getData(){ // Lets load the data if it doesn't already exist if (empty( $this->_data )) { Joomla! 1.5 $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); Joomla! 1.6 // Select the required fields from the table. $query->select(a.id, ...); $query->from('`#__hellos` AS a'); $query->where('a.state = 1'); } Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 31. Gestión de permisos: Implementación Joomla! 1.6 /* 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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 32. Gestión de validaciones: Ejemplo Joomla! 1.6 <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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 33. Gestión de layouts: Ejemplo Joomla! 1.6 <?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!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 34. Directorio “felds”: Añadir nuevo * Ver ejemplo de ordering Joomla!Day Valencia 2010 – Desarrollo de extensiones en Joomla! 1.6
  • 35. ¿ Preguntas, dudas ? Gracias por vuestra asistencia Taller: Desarrollo de extensiones en Joomla! 1.6 Jordi Vila Gallardo jordi.vila@dunlock.com www.arambee.com · www.dunlock.com · www.criteria.cat · www.webactualizable.com