LiveStreet Mod Installer
2
Приветствую. LS Mod Installer, как многие уже могли догадаться, служит для установки (а в будущем и удалении) модификаций, хаков и модулей для LiveStreet в полуавтоматическом режиме (всё же придется кликнуть на кнопочку). Я считаю, что данный модуль будет очень полезен в плане популяризации проекта LiveStreet ну и конечно же для повышения КПД даже тех, кто особо брезгует подобными «автоматами» (проходили это уже). В первую очередь модуль создан для сокращения времени танцев с бубном, подобным (на модификацию придется убить от получаса времени, что не есть хорошо), тут же предлагается альтернатива за < 1 мин.
На данный момент реализован рабочий минимум, а именно поиск строк в файлах на сервере, замена, либо добавление необходимых строк в полуавтоматическом режиме.
Для описания действий модифицирования служит валидный файл XML с командами.
Модуль бесплатен и защищен открытой лицензией LGPL.
Пока единственную проблему я вижу лишь в написании сторонними разрабротчиками файлов-установщиков для данного движка, хотя для начала я лично буду делать инсталляторы для добавляемых модификаций. А дальше будет видно. Планирую создать некую базу модификаций, доступную из админки вашего сайта и установки их в один клик.
Данная версия предназначена только для тестирования и общего обзора! Известны не критические ошибки. Пока не рекомендуется использовать его на рабочих проектах! Поэтому пока не выкладываю в разделе модулей.
Итак, если же вам понравится эта идея, то в будущем планируется реализовать:
— Возможность отката/удаления любой модификации.
— Создание/копирование/удаление файлов на сервере.
— Поддержка *.tar.gz пакетов с графикой и большим количеством файлов.
— Поддержка SQL запросов.
— Поддержка подгрузки отдельных массивных SQL файлов (возможно).
— Самостоятельный сервис для установки и полуавтоматического обновления модификаций в один клик, доступный прямо с вашего сайта.
— Проверка модификаций на соответствие с неким сертифицированием через собственный сервис и оповещение при установке.
— Улучшение работы парсера и обработки ошибок.
— Проверка на соответствие версии LiveStreet.
— Описание и reaadme файл от разработчика для уведомления пользователя.
А теперь всё зависит от вас и ваших отзывов.
Установка:
— Скопируйте все файлы из архива.
Всё :)
Далее идём на _http://ваш_сайт/mod/install
Ниже информация для разработчиков.
Общий шаблон XML файла модификации:
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">
<modification>
<id>ls_mod_installer</id>
<name>LiveStreet Mod Installer</name>
<version>0.1.90611</version>
<lsversion>0.3.1</lsversion>
...
</modification>Спецификация XML документа
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">Тег, указывающий, что ниже перечислены рабочие команды для модифицирования.
<modification></modification>Системное ID модификации (для учёта и контроля)
<id></id>Название модификации
<name></name>Версия модификации
<version></version>Поддерживаемая версия LiveStreet
<lsversion></lsversion>Далее существующие на данный момент команды.
Объявление файла, с которым будет работать парсер
<file name="editit.php"></file>Объявление о начале конкретного изменения файла.
<operation></operation>Поиск определённой строки в файле, указанном в дерективе file выше. Поддерживает табуляцию и переносы строк.
<search position="..."><![CDATA[...]]></search>Значения параметра position
replace — замена куска кода дерективы search на значение тега add (ниже)
before — запись перед искомой строкой дерективы search значения дерективы add
after — запись после искомой строки дерективы search значения дерективы add
Заменяемый/добавляемый код при дерективе operation. работает соместно с тегом search. Поддерживает табуляцию и переносы строк.
<add><![CDATA[...]]></add>Рабочий пример модифицирования двух файлов тремя командами:
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">
<modification>
<id>invite_list</id>
<name>Хак «Invite List»</name>
<version>1.0</version>
<lsversion>0.3.1</lsversion>
<file name="test.php">
<operation>
<search position="replace"><![CDATA[<?php Search me! ?>]]></search>
<add><![CDATA[<?php
//replace this string!
// or kill it
?>]]></add>
</operation>
</file>
<file name="test2.php">
<operation>
<search position="before"><![CDATA[php Search me2!!!]]></search>
<add><![CDATA[<?php//add this string before?>]]></add>
</operation>
<operation>
<search position="after"><![CDATA[php Search me3!!!]]></search>
<add><![CDATA[//add this string after this!]]></add>
</operation>
</file>
</modification>XML синтаксис не будет меняться от версии к версии.
Ну и чтобы не быть совсем многословным, сделал полностью .
Спасибо DPX-Infinity за помощь в реализации.
ps. пока не могу перенести в соответствующий блог. Как только, так сразу.
UPD1: Забыл добавить комментарии основного файла парсера parseexecution.php Обновил.
UPD2: Обновление архива с модулем и способ установки.
- +6
- 15 июня 2009, 13:07
- MaxSvargal
комментарий был удален
Извиняюсь. Отпишите мне в личку почему был удален мой комментарий. Спасибо.

- MaxSvargal
- 15 июня 2009, 14:12
- ↓
отпишу здесь
как уже неоднократно писал — я буду удалять первые комменты от авторов топика. Если нужно, что то дополнить — можно отредактировать топик. Оставлять коммент для поднятия топика в прямой эфире не хорошо. И еще, стал минусовать все такие топики не зависимо от их содержания. Надо же как то с этим бороться? )
как уже неоднократно писал — я буду удалять первые комменты от авторов топика. Если нужно, что то дополнить — можно отредактировать топик. Оставлять коммент для поднятия топика в прямой эфире не хорошо. И еще, стал минусовать все такие топики не зависимо от их содержания. Надо же как то с этим бороться? )
Ну как. Я отвечаю на комментарий — логично, что обращаюсь к человеку, написавшему комментарий? ;)
Просто самого залюбили случаи, когда кто-то написал топик (чаще всего, с вопросом или просьбой о помощи) и тут же сам на него ответил. Лезешь под кат, глянуть, что ему ответили (и, может, самому ответ узнать интересно), а видишь малозначащий комментарий в стиле «и ещё, а то лень было топик редактировать» или даже «кто-нибудь, помогите, хелп».
Просто самого залюбили случаи, когда кто-то написал топик (чаще всего, с вопросом или просьбой о помощи) и тут же сам на него ответил. Лезешь под кат, глянуть, что ему ответили (и, может, самому ответ узнать интересно), а видишь малозначащий комментарий в стиле «и ещё, а то лень было топик редактировать» или даже «кто-нибудь, помогите, хелп».
Тут просто суть была в том, что в пост этого ненужно было писать… ну да ладно…

- MaxSvargal
- 15 июня 2009, 23:52
- ↑
- ↓
О! Ну наконец-то!
И сразу одно «но» — а нафига config/config.route.php трогать, если с таким же успехом можно просто положить свой config.route.php с нужными строками в config/modules/имя_модуля/?
И еще — как бы в XML предусмотреть модификацию файлов папки текущего шаблона? Явное название папки тут не катит — на разных сайтах она может быть своя.
И сразу одно «но» — а нафига config/config.route.php трогать, если с таким же успехом можно просто положить свой config.route.php с нужными строками в config/modules/имя_модуля/?
И еще — как бы в XML предусмотреть модификацию файлов папки текущего шаблона? Явное название папки тут не катит — на разных сайтах она может быть своя.
Я ещё капаю движок и не заметил про отдельные роуты для модулей, спасибо, учту на будущее.
Я уже писал что это презентация и сделано «чтоб работало» ну и основной функционал. В будущем учту про шаблон (хотя я вспоминал об этом, но не стал особо заморачиваться). Я думаю в XML будет что-то типа
Я уже писал что это презентация и сделано «чтоб работало» ну и основной функционал. В будущем учту про шаблон (хотя я вспоминал об этом, но не стал особо заморачиваться). Я думаю в XML будет что-то типа
<file name="templates/skin/default/header.tlp">, либо массово копировать для каждого шаблона: <file name="templates/skin/all/header.tlp"> Над этим я ещё подумаю.

- MaxSvargal
- 15 июня 2009, 14:40
- ↑
- ↓
Собственно, я в своем инсталляторе тоже использую имя темы default, которое в процессе работы заменяется на имя текущего скина
Я заметил) Кстати изначально хотел интегрировать модуль в твою панель, а потом передумал) лучше когда всё независимо работает…

- MaxSvargal
- 15 июня 2009, 15:30
- ↑
- ↓
Я тоже думаю, что пока лучше так. А «интеграцию» можно на уровне меню сделать. Т.е. если Админпанель определяет, что установлен твой Мод, то в меню доп. пункты появляются. С одной стороны — работают модули независимо, с другой — инструментарий админа кучкуется в одном месте.
Обновил config.route.php, засунул его отдельно для модуля, исправил описание установки.
avadim +1
avadim +1

- MaxSvargal
- 15 июня 2009, 14:54
- ↑
- ↓
Почему же? Гемморойное и трудное для меня — да)) А вот на практике — создателю модификации необходимо написать достаточно простые команды в XML, а пользователю просто подцепить этот файлик и установить, так что я готов пожертвовать своим геммороем))

- MaxSvargal
- 15 июня 2009, 14:53
- ↑
- ↓
Комментарии (18)
RSS свернуть / развернуть