LiveStreet Mod Installer v0.3
Вот и новая версия подоспела.
Кто не в курсе, LiveStreet Mod Installer — это OpenSource система управления пакетами модификаций и модулей для LiveStreet CMS. Распространяется по стандартной общественной лицензии ограниченного применения GNU/LGPL.
Изменения в новой версии v0.3.90618
— Оптимизирован код.
— Новый дизайн.
— Обновлены и добавлены новые обработчики событий и ошибок, а так же новая система контроля модифицирования.
— Изменено отображение лога инсталляции и дизайн при установке.
— Система не даст установить модификацию, если указанная в инсталляторе версия не поддерживается версией установленного LiveStreet.
— Теперь вся служебная информация об установленных модифкациях хранится в базе (установка служебной таблицы БД проводится автоматически в фоновом режиме при попытке установить модификацию).
— Добавлен тег readme для уведомлений пользователя при установке. См. спецификацию.
— Добавлен тег author для регистрации автора модификации. Так же отображается при установке. См. спецификацию.
— Перевод XML парсера системы на нативный парсер PHP5 — SimpleXML.
— Файл модуля перемещен в директорию внешних библиотек.
— Система ведёт учёт установленных модификаций и не позволяет устанавливать модификацию с той же или более ранней версией.
— В разделе «Установленные пакеты» показывается листинг установленных модификаций.
Установка как всегда — скопировать все папки в корень.
Замечу пункт с «установка служебной таблицы БД проводится автоматически в фоновом режиме при попытке установить модификацию». Подобную систему я встречаю впервые и хвалюсь хвалюсь :)
Выкладываю новую версию, ибо не вижу смысла зажимать. Теперь это действительно полноценный инсталлятор, почти что заново переписанный. Но пока еще не реализовано удаление модификаций, это я обещаю сделать в следующей версии (скорее это будет чуть ли не единственное дополнение).
Ну и дополнение к спецификации.
<author></author>
Технический тег, указывающий на автора модификации. С данным тегом существует еще одна интересная вкусность, увидите сами.
<readme></readme>
Тег для показа сообщения, появляющееся при установке модификации.
Ну и по традиции. Модификация
Ну и напоследок поделюсь планами на будущее:
— Возможность удаления модификации;
— Поддержка пакетов *.zip и *.tar.gz для крупных модификаций в т.ч. с графикой (шаблоны?);
— Собственный сервис для онлайн установки модификаций из вашей админ-панели;
— Интеграция в модуль «Админпанель». Постараюсь договориться с автором;
— Локализация листинга установки;
— Автоматическая подставновка префикса в теге sql;
Ну и попрошу на этот раз поактивней поучаствовать в обсуждении проекта. Я уже вышел на релизную прямую :)
UPD1: Сделал инсталлятор для хака
UPD2: Сделал инсталлятор для хака
58 комментариев
зы. ещё раз напомню: не устанавливайте модификации на рабочие проекты, пока инсталляторы не обкатаны.
в порядке бреда — надо написать какое-нибудь десктоп приложение, которое позволяло бы писать «моды» не погружаясь в синтаксис хмл…
А кто делает XML? Правильно. Разработчики. Делаем выводы.
надо свой «хак» таки перезалить
А если еще пара-другая версий выйдет с добавлением новых тегов?
Нам, допустим, нужно вставить после второго тега, догда пишем нечто
Если массив данных очень большой, то там есть такие конструкции поблизости, которые не повторяются. Посмотрите как я делал модификации, вы зиметите, что я пишу не одну и часто даже не 3 строки в поиске.
ну и ещё добавлю: пока ни разу не встречался даже намёки с сложностями по данному поводу.
Это классно. А как быть тем, у кого префикс другой?
Но дальше пошли какие-то чудесатости.
Иду по адресу /mod/list/. И вдруг получаю ошибку:
SQL Error: Table 'avadim_db0.prefix_modifications' doesn't exist at U:\home\local\site.ru\comm\classes\modules\talk\mapper\Talk.mapper.class.php line 162
Array ( [code] => 1146 [message] => Table 'avadim_db0.prefix_modifications' doesn't exist [query] => SELECT COUNT(tc.talk_comment_id) as count_new FROM zls_talk_comment as tc, zls_talk_user as tu WHERE (tc.talk_comment_date>tu.date_last or tu.date_last IS NULL) AND tu.user_id = 1 AND tu.talk_id=tc.talk_id [context] => U:\home\local\site.ru\comm\classes\modules\talk\mapper\Talk.mapper.class.php line 162 )
Если был пьян, то решил бы, что белочка пришла. С чего вдруг ссылка на скрипт Talk.mapper.class.php, который никакого отношения к моду не имеет? И какое отношение таблица prefix_modifications имеет к SQL-запросу, который в тексте ошибки указывается?
Толи у библиотеки БД крыша едет, то ли у системного загрузчика модулей. Ничо не пойму. Куда хоть копать-то?
зы. по поводу Talk.mapper.class.php -> движок основан на наследованности классов, тем самым существует «вложенность» классов. Дальше по логике…
у меня складывается впечатление, что ты вообще не в теме устройства ЛС и пытаешься писать для него
И я согласен с ort'ом, что проблема кроется в том, что поперек общей идеологии ЛС идешь. Дело-то не в том, что ошибка вылезает (это нормальный рабочий процесс), а в том, что при таком подходе резко усложняется локализация ошибки. Вот если взять этот конкретный пример: я же глянул, по логике идет проверка на наличие таблицы, если ее нет, то она создается, а потом уже идет селект. Но соврешенно неожиданно вылетает невообразимый баг, и смотришь на текст ошибки — крыша едет.
Хотя и без меня вы это знаете, безусловно)) Я признаю, что не до конца ещё изучил движок, но изучение в процессе. Я об этом упоминал ранее. А про «вообще не в теме устройства ЛС» — я лишь высказал возможную догадку и не претендую на истину в последней инстанции. Действительно, очень странный баг и пока со всеми своими извращениями на версии 0.4 я так и не сумел «реализовать» эту ошибку.
Надеюсь на понимание и взаимное уважение =\
зы. avadim, сможешь приблизительно повторить то что делал? Про шаблон, я так понимаю, ты перекопировал файлы из new в свой шаблон?
зыы. пойду ещё поковыряю.
1. Скопировал все файлы, как положено
2. Шаблоны для скина new скинул в папку с моим текущим скином
3. Запускаю Мод, кликаю по меню «Управление пакетами» — получаю описанную выше ошибку.
ЗЫ В версии 0.4 — то же самое
ЗЗЫ Возможно, это важно, ЛС у меня не в корне сайта лежит, а в папке, т.е. не сайт.ру, а сайт.ру/папка
Може потому, что я всё переписал уже?))
зы. а что не утвердил в модулях? Не, я понимаю что у одного проблема, но она не у всех))) Хотя тут риторики больше. Мне нужны тестеры вобщем :(
Как получить доступ к классу модуля в евенте экшена (по схеме евент вроде бы имеет доступ к модулям)?
$this->[имя_модуля]_[паблик_ф-ия_класса_модуля]();
зы. спать.