yura3d |
Отправлено: 21 июня 2009 — 12:43
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Очередное исправление для ExBB FM 1.0 RC1, подойдёт также для пользователей старой версии ExBB FM 1.0 Beta. Исправлена проблема, при которой ранее добавленную подпись редактора (при редактировании сообщений пользователей администраторами или модераторами) нельзя было убрать. Также, как производная от этой проблемы, нельзя было заблокировать для редактирования сообщение пользователя, если подпись редактора не добавлена. Проблемы были описаны здесь и здесь
Исправление (Отобразить)Для устранения проблемы открываем файл postings.php, находим строки (приведённый ниже фрагмент встречается в файле 2 раза, нас интересует только первая встреча):
CODE:$lockedit = isset($topic[$post_id]['lockedit']) ? TRUE:FALSE;
if ($lockedit == TRUE && $fm->_Moderator === FALSE) {
$fm->_Message($fm->LANG['MessageEdit'],$fm->LANG['EditingBlocked']);
}
И под ними добавляем строку:
CODE:$modertext = isset($topic[$post_id]['ad_edited']) || isset($topic[$post_id]['mo_edited']);
Далее в этом же файле ищем строку:
CODE:$lockedit = ($fm->_Boolean($fm->input,'lockedit') === TRUE) ? TRUE:FALSE;
И под ней добавляем строку:
CODE:$modertext = $fm->_Boolean($fm->input, 'modertext');
Затем ищем строку:
CODE:$lockedit_yes = ($lockedit === TRUE) ? ' checked':'';
И перед ней вставить строки:
CODE:$modertext_yes = ($modertext === TRUE) ? ' checked="checked"' : '';
$modertext_no = ($modertext === FALSE) ? ' checked="checked"' : '';
Теперь в этом же файле ищем фрагмент кода:
CODE:$fm->_Boolean($fm->input,'modertext');
if ($fm->_Moderator === TRUE && $topic[$post_id]['p_id'] !== $fm->user['id'] && $fm->input['modertext'] === TRUE) {
if ($fm->input['mo_text'] !== '') {
$topic[$post_id]['mo_text'] = $fm->input['mo_text'];
}
$topic[$post_id]['lockedit'] = ($fm->_Boolean($fm->input,'lockedit') === TRUE) ? TRUE:FALSE;
if ($topic[$post_id]['lockedit'] === FALSE) {
unset($topic[$post_id]['lockedit']);
}
if (defined('IS_ADMIN')) {
$topic[$post_id]['ad_editor'] = $fm->user['name'];
$topic[$post_id]['ad_edited'] = $fm->_Nowtime;
if (isset($topic[$post_id]['mo_editor'])) {
unset($topic[$post_id]['mo_editor'],$topic[$post_id]['mo_edited']);
}
} else {
$topic[$post_id]['mo_editor'] = $fm->user['name'];
$topic[$post_id]['mo_edited'] = $fm->_Nowtime;
}
} elseif ($fm->_Moderator === FALSE) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
Заменяем его фрагментом:
CODE:$fm->_Boolean($fm->input,'modertext');
if ($fm->_Moderator === TRUE) {
$topic[$post_id]['lockedit'] = ($fm->_Boolean($fm->input,'lockedit') === TRUE) ? TRUE:FALSE;
if ($topic[$post_id]['lockedit'] === FALSE) {
unset($topic[$post_id]['lockedit']);
}
if ($topic[$post_id]['p_id'] !== $fm->user['id'] && $fm->input['modertext'] === TRUE) {
if ($fm->input['mo_text'] !== '') {
$topic[$post_id]['mo_text'] = $fm->input['mo_text'];
}
if (defined('IS_ADMIN')) {
$topic[$post_id]['ad_editor'] = $fm->user['name'];
$topic[$post_id]['ad_edited'] = $fm->_Nowtime;
unset($topic[$post_id]['mo_editor'], $topic[$post_id]['mo_edited']);
} else {
$topic[$post_id]['mo_editor'] = $fm->user['name'];
$topic[$post_id]['mo_edited'] = $fm->_Nowtime;
unset($topic[$post_id]['ad_editor'], $topic[$post_id]['ad_edited']);
}
}
else {
unset($topic[$post_id]['mo_text'], $topic[$post_id]['ad_editor'], $topic[$post_id]['ad_edited'],
$topic[$post_id]['mo_editor'], $topic[$post_id]['mo_edited']);
}
} else {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}
Останется только внести небольшие изменения в файл скина templates/ваш_скин/post_edit.tpl, а именно найти строки:
CODE:<input name="modertext" type="radio" value="yes" checked> {$fm->LANG['Yes']}
<input name="modertext" type="radio" value="no"> {$fm->LANG['No']}
И заменить их строками:
CODE:<input name="modertext" type="radio" value="yes"{$modertext_yes}> {$fm->LANG['Yes']}
<input name="modertext" type="radio" value="no"{$modertext_no}> {$fm->LANG['No']}
На этом всё |
|
|
yura3d |
Отправлено: 21 июня 2009 — 14:15
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
electron пишет:хотел было исправить, но сразу уперся в тот факт что это
yura3d пишет:CODE:$lockedit = isset($topic[$post_id]['lockedit']) ? TRUE:FALSE;
if ($lockedit == TRUE && $fm->_Moderator === FALSE) {
$fm->_Message($fm->LANG['MessageEdit'],$fm->LANG['EditingBlocked']);
}
встречается два раза. в обоих случаях добавлять строку?
Действительно, спасибо за комментарий. Добавлять строку нужно только после первой встречи данного фрагмента |
|
|
yura3d |
Отправлено: 23 июня 2009 — 10:45
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
robert пишет:Поставил. Вроде ни где не ошибся, но пишет ошибки:
Действительно, забыл описать одно изменение
В файле postings.php нужно найти строку:
CODE:$lockedit_yes = ($lockedit === TRUE) ? ' checked':'';
И перед ней вставить строки:
CODE:$modertext_yes = ($modertext === TRUE) ? ' checked="checked"' : '';
$modertext_no = ($modertext === FALSE) ? ' checked="checked"' : '';
Это нужно сделать всем, даже тем, у кого сообщения об ошибках не выводятся. Инструкцию по установке исправления обновил в соответствие с этим недочётом |
|
|
|