Desarrollando un componente MVC : Añadiendo un script de instalación-desinstalación-actualización

  1. Desarrollando un componente MVC : Introducción
  2. Desarrollando un componente MVC: Desarrollando un componente básico
  3. Desarrollando un componente MVC: Añadiendo una vista en el frontend
  4. Desarrollando un componente MVC: Añadiendo un tipo de menu al frontend
  5. Desarrollando un componente MVC: Añadiendo un modelo al frontend
  6. Desarrollando un componente MVC : Añadiendo una variable request en el tipo de menu
  7. Desarrollando un componente MVC : Usando la base de datos
  8. Desarrollando un componente MVC : Basic backend
  9. Desarrollando un componente MVC : Añadiendo gestión de idioma
  10. Desarrollando un componente MVC : Añadiendo acciones backend
  11. Desarrollando un componente MVC : Añadiendo adornos al backend
  12. Desarrollando un componente MVC : Añadiendo verificaciones
  13. Desarrollando un componente MVC : Añadiendo categorías
  14. Desarrollando un componente MVC : Añadiendo configuración
  15. Desarrollando un componente MVC : Añadiendo ACL (Access Control Levels)
  16. Desarrollando un componente MVC : Añadiendo un script de instalación-desinstalación-actualización
  17. Desarrollando un componente MVC : Usando la capacidad de filtro
  18. Desarrollando un componente MVC : Añadiendo un servidor de actualización

[extoc]

Creating the extension script file

Installing, updating and uninstalling a component may require additional operations that cannot be achieved by the basic operations described in the main xml file. Joomla offers a new approach to solve this problem. It consists in using a php script file containing a class using five methods:

  • preflight which is executed before install and update
  • install
  • update
  • uninstall
  • postflight which is executed after install and update

Writing an extension script consists in declaring an class whose name is com_ComponentNameInstallerScript with these 5 methods.

script.php

getParent()->setRedirectURL('index.php?option=com_helloworld');
        }
 
        /**
         * method to uninstall the component
         *
         * @return void
         */
        function uninstall($parent) 
        {
                // $parent is the class calling this method
                echo '

' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '

'; } /** * method to update the component * * @return void */ function update($parent) { // $parent is the class calling this method echo '

' . JText::sprintf('COM_HELLOWORLD_UPDATE_TEXT', $parent->get('manifest')->version) . '

'; } /** * method to run before an install/update/uninstall method * * @return void */ function preflight($type, $parent) { // $parent is the class calling this method // $type is the type of change (install, update or discover_install) echo '

' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '

'; } /** * method to run after an install/update/uninstall method * * @return void */ function postflight($type, $parent) { // $parent is the class calling this method // $type is the type of change (install, update or discover_install) echo '

' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '

'; } }

This script file will redirect the user to the com_helloworld component when it is installed and will display messages when it is updated or uninstalled. In the update method we show the new version using $parent->get(‘manifest’)->version.

Adding some language keys

admin/language/en-GB/en-GB.com_helloworld.sys.ini""

COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="This is the Hello World description"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="This view displays a selected message"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Hello World"
COM_HELLOWORLD_INSTALL_TEXT="HelloWorld Install script"
COM_HELLOWORLD_MENU="Hello World!"
COM_HELLOWORLD_POSTFLIGHT_DISCOVER_INSTALL_TEXT="HelloWorld postlight discover install script"
COM_HELLOWORLD_POSTFLIGHT_INSTALL_TEXT="HelloWorld postflight install script"
COM_HELLOWORLD_POSTFLIGHT_UNINSTALL_TEXT="HelloWorld postflight uninstall script"
COM_HELLOWORLD_POSTFLIGHT_UPDATE_TEXT="HelloWorld postflight update script"
COM_HELLOWORLD_PREFLIGHT_DISCOVER_INSTALL_TEXT="HelloWorld preflight discover install script"
COM_HELLOWORLD_PREFLIGHT_INSTALL_TEXT="HelloWorld preflight install script"
COM_HELLOWORLD_PREFLIGHT_UNINSTALL_TEXT="HelloWorld preflight uninstall script"
COM_HELLOWORLD_PREFLIGHT_UPDATE_TEXT="HelloWorld preflight update script"
COM_HELLOWORLD_UNINSTALL_TEXT="HelloWorld Uninstall script"
COM_HELLOWORLD_UPDATE_TEXT="HelloWorld Update script. HelloWorld now updated to version %s."

note: If you want that these languages KEYs to be used at the first install of the component, the sys.ini language file must be stored in the component folder (admin/language/en-GB/en-GB.com_helloworld.sys.ini), and the xml manifest file must contains a folder tag for copying language in the component folder. Modify your Manifest file accordingly:


	
	language



	language/en-GB/en-GB.com_helloworld.ini
    

Packaging the component

Content of your code directory

  • helloworld.xml
  • script.php
  • site/index.html
  • site/helloworld.php
  • site/controller.php
  • site/views/index.html
  • site/views/helloworld/index.html
  • site/views/helloworld/view.html.php
  • site/views/helloworld/tmpl/index.html
  • site/views/helloworld/tmpl/default.xml
  • site/views/helloworld/tmpl/default.php
  • site/models/index.html
  • site/models/helloworld.php
  • site/language/index.html
  • site/language/en-GB/index.html
  • site/language/en-GB/en-GB.com_helloworld.ini
  • admin/index.html
  • admin/access.xml
  • admin/config.xml
  • admin/helloworld.php
  • admin/controller.php
  • admin/sql/index.html
  • admin/sql/install.mysql.utf8.sql
  • admin/sql/uninstall.mysql.utf8.sql
  • admin/sql/updates/index.html
  • admin/sql/updates/mysql/index.html
  • admin/sql/updates/mysql/0.0.1.sql
  • admin/sql/updates/mysql/0.0.6.sql
  • admin/sql/updates/mysql/0.0.12.sql
  • admin/sql/updates/mysql/0.0.13.sql
  • admin/models/index.html
  • admin/models/fields/index.html
  • admin/models/fields/helloworld.php
  • admin/models/forms/index.html
  • admin/models/forms/helloworld.xml
  • admin/models/forms/helloworld.js
  • admin/models/rules/index.html
  • admin/models/rules/greeting.php
  • admin/models/helloworld.php
  • admin/models/helloworlds.php
  • admin/views/index.html
  • admin/views/helloworlds/index.html
  • admin/views/helloworlds/view.html.php
  • admin/views/helloworlds/tmpl/index.html
  • admin/views/helloworlds/tmpl/default.php
  • admin/views/helloworlds/tmpl/default_head.php
  • admin/views/helloworlds/tmpl/default_body.php
  • admin/views/helloworlds/tmpl/default_foot.php
  • admin/views/helloworld/index.html
  • admin/views/helloworld/view.html.php
  • admin/views/helloworld/submitbutton.js
  • admin/views/helloworld/tmpl/index.html
  • admin/views/helloworld/tmpl/edit.php
  • admin/helpers/index.html
  • admin/helpers/helloworld.php
  • admin/tables/index.html
  • admin/tables/helloworld.php
  • admin/language/en-GB/en-GB.com_helloworld.ini
  • admin/language/en-GB/en-GB.com_helloworld.sys.ini
  • admin/controllers/index.html
  • admin/controllers/helloworld.php
  • admin/controllers/helloworlds.php
  • language/en-GB/en-GB.ini
  • media/index.html
  • media/images/index.html
  • media/images/tux-16×16.png
  • media/images/tux-48×48.png

Create a compressed file of this directory or directly download the archive and install it using the extension manager of Joomla. You can add a menu item of this component using the menu manager in the backend.

helloworld.xml



 
        COM_HELLOWORLD
        
        November 2009
        John Doe
        john.doe@example.org
        http://www.example.org
        Copyright Info
        License Info
        
        0.0.15
        
        COM_HELLOWORLD_DESCRIPTION
 
        
        script.php
 
         
                
                        sql/install.mysql.utf8.sql
                
        
         
                
                        sql/uninstall.mysql.utf8.sql
                
        
         
                
                        sql/updates/mysql
                
        
 
        
        
        
                index.html
                helloworld.php
                controller.php
                views
                models
                language
        
 
        
                index.html
                images
        
 
        
                
                COM_HELLOWORLD_MENU
                
                
                
                        
                        index.html
                        config.xml
                        access.xml
                        helloworld.php
                        controller.php
                        
                        sql
                        
                        tables
                        
                        models
                        
                        views
                        
                        controllers
                        
                        helpers
                
 
                
                        language/en-GB/en-GB.com_helloworld.ini
                        language/en-GB/en-GB.com_helloworld.sys.ini
                
        
 

Deja un comentario