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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

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

Ausw



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

 
 
Сабж уже не один раз обсуждался, но оригинального решения не было.  
2 предложенных ранее варианта:
 1) Руками заюзать файл имяuserа.cgi - но при обновлении профайла затирается, и юзер остается без аватара.  
2) Писать в topic.cgi - неактуально, ибо каждый раз  туда лезть, если юзеров будет несколько, кроме того, в мемберлисте (и где либо еще) - будет байда с аватарами ..... Я  тут нашел небольшой хак, сие и опубликую, ставится за 2 минуты:
 
profile.cgi
 

Код:
 
           $cleanavatar =  $_;
           $cleanavatar =~ s/.gif//i;
 
           # Skip, if it's an admin/moderator only avatar
 
           if (($cleanavatar =~ /admin_/) && ($membercode eq "me")) { next; }
 

меняем на  

Код:
 
           $cleanavatar =  $_;
           $cleanavatar =~ s/.gif//i;
 
           $inmemberspace = $inmembername;
           $inmemberspace =~ s/ /\_/isg;
 
           # Skip, if it's an admin / moderator / personal only avatar
 
           if ( (($cleanavatar =~ /admin_/) && ($membercode eq "me")) || (($cleanavatar =~ /pers_/) && (pers_.$inmemberspace ne "$cleanavatar")) ) { next; }

 
register.cgi

Код:
 
if ($cleanavatar =~ /admin_/) { next; }

на  

Код:
 
 if ( ($cleanavatar =~ /admin_/) || (($cleanavatar =~ /pers_/) && (pers_.$inmembername ne "$cleanavatar")) ) { next; }
 

 
Теперь берем аватарчик юзера, переименовываем его как pesr_имяusera.gif
и бросаем в общую папку..... этот аватар будет только у этого юзера, у других он отображаться не будет, т.е. никто не выберет его. Юзеру нужно будет самому зайти и выбрать свой аватар.  
 
 
Также читайте про хак PersonalAvatar.
 
 
 
##################
Часть II (должна быть выполнена часть I).
 
Если вы хотите запретить участнику, имеющему персональный аватар, его менять.  
 
profile.cgi  
 
sub modify  
 
Находим код:
 

Код:
 
        foreach (@images) {
 
            $cleanavatar =  $_;
            $cleanavatar =~ s/.gif//i;
 
            # Skip, if it's an admin/moderator only avatar
 
            if (($cleanavatar =~ /admin_/) && ($membercode eq "me")) { next; }
             
            if ($cleanavatar eq "$useravatar") {            
            $selecthtml .= qq~<option value="$cleanavatar" selected>$cleanavatar</option>\n~;
                $currentface = "$cleanavatar";
                }
                elsif (($cleanavatar eq "noavatar") && (!$useravatar)) {
                    $selecthtml .= qq~<option value="noavatar" selected>noavatar</option>\n~;
                    $currentface = "$cleanavatar";
                    }  
                else {
                        $selecthtml .= qq~<option value="$cleanavatar">$cleanavatar</option>\n~;
                        }
                    } # end foreach
 
               
 
            $avatarhtml = qq~
            <script language="javascript">
            function showimage()
            {
            //alert("$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif");
                document.images.useravatars.src="$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif";
                }
            </script>
            <tr>
                <td bgcolor=$miscbackone valign=top><font face="$font" color=$fontcolormisc size=$dfontsize1><b>$ibtxt{'1833'}</b><br>$ibtxt{'1834'}</td>
                <td bgcolor=$miscbackone>
                    <select name="useravatar" size=6 onChange="showimage()">
                    $selecthtml
                    </select>
                    <img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="64" height="64" border=0 hspace=15>
                </td>
            </tr>
            ~;
            } # end avatar if
 

 
И меняем на этот:  
 

Код:
 
 
        foreach (@images) {  
 
            $cleanavatar =  $_;  
            $cleanavatar =~ s/.gif//i;  
 
   if ($cleanavatar eq "$useravatar") {              
    $selecthtml .= qq~<option value="$cleanavatar" selected>$cleanavatar</option>\n~;  
    $currentface = "$cleanavatar";  
                }  
   elsif (($cleanavatar eq "noavatar") && (!$useravatar)) {  
   $selecthtml .= qq~<option value="noavatar" selected>noavatar</option>\n~;  
   $currentface = "$cleanavatar";  
                }    
   else {  
$selecthtml .= qq~<option value="$cleanavatar">$cleanavatar</option>\n~;  
                        }  
                    } # end foreach  
 
 
if ($useravatar =~ /pers_/) {  ##start если перс. аватар  
 
 $avatarhtml = qq~  
 <tr>  
 <td bgcolor=$miscbackone valign=top><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Аватар:</b></font></td>  
 <td bgcolor=$miscbackone>  
<font face="$font" color=$fontcolormisc size=$dfontsize1>У Вас персональный аватар</font><p>  
 <img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="32" height="32" border=0 hspace=15>  
   
  </td>  
  </tr>  
            ~;  
}   ##end если перс. аватар              
 
 
else {  
 
 $avatarhtml = qq~  
            <script type="text/javascript">  
            function showimage()  
            {  
 //alert("$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif");  
                document.images.useravatars.src="$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif";  
                }  
            </script>  
 
 <tr>  
 <td bgcolor=$miscbackone valign=top><font face="$font" color=$fontcolormisc size=$dfontsize1><b>Аватар:</b><p>  
 Можете выбрать картинку (аватар), которая будет показана под Вашим именем на форуме. </font></td>  
 <td bgcolor=$miscbackone>  
<select name="useravatar" size=6 onChange="showimage()">  
$selecthtml  
</select>  
<img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="32" height="32" border=0 hspace=15>  
 
  </td>  
  </tr>  
            ~;  
}              
            } # end avatar if  
 
           

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 17:00 08-12-2001 | Исправлено: lynx, 15:58 25-06-2003
speleo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уже пробовал...
пока не правишь файл всё работает нормально. Как только изменяешь, ошибка.

Всего записей: 9 | Зарегистр. 13-02-2003 | Отправлено: 19:29 20-03-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
speleo
 
Тогда выложи в txt файле весь код.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 19:38 20-03-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тем, у кого реализован Вайсов механизм персональный аватаров.
 
Если вы хотите запретить участнику, имеющему персональный аватар, его менять, то могу предложить такой код.
 
У меня работает, но если кто грабли обнаружит, скажите.
 
profile.cgi
 
sub modify  
 
Находим кусок начинающийся с  
       foreach (@images) {
 
и заканчивающийся  
 
         } # end avatar if
 
то есть все, что идет до слов:
 
   $signature =~ s/\[br\]/\n/isg;
    $interests =~ s/\<br>/\n/isg;
 
И меняем на этот:
 

Код:
 
        foreach (@images) {
 
            $cleanavatar =  $_;
            $cleanavatar =~ s/.gif//i;
 
   if ($cleanavatar eq "$useravatar") {            
    $selecthtml .= qq~<option value="$cleanavatar" selected>$cleanavatar</option>\n~;
    $currentface = "$cleanavatar";
                }
   elsif (($cleanavatar eq "noavatar") && (!$useravatar)) {
   $selecthtml .= qq~<option value="noavatar" selected>noavatar</option>\n~;
   $currentface = "$cleanavatar";
                }  
   else {
$selecthtml .= qq~<option value="$cleanavatar">$cleanavatar</option>\n~;
                        }
                    } # end foreach
 
 
if ($useravatar =~ /pers_/) {  ##start если перс. аватар
 
 $avatarhtml = qq~
 <tr>
 <td class="miscbackone" valign=top><div class="menu7">Аватар:</div></td>
 <td class="miscbackone">
<div class="menu8">У Вас персональный аватар</div><p>
 <img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="32" height="32" border=0 hspace=15>
 
  </td>
  </tr>
            ~;
}   ##end если перс. аватар            
 
 
else {
 
 $avatarhtml = qq~
            <script type="text/javascript">
            function showimage()
            {
 //alert("$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif");
                document.images.useravatars.src="$imagesurl/avatars/"+document.creator.useravatar.options[document.creator.useravatar.selectedIndex].value+".gif";
                }
            </script>
 
 <tr>
 <td class="miscbackone" valign=top><div class="menu7">Аватар:</div>
 <div class="menu8">Можете выбрать картинку (аватар), которая будет показана под Вашим именем на форуме. </div></td>
 <td class="miscbackone">
<select name="useravatar" size=6 onChange="showimage()">
$selecthtml
</select>
<img src="$imagesurl/avatars/$currentface.gif" name="useravatars" width="32" height="32" border=0 hspace=15>
 
  </td>
  </tr>
            ~;
}            
            } # end avatar if
 

 
 
Только там, где у меня стили:
 
class="miscbackone"
и другие классы, вам это писать не надо, конечно.
 
 
 
В таком варианте юзеру, имеющему перс. аватар, будет выводится его аватар и фраза: "У вас перс. аватар" - как на руборде. И не будет выводиться селект с выбором картинок.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 04:44 09-06-2003 | Исправлено: lynx, 04:50 09-06-2003
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения за подъем темы!
Проблемка следующая:
С некоторых пор заметил, что персональные аватары стали доступны при регистрации... То есть, если заходишь регистриться, то в списке аватаров есть все персональные.
Грешу на права доступа, так как пришлось с ними "играться" после восстановления файлов...
Какие там должны стоять права и вообще это в них трабл? Или еще где?

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 23:47 16-10-2003
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема была благополучно забыта по причине "порядочности" новых пользователей
Однако решить то ее нужно! Иногда приходится ручками править аватары новеньким, "позарившимся" на персональные аватары. Это не есть хорошо
Итак: персональные видны ТОЛЬКО гостям, регистрирующимся впервые.
Если заходит уже зарегистрированный пользователь, то в списке доступных аватаров перс_аватаров нет.
Ставил все так, как тут описано, запрет на изменение не реализовывал, скрипты не правил, с правами на файлы вроде все нормально.
кто подскажет где фиксить проблему?
Спасибо.

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 19:48 22-06-2004
lynx



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

Цитата:
Ставил все так, как тут описано

 
Гм...
 
Покажи свои файлы register.cgi и ikon.lib
 

Цитата:
Проблема была благополучно забыта по причине "порядочности" новых пользователей  

 
Попрошу не наезжать на наших пользователей
 
 
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 22:05 22-06-2004
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
Показываю:
вот ikon.cgi
вот register.cgi
 
 

Цитата:
Попрошу не наезжать на наших пользователей  

Так кто ж наезжает! Наоборот, хвалю... холю и лелею

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 00:13 24-06-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GOOSE
 
А говоришь - все сделал, как тут.  
 
Не все вовсе.
 
register.cgi строка 405.
 
Замени:
 

Код:
 
if ($cleanavatar =~ /admin_/) { next; }
 

 
на:
 

Код:
 
if ( ($cleanavatar =~ /admin_/) || (($cleanavatar =~ /pers_/) && (pers_.$inmembername ne "$cleanavatar")) ) { next; }  
 
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 03:40 24-06-2004
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx
Вот же блин.....
Спасибо огромное!
...и как я пропустил... ума не приложу!
Вечером из дома попробую.

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 12:39 24-06-2004
HeT BonpocoB



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
[offtop]
не подскажете ламеру, а можно какнибудь, просто увеличить размер аваторов до скажем 80х80   , желательно к томуж штоб никакова streеch-a с ними не происходило, ни в ту, ни в другую сторону...(имеется ввиду не в рамках данного^ хака, а на чистом форуме 2.19)... чуствую что это должно быть не сложно, но сам штота я.....  
[/offtop]

Всего записей: 1342 | Зарегистр. 30-03-2003 | Отправлено: 22:16 26-06-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HeT BonpocoB

Цитата:
не подскажете ламеру, а можно какнибудь, просто увеличить размер аваторов до скажем 80х80  

 
Я все расписала в шапке темы:
 
Размер аватаров и его изменение
 
Дальнейшие вопросы в этом направлении в той теме, плиз

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 02:57 27-06-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Эксклюзивные аватары (avatars) пользователям


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru