Creating a toolbar for your component
From Joomla! Documentation
(Difference between revisions)
DeanMarshall (Talk | contribs) m (Minor edit - removal of extraneous quotes) |
m |
||
| (3 intermediate revisions by 3 users not shown) | |||
| Line 25: | Line 25: | ||
JToolBarHelper::preferences('com_hello', '500'); | JToolBarHelper::preferences('com_hello', '500'); | ||
</source> | </source> | ||
| + | An example of creating a custom button in the admin list of records of your component {{JVer|3.0}} could be: | ||
| − | [[Category:Development]] | + | |
| + | administrator/views/hellos/view.html.php | ||
| + | <source lang="php"> | ||
| + | public function display($tpl = null) | ||
| + | { | ||
| + | |||
| + | $this->state = $this->get('State'); | ||
| + | $this->items = $this->get('Items'); | ||
| + | $this->pagination = $this->get('Pagination'); | ||
| + | |||
| + | // Check for errors. | ||
| + | if (count($errors = $this->get('Errors'))) { | ||
| + | JError::raiseError(500, implode("\n", $errors)); | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | $this->addToolbar(); | ||
| + | |||
| + | $this->sidebar = JHtmlSidebar::render(); | ||
| + | parent::display($tpl); | ||
| + | |||
| + | } | ||
| + | |||
| + | protected function addToolbar() | ||
| + | { | ||
| + | // assuming you have other toolbar buttons ... | ||
| + | |||
| + | JToolBarHelper::custom('hellos.extrahello', 'extrahello.png', 'extrahello_f2.png', 'Extra Hello', true); | ||
| + | |||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | administrator/controllers/hellos.php | ||
| + | <source lang="php"> | ||
| + | public function extrahello() | ||
| + | { | ||
| + | |||
| + | // Get the input | ||
| + | $input = JFactory::getApplication()->input; | ||
| + | $pks = $input->post->get('cid', array(), 'array'); | ||
| + | |||
| + | // Sanitize the input | ||
| + | JArrayHelper::toInteger($pks); | ||
| + | |||
| + | // Get the model | ||
| + | $model = $this->getModel(); | ||
| + | |||
| + | $return = $model->extrahello($pks); | ||
| + | |||
| + | // Redirect to the list screen. | ||
| + | $this->setRedirect(JRoute::_('index.php?option=com_hello&view=hellos', false)); | ||
| + | |||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | administrator/models/hello.php (note: the singular model) | ||
| + | <source lang="php"> | ||
| + | public function extrahello($pks) | ||
| + | { | ||
| + | |||
| + | // perform whatever you want on each item checked in the list | ||
| + | |||
| + | return true; | ||
| + | |||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | Helpful explanation of JToolBarHelper/custom here - http://docs.joomla.org/JToolBarHelper/custom | ||
| + | |||
| + | |||
| + | [[Category:Component Development]] | ||
| + | [[Category:Tutorials]] | ||
Revision as of 16:15, 18 December 2012
Note: This applies when using the MVC structure.
By default the Joomla Toolbar uses a Delete, Edit, New, Publish, Unpublish and Parameters buttons. To use them in your component you must write the following code in the view.html.php of your view file (below your display function).
JToolBarHelper::title( 'your_component_view_page_title', 'generic.png' ); JToolBarHelper::deleteList(); // Will call the task/function "remove" in your controller JToolBarHelper::editListX(); // Will call the task/function "edit" in your controller JToolBarHelper::addNewX(); // Will call the task/function "add" in your controller JToolBarHelper::publishList(); // Will call the task/function "publish" in your controller JToolBarHelper::unpublishList(); // Will call the task/function "unpublish" in your controller JToolBarHelper::preferences('your_component_xml_file', 'height');
So (i.e.) your code would look like this:
class HelloViewHellos extends JView { function display($tpl = null) { global $mainframe, $option; JToolBarHelper::title( 'Hello Component', 'generic.png' ); JToolBarHelper::deleteList(); JToolBarHelper::editListX(); JToolBarHelper::addNewX(); JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); JToolBarHelper::preferences('com_hello', '500');
An example of creating a custom button in the admin list of records of your component
could be:
administrator/views/hellos/view.html.php
public function display($tpl = null) { $this->state = $this->get('State'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->addToolbar(); $this->sidebar = JHtmlSidebar::render(); parent::display($tpl); } protected function addToolbar() { // assuming you have other toolbar buttons ... JToolBarHelper::custom('hellos.extrahello', 'extrahello.png', 'extrahello_f2.png', 'Extra Hello', true); }
administrator/controllers/hellos.php
public function extrahello() { // Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); // Sanitize the input JArrayHelper::toInteger($pks); // Get the model $model = $this->getModel(); $return = $model->extrahello($pks); // Redirect to the list screen. $this->setRedirect(JRoute::_('index.php?option=com_hello&view=hellos', false)); }
administrator/models/hello.php (note: the singular model)
public function extrahello($pks) { // perform whatever you want on each item checked in the list return true; }
Helpful explanation of JToolBarHelper/custom here - http://docs.joomla.org/JToolBarHelper/custom