Создаем компонент — пятница, 29 октября 2010-го

Работа над панелью управления компонентом

Просмотров: 1884

Настроение: ))  

В колонках звучит: Don't Ask Me Wh

В сущности каждый сам выбирает с какой части ему начинать (кому как удобней). На мой взгляд, предложеный мною вариант более рационнальный.

Так как состав части администратора, файлы: 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 присутствуют следующая конструкця:

  1. mosMenuBar::startTable();
  2. mosMenuBar::editList();
  3. mosMenuBar::deleteList();
  4. 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

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.

(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)