[BETA] Moderator Tag (Light Version)

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

[BETA] Moderator Tag (Light Version)

Сообщение quazi »

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

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

  1. ##############################################################
  2. ## MOD Title: Moderator Tag (Light Version)
  3. ## MOD Author: quazi < nomail@nospam.com > (quazi) http://phpbbguru.net/community/viewtopic.php?t=3958
  4. ## MOD Description: Allow moderators to apply in the posts moderator tags such as [mod][/mod] and [warn][/warn].
  5. ## The first of them means informational message and voices user's opinion as a moderator.
  6. ## The second means warning and recommended as the stronger expression.
  7. ## These tags are dislayed as large blue "M" and red "!" moderator signs.
  8. ##
  9. ## MOD Version: 1.0.0
  10. ##
  11. ## Installation Level: (Easy)
  12. ## Installation Time: 5 Minute
  13. ## Files To Edit (6): templates/subSilver/bbcode.tpl, templates/subSilver/subSilver.css, template/subSilver/overall_header.tpl, includes/bbcode.php, viewtopic.php, posting.php
  14. ## Included Files: (n/a)
  15. ##############################################################
  16. ## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
  17. ## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
  18. ## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
  19. ## in our MOD-Database, located at: http://www.phpbb.com/mods/
  20. ##############################################################
  21. ## Author Notes: This MOD enables over moderator signs the default tooltips "Moderator Information" and
  22. ## "Moderator Warning", respectively. If You want change them to Your ownself texts or localize
  23. ## to Your native language You can add two variables to the language/lang_XXX/lang_main.php:
  24. ##
  25. ## $lang['Moderator_Mod'] = 'Your text in place of <Moderator Information>';
  26. ## $lang['Moderator_Warn'] = 'Your text in place of <Moderator Warning>';
  27. ##
  28. ##############################################################
  29. ## MOD History:
  30. ##
  31. ## 2007-02-14 - Version 1.0.1
  32. ## - Fixed parser of [mod] and [warn] tags. All visialization removed to appropriate template file
  33. ## 2005-07-15 - Version 1.0.0
  34. ## - Initial Release
  35. ##
  36. ##############################################################
  37. ## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
  38. ##############################################################
  39.  
  40. #
  41. #----[ OPEN ]-------------------------------------------------------------
  42. #
  43. templates/subSilver/bbcode.tpl
  44.  
  45.  
  46. #
  47. #----[ FIND ]-------------------------------------------------------------
  48. #
  49. <!-- BEGIN email --><a href="mailto:{EMAIL}">{EMAIL}</A><!-- END email -->
  50.  
  51.  
  52. #
  53. #----[ AFTER, ADD ]--------------------------------------------------------------
  54. #
  55. <!-- BEGIN moderate -->
  56. <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>
  57. <!-- END moderate -->
  58.  
  59.  
  60. #
  61. #----[ OPEN ]-------------------------------------------------------------
  62. #
  63. templates/subSilver/subSilver.css
  64.  
  65.  
  66. #
  67. #----[ FIND ]-------------------------------------------------------------
  68. #
  69. /*
  70. The original subSilver Theme for phpBB version 2+
  71. Created by subBlue design
  72. http://www.subBlue.com
  73. */
  74.  
  75.  
  76. #
  77. #----[ AFTER, ADD ]--------------------------------------------------------------
  78. #
  79. /* +Moderator tags MOD */
  80. .moder {
  81. color: #FFFFFF;
  82. font-family: Arial, 'Courier New', sans-serif;
  83. font-size: 32px;
  84. font-weight: bold;
  85. height: 50px;
  86. text-align: center;
  87. width: 50px;
  88. }
  89. .warn { background-color: #FF0000; }
  90. .mod { background-color: #0066CC; }
  91. /* -Moderator tags MOD */
  92.  
  93.  
  94. #
  95. #----[ OPEN ]-------------------------------------------------------------
  96. #
  97. template/subSilver/overall_header.tpl
  98.  
  99.  
  100. #
  101. #----[ FIND ]-------------------------------------------------------------
  102. #
  103. <style type="text/css">
  104. <!--
  105.  
  106.  
  107. #
  108. #----[ AFTER, ADD ]--------------------------------------------------------
  109. #
  110. /* +Moderator tags MOD */
  111. .moder {
  112. color: #FFFFFF;
  113. font-family: Arial, 'Courier New', sans-serif;
  114. font-size: 32px;
  115. font-weight: bold;
  116. height: 50px;
  117. text-align: center;
  118. width: 50px;
  119. }
  120. .warn { background-color: #FF0000; }
  121. .mod { background-color: #0066CC; }
  122. /* -Moderator tags MOD */
  123.  
  124.  
  125. #
  126. #----[ OPEN ]-------------------------------------------------------------
  127. #
  128. includes/bbcode.php
  129.  
  130.  
  131. #
  132. #----[ FIND ]-------------------------------------------------------------
  133. #
  134. /**
  135. * Does second-pass bbencoding. This should be used before displaying the message in
  136. * a thread. Assumes the message is already first-pass encoded, and we are given the
  137. * correct UID as used in first-pass encoding.
  138. */
  139.  
  140.  
  141. #
  142. #----[ BEFORE, ADD ]------------------------------------------------------
  143. #
  144. // +Moderator tags MOD
  145. function bbencode_moder_cb($matches)
  146. {
  147. global $lang, $bbcode_tpl;
  148. $class = $matches[1];
  149. $text = @$matches[2];
  150. if ($class == 'mod')
  151. {
  152. $tooltip = @$lang['Moderator_Mod'] ? $lang['Moderator_Mod'] : "Moderator Information";
  153. $sign = "M";
  154. }
  155. else
  156. {
  157. $tooltip = @$lang['Moderator_Warn'] ? $lang['Moderator_Warn'] : "Moderator Warning";
  158. $sign = "!";
  159. }
  160. //$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>';
  161. $text = str_replace(array('{MODER_CLASS}', '{MODER_TOOLTIP}', '{MODER_SIGN}', '{MODER_TEXT}'), array($class, $tooltip, $sign, $text), $bbcode_tpl['moderate']);
  162. return $text;
  163. }
  164.  
  165. function bbencode_moder($text, $enable)
  166. {
  167. if ( $enable )
  168. {
  169. $text = preg_replace_callback("/\[(mod|warn)\]((?:(?!\[\/?\\1\]).)*)\[\/\\1\]/s", 'bbencode_moder_cb', $text);
  170. }
  171. return $text;
  172. }
  173. // -Moderator tags MOD
  174.  
  175.  
  176. #
  177. #----[ OPEN ]-------------------------------------------------------------
  178. #
  179. viewtopic.php
  180.  
  181.  
  182. #
  183. #----[ FIND ]-------------------------------------------------------------
  184. #
  185. //'MESSAGE' => $message,
  186.  
  187.  
  188. #
  189. #----[ REPLACE WITH ]-----------------------------------------------------
  190. #
  191. // +Moderator tag MOD
  192. //'MESSAGE' => $message,
  193. 'MESSAGE' => bbencode_moder($message, $postrow[$i]['user_level'] == ADMIN || $postrow[$i]['user_level'] == MOD),
  194. // -Moderator tag MOD
  195.  
  196.  
  197.  
  198. #
  199. #----[ OPEN ]-------------------------------------------------------------
  200. #
  201. posting.php
  202.  
  203.  
  204. #
  205. #----[ FIND ]-------------------------------------------------------------
  206. #
  207. //'MESSAGE' => $preview_message,
  208.  
  209.  
  210. #
  211. #----[ REPLACE WITH ]-----------------------------------------------------
  212. #
  213. // +Moderator tag MOD
  214. //'MESSAGE' => $preview_message,
  215. 'MESSAGE' => bbencode_moder($preview_message, $userdata['user_level'] == ADMIN || $userdata['user_level'] == MOD),
  216. // -Moderator tag MOD
  217.  
  218.  
  219. #
  220. # EoM
  221. #
Последний раз редактировалось quazi 14.02.2007 14:55, всего редактировалось 5 раз.
OMus-VeNuS

Сообщение OMus-VeNuS »

а можно скрин шот? :) Плиииз )))
sigal
phpBB Plus
Сообщения: 442
Стаж: 21 год 1 месяц
Откуда: КПРФ ;)

Сообщение sigal »

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

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

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

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

ато ставить не зная результат особо не хочется..
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 3 месяца

Сообщение quazi »

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

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

а нет скриншотов
у Coagulant есть более продвинутый мод. внешне все примерно так. ну может стили чуть-чуть другие при отображении
sigal
phpBB Plus
Сообщения: 442
Стаж: 21 год 1 месяц
Откуда: КПРФ ;)

Сообщение sigal »

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

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

  1.  
  2. #
  3. #----[ AFTER, ADD ]--------------------------------------------------------------
  4. #
  5. /* +Moderator tags MOD */
  6. .moder {
  7. color: #FFFFFF;
  8. font-family: Arial, 'Courier New', sans-serif;
  9. font-size: 32px;
  10. font-weight: bold;
  11. height: 50px;
  12. text-align: center;
  13. width: 50px;
  14. }
  15. .warn { background-color: #FF0000; }
  16. .mod { background-color: #0066CC; }
  17. /* -Moderator tags MOD */
  18.  
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 3 месяца

Сообщение quazi »

sigal, я исправил этот спорный кусок в первом посте.
sigal
phpBB Plus
Сообщения: 442
Стаж: 21 год 1 месяц
Откуда: КПРФ ;)

Сообщение sigal »

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

этот вариант я поставил бы.
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 3 месяца

Сообщение quazi »

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

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

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

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

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

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

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

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

Сообщение OMus-VeNuS »

А юзеры могут править свои "отмодерированные" сообщения?
sigal
phpBB Plus
Сообщения: 442
Стаж: 21 год 1 месяц
Откуда: КПРФ ;)

Сообщение sigal »

OMus-VeNuS
по ходу нет..
quazi
ясно. а как по поводу добавления тега в форму быстрого ответа. У тебя есть кое-какие идеи?
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 3 месяца

Сообщение quazi »

неинтересно. рисовать 2 кнопки в шаблоне и одно условие в коде
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 6 месяцев
Откуда: Москва

Сообщение Coagulant »

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

Сообщение quazi »

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

пользоваться стандартной функцией - значит, терять контроль над вложенностями типа
[mod][mod][/mod][/mod]
[mod][warn][/warn][/mod]
[warn][mod][/mod][/warn]
Coagulant писал(а):вынести весь html в шаблон
можно, но не принципиально
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 20 лет 6 месяцев
Откуда: Москва

Сообщение Coagulant »

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

Сообщение quazi »

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

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

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

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