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

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

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

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

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

Sebastyan

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно, чтобы гости постили под своими никами, но хак guest_name ставить не стал - велик не вмеру.
Привожу свою версию.
 
Что получаем:
 
Гости могут отвечать в топиках под произвольными никами
Гости могут начинать темы под произвольными никами
Всё гостевые ники ("Guest" не исключение) подсвечиваются определённым цветом (по желанию текстовая приставка, см. P.P.S.)
Ники гостей как латиницей, так и по-русски.
 
Что не реализовано:
Как на гл. странице, таки и в списке топиков любой ник гостя по-прежнему выводится как "Guest"
 
Файл post.cgi:
--------------
В "sub addreply" после строк:

Код:
sub addreply { # start routine
    ### Lets sort out the flood control, incase they used the back button...
 
    &getmember("$inmembername");

 
добавить:

Код:
if ($userregistered eq "no") {$tempguest=$inmembername; $inmembername="Guest"; $userregistered=""; &getmember("$inmembername");}
 

Найти строки (ковыряем хак склейки постов):
       
Код:
$num = $totalthreadposts-1;
        ($inmembername_OLD, $topictitle_OLD, $postipaddress_OLD, $inshowemoticons_OLD, $inshowsignature_OLD, $currenttime_OLD, $inpost_OLD) = split (/\|/, $allmessages[$num]);
        chomp ($inpost_OLD);

заменить на:
       
Код:
$num = $totalthreadposts-1;
        ($inmembername_OLD, $topictitle_OLD, $postipaddress_OLD, $inshowemoticons_OLD, $inshowsignature_OLD, $currenttime_OLD, $inpost_OLD, $tempguest_OLD) = split (/\|/, $allmessages[$num]);
        chomp ($inpost_OLD);
 

Чуть ниже найти строки:
       
Код:
$inpost_OLD = $inpost_OLD . $addon . "$inpost\n";
 

заменить на:
       
Код:
$inpost_OLD = $inpost_OLD . $addon . "$inpost|$tempguest_OLD\n";
 

Найти:
       
Код:
foreach $messages (@allmessages) {
            chomp $messages;
            $processed_data .= "$messages\n";
            }
        $processed_data .= "$inmembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost";
 

заменить на:
       
Код:
foreach $messages (@allmessages) {
            chomp $messages;
            $processed_data .= "$messages\n";
            }
        $processed_data .= "$inmembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost|$tempguest";
undef $tempguest;
 

 
В "sub threadreview" найти:
   
Код:
unless($reviewcount > 20) {
     
        ($membername, $topictitle, $postipaddress ,$showemoticons ,$showsignature ,$postdate ,$post) = split(/\|/, $threadline);
 

заменить на:
   
Код:
unless($reviewcount > 20) {
     
        ($membername, $topictitle, $postipaddress ,$showemoticons ,$showsignature ,$postdate ,$post , $tempguest) = split(/\|/, $threadline);
 

После
       
Код:
$post =~ s/\:\)/<img src=\"$imagesurl\/emoticons\/smile.gif\" border=\"0\">/g;
        $post =~ s/\;\)/<img src=\"$imagesurl\/emoticons\/wink.gif\" border=\"0\">/g;
        $post =~ s/\:\(/<img src=\"$imagesurl\/emoticons\/sad.gif\" border=\"0\">/g;
        $post =~ s/\:\o/<img src=\"$imagesurl\/emoticons\/shocked.gif\" border=\"0\">/g;
 

добавить:

Код:
$upmember = $membername;
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = $tempguest;}
 

Находим чуть ниже:
           
Код:
<td bgcolor="$miscbackone" rowspan=2 valign="top" width=20%><font face="$font" color=$fontcolormisc size=$dfontsize2>
            <b>$membername</b></font></td>
 

заменить на:
           
Код:
<td bgcolor="$miscbackone" rowspan=2 valign="top" width=20%><font face="$font" color=$fontcolormisc size=$dfontsize2>
            <b>$upmember</b></font></td>
 

 
В "sub addnewthread":
 
После строк:

Код:
sub addnewthread { # start routine
 
 
    ### Lets sort out the flood control, incase they used the back button...
 
    &getmember("$inmembername");
 

добавить:
   
Код:
if ($userregistered eq "no") {$tempguest=$inmembername; $inmembername="Guest"; $userregistered=""; &getmember("$inmembername");}
 

Найти:
       
Код:
# Create the new thread file
         
        $filetomake = "$ikondir" . "forum$inforum/$newthreadnumber.thd";
        $filetomake = &stripMETA($filetomake);
        open(FILE, ">$filetomake");
          #flock(FILE, 2);
        print FILE "$inmembername|$intopictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost";
        close(FILE);
 

заменить на:
       
Код:
# Create the new thread file
         
        $filetomake = "$ikondir" . "forum$inforum/$newthreadnumber.thd";
        $filetomake = &stripMETA($filetomake);
        open(FILE, ">$filetomake");
          #flock(FILE, 2);
        print FILE "$inmembername|$intopictitle|$postipaddress|$inshowemoticons|$inshowsignature|$currenttime|$inpost|$tempguest";
        close(FILE);
undef $tempguest;
 

 
Файл topic.cgi:
--------------
Найти:
   
Код:
foreach (@threads[$startarray .. $endarray]) {
 
        ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$_);
 

заменить на:
   
Код:
foreach (@threads[$startarray .. $endarray]) {
 
        ($membername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post, $tempguest) = split(/\|/,$_);
        if ($tempguest) {chomp($tempguest);}
 

После строк:
       
Код:
$postdate = $postdate + ($timedifferencevalue*3600) + ($timezone*3600);
        $postdate = &dateformat("$postdate");
     
        &getmember("$membername");
        $mname=$membername;

добавить:
       
Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$mname = $tempguest;}
 

 
Сразу после:
               
Код:
elsif ($membercode eq "banned") {
                    $posterfontcolor = "$posternamecolor";
                    $membergraphic = "";
                    $membertitle = "$ibtxt{'3010'}";
                    }
                    else { $posterfontcolor = "$posternamecolor"; }

добавить:

Код:
if ($membername eq $ibtxt{'0043'}) { $gueststyle="style=\"color: #8C8C8C\""; }
    else {undef $gueststyle;}
 

(здесь был назначен цвет ников всех незарегистрированных юзеров (color: #8C8C8C), меняйте на нужный)
 
Найти:
   
Код:
$output .= qq~
    <!--Begin Msg Number $postcountnumber-->
<tr>
<td bgcolor="$postbackcolor">

 
выше этих строк добавить:

Код:
$upmember = $membername;
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = $tempguest;}
 

Найти:
           
Код:
<font face="$posternamefont" color="$posterfontcolor" size="$dfontsize2">
            <a href="javascript:paste('$mname')"><b>$membername</b></a></font>  
            <br>$useravatar
 

заменить на:
 
           
Код:
<font face="$posternamefont" color="$posterfontcolor" size="$dfontsize2">
            <a $gueststyle href="javascript:paste('$mname')"><b>$upmember</b></a></font>  
            <br>$useravatar
 

 
Файл postings.cgi:
--------------
В "sub processedit":
Найти:
           
Код:
@allthreads = <FILE>;
            close(FILE);
             
            ($postermembername, $topictitle, $postipaddress, $showemoticons, $showsignature ,$postdate, $post) = split(/\|/, @allthreads[$posttoget]);
 

Заменить на:
           
Код:
@allthreads = <FILE>;
            close(FILE);
             
            ($postermembername, $topictitle, $postipaddress, $showemoticons, $showsignature ,$postdate, $post, $tempguest) = split(/\|/, @allthreads[$posttoget]);
chomp($tempguest);
 

Найти:
           
Код:
chomp $postline;
                if ($postcountcheck eq $posttoget) {
                    $processed_data .= "$postermembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$postdate|$inpost\n";
                    }
 

Заменить на:
           
Код:
chomp $postline;
                if ($postcountcheck eq $posttoget) {
                    $processed_data .= "$postermembername|$topictitle|$postipaddress|$inshowemoticons|$inshowsignature|$postdate|$inpost|$tempguest\n";
                    }
 

 
------------------------
 
P.S. Дабы ограничить количество вводимых символов ника (если у вас это ещё не сделано):
в post.cgi:
 
найти строки (всего 3 (!!!) вхождения, исправить, соответственно, 3 строки)

Код:
<input type=text size=20 name="membername" value="$inmembername">
 

заменить на:

Код:
<input type=text size=20 maxlength=20 name="membername" value="$inmembername">
 

 
то же в topic.cgi:
 
найти строку (1 вхождение)

Код:
<input type=text size=20 name="membername" value="$inmembername">
 

заменить на:

Код:
<input type=text size=20 maxlength=20 name="membername" value="$inmembername">
 

 
(обратите внимание: maxlength=20
Решайте сами, увеличивать или нет максимальное кол-во символов в поле имени)
 
P.P.S. Если вы хотите, чтобы в топике все ники гостей были сразу узнаваемы не только по цвету, но и по текстовой приставке
(например не "Вася", а "Guest Вася") нужно исправить (ес-но, после всех вышеприведенных исправлений):
Найти (в topic.cgi):

Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = $tempguest;}
 

заменить на:

Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = "Guest $tempguest";}
 

 
Найти:

Код:
 
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$mname = $tempguest;}
 

заменить на

Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$mname = "Guest $tempguest";}
 

 
Найти (в post.cgi):

Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = $tempguest;}
 

заменить на:

Код:
if ($membername eq $ibtxt{'0043'} && $tempguest ne "") {$upmember = "Guest $tempguest";}
 

 
Бэкаптесь и тестируйте

Всего записей: 34 | Зарегистр. 06-11-2003 | Отправлено: 19:53 12-07-2004
Открыть новую тему     Написать ответ в эту тему

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru