dimitry Опубликовано 23 Июля 2007 Жалоба Поделиться Опубликовано 23 Июля 2007 Решил адаптировать к 1.3 и установить мод D2-Password Protected Topics 1.0 http://mods.invisionize.com/db/index.php/f/4304 , расчитанный на версию форума 2.0 Адаптация запросов в БД ALTER TABLE `ibf_forums` ADD `allow_passprotected` TINYINT( 1 ) DEFAULT '0' AFTER `allow_pollbump` ; ALTER TABLE `ibf_groups` ADD `g_bypass_passprotected` TINYINT( 1 ) DEFAULT '0' AFTER `g_post_new_topics` ALTER TABLE `ibf_topics` ADD `password` VARCHAR( 255 ) AFTER `state` ; То, что находилось в виде xml <?xml version="1.0" encoding="ISO-8859-1"?> <d2mod_data> <template_group> <template> <group_name>skin_post</group_name> <section_content><![CDATA[ <tr> <td class='pformleft'>{ipb.lang['topic_pass']}</td> <td class='pformright'><input type='password' size='40' maxlength='30' name='topic_pass' value='{$pass}' tabindex='2' class='forminput' /> <i>{ipb.lang['topic_pass_desc']}</i></td> </tr>]]></section_content> <func_name>topic_password_field</func_name> <func_data>$pass="</func_data> </template> <template> <group_name>skin_topic</group_name> <section_content><![CDATA[<form method='post' action='{ipb.sc_ript_url}showtopic={$tid}'> <input type='hidden' name='TP' value='1' /> <div class='borderwrap' align='center'> <div class='maintitle'><{CAT_IMG}> {ipb.lang['topic_password']}</div> <div class='tablepad'>{ipb.lang['topic_pass_txt']}</div> <div class='tablepad'> <b>{ipb.lang['topic_pass']}:</b> <input type='password' size='20' name='topic_pass' /> </div> <div class='formsubtitle' align='center'> <input type='submit' value='{ipb.lang['topic_submit']}' class='button' /> </div> </div></form>]]></section_content> <func_name>topic_password_login</func_name> <func_data>$tid="</func_data> </template> </template_group> </d2mod_data> Я представил как: Файл skin_topic.php function topic_password_login($tid) { global $ibforums; return <<<EOF <form method='post' action='{$ibforums->base_url}showtopic=$tid'> <input type='hidden' name='TP' value='1' /> <div class='borderwrap' align='center'> <div class='maintitle'><{CAT_IMG}> {$ibforums->lang['topic_password']}</div> <div class='tablepad'>{$ibforums->lang['topic_pass_txt']}</div> <div class='tablepad'> <b>{$ibforums->lang['topic_pass']}:</b> <input type='password' size='20' name='topic_pass' /> </div> <div class='formsubtitle' align='center'> <input type='submit' value='{$ibforums->lang['topic_submit']}' class='button' /> </div> </div></form> EOF; } Файл skin_post.php function topic_password_field($pass) { global $ibforums; return <<<EOF <tr> <td class='pformleft'>{$ibforums->lang['topic_pass']}</td> <td class='pformright'><input type='password' size='40' maxlength='30' name='topic_pass' value='{$pass}' tabindex='2' class='forminput' /> <i>{$ibforums->lang['topic_pass_desc']}</i></td> </tr> EOF; } Open up sources/admin/ad_forums.php Вместо этого: 'allow_passprotected' => $ibforums->input['allow_passprotected'], Для 1.3 должно быть: 'allow_passprotected' => $IN['allow_passprotected'], Вместо этого: $ibforums->html .= $ibforums->adskin->add_td_row( array( "<b>Allow Password Protected Topics?</b>" , $ibforums->adskin->form_yes_no("allow_passprotected", $forum['allow_passprotected'] ) ) ); Это: $ADMIN->html .= $SKIN->add_td_row( array( "<b>Allow Password Protected Topics?</b>" , $SKIN->form_yes_no("allow_passprotected", $forum['allow_passprotected'] ) ) ); Аналогично для ad_groups.php Для Open up sources/lib/post_edit_post.php Вместо: //----------------------------------------- // D2-Password Protected Topics //----------------------------------------- if ($ibforums->input['topic_pass'] != '' && $this->class->forum['allow_passprotected'] == 1) { $DB->do_update('topics', array('password' => base64_encode($ibforums->input['topic_pass'])), 'tid='.$this->topic['tid']); } Должно быть: //----------------------------------------- // D2-Password Protected Topics //----------------------------------------- if ($ibforums->input['topic_pass'] != '' && $class->forum['allow_passprotected'] == 1) { $DB->do_update('topics', array('password' => base64_encode($ibforums->input['topic_pass'])), 'tid='.$this->topic['tid']); } Вместо: //----------------------------------------- // D2-Password Protected Topics //----------------------------------------- if ($this->class->forum['allow_passprotected'] == 1) { $this->class->output = str_replace("<!--TOPIC PASSWORD-->", $this->class->html->topic_password_field(isset($_POST['topic_pass']) ? $ibforums->input['topic_pass'] : base64_decode($this->topic['password'])), $this->class->output); } Должно быть: //----------------------------------------- // D2-Password Protected Topics //----------------------------------------- if ($class->forum['allow_passprotected'] == 1) { $class->output = str_replace("<!--TOPIC PASSWORD-->", $class->html->topic_password_field(isset($_POST['topic_pass']) ? $ibforums->input['topic_pass'] : base64_decode($this->topic['password'])), $class->output); } //--------------------------------------- Также в Open up sources/lib/post_new_post.php и Open up sources/lib/post_poll.php Вместо: 'password' => ($_POST['topic_pass'] && $this->class->forum['allow_passprotected'] == 1) ? base64_encode($ibforums->input['topic_pass']) : '', Должно быть: 'password' => ($_POST['topic_pass'] && $class->forum['allow_passprotected'] == 1) ? base64_encode($ibforums->input['topic_pass']) : '', Вместо Open up Admin CP: Skins & Templates: Skin Manager: [select Skin]: Edit HTML: Post Screen: table_structureнужно открыть skin_post.php, найти function table_structure() { global $ibforums; return <<<EOF <!--FORUM RULES--><br /> <!--START TABLE--> <!--NAME FIELDS--> <!--TOPIC TITLE--> <!--POLL BOX--> <!--POST ICONS--> <!--POST BOX--> <!--QUOTE BOX--> <!--UPLOAD FIELD--> <!--MOD OPTIONS--> <!--END TABLE--> EOF; } Заменить на: function table_structure() { global $ibforums; return <<<EOF <!--FORUM RULES--><br /> <!--START TABLE--> <!--NAME FIELDS--> <!--TOPIC TITLE--> <!--TOPIC PASSWORD--> <!--POLL BOX--> <!--POST ICONS--> <!--POST BOX--> <!--QUOTE BOX--> <!--UPLOAD FIELD--> <!--MOD OPTIONS--> <!--END TABLE--> EOF; } Все работает, кроме самого главного - когда заходит чудой в тему - не рендерится окно для ввода пароля, т.е. как-будто пароля к теме нет, хотя в базу все заносится. Посмотрите функции в skin_topic.php и skin_post.php - все ли правильно В Topics.php есть тоже изменения:Подскажите, будет ли работать нижеприведенный код под 1.3 или что-то в нем надо подправить под версию 1.3 //----------------------------------------- // D2-Password Protected Topics //----------------------------------------- if (!$_POST['TP']) { if ($this->topic['password'] != '') { $login = 1; $this->topic['password'] = base64_decode($this->topic['password']); $ctpass = $std->my_getcookie("topic_pass_".$this->topic['tid']); if ($ctpass != '' && ($ctpass == $this->topic['password'])) { $login = 0; } else if ($ibforums->member['id'] == $this->topic['starter_id']) { $login = 0; } else if ($ibforums->member['g_bypass_passprotected'] == 1) { $login = 0; } if ($login == 1) { global $print; $this->output = $this->html->topic_password_login($this->topic['tid']); $print->add_output($this->output); $print->do_output(array('TITLE' => $ibforums->vars['board_name']." -> ".$ibforums->lang['topic_login'], 'JS' => 0, 'NAV' => $forums->forums_breadcrumb_nav($this->forum['id']).array($ibforums->lang['topic_login']))); } } } else if ($_POST['TP']) { if ($ibforums->member['g_bypass_passprotected'] != 1) { $this->topic['password'] = base64_decode($this->topic['password']); if ($ibforums->input['topic_pass'] == '') { $std->Error(array('LEVEL' => 1, 'MSG' => 'topic_pass_blank')); } if ($ibforums->input['topic_pass'] != $this->topic['password']) { $std->Error(array('LEVEL' => 1, 'MSG' => 'topic_pass_wrong')); } global $print; $std->my_setcookie("topic_pass_".$this->topic['tid'], $ibforums->input['topic_pass']); $print->redirect_screen($ibforums->lang['topic_pass_redir'], "showtopic=".$this->topic['tid']); } } http://rh.foto.radikal.ru/0707/5d/b9fc9d1f65bc.jpg Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
dimitry Опубликовано 13 Августа 2007 Автор Жалоба Поделиться Опубликовано 13 Августа 2007 Может кто помочь с кодом в Topics.php Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.