+0.13
Рейтинг
0.46
Сила

Дмитрий

LS 1.0.1 - доработка парсера тега video. Короткая ссылка + центровка.

Приветствую! Появилась необходимость внести пару фиксов. Я вообще впервой :)
цели:
1. Возможность вставки короткой ссылки на youtu.be
2. Вывод видео в блоге по центру.

Итак, решение простое.
Открываем файл: engine/modules/text/Text.class.php

Строка 123.
находим код:
/**
         * youtube.com
         */
$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $sText);

после этой строки добавляем обработку короткой ссылки на ютуб:
$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtu\.be\/([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $sText);


Для центровки вставленного видео есть два варианта. Первый центрует только видео, второй центрует все, включая текст до и/или после вставки видео.

Вариант 1: Центровка только видео.
Для этого необходимо в каждой строке обработки видео ссылок добавлять тег центровки.
Пример:
Код без центровки:
$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', '<iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', $sText);

Код с центровкой:
$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)(&.+)?<\/video>/Ui', '<div align="center"><iframe width="560" height="315" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>', $sText);

Перед
<iframe
добавили
<div align="center">
и в конце, после
</iframe>
добавили
</div>


Вариант 2: Центровка всего содержимого.
В конце функции VideoParser($sText), в которой собственно мы и добавляли строку, указанную выше, необходимо перед
return $sText;

вставить код:
$sText='<div align="center">'.$sText.'</div>';


В общем в конце получится примерно такой код:

$sText='<div align="center">'.$sText.'</div>';
        return $sText;
    }
    /**
     * Парсит текст, применя все парсеры
     *
     * @param string $sText Исходный текст
     * @return string
     */
    public function Parser($sText)   {

LiveStreet исполнилось 4 года



Сегодня исполняется ровно 4 года нашему LiveStreet. Моментом отсчета является вот этот самый первый топик — livestreet.ru/blog/dev_livestreet/1.html, который и представил LS публике.

Тогда это была полная внешняя копия хабра с минимальными возможностями, но постепенно LS вырос из просто копии и стал чем то больше. Все началось с моего обычного увлечения, было просто интересно что-то сделать. А потом уже переросло практически во вторую работу, которая не отпускаем меня вот уже четыре года :)
За это время в команде LS появились два новых человека, без которых сейчас трудно представить как бы развивался LS и развивался ли вообще. Это Алексей Попов aka LeX и Денис Шахов aka deniart . Если Денис уже достаточно давно в LS, то Алексей присоединился буквально недавно, чему я очень рад :)

Постепенно в экосистему LS стали вливаться сторонние разработчики, которые своими плагинами/шаблона помогают очень развиваться проекту. Ключевым фактором стало именно появление системы плагинов в версии 0.4 и наследования классов, которое предложил avadim . Это позволило очень гибко проводить кастомизацию движка не трогая базовый код. Надеюсь и дальше разработчики будут всех радовать новыми и интересными плагинами.

Но главное это пользователи и их интерес к движку и проекту в целом. Именно вы помогали нам все это время работать над проектом, развивать его. За эти четыре года были моменты, когда уже хотелось все бросить и заняться чем-то другим. Но ваша поддержка, лояльность и интерес к проекту помогали пережить эти негативные периоды и двигали нас вперед с новыми силами. Спасибо вам большое!

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

По поводу сбора конфиденциальной информации LS.

Для начала преамбула.
Мы начали разработку сайта на livestreet. Работаем с этой CMS в первый раз. И по этому мы начали изучать саму CMS. Второй день изучения и возникло несколько неприятных моментов в плане безопасности движка и самого сайта.

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

Плагин "LSPurse (Личный счет пользователя)" for LS1.0

Плагин организует на сайте личный счет пользователя который можно пополнить автоматически из платежных систем (плагин Payment).


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

Плагин "Main Preview"


Плагин позволяет создавать превью изображения для топиков.
Возможна как ручная загрузка изображения, так и автоматическая на основе контента.
В плагине есть возможность запустить создание превью на основе ранее созданных топиков.

Варианты автоматической загрузки:
— на основе вставленного в текст изображения
— на основе вставленного в текст видео
— на основе топика фотосета

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

Новое в 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');


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