С 1.7 до 1.8
Содержание
Elgg 1.8 — это самый большой скачок вперёд в развитии Elgg с версии 1.0. В связи с этим, требуется больше работы для обновления ядра и плагинов, чем при предыдущих обновлениях. Было внесено небольшое количество изменений в API, и в соответствии с нашей стандартной практикой, методы, которые мы объявили устаревшими, были обновлены для работы с новым API. Самые большие изменения касаются стандартизации плагинов и системы представлений.
Обновление ядра
Удалите следующие каталоги ядра (на том же уровне, что и _graphics и engine):
_css
account
admin
dashboard
entities
friends
search
settings
simplecache
views
Предупреждение
Если вы не удалите эти каталоги перед обновлением, у вас возникнут проблемы!
Обновление плагинов
Используйте стандартизированную маршрутизацию с обработчиками страниц
Все: /page_handler/all
Содержимое пользователя: /page_handler/owner/:username
Содержимое друзей пользователя: /page_handler/friends/:username
Отдельная сущность: /page_handler/view/:guid/:title
Добавление: /page_handler/add/:container_guid
Редактирование: /page_handler/edit/:guid
Список группы: /page_handler/group/:guid/all
Включайте скрипты обработчиков страниц из обработчика страниц
Почти каждый обработчик страниц должен иметь скрипт обработчика. (Пример: bookmarks/all => mod/bookmarks/pages/bookmarks/all.php)
Вызывайте
set_input()для GUID сущностей в обработчике страниц и используйтеget_input()в скриптах обработчика страниц.Вызывайте
gatekeeper()иadmin_gatekeeper()в функции обработчика страниц, если требуется.URL группы должен использовать скрипт
pages/:handler/owner.php.Обработчики страниц не должны содержать HTML.
Обновите URL во всём плагине. (Не забудьте удалить
/pg/!)
Используйте стандартизированные обработчики страниц и скрипты
Храните скрипты обработчиков страниц в
mod/:plugin/pages/:page_handler/:page_name.phpИспользуйте макет страницы контента в скриптах обработчика страниц:
$content = elgg_view_layout('content', $options);
Скрипты обработчиков страниц не должны содержать HTML.
Вызывайте
elgg_push_breadcrumb()в скриптах обработчика страниц.Нет необходимости устанавливать владельца страницы, если URL в стандартизированном формате.
Для контента группы проверьте container_guid, используя elgg_get_page_owner_entity().
Представление object/:subtype
Убедитесь, что есть представления для
$vars['full_view'] == trueи$vars['full_view'] == false.$vars['full_view']заменило$vars['full'].Проверьте объект в
$vars['entity']. Используйтеelgg_instance_of(), чтобы убедиться, что это нужный тип сущности.Верните
trueдля прерывания представления, если сущность отсутствует или неверна.Используйте
elgg_view('object/elements/summary', array('entity' => $entity));иelgg_view_menu('entity', array('entity' => $entity));для помощи в форматировании. В этих представлениях следует использовать минимум разметки.
Обновите структуру действий
Используйте пространства имён для файлов действий и имён действий (пример:
mod/blog/actions/blog/save.php=>action/blog/save)Используйте следующие URL действий:
Добавление:
action/:plugin/saveРедактирование:
action/:plugin/saveУдаление:
action/:plugin/delete
Сделайте так, чтобы действие удаления принимало
action/:handler/delete?guid=:guid, чтобы меню метаданных по умолчанию имело правильный URL-адрес.
Обновление устаревших функций
Функции, объявленные устаревшими в версии 1.7, будут вызывать видимые ошибки в версии 1.8.
Вы также можете обновить функции, объявленные устаревшими в версии 1.8.
Многие функции регистрации просто получили префикс
elgg_для единообразия, и их обновление должно быть простым.Полный список см. в файле
/engine/lib/deprecated-1.8.php.Вы можете установить уровень отладки на “предупреждение”, чтобы получать визуальные напоминания об устаревших функциях.
Обновление представлений виджетов
Примеры см. в виджетах блога или файлов.
Обновление модуля профиля группы
Используйте плагины блога или файлов в качестве примеров. Это поможет сделать ваш плагин поддерживающим темы через новый CSS-фреймворк.
Обновление форм
Переместите тела форм в представление
forms/:actionдля использования новой функции Эванаelgg_view_form.Используйте представления ввода в телах форм вместо HTML. Это упрощает темизацию и обеспечивает совместимость в будущем.
Добавьте функцию, которая подготавливает форму (пример см. в
mod/file/lib/file.php)Сделайте ваши формы «липкими» (см. действие загрузки и функцию подготовки формы в плагине file).
API форм подробно рассматривается в Формы и действия.
Очистка CSS/HTML
Мы добавили множество CSS-шаблонов в базовый CSS-файл (модули, изображения, примитивы отступов). Мы рекомендуем использовать эти шаблоны и классы везде, где это возможно. Это позволит:
Снизить затраты на поддержку, так как вы сможете удалить большую часть пользовательского CSS.
Сделать ваш плагин более совместимым с темами сообщества.
Ищите шаблоны, которые можно перенести в ядро, если вам требуется значительный объём CSS.
Мы используем дефисы вместо подчёркиваний в классах/идентификаторах и рекомендуем делать то же самое для единообразия.
Если вам всё же нужен собственный CSS, используйте собственное пространство имён, а не elgg-.
Обновление manifest.xml
Используйте http://el.gg/manifest17to18 для автоматизации этого процесса.
Не используйте категорию «bundled» для своих плагинов. Она предназначена только для плагинов, распространяемых вместе с Elgg.
Обновление представлений настроек и пользовательских настроек
Представление для настроек теперь
plugins/:plugin/settings(ранееsettings/:plugin/edit).Представление для пользовательских настроек теперь
plugins/:plugin/usersettings(ранееusersettings/:plugin/edit).