Нюансы переработки модуля в соответствующий плагин для 0.4 на примере модуля Круг друзей


Собрался с силами и попробовал превратить модуль в плагин :)
Решил начать с самого простого — модуля Круг друзей.
Получившийся плагин iFace для 0.4 можно скачать здесь (как и модуль распространяется бесплатно при условии сохранения копирайтов).
Расскажу с какими нюансами столкнулся.
При переходе на плагин ориентировался на статью Использование плагинов в v.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 комментариев

avatar
Честно говоря — чувства двойственные.
А можно в этом месте подробнее? «Монстрообразный» конфиг — это понятно, но напрямую к разработке плагина не относится. Меня еще немного раздражает, что имена классов и их вызовов стали длиннее, но это не смертельно. А что еще?
avatar
+1 за удлинение имён :)))
просто возникло чувство какой-то лишней усложнённости %)
сам пытаюсь разобраться — почему? :)
avatar
при активации пишет «Ошибка: Файл плагина не найден»
avatar
плагин тестировался только локально — пока нет боевых проектов на 0.4 :(
на денвере всё работает :/
скорее всего, проблема в названии файлов.
avatar
аналогично при активации Ошибка: Файл плагина не найден
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.