+0.95
Рейтинг
1.34
Сила

Интеграция с WIKI

Доступен плагин для интеграции функционала ВИКИ себе на сайт — «DokuWiki integration».
В качестве движка WIKI используется DokuWIKI, этот двиг достаточно прост и не требует базу данных для своей работы. В комплекте идет плагин и сам дистрибутив DokuWIKI, доработанный для интеграции. В конфиге плагина необходимо прописать каталог, в котором будет находиться ВИКИ и рейтинг, начиная с которого пользователи смогут редактировать странички.

substr и Юникод

Всем привет. Заметил что substr не стабильно работает, допустим в index.php:

Найдите:
$oRouter->Exec();

Ниже вставьте:
echo substr('Привет мир', 1);


Не знаю как у Вас, а у меня выводит:
�ривет мир

Зато:
echo substr('Привет мир', 2);


Стабильно обрезает 1 символ, вроде бы всё просто — substr обрезает 1 байт, ладно, заменим на:
echo mb_substr('Привет мир', 1);

Теперь по идеи должно обрезать 2 байта, то есть 1 символ, но нет! Вывод прежний.

В чём может быть проблема?

Livestreet: дао разработчика - 2

Первая часть цикла

Дао — это действие, процесс, поток. Чем чаще вы смотрите на код других плагинов, тем больше вы понимаете, как делать свой.
Накачайте плагинов под 0.4.2 и расматривайте, что у них внутри. Без этого вы не сможете начать писать свои плагины.

Я сделал типовой шаблон, из которого удобно делать свои собственные плагины. Располагается он тут:
http://github.com/medar/livestreetplugin
Чтобы скачать его, надо нажать в правом верхнем углу кнопку «Download Source». Желающие могут форкать и вносить изменения.

В файле находится «рыба» плагина с названием abcplugin.
Читать дальше →

Livestreet: дао разработчика - 1

Я сейчас работаю над одним проектов, в качестве платформы для которого я выбрал Livestreet. Так как с инфой для программистов у этого движка туго, я буду выкладывать те вещи, который я узнал о движке здесь. Надеюсь, это поможет остальным начинающим программистам на LS.

Я работаю с движком всего несколько дней, поэтому что-то в описании может быть неточно или неполно. Не стесняйтесь поправлять.

Цель этого цикла — дать поверхностный, но глобальный взгляд на движок, чтобы снизить порог вхождений. Плюс собрать все актуальные (0.4.1 и выше) ссылки, относящиеся к разработке в одно место.

Итак.

Для начала стоит пробежаться по существующей документации для разработчика (http://trac.lsdev.ru/livestreet/wiki/DeveloperDoc), чтобы понимать термины.
Откройте в IDE движок, пробежитесь по папкам движка, по плагину page, который идет в комплекте с движком.

В движке Livestreet:
Экшены, содержащие Ивенты (action, events) — это, кто знаком с MVC — контроллеры.
Модули (module) — куски кода, которые осуществляют некий функционал (например, функционирование блогов, топиков, комментов). В процессе своей работы они обращаются к Мапперам (mapper) для того, чтобы пообщаться с базой данных. Все sql-запросы пишутся именно в мапперах. Мапперы в свою очередь используют Сущности (entity), которые переводят массивы, отданные mysql в объекты, с которыми потом работает движок.

Способ модификации кода Livestreet два.

1. Через переопределение существующих функций. Меняется целиком существующая функция в модуле/маппере/сущности, или добавляется своя. Подробно: livestreet.ru/blog/dev_documentation/4499.html

2. Через хуки. При этом вставляется код в указанное место движка.
Хуки можно вставить в места, определенные конструкцией $this->HookRun(...); в движке, а также на начало и конец любого модуля, зарегистрированного в системе (не важно, системный он, или установлен каким-то плагином). Подробно про хуки в моделях: livestreet.ru/blog/dev_documentation/3991.html.

Переопределения эти делаются в плагинах. Подробнее о плагинах и их устройстве: livestreet.ru/blog/dev_documentation/3531.html

Как делать эти самые плагины — подробно поговорим во второй части.

Вторая часть

Улучшенная информация о топике

Задумавшись над тем как реализовать вывод «Количество пользователей, добавивших пост в избранное», пришёл к мысли, что было бы хорошо иметь настраиваемый плагин со следующими возможностями:

  1. Отображения количества просмотров топика.
  2. Всплывающая подсказка о голосах за топик вида «всего 14 голосов: ↑9 и ↓5».
  3. Кнопка добавления топика в избранное с указанием количества пользователей, добавивших пост в избранное.
  4. Далее настраиваемый список кнопок соц.закладок (кто-то захочет только твиттер, а кто-то — весь арсенал вывести).

Интересует, реализовывал ли или есть в планах у кого реализовать такой плагин? Может есть ещё какие-нибудь предложения по улучшению блока информации о топике?

Показать пользователю читал ли он топик (решено для 0.4, не работает в 0.3)

Хочу показать пользователю читал ли он топик. В LS для этого все есть — поле в базе и функция GetTopicRead в Topic.Mapper, однако когда я вставляю в topic.tpl {$oTopic->getTopicRead()} то выскакивает ошибка «Не найден класс модуля — getTopicRead» Понимаю что надо что-то дописать в экшн, но не понимаю что. Помогите советом.

Update: проверено — в 0.4 {$oTopic->getDateRead()} работает, в 0.3.1 выдает ошибку:
Fatal error: Uncaught exception 'Exception' with message 'Не найден класс модуля — getDateRead' in P:\home\test2.ru\www\classes\engine\Engine.class.php:95 Stack trace: #0 P:\home\test2.ru\www\classes\engine\Engine.class.php(183): Engine->LoadModule('getDateRead', true) #1 P:\home\test2.ru\www\classes\engine\Entity.class.php(61): Engine->_CallModule('getDateRead', Array) #2 [internal function]: Entity->__call('getDateRead', Array) #3 P:\home\test2.ru\www\templates\compiled\%%27^27A^27A2FB40%%topic.tpl.php(128): TopicEntity_Topic->getDateRead(1) #4 P:\home\test2.ru\www\classes\lib\external\Smarty-2.6.19\libs\Smarty.class.php(1868): include('P:\home\test2.r...') #5 P:\home\test2.ru\www\templates\compiled\%%DE^DE2^DE2B923A%%topic.tpl.php(17): Smarty->_smarty_include(Array) #6 P:\home\test2.ru\www\classes\lib\external\Smarty-2.6.19\libs\Smarty.class.php(1255): include('P:\home\test2.r...') #7 P:\home\test2.ru\www\classes\lib\external\Smarty-2.6.19\libs\Smarty.class.php(1105): Smarty->fetch('actions/ActionB… in P:\home\test2.ru\www\classes\engine\Engine.class.php on line 95

Релиз LiveStreet 0.4.2

Сегодня LiveStreet обновился до версии 0.4.2. Основная цель релиза — закрыть критические баги, которые удалось выявить.

Список основных изменений:
  • Исправлены баги в механизме плагинов
  • Исправлены баги шаблона developer
  • Обновлен до последней версии плагин Page
  • Исправлен баг в работе с сессиями
  • Доработан роутинг, теперь допустимы GET параметры, например, на странице топика
  • Доработан парсер, теперь он корректно обрабатывает вставку видео
  • Исправлен баг при удалении топика, не удалялись теги
  • По просьбам разработчиков плагинов добавлены необходимые хуки в шаблон
Полный список изменений доступен в SVN проекта — http://trac.lsdev.ru/livestreet/changeset?new=965%40trunk&old=939%40trunk

Это обновление ОБЯЗАТЕЛЬНО к установке. Если по какой-то причине не хотите обновляться полностью, то обязательно обновите хотя бы каталог /engine/. Так же если вы не внесете изменений(обновление, в основной добавлены хуки) в шаблон, то не будет гарантированна работа плагинов для версии 0.4.2

Все плагины от LiveStreet 0.4.1 без проблем будут работать на 0.4.2, никаких изменений в них не требуется.

Составляем список самых нужных плагинов

Предлагаю составить список самых востребовательных плагинов для LiveStreet, которых еще нет. Это позволит более правильно оценить пользовательский спрос на плагины для разработчиков.
В комментариях оставляем название и краткое описание плагина. Никакого флуда, только плагин и описание. Если вы считаете какой то плагин полезным и нужным, просто голосуйте за комментарий.

Новые возможности по переопределению/наследованию классов LiveStreet

В LS появилась новая возможность для разработчиков плагинов — наследование классов. Идея была высказана еще avadim'ом здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование — не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.

Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве $aInherits:
<?php
class PluginTest extends Plugin {
    
    protected $aInherits=array(
       'entity'  =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
    );

    public function Activate() {        
        return true;
    }
    
    public function Init() {        
    }
}
?>

Читать дальше →

Интеграция LiveStreet со сторонними приложениями

Если кто-то ждет в этом топике готового рецепта — увы, его не будет. Но будет полезный инструментарий, который поможет эту самую интеграцию построить.

Иногда, при создании сайта на ЛС, возникает задача интеграции с какими-нибудь сторонними движками. Иногда к форумам каким-нибудь, иногда — иные скрипты. Например, Sypex Dumper.
Читать дальше →