Нюансы переработки модуля в соответствующий плагин для 0.4 на примере модуля Круг друзей
Собрался с силами и попробовал превратить модуль в плагин :)
Решил начать с самого простого — модуля
Получившийся плагин iFace для 0.4 можно скачать
Расскажу с какими нюансами столкнулся.
При переходе на плагин ориентировался на статью
Итак, по-порядку:
1. параметры плагина считываются не из txt-ка, а из xml-ки plugin.xml
вида
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<name>
<lang name="default">Livestreet Ideal Interface Plugin</lang>
</name>
<author>
<lang name="default">noonv</lang>
</author>
<homepage>http://idea2.ru</homepage>
<version>0.0.1</version>
<requires>
<livestreet>0.4.0</livestreet>
<plugins>
</plugins>
</requires>
<description>
<lang name="default">Ideal Interface - friend's whell.</lang>
<lang name="russian">Идеальный Интерфейс (круг друзей)</lang>
</description>
<delegate>
<module></module>
<action></action>
<template></template>
<entity></entity>
</delegate>
</plugin>
2. если плагин активировать и он заглючит (у меня было в самом начале превращения модуля в плагин, при неполном переименовании всех классов модуля) — то возможности достучаться до admin/plugins не будет — т.к. выдаётся ошибка :)
вариант устранения — удалить строчку с названием заглючившего плагина из файла
plugins.dat
3. ко всем классам плагина нужно прикручивать префикс
PluginИмяПлагина_ (в моём случае PluginIFace_)
т.о. вызовы методов модуля так же меняются.
4. экшн плагина нужно наследовать от ActionPlugin
5. для автокомплитера и похоже всех ajax-скриптов LS нужно добавлять секьюрный ключ
DIR_WEB_ROOT+'/include/ajax/userAutocompleter.php?security_ls_key='+LIVESTREET_SECURITY_KEY,
такой ключ нужно передавать и своим ajax-скриптам — иначе появляется
Hacking attemp!
т.о. в своём скрипте мне пришлось добавить security_ls_key:
DIR_WEB_ROOT+'/plugins/iface/include/ajax/iFaceFriends.php',
{security_ls_key: LIVESTREET_SECURITY_KEY, sLogin: sLogin, wheel: 'true', nojson: 'true' },
6. в шаблоне плагина пути до файлов прописываются
{cfg name='path.root.web'}/plugins/iface/templates/skin/new/actions/ActionIFace/js/
Разумеется приходится менять переменные в шаблоне:
$DIR_WEB_ROOT заменяем на {cfg name='path.root.web'}
$DIR_STATIC_SKIN заменяется на {cfg name='path.static.skin'}
7. в шапке ajax-а
нужно добавить два dirname :(((
$sDirRoot=dirname(dirname(dirname(dirname(dirname(__FILE__)))));
8. функция GetUsersFrend
переименована в
GetUsersFriend :)
9. В связи с переименованием всех классов не забываем про изменение создания меппера:
создание меппера
$this->oMapper=new Mapper_Iface($this->Database_GetConnect());
теперь соответственно заменятеся на
$this->oMapper=new PluginIFace_Mapper_IFace($this->Database_GetConnect());
PS
Для того чтобы круг отображался на странице профиля — нужно, как и в модуле, заменить templates/skin/new/actions/ActionProfile/whois.tpl на тот, что в архиве плагина — iface/templates/whois.tpl
Эпилог
Честно говоря — чувства двойственные.
Один вид конфига 0.4 чего стоит :) монстрообразный такой :)
5 комментариев
просто возникло чувство какой-то лишней усложнённости %)
сам пытаюсь разобраться — почему? :)
на денвере всё работает :/
скорее всего, проблема в названии файлов.