Joomla: Добавление своих кнопок в меню компонента (административный раздел)

11.06.2018

Если нужно не просто убрать пару кнопок из панели управления компонентом Joomls 3, но и добавить свои кнопки или даже выпадающие списки около сохранить то эта заметка для Вас.

pic1

Файл /views/items/view.html.php, метод addToolBar, добавляем сами списки и дополнительную кнопку:

 
    public function display($tpl = null)
    {
      try
      {
       ...
  
        // Устанавливаем панель инструментов.
        $this->addToolBar();

        // Устанавливаем боковую панель.
        $this->sidebar = JHtmlSidebar::render();
  
        // Отображаем представление.
        parent::display($tpl);
      }
      catch (Exception $e)
      {
        throw new Exception($e->getMessage());
      }
    }
  
    /**
     * Устанавливает панель инструментов.
     *
     * @return void
     */
    protected function addToolBar()
    {
      JToolBarHelper::title('Счета', 'item');

      if ($this->canDo->get('core.create'))
      {
        JToolBarHelper::addNew('item.add');
      }


      $aMonths = array (1 => "Январь", 2 => "Февраль", 3 => "Март", 4 => "Апрель", 5 => "Май", 6 => "Июнь", 7 => "Июль", 8 => "Август", 9 => "Сентябрь", 10 => "Октябрь", 11 => "Ноябрь", 12 => "Декабрь");
      //$aMonth = SoInvoice_generatorHelper::getMonths();
      $aMonthName = $aMonth[1];

      $dhtml = '<select id="inMonth">';
      foreach($aMonthName as $sKey => $sVal)
      {
        $sTmp = $sKey==date('n')?'selected':'';
        $dhtml .= '<option '.$sTmp.' value="'.$sKey.'">'.$sVal.'</option>';
      }
      $dhtml .= '</select>';
      $bar = JToolbar::getInstance('toolbar');
      $bar->appendButton('Custom', $dhtml, 'TITLE');



      $dhtml = '<select id="inYear">';
      foreach($aMonthName as $sKey => $sVal)
      for($i = 2017; $i <= 2025; $i++)
      {
        $sTmp = $i==date('Y')?'selected':'';
        $dhtml .= '<option '.$sTmp.' value="'.$i.'">'.$i.'</option>';
      }
      $dhtml .= '</select>';
      $bar = JToolbar::getInstance('toolbar');
      $bar->appendButton('Custom', $dhtml, 'TITLE');


      
      JToolBarHelper::custom(
        'items.issue_invoices',
        'edit', 
        'edit', 
        'Выставить счета'
      );

  
      if ($this->canDo->get('core.admin'))
      {
        JToolBarHelper::divider();
        JToolBarHelper::preferences('com_soinvoice_generator');
      }
    }

Далее дорабатываем представление (/views/items/tmpl/default.php), чтобы при отправке формы отправлять и данные из списков:

 
<script type="text/javascript">
jQuery(document).ready(function($) {
    Joomla.submitbutton = function(task) {
		$("#soMonth").val( $("#inMonth").val() );
		$("#soYear").val( $("#inYear").val() );
		Joomla.submitform(task, document.getElementById('adminForm'));
    }

});
</script>
<input type="hidden" name="soMonth" id="soMonth" />
<input type="hidden" name="soYear" id="soYear" />

Получит и обработать эти данные можно в контроллере или модели:

 
$input = JFactory::getApplication()->input;
$iMonth = $input->get('soMonth', 0);


Категории: CMS Joomla 3.X, Joomla
Пометки: Joomla: Добавление своих кнопок в админку компонента
Яндекс.Метрика