Предупреждения и сообщения администратора и модератора BBcode

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.
 • Просмотры: 7496
Al
Aleksandor
Благодарил (а): 4 раза
Поблагодарили: 4 раза
Сообщения: 54
Зарегистрирован: 06 июн 2010, 10:37
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

07 мар 2011, 15:39

Весь материал взят с разных форумов, и модифицирован.
1. Добавляем BBcod. Идем в Администраторский раздел -> вкладка Сообщения -> BBCodes -> Добавить BBCode
При создании BBCode не отмечайте опцию Показывать на странице ответа (что бы пользователи не видели эти кнопки), от использования вручную написанного кода это не спасет :). Решение этой проблемы опишу ниже
Сообщение Администратора:
Использование BBCode

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

[am={TEXT1}]{TEXT2}[/am]
Замена HTML

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

<table cellspacing='0px' cellpadding='0px' style='width: 100%; border: 1px solid #0084FF; border-left: 4px solid #0084FF; vertical-align: middle;'>
    <tr style='height: 40px; line-height: 40px;'>
    <td style='background-color: #e7eef7; padding-left:10px; font-size: 10px;' width='95%'>Сообщение Администратора: <b><a class="postauthor" style="color: #aa0000;" href="memberlist.php?mode=viewprofile&un={TEXT1}">{TEXT1}</a></b></td>
    <td style='max-width: 40px; width: 40px; text-align: center; background-color: #0084FF;; font-size: 36px; color: white;'>
    A</td>
    </tr>
    <tr style='line-height: 40px;'>
    <td colspan='2' style='padding-left:10px; background-color: #f4f4f4; color: #0084FF; font-size: 12px; font-weight: bold;'>{TEXT2}</td>
    </tr>
    </table>

Предупреждение Администратора:
Использование BBCode

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

[aw={TEXT1}]{TEXT2}[/aw]
Замена HTML

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

<table cellspacing='0px' cellpadding='0px' style='width: 100%; border: 1px solid red; border-left: 4px solid red; vertical-align: middle;'>
    <tr style='height: 40px; line-height: 40px;'>
    <td style='background-color: #f7eee7; padding-left:10px; font-size: 10px;' width='95%'>Предупреждение от Администратора: <b><a class="postauthor" style="color: #aa0000" href="memberlist.php?mode=viewprofile&un={TEXT1}">{TEXT1}</a></b></td>
    <td style='max-width: 40px; width: 40px; text-align: center; background-color: red; font-size: 36px; color: white;'>!!</td>
    </tr>
    <tr style='line-height: 40px;'>
    <td colspan='2' style='padding-left:10px; background-color: #f4f4f4; color: red; font-size: 12px; font-weight: bold;'>{TEXT2}</td>
    </tr>
    </table>

Сообщение модератора:
Использование BBCode

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

[mm={TEXT1}]{TEXT2}[/mm]
Замена HTML

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

<table cellspacing='0px' cellpadding='0px' style='width: 100%; border: 1px solid #0084FF; border-left: 4px solid #0084FF; vertical-align: middle;'>
    <tr style='height: 40px; line-height: 40px;'>
    <td style='background-color: #e7eef7; padding-left:10px; font-size: 10px;' width='95%'>Сообщение модератора: <b><a class="postauthor" style="color: #663333" href="memberlist.php?mode=viewprofile&un={TEXT1}">{TEXT1}</a></b></td>
    <td style='max-width: 40px; width: 40px; text-align: center; background-color: #0084FF;; font-size: 36px; color: white;'>
    М</td>
    </tr>
    <tr style='line-height: 40px;'>
    <td colspan='2' style='padding-left:10px; background-color: #f4f4f4; color: #0084FF; font-size: 12px; font-weight: bold;'>{TEXT2}</td>
    </tr>
    </table>

Предупреждение модератора:
Использование BBCode

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

[mw={TEXT1}]{TEXT2}[/mw]
Замена HTML

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

<table cellspacing='0px' cellpadding='0px' style='width: 100%; border: 1px solid red; border-left: 4px solid red; vertical-align: middle;'>
    <tr style='height: 40px; line-height: 40px;'>
    <td style='background-color: #f7eee7; padding-left:10px; font-size: 10px;' width='95%'>Предупреждение от модератора: <b><a class="postauthor" style="color: #663333" href="memberlist.php?mode=viewprofile&un={TEXT1}">{TEXT1}</a></b></td>
    <td style='max-width: 40px; width: 40px; text-align: center; background-color: red; font-size: 36px; color: white;'>!</td>
    </tr>
    <tr style='line-height: 40px;'>
    <td colspan='2' style='padding-left:10px; background-color: #f4f4f4; color: red; font-size: 12px; font-weight: bold;'>{TEXT2}</td>
    </tr>
    </table>

2. Делаем видимыми кнопки для администраторов и модератов
Открыть ./styles/prosilver (subsilver2)/template/posting_buttons.html
Найти:

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

var imageTag = false;
Добавить после

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

// admin/moderator messages
		
		function BBaw()
{
var FoundErrors = '';
var enterUsername = prompt("Введите ваш ник", "");
var enterText = prompt("Введите ваше сообщение", "Text");
if (!enterUsername) {
FoundErrors += "Вы не ввели свой ник.";
}
if (!enterText)
{
FoundErrors += " Вы не ввели сообщение.";
}
if (FoundErrors)
{
alert("Error : "+FoundErrors);
return;
}
var bbtags = "[aw="+enterUsername+"]"+enterText+"[/aw]";
document.forms[form_name].elements[text_name].value+=bbtags;
document.forms[form_name].elements[text_name].focus();
}

function BBam()
{
var FoundErrors = '';
var enterUsername = prompt("Введите ваш ник", "");
var enterText = prompt("Введите ваше сообщение", "Text");
if (!enterUsername) {
FoundErrors += "Вы не ввели свой ник.";
}
if (!enterText)
{
FoundErrors += " Вы не ввели сообщение.";
}
if (FoundErrors)
{
alert("Error : "+FoundErrors);
return;
}
var bbtags = "[am="+enterUsername+"]"+enterText+"[/am]";
document.forms[form_name].elements[text_name].value+=bbtags;
document.forms[form_name].elements[text_name].focus();
}

function BBmm()
{
var FoundErrors = '';
var enterUsername = prompt("Введите ваш ник", "");
var enterText = prompt("Введите ваше сообщение", "Text");
if (!enterUsername) {
FoundErrors += "Вы не ввели свой ник.";
}
if (!enterText)
{
FoundErrors += " Вы не ввели сообщение.";
}
if (FoundErrors)
{
alert("Error : "+FoundErrors);
return;
}
var bbtags = "[mm="+enterUsername+"]"+enterText+"[/mm]";
document.forms[form_name].elements[text_name].value+=bbtags;
document.forms[form_name].elements[text_name].focus();
}

function BBmw()
{
var FoundErrors = '';
var enterUsername = prompt("Введите ваш ник", "");
var enterText = prompt("Введите ваше сообщение", "Text");
if (!enterUsername) {
FoundErrors += "Вы не ввели свой ник.";
}
if (!enterText)
{
FoundErrors += " Вы не ввели сообщение.";
}
if (FoundErrors)
{
alert("Error : "+FoundErrors);
return;
}
var bbtags = "[mw="+enterUsername+"]"+enterText+"[/mw]";
document.forms[form_name].elements[text_name].value+=bbtags;
document.forms[form_name].elements[text_name].focus();
}
Найти

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

<!-- IF S_BBCODE_FLASH -->
         <input type="button" class="btnbbcode" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" onmouseover="helpline('d')" onmouseout="helpline('tip')" />
      <!-- ENDIF -->
Добавить после

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

<!-- IF U_ACP -->
<span><a href="#" title="Администраторские теги" onclick="
obj=this.parentNode.childNodes[1].style;
tmp=(obj.display!='block') ? 'block' : 'none';
obj.display=tmp;
return false;"><input type="button" class="btnbbcode" value="Admin_tags"></a><div style="display: none">
<br>
<input type="button" class="btnbbcode" value="am=" onmouseover="helpline('g')" style="text-decoration: underline; width: 40px" onclick="BBam()" title="Сообщение администратора" />
<input type="button" class="btnbbcode" value="aw=" onmouseover="helpline('h')" style="text-decoration: underline; width: 40px" onclick="BBaw()" title="Предупреждение администратора" />
<br><br>
</div></span>
<!-- ENDIF -->
<!-- IF U_MCP -->
<span><a href="#" title="Модераторские теги" onclick="
obj=this.parentNode.childNodes[1].style;
tmp=(obj.display!='block') ? 'block' : 'none';
obj.display=tmp;
return false;"><input type="button" class="btnbbcode" value="Moder_tags"></a><div style="display: none">
<br>
<input type="button" class="btnbbcode" value="mm=" onmouseover="helpline('k')" style="text-decoration: underline; width: 40px" onclick="BBmm()" title="Сообщение  модератора" />
<input type="button" class="btnbbcode" value="mw=" onmouseover="helpline('j')" style="text-decoration: underline; width: 40px" onclick="BBmw()" title="Предупреждение модератора" />
</div></span>
<!-- ENDIF -->
Обязательно сохраните фаил posting_buttons.html в кодировке UTF-8 без BOM

Кнопки добавлены, выглядит это так





3. Запрещаем использовать ббкод всем кроме определенных групп
т.е. если пользователь или кто либо другой кому запрещено использовать ббкод, наберет в сообщении его вручную и нажмет отправить
появится предупреждение "Вы не можете использовать некоторые BBCode:"
делается это так:
Открыть includes / message_parser.php
Найти

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

// Parse smilies
        if ($allow_smilies)
        {
            $this->smilies($config['max_' . $mode . '_smilies']);
        }       
добавить перед

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

// Custom BBCode Rights 
    global $phpbb_root_path, $phpEx, $template;
    include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
    // ------------------------
    $group_id = array(5,32);
    // -----------------------
    $users_id = $user->data['user_id'];
    $group_in = group_memberships($group_id, $users_id , true);
    if ($group_in !== true){
    // ------------------------------------
    $forbid = array('am=', 'aw=', 'mm=', 'mw=');
    // -------------------------------------
    foreach ($forbid as $not_allowed){
    $this->bbcodes[$not_allowed]['disabled'] = true;}
    $template->assign_vars(array('S_NO_BBCODE_BUTTON' => true));}
  
    // Custom BBCode Rights 
в $group_id = array(5,32); вносим или изменяем ID групп (5,7,32,какая то группа) которые могут использовать BBCode
в $forbid = array('am=', 'aw=', 'mm=', 'mw='); можно при желании добавить свои ббкоды, к примеру: $forbid = array('am=', 'aw=', 'mm=', 'mw=', 'center');

4. Вырезаем наш ббкод при цитировании поста
Открыть posting.php
Найти

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

 $post_data['post_text'] = $message_parser->message; 

Заменить

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

// Custom BBCode Rights
    include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
    // ----------------------
    $group_id = array(5,32);
    // ----------------------
    $users_id = $user->data['user_id'];
    $group_in = group_memberships($group_id, $users_id , true);
    if ($group_in !== true){
    if ($mode == 'quote' or $mode == 'reply'){
    // -----------------------------------
    $forbid = array('mw', 'mm', 'am', 'aw');
    // -----------------------------------
    foreach ($forbid as $forbid_bb){
    if (preg_match("/\[$forbid_bb\b(.*?)\](.*?)\[\/$forbid_bb\b(.*?)\]/s", $message_parser->message)){
    $forbid_show = implode(",", $forbid);
    $error[] = $user->lang['BBCODE_EXTRACTED'] . " $forbid_show1";}
    $search_bb[]  = "/\[$forbid_bb\b(.*?)\](.*?)\[\/$forbid_bb\b(.*?)\]/s";
    $replac_bb[]  = '';
    $custom_lite  = preg_replace($search_bb, $replac_bb, $message_parser->message);
    $post_data['post_text']  = $custom_lite;}}
    else{$post_data['post_text'] = $message_parser->message;}}
    else{$post_data['post_text'] = $message_parser->message;}
        // Custom BBCode Rights
в $forbid = array('mw', 'mm', 'am', 'aw'); можно добавить свои ббкоды, прописывать ббкоды надо без знака =
в $group_id = array(5,32); вносим или изменяем ID групп

Вроде бы все :) , теоретически вполне хватит запрета на использование ббкода п.3, но лучше его еще вырезать при цитировании сообщения с нашим ббкодом, что бы не было всяких лишних и не нужных кодов.
Все это выглядит так
Добавлено спустя 15 минут 42 секунды:
что не получилось сделать, а хотелось бы :) , при вставке кода автоматически добавлялся ник и время того кто добавляет сообщение пример http://www.ppkbb3cker.ru/viewtopic.php?t=91, но там для PHPBB2, может кто знает как сделать для PHPBB3?, пытался сделать на основе "кто редактировал сообщение", в includes/functions_posting.php
есть

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

	case 'edit_topic':

			// If edit reason is given always display edit info

			// If editing last post then display no edit info
			// If m_edit permission then display no edit info
			// If normal edit display edit info

			// Display edit info if edit reason given or user is editing his post, which is not the last within the topic.
			if ($data['post_edit_reason'] || (!$auth->acl_get('m_edit', $data['forum_id']) && ($post_mode == 'edit' || $post_mode == 'edit_first_post')))
			{
				$data['post_edit_reason']		= truncate_string($data['post_edit_reason'], 255, 255, false);

				$sql_data[POSTS_TABLE]['sql']	= array(
					'post_edit_time'	=> $current_time,
					'post_edit_reason'	=> $data['post_edit_reason'],
					'post_edit_user'	=> (int) $data['post_edit_user'],
				);

				$sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
			}
			else if (!$data['post_edit_reason'] && $mode == 'edit' && $auth->acl_get('m_edit', $data['forum_id']))
			{
				$sql_data[POSTS_TABLE]['sql'] = array(
					'post_edit_reason'	=> '',
				);
			}
может как то на основании его, добавить переменную в ббкод. Помогите кто может
Аватара пользователя
zzipper
Благодарил (а): 12 раз
Поблагодарили: 10 раз
Сообщения: 427
Зарегистрирован: 20 окт 2009, 14:15
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

10 мар 2011, 14:37

Что-то не кажет кнопку moder_tags, ни группе админов, ни группе модеров. ID групп выставлены и правильны. :(
Al
Aleksandor
Благодарил (а): 4 раза
Поблагодарили: 4 раза
Сообщения: 54
Зарегистрирован: 06 июн 2010, 10:37
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

10 мар 2011, 14:51

за показ кнопок отвечает это

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

<!-- IF U_ACP -->
<span><a href="#" title="Администраторские теги" onclick="
obj=this.parentNode.childNodes[1].style;
tmp=(obj.display!='block') ? 'block' : 'none';
obj.display=tmp;
return false;"><input type="button" class="btnbbcode" value="Admin_tags"></a><div style="display: none">
<br>
<input type="button" class="btnbbcode" value="am=" onmouseover="helpline('g')" style="text-decoration: underline; width: 40px" onclick="BBam()" title="Сообщение администратора" />
<input type="button" class="btnbbcode" value="aw=" onmouseover="helpline('h')" style="text-decoration: underline; width: 40px" onclick="BBaw()" title="Предупреждение администратора" />
<br><br>
</div></span>
<!-- ENDIF -->
<!-- IF U_MCP -->
<span><a href="#" title="Модераторские теги" onclick="
obj=this.parentNode.childNodes[1].style;
tmp=(obj.display!='block') ? 'block' : 'none';
obj.display=tmp;
return false;"><input type="button" class="btnbbcode" value="Moder_tags"></a><div style="display: none">
<br>
<input type="button" class="btnbbcode" value="mm=" onmouseover="helpline('k')" style="text-decoration: underline; width: 40px" onclick="BBmm()" title="Сообщение  модератора" />
<input type="button" class="btnbbcode" value="mw=" onmouseover="helpline('j')" style="text-decoration: underline; width: 40px" onclick="BBmw()" title="Предупреждение модератора" />
</div></span>
<!-- ENDIF -->
вставить нужно после

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

<!-- IF S_BBCODE_FLASH -->
         <input type="button" class="btnbbcode" accesskey="d" name="addbbcode18" value="Flash" onclick="bbstyle(18)" onmouseover="helpline('d')" onmouseout="helpline('tip')" />
      <!-- ENDIF -->
просмотрел код вроде правильный :)
Аватара пользователя
zzipper
Благодарил (а): 12 раз
Поблагодарили: 10 раз
Сообщения: 427
Зарегистрирован: 20 окт 2009, 14:15
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

10 мар 2011, 14:53

Да эт понятно, я этот кусок вдоль и поперек облазил уже. Если убрать условие U_MCP то кажет, но всем - не вариант. :-?
Al
Aleksandor
Благодарил (а): 4 раза
Поблагодарили: 4 раза
Сообщения: 54
Зарегистрирован: 06 июн 2010, 10:37
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

10 мар 2011, 14:57

тогда не знаю у меня показывает при условиях
<!-- IF U_MCP --> и <!-- IF U_ACP --> , может наш гуру подскажет :unknown:
jh
jheka7
Благодарил (а): 5 раз
Сообщения: 33
Зарегистрирован: 11 янв 2015, 02:53
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

27 янв 2015, 21:20

бред для автора!!! могу пояснить если нужно :) вот оригинал, сколько ставил работает на ура и не конфликтует, что типо текст и т.д. уже существует... замените его на и т.д.
jh
jheka7
Благодарил (а): 5 раз
Сообщения: 33
Зарегистрирован: 11 янв 2015, 02:53
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

02 июн 2015, 18:49

Приветствую! Не могу найти какое условие можно применить по id группы, вместо MCP что надо прописать?
<!-- IF U_MCP -->
Суть в том, что по условию MCP модератор не видит ВВ-код который я ему назначил, если меняю на АСР Админ видит.
В общем вот ссылка там разные условия http://hello-vitebsk.ru/viewtopic.php?f ... &start=100 это для наглядности.
Последний раз редактировалось jheka7 02 июн 2015, 22:15, всего редактировалось 4 раза.
Аватара пользователя
PPK
Администратор
Благодарил (а): 82 раза
Поблагодарили: 1621 раз
Сообщения: 10284
Зарегистрирован: 21 мар 2009, 17:13
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

03 июн 2015, 14:22

/includes/functions.php после

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

	// The following assigns all _common_ variables that may be used at any point in a template.
	$template->assign_vars(array(
добавить

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

		'USER_GROUP_ID' => $user->data['group_id'],
в шаблонах использовать

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

<!-- IF USER_GROUP_ID == ID_ГРУППЫ -->текст<!-- ENDIF -->

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

<!-- IF USER_GROUP_ID != ID_ГРУППЫ -->текст<!-- ENDIF -->
t4
t4p2
Откуда: Okayma
Благодарил (а): 9 раз
Сообщения: 134
Зарегистрирован: 31 июл 2015, 20:34
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

11 авг 2015, 05:49

Хотела попробовать установить этот мод на сборку 3.0.14, а мне в самом первом шаге:

Выдает следующее:

Подскажите пожалуйста, как установить мод Предупреждения... на сборку 3.0.14 плз :|
Аватара пользователя
i926
Откуда: Санкт-Петербург
Благодарил (а): 38 раз
Поблагодарили: 67 раз
Сообщения: 446
Зарегистрирован: 21 сен 2010, 18:55
Сообщение

Предупреждения и сообщения администратора и модератора BBcode

11 авг 2015, 13:23

t4p2 писал(а):Выдает следующее:
Игнорировать. Нажать на "ДА"
Настройка серверной части трекера - ppkbb3cker

Вернуться в «Минимоды и хаки для phpBB3»