Четвертый урок по созданию MVC компонента.

В этом уроке будет минимум программирования. В основном мы будем немного приводить в божеский вид нашу админку, удаляя или переписывая часть кода.
Что же не так в админке спросите вы?

Всего лишь присутствие ненужных полей например как автор, публикация сообщений, так же сортировка по этим полям, кнопки которые позволяют снять с публикации материал или отредактировать его, а так же отображение сохраненного письма в визуальном редакторе!

Если мы откроем наш компонент в административной части то увидим что у нас лишние поля:
  1. Списки фильтрации: выбор состояния и выбора автора
  2. Кнопки: Создать, изменить, опубликовать и Снять с публикации
  3. Поля в таблице: Состояние и Автор
Запись в административной части

Для начала уберем первые два пункта. Для этого открываем файл: administrator/components/com_form/views/archives/view.html.php и меняем его код на следующий:

<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * View to display a list of items
 * @author Aleksandr Denezh
 */
class FormViewArchives extends JViewLegacy
{

	protected $items;
	protected $pagination;
	protected $state;
	protected $user;

	/**
	 * Method to display the current pattern
	 * @param type $tpl
	 */
	public function display( $tpl = null )
	{
		$this->items = $this->get( 'Items' );
		$this->pagination = $this->get( 'Pagination' );
		$this->state = $this->get( 'State' );
		$this->user = JFactory::getUser();
		$this->loadHelper( 'form' );
		$this->_setToolBar();
		parent::display( $tpl );
	}

	/**
	 * Method to display the toolbar
	 */
	protected function _setToolBar()
	{
		JToolBarHelper::title( JText::_( 'COM_FORM' ) );
		$canDo = formHelper::getActions( 'archive' );
		if ( $canDo->get( 'core.delete' ) ) {
			JToolBarHelper::deleteList( 'DELETE_QUERY_STRING', 'archives.delete', 'JTOOLBAR_DELETE' );
			JToolBarHelper::divider();
		}
		if ( $canDo->get( 'core.admin' ) ) {
			JToolBarHelper::preferences( 'com_form' );
			JToolBarHelper::divider();
		}
		formHelper::addSubmenu( 'archives' );
	}

	protected function getSortFields()
	{
		return array(
			'ordering' => JText::_( 'JGRID_HEADING_ORDERING' ),
			'title' => JText::_( 'JGLOBAL_TITLE' ),
			'created' => JText::_( 'JDATE' ),
			'id' => JText::_( 'JGRID_HEADING_ID' )
		);
	}
}

Далее открываем файл шаблона этого вида по адресу administrator/components/com_form/views/archives/tmpl/default.php и удаляем следующие строки кода:

<th width="5%" style="min-width:55px" class="center">
	<?php echo JHtml::_('grid.sort', 'JSTATUS', 'state', $listDirn, $listOrder); ?>
</th>
<th width="10%" class="hidden-phone">
	<?php echo JHtml::_('grid.sort',  'JAUTHOR', 'created_by', $listDirn, $listOrder); ?>
</th>
<td class="center">
	<div class="btn-group">
		<?php echo JHtml::_( 'jgrid.published', $item->state, $i, 'archives.', $canChange, 'cb' ); ?>
	</div>
</td>
<td class="small hidden-phone">
	<?php echo $this->escape( $item->created_by ); ?>
</td>
После внесения изменения в этих двух файлах наш список видов примет следующий вид: Список записей после модификации

Теперь мы отредактируем шаблон редактирования записи!

Открываем файл вида по адресу administrator/components/com_form/views/archive/view.html.php

Нам нужно отредактировать метод: _setToolBar(), и привести его к следующему виду:

protected function _setToolBar()
{
	JFactory::getApplication()->input->set( 'hidemainmenu', true );
	JToolBarHelper::title( 'Просмотр сообщения' );
	JToolBarHelper::cancel( 'archive.cancel', 'JTOOLBAR_CLOSE' );
}

После этого открываем шаблон формы редактирования который находится по адресу: administrator/components/com_form/views/archive/tmpl/edit.php, и привести его к такому виду:

<?php
// No direct access
defined( '_JEXEC' ) or die;
JHTML::_( 'behavior.tooltip' );
JHTML::_( 'behavior.keepalive' );
$input = JFactory::getApplication()->input;
?>
<script type="text/javascript">
	Joomla.submitbutton = function (task) {
		if (task == 'archive.cancel' || document.formvalidator.isValid(document.id('item-form'))) {
			Joomla.submitform(task, document.getElementById('item-form'));
		} else {
			alert('<?php echo $this->escape( JText::_( 'JGLOBAL_VALIDATION_FORM_FAILED' ) ); ?>');
		}
	}
</script>
<form action="<?php echo JRoute::_( 'index.php?option=com_form&id=' . $this->form->getValue( 'id' ) ); ?>" method="post" name="adminForm" id="item-form" class="form-validate" enctype="multipart/form-data">
	<div class="row-fluid">
		<!-- Begin Content -->
		<div class="form-horizontal">
			<p><?php echo $this->item->title; ?></p>

			<p> Отправлено: <?php echo JHtml::_( 'date', $this->item->created, 'd.m.Y H:i' ); ?></p>
			<?php echo $this->item->text; ?>
		</div>
	</div>
	<input type="hidden" name="task" value="" />
	<input type="hidden" name="return" value="<?php echo $input->getCmd( 'return' ); ?>" />
	<?php echo JHtml::_( 'form.token' ); ?>
</form>
После внесения изменения в этих двух файлах просмотр сообщения будет выглядеть так: Просмотр записи

На этом настройка административной части, а также наш урок завершен!

В следующем финальном уроке мы займемся небольшими небольшими украшательствами пользовательской части нашего компонента!

Все что мы проделали в этом уроке можно скачать ниже!