ExBB Community » » Настройка форума » Фраза "Отредактировано автором"

Страниц (2): « 1 [2]
 

16. Nikela - 9 марта 2011 — 23:38 - перейти к сообщению
Таня, Танечка, Вы моя спасительница Сердце Сердце Сердце
Я даже на днях Юре в личку написала, что готова оплатить этот мод, бо эта фраза просто достала, а тут оказывается делов-то Радость пора мне начать изучать php Радость
17. yura3d - 10 марта 2011 — 00:37 - перейти к сообщению
Таня пишет:
В примере из текущего времени отнимается $post_id, которая равна времени публикации сообщения и если разница меньше заданной то параметр edited ( и соответственно надпись "Отредактировано автором..." ) к сообщению не добавляется.

Вариант с использованием переменной $post_id не очень хорош тем, что в ней хранится дата публикации сообщения без учёта того, что сообщение может быть дополнено автором впоследствии (опция склеивания сообщений, которая как раз включена на форуме Nikela, интервал склеивания равен 5-ти минутам). В результате, если после дополнения своего сообщения пользователь захочет его отредактировать, вновь получим пресловутое "Отредактировано автором...", поскольку сравнение происходит по времени публикации самой первой части сообщения
Правильным будет в файле postings.php первоначальные строки:
CODE:
} elseif ($fm->_Moderator === FALSE) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}

заменить строками:
CODE:
} elseif ($fm->_Moderator === FALSE && $fm->_Nowtime - $list[$topic_id]['postdate'] > 180) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}

Здесь по сути меняется только 1-ая строка, полностью фрагмент приведён только чтобы было понятно, где её искать. Здесь мы извлекаем время публикации последней части сообщения из списка тем - $list[$topic_id]['postdate']. В результате после дополнения своего сообщения пользователь получит новые 3 минуты его редактирование без указания информации о редактировании
18. Таня - 12 марта 2011 — 01:25 - перейти к сообщению
5 минут... мало очень, планирую 2 часа сделать, оно же ни на что не влияет.

У меня другая строка, вместо

CODE:
} elseif ($fm->_Moderator === FALSE) {
$topic[$post_id]['edited'] = $fm->_Nowtime;
}


CODE:
}else{
$topic[$post_id]['edited']=$fm->_Nowtime;
}


Видимо потому, что делала исправления по этим отметкам (там кажется админская правка не стиралась никак), выложенные тут на форуме, потому решение пришлось делать универсальным, чтобы работало как с исправлением, так без него.

Второй вариант с дополнительными 3 минутами после склейки тоже красиво, хотя дополнение (склейка) по сути тоже есть редакция.
(Добавление)
Сейчас проверила - да, у меня сделано исправление и что интересно модераторы/администраторы могут редактировать свои сообщения без отметки о редакции.

Сочла это несправедливостью Хм и в postings.php перед строкой

CODE:
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));


добавила строчку

CODE:
if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>180)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
19. Nikela - 12 марта 2011 — 06:07 - перейти к сообщению
У меня вопрос, хотела установить вот этот мод - http://exbb.info/community/topic...88238#1245588238, чтобы удалять надпись о моем редактировании, но возникла сложность с последним изменением в файле postings.php, т.к. сейчас этот кусок кода (из-за описанных выше правок) выглядит у меня так:
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 && $fm->_Nowtime - $list[$topic_id]['postdate'] > 300) {
$topic[$post_id]['edited'] = $fm->_Nowtime;

Не хотелось бы напортачить, заранее спасибо. Закатив глазки
20. Таня - 12 марта 2011 — 15:24 - перейти к сообщению
Nikela, это до применения исправления для удаления отметки о редактировании администратором, на которое у Вас ссылка в сообщении.

Скоро на меня Юра наверное обидится Улыбка, но я нашла там еще один неприятный момент - надпись о правке показывается раньше подписи пользователя, что совсем плохо смотрится.
Ввела в topic.php еще одну переменную, чтобы это исправить, но сейчас не об этом.


Вот мой отрезок кода из postings.php, если применять, то обязательно после исправления (ссылка выше) и естественно сделав резервную копию файла postings.php.

Вариант с отметкой о редактировании своих постов, если автор Администратор/Модератор:

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{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));


Вариант с закомментированной строкой, тут Администраторы могут править свои сообщения без отметок:

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{
if($fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //время редактирования без отметки о редактировании автором
}
//if($fm->_Moderator===TRUE&&$topic[$post_id]['p_id']==$fm->user['id']&&$fm->_Nowtime-$post_id>300)$topic[$post_id]['edited']=$fm->_Nowtime; //редакция своих постов модераторами
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));


Возможно, строка для правки своих сообщений Администраторами/Модераторами не идеальна, но думаю это нужно/можно опционально вынести в админку. Если такая возможность не требуется закомментированную строку можно совсем удалить.

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

CODE:
$topic[$post_id]['post']=$fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));


не изменяется, я её привела для определения места окончания отрезка кода.

Юра наверное еще подправит, уже под вариант с исправлением, в моем варианте 300 секунд (подставила как у Nikela, чтобы меньше возиться) дается на правку без отметки о редактировании с момента публикации сообщения.
21. Nikela - 12 марта 2011 — 20:29 - перейти к сообщению
Что-то у меня не получается Однако

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

Попробую описать свою проблему. Имеем пост - http://www.shopzona.info/forum/t...64151#1299264151 (простите, но я привожу ссылку на пост, а открывается целая страница, моя проблема в 6 посте сверху)
Хочу: удалить пометку о моем редактировании.

Сделала правки согласно инструкции + при последнем редактировании postings.php взяла фрагмент Тани. Залила на хост.

Захожу в редактирование поста и вижу:


Ни одно из выполненных мной действий не удаляет пометки о моем редактировании.

Прикладываю свой файл postings.php.
Работает все нормально, ошибки не выпадают.
22. yura3d - 12 марта 2011 — 21:50 - перейти к сообщению
Nikela пишет:
Ни одно из выполненных мной действий не удаляет пометки о моем редактировании.

Хм, странно. Закачал Ваш файл на тестовый форум в локалке - все пометки о редактировании удаляются, достаточно только напротив пункта Добавить подпись редактора? выбрать нет. Также проверил правки в этом файле, связанные с данным исправлением, никаких ошибок не обнаружил Хм
23. Nikela - 12 марта 2011 — 23:15 - перейти к сообщению
yura3d, мои извинения, я перезалила по новой файл и все заработало!!! Пляшу от радости

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0205]     [ ]