Шаг пятый. Функции администратора.
Смотрим панель управления компонента. Какие функции она будет нам предоставлять? На данном этапе нужно выбрать какая часть (лицевая или администратора) компонента независима, т.е. без нее существование компонента возможно. Например, в нашем случае лицевая часть может существовать и без администраторской, но мы по теряем некоторую функциональность. А администраторская часть без лицевой вообщее перестанет иметь смысл. Поэтому сначала мы будем разрабатывать часть администратора, чтобы в дальнейшем ее можно было использовать для тестирования лицевой части.
В сущности каждый сам выбирает с какой части ему начинать (кому как удобней). На мой взгляд, предложеный мною вариант более рационнальный. Так как состав части администратора, файлы: admin.myboard.php, toolbar.myboard.php. Их то мы и будем редактировать. (также возможно иcпользование файлов вида admin.myboard.html.php, toolbar.myboard.html.php . Пока мы их не трогаем, но обязательно рассмотрим в следующих уроках. Кратко о них можно сказать, что нужны они для разделения оформления компонента от кода.) В любом компоненте Joomla за часть, которая на вышестоящем рисунке выделена красным, отвечает файл admin.myboard.php, а за часть котарая выделена зеленым - toolbar.myboard.php. Теперь, разобравшись, кто за что отвечает нам нужно четко описать все сраницы панели управления нашим компонентом и все конопки, располагающиеся на них. У нас будет 2 страницы. Первая страница (форма) - На ней будет присутствовать список с пользователями доски объявлений (для того, чтобы можно было посмотреть сообщения конкретного пользователя). Таблица, отображающая все сообщения (или только одного пользователя, одной даты создания) со следующими полями: Флажок (для того, чтобы отметить ту или иную запись), Имя пользователя, создавшего сообщение, Краткое содержание сообщения (первый 30 символов), Дату создания. Дата, когда сообщение перестает отображаться.
- Кнопки тулбара: Изменить (показывает полное содержание отмеченого сообщения. Отмечать можно только одно сообщение, в остальных случаях должно выдаваться сообщение об ошибке), Удалить (удаляет все отмеченые администратором сообщения).
Вторая форма (страница) - Страница, на котрой отображается сообщение в необрезанном виде. Администратору предоставляется возможность изменить текст сообщения. Поэтому текст выводится в многострочное поле ввода.
- Кнопки тулбара: Сохранить (сохраняет изменения в тексте сообщения и переходит к первой странице), Отмена (переходит к первой странице без схранения).
Шаг шестой. Панель управления компонентом
Создаем каркас панели управления компонентом. На этом шаге нам нужно создать каркас внутри фалов администраторской части. Каркас будет один и тот же для файлов admin.myboard.php, toolbar.myboard.php. Каркас создаем на основе предыдущего шага. Привожу содержание файла admin.myboard.php. После (ниже) будем рассматривать, более подробно что и зачем там находится.
<?php echo '<form name="adminForm" method="POST" action="index2.php">'; echo '<input type="hidden" name="option" value="'.$option.'">'; echo '<input type="hidden" name="act" value="'.$act.'">'; echo '<input type="hidden" name="task" value="">'; switch ($act) { case "view_mess": { switch ($task) { case "edit": echo 'Редактирование сообщения'; break; case "remove": echo 'Удаление сообщений'; break; case "cancel": echo 'Отмена редактирования сообщения'; break; case "save": echo 'Сохраниение сообщения'; break; default: echo 'Отображение компонента по умолчанию'; break; } } break; default: echo 'Выбран пункт наша доска'; break; } echo '</form>'; ?>
Итак сначала мы видим объявление формы adminForm, потом описаны 3 элемента управления типа hidden (скрытый) - option, act, task. Значения эти полей передаются каждой странице в Joomla. Переменная $option хранит название компонента, в нашем случае com_myboard. Переменная $act содержит идентификатор меню (этот идентификатор мы описали еще в файле myboard.xml). Так как у нас одно меню, то и значение обрабатываем мы одно Переменная (case "view_mess"). $task служит для определения какая кнопка тулбара была нажата. У нас 4 различных кнопки поэтому мы обрабатываем 4 различных значения. Как в случае обработки переменной $act так и $task, нужно обрабатывать и значения поумолчанию, т. е. все занчения кроме тех которые мы описали выше. Для этого служит ключевое слово default. Счас в каждом блоке case (Например: case "edit": echo 'Редактирование сообщения'; break;) находится оператор echo, который выводит сообщение в зависимости от действия. Его мы вставили для того чтобы пока не написан основной код можно было отследить какие кнопки нажаты. После мы его уберем. Теперь взглянем на содержание файла toolbar.myboard.php:
<?php switch ($act) { case "view_mess": { switch ($task) { case "edit": mosMenuBar::startTable(); mosMenuBar::save(); mosMenuBar::cancel(); mosMenuBar::endTable(); break; case "remove": mosMenuBar::startTable(); mosMenuBar::editList(); mosMenuBar::deleteList(); mosMenuBar::endTable(); break; case "cancel": mosMenuBar::startTable(); mosMenuBar::editList(); mosMenuBar::deleteList(); mosMenuBar::endTable(); break; case "save": mosMenuBar::startTable(); mosMenuBar::editList(); mosMenuBar::deleteList(); mosMenuBar::endTable(); break; default: mosMenuBar::startTable(); mosMenuBar::editList(); mosMenuBar::deleteList(); mosMenuBar::endTable(); break; } } break; default: break; } ?>
Видим, что структура анологична предыдущему файлу, за исключением отсудствия описания формы. В каждой секции case присутствуют следующая конструкця: - mosMenuBar::startTable();
- mosMenuBar::editList();
- mosMenuBar::deleteList();
- mosMenuBar::endTable();
Это описание кнопок тулбара, здесь: в первой строке описано начала тулбара, в четвертой строке конец тулбара, между ними находятся описания кнопок. Возможные значения. - addNew($task = 'new', $alt = 'New')
- publish($task = 'publish', $alt = 'Publish')
- publishList($task = 'publish', $alt = 'Publish')
- makeDefault($task = 'default', $alt = 'Default')
- assign($task = 'assign', $alt = 'Assign')
- unpublish($task = 'unpublish', $alt = 'Unpublish')
- unpublishList($task = 'unpublish', $alt = 'Unpublish')
- archiveList($task = 'archive', $alt = 'Archive')
- unarchiveList($task = 'unarchive', $alt = 'Unarchive')
- editList($task = 'edit', $alt = 'Edit')
- editHtml($task = 'edit_source', $alt = 'Edit HTML')
- editCss($task = 'edit_css', $alt = 'Edit CSS')
- deleteList($task = 'remove', $alt = 'Delete')
- trash($task = 'remove', $alt = 'Trash')
Теперь снова проверяем на работоспособность наш компонент. Удаляем предыдущую версию с сайта. Архивируем новые версии файлов. Устанавливаем, описанным ранее способом. Смотрим работает или нет. Если все сделано правильно , то при нажатии меню Наша доска появится сообщение и отобразятся ребуемые кнопки тулбара. Ссылочка на последнию версию разрабатываемого нами компонента: http://test.ex6.ru/administrator/articles/com_myboard (step 3).zip Следующие статьи и серии "Создаем компонент Моя доска объявлений" можно найти по следующей ссылке Создай компонент Joomla! своими руками |