С 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-файл (модули, изображения, примитивы отступов). Мы рекомендуем использовать эти шаблоны и классы везде, где это возможно. Это позволит:

  1. Снизить затраты на поддержку, так как вы сможете удалить большую часть пользовательского CSS.

  2. Сделать ваш плагин более совместимым с темами сообщества.

Ищите шаблоны, которые можно перенести в ядро, если вам требуется значительный объём CSS.

Мы используем дефисы вместо подчёркиваний в классах/идентификаторах и рекомендуем делать то же самое для единообразия.

Если вам всё же нужен собственный CSS, используйте собственное пространство имён, а не elgg-.

Обновление manifest.xml

  • Используйте http://el.gg/manifest17to18 для автоматизации этого процесса.

  • Не используйте категорию «bundled» для своих плагинов. Она предназначена только для плагинов, распространяемых вместе с Elgg.

Обновление представлений настроек и пользовательских настроек

  • Представление для настроек теперь plugins/:plugin/settings (ранее settings/:plugin/edit).

  • Представление для пользовательских настроек теперь plugins/:plugin/usersettings (ранее usersettings/:plugin/edit).