Developing a MVC Component/Adding backend actions: Difference between revisions
From Joomla! Documentation
No edit summary |
|||
| Line 15: | Line 15: | ||
== Indroduction == | == Indroduction == | ||
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. | 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 a toolbar == | |||
In Joomla!1.6, the administrator interacts generally with components through the use of a toolbar. In the file ''admin/views/helloworldlist/view.html.php'' put this content. It will create a basic toolbar ant a title for the component. | |||
<span id ="admin/views/helloworldlist/view.html.php"> | |||
''admin/views/helloworldlist/view.html.php'' | |||
<source lang="php"> | |||
<?php | |||
// No direct access to this file | |||
defined('_JEXEC') or die('Restricted access'); | |||
// import Joomla view library | |||
jimport('joomla.application.component.view'); | |||
/** | |||
* HelloWorldList View | |||
*/ | |||
class HelloWorldViewHelloWorldList extends JView { | |||
/** | |||
* items to be displayed | |||
*/ | |||
protected $items; | |||
/** | |||
* pagination for the items | |||
*/ | |||
protected $pagination; | |||
/** | |||
* HelloWorldList view display method | |||
* @return void | |||
*/ | |||
function display($tpl = null) | |||
{ | |||
// Get data from the model | |||
$items = $this->get('Items'); | |||
$pagination = $this->get('Pagination'); | |||
// Assign data to the view | |||
$this->items = $items; | |||
$this->pagination = $pagination; | |||
// Set the toolbar | |||
$this->_setToolBar(); | |||
// Display the template | |||
parent::display($tpl); | |||
} | |||
/** | |||
* Setting the toolbar | |||
*/ | |||
protected function _setToolBar() | |||
{ | |||
JToolBarHelper::title(JText::_('com_helloworld_Manager')); | |||
JToolBarHelper::deleteListX('com_helloworld_HelloWorldList_Are_you_sure_you_want_to_delete_these_greetings', 'helloworldlist.remove'); | |||
JToolBarHelper::editListX('helloworld.edit'); | |||
JToolBarHelper::addNewX('helloworld.add'); | |||
} | |||
} | |||
</source> | |||
</span> | |||
You can find others classic backend actions in the ''administrator/includes/toolbar.php'' file of your Joomla!1.6 installation. | |||
Three actions has been added: | |||
* ''helloworldlist.remove'' | |||
* ''helloworld.edit'' | |||
* ''helloworld.add'' | |||
These are compound tasks (''controller''.''task''). So a ''remove'' task has to be coded in a new ''HelloWorldControllerHelloworldList'' controller and ''edit'' and ''add'' tasks have to be coded in a new ''HelloWorldControllerHelloWorld'' controller. | |||
== Packaging the component == | == Packaging the component == | ||
Revision as of 09:56, 13 November 2009
This article or section is in the process of an expansion or major restructuring. You are welcome to assist in its construction by editing it as well. If this article or section has not been edited in several days, please remove this template.
This article was last edited by Cdemko (talk| contribs) 16 years ago. (Purge)
Articles in this series
- Developing a Basic Component
- Adding a view to the site part
- Adding a menu type to the backend part
- Adding a model to the site part
- Adding a variable request in the menu type
- Using the database
- Basic backend
- Adding language management
- Adding backend actions
Indroduction
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 a toolbar
In Joomla!1.6, the administrator interacts generally with components through the use of a toolbar. In the file admin/views/helloworldlist/view.html.php put this content. It will create a basic toolbar ant a title for the component.
admin/views/helloworldlist/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');
/**
* HelloWorldList View
*/
class HelloWorldViewHelloWorldList extends JView {
/**
* items to be displayed
*/
protected $items;
/**
* pagination for the items
*/
protected $pagination;
/**
* HelloWorldList view display method
* @return void
*/
function display($tpl = null)
{
// Get data from the model
$items = $this->get('Items');
$pagination = $this->get('Pagination');
// Assign data to the view
$this->items = $items;
$this->pagination = $pagination;
// Set the toolbar
$this->_setToolBar();
// Display the template
parent::display($tpl);
}
/**
* Setting the toolbar
*/
protected function _setToolBar()
{
JToolBarHelper::title(JText::_('com_helloworld_Manager'));
JToolBarHelper::deleteListX('com_helloworld_HelloWorldList_Are_you_sure_you_want_to_delete_these_greetings', 'helloworldlist.remove');
JToolBarHelper::editListX('helloworld.edit');
JToolBarHelper::addNewX('helloworld.add');
}
}
You can find others classic backend actions in the administrator/includes/toolbar.php file of your Joomla!1.6 installation.
Three actions has been added:
- helloworldlist.remove
- helloworld.edit
- helloworld.add
These are compound tasks (controller.task). So a remove task has to be coded in a new HelloWorldControllerHelloworldList controller and edit and add tasks have to be coded in a new HelloWorldControllerHelloWorld controller.
Packaging the component
Content of your code directory
- helloworld.xml
- site/index.html
- site/helloworld.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/models/index.html
- site/models/helloworld.php
- site/views/helloworld/tmpl/default.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/helloworldlist.php
- admin/views/index.html
- admin/views/helloworldlist/index.html
- admin/views/helloworldlist/view.html.php
- admin/views/helloworldlist/tmpl/index.html
- admin/views/helloworldlist/tmpl/default.php
- admin/views/helloworldlist/tmpl/default_head.php
- admin/views/helloworldlist/tmpl/default_body.php
- admin/views/helloworldlist/tmpl/default_foot.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
- language/en-GB/en-GB.ini
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>Hello World!</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.8</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>
<update> <!-- Runs on update -->
<sql>
<file driver="mysql" charset="utf8">sql/update.mysql.utf8.sql</file>
</sql>
</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>Hello World!</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>
<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.menu.ini</language>
</languages>
</administration>
</extension>
In this helloworld.xml file, languages are installed in:
- administrator/language for the admin part (look at the xml languages tag)
- components/com_helloworld/language for the site part (there are no xml languages tag in the site part of the xml description file, but the language folder is included)