Многострочные отзывы в Trader feedback system - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

Страница 1 из 1

Многострочные отзывы в Trader feedback system Помогите с модификацией

#1 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 41
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Январь 2015 - 11:40

Есть такое приложение Trader feedback system, которое позволяет оставлять отзывы на юзеров, но есть у него один существенный косяк - для текста отзыва отведен input с ограничением на количество символов. Мне же нужна возможность оставлять большие длинные отзывы. Как минимум многострочные. Первым делом заменил input на textarea в шаблоне, но это лишь полдела. Например, если не заполнить обязательное поле, то textarea заполняется текстом, где все переносы заменены на <br>.

Глянул в БД. Способ хранения отличается от того, в каком виде хранятся сообщения форума в IPB.
Таблица posts:
Вложение  posts.png (4,7К)
Количество загрузок: 4
Таблица feedback:
Вложение  tfs.png (5,92К)
Количество загрузок: 3

Т.е. как видим, в этом приложении любые символы, даже безопасные !, ? превращаются в html-сущности.

Ладно, лезем в код. Файл /admin/applications_addon/other/feedback/modules_public/view/view.php. Функция вставки в БД:
$this->DB->insert( 'feedback',
									array(	'date'		=> time(),
											'sender'	=> $this->memberData['member_id'],
											'receiver'	=> $userid,
											'note'      => $this->request['comment'],
											'ip'		=> $_SERVER['REMOTE_ADDR'],
											'score'     => $this->request['leaving'],
											'link_type' => $this->link['type'],
											'link'      => $this->link['id'],
											'type'      => $this->request['role']
										)
								);

Честно говоря, в коде IPB еще разбираться не доводилось, потому и прошу совета гуру. Как видим, тут текст коммента берется из $this->request. Видимо, IPB это свойство уже каким-то образом очищает от возможных опасных конструкций, а именно превращает все символы в html-сущности без разбору. Нам это не нужно. Посмотрел, как обрабатываются обычные посты и темы. Там используется чистый массив $_POST, который прогоняется через:
IPSText::parseCleanValue( $this->_topicTitle )


Итого, безопасно ли заменить в вышеприведенном коде:
'note'      => $this->request['comment'],

на
'note'      => IPSText::parseCleanValue($_POST['comment']),

?

И, соответственно, в шаблоне:
<textarea id="comment" class="input_text" style="font-size: 16px;" rows="8" cols="65" name="comment" /><if test="isset($this->request['comment'])">{$this->request[['comment']}</if></textarea>

на
<textarea id="comment" class="input_text" style="font-size: 16px;" rows="8" cols="65" name="comment" /><if test="isset($_POST['comment'])">{$_POST['comment']}</if></textarea>

?

Заранее спасибо за ответы.
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 17 Январь 2015 - 14:22

$this->request это и есть массив GET|POST параметров обработанные через IPSText::parseCleanValue. Т.е. единственное что вам нужно сделать, это заменить в textarea <br /> на new line.

<textarea id="comment" class="input_text" style="font-size: 16px;" rows="8" cols="65" name="comment" /><if test="isset($this->request['comment'])">{parse expression="str_replace('<br />', "\n", $this->request['comment'])"}</if></textarea>

1

#3 Пользователь не на сайте   Mac ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 41
  • Регистрация: 15-Июнь 14
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Январь 2015 - 15:34

А! Действительно, перемудрил. Большое спасибо!

Единственно непонятным для меня остается вопрос, почему в таблице постов восклицательные знаки хранятся без изменений, а через $this->request в этом приложении в виде html-сущностей. Вроде как смысла нет конвертировать их.
0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 271
  • Регистрация: 20-Март 09
  • Репутация: 2 077
  • IPB version:3.1.x
 

Отправлено 17 Январь 2015 - 15:41

Потому что посты обрабатываются через парсер ббкодов непосредственно из $_POST.
При желании можно добавить замену и для восклицательного знака.

str_replace(array('<br />', '&#33;'), array("\n", "!"), $this->request['comment'])

0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна