+0.41
Рейтинг
1.10
Сила

Вадим

Небольшое красивое дополнение

В одной из ранних версий bootstrap, на главной странице этого фреймворка увидел интересную фишку. При прокрутке страницы главное меню фиксировалось в верхней части страницы. Сегодня почему-то вспомнилось и решил реализовать такую вещь для livestreet. Как оказалось — очень просто.

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

Решение: все комментарии в блоке прямого эфира.

Искал сегодня варианты решения задачи вывода всех комментариев в блоке прямого эфира, взамен классическому отображению — группировки комментариев по топикам.

Поискав по сообществу, нашел решение в этом топике. Но оно не показалось очень удобным: необходимость править код методов, править шаблон и тп. По правильному, тут надо делать плагин. Но нашел вариант проще.

Возможно, кому-то пригодится.

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

Архитектура LS:: Мапперы

Представляю первую статью цикла статей об архитектуре livestreet, я думаю будут и продолжения. Исходные коды примера, приведенные здесь доступны на github.

1. Что такое маппер
Ну-с начнем, и начнем с того, что определим, что такое маппер? Маппер, или конкретнее Data Mapper является одним из стандартных паттернов проектирования программных средств, определенный в LS как PHP-объект наследуемый от базового, для всех мапперов класса Mapper. Основным назначением маппера является отделение логики хранения данных от бизнес-логики самого приложения. Маппер содержит методы, реализующие операции CRUD (Create-Read-Update-Delete) над одной или несколькими таблицами по «просьбе» объекта. Маппер является интерфейсом между объектами и базой данных, средством, повышающим уровень абстракции в архитектуре приложения.

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

Красивые подсказки в редакторе

Подсказки в редакторе реализованы через указание их текста в атрибуте тега a. Как оказалось и плагин для вывода сообщений использует этот атрибут, осталось сделать лишь небольшую доработку — в файл скрипта темы (templates/skin/ТЕМА/js/template.js) добавить несколько строчек кода, расположенных ниже. Более подробно о настройках poshytip можно почитать здесь:
$('.markItUpHeader .markItUpButton a').poshytip({
    className: 'infobox-yellow',
    showTimeout:300
});

Все!

Интересное решение на неявном преобразовании типов

Задача, собственно, проста: ненавязчиво напоминать пользователю когда он последний раз читал топик надписью в заголовке о количестве дней, прошедших с момента последнего его прочтения. Делается так:
{$numberOfDays = ($smarty.now|date_format:"%Y%m%d"-0)-($oTopic->getDateRead()|replace:"-":""-0)}
{if ($numberOfDays != 0) }
    <div style="font-size: 10px; display: inline; color: #d3d3d3;">
        (Прочитано {$numberOfDays} дней назад)
    </div>
{/if}

Комментировать дальше не буду, но на вопросы отвечу).

Плагин "Премодерация топиков (Антиспам)"

3 фото
image

Представляю вашему вниманию плагин «Премодерация топиков». Как понятно с названия, плагин реализует функционал премодерации топиков.

Плагин позволяет:
— Отправлять все новые топики на модерацию
— Устанавливать рейтинг пользователя, после достижения которого его топики проходят без премодерации
Отправлять на модерацию новые топики, содержащие ссылки. Устанавливать порог рейтинга, после достижения которого пользователь может публиковать топики со ссылками без модерации
— Задействовать модераторов и администраторов коллективных блогов в процессе модерации.

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

Делаем "Фотоблоки"


Вводное:
Наверное многие знакомы с возможностью на таких ресурсах как LAM (Lookatme) создавать внутри поста фотоблоки куда помещаются некоторое количество фотографий (чтобы не делать чересчур длинной скатерти). Да, в ЛС уже существует подобная штуковина — Фотосеты, но как отдельный вид поста она не имеет смысла. Сегодня я расскажу вам как сделать эти самые «Фотоблоки».

Нам понадобятся:
1. LiveStreet версии 0.5-0.5.1
2. Шаблон на jQuery
3. Fotoramajs от Артема Поликарпова
4. Прямые руки

Присутпим:
1. Качаем архив с Fotoramajs отсюда fotoramajs.com/

2. Внутри вы обнаружите 2 файла: собственно сама библотека fotorama.js и файл стилей для настройки внешнего вида fotorama.css

3. Подключаем библиотеку (предварительно поместив её в папку js вашего шаблона) в header.tpl вашего шаблона, очень просто
<script type="text/javascript" src="{cfg name='path.static.skin'}/js/fotorama.js"></script>
и учитываем что у вас также уже должна быть подключена библотека jQuery.

Подключаем css файл
<link href="{cfg name='path.static.skin'}/css/fotorama.css" rel="stylesheet">

4. Теперь идем в настройки jevix.php (папка config) и разрешаем тег div
// вызов метода с параметрами
			array(
				array('cut','a', 'img', 'i', 'b', 'u', 's', 'video', 'em',  'strong', 'nobr', 'code', 'object', 'param', 'embed', 'ls', 'iframe','blockquote','div', 'p','h3','div'),
			),			


array(
				'div',
				array('class')
			),


5. Вуаля, все что нам теперь остается, зайти в редактор, создать новый пост, кликнуть на просмотр html кода (это если у вас tinyMCE), найти нужные вам фотографии (для незнающих тег img) и обьединить в следующий div

<div class="fotorama">
  <img src="1.jpg> <img src="2.jpg"> <img src="3.jpg">
</div>


PS: На все вопросы готов ответить в комментариях, хотя надеюсь они не возникнут :)

Фикс безопасности в LiveStreet 0.5.1

Новый Год не всегда приносит радостные эмоции и отличные подарки, иногда сюрпризы более мрачные.
В LiveStreet 0.5.1 в фото-сетах обнаружена XSS уязвимость.

Патч, исправляющий баг, здесь — github.com/livestreet/livestreet/commit/c5b8e20d0ec380c2f2222fa266261d22dc36f926
Либо можно просто повторно скачать архив с LS от сюда — livestreetcms.com/download/ (архив обновлен)

Настоятельно рекомендуем требуем выполнить обновление.

Как создать свой вид топика, используя систему плагинов

3 года назад было написано Руководство: Как создать свой вид топика на LiveStreet. В то время ещё не было системы плагинов, и всё делалось «топорно», что в последствии затрудняло обновление движка, т.к. приходилось свои куски кода вставлять опять. С появлением системы плагинов LiveStreet стал более гибким и легко обновляемым. Передо мной встала задача создать новый вид топика, и я решил сделать это плагином. Но в процессе выяснилось, что то ли я чего-то не знаю, толи этого нет.

Напишу, что и как я делал, заодно задам вопросы, может быть на них решение уже есть. Надеюсь, совместно у нас получится сделать каркас нового типа топика в форме плагина.
Читать дальше →

Другой цвет у комментариев админа

Хочу поделиться с сообществом небольшим хаком.

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

Все делается всего в два действия:

1. В файле comment.tpl в следующие строчки:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if}" >

добавляем:
{if $oUser->isAdministrator()}admin{else}user{/if}

получаем:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if} {if $oUser->isAdministrator()}admin{else}user{/if}"  >


2. В файле comments.css добавляем стиль:
.comment.admin	{ background: #желаемый цвет; }


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