Добавляем тэг irony на 0.4.2

Давно хотел сделать этот тэг на своем небольшом сайте, и вот,
при поддержке богов Хаоса и Раздора и под чутким руководством OnTheFly это получилось.



Первая пошаговая инструкция для дураков ls версии 0.4.2 и шаблона New, в которой написано, как мы создадим кнопку добавления тега, добавим ее в редактор, разрешим тэг, и добавим селектор в css и будем писать красненьким ;)

Список файлов, которые понадобятся нам в процессе:
engine/modules/text/Text.class.php
templates/skin/new/comment_tree.tpl
templates/skin/new/actions/ActionTalk/add.tpl
templates/skin/new/actions/ActionTopic/add.tpl
templates/skin/new/css/style.css

Для начала откроем templates/skin/new/comment_tree.tpl,
найдем в нем редактор, а в нем кнопку, создающую тэг code:
<a href="#" onclick="lsPanel.putTagAround('form_comment_text','code'); return false;" class="button"><img src="{cfg name='path.static.skin'}/images/panel/code.gif" width="30" height="20" title="{$aLang.panel_code}"></a>

Прямо под ней вставим ее копию, в которой заменим все «code» на «irony».
<a href="#" onclick="lsPanel.putTagAround('form_comment_text','irony'); return false;" class="button"><img src="{cfg name='path.static.skin'}/images/panel/irony.gif" width="30" height="20" title="{$aLang.panel_irony}"></a>

То же самое проделаем и в шаблонах создания топика и письма:
templates/skin/new/actions/ActionTalk/add.tpl
templates/skin/new/actions/ActionTopic/add.tpl

Ищем кнопку отвечающую за создание тэга code, копируем, вставляем под ней, и заменяем в этой копии все «code» на «irony» так же как и в файле шаблона комментария.

Не забудьте положить в /images/panel/irony.gif размером 20х30 (как и code.gif).

Теперь надо открыть engine/modules/text/Text.class.php, найти в нем Разрешенные тэги и добавить в них irony
// Разрешённые теги
		$this->oJevix->cfgAllowTags(array('cut','a', 'img', 'i', 'b', 'u', 's', 'video', 'em',  'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'sub', 'acronym', 'h4', 'h5', 'h6', 'br', 'hr', 'pre', 'code', 'object', 'param', 'embed', 'blockquote', 'irony'));

Дальше добавим обработку этого тэга по аналогии с тэгом code сразу после него.
ищем
public function CodeSourceParser($sText) {
		$sText=str_replace("<code>",'<pre class="prettyprint"><code>',$sText);
		$sText=str_replace("</cоde>",'</cоde></pre>',$sText);
		return $sText;
	}

добавляем
public function IronyParser($sText) {
        $sText=str_replace("<irony>",'<span class="irony">',$sText);
        $sText=str_replace("</irony>",'</span>',$sText);
        return $sText;
    }


Чуть выше под надписью Парсит текст добавим вызов этой функции, под аналогичной строчкой тэга code ищем
$sResult=$this->CodeSourceParser($sResult);

добавляем
$sResult=$this->IronyParser($sResult);


Осталось решить, как надпись с тэгом будет выглядеть и записать это в templates/skin/new/css/style.css.
Для стандартной надписи красным италиком стоит добавить в конец файла
.irony { font-style: italic; color:#f00 }


Теперь пробуем и оно должно работать ;)

27 комментариев

avatar
кулл… устанавливаю… кстати по этому руководству можно создать еще кучу дополнительных тегов!

И еще: правильно пишется ТЕГ, а так все норм! Вам +
avatar
можа хватит насиловать файлы движка? на что механизм плагинов придуман? )
avatar
а что тебе не нравиться? это более удобное решение… т.к. плагины грузятся глобально и нагружают сервер, а тут аккуратненько мы добавляем одну кнопочку, которая совсем не грузит серв!
avatar
Переопределение Text.class.php не создаст сколько-нибудь заметной нагрузки
avatar
я о том же
avatar
при обновлении движка потеряешь свой хак )
avatar
А кто мешает его еще раз сделать после обновления, если таковое внезапно нагрянет?
avatar
А если забыл что делал?
avatar
Я записываю. На всякий случай ;)
avatar
А если я сделал 100500 изменений, и в каждом добавил не более 10 символов?
Как-то муторно :)
avatar
В твоем случае — да. В моем нет. Надо по ситуации смотреть.
Обобщения и выводы в стиле лучше/хуже не принесут добра, в том числе и в этот топик.
avatar
На мой взгляд, разумно было бы сам редактор вынести в плагин и в админке (конфиге) просто активировать (переключать) нужный. Кому-то нравится штатный, кому-то TMCE, кто-то, возможно, использовал бы свой, а кто-то и вовсе отключил бы его.

Что касается изменений Text.class.php, то здесь я полностью согласен.
avatar
жаль в лс нет такого понятия как виджет )
однако же и хук шаблона в конце панели после стандартных кнопок решил бы всякие проблемы
avatar
Ага, давайте для каждой мелочи плагин писать. У меня их наверное сейчас было бы штук 30 как минимум
avatar
я для одного сайта делал скопом в один плагин несколько нашлёпок
avatar
Не знаю… конечно если делать решения не для себя, то создание плагина освободит от определенных проблем.

Но после года работы сайта если использовать для всего плагины у меня наверное не останется не переопределенного класса.
Я к тому что все хорошо в меру, и не стоит клепать плагины только потому что авторы движка ввели их
avatar
я к тому, что при обновлении движка хрен вспомнишь про все хаки
avatar
Для этого существует нехилое количество программ, систем и прочего.
avatar
diff чтоли ?)
я, например, комменты к коду редко пишу, меня diff не спасает
avatar
Сама идея бесполезна, а вот топк хороший.
avatar
Я могу и полезную идею описать, если пойму как работает.
avatar
можете понять livestreet.ru/blog/tips_and_tricks/2470.html и описать для 0.4.2?
avatar
Данная идея уже оформлена как плагин
Поищите на сайте
avatar
три дня ищу. Извините за оффтоп.
avatar
Не, эту врядли. Я ее не делал, а как правильно переносить со старых версий не в курсе.
avatar
Что вы городите? Тут CSS и JS. Ничего менять там не надо.
Только записи в конфиге другие.
avatar
Нужно будет прикрутить, спасиб
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.