Ужасно раздражает допотопная система обмена сообщениями на сайте, стартует цикл статей по улучшению этого модуля.
Часть 1: Ответ
Каждый пользователь DLE хоть раз да отвечал на сообщение пользователя в PM и знает сколько нужно сделать действий. И это ужасное цитирование, чувствуешь себя стариком, он тебе каждый раз вставляет цитирование только что отправленного сообщения, ужс.Обойдем действие кнопки ответ и выведем окно ответа и возможные ограничения сразу при чтении сообщения.
Установка
1. Открываем engine/modules/pm.php
Находим:
land, icq, xfields
Заменяем на:
land, icq, xfields, pm_all
Найти:
$tpl->set( '{text}', stripslashes( $row['text'] ) );
Заменить на: Показать / Скрыть текст
$tpl->set( '{pm-text}', stripslashes( $row['text'] ) );
$ar = true;
/* Начинаем вывод поля для ответа*/
// Проверка, что не гасится
$srow = $db->super_query( "SELECT id FROM " . USERPREFIX . "_ignore_list WHERE user=(SELECT user_id FROM " . USERPREFIX . "_users WHERE name='{$row['user_from']}' ) AND user_from='{$member_id['name']}'" );
if(!empty($srow)) {$ar = false; $err .= "
".$lang['pm_ignored']."
";}
$db->free();
// Проверка на максимум сообщений у него
if( $user_group[$row['user_group']]['max_pm'] AND $row['pm_all'] >= $user_group[$row['user_group']]['max_pm'] AND $member_id['user_group'] != 1 ) {
$ar = false; $err .= "
".$lang['pm_err_8']."
";
}
if ($ar AND $row['folder'] == "inbox") {
$ajax_form =
set( '[recaptcha]', "" );
$tpl->set( '[/recaptcha]', "" );
$tpl->set( '{recaptcha}', '
' );
$tpl->set_block( "'[sec_code](.*?)[/sec_code]'si", "" );
$tpl->set( '{sec_code}', "" );
} else {
$tpl->set( '[sec_code]', "" );
$tpl->set( '[/sec_code]', "" );
$path = parse_url( $config['http_home_url'] );
$tpl->set( '{sec_code}', "![${lang['sec_image']}]()
{$lang['reload_code']}" );
$tpl->set_block( "'[recaptcha](.*?)[/recaptcha]'si", "" );
$tpl->set( '{recaptcha}', "" );
}
} else {
$tpl->set( '{sec_code}', "" );
$tpl->set( '{recaptcha}', "" );
$tpl->set_block( "'[recaptcha](.*?)[/recaptcha]'si", "" );
$tpl->set_block( "'[sec_code](.*?)[/sec_code]'si", "" );
}
if( $user_group[$member_id['user_group']]['pm_question'] ) {
$tpl->set( '[question]', "" );
$tpl->set( '[/question]', "" );
$question = $db->super_query("SELECT id, question FROM " . PREFIX . "_question ORDER BY RAND() LIMIT 1");
$tpl->set( '{question}', "".htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] )."" );
$_SESSION['question'] = $question['id'];
} else {
$tpl->set_block( "'[question](.*?)[/question]'si", "" );
$tpl->set( '{question}', "" );
}
$text = "";
$tpl->set( '{reply-author}', $row['user_from'] );
if (strpos ( $row['subj'], "RE:" ) === false)
$tpl->set( '{reply-subj}', "RE: " . stripslashes( $row['subj'] ) );
else
$tpl->set( '{reply-subj}', stripslashes( $row['subj'] ) );
if( $config['allow_comments_wysiwyg'] ) {
include_once ENGINE_DIR . '/editor/comments.php';
$bb_code = "";
$allow_comments_ajax = true;
} else
include_once ENGINE_DIR . '/modules/bbcode.php';
if( $config['allow_comments_wysiwyg'] ) {
$tpl->set( '{editor}', $wysiwyg );
} else {
$tpl->set( '{editor}', $bb_code );
}
$tpl->set( '{text}', $text );
if( $config['sec_addnews'] ) {
$salt = str_shuffle("abchefghjkmnpqrstuvwxyz");
$random_key = "";
for($i = 0; $i < 8; $i ++) {
$random_key .= $salt{rand( 0, 23 )};
}
$_SESSION['id_key'] = $random_key;
$random_key = "";
} else
$random_key = "";
if( $config['allow_comments_wysiwyg'] == "2") $tpl->copy_template = "n" . $tpl->copy_template . "{$random_key}";
else $tpl->copy_template = "n" . $tpl->copy_template . "{$random_key}";
} else $tpl->set_block( "'[quick-reply].*?[/quick-reply]'si", $err );
2. Открыть templates/YOURTEMPLATE/pm.tpl
Между тегами [readpm] … [/readpm] в нужное вам место вставить:
[quick-reply]
[sec_code] [/sec_code] [recaptcha] [/recaptcha] [question] [/question]
{editor} | |
Код:* | {sec_code} |
Введите два слова, показанных на изображении:* | {recaptcha} |
Вопрос: | {question} |
Ответ:* |
Отправить [/quick-reply]
Я лично удалил кнопку просмотра сообщения, но в инструкции оставил (кто нибудь ей вообще пользовался !?) )
Найти между тегами [newpm] … [/newpm]:
{text}
Заменить на
{pm-text}
3. Открыть engine/ajax/pm.php
Найти:
$tpl->set( '{text}', stripslashes($text) );
Заменить на:
$tpl->set( '{pm-text}', stripslashes($text) );
$tpl->set_block( "'[quick-reply].*?[/quick-reply]'si", "" );
$tpl->set_block( "'[reply].*?[/reply]'si", "" );
$tpl->set_block( "'[del].*?[/del]'si", "" );
$tpl->set_block( "'[complaint].*?[/complaint]'si", "" );
$tpl->set_block( "'[ignore].*?[/ignore]'si", "" );
Тем самым еще удалили при просмотре кнопки Пожаловаться / Удалить / Игнорить / Ответить
Готово.
Сайт автора: dark5ider.ru