Эксклюзивные аватары пользователям
Сабж уже не один раз обсуждался, но оригинального решения не было.
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 |