Частина 7 – панель управління

Створення панелі інструментів
У Joomla адміністратор сайту зазвичай управляє компонентами за допомогою панелі інструментів та різних дій, які пов'язані з цією панеллю. Давайте створимо заголовок з іконкою та панель інструментів для нашого компонента. Для цього необхідно відредагувати файл admin/views/helloworlds/view.html.php:
У методі addToolBar() ми використовуємо клас JToolBarHelper для додавання елементів до панелі інструментів. Цей клас доступний з будь-якої точки адміністраторської частини, тому що він підключається безпосередньо до файлу administrator/index.php :
Функції JToolBarHelper::title ми передаємо другий параметр helloworld. Це додасть до заголовка компонента css-клас helloworld, що дозволить нам налаштувати іконку заголовка. Також ми додали кнопки додавання, редагування запису та видалення списку записів. Ви можете знайти інші класичні функції управління у файлі administrator/includes/toolbar.php .
JToolBarHelper::divider(); просто виводить символ роздільника та допомагає візуально відокремити різні групи кнопок.
Оскільки подання тепер може виконувати деякі дії, ми повинні додати вхідні дані до файлу admin/views/helloworlds/tmpl/default.php
Тепер через приховане поле task ми передаємо завдання, яке підставляється, виходячи з того, яку кнопку в панелі інструментів ми натиснули. Приховане поле boxchecked дозволяє Joomla визначити, чи вибрано хоч один запис чи ні.
Додаємо контролери
Для керування панель інструментів було додано три кнопки, пов'язані з відповідними діями:
- helloworlds.delete
- helloworld.edit
- helloworld.add
Створіть файл admin/controllers/helloworlds.php зінаступним кодом:
Ми перевизначили метод getModel для того, щоби батьківський клас JControllerAdmin міг отримати доступ до класу нашої моделі HelloWorldModelHelloWorld і коректно виконувати видалення записів за допомогою методу delete.
Створіть файл admin/controllers/helloworld.php з наступним кодом:
Цей клас порожній, тому що необхідні нам методи add та edit розташовані в батьківському класі JControllerForm.
Додаємо подання для редагування
Створіть файл admin/views/helloworld/view.html.php з наступним кодом:
У режимі додавання/редагування запису ми прибираємо можливість користуватися основним адміністраторським меню за допомогою hidemainmenu. Також залежно від режиму (додавання або редагування) ми змінюємо текст заголовка та текст під кнопками на панелі.
Це представлення відображатиме дані за допомогою шаблону admin/views/helloworld/tmpl/edit.php :
У шаблоні ми використовуємо метод getFieldset() для отримання доступу до полів форми (як масиву об'єктів класу JFormField), яку ми отримуємо за допомогою моделі.
Додаємо модель
Подання HelloWorldViewHelloWorld запитує форму та дані з моделі. Ця модель повинна містити методи getTable(), getForm() та loadData(). Створіть файл admin/models/helloworld.php з наступним кодом:
Ця модель успадковується від класу JModelAdmin і використовує метод loadForm() для отримання форми. Зверніть увагу, що ми використовуємо властивість $this->option , значення якого дорівнює com_helloworld. Воно визначається автоматично у конструкторі батьківського класу JModel. Таким чином, ми не прив'язуємося до назви нашого компонента, і якщо раптом нам захочеться його змінити, то ми зможемо це зробити не змінюючи наш код.
Отже, метод loadForm() шукає форми у папці форм, які за умовчанням перебувають у models/forms . Створіть файл форми admin/models/forms/helloworld.xml:
Назви полів форми збігаються з назвами полів у таблиці бази даних. Таким чином, наш клас таблиці HelloWorldTableHelloWorld зможе зберегти значення полів форми у відповідних полях таблиці бази даних. Зверніть увагу на приховане поле id:
Для нового запису значення не вказується, а для існуючого – це id записи з бази. З цього клас таблиці оперделяет, додавати чи оновлювати дані у базі.
Змінюємо точку входу
Для використання іконки 48x48px в заголовку, внесемо зміни до файлу точки входу admin/helloworld.php - за допомогою методу addStyleDeclaration класу JDocument додамо для неї css-стиль:
У результаті вийде такий симпатичний заголовок:

Додаємо мовні константи
Відкрийте файл admin/language/en-GB/en-GB.com_helloworld.ini та замініть код на наступний:
COM_HELLOWORLD_ADMINISTRATION="HelloWorld - Administration" COM_HELLOWORLD_HELLOWORLD_CREATING="HelloWorld - Creating" COM_HELLOWORLD_HELLOWORLD_DETAILS="Details" COM_HELLO 10>COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="This message will be displayed" COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Message" COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Greeting" COM_HELLOWORLD_HELLOWORLD_HEADING_ID=" _EDIT="HelloWorld manager: Edit Message" COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="HelloWorld manager: New Message" COM_HELLOWORLD_MANAGER_HELLOWORLDS= "HelloWorld manager" COM_HELLOWORLD_N_ITEMS_DELETED_1="One messagedeleted" COM_HELLOWORLD_N_ITEMS_DELETED_MORE="%d messages deleted"
Відкрийте файл admin/language/ru-RU/ru-RU.com_helloworld.ini та замініть код на наступний:
COM_HELLOWORLD_ADMINISTRATION="Hello World! - Адміністрування" COM_HELLOWORLD_HELLOWORLD_CREATING="Hello World! - Створення" COM_HELLOWORLD_HELLOWORLD_DETAILS="Деталі" COM_HELLOWORLD_HELLOWORLD_CREATING=" Редагування" COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="Повідомлення для відображення " COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Повідомлення" COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Вітання" COM_HELLOWORLD_HELLOWORLD_HEADING OWORLD_EDIT="Hello World!: Змінити повідомлення" COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="Hello World!: Додати повідомлення " COM_HELLOWORLD_MANAGER_HELLOWORLDS="Управління Hello World!" COM_HELLOWORLD_N_ITEMS_DELETED_1="Одне повідомлення видалено" COM_HELLOWORLD_N_ITEMS_DELETED_2="%D повідомлення _MORE="%d повідомлень видалено"
Збираємо пакет установки компонента
Створіть дві png-іконки для нашого компонента розміром 16х16px та 48х48px пікселів, назвіть їх hello-16x16.png та hello-48x48.png та збережіть у папці media/images/ .
Не забудьте змінити номер версії у файлі helloworld.xml:
Додаємо підтримку контролерів:
Додаємо підтримку медіа:
Додаємо підтримку іконки у пункті меню:
Вміст директорії з кодом:
Запакуйте директорію в архівний файл (zip, tar, tar.gz, bz2) або завантажте його безпосередньо з GitHub. Далі встановіть його за допомогою менеджера розширень Joomla. Тепер ви можете додавати, видаляти та редагувати повідомлення.
У наступній частині ми додамо валідаціюформи.