[BETA] Moderator Tag (Light Version)

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

[BETA] Moderator Tag (Light Version)

Сообщение quazi » 15.07.2005 21:59

вот такой вот простенький мод.
чтоб модератор мог выражать свое модераторское мнение и недовольство своими пользователями

Код: Выделить всё

##############################################################
## MOD Title: Moderator Tag (Light Version)
## MOD Author: quazi < nomail@nospam.com > (quazi) http://phpbbguru.net/community/viewtopic.php?t=3958
## MOD Description: Allow moderators to apply in the posts moderator tags such as [mod][/mod] and [warn][/warn].
##                  The first of them means informational message and voices user's opinion as a moderator.
##                  The second means warning and recommended as the stronger expression.
##                  These tags are dislayed as large blue "M" and red "!" moderator signs.
##
## MOD Version: 1.0.0
##
## Installation Level: (Easy)
## Installation Time: 5 Minute
## Files To Edit (6): templates/subSilver/bbcode.tpl, templates/subSilver/subSilver.css, template/subSilver/overall_header.tpl, includes/bbcode.php, viewtopic.php, posting.php
## Included Files: (n/a)
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes:  This MOD enables over moderator signs the default tooltips "Moderator Information" and
##                "Moderator Warning", respectively. If You want change them to Your ownself texts or localize
##                to Your native language You can add two variables to the language/lang_XXX/lang_main.php:
##
##                    $lang['Moderator_Mod'] = 'Your text in place of <Moderator Information>';
##                    $lang['Moderator_Warn'] = 'Your text in place of <Moderator Warning>';
##
##############################################################
## MOD History:
##
##   2007-02-14 - Version 1.0.1
##      - Fixed parser of [mod] and [warn] tags. All visialization removed to appropriate template file
##   2005-07-15 - Version 1.0.0
##      - Initial Release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#----[ OPEN ]-------------------------------------------------------------
#
templates/subSilver/bbcode.tpl


#
#----[ FIND ]-------------------------------------------------------------
#
<!-- BEGIN email --><a href="mailto:{EMAIL}">{EMAIL}</A><!-- END email -->


#
#----[ AFTER, ADD ]--------------------------------------------------------------
#
<!-- BEGIN moderate -->
<table border="0" cellpadding="0" cellspacing="2"><tr valign="top"><td><div class="moder {MODER_CLASS}" title="{MODER_TOOLTIP}">{MODER_SIGN}</div></td><td class="postbody">{MODER_TEXT}</td></tr></table>
<!-- END moderate -->


#
#----[ OPEN ]-------------------------------------------------------------
#
templates/subSilver/subSilver.css


#
#----[ FIND ]-------------------------------------------------------------
#
/*
  The original subSilver Theme for phpBB version 2+
  Created by subBlue design
  http://www.subBlue.com
*/


#
#----[ AFTER, ADD ]--------------------------------------------------------------
#
/* +Moderator tags MOD */
.moder  {
   color: #FFFFFF;
   font-family: Arial, 'Courier New', sans-serif;
   font-size: 32px;
   font-weight: bold;
   height: 50px;
   text-align: center;
   width: 50px;
}
.warn   { background-color: #FF0000; }
.mod    { background-color: #0066CC; }
/* -Moderator tags MOD */


#
#----[ OPEN ]-------------------------------------------------------------
#
template/subSilver/overall_header.tpl


#
#----[ FIND ]-------------------------------------------------------------
#
<style type="text/css">
<!--


#
#----[ AFTER, ADD ]--------------------------------------------------------
#
/* +Moderator tags MOD */
.moder  {
   color: #FFFFFF;
   font-family: Arial, 'Courier New', sans-serif;
   font-size: 32px;
   font-weight: bold;
   height: 50px;
   text-align: center;
   width: 50px;
}
.warn   { background-color: #FF0000; }
.mod    { background-color: #0066CC; }
/* -Moderator tags MOD */


#
#----[ OPEN ]-------------------------------------------------------------
#
includes/bbcode.php


#
#----[ FIND ]-------------------------------------------------------------
#
/**
 * Does second-pass bbencoding. This should be used before displaying the message in
 * a thread. Assumes the message is already first-pass encoded, and we are given the
 * correct UID as used in first-pass encoding.
 */


#
#----[ BEFORE, ADD ]------------------------------------------------------
#
// +Moderator tags MOD
function bbencode_moder_cb($matches)
{
   global $lang, $bbcode_tpl;
   $class = $matches[1];
   $text = @$matches[2];
   if ($class == 'mod')
   {
      $tooltip = @$lang['Moderator_Mod'] ? $lang['Moderator_Mod'] : "Moderator Information";
      $sign = "M";
   }
   else
   {
      $tooltip = @$lang['Moderator_Warn'] ? $lang['Moderator_Warn'] : "Moderator Warning";
      $sign = "!";
   }
   //$text = '<table border="0" cellpadding="0" cellspacing="2"><tr valign="top"><td><div class="moder ' . $class . '" title="' . $tooltip . '">' . $sign . '</div></td><td class="postbody">' . $text . '</td></tr></table>';
   $text = str_replace(array('{MODER_CLASS}', '{MODER_TOOLTIP}', '{MODER_SIGN}', '{MODER_TEXT}'), array($class, $tooltip, $sign, $text), $bbcode_tpl['moderate']);
   return $text;
}

function bbencode_moder($text, $enable)
{
   if ( $enable )
   {
      $text = preg_replace_callback("/\[(mod|warn)\]((?:(?!\[\/?\\1\]).)*)\[\/\\1\]/s", 'bbencode_moder_cb', $text);
   }
   return $text;
}
// -Moderator tags MOD


#
#----[ OPEN ]-------------------------------------------------------------
#
viewtopic.php


#
#----[ FIND ]-------------------------------------------------------------
#
         //'MESSAGE' => $message,


#
#----[ REPLACE WITH ]-----------------------------------------------------
#
         // +Moderator tag MOD
         //'MESSAGE' => $message,
         'MESSAGE' => bbencode_moder($message, $postrow[$i]['user_level'] == ADMIN || $postrow[$i]['user_level'] == MOD),
         // -Moderator tag MOD



#
#----[ OPEN ]-------------------------------------------------------------
#
posting.php


#
#----[ FIND ]-------------------------------------------------------------
#
         //'MESSAGE' => $preview_message,


#
#----[ REPLACE WITH ]-----------------------------------------------------
#
         // +Moderator tag MOD
         //'MESSAGE' => $preview_message,
         'MESSAGE' => bbencode_moder($preview_message, $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD),
         // -Moderator tag MOD


#
# EoM
#
Последний раз редактировалось quazi 14.02.2007 14:55, всего редактировалось 5 раз.

OMus-VeNuS

Сообщение OMus-VeNuS » 15.07.2005 22:27

а можно скрин шот? :) Плиииз )))

sigal
phpBB Plus
Сообщения: 442
Зарегистрирован: 23.05.2004 14:26
Откуда: КПРФ ;)

Сообщение sigal » 15.07.2005 23:06

quazi
хмм.. интересно, а что предпологается найтив первом файле? пустое место?

Добавлено спустя 39 секунд:

да и скриншот было бы неплохо.. приложи как Demo

Добавлено спустя 19 секунд:

ато ставить не зная результат особо не хочется..

quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 15.07.2005 23:35

sigal писал(а):предпологается найтив первом файле
ага :)

наверно надо исправить это место - просто выражаясь в стиле phpBB я не смог отразить смысл "добавить до/добавить после"

а нет скриншотов
у Coagulant есть более продвинутый мод. внешне все примерно так. ну может стили чуть-чуть другие при отображении

sigal
phpBB Plus
Сообщения: 442
Зарегистрирован: 23.05.2004 14:26
Откуда: КПРФ ;)

Сообщение sigal » 15.07.2005 23:46

quazi
тогда куда предположительно добавлять этот фрагмент?

Код: Выделить всё


# 
#----[ AFTER, ADD ]-------------------------------------------------------------- 
# 
/* +Moderator tags MOD */ 
.moder  { 
        color: #FFFFFF; 
   font-family: Arial, 'Courier New', sans-serif; 
   font-size: 32px; 
   font-weight: bold; 
   height: 50px; 
   text-align: center; 
   width: 50px; 
} 
.warn   { background-color: #FF0000; } 
.mod    { background-color: #0066CC; } 
/* -Moderator tags MOD */ 


quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 15.07.2005 23:59

sigal, я исправил этот спорный кусок в первом посте.

sigal
phpBB Plus
Сообщения: 442
Зарегистрирован: 23.05.2004 14:26
Откуда: КПРФ ;)

Сообщение sigal » 16.07.2005 0:02

quazi
другое дело. :)
по поводу Демки.. а почему нету? ты наверняка у себя ставил, вот и покажи скриншот как оно работает.
я вариант от Coagulant не ставил т.к там проблематичны некоторые моменты. например поверх еще надо ставить мод..

этот вариант я поставил бы.

quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 16.07.2005 3:53

ну нету демки. выглядит почти так же как у Coagulant на его скриншоте (повторюсь - стили немного другие - у него вроде бы Times New Roman, а у меня - Arial)

Добавлено спустя 3 часа 48 минут 3 секунды:

для тех кто не читает комментарии и задает много вопросов

мод позволяет модераторам выражать свое модераторское мнение с помощью тэгов [mod]мое модераторское мнение[/mod]. при этом слева от обрамленного текста появляется большая буква М на синем фоне

мод позволяет делать замечания с помощью тэгов [warn]мое модераторское предупреждение[/warn]. при этом слева обрамленного тэгами текста появляется восклицательный знак на красном фоне

тэги могут не содержать никакого текста. в таком случае выведется соответствующий одиночный символ.

вложенность запрещена, то есть конструкции вида [mod][mod][/mod][/mod] допускают преобразование только одного модераторского тэга. что есть нормально

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

OMus-VeNuS

Сообщение OMus-VeNuS » 16.07.2005 10:16

А юзеры могут править свои "отмодерированные" сообщения?

sigal
phpBB Plus
Сообщения: 442
Зарегистрирован: 23.05.2004 14:26
Откуда: КПРФ ;)

Сообщение sigal » 16.07.2005 13:49

OMus-VeNuS
по ходу нет..
quazi
ясно. а как по поводу добавления тега в форму быстрого ответа. У тебя есть кое-какие идеи?

quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 16.07.2005 14:04

неинтересно. рисовать 2 кнопки в шаблоне и одно условие в коде

Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва
Контактная информация:

Сообщение Coagulant » 24.07.2005 18:24

quazi
Советую в function bbencode_moder_cb($matches) вынести весь html в шаблон. Вообще, зачем было писать свою функцию bbencode, не проще ли было воспользоваться стандартной? :roll:

quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 25.07.2005 7:48

Coagulant, могу ответить почему я так сделал
существующий парсер bb-codes от phpBB не справляется со многими вещами, например, он отвратительно обрабатывает вложенные тэги, что проявилось в очередном обновлении

пользоваться стандартной функцией - значит, терять контроль над вложенностями типа
[mod][mod][/mod][/mod]
[mod][warn][/warn][/mod]
[warn][mod][/mod][/warn]
Coagulant писал(а):вынести весь html в шаблон
можно, но не принципиально

Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва
Контактная информация:

Сообщение Coagulant » 26.07.2005 22:34

Отличный регэксп. Я пожалуй его возьму на вооружение, не против? :wink:
quazi писал(а):можно, но не принципиально
Совет был продиктован coding guidelines от phpbb и здравым смыслом. Хотя раз уж light version тогда всё ok.

quazi
phpBB 2.0.2
Сообщения: 306
Зарегистрирован: 15.03.2005 18:49
Контактная информация:

Сообщение quazi » 27.07.2005 8:12

Coagulant,
light version - потому что в отличие от твоего мода мой - облегченная версия
Coagulant писал(а):Отличный регэксп. Я пожалуй его возьму на вооружение, не против?
конечно. учитывая, что это результат внимательного прочтения книги
Дж. Фридл Регулярные выражения

Добавлено спустя 13 минут 11 секунд:

я поправил регэксп в своем первом посте - служебные символы заслешил
было
/[(mod|warn)]((?:(?![/?1]).)*)[/1\]/s
стало
/\[(mod|warn)\]((?:(?!\[\/?\\1\]).)*)\[\/\\1\]/s

Закрыто

Вернуться в «Бета-версии модов для phpBB 2.0.x»