Crab
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору fbender, спасибо за наводку, разумеется, я знал как надо искать мой баг! Но не сразу сообразил, что не там искал: не в postings.cgi, а в post.cgi искать надо было, ведь через него новые посты в топики добавляются. В общем, ликвидировал (в одном месте вместо $sticky влепил $instickytopic по невнимательности), сейчас, кажется, все работает, так что тему с багами можно считать прикрытой. Теперь выкладываю то, что обещал: Избавляемся от сброса на Guest'a так: в самом конце инструкции по установке хака нам предлагается в postings.cgi в самом конце файла добавить 2 процедуры (поднять/отпустить), после которых и поисходит сброс на гостя. Я почесал репу и учитывая то, что при исполнении других аналогичных процедур (блокировать/разблокировать тему) сброс не происходит, решил сделать аналогично. Итак, в процедуре sticktopic в самом конце находим: Код: } # end if clear to edit else { &error("Sticking Topic&You are not the forum moderator or board administrator or your password was incorrect"); } | и заменяем на Код: } # end if clear to edit else { $inmembername =~ s/\_/ /g; $output .= qq~ <table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center> <tr><td> <table cellpadding=6 cellspacing=1 border=0 width=100%> <form action="$thisprog" method="post"> <input type=hidden name="action" value="stick"> <input type=hidden name="checked" value="yes"> <input type=hidden name="forum" value="$inforum"> <input type=hidden name="topic" value="$intopic"> <tr> <td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><font face="$font" color=$fontcolormisc size=2><b>$ibtxt{'1557'}</b></font></td></tr> <tr> <td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>$ibtxt{'0306'}</font></td> <td bgcolor=$miscbackone valign=middle><input type=text name="membername" value="$inmembername" size=20><font face="$font" color=$fontcolormisc size=1> <a href="$registerprog">$ibtxt{'1417'}</a></font></td></tr> <tr> <td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>$ibtxt{'0307'}</font></td> <td bgcolor=$miscbackone valign=middle><input type=password name="password" value="$inpassword" size=20> <font face="$font" color=$fontcolormisc size=1><a href="$profileprog?action=lostpass">$ibtxt{'2411'}</a></font></td></tr> <tr> <td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><input type=submit name="submit" value="$ibtxt{'0104'}"></form></td></tr></table></td></tr></table> ~; } | Аналогично для процедуры unsticktopic: ищем код Код: } # end if clear to edit else { &error("UnSticking Topic&You are not the forum moderator or board administrator or your password was incorrect"); } | и заменяем на Код: } # end if clear to edit else { $inmembername =~ s/\_/ /g; $output .= qq~ <table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center> <tr><td> <table cellpadding=6 cellspacing=1 border=0 width=100%> <form action="$thisprog" method="post"> <input type=hidden name="action" value="unstick"> <input type=hidden name="checked" value="yes"> <input type=hidden name="forum" value="$inforum"> <input type=hidden name="topic" value="$intopic"> <tr> <td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><font face="$font" color=$fontcolormisc size=2><b>$ibtxt{'1558'}</b></font></td></tr> <tr> <td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>$ibtxt{'0306'}</font></td> <td bgcolor=$miscbackone valign=middle><input type=text name="membername" value="$inmembername" size=20><font face="$font" color=$fontcolormisc size=1> <a href="$registerprog">$ibtxt{'1417'}</a></font></td></tr> <tr> <td bgcolor=$miscbackone valign=middle><font face="$font" color=$fontcolormisc size=1>$ibtxt{'0307'}</font></td> <td bgcolor=$miscbackone valign=middle><input type=password name="password" value="$inpassword" size=20> <font face="$font" color=$fontcolormisc size=1><a href="$profileprog?action=lostpass">$ibtxt{'2411'}</a></font></td></tr> <tr> <td bgcolor=$miscbacktwo valign=middle colspan=2 align=center><input type=submit name="submit" value="$ibtxt{'0104'}"></form></td></tr></table></td></tr></table> ~; } | И еще я обещал поделиться видимостью привязанных тем для гостей. В файле forums.cgi по инструкции к хаку рекомендуется менять текст после примечения # Forum Post markers, на текст хака. Я его немного изменил, у меня он выглядит так: Код: if (!$forumlastvisit) { $forumlastvisit = "0"; } $topicicon = "<img src=\"$imagesurl\/images\/topicnonew.gif\" border=\"0\">"; if (($sticky eq "yes") && ($inmembername eq "$ibtxt{'0043'}")) { $topicicon = "<img src=\"$imagesurl\/images\/stickynonew.gif\" border=\"0\">"; if ($inmembername ne "$ibtxt{'0043'}") { if ($threadposts > $hottopicmark-1) { $hotthread = 1; } else { undef $hotthread; } if (($hotthread) && ($threadstate ne "closed") && ($forumlastvisit < $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/topichot.gif\" border=\"0\">"; } if (($hotthread) && ($threadstate ne "closed") && ($forumlastvisit > $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/topichotnonew.gif\" border=\"0\">"; } if ((!$hotthread) && ($threadstate ne "closed") && ($forumlastvisit < $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/topicnew.gif\" border=\"0\">"; } if ((!$hotthread) && ($threadstate ne "closed") && ($forumlastvisit > $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/topicnonew.gif\" border=\"0\">"; } if (($sticky eq "yes") && ($threadstate ne "closed") && ($forumlastvisit < $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/stickyopen.gif\" border=\"0\">"; } if (($sticky eq "yes") && ($threadstate ne "closed") && ($forumlastvisit > $lastpostdate)) { $topicicon = "<img src=\"$imagesurl\/images\/stickynonew.gif\" border=\"0\">"; } if ($threadstate eq "closed") { $topicicon = "<img src=\"$imagesurl\/images\/topiclocked.gif\" border=\"0\">"; } if (($hotthread) && ($threadstate eq "closed")) { $topicicon = "<img src=\"$imagesurl\/images\/topichotlocked.gif\" border=\"0\">"; } if (($sticky eq "yes") && ($threadstate eq "closed")) { $topicicon = "<img src=\"$imagesurl\/images\/stickylocked.gif\" border=\"0\">"; } | Это позволит гостям видеть фиксированные темы как фиксированные без новых постов (картинка stickynonew.gif). Кроме того, для логического завершения этой фичи, я немного модернизировал вывод пояснений к маркерам внизу списка форумов, у меня он выглядит так - все маркеры сгруппированы попарно, как показано на рисунке: Соответственно, гости будут видеть лишь первые две строки, так как для них новые сообщения не помечаются. Что для этого над сделать: если следовать инструкции по установке хака, то в последнем действии с этим файлом forums.cgi (где-то в районе 420-430-х строк, в зависимости от количества ранее установленных хаков) меняем код не на предлагаемый инструкцией, а на мой: Код: $output .= qq~ <table align=center width=$tablewidth> <tr> <td align=left><img src="$imagesurl/images/topiclocked.gif" border="0"> <img src="$imagesurl/images/stickylocked.gif" border="0"></td> <td align=left><font face="$font" color=$fontcolormisc size=$dfontsize1>$ibtxt{'0606'}</font></td> </tr> <tr> <td align=left><img src="$imagesurl/images/topicnonew.gif" border="0"> <img src="$imagesurl/images/stickynonew.gif" border="0"></td> <td align=left><font face="$font" color=$fontcolormisc size=$dfontsize1>$ibtxt{'0607'}</font></td> </tr> ~; if ($inmembername ne "$ibtxt{'0043'}") { $output .= qq~ <tr> <td align=left><img src="$imagesurl/images/topicnew.gif" border="0"> <img src="$imagesurl/images/stickyopen.gif" border="0"></td> <td align=left><font face="$font" color=$fontcolormisc size=$dfontsize1>$ibtxt{'0608'}</font></td> </tr><tr> <td align=left valign=middle><img src="$imagesurl/images/topichot.gif" border="0"> <img src="$imagesurl/images/topichotnonew.gif" border="0"></td> <td align=left><font face="$font" color=$fontcolormisc size=$dfontsize1>$ibtxt{'0609'} $hottopicmark $ibtxt{'0011'}</font></td> </tr> ~; | Отдельно обращаю внимание, что я при установке хака сразу же его русифицировал, а русификацию добавлял в IkonRussian.lib. В частности, я добавил следующие строки, на которые ссылается установленный хак: Код: $ibtxt{'1547'} = "Тема фиксирована"; $ibtxt{'1548'} = "Тема фиксировна, новых сообщений нет"; $ibtxt{'1549'} = "Тема фиксировна и закрыта"; $ibtxt{'1550'} = "Сделать эту тему фиксированной"; $ibtxt{'1552'} = "Тема фиксирована"; $ibtxt{'1553'} = "Фиксирование темы"; $ibtxt{'1554'} = "Освобождение темы"; $ibtxt{'1555'} = "Тема освобождена"; $ibtxt{'1557'} = "Введите данные, чтобы войти в режим модерации [ Фиксирование темы ]"; $ibtxt{'1558'} = "Введите данные, чтобы войти в режим модерации [ Освобождение темы ]"; | Так что если кто будет копировать вышеуказанные коды, не забывайте корректировать ссылки на ibtxt{'хххх'}. Все, всем желаю творческих узбеков!
---------- Машина должна работать, человек - думать. |
|