28 марта 2011 г.

ELGG: новые требования к структуре плагинов

Разработчики социального движка ELGG объявили новые требования к структуре плагинов. Это, по сути, и есть очередной шаг разработчиков этого проекта стандартизировать все, разрабатываемые сторонними лицами, плагины.

Итак, что же нам предлагают разработчики? Ниже приводятся требования к структуре файлов для для новой версии ELGG 1.8. Плагины, написанные для Elgg 1.7 и более ранних версий, разработчики настоятельно рекомендуют переработать под эту структуру.


Пример структуры

Приведем пример стандартной структуры плагина, назовем его example, для ELGG 1.8. Некоторые моменты будут описаны ниже.

Файлы плагина example должны размещаться в /mod/example/

actions/
    example/
        action.php
        other_action.php
classes/
    ExampleClass.php
graphics/
    example.png
js/
    example.js
languages/
    en.php
lib/
    example.php
pages/
    example/
        all.php
        owner.php
vendors/
    example_3rd_party_lib/
views/
    default/
        example/
            js.php
            css.php
        forms/
            example/
                action.php
                other_action.php
        object/
            example.php
            example/
                context1.php
                context2.php
start.php
manifest.xml
CHANGES.txt
COPYRIGHT.txt
INSTALL.txt
LICENSE.txt
README.txt

Минимальная структура

Файлы start.php и manifest.xml обязательно должны присутствовать в корне каждого плагина, для того чтобы ELGG смог его распознать. Поэтому минимальная структура плагина выглядит следующим образом:

mod/example/
    start.php
    manifest.xml

Структура каталога Actions/

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

Например, скрипт для обработки события my/example/action  будет находиться  в my_plugin/actions/my/example/action.php. Это делает очевидным, какой сценарий связан с определенным событием.

По аналогичному принципу, тело формы, которая представляет это событие, должно быть расположено в forms/my/example/action.php.

Такое размещения файлов не только позволяет облегчить работу с обработчиками событий, но также позволяет с легкостью использовать новую (по состоянию на Elgg 1,8) функцию elgg_view_form().


Текстовые файлы

В корне каталога плагина могут размещаться различные текстовые файлы *.TXT, которые в основном предоставляют дополнительную документацию к плагину:

README.txt
Должен предоставлять дополнительные сведения о плагине, может содержать информацию неопределенного характера

COPYRIGHT.txt
Должен содержать дополнительную информацию по использованию авторских прав при работе с плагином, кроме теч, что указаны в manifest.xml

LICENSE.txt
Должен содержать текст лицензии, по которой выпущен текущий плагин.

INSTALL.txt
Должен содержать дополнительные инструкции по установке плагина, например если плагин требует установки сторонних библиотек на машине, или требует приобретения ключевых API от третьего лица.

CHANGES.txt
Должен содержать список изменений плагина, список должен быть сгруппирован по номеру версии, начиная с последней версии.


Каталог Pages/

Структура каталога, в котором размещаются обработчики страниц, подобен структуре каталога для обработчиков событий. К примеру странице yoursite.com/my_handler/view/1234 соответствует обработчик в mod/my_plugin/pages/my_handler/view.php.

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


  1. Это необходимо для формирования логической связи между URL-адресами и скриптами, так чтобы человек, при рассмотрении кода, мог иметь представление как работает тот или иной обработчик, только взглянув на структуру файлов
  2.  Чтобы очистить корневую директорию, которая обычно быстро оказывается заваленной файлами дополнительных сценариев.

Каталог Classes/

Все дополнительные классы которые использует плагин должны размещаться в каталоге classes. Эта директория имеет особое значения для ELGGа. Файлы с классами, размещенные в данном каталоге загружаются автоматически, и не требуют дополнительного включения в код посредством оператора include.
  • Каждый файл должен содержать описание только одного класса.
  • Имя файла должно соответствовать названию класса (кроме суффикса .php).
Примечание: Файлы с расширением  ". class.php" НЕ будет распознан Elgg-ом


.Каталог Vendors/

Содержит библиотеки разработанные третьим лицом. К этому каталогу нет особых требований, которые бы подлежали дополнительной стандартизации.


Каталог Lib/

Содержит библиотеки с дополнительными функциями, которые используются в плагине. К этому каталогу также нет особых требований, которые бы подлежали дополнительной стандартизации.


Каталог View/

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


Использование Javascript/

Все javascript-библиотеки, которые используются в работе плагина, должны размещаться в каталоге plugin/js, и должны подключаться при помощи расширения отображения js/elgg. Больше информации о использовании Javascript читайте здесь.



Комментариев нет:

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