Новое в LiveStreet 1.0 для разработчиков

Для разработчиков плагинов и шаблонов в LiveStreet 1.0 есть некоторые изменения.
Постараюсь их все собрать в одном месте.
Изменений, на самом деле, не так много.

Список:
  1. Модуль GEO, теперь в своих плагинах с помощью него можно делать географические привязки различных объектов
  2. Модуль Subscribe, организация подписок пользователей на различные события и рассылка по ним. Например, через него реализован механизм подписки на комментарии к топикам
  3. js вынесены за пределы шаблона в библиотеки, теперь в шаблонах достаточно только переопределить необходимый функционал
  4. Механизм валидации данных, подробнее — livestreet.ru/blog/dev_documentation/10221.html
  5. Возможность в тулбар добавлять свои элементы через стандартных механизм блоков
  6. Консоль для автоматической генерации каркаса плагина
  7. Переопределять настройки редактора стало проще, теперь они находятся в ls.settings
  8. Класс Object переименован в LsObject, позволит избежать проблем с некоторыми IDE и подключить автоподстановку методов
  9. Доработан модуль Image, теперь для сохранения изображения на другой сервер, достаточно переопределить методы SaveFile() и RemoveFile()
  10. Каптча вынесена в блочный хук {hookb run=«popup_registration_captcha»}, что позволит ее переопределить
  11. Возможность делать всплывающие подсказки через poshytip или infobox.js (с погрузкой данных через ajax)
  12. Появился модуль Tools, сейчас в нем только один метод — формирование облака тегов
  13. Шаблоны блоков перенесены в отдельный каталог /blocks/
  14. При ручном определении сеттеров в сущностях теперь следует возвращать данные как return $this->_getDataOne('blog_id'); — это позволит избежать проблемы с Notice ошибками
  15. Прямой эфир теперь автоматически группирует вкладки, если их много, в выпадающий список
  16. Смена приоритетов при загрузке блоков — теперь блоки из конфига загружаются после блоков, объявленных в коде экшенов, соответственно блоки из конфига имеют более высокий приоритет. Это позволит применять правила к блокам после окончательного определения экшена/евента, которые можно переопределить в ходе выполнения логики экшена/хуков.
  17. Возможность делать именованные евенты и управлять блоками из конфига о их именам. Например для евента на основе регулярно выражения можно задать имя и его использовать в правилах блоков. Если имя не задать, то оно автоматически определится как имя метода евента.
  18. Теперь все текстовки плагинов помещаются в пространство 'plugin.name', например, Get_Lang('plugin.page.admin_title');


Если есть вопросы, то отвечу более подробно.

53 комментария

avatar
Есть ли намерение в будущем использовать ImageMagick для работы с картинками?
Пока что лайвстрит не переваривает ни анимацию, ни прозрачность — очень не хватает.
  • Lexx
  • +1
avatar
Есть ли намерение в будущем использовать ImageMagick для работы с картинками?
на откуп плагинам
avatar
js вынесены за пределы шаблона в библиотеки, теперь в шаблонах достаточно только переопределить необходимый функционал
переопределение функционала повлечёт за собой загрузку клиентом неиспользуемого кода?
avatar
переопределить можно файл js целиком, либо только метод или обойтись хуком — не загружать «старый» js можно только в первом варианте, что логически очевидно
avatar
спасибо
avatar
Доки, доки!
avatar
уже отвечал — будут
avatar
Безумно радуют нововведения, спасибо Максим за такой функционал в движке, очень давно ждал GEO и наконец то дождался..:)
Ещё я заметил что в js появились hook'и, это относится к пункту 3. или этого не было в Списке..?
avatar
про хуки в js будет отдельный пост
avatar
Как скоро стоит ждать версию доступную для скачивания обычным пользователям или стоит ждать релизной версии? Так же интересует ориентировочная дата релиза, хотя бы примерно ибо мне нудно решится на какую версию LS мне переносить проект. Заранее спасибо за ответ.

P.S. Хотелось бы уже на версию 1.0 сесть ибо там есть вкусные изменения по сравнению с версией 0.5.х.
avatar
присоединяюсь к комментарию
avatar
я не могу гарантировать никакие сроки, кроме как 2012 год
avatar
А версия 1.0 dev я как понял пока обычным смертным не доступна? Просто, я что-то не могу найти, где её скачать.
avatar
avatar
Смотрю авторизованный, нажимаю Download as zip и даёт скачать онли livestreet-livestreet-0.5.1-418-gd9878f3. Очень странно, но я там не вижу версии 1.0. Может направишь меня по правильному пути для скачки?
avatar
*не авторизованный
avatar
Опять же архив livestreet-livestreet-0.5.1-418-gd9878f3.zip, это и есть 1.0 dev?
avatar
Да, я сегодня ставил на локале, все прекрасно работает :)
avatar
А ты случаем не знаешь, шкурки/шаблоны от 0.5.1 подойдут для него?
avatar
не-а, сам жду стабильную версию, чтобы свой шаблон адаптировать. Пока даже не трогаю, мало ли что поменяется.
avatar
это и есть 1.0 качайте и ставьте, потом смотрите.
avatar
Может работу с файлами вынести в отдельный класс? Потому что функции сохранения и удаления файла могут использоваться не только для картинок, а если их использовать как сейчас что Image_SaveFile будет вводить в заблуждение. А может потом еще и другие появятся функции работы с файлами.
  • gran
  • +6
avatar
Еще не плохо бы сделать функцию которая пробегает по всем размещенным изображениям и создает из оригинала все размеры заданные в конфиге, а то в конфиге можно указать новые размеры изоображений, а как быть с существующими блогами и пользователями, заново загружать аватарки?
  • gran
  • +5
avatar
по пагинации писал тут
Кроме того в <head> я бы добавил еще вот такой код для поисковиков:


{if $aPaging and $aPaging.iCountPage>1}   
   
    {if $aPaging.iPrevPage}  
        <link rel="prev" href="{$aPaging.sBaseUrl}{if $aPaging.iPrevPage>1}/page{$aPaging.iPrevPage}{/if}/{$aPaging.sGetParams}" /> 
    {/if}
    
    {if $aPaging.iNextPage}
        <link rel="next" href="{$aPaging.sBaseUrl}/page{$aPaging.iNextPage}/{$aPaging.sGetParams}" />               
    {/if}
         
{/if}
avatar
По шаблонам было бы идеально, если бы все шаблоны плагинов в основной папке темплейтов хранились. Что-нибудь типа (templates/skin/developer/plugins/plugin-name/) а для дефолтной шкурки плагина допустим (/templates/skin/default/plugins/plugin-name). Может быть это и не совсем логично, но будет куда удобнее для фронтендеров, а то сейчас если к проекту идут 5-10 доп. плагинов, то как белка скачешь по всему дереву в поисках плагина, который по **бищь**му подменяет файлы основного шаблона.
avatar
В друпале что-то подобное реализовано, там можно шаблон модуля скопировать в общий шаблон, и он станет более приоритетным для шаблонизатора.
Думаю, не стоит создавать еще и папку plugins в шаблонах. Это не спасет от путаницы. Ведь по сути, что
/templates/skin/default/plugins/plugin-name/
, что
plugins/plugin-name/templates/skin/default/
Опять же придется копаться в папка каждого плагина.
Скорее всего, более полезно класть шаблон туда же, где лежит искомый, но с суффиксом плагина:
/templates/skin/default/topic.plugin-name.tpl
avatar
Добавился важный 18 пункт о текстовках плагинов.
  • ort
  • 0
avatar
Отлично, теперь все логичнее будет и случайно ничего не перекроется.
avatar
А есть ли какой-то способ обеспечить совместимость плагинов в этом плане? Хотя бы между 0.5.1 и 1.0? Без кучи условий проверки версии LS в куче мест?
avatar
такая опция была в 0.5.1 с расчетом ее дальнейшего удаления, собственно в 1.0 удалили
лучше всего сделать два архива с плагинов, а со временем поддержку для старых версий LS лучше прекращать, это будет дополнительным мотиватором для перехода на новую
avatar
:) Понятно…
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
avatar
Вопрос. jqModal будет существовать в 1.0? Просто столкнулся с проблемой, интересуюсь.
avatar
Код доступен на гитхабе, существенных изменений не предвидится
avatar
Есть ли возможность задавать кастомизированный дизайн для отдельных блогов? Например, менять фон страницы или выводить простенькое меню, создаваемое автором блога?
avatar
Будет ли функционал — категории блогов? Очень уж нужная вещь (
avatar
Обнаружил багу в новой версии с фотосетом. Описал багу здесь — new.livestreet.ru/blog/10657.html
комментарий был удален
комментарий был удален
avatar
При ручном определении сеттеров в сущностях теперь следует возвращать данные как return $this->_getDataOne('blog_id'); — это позволит избежать проблемы с Notice ошибками
А можно поподробнее об этом?
ведь по-старому тоже работает? это ведь просто обертка над старым вариантом?
avatar
работает, но может вызывать notice, если нет данных при их получении
avatar
Консоль для автоматической генерации каркаса плагина
Можно об этом по-подробнее. Где лежит файл генерации и как его запустить?
avatar
/var/www/soundche/engine/console readme
avatar
Как грустно иногда бывает когда плагины перестают работать после вот таких обнавлений.
avatar
Каптча вынесена в блочный хук {hookb run=«popup_registration_captcha»}, что позволит ее переопределить
А можно чуть подробнее про «блочный хук»? Как его юзать?
avatar
использование не отличается от хука темплейта, только префикс идет «template_block_» и в хук передается параметр «content» — содержание блока.
avatar
Ну вряд ли только в префиксе дело. У темплейта хук одиночный, а тут я вижу парный:
{hookb run=«popup_registration_captcha»}
...
{/hookb}
avatar
В доке пример есть (хотя ты уже наверное давно нашёл, но для полноты дискуссии не помешает):
// Регистрируем хуки (вешаем обработчики)
public function RegisterHook() {
	$this->AddHook('template_block_registration_captcha','MyCaptcha');
}
// обработчик хука
public function MyCaptcha($aParams) {
	$sContent=$aParams['content'];
	return $sContent.'My captcha!';
}
avatar
Да, нашел. Опять путаница с терминологией — «блочные хуки», как оказалось, не имеют ничего общего с «блоками» LS, и, в какой-то степени, похожи на «блоки» Smarty, только вывернутые на изнанку.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.