J2.5:Developing a MVC Component/Adding decorations to the backend
(→Modifying the views) |
|||
| Line 19: | Line 19: | ||
// No direct access to this file | // No direct access to this file | ||
defined('_JEXEC') or die('Restricted access'); | defined('_JEXEC') or die('Restricted access'); | ||
| + | |||
// import Joomla view library | // import Joomla view library | ||
jimport('joomla.application.component.view'); | jimport('joomla.application.component.view'); | ||
| + | |||
/** | /** | ||
| − | * | + | * HelloWorlds View |
*/ | */ | ||
class HelloWorldViewHelloWorlds extends JView | class HelloWorldViewHelloWorlds extends JView | ||
{ | { | ||
| − | |||
/** | /** | ||
| − | * | + | * HelloWorlds view display method |
* @return void | * @return void | ||
*/ | */ | ||
| Line 36: | Line 37: | ||
$items = $this->get('Items'); | $items = $this->get('Items'); | ||
$pagination = $this->get('Pagination'); | $pagination = $this->get('Pagination'); | ||
| + | |||
// Check for errors. | // Check for errors. | ||
if (count($errors = $this->get('Errors'))) | if (count($errors = $this->get('Errors'))) | ||
| Line 45: | Line 47: | ||
$this->items = $items; | $this->items = $items; | ||
$this->pagination = $pagination; | $this->pagination = $pagination; | ||
| + | |||
// Set the toolbar | // Set the toolbar | ||
$this->addToolBar(); | $this->addToolBar(); | ||
| + | |||
// Display the template | // Display the template | ||
parent::display($tpl); | parent::display($tpl); | ||
| + | |||
// Set the document | // Set the document | ||
$this->setDocument(); | $this->setDocument(); | ||
| Line 63: | Line 68: | ||
JToolBarHelper::addNewX('helloworld.add'); | JToolBarHelper::addNewX('helloworld.add'); | ||
} | } | ||
| − | |||
/** | /** | ||
* Method to set up the document properties | * Method to set up the document properties | ||
| Line 87: | Line 91: | ||
// No direct access to this file | // No direct access to this file | ||
defined('_JEXEC') or die('Restricted access'); | defined('_JEXEC') or die('Restricted access'); | ||
| + | |||
// import Joomla view library | // import Joomla view library | ||
jimport('joomla.application.component.view'); | jimport('joomla.application.component.view'); | ||
| + | |||
/** | /** | ||
* HelloWorld View | * HelloWorld View | ||
| Line 94: | Line 100: | ||
class HelloWorldViewHelloWorld extends JView | class HelloWorldViewHelloWorld extends JView | ||
{ | { | ||
| + | /** | ||
| + | * View form | ||
| + | * | ||
| + | * @var form | ||
| + | */ | ||
| + | protected $form = null; | ||
/** | /** | ||
| Line 111: | Line 123: | ||
return false; | return false; | ||
} | } | ||
| − | |||
// Assign the Data | // Assign the Data | ||
$this->form = $form; | $this->form = $form; | ||
$this->item = $item; | $this->item = $item; | ||
| + | |||
// Set the toolbar | // Set the toolbar | ||
$this->addToolBar(); | $this->addToolBar(); | ||
| + | |||
// Display the template | // Display the template | ||
parent::display($tpl); | parent::display($tpl); | ||
| + | |||
// Set the document | // Set the document | ||
$this->setDocument(); | $this->setDocument(); | ||
| Line 129: | Line 143: | ||
{ | { | ||
JRequest::setVar('hidemainmenu', true); | JRequest::setVar('hidemainmenu', true); | ||
| − | $isNew | + | $isNew = ($this->item->id == 0); |
| − | + | ||
JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW') : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld'); | JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW') : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld'); | ||
JToolBarHelper::save('helloworld.save'); | JToolBarHelper::save('helloworld.save'); | ||
JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE'); | JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE'); | ||
} | } | ||
| − | |||
/** | /** | ||
* Method to set up the document properties | * Method to set up the document properties | ||
| Line 143: | Line 155: | ||
protected function setDocument() | protected function setDocument() | ||
{ | { | ||
| − | $isNew | + | $isNew = ($this->item->id < 1); |
$document = JFactory::getDocument(); | $document = JFactory::getDocument(); | ||
| − | $document->setTitle($isNew ? JText::_(' | + | $document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING') : JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING')); |
} | } | ||
} | } | ||
Revision as of 19:34, 21 November 2010
Articles in this series
Contents |
Introduction
This tutorial is part of the Developing a Model-View-Controller (MVC) Component for Joomla!1.6 tutorial. You are encouraged to read the previous parts of the tutorial before reading this.
Adding some icons
With your favorite file manager put a 16x16 image and a 48x48 image (I choose tux) in a media/images/ folder and add a media tag in your install file. Modify the menu tag in order to use the new icon.
Modifying the views
In the admin/views/helloworlds/view.html.php file put these lines:
admin/views/helloworlds/view.html.php
<?php // No direct access to this file defined('_JEXEC') or die('Restricted access'); // import Joomla view library jimport('joomla.application.component.view'); /** * HelloWorlds View */ class HelloWorldViewHelloWorlds extends JView { /** * HelloWorlds view display method * @return void */ function display($tpl = null) { // Get data from the model $items = $this->get('Items'); $pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode('<br />', $errors)); return false; } // Assign data to the view $this->items = $items; $this->pagination = $pagination; // Set the toolbar $this->addToolBar(); // Display the template parent::display($tpl); // Set the document $this->setDocument(); } /** * Setting the toolbar */ protected function addToolBar() { JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'helloworld'); JToolBarHelper::deleteListX('', 'helloworlds.delete'); JToolBarHelper::editListX('helloworld.edit'); JToolBarHelper::addNewX('helloworld.add'); } /** * Method to set up the document properties * * @return void */ protected function setDocument() { $document = JFactory::getDocument(); $document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION')); } }
This view uses a second parameter for the JToolBarHelper::title function. It will be used to construct the css class for the title. The _setDocument method set the browser title.
In admin/views/helloworld/view.html.php, put these lines: admin/views/helloworld/view.html.php
<?php // No direct access to this file defined('_JEXEC') or die('Restricted access'); // import Joomla view library jimport('joomla.application.component.view'); /** * HelloWorld View */ class HelloWorldViewHelloWorld extends JView { /** * View form * * @var form */ protected $form = null; /** * display method of Hello view * @return void */ public function display($tpl = null) { // get the Data $form = $this->get('Form'); $item = $this->get('Item'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode('<br />', $errors)); return false; } // Assign the Data $this->form = $form; $this->item = $item; // Set the toolbar $this->addToolBar(); // Display the template parent::display($tpl); // Set the document $this->setDocument(); } /** * Setting the toolbar */ protected function addToolBar() { JRequest::setVar('hidemainmenu', true); $isNew = ($this->item->id == 0); JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW') : JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld'); JToolBarHelper::save('helloworld.save'); JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE'); } /** * Method to set up the document properties * * @return void */ protected function setDocument() { $isNew = ($this->item->id < 1); $document = JFactory::getDocument(); $document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING') : JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING')); } }
This view also uses the second parameter of the JToolBarHelper::title function and set the browser title
Modifying the main entry file
In the admin/helloworld.php file, put these lines in order to use the 48x48 icon:
<?php // No direct access to this file defined('_JEXEC') or die('Restricted access'); // Set some global property $document = JFactory::getDocument(); $document->addStyleDeclaration('.icon-48-helloworld {background-image: url(../media/com_helloworld/images/tux-48x48.png);}'); // import joomla controller library jimport('joomla.application.component.controller'); // Get an instance of the controller prefixed by HelloWorld $controller = JController::getInstance('HelloWorld'); // Perform the Request task $controller->execute(JRequest::getCmd('task')); // Redirect if set by the controller $controller->redirect();
Adding some strings in the language file
Modify the admin/language/en-GB/en-GB.com_helloworld.ini and put these lines
admin/language/en-GB/en-GB.com_helloworld.ini
COM_HELLOWORLD_ADMINISTRATION_CREATING="HelloWorld - Creating" COM_HELLOWORLD_ADMINISTRATION_EDITING="HelloWorld - Editing" COM_HELLOWORLD_ADMINISTRATION="HelloWorld - Administration" COM_HELLOWORLD_HELLOWORLD_DETAILS="Details" COM_HELLOWORLD_HELLOWORLD_FIELD_MSG_DESC="This message will be displayed" COM_HELLOWORLD_HELLOWORLD_FIELD_MSG_LABEL="Message" COM_HELLOWORLD_HELLOWORLD_GREETING="Greeting" COM_HELLOWORLD_HELLOWORLD_ID="Id" COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT="HelloWorld manager: Edit Message" COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="HelloWorld manager: New Message" COM_HELLOWORLD_MANAGER_HELLOWORLDS="HelloWorld manager" COM_HELLOWORLD_N_ITEMS_DELETED_1="One message deleted" COM_HELLOWORLD_N_ITEMS_DELETED_MORE="%d messages deleted"
Packaging the component
Content of your code directory
- helloworld.xml
- 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/helloworld.php
- admin/controller.php
- admin/sql/index.html
- admin/sql/install.mysql.utf8.sql
- admin/sql/uninstall.mysql.utf8.sql
- admin/sql/update.mysql.utf8.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/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/helloworlds/index.html
- admin/views/helloworld/view.html.php
- admin/views/helloworld/tmpl/index.html
- admin/views/helloworld/tmpl/default.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.menu.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-16x16.png
- media/images/tux-48x48.png
Create a compressed file of this directory or directly download the archive and install it using the extension manager of Joomla!1.6. You can add a menu item of this component using the menu manager in the backend.
helloworld.xml
<?xml version="1.0" encoding="utf-8"?> <extension type="component" version="1.6.0" method="upgrade"> <name>COM_HELLOWORLD</name> <creationDate>November 2009</creationDate> <author>John Doe</author> <authorEmail>john.doe@example.org</authorEmail> <authorUrl>http://www.example.org</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <version>0.0.10</version> <description>COM_HELLOWORLD_DESCRIPTION</description> <install> <!-- Runs on install --> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <!-- Runs on uninstall --> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall> <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> <media destination="com_helloworld" folder="media"> <filename>index.html</filename> <folder>images</folder> </media> <administration> <menu img="../media/com_helloworld/images/tux-16x16.png">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> <folder>controllers</folder> </files> <languages folder="admin"> <language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language> <language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language> </languages> </administration> </extension>
Prev: Adding backend actions Next: Adding verifications