Внутренний голос. По заявкам :)
Хабраклонирование по заявкам жаждущих :)
Итак, что же такое внутренний голос — пример можно посмотреть на… ну конечно, хабре.
А вот здесь написано зачем это нужно.
1)добавляем в prefix_topic новое значение например 'golos' в поле topic_type
2)Курим замечательный мануал по созданию типов топиков от benone.
2.1) Учитывая то, что ссылку на создание топика-внут.голоса нужно показывать, допустим, только админам — в шаблоне(который скопирован с ActionTopic.tpl и исправлен по инструкции benone) обрамляем ссылку на новый вид топика {if $oUserCurrent->isAdministrator()}{/if}
3)Для добавления нового топика надо взять модифицированный ActionTopic.php (модификация — замена переменных — описана benone)
В функцию public function Init() сразу после $this->oUserCurrent=$this->User_GetUserCurrent(); вставляем проверку на админа:
Думаю, надо изменить значение количества знаков топика в функции protected function checkTopicFields()
выставить значение 200-300 символов(внутренний голос не любит длинных разговоров)
4)теперь имеем возможность добавлять новый тип топика golos (с ограничением на количество символов)
теперь правим шаблон вывода topic_list.tpl
Сразу после функции {foreach from=$aTopics item=oTopic} добавляем
перед {/foreach} добавляем
В css пишем свойства для .topic .golos {} Шрифт сколько надо, цвет.
Если все сделали правильно — будет вам счастье. Пробуйте. Должно работать. :)
Один недостаток — у «голоса» есть обязательный заголовок и обязательны теги (при выводе топика эти параметры не видны, но обязательны для заполнения — но админу можно ввести что он хочет, например «Голос #56» ). Причина — это быстрый хак, а не надстройка — для «идеально красивой системы» придется рыть поглубже и делать отдельные функции. Если кто хочет порыться — жду дополнений :)
Итак, что же такое внутренний голос — пример можно посмотреть на… ну конечно, хабре.
А вот здесь написано зачем это нужно.
1)добавляем в prefix_topic новое значение например 'golos' в поле topic_type
2)Курим замечательный мануал по созданию типов топиков от benone.
2.1) Учитывая то, что ссылку на создание топика-внут.голоса нужно показывать, допустим, только админам — в шаблоне(который скопирован с ActionTopic.tpl и исправлен по инструкции benone) обрамляем ссылку на новый вид топика {if $oUserCurrent->isAdministrator()}{/if}
3)Для добавления нового топика надо взять модифицированный ActionTopic.php (модификация — замена переменных — описана benone)
В функцию public function Init() сразу после $this->oUserCurrent=$this->User_GetUserCurrent(); вставляем проверку на админа:
if (!$this->oUserCurrent or !$this->oUserCurrent->isAdministrator()) {
return $this->EventNotFound();
}
Думаю, надо изменить значение количества знаков топика в функции protected function checkTopicFields()
выставить значение 200-300 символов(внутренний голос не любит длинных разговоров)
if (!func_check(getRequest('topic_text'),'text',10,200)) {
$this->Message_AddError('Внутренний голос должен быть краток - максимум 200 символов','Ошибка');
$bOk=false;
}
4)теперь имеем возможность добавлять новый тип топика golos (с ограничением на количество символов)
теперь правим шаблон вывода topic_list.tpl
Сразу после функции {foreach from=$aTopics item=oTopic} добавляем
{if $oTopic->getType()<>'golos'}
перед {/foreach} добавляем
{else}
<div class="topic">
<div class="golos">
{$oTopic->getText()}
</div>
</div>
{/if}
В css пишем свойства для .topic .golos {} Шрифт сколько надо, цвет.
Если все сделали правильно — будет вам счастье. Пробуйте. Должно работать. :)
Один недостаток — у «голоса» есть обязательный заголовок и обязательны теги (при выводе топика эти параметры не видны, но обязательны для заполнения — но админу можно ввести что он хочет, например «Голос #56» ). Причина — это быстрый хак, а не надстройка — для «идеально красивой системы» придется рыть поглубже и делать отдельные функции. Если кто хочет порыться — жду дополнений :)
33 комментария
Статья предполагает то, что вы хотя бы немного разбираетесь в структуре движка. Если видим на конце названия файла Action***.tpl лезем в шаблон, в /actions/. Если Action***.php то в classes/actions/.
Еще статья опирается на создание типов топиков от Кирилла(это написано дважды и дан линк). То что должно быть написано в пункте 2) уже написано benone, не вижу смысла писать заново.
Также добавил жирным внизу апдейт чтобы люди понимали для чего это здесь опубликовано.
а вот и скриншот :) щелкните, чтобы увеличить картинку
br br
из за скобок наверное не отобразилось
в файле style.css
в измененный topic_list.tpl перед строчкой
добавляем
теперь вопрос) как их вправо сдвинуть?))
также отрубил проверку на html-теги, редактор TinyMCE, закрыл ссылку на создание голоса простым пользователям.
осталось отшлифовать 2 вещи: блог, и запрет камментов и постинг на главную страницу.
также думаем с
если кому это нужно, завтра дополню хак :)
из видимых багов
1) не работает редактирование голоса.
забираем файлы
переименовываем полученный ActionColos_class_php в ActionGolos.class.php
раскладываем в нужные места, пользуемся
ЗЫ. Уважаемые знатоки, кто поможет проверить и избавиться от багов?
было бы круто, чтобы пользователь с кармой выше 5 — мог писать сообщение длиной 140 символов :)
как то примерно так вполне должно работать.
я пока занят допиливанием поиска. :)
Для идеальной реализации, нужно каждые семь дней (к примеру) проверять изменения рейтинга за эти семь дней. человек у которого изменение в положительную сторону больше всего, получает возможность один раз воспользоваться внутренним голосом. ах мечты, мечты :)
Из недавнего разговора с randomtoy, мы договорились, что допиливать голос к зависимости от рейтинга будет он. Я не против.