Sergeich Опубликовано 13 Марта 2003 Жалоба Поделиться Опубликовано 13 Марта 2003 Нужна форма быстрого ответа без наворотов. Т.е точно такая-же как здесь, только без IB-кодов. Я уже умахался её искать, может кто поможет? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
maestro Опубликовано 13 Марта 2003 Жалоба Поделиться Опубликовано 13 Марта 2003 Не помню, где она точно лежит, поэтому даю ссылку на нее Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GRINGO Опубликовано 13 Марта 2003 Жалоба Поделиться Опубликовано 13 Марта 2003 Sergeich#################################################################### ПРОСТАЯ ФОРМА БЫСТРОГО ОТВЕТА #################################################################### Редактируемые файлы Topic.php skin_topik.php #################################################################### Откройте source/Topic.php найдите : #################################################################### $this->output .= $this->html->TableFooter( array( 'TOPIC' => $this->topic, 'FORUM' => $this->forum ) ); #################################################################### После этого добавьте #################################################################### //------------------------------------- // hack easy quick reply //------------------------------------- if ($this->topic['poll_state'] == 'closed' and $ibforums->member['g_is_supadmin'] != 1) { $allow = 0; } if ($this->topic['starter_id'] == $ibforums->member['id']) { $allow = 0; } if ($this->topic['starter_id'] != $ibforums->member['id']) { if (! $ibforums->member['g_reply_own_topics']) { $allow = 0; } } $this->m_group = $ibforums->member['mgroup']; if ($class->forum['reply_perms'] != '*') { if ( !preg_match( "/(^|,)$this->m_group(,|$)/", $this->forum['reply_perms'] ) ) { $allow = 1; }} if ($this->forum['reply_perms'] == '*') { $allow = 1; } if ($this->topic['state'] != 'open') { $allow = 0; } if ($ibforums->member['id'] == "" AND $allow != 1) { $allow = 0;} if($allow == 1) { if (!$ibforums->member['id']) { $data['guest_box'] = "<input type='text' size='40' maxlength='50' name='UserName' value='Введите Ваше имя' tabindex='1' class='forminput' onMouseOver='this.focus()'>"; } $data['f'] = $this->forum['id']; $data['t'] = $this->topic['tid']; $this->output .= $this->html->quickreply($data); } #################################################################### Сохраните и закройте Topik.php #################################################################### Откройте файл skins/x/skin_topic.php #################################################################### И после class skin_topic { #################################################################### Добавьте #################################################################### function quickreply($data) { global $ibforums; return <<<EOF <form action='{$ibforums->vars['board_url']}/index.{$ibforums->vars['php_ext']}' method='POST' name='REPLIER'> <input type='hidden' name='st' value='0'> <input type='hidden' name='act' value='Post'> <input type='hidden' name='f' value='$data[f]'> <input type='hidden' name='CODE' value='03'> <input type='hidden' name='t' value='$data[t]'> <input type='hidden' name='enableemo' value='yes'> <input type='hidden' name='enablesig' value='yes'> <table cellpadding='0' cellspacing='1' border='0' width='500' bgcolor='{$ibforums->skin['tbl_border']}' align='center'> <tr> <td> <table cellpadding='4' cellspacing='1' border='0' width='100%' class='row1'> <tr> <td align='center' colspan='2' class='titlemedium'>Быстрый ответ</td> </tr> <tr> <td class='category' align='left' colspan='2'>введите Ваш ответ:</td> </tr> <tr> <td class='row1' align='center' colspan='2'>$data[guest_box]</td> </tr> <tr><td class='row1' align='center'><textarea cols='60' rows='6' wrap='soft' name='Post' tabindex='3' class='textinput'></textarea></td></tr> <tr> <td class='row2' align='center' colspan='2'> <input type="submit" name="submit" value="Ответить" tabindex='4' class='forminput'> <input type="submit" name="preview" value="Расширенный модус" tabindex='5' class='forminput'> </td> </tr> </table> </td> </tr> </table> </form> <br> EOF; } #################################################################### Сохраните и закройте skin_topic.php. закачайте файлы на сервер в соответствующие дирректории. Затем зайдите в панел администратора Skins & Templates->Manage HTML Templates. В разделе "Template Tools" выберете"Resynchronise the database templates FROM the PHP skin files," и нажмите "Run Tool." #################################################################### Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
KiNO Опубликовано 13 Марта 2003 Жалоба Поделиться Опубликовано 13 Марта 2003 GRINGO ты бы лучше ее сразу в бд засунул и дал ссылку туда Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sergeich Опубликовано 13 Марта 2003 Автор Жалоба Поделиться Опубликовано 13 Марта 2003 Сразу вопрос - эта форма где находится будет: как здесь сразу после сообщения, или же отдельной таблицей в самом низу страницы? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Total Опубликовано 13 Марта 2003 Жалоба Поделиться Опубликовано 13 Марта 2003 Sergeich вроде ниже ... Если я не ошибаюсь! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GRINGO Опубликовано 14 Марта 2003 Жалоба Поделиться Опубликовано 14 Марта 2003 SergeichЭта форма точно внизу. не так как сдесь но подладить можно. На днях займусь этим Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sergeich Опубликовано 14 Марта 2003 Автор Жалоба Поделиться Опубликовано 14 Марта 2003 Ну если ниже, то таких я видел много. Gringo, обчественность будет тебе признательна, если подправишь код . Т.е. нужна форма такая же как здесь (со смайлами), но без ИБ-кодов и вставки цитаты. К слову: а вот эта вот надпись фоновая совсем не к месту Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GRINGO Опубликовано 14 Марта 2003 Жалоба Поделиться Опубликовано 14 Марта 2003 Gringo, обчественность будет тебе признательна, если подправишь код . Т.е. нужна форма такая же как здесь (со смайлами), но без ИБ-кодов и вставки цитаты.Ну если благодарна, то уже сегодня отредактировал и сделал всё Тут она -->Простая форма быстрого ответа, без ibcode со смайлами Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 14 Июня 2003 Жалоба Поделиться Опубликовано 14 Июня 2003 Уважаемые!А мне хотелось бы несколько другую форму. У меня стоит IPB 1.1.2. Форма нужна в таком виде:Общие свойства:Приклееная только к последнему сообщению топика (то есть показываемая только на последней странице темы, чтоб читали, а не ломились отвечать не разобравшись);Без кодов и без смайлов (кому нужны навороты, наверное, не затруднится открыть полную форму ответа или запомнить коды);Без быстрых вставок.Первая строка таблицы: Имя: |поле| Пароль: |поле|Если тему просматривает залогиненый пользователь в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходит, если имя с паролем не менялись;Если были введены другой ник с правильным к нему паролем, сообщение отправляется от этого нового имени и борда перелогинивается, ошибка в пароле ведёт на стандартную страницу неверного залогинивания (всё это нужно для "корпоративных клиентов" сидящих за одним компом);Если залогиненый пользователь изменил поле имени, то поле пароля очищается и сообщение отправляется от незарегистрированного юзера;Если тему просматривает гость поля имени и пароля остаются пустыми. При вводе существующей комбинации Ник-Пароль сообщение отправляется от указанного пользователя и борда его логинит. Ошибка -- см. выше.Вторая строка: просто поле ввода сообщения.Третья строка: только кнопка Отправить.При попытке гостя отправить сообщение без ввода имени жаба в кнопке открывает сообщение что нужно ввести имя (переброс на страницу ошибки убьёт уже набранный текст, что, например меня, сильно обламывает повторяться), хотя я не знаю как в таком случае быть с теми у кого она отключена.Может кто-нибудь мне помочь? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 14 Июня 2003 Жалоба Поделиться Опубликовано 14 Июня 2003 Есть тут небольшая проблемка в реализацииЕсли тему просматривает залогиненый пользователь в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходит, если имя с паролем не менялись;Дело в том что пароля как бы не существует, т.е. его знает только один пользователь, ни скрипт ни тем более админы этот пароль не знают. Пароль хранится в базе в хешированном виде, и система занет только хеш пароля, но не сам пароль! Иными словами, реализовать поле с паролем не возможно стандартными средствами. Есть вариант добавлять в базу сам пароль, но в этом случае страдает безопасность!!! Если были введены другой ник с правильным к нему паролем, сообщение отправляется от этого нового имени и борда перелогинивается, ошибка в пароле ведёт на стандартную страницу неверного залогинивания (всё это нужно для "корпоративных клиентов" сидящих за одним компом);Исходя из выше сказанного, ясно что реальзовать такое как этого хотите Вы не получится. Можно создать кнопочку 'Выход' напротив ника под которым залогинен пользователь. Такие вот накладки. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 14 Июня 2003 Жалоба Поделиться Опубликовано 14 Июня 2003 Понял проблему, хотя и несколько по иному Пароль и не нужен. Нужно, чтобы в форму пароля просто вставлялись, допустим, пять звездочек. Форма имя-пароль по типу квик-логина на главной странице IBP 1.1.2 (пардон, я других версий не видел) но несколько другая. Алгоритм примерно такой: 1) Если тему просматривает залогиненый юзер:В поле имени вписывается его ник, в поле пароля -- ***** (то, что видет залогиненый юзер в полях, просто бутафория, чтобы понимал, что ответ будет от него).Клик на любое из этих полей очищает их оба.При нажатии на кнопку отправить:1.1) Если ничего не меняли, ответ отправляется по текущей сессии пользователя который просматривает тему.1.2) Если оба поля очистились и поле имени осталось незаполненым жаба выкидывает варнинг "Введите имя!"1.3) Если оба поля очистились, в поле имени чего-то введено, а поле пароля осталось незаполненым сессия пользователя закрывается и сообщение отправляется от указанного имени гостя.1.4) Если оба поля очистились, в поле имени чего-то введено, поле пароля также заполнено, сессия текущего пользователя закрывается и открывается новая (конечно, если такой юзер есть и пароль правильный) и сообщение отправляется от указанного имени пользователя. Ошибка в имени/пароле ведёт на стандартную страницу неправильного залогинивания. 2) Если тему просматривает гость:Поля имени и пароля остаются пустыми.При нажатии на кнопку отправить:2.1) Если поле имени осталось незаполненым жаба выкидывает варнинг "Введите имя!"2.2) Если поле имени заполнено, а поле пароля осталось пустым, сообщение отправляется от указаного имени гостя.2.3) Если в поле имени чего-то введено, поле пароля также заполнено, борда логинет гостя (конечно, если существует такой зарегистрированый пользователь и пароль правильный) и сообщение отправляется от указанного имени пользователя. Ошибка в имени/пароле ведёт на стандартную страницу неправильного залогинивания. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Matrix Опубликовано 14 Июня 2003 Жалоба Поделиться Опубликовано 14 Июня 2003 Приклееная только к последнему сообщению топика (то есть показываемая только на последней странице темы, чтоб читали, а не ломились отвечать не разобравшись);неудобно..... т.к. нупример, если человек входит в тему, в которой несколько страниц и он начинает по-очереди отвечать на сообщения, которые были написаны не на последней странице, то неудобно бегать туда-сюда Добавлено: Дело в том что пароля как бы не существует, т.е. его знает только один пользователь, ни скрипт ни тем более админы этот пароль не знают. Пароль хранится в базе в хешированном виде, и система занет только хеш пароля, но не сам пароль! Иными словами, реализовать поле с паролем не возможно стандартными средствами. Есть вариант добавлять в базу сам пароль, но в этом случае страдает безопасность!!! стоп стоп...... но ведь по сути дела можно просто скопировать функцию лог ина в форму ответа.... т.е. повторить её, а не пытаться изобрести велосипед ....с точно такими же запросами к базе, как и в оригинальном логине и т.п..... разницы и не будет оттого, что он будет находиться в topics.php Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 14 Июня 2003 Жалоба Поделиться Опубликовано 14 Июня 2003 неудобно бегать туда-сюдаСогласен, но ведь стандартная ссылка "Добавить ответ" никуда не денется. Те, кто твёрдо решит отвечать на сообщения на первой странице темы (которую они еще не читали) никак от этого не обломаются! А быстрый ответ, в моём понимании его предназначения, нужен тем, кто уже всё читал и активно учавствуя в теме сразу переходит к первому непрочитанному на последней. Добавлено: просто скопировать функцию лог ина в форму ответаА как же гости?.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Matrix Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 ну вобщем вся эта затея со звёздочками прогарает, т.к. уже выше было сказано - пароли зашифрованы и для того, чтобы их скрыть за звёздочками, их нужно расшифровать....расшифровать md5 можно, но для этого нужно знать алгоритмы... сложно, но можно.. а если уж это для корпоративных пользователей, то не не составляет труда заглянуть за эти звёздочки (слава богу, в 21м веке живём....)(насчёт фцнкции лог-ина я написал, не догонца поняв суть)так что безопасность летит к чертям Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 ...далаю медленый выдох... ...делаю медленый вдох... ...вспоминаю, что все ссоры с мелочей и начинаются, а я сюда пришел, чтобы попросить помощи, а где поругаться у меня своего хватает... ...перечитываю себя еще раз... Где же я ошибся?.. Так:в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходитЕсли были введены другой ник с правильным к нему паролемПароль и не нужен. Нужно, чтобы в форму пароля просто вставлялись, допустим, пять звездочекв поле пароля -- ***** (то, что видет залогиненый юзер в полях, просто бутафорияКлик на любое из этих полей очищает их обаНо я готов поверить, что реализовать это трудно. К сожалению, совсем плохо разбираюсь в програмировании, разве что простейший копи-пэйст Сойдёмся пока на том, что функция Quick Пере-Login не реализуема. Тогда вопрос, а будет ли также проблематично, если вообще не показывать залогиненному в данный момент юзеру первую строчку? Только гостю? С описаными выше свойствами или, черт с ними, просто пустым полем для ввода гостевого имени с требование его заполнения (это очень важно, я бы поставил QReplyPlus SLiDeR'a но гости такие тормознутые встречаются, что вечно будут забывать подписываться и в итоге вся борда со временем забъётся сообщениями типа Guest: "всем привет!" -- Guest: "последнее сообщение моё" -- НикГостя "тьфу! в смысле моё!") :) ? Господа, я же не настаиваю. Подскажите хотя бы как реализовать всё остальное? В смысле как убрать смайлы и быструю вставку. Хотя, если кто всё-таки сможет это реализовать, буду весьма признателен. Зачем всё это надо я уже описал и готов переаргументировать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 Подскажите хотя бы как реализовать всё остальное? В смысле как убрать смайлы и быструю вставкуреализована http://www.ibresource.ru/forums/index.php?...3&st=0#entry239Что бы выше указанную форму показывать только на последней странице темы необходимо изменить файл topic.php следующим образом:Ищем строчку://------------------------------------- // Fix up some of the words //------------------------------------- $this->topic['TOPIC_START_DATE'] = $std->get_date( $this->topic['start_date'], 'LONG' ); Перед ней добавляем: $work['pages'] = 1; if ( (($this->topic['posts']+1) % $ibforums->vars[display_max_posts]) == 0 ) { $work['pages'] = ($this->topic['posts']+1) / $ibforums->vars[display_max_posts]; } else { $number = (($this->topic['posts']+1) / $ibforums->vars[display_max_posts]); $work['pages'] = ceil( $number); } $work['total_page'] = $work['pages']; $work['current_page'] = $ibforums->input['st'] > 0 ? ($ibforums->input['st'] / $ibforums->vars[display_max_posts]) + 1 : 1; Теперь производим изменения в хаке быстрого ответаСтрочкуif($allow == 1) Заменяем на:if($allow == 1 && $work['total_page'] == $work['current_page']) Это пока все. Зато хоть что то. С логинами еще повожусь, дело в том что сама система отправки в ipb не позволяет осуществлять перелогин пользователя. Ну мы попробуем ее перебороть. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 Спасибо, с последней страницей работает. Но форма не приклеена к последнему сообщению и болтается совсем внизу Если всё-таки можно её туда приклеить, не останется ли она такой же маленькой как сейчас? И есчо вопрос, можно ли вместо вписанного в код текста вставить переменные:ВведитеВаше имя => guest_nameвведите Ваш ответ: => postОтветить => poll_s_qРасширенный модус => button_preview(если я конечно ничего не перепутал ) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 ike по поводу переменных, не очень понятно зачем, но сделать можно, хлтя не так просто как Вы пишете.Но форма не приклеена к последнему сообщению и болтается совсем внизутут все просто, передвигайте кусок кода хака вверх по коду файла topic.php. Я например добавил этот код после строчек//------------------------------------- // Print the footer //------------------------------------- не останется ли она такой же маленькой как сейчасразмеры формы задаются хтмл частью, которую мы добавляем в файл стиля. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 Засунул сразу после принт футер, перед строчкой $this->output .= $this->html->TableFooter( array( 'TOPIC' => $this->topic, 'FORUM' => $this->forum ) ); то есть не после неё как написано в хаке выше, а он ругается:Warning: Wrong parameter count for preg_replace() in /home/sources/Topics.php on line 746 а это именно эта строчка... Насчет переменных, это я для тех кто английский язык выбирает в своих настройках. Хотя, если подумать, отключить его ваще, зачем англичанам читать форум где всё по русски написано? Добавлено: Не, чета я запутался, всё вернул обратно -- опять ошибка, щас переустановлю -- отчитаюсь. Добавлено: Вставил перед принт футер -- всё нормально, буду заниматься растягиванием Спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ike333 Опубликовано 15 Июня 2003 Жалоба Поделиться Опубликовано 15 Июня 2003 Всё почти получилось. Именно так как я хотел, чтобы оно выглядело (опять-таки -- почти, но дальше ума не приложу, чего там нехватает). Ладно с ним, с дизайном, есть более серьёзная проблема. Форма нормально приклеилась к последнему сообщению и выглядит так как надо, но пришлось несколько поменять другое место skin_topic.php:function TableFooter($data) { global $ibforums; return <<<EOF </table></td> </tr> <tr> <td class='mainbg'>.... и т.д.Убрать из него закрывание тэгов чтобы получилось:function TableFooter($data) { global $ibforums; return <<<EOF <tr> <td class='mainbg'>.... и т.д.Иначе ячейка где написано сколько пользователей читают тему и сколько в ней ответов, расползалась на всю ширину страницы.Убрал -- всё вроде нормально, но как оказалось только на последней странице, где показывается форма быстрого ответа. А на первых, где её нет, просто какая-то порнография из-за этого образовалась... Всё перемешалось в одной ячейке прилепленной к таблице топика -- и кто читает и статистика и быстрый переход и копирайты с ними... Как быть? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.