Actions

Difference between revisions of "Creating a toolbar for your component"

From Joomla! Documentation

m (Removed category)
(Remove 1.5 specific code)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{version|2.5,3.x}}
 
Note: This applies when using the MVC structure.
 
Note: This applies when using the MVC structure.
  
Line 16: Line 17:
 
  {
 
  {
 
   function display($tpl = null) {
 
   function display($tpl = null) {
      global $mainframe, $option;
 
 
       JToolBarHelper::title( 'Hello Component', 'generic.png' );
 
       JToolBarHelper::title( 'Hello Component', 'generic.png' );
 
       JToolBarHelper::deleteList();
 
       JToolBarHelper::deleteList();
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.x}} could be:
  
[[Category:Component Development]]
+
 
[[Category:Tutorials]]
+
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
 +
 
 +
<noinclude>[[Category:Component Development]] [[Category:Tutorials]] </noinclude>

Latest revision as of 10:29, 12 September 2013

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) {
      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 Joomla 3.x 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