Перейти к контенту

Простая форма быстрого ответа...


Рекомендуемые сообщения

Нужна форма быстрого ответа без наворотов. Т.е точно такая-же как здесь, только без IB-кодов. Я уже умахался её искать, может кто поможет?
Ссылка на комментарий
Поделиться на других сайтах

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."                                     
####################################################################

Ссылка на комментарий
Поделиться на других сайтах

Сразу вопрос - эта форма где находится будет: как здесь сразу после сообщения, или же отдельной таблицей в самом низу страницы?
Ссылка на комментарий
Поделиться на других сайтах

Sergeich

Эта форма точно внизу. не так как сдесь но подладить можно. На днях займусь этим

Ссылка на комментарий
Поделиться на других сайтах

Ну если ниже, то таких я видел много. Gringo, обчественность будет тебе признательна, если подправишь код :D. Т.е. нужна форма такая же как здесь (со смайлами), но без ИБ-кодов и вставки цитаты.

 

К слову: а вот эта вот надпись фоновая совсем не к месту ;)

Ссылка на комментарий
Поделиться на других сайтах

Gringo, обчественность будет тебе признательна, если подправишь код . Т.е. нужна форма такая же как здесь (со смайлами), но без ИБ-кодов и вставки цитаты.

Ну если благодарна, то уже сегодня отредактировал и сделал всё:D

 

Тут она -->Простая форма быстрого ответа, без ibcode со смайлами

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Уважаемые!

А мне хотелось бы несколько другую форму. У меня стоит IPB 1.1.2. Форма нужна в таком виде:

Общие свойства:

  • Приклееная только к последнему сообщению топика (то есть показываемая только на последней странице темы, чтоб читали, а не ломились отвечать не разобравшись);
  • Без кодов и без смайлов (кому нужны навороты, наверное, не затруднится открыть полную форму ответа или запомнить коды);
  • Без быстрых вставок.

Первая строка таблицы: Имя: |поле| Пароль: |поле|

  • Если тему просматривает залогиненый пользователь в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходит, если имя с паролем не менялись;
  • Если были введены другой ник с правильным к нему паролем, сообщение отправляется от этого нового имени и борда перелогинивается, ошибка в пароле ведёт на стандартную страницу неверного залогинивания (всё это нужно для "корпоративных клиентов" сидящих за одним компом);
  • Если залогиненый пользователь изменил поле имени, то поле пароля очищается и сообщение отправляется от незарегистрированного юзера;
  • Если тему просматривает гость поля имени и пароля остаются пустыми. При вводе существующей комбинации Ник-Пароль сообщение отправляется от указанного пользователя и борда его логинит. Ошибка -- см. выше.

Вторая строка: просто поле ввода сообщения.

Третья строка: только кнопка Отправить.

  • При попытке гостя отправить сообщение без ввода имени жаба в кнопке открывает сообщение что нужно ввести имя (переброс на страницу ошибки убьёт уже набранный текст, что, например меня, сильно обламывает повторяться), хотя я не знаю как в таком случае быть с теми у кого она отключена.

Может кто-нибудь мне помочь?

Ссылка на комментарий
Поделиться на других сайтах

Есть тут небольшая проблемка в реализации

Если тему просматривает залогиненый пользователь в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходит, если имя с паролем не менялись;

Дело в том что пароля как бы не существует, т.е. его знает только один пользователь, ни скрипт ни тем более админы этот пароль не знают. Пароль хранится в базе в хешированном виде, и система занет только хеш пароля, но не сам пароль! Иными словами, реализовать поле с паролем не возможно стандартными средствами.

Есть вариант добавлять в базу сам пароль, но в этом случае страдает безопасность!!!

 

Если были введены другой ник с правильным к нему паролем, сообщение отправляется от этого нового имени и борда перелогинивается, ошибка в пароле ведёт на стандартную страницу неверного залогинивания (всё это нужно для "корпоративных клиентов" сидящих за одним компом);

Исходя из выше сказанного, ясно что реальзовать такое как этого хотите Вы не получится. Можно создать кнопочку 'Выход' напротив ника под которым залогинен пользователь.

 

Такие вот накладки.

Ссылка на комментарий
Поделиться на других сайтах

Понял проблему, хотя и несколько по иному :D Пароль и не нужен. Нужно, чтобы в форму пароля просто вставлялись, допустим, пять звездочек. Форма имя-пароль по типу квик-логина на главной странице IBP 1.1.2 (пардон, я других версий не видел) но несколько другая.

 

Алгоритм примерно такой:

 

1) Если тему просматривает залогиненый юзер:

В поле имени вписывается его ник, в поле пароля -- ***** (то, что видет залогиненый юзер в полях, просто бутафория, чтобы понимал, что ответ будет от него).

Клик на любое из этих полей очищает их оба.

При нажатии на кнопку отправить:

1.1) Если ничего не меняли, ответ отправляется по текущей сессии пользователя который просматривает тему.

1.2) Если оба поля очистились и поле имени осталось незаполненым жаба выкидывает варнинг "Введите имя!"

1.3) Если оба поля очистились, в поле имени чего-то введено, а поле пароля осталось незаполненым сессия пользователя закрывается и сообщение отправляется от указанного имени гостя.

1.4) Если оба поля очистились, в поле имени чего-то введено, поле пароля также заполнено, сессия текущего пользователя закрывается и открывается новая (конечно, если такой юзер есть и пароль правильный) и сообщение отправляется от указанного имени пользователя. Ошибка в имени/пароле ведёт на стандартную страницу неправильного залогинивания.

 

2) Если тему просматривает гость:

Поля имени и пароля остаются пустыми.

При нажатии на кнопку отправить:

2.1) Если поле имени осталось незаполненым жаба выкидывает варнинг "Введите имя!"

2.2) Если поле имени заполнено, а поле пароля осталось пустым, сообщение отправляется от указаного имени гостя.

2.3) Если в поле имени чего-то введено, поле пароля также заполнено, борда логинет гостя (конечно, если существует такой зарегистрированый пользователь и пароль правильный) и сообщение отправляется от указанного имени пользователя. Ошибка в имени/пароле ведёт на стандартную страницу неправильного залогинивания.

Ссылка на комментарий
Поделиться на других сайтах

Приклееная только к последнему сообщению топика (то есть показываемая только на последней странице темы, чтоб читали, а не ломились отвечать не разобравшись);

неудобно..... т.к. нупример, если человек входит в тему, в которой несколько страниц и он начинает по-очереди отвечать на сообщения, которые были написаны не на последней странице, то неудобно бегать туда-сюда

 

Добавлено:

Дело в том что пароля как бы не существует, т.е. его знает только один пользователь, ни скрипт ни тем более админы этот пароль не знают. Пароль хранится в базе в хешированном виде, и система занет только хеш пароля, но не сам пароль! Иными словами, реализовать поле с паролем не возможно стандартными средствами.

Есть вариант добавлять в базу сам пароль, но в этом случае страдает безопасность!!!

 

стоп стоп...... но ведь по сути дела можно просто скопировать функцию лог ина в форму ответа.... т.е. повторить её, а не пытаться изобрести велосипед :D ....с точно такими же запросами к базе, как и в оригинальном логине и т.п..... разницы и не будет оттого, что он будет находиться в topics.php

Ссылка на комментарий
Поделиться на других сайтах

неудобно бегать туда-сюда

Согласен, но ведь стандартная ссылка "Добавить ответ" никуда не денется. Те, кто твёрдо решит отвечать на сообщения на первой странице темы (которую они еще не читали) никак от этого не обломаются! А быстрый ответ, в моём понимании его предназначения, нужен тем, кто уже всё читал и активно учавствуя в теме сразу переходит к первому непрочитанному на последней.

 

Добавлено:

просто скопировать функцию лог ина в форму ответа

А как же гости?.. :D

Ссылка на комментарий
Поделиться на других сайтах

ну вобщем вся эта затея со звёздочками прогарает, т.к. уже выше было сказано - пароли зашифрованы и для того, чтобы их скрыть за звёздочками, их нужно расшифровать....расшифровать md5 можно, но для этого нужно знать алгоритмы... сложно, но можно.. а если уж это для корпоративных пользователей, то не не составляет труда заглянуть за эти звёздочки (слава богу, в 21м веке живём....)

(насчёт фцнкции лог-ина я написал, не догонца поняв суть)

так что безопасность летит к чертям

Ссылка на комментарий
Поделиться на других сайтах

...далаю медленый выдох... ...делаю медленый вдох... ;) ...вспоминаю, что все ссоры с мелочей и начинаются, а я сюда пришел, чтобы попросить помощи, а где поругаться у меня своего хватает... :) ...перечитываю себя еще раз... Где же я ошибся?.. :D Так:

в поле имени простовляется его ник, в поле пароля -- звёздочки, но при отправке ответа перелогинивания не происходит
Если были введены другой ник с правильным к нему паролем
Пароль и не нужен. Нужно, чтобы в форму пароля просто вставлялись, допустим, пять звездочек
в поле пароля -- ***** (то, что видет залогиненый юзер в полях, просто бутафория
Клик на любое из этих полей очищает их оба
Но я готов поверить, что реализовать это трудно. К сожалению, совсем плохо разбираюсь в програмировании, разве что простейший копи-пэйст :)

Сойдёмся пока на том, что функция Quick Пере-Login не реализуема. Тогда вопрос, а будет ли также проблематично, если вообще не показывать залогиненному в данный момент юзеру первую строчку? Только гостю? С описаными выше свойствами или, черт с ними, просто пустым полем для ввода гостевого имени с требование его заполнения (это очень важно, я бы поставил QReplyPlus SLiDeR'a но гости такие тормознутые встречаются, что вечно будут забывать подписываться и в итоге вся борда со временем забъётся сообщениями типа Guest: "всем привет!" -- Guest: "последнее сообщение моё" -- НикГостя "тьфу! в смысле моё!") :) :) :)?

 

Господа, я же не настаиваю. ;) Подскажите хотя бы как реализовать всё остальное? В смысле как убрать смайлы и быструю вставку.

 

Хотя, если кто всё-таки сможет это реализовать, буду весьма признателен. Зачем всё это надо я уже описал и готов переаргументировать. :D

Ссылка на комментарий
Поделиться на других сайтах

Подскажите хотя бы как реализовать всё остальное? В смысле как убрать смайлы и быструю вставку

реализована 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 не позволяет осуществлять перелогин пользователя. Ну мы попробуем ее перебороть.

Ссылка на комментарий
Поделиться на других сайтах

Спасибо, с последней страницей работает.

 

Но форма не приклеена к последнему сообщению и болтается совсем внизу :D Если всё-таки можно её туда приклеить, не останется ли она такой же маленькой как сейчас?

 

И есчо вопрос, можно ли вместо вписанного в код текста вставить переменные:

ВведитеВаше имя => guest_name

введите Ваш ответ: => post

Ответить => poll_s_q

Расширенный модус => button_preview

(если я конечно ничего не перепутал ;) )

Ссылка на комментарий
Поделиться на других сайтах

ike по поводу переменных, не очень понятно зачем, но сделать можно, хлтя не так просто как Вы пишете.

Но форма не приклеена к последнему сообщению и болтается совсем внизу

тут все просто, передвигайте кусок кода хака вверх по коду файла topic.php. Я например добавил этот код после строчек

//-------------------------------------
// Print the footer
//-------------------------------------

 

не останется ли она такой же маленькой как сейчас

размеры формы задаются хтмл частью, которую мы добавляем в файл стиля.

Ссылка на комментарий
Поделиться на других сайтах

Засунул сразу после принт футер, перед строчкой

$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
а это именно эта строчка... :)

 

Насчет переменных, это я для тех кто английский язык выбирает в своих настройках. Хотя, если подумать, отключить его ваще, зачем англичанам читать форум где всё по русски написано? :D

 

Добавлено:

Не, чета я запутался, всё вернул обратно -- опять ошибка, щас переустановлю -- отчитаюсь.

Добавлено:

Вставил перед принт футер -- всё нормально, буду заниматься растягиванием ;)

Спасибо.

Ссылка на комментарий
Поделиться на других сайтах

Всё почти получилось. Именно так как я хотел, чтобы оно выглядело (опять-таки -- почти, но дальше ума не приложу, чего там нехватает). Ладно с ним, с дизайном, есть более серьёзная проблема. Форма нормально приклеилась к последнему сообщению и выглядит так как надо, но пришлось несколько поменять другое место 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'>.... и т.д.

Иначе ячейка где написано сколько пользователей читают тему и сколько в ней ответов, расползалась на всю ширину страницы.

Убрал -- всё вроде нормально, но как оказалось только на последней странице, где показывается форма быстрого ответа. А на первых, где её нет, просто какая-то порнография из-за этого образовалась... ;) Всё перемешалось в одной ячейке прилепленной к таблице топика -- и кто читает и статистика и быстрый переход и копирайты с ними... :D Как быть?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.