Руководство по созданию плагина для v.0.4 на примере "Лента друзей"
91Предисловие
Что такое плагины — .
По мотивам , выполняю обещание — привожу руководство как сделать в виде плагина. Всех тонкостей в одной заметке не расскажешь, но основное постараюсь изложить.
Примечание. Долго не публиковал этот материал, держал в черновиках — на случай «мало-ли-что-измениться». Но думаю, кардинальных изменений в механизме плагинов в ближайшем релизе уже не будет.
Пошаговая схема:
Читать дальше
Использование плагинов в v.0.4
58
Безболезненное расширение функционала — достаточно проблематичный вопрос (под «безболезненностью» я понимаю весь спектр удобства для пользователей движка).
Я думаю, вы еще не забыли, что для добавления новых возможностей в версиях до 0.3.1 включительно используются Хаки и Модули. При этом установка любого стороннего творения дело достаточно хитрое и небезопасное, часто требующее ориентирования в архитектуре и особенностях движка. Для преодоления этих проблем в ядро v.0.4 была введена система плагинов:

К чему мы стремились создавая систему плагинов?
а) расширения функционала (плагины) можно просто установить и также просто убрать (а вдруг не понравилось), сложность этого процесса не зависит от количества расширений, разветвленности структуры их каталогов и т.д.;
б) установка внешних расширений (плагинов) не усложняет обновление основного ядра;
Для тех, кого заинтересовали подробности
Я думаю, вы еще не забыли, что для добавления новых возможностей в версиях до 0.3.1 включительно используются Хаки и Модули. При этом установка любого стороннего творения дело достаточно хитрое и небезопасное, часто требующее ориентирования в архитектуре и особенностях движка. Для преодоления этих проблем в ядро v.0.4 была введена система плагинов:

К чему мы стремились создавая систему плагинов?
а) расширения функционала (плагины) можно просто установить и также просто убрать (а вдруг не понравилось), сложность этого процесса не зависит от количества расширений, разветвленности структуры их каталогов и т.д.;
б) установка внешних расширений (плагинов) не усложняет обновление основного ядра;
Для тех, кого заинтересовали подробности
Обработка изображений: crop, watermark, скругление углов
40
В новой версии livestreet намного улучшена работа с изображениями (и в плане качества, и в плане гибкости). Для обслуживания всевозможных операций с изображениями отведен специальный engine-модуль Image.
Коротко о том, что появилось нового:
1. Решена проблема с некрасивым ресайзом неквадратных аватарок (путем предварительного вырезания наибольшего возможного квадрата).
2. Устранены «почти» все проблемы с обработкой alpha и non-alpha прозрачности («почти»=«на столько на сколько это вообще возможно сделать с помощью PHP+GD2»). По крайней мере прозрачные png теперь можно использовать в аватарках спокойно.
3. Формирование HTML кода выводимого изображения централизировано в одной функции Image_BuildHTML(), которая запрашивает путь к изображению и дополнительные параметры (title,alt,align).
4. Watermark: возможность автоматически добавлять на загружаемые изображения надписи или изображения с достаточно гибкой конфигурацией (пример надписи см выше).
5. Закругление углов изображения.
О том, как пользоваться 4 и 5 поговорим подробнее.
Читать дальше
Новые возможности форматирования дат
34
В версии 0.4 значительно улучшены возможности по работе с датами. Ввиду большого числа писем по этому поводу, опишу здесь основные моменты и правила пользования новыми параметрами форматирования дат:0. Вступление.
За оформление даты в Smarty-шаблоне отвечает тот же, что и раньше, smarty-тег {date_format}. Тег требует только один обязательный параметр 'date' — собственно дата. Простейший вариант вывода:
{date_format date=$oTopic->getDateAdd()}в результате получаем самый обычный:
10 декабря 2009, 00:35
Информация для разработчиков: date_format работает теперь не через функцию в function.php, а через специально написанный для движка smarty-плагин.
Дополнительные параметры формата
Новые функции редактора текста и короткий FAQ
18
Начиная с 617 ревизии SVN стандартный редактор текста Livestreet обзавелся новыми функциями. Теперь есть возможность превратить выделенный текст в заголовок h4, h5 или h6, а также в один клик оформить нумерованный или маркированный список. Для полноценного использования этого функционала были исправлены старые баги парсера — добавление лишних отступов строк между пунктами списка и после заголовков (сделанные фиксы касаются external-библиотеки Jevix, а не только ядра).
Ввиду большого числа писем о некорректной работе этого редактора в версии 0.3.1 — под катом правила по корректному переносу.
Читать дальше
Новости разработки и жизни LS для пользователей Twitter
2
Аккаунт в Twitter я зарегистрировал давно (нужно было разобраться с ихним API), но активно пользовался начал буквально с прошлой недели. Стараюсь отписывать ключевые моменты разработки на SVN. Здесь писать статьи времени не хватает, да и формат общения немного не тот. А вот 140 символов — то что нужно :) Поэтому кто интересуется последними нововведениями и вообще ходом разработки в режиме реального времени — можете следить за ними в ленте
Также предлагаю твитами высказывать идеи\размышления\мысли, коих обычно очень много (лично у меня) и нужно их быстро где-то фиксировать.
Почти все твиты про LS помечаю тегом #livestreet, но в результаты поиска по нему попадают буквально единицы. Не знаю точно почему. Но буду продолжать этот тег использовать — чтобы потом было легче находить сообщения «по теме».
P.S. Примечательно, что тег #livestreet уже был использован одним из пользователей твиттера до меня. А значит twitter`яне нас знают. Пусть узнаЮт еще лучше!
Новая система безопасности ядра
12
UPDATE. По результатам обсуждений в систему защиты внесены изменения — откорректировал описание в топике. Особенно большое спасибо , , за активное обсуждение проблемы.
Раньше в движке для обеспечения защиты от несанкционированных действий использовалась проверка переменной $_SERVER['HTTP_REFERER']. Но иногда это создавало дополнительные проблемы, поэтому было решено ввести новый механизм защиты (готов к использованию начиная с ревизии #551).
Защита данных, полученных через GET-запрос.
Проблема: Некоторые действия выполняются, после перехода пользователя по ссылке, например, удаление топиков. При этом, естественно, проверяется авторизация пользователя. Но, злоумышленник, может подгрузить вам эту страницу на другом сайте в невидимом фрейме и вы удалите топик сами того, не подозревая.
Основная идея решения такова:
Читать дальше
Раньше в движке для обеспечения защиты от несанкционированных действий использовалась проверка переменной $_SERVER['HTTP_REFERER']. Но иногда это создавало дополнительные проблемы, поэтому было решено ввести новый механизм защиты (готов к использованию начиная с ревизии #551).
Защита данных, полученных через GET-запрос.
Проблема: Некоторые действия выполняются, после перехода пользователя по ссылке, например, удаление топиков. При этом, естественно, проверяется авторизация пользователя. Но, злоумышленник, может подгрузить вам эту страницу на другом сайте в невидимом фрейме и вы удалите топик сами того, не подозревая.
Основная идея решения такова:
Читать дальше
Эволюция Viewer: управление блоками, слияние и минимизация JS/CSS
23
На SVN работа над LS0.4 кипит, начну понемногу описывать нововведения. Итак, сегодня у нас на очереди модуль Viewer, который постепенно «обрастает» очень вкусными полезностями. В этот модуль добавлено:
1. Управление выводимыми на страницу js,css файлами.
2. Управление выводимыми на страницу блоками через конфигурацию.
Подробнее под катом.
Читать дальше
1. Управление выводимыми на страницу js,css файлами.
2. Управление выводимыми на страницу блоками через конфигурацию.
Подробнее под катом.
Читать дальше
Новая внутренняя почта LiveStreet
17
На SVN закончена работа над новым функционалом внутренней почты. Коротко об основных нововведениях:

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

Читать дальше
Модуль Loader - управление js и css файлами
17
Суть проблемы:
В шаблоне new на каждой странице выводиться 18 js файлов и 6 css. Достаточно много, особенно если учесть, что на многих страницах не нужна и половина из них. Хотелось бы избавиться от ненужного баласта. Но… Файлы жестко прописаны в template, поэтому стандартными средствами с этим трудно бороться.
Решение проблемы:
Выкладываю в свободный доступ модуль «Loader», который использую для своего проекта.
Модуль Loader предоставляет вам возможность просто управлять совокупностью подключаемых к странице css и js файлов, используя шаблоны адресов или непосредственно из кода Action`a.
(в данный момент на модерации).
Используя модуль вы можете:
1) задать набор файлов, выводимых по умолчанию. Стартовый default-набор состоит из файлов подключаемых в скине new версии livestreet 0.3.1
2) создавать правила включения и\или исключения некоторых (или всех) файлов для путей любого вида.
3) подключать или удалять файлы прямо из кода Action`a
О том, как установить модуль — в readme.txt файле (это совсем не сложно). Как пользоваться — под катом.
Читать дальше
В шаблоне new на каждой странице выводиться 18 js файлов и 6 css. Достаточно много, особенно если учесть, что на многих страницах не нужна и половина из них. Хотелось бы избавиться от ненужного баласта. Но… Файлы жестко прописаны в template, поэтому стандартными средствами с этим трудно бороться.
Решение проблемы:
Выкладываю в свободный доступ модуль «Loader», который использую для своего проекта.
Модуль Loader предоставляет вам возможность просто управлять совокупностью подключаемых к странице css и js файлов, используя шаблоны адресов или непосредственно из кода Action`a.
Используя модуль вы можете:
1) задать набор файлов, выводимых по умолчанию. Стартовый default-набор состоит из файлов подключаемых в скине new версии livestreet 0.3.1
2) создавать правила включения и\или исключения некоторых (или всех) файлов для путей любого вида.
3) подключать или удалять файлы прямо из кода Action`a
О том, как установить модуль — в readme.txt файле (это совсем не сложно). Как пользоваться — под катом.
Читать дальше