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

From Joomla! Documentation

(New page: Note: This applies when using the MVC structure. <br /> By default the Joomla Toolbar uses a Delete, Edit, New, Publish, Unpublish and Parameters buttons. To use them in your component you...)
 
(Remove 1.5 specific code)
(10 intermediate revisions by 8 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.
<br />
+
 
 
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).
 
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).
<br />
+
<source lang="php">
 
+
       JToolBarHelper::title( 'your_component_view_page_title', 'generic.png' );
       JToolBarHelper::title( ''your_component_view_page_title'', 'generic.png' );
+
       JToolBarHelper::deleteList(); // Will call the task/function "remove" in your controller
       JToolBarHelper::deleteList();
+
       JToolBarHelper::editListX(); // Will call the task/function "edit" in your controller
       JToolBarHelper::editListX();
+
       JToolBarHelper::addNewX(); // Will call the task/function "add" in your controller
       JToolBarHelper::addNewX();
+
       JToolBarHelper::publishList(); // Will call the task/function "publish" in your controller
       JToolBarHelper::publishList();
+
       JToolBarHelper::unpublishList(); // Will call the task/function "unpublish" in your controller
       JToolBarHelper::unpublishList();
+
       JToolBarHelper::preferences('your_component_xml_file', 'height');
       JToolBarHelper::preferences('your_component_xml_file', ''height'');
+
</source>
 
 
 
 
 
So (i.e.) your code would look like this:
 
So (i.e.) your code would look like this:
 
+
<source lang="php">
 
  class HelloViewHellos extends JView
 
  class HelloViewHellos extends JView
 
  {
 
  {
 
   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 26: Line 24:
 
       JToolBarHelper::unpublishList();
 
       JToolBarHelper::unpublishList();
 
       JToolBarHelper::preferences('com_hello', '500');
 
       JToolBarHelper::preferences('com_hello', '500');
 +
</source>
 +
An example of creating a custom button in the admin list of records of your component {{JVer|3.x}} could be:
 +
 +
 +
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
  
I will add more info as soon as possible. Meanwhile use the forum for more answers for your questions.
+
<noinclude>[[Category:Component Development]] [[Category:Tutorials]] </noinclude>

Revision as of 11: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