Приклад використання модуля apps через налаштування appServer

27.11.2013
Setup And Example Use Of Apps Module In The AppServer Environment
Автор:

Apps - це модуль, що позиціонується як наступний крок у розвитку фіч. Для нас, зокрема, він видається більш зрозумілим та зручним саме в якості інструментарію для додавання на сайт нових можливостей, при чому виконувати ці додавання із його допомогою можна без жодної шкоди для юзабіліті. Та найголовніше те, що модуль Apps, як інструмент для роботи,буде зрозумілим не лише продвинутому друпалеру, а й звичайному користувачу. Відтепер додавати новий функціонал - при допомозі даного модуля - ваші клієнти зможуть просто одним кліком (Install app).

Звичайному користувачу apps швидше за все нагадає chrome web store, де кожен вибирає собі той “додаток” до базової версії CommerceBox, котрий йому потрібен. Apps, завважимо, складається з двох частин - серверної та клієнтської. Клієнтська частина модуля виводить список всіх доступних до встановлення додатків, а також, оповіщає користувача про поновлення, які щойно вийшли. Серверну частину забезпечує модуль appServer. Він займається тим, що вертає json об'єкт з даними по кожному app-у (з назвами, рейтингами, версіями і т.д.) клієнтської частини. Тож розглянемо все в деталях.

Налаштування серверної частини

Як описано вище, за серверну частину відповідає модуль appServer, з допомогою якого можна через UI налаштувати apps-и. Він створює словник таксономії Server Type, а також два типи контенту - App Release та App. Нижче ми розповімо, для чого він призначений.

Після того як сервер в словнику таксономії Server Type встановлено, можна створювати термін, який і стане певним сервером, що ми його будемо вказувати на клієнтській стороні.

Сам же app формується з допомогою ноди типу App Release, його налаштування виражається в заповненні полів Name (required), Changelog, Logo, Screenshot, Manifest, Server type. У той час як із полями Name (required), Changelog, Logo, Screenshot все зрозуміло і вони промовляють самі за себе, найважливіші дії відбуваються в Manifest-і. Аби створити його, рекомендуємо ознайомитись із OAS (Open App Standarts).

Спершу є необхідним вникнути в систему створення apps-ів: нам потрібно вказати не лише модулі, які варто завантажити й встановити (в маніфесті це буде Dependencies), а й вказати, також, модуль (в маніфесті він буде описаний як downloadable і machine_name), котрий в своєму .info файлі міститиме список dependencies[] всіх Dependencies, що вказані в маніфесті. Насправді цей модуль - єдиний що увімкнеться при інсталяції app-а на клієнтському сайті, проте, оскільки в ньому містяться залежності інших модулів, то автоматично включаться й ці інші модулі.

Разберемо маніфест на прикладі:

name = Test content
description = Creates test content
machine_name = app_test_content
version = 1.0
downloadable = app_test_content 1.0
author = internetdevels
author_url = http://www.internetdevels.com
dependencies[test_content] = test_content 7.0
downloadables[test_content 7.0] = http://example.com/commercebox_test_content.tar.gz
downloadables[app_test_content 1.0] = http://example.com/drupal_app/app_test_content.tar.gz
libraries[test_libery] = test_libery 7.0
downloadables[app_test_content 1.0] = http://example.com/drupal_app/app_test_content.tar.gz  

де:

name: назва вашого app-а;
description: опис app-а;
machine_name: машинне ім’я нашого кастомного модуля (downloadable). За цім іменем буде виконано пошук папки з модулем, а також .module файл;
version: номер версії додатку, який буде відображатись в консолі додатку та на сторінці “Детально”;
downloadable: ключ в масиві модулів, відповідає за те, щоб було завантажено правильний модуль, який описаний в machine_name;
author: ім’я автора app-а;
author_url: посилання на сторінку автора;
dependencies[key]: масив даних по завантажених модулях, key — машинне ім’я модуля, значення - ключ масиву downloadable;
libraries[key]: масив даних по скачуваних бібліотеках, key — назва бібліотеки, значення - ключ масива downloadable;
downloadables[key]: масив завантажених елементів, key - ключ вказаний в dependencies, libraries, downloadable, значення - посилання на завантажений архів.

Варто завважити, що у випадку із версією модуля 7.x-1.0-beta7, якщо в маніфесті вказати dependencies[test_content] = test_content 7.0 і при цьому не поставити пробіл між назвою та версією, то це дасть помилку і ви отримаєте коментар про неможливість знайти такий модуль, у той час як із пробілом все працює відмінно.

Отже, із налаштуванням сервера ми закінчили. Проте, вірогідно, ви помітили, що присутній ще один створений модулем тип контенту - App - котрий відповідає за банер, в якому буде виведено рекомендований апп. Окремо треба виділити в ньому поле Machine Name. В ньому зазначається машинне ім’я, яке ми вказували в маніфесті machine_name, ну а в полі releases належить вказати назву ноди, створеної в App Release. Після цього в терміні таксономії з’явиться (в полі Featured App) створений нами app і його можна буде вказати як рекомендований.

Ось і створено сам сервер. Зайдіть на сторінку /app/query/%tid, де %tid - це номер вашого терміна таксономії. Якщо ви все зробили правильно, то маєте бачити сторінку з json масивом вашого app-а і наразі можна приступати до налаштування клієнтської частини, яка його обробляє.

Налаштування Клієнтської частини

Налаштування клієнтської частини зводиться до написання hook_apps_servers_info:

function test_apps_servers_info() {
  $info =  drupal_parse_info_file(drupal_get_path('module', 'test') . '/test.info');
  return array(
    'first' => array(
      'title' => 'Test app',
      'description' => 'Let’s test app',
      'manifest' => 'http://example.com/app/query/3', // ссылка на ранее созданый вами сервер.
    ),
  );
}
Зараз, перейшовши на сторінку /admin/apps, ви повинні побачити доступні apps-и, для чого може знадобитись почистити кеш. Використовуйте і насолоджуйтесь.
Наявний механізм було реалізовано на базі збірки для інтернет магазинів CommerceBox. Всі, кому цікаво побачити apps-и із середини, можуть безперешкодно скачати та встановити їх, і вживу побачити, як все працює.
Голосів: 1 Рейтинг: 5

Також по темі

1

В даній статті мова піде про можливість встановлення ядра Drupal 8 як сабмодуля. Ми не розважатимемо за саме поняття сабмодулів, ні за їх недоліки чи переваги, а лише зобразимо в деталях, спосіб у...

2

Вигляд форми авторизації/реєстрації тепер можна змінити через інтерфейс адміністратора за допомогою нашого модуля Customize login form.

3

Завдання імпорту контента часто буває нетривіальним. Написання імпорту "з нуля" для кожного випадку - варіант ...

4

В даній статті описано процес розгортання CMS Drupal із використанням Oracle DB на Debian сервері.

5

Facebook є однією з найпопулярніших соціальних мереж в світі. На сьогодні цей сайт налічує більше 1...

Subscribe to our blog updates