+22.63
Рейтинг
49.63
Сила

Андрей

Как найти нужный шаблон *.tpl

Когда нужно что-то изменить в интерфейсе часто начинаешь искать место в шаблоне, куда необходимо внести изменения. Скрипт ниже, будучи добавленным в конец файла js/template.js шаблона будет подсвечивать, нажатые мышкой с удержанием ctrl, области и указывать имена шаблонов так:.

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

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

Задача, собственно, проста: ненавязчиво напоминать пользователю когда он последний раз читал топик надписью в заголовке о количестве дней, прошедших с момента последнего его прочтения. Делается так:
{$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}

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

Вопрос по vote.js

Извиняюсь за придирку, но не могу понять зачем нужен фрагмент кода в vote.js. Рассматривая движок LS заметил одну особенность объекта vote, отвечающего за голосование. Основной метод голосования ls.vote.vote(idTarget, objVote, value, type) содержит маркер voidBefore, что позволяет делать инъекции в код (подробнее здесь) до начала обработки голосования. Маркер voteAfter не предусмотрен (. Но ниже по коду в окончании метода onVote, видим такие строки:
var method='onVote'+ls.tools.ucfirst(type);
if ($.type(this[method])=='function') {
     this[method].apply(this,[idTarget, objVote, value, type, result]);
}

То есть, например, что, для случая голосования за топик, будет вызван метод

ls.vote.onVoteTopic(idTarget, objVote, value, type, result),

если он существует. Сам метод не реализован в движке, поэтому мы можем реализовать его сами учитывая, что другие дополнения могут использовать этот метод.

Будет ли такой подход к перехвату голосования корректным? Я думаю Да, если признать приведенный выше вызов как официальный механизм наряду с хуками и маркерами — что само по себе неправильно. И нет, поскольку это артефакт в поведении объекта, на мой взгляд, поскольку фактически реализовано в движке только onVoteUser.
Если имеется ввиду предоставление потенциальной возможности пользователю обрабатывать успешное окончание голосования, то почему таким хитрым способом. Если предполагается будущее наращивание функционала, то вопрос снимается, но заглушки бы не помешали.
И собственно вопрос: Зачем нужен вызов this[method].apply(this,[idTarget, objVote, value, type, result]);. Могу ли я использовать эту лазейку в своих расширениях или нет

Фишки LS или как сделать себе удобно?

Оптимальная настройка рабочей среды — один из важнейших шагов к эффективной работе, imho. Здесь на http://livestreet.ru, после первой своей публикации я стал следить за своими статьями, но скажу честно — мне был не удобен список публикаций в LS, содержащий превью моих топиков. Этот список мне нужен для удобной навигации по моим публикациям и я хочу лишь видеть их, моих публикаций, заголовки. В отличие от списка топиков других участников — там меня все устраивает. Я могу изменить вариант отображения списка топиков на своем сайте, как сказал в комментариях DayZ , но здесь, на livestreet.ru, увы, не могу могу даже здесь — на ЭТОМ сайте, для себя лично, с помощью только CSS. Делается это так:

Так выглядит мой список моих публикаций здесь на livestreet.ru

Еще одно небольшое расширение для Chrome...

Создание плагина. От идеи до публикации. Часть 3

Настройка типографа
Настройку типографа реализуем следующим образом: создадим файл конфигурации плагина в каталоге «config» который, в свою очередь, находиться в корне плагина и в нем проведем нехитрые опрерации по добавлению тега 'carousel' в список разрешенных jevix-ом тегов.
<?php
    $aAllowTags = Config::Get('jevix.default.cfgAllowTags');
    $aAllowTags[0][0][] = 'carousel';
    Config::Set('jevix.default.cfgAllowTags', $aAllowTags);


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

Создание плагина. От идеи до публикации. Часть 2.

Создание диалога добавления карусели
Прежде всего определим, каким образом карусель будет вставлена в редактор. В плагине будет использоваться следующая структура: тег «carousel» содержит одно или несколько изображений (тегов img), которые в дальнейшем можно добавлять с помощью стандартного диалога вставки изображения. Диалог вставки тега «carousel» с первым изображением мы создадим, из диалога вставки изображения. Шаблон диалога представлен в файле «skin/developer/window_load_img.tpl», его мы и будем переделывать. Созданный шаблон с помощью зарегистрированного хука будет добавлен на страницу, проинициализирован. Инструменты, обеспечивающие функционал формы будут заимствованы от диалога вставки изображения.

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

Создание плагина. От идеи до публикации. Часть 1.

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

Приступим
В начале создадим в папке plugins папку для нашего плагина с именем carousel и в нем файл plugin.xml c описанием создаваемого плагина (см. картинку ниже).


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