Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Админ и модер могут выбирать, писать ли "исправлено"

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Админ и модер могут выбирать, писать ли "исправлено" при правке ими поста

 
 
Стандартно в IB если админ правит пост, то надпись о правке не отображается, а если простой мебер - отображается.
Неудобно, правда?
Я предлагаю хак, позволяющий при правке указать, выводить эту надпись или нет. В окошко правки мессаги добавляется чекбокс, если он выделен, то надпись есть, если нет, то нет.
Простые мемберы этой галки не видят, видят только админ и модератор текущего раздела.
Откройте postings.cgi
НАЙДИТЕ код:

Код:
 
'forum','topic','membername','password','action','postno',
 

Добавьте в конец строки (без пробелов!) код:

Код:
 
'invieweditline',
 

Здесь мы добавили чтение ещё одного поля формы.
НАЙДИТЕ подпрограмму sub editform:

Код:
sub editform { # start form

Далее все действия идут в ней.
Опуститесь чуть-чуть ниже, найдите код:

Код:
### Print form
 
&getforum("$inforum");
&getmember("$inmembername");
 

НИЖЕ ДОБАВЬТЕ:

Код:
&moderator;

НАЙДИТЕ код:

Код:
 
if ($emoticons eq "on") {
    $emoticonslink = qq~<a href="javascript:openScript('$miscprog?action=showsmilies',300,350)">$ibtxt{'1408'}</a>~;
    $emoticonsbutton =qq~<input type=checkbox name="inshowemoticons" value="yes" checked>$ibtxt{'1409'}<br>~;
    }
 

НИЖЕ ДОБАВЬТЕ:

Код:
 
# Editing post select hack by Alexander Ipp
if ($membercode eq "ad" || $inmembmod eq "yes") { $vieweditlineoutput = qq~<font face="$font" color=$fontcolormisc size=$dfontsize1>
<input type=checkbox name="invieweditline" value="yes" checked>Отображать надпись о том, что сообщение исправлено?
</font><br>~; }
else
{ $vieweditlineoutput = ""; }
# End of editing post
 

Здесь делается проверка на то, выводить чекбокс с выбором того, показывать надпись о редактировании или нет. Зависит от того, является ли смотрящий форму администратором или модератором текущего раздела, или нет.  
НАЙДИТЕ:

Код:
 
<b>$ibtxt{'1427'}</b><input name="previewfirst" type="radio" value="yes"> $ibtxt{'0130'} &nbsp; <input name="previewfirst" type="radio" value="no" checked> $ibtxt{'0129'}
</font></td>
</tr>
<tr>
<td bgcolor=$miscbackone valign=middle align=left valign=middle>
<font face="$font" color=$fontcolormisc size=$dfontsize1><b>$ibtxt{'1536'}</b></td>
<td bgcolor=$miscbackone valign=middle align=left valign=middle>
<font face="$font" color=$fontcolormisc size=$dfontsize1>
<input type=checkbox name="deletepost" value="yes">$ibtxt{'1535'}
</font></td></tr>
<tr>
<td bgcolor=$miscbackone valign=middle colspan=2 align=center>
<input type=Submit value=$ibtxt{'0039'} name=Submit> &nbsp; <input type="reset" name="Clear">
</form>
</td></tr></table></tr></td></table>
 

ВЫШЕ ДОБАВЬТЕ:

Код:
 
$vieweditlineoutput
 

Здесь просто добавляется вывод в форму переменной, значение которой мы определили на прошлом шаге, содержащей HTML-код чекбокса и надписи.
Опускаемся ниже, находим:

Код:
 
sub processedit {
# В этой подпрограмме ищем:
            unless ($membercode eq "ad") {
                $inpost = qq~$inpost<p>[s]($ibtxt{'1537'} $inmembername $ibtxt{'0010'} $editpostdate)[/s]~;
                }
 

ЗАМЕЧАНИЕ: Код

Код:
 
$inpost = qq~$inpost<p>[s]($ibtxt{'1537'} $inmembername $ibtxt{'0010'} $editpostdate)[/s]~;

может быть немного иным, это определяет вид надписи, выводящейся в сообщении после правки.
ЗАМЕНЯЕМ весь этот код на следующий:

Код:
 
            if (((($membercode eq "ad") || ($inmembmod eq "yes")) && ($inpassword eq $password)) && ($invieweditline eq "yes")) { $vieweditline = "yes"; }
            elsif (((($membercode eq "ad") || ($inmembmod eq "yes")) && ($inpassword eq $password)) && ($invieweditline ne "yes")) { $vieweditline = "no"; }
            else { $vieweditline = "yes"; }
            unless ($vieweditline ne "yes") {
 
                $inpost = qq~$inpost<p>[s][color=#999999][Исправлено: $inmembername, $editpostdate][/color][/s]~;
                }
 

Здесь просто делается проверка, и в зависимости от её результата к тексту сообщения добавляется (или не добавляется) надпись.
Вы можете изменить код

Код:
[s][color=#999999][Исправлено: $inmembername, $editpostdate][/color][/s]

по своему усмотрению, меняя вид надписи об изменении сообщения. Переменная $inmembername - это имя исправляющего, $editpostdate - время правки.
Это всё.
Удачи всем! :)

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 21:28 24-02-2002 | Исправлено: lynx, 05:47 30-06-2003
Vasya Pupkin



Мракобес
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, на локалхосте пашет.

----------
я не люблю людей

Всего записей: 7067 | Зарегистр. 24-02-2001 | Отправлено: 19:44 26-02-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так, кусок упустил. Первый пост уже исправил, теперь для остальных:
Найдите в postings.cgi подпрограмму sub editform:

Код:
sub editform { # start form

Далее ковыряем именно её.
Опуститесь чуть-чуть ниже, найдите код:

Код:
### Print form
 
&getforum("$inforum");
&getmember("$inmembername");
 

НИЖЕ ДОБАВЬТЕ:

Код:
&moderator;

Всё. Иначе только админ мог бы видеть флажок выбора того, показывать ли подпись.

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 10:07 27-02-2002
Vasya Pupkin



Мракобес
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexander Ipp, блин. Хорошо, что я в реале не поставил. Все надо тестить всеми возможными и невозможными способами.


----------
я не люблю людей

Всего записей: 7067 | Зарегистр. 24-02-2001 | Отправлено: 19:54 27-02-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vasya Pupkin
Портировать хаки с сильномодифицированной конфы на стандартную довольно непросто...

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 09:28 28-02-2002
BigMurzik



Местный кот
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexander Ipp
кинь этот хак на мыо(в профиле), желательно в архиве и с тхт файлом, а то в онлайне редактить не особо хотца =)

----------
В Калининграде лета нет и похоже уже не будет :(

Всего записей: 1967 | Зарегистр. 23-10-2001 | Отправлено: 00:49 01-03-2002
Alexander Ipp



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BigMurzik
А жирно не будет?
Потом кину, если руки дойдут...
А что, дисконнектится от инета - проблема уже?..

Всего записей: 1943 | Зарегистр. 20-08-2001 | Отправлено: 21:05 01-03-2002
DeviL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
установил Хак все работает, но только когда правлю свои сообщения, когда чужие пишет  

Цитата:
[Исправлено: Guest]

в чем грабли?
 
сделал все как описано в прибитом посте.

----------
а вот и моя подпись :))

Всего записей: 268 | Зарегистр. 24-10-2003 | Отправлено: 21:41 14-10-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeviL
 
Дай свои файлы ikon.lib, postings.cgi и topic.cgi
 
Сделай их них txt файлы. положи куда и дай ссылку.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 21:58 14-10-2004
DeviL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx
залил сюда.
Посмотри плиз.

----------
а вот и моя подпись :))

Всего записей: 268 | Зарегистр. 24-10-2003 | Отправлено: 17:41 15-10-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeviL
 
postings.cgi
 
Начиная со строки 1105, код должен быть таким:
 

Код:
 
#&getmember("$postermembername"); <-- это убрать
&gettopicmember("$postermembername"); #это написать
 
$postermembercodesec = $membercode;  
#&getmember("$inmembername"); <-- это убрать
if (($postermembercodesec eq "ad") && ($inmembmod eq "yes") && ($membercode ne "ad")) {  
$cleartoedit = "no";  
&error("Редактирование сообщения&Модераторы не могут изменять сообщения администраторов");  
}  
        unless ($cleartoedit eq "yes") { $cleartoedit eq "no"; }
 
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 23:26 15-10-2004
DeviL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx
да. действительно заработало.
просто ОГРОМНЫЙ респект. жутко помогла

----------
а вот и моя подпись :))

Всего записей: 268 | Зарегистр. 24-10-2003 | Отправлено: 23:51 15-10-2004
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Админ и модер могут выбирать, писать ли "исправлено"


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru