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

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

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

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

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

Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Персональные статусы - пользователь сам может выбирать

 
 
Такое изменение кода позволит пользователям, с Вашего разрешения, прописывать себе персональные статусы.
Есть три возможности:
1) не разрешать самовольно писать персональные статусы
2) разрешить только модераторам
3) разрешить всем пользователям, но с определенного числа постов.
 
Поехали...
 
Открываем setmembertitles.cgi и после

Код:
 
<form action="$thisprog" method="post">
<input type=hidden name="action" value="process">

вставляем

Код:
 
<tr>
                <td bgcolor=#FFFFFF valign=middle align=center colspan=2>
                <font face=verdana color=#990000 size=3><b>Персональные статусы</b>
                </font></td>
                </tr>
                ~;
                 
                $tempoutput = "<select name=\"persstatus\">\n<option value=\"n\">не разрешать\n<option value=\"m\">модераторам\n<option value=\"u\">пользователям\n</ select>\n";                  
                $tempoutput =~ s/value=\"$persstatus\"/value=\"$persstatus\" selected/;                  
                print qq~
                <tr>                  
                <td bgcolor=#FFFFFF valign=middle align=left width=40%>                  
                <font face=verdana color=#333333 size=1><b>Кому можно использовать персональные статусы?</b><br></font></td>
                <td bgcolor=#FFFFFF valign=middle align=left>                  
                $tempoutput</td>
                </tr>
                <tr>
                <td bgcolor=#FFFFFF valign=middle align=left width=40%>
                <font face=verdana color=#333333 size=1>Если было выбрано "пользователям", то укажите число постов с которого будет доступен персональный статус.</font></td>
                <td bgcolor=#FFFFFF valign=middle align=left>
                <input type=text size=18 name="persstatuspost" value="$persstatuspost"></td>
                </tr>

 Сохраняем и закрываем setmembertitles.cgi.
 Далее открываем profile.cgi.
после

Код:
require "ikon.lib";          # Require ikonboard ()
require "data/progs.cgi";    # Require prog names
require "data/boardinfo.cgi";# Require board info
require "data/styles.cgi";   # Require styles info
require "ikonmail.lib";      # Require styles info

дописываем

Код:
require "data/membertitles.cgi"; #читаем статусы

 
 в
 
Код:
sub modify {

 после
 
Код:
 
 <tr>
<td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1><b>$ibtxt{'1838'}</b><br>$ibtxt{'1839'}:</td>
<td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1>$tempoutput</font></td>
</tr>

вставляем

Код:
 
~;
#persstatus
if (($persstatus eq "m" && $membercode eq "mo") || ($persstatus eq "u" && (($numberofposts >= $persstatuspost) || ($membercode eq "mo"))))  
{$output .= qq~
<tr><td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Персональный статус:</b></td>
<td bgcolor=$miscbackone><input type=text size=20 name="newmembertitle" value="$membertitle"></td>
</tr>~;}
#persstatus end
$output .= qq~

в

Код:
sub savemodify {

это

Код:
 
$newpassword            = $query -> param('newpassword');
    $newshowemail           = $query -> param('newshowemail');
    $newhomepage            = $query -> param('newhomepage');
    $newaolname             = $query -> param('newaolname');
    $newicqnumber           = $query -> param('newicqnumber');
    $newlocation            = $query -> param('newlocation');
    $newinterests           = $query -> param('newinterests');
    $newtimedifference      = $query -> param('newtimedifference');
    $newemailaddress        = $query -> param('newemailaddress');
        $newsignature           = $query -> param('newsignature');
        $inuseravatar           = $query -> param('useravatar');
         
         
        $newsignature           = &unHTML("$newsignature");
        $inuseravatar           = &cleaninput("$inuseravatar");
    $newpassword            = &cleanarea("$newpassword");
    $newshowemail           = &cleanarea("$newshowemail");
    $newhomepage            = &cleanarea("$newhomepage");
    $newaolname             = &cleanarea("$newaolname");
    $newicqnumber           = &cleanarea("$newicqnumber");
    $newlocation            = &cleanarea("$newlocation");
    $newinterests           = &cleanarea("$newinterests");
    $newtimedifference      = &cleanarea("$newtimedifference");
    $newemailaddress        = &cleanarea("$newemailaddress");  

меняем на

Код:
 
$newpassword            = $query -> param('newpassword');
    $newshowemail           = $query -> param('newshowemail');
    $newhomepage            = $query -> param('newhomepage');
    $newaolname             = $query -> param('newaolname');
    $newicqnumber           = $query -> param('newicqnumber');
    $newlocation            = $query -> param('newlocation');
    $newinterests           = $query -> param('newinterests');
    $newtimedifference      = $query -> param('newtimedifference');
    $newemailaddress        = $query -> param('newemailaddress');
        $newsignature           = $query -> param('newsignature');
        $inuseravatar           = $query -> param('useravatar');
        $newmembertitle         = $query -> param('newmembertitle');
         
        $newsignature           = &unHTML("$newsignature");
        $inuseravatar           = &cleaninput("$inuseravatar");
    $newpassword            = &cleanarea("$newpassword");
    $newshowemail           = &cleanarea("$newshowemail");
    $newhomepage            = &cleanarea("$newhomepage");
    $newaolname             = &cleanarea("$newaolname");
    $newicqnumber           = &cleanarea("$newicqnumber");
    $newlocation            = &cleanarea("$newlocation");
    $newinterests           = &cleanarea("$newinterests");
    $newtimedifference      = &cleanarea("$newtimedifference");
    $newemailaddress        = &cleanarea("$newemailaddress");
    $newmembertitle         = &cleanarea("$newmembertitle");
     
    if ($newmembertitle eq ""){$newmembertitle = $membertitle}

 чуть ниже  
 
Код:
 
 "$inmembername|$newpassword|$membertitle|$membercode|$numberofposts|$newemailaddress|$newshowemail|$ipaddress|$newhomepage|$newaolname|$newicqnumber|$newlocation|$newinterests|$joineddate|$lastpostdate|$newsignature|$newtimedifference|$privateforums|$inuseravatar|$misc1|$misc2|$misc3"

меняем на (пробелов быть не должно!)

Код:
 
"$inmembername|$newpassword|$newmembertitle|$membercode|$numberofposts|$newemailaddress|$newshowemail|$ipaddress|$newhomepage|$newaolname|$newicqnumber|$newlocation|$newinterests|$joineddate|$lastpostdate|$newsignature|$newtimedifference|$privateforums|$inuseravatar|$misc1|$misc2|$misc3"

 
Вот и всё Теперь следуем в АЦ => "настройка статуса пользователей" и делаем необходимые настройки.  
 
 Если заметили какие-либо ошибки и недочёты, сразу сообщайте!

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 04:36 26-12-2002 | Исправлено: Xnom, 22:21 12-04-2004
nuToH



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ммм... Кул.
Только вот вопрос: хочу какой-нить другой статус, а не просто Member. Фильтр не помог мне, вот решил тут спросить. К кому обратиться, чтоб изменили?
 
Добавлено
Не ругайте сильно, если я не в тему...

----------
~ отец





Очень сильно не в тему, фул мемберу уже можно было усвоить, что все вопросы по Ru.Board задаются в помощи по Ru.Board, и нечего прикидываться ньюбиком. Замечание за злосный оффтоп. . lynx.

Всего записей: 627 | Зарегистр. 28-06-2001 | Отправлено: 00:14 18-07-2003 | Исправлено: lynx, 23:54 20-07-2003
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Установил этот хак, и при изменении в АЦ ни чего не происходит. т.е. окошко для смены статуса не  показывается. .. Даже не могу понять почему, вроде уже и  все просморел...
Подскажите , пожалуйста.

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 14:59 12-04-2004
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew
так...
ты чьим аккаунтом смотрел профиль? своим? статус не админский стоит (админ у себя такое в профиле не увидит)?
если простому юзеру не видно этого "окошка", то выложи куда-нибудь изменённые файлы, посмотрю.

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 19:54 12-04-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xnom Простым, юзеровским смотрел...  Спасибо. сейчас сделаю...
 
 
Добавлено
Посмотрите, плз : файлы

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 20:11 12-04-2004
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew
всё понятно %) у тебя при просмотре профиля участников нельзя увидить его статус.
в profile.cgi после

Код:
require "ikon.lib";          # Require ikonboard ()
require "data/progs.cgi";    # Require prog names
require "data/boardinfo.cgi";# Require board info
require "data/styles.cgi";   # Require styles info
require "ikonmail.lib";      # Require styles info

добавь

Код:
require "data/membertitles.cgi"; #читаем статусы

 
Добавлено
если интересно, почитай:
http://forum.ru-board.com/topic.cgi?forum=21&topic=0867&start=40#2
 
Добавлено
и это:
http://forum.ru-board.com/topic.cgi?forum=21&topic=1904#6

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 22:19 12-04-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xnom Вы считаете, что придется фиксить  топик или обращения будет достаточно?  
 
 
Добавлено
Спасибо, окошко появилось, записывает , изменяется -  все нормально... но не срабатывает проверка на количество постов...  
 
Добавлено
А вот эта переменная $persstatuspost она не фиксируется, а передается, на сколько я понимаю, тогда откуда проверка ее  вынимает?  Просто хочется разобраться...

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 23:20 12-04-2004
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew

Цитата:
Xnom Вы  

желательно просто "ты"

Цитата:
придется фиксить  топик или обращения будет достаточно?  

должно быть достаточно.

Цитата:
но не срабатывает проверка на количество постов...  

я твои файлы на локалке проверил, всё ок.
 
посмотри файл data/membertitles.cgi. прописана там переменная $persstatuspost ?
если "да", то просто попробуй сделать вывод значения $numberofposts и $persstatuspost.
выводятся?
 

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 00:02 13-04-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xnom

Цитата:
просто "ты"  
Спасибо
$persstatuspost  прописана, и $persstatus то же правильно  записан, согласно выбора.
 

Цитата:
вывод значения $numberofposts и $persstatuspost.  
Не очень понял,  вывести куда? Куда угодно?
 
 
Добавлено
Вывел в топик, выводится правильно...

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 00:23 13-04-2004
Xnom



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew
например после этого  

Код:
#persstatus end  
$output .= qq~

напиши

Код:
 
<tr>
<td><font face="$font" color=$fontcolormisc size=$dfontsize1>если $numberofposts  больше или равно</td>
<td>этого - $persstatuspost, то "окошко" нужно показать...</td>
</tr>
 

выводятся значения переменных?

Всего записей: 778 | Зарегистр. 09-10-2002 | Отправлено: 00:37 13-04-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xnom
Цитата:
if ($numberofposts >= $persstatuspost)    
{$output .= qq~  
<tr><td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Персональный статус:</b></td>  
<td bgcolor=$miscbackone><input type=text size=20 name="newmembertitle" value="$membertitle"></td>  
</tr>~;}  

 Да я вставил, работает этот вариант.. Я закоментировал  его ,  чтоб проверить, -  самое удивительное , что и первый вариант заработал?!  Единственное . что в коде изменилось - это , наверно, пустая строка перед $output .= qq~ . Разве оно может влиять?
 
Добавлено
Вот так выглядет мой кусок теперь:

Код:
#persstatus  
if (($persstatus eq "m" && $membercode eq "mo") || ($persstatus eq "u" && (($numberofposts >= $persstatuspost) || ($membercode eq "mo"))))  
{$output .= qq~  
<tr><td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Персональный статус:</b></td>  
<td bgcolor=$miscbackone><input type=text size=20 name="newmembertitle" value="$membertitle"></td>  
</tr>~;}  
#persstatus end  
 
#if ($numberofposts >= $persstatuspost)  
#{$output .= qq~  
#<tr><td bgcolor=$miscbackone><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Персональный статус:</b></td>  
#<td bgcolor=$miscbackone><input type=text size=20 name="newmembertitle" value="$membertitle"></td>  
#</tr>~;}
$output .= qq~

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 01:44 13-04-2004
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xnom Все работает, спасибо за помощь!

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 19:49 13-04-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