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

[2.1.x]Расширенная форма быстрого ответа


d1pro

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

А что она делает?

Быстрая цитата - выделяешь текст, жмёшь на неё, и текст вставляется в форму быстрого ответа уже в тегах цитаты. Нужно именно такое.

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

  • Ответы 347
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Быстрая цитата - выделяешь текст, жмёшь на неё, и текст вставляется в форму быстрого ответа уже в тегах цитаты. Нужно именно такое.

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

Набор функций для никнеймов для IPB 2.1.X

Вставка имени и быстрая цитата с выделением

( Быстрая цитата в стиле multiqoute для 2.1.х )

 

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

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

  • 2 недели спустя...

Есть проблема.

Стояла расширенная форма ответа. Всё работало как часы. Потом я поставил Быстрый ответ на Ajax от Master, в связке с расширенной формой быстрого ответа+отправка по Ctrl+Enter. Всё вроде работало, но был глюк с дублированием постов при отправке если новый пост добавлялся на новую страницу. В итоге я вернул обычную отправку с расширенной формой быстрого ответа, но без ajax и ctrl+enter.

Вроде всё было нормально, но сечас заметил что в списке выбора шрифта и размера ничего нет.

http://s.foto.radikal.ru/0706/9f/e73fde4df5f8.jpg

Я перекэшировал скин - без толку. Помогите пожалуйста.

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

Есть проблема.

Скорее всего намудрили где-то в яваскрипте, например в ./jscripts/ipb_editor.js...

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

  • 3 недели спустя...
А почему у меня в форме быстрого ответа не появилась колонка со смайлами? :D У меня все смайлы под формой быстрого ответа. ХЕЛП!
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • 1 месяц спустя...

вроде все работает, но вариант в админке "стандартная форма+смайлы" выглядит как и "расширенная".. где я мог ошибиться? :D

 

а самостоятельный выбор в профиле "расширенная" не выводит вообще никакой формы

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

  • 4 недели спустя...
  • 1 месяц спустя...
Найти:

....

$this->output = str_replace( "<!--IBF.QUICK_REPLY_OPEN-->" , $this->ipsclass->compiled_templates['skin_topic']->quick_reply_box_open($this->topic['forum_id'], $this->topic['tid'], $show, $this->md5_check, $qr_type), $this->output );

 

$this->output = str_replace( "<!--IBF.QUICK_REPLY_OPEN-->" , $this->ipsclass->compiled_templates['skin_topic']->quick_reply_box_open($this->topic['forum_id'], $this->topic['tid'], $show, $this->md5_check), $this->output );

 

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

 

Исправьте инструкцию..

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

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

Сейчас ДВАЖДЫ поставил это дело на локалке на ЧИСТЫЙ движок, ничего до этого не модя. В итоге форум работает, но... никаких изменений в быстроформе нету. Поначалу перед ней вдруг появлялась безобидная единичка, а теперь всё так, будто я и не модил ничего. Так что я в большинстве. Подчёркиваю: сий топик я прочёл полностью, даже сохранил его себе, и вменяемо учитывал всё здесь сказанное. Увы.

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

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

Arhar

Пробовал, чего только не пробовал. Но... читай ниже :D

 

Леди и джентльмены, спешу сообщить, что несмотря на мои наезды выше, всё-таки мне удалось сделать этот мод. И всё-таки он действительно хорош, и всё же выражаю браво аффтару. Ура, таварисчи, всё-таки рекомендую. Только модить не на хосте, а на локалке, а на сервак заливать файлы лишь успешно протестенного мода.

Тем не менее, следует поругать этот мод: думается мне, что я знаю, в чём траблус. Дело в том, что инструкция по его установке написана весьма безответственно. А именно: там неоднократно предлагается заменить огромные фрагменты кода, хотя в новом фрагменте изменяется не так уж много и главным образом что-то добавляется, а остальное (в новом) является стандартным кодом! То бишь тут не учтено, что у юзера могут иметься в этом коде фрагменты более ранних модификаций! Например, ни в коем случае нельзя тупо заменять весь текст в "skin_topic > quick_reply_box_open", как сказано в инструкции - это, например, вырубит мод защиты от ботов вопросами. Или, скажем, нельзя просто менять предлагаемые фрагменты в файле "topics.php" - этот файл изменяется в довольно многих модах, а когда просят поменять большой фрагмент, то обычно мы смотрим его начало и конец, да бегло пробегаем середину, и типа убеждаемся, что это то, что и надо менять. На самом деле необходимо внимательно смотреть весь заменяемый фрагмент полностью, и если хоть что-то в предлагаемом "Найти:" не совпадает с тем, что у вас в исходном файле, - делать просто "Заменить на:" нельзя. Надо точно выявить разницу и, включив мозги, кусочками поменять код так, чтобы не удалить коды иных модов.

Вот живой, но самый простой пример. В инструкции сказано:

В открывшемся окне заменить:

 

$fid="",$tid="",$show="hide",$key=""

 

На:

 

$fid="",$tid="",$show="hide",$key="",$qr_type=""

 

Сохраните изменения.

Разве ж так можно? А если "в открывшемся окне" имеются ещё какие-то переменные для других модов? Здесь следовало написать не "заменить", а просто добавить переменную "$qr_type=""" через запятую, не трогая остальные! Тут конечно можно повилять на том, что типа заменять надо только названные переменные, ибо они же и вставляются вновь, но пардон, граждане, не все же такие грамотные спецы в кодах, и не все способны правильно понимать туманности. Надо же понимать, что модом пользуются самые разные люди, и иметь хоть капельку ответственности.

Я очень рекомендую автору переработать инструкцию, и к тому же добавить визуальное разделение её блоков строчками "==========..." или "**********...", как это делают в большинстве модов.

Кстати, не понял, какие у вас глюки с палитрой? Всё нормально, ничего не плавает и не бегает, куча цветов на выбор исправно работает... И отображение формы хорошее. Единственное - не работает кнопка "закрыть все теги", ну так тут и действительно х с ней, можно просто картинку этой кнопки прозрачным пикселем сделать, чтоб глаза не мозолила.

Большое спасибо автору, прошу простить за предыдущее недовольство, хотя 17 страниц безутешных жалоб всё же должны о чём-то говорить.

 

Post scriptum: между прочим первые два раза я ставил мод на чистый движок, без прочих модов, и, как уже говорил, ничего не изменялось. Не исключено, что я оба раза проявил где-нибудь криворукость, но всё же выглядит ситуация странно, ведь я здесь не один такой.

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

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

 

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

 

PS: Мод на самом деле жестокий, никому не рекомендую пытаться ставить его самому, тем более на рабочий форум.

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

  • 7 месяцев спустя...

Проблема такая. Устаналиваю на двиг ипб 2.1.7 (локалхост, денвер)

При классическом редакторе (если через настройки ставить) - работает прекрасно.

Ставим в настройках сокращенная + смайлы, получаем при заходе в тему:

Fatal error: Call to undefined method topics::html_add_smilie_box() in Z:\home\test2.ru\www\sources\action_public\topics.php on line 647

ставим расширенная:

Fatal error: Call to undefined method topics::html_name_field() in Z:\home\test2.ru\www\sources\action_public\topics.php on line 651

 

topics.php

 

witch( $qr_type )
					{
							case 0:
									break;
							case 1:
									$this->ipsclass->lang['the_max_length'] = $this->ipsclass->vars['max_post_length'] * 1024;
									$this->han_editor->ed_height = 100;
									$this->output = str_replace( "<!--POST BOX-->",  $this->han_editor->show_editor( '', 'Post' ), $this->output )
647-я строка  =>			   $this->output = $this->html_add_smilie_box( $this->output, 1 );										break;
							case 2:
									$this->han_editor->ed_height = 150;
  651-я строка  =>		 $this->output = str_replace( "<!--NAME FIELDS-->", $this->html_name_field(), $this->output );
									$this->output = str_replace( "<!--POST BOX-->",   $this->html_post_body(), $this->output );
									$this->output = $this->html_add_smilie_box( $this->output );
									$this->html_checkboxes( $this->topic['tid'], $this->topic['forum_id'] );
									break;
							default:
									break;
					}
					//FastReply Mod

 

В чем дело?

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

Arhar, сомневаюсь что тут дело в моих руках. Имхо не первый год занимаюсь движками, php и т.д. Сделано все по инструкции, что бывает со мной редко :D. На момент написания этих строк проблема решена. Однако тут я мельком видел в теме, что писали аналогичную проблему, но ответа однако не было на него. В принципе, я решил проблему, но такой вопрос был ранее, ответа не последовало. А отмашки типа "кривые руки", "нубы", "купите выпрямители рук" и т.д. если честно, набили оскомину уже ;). И не нужно судить людей по нику, двум строчкам, аватаре и т.д. "Не судите, да не судимы будете"..... это так, к слову :)
Ссылка на комментарий
Поделиться на других сайтах

ну я то знаю, что

//FastReply Mod
       //--------------------------------------------------------------
       // MOD: Extended Fast Reply
       // QUICK REPLY BOX FUNCTIONS (MODIFED, FROM POST MODULE)
       //--------------------------------------------------------------

       /*-------------------------------------------------------------------------*/
       // HTML: name fields.
       // ------------------
       // Returns the HTML for either text inputs or membername
       // depending if the member is a guest.
       /*-------------------------------------------------------------------------*/

       function html_name_field()
       {
               return $this->ipsclass->member['id'] ? $this->ipsclass->compiled_templates['skin_post']->nameField_reg() : $this->ipsclass->compiled_templates['skin_post']->nameField_unreg( $this->ipsclass->input[userName] );
       }

       /*-------------------------------------------------------------------------*/
       // HTML: Post body.
       // ------------------
       // Returns the HTML for post area, code buttons and
       // post icons
       /*-------------------------------------------------------------------------*/

       function html_post_body($raw_post="")
       {
               $this->ipsclass->lang['the_max_length'] = $this->ipsclass->vars['max_post_length'] * 1024;

               return $this->ipsclass->compiled_templates['skin_post']->postbox_wrap( $this->han_editor->show_editor( $raw_post, 'Post' ) );
       }

       /*-------------------------------------------------------------------------*/
       // HTML: checkboxes
       // ------------------
       // Returns the HTML for sig/emo/track boxes
       /*-------------------------------------------------------------------------*/

       function html_checkboxes($type="", $tid="", $fid="")
       {
               $default_checked = array(
                                                                 'sig' => 'checked="checked"',
                                                                   'emo' => 'checked="checked"',
                                                                   'tra' => $this->ipsclass->member['auto_track'] ? 'checked="checked"' : ''
                                                       );


               // Make sure we're not previewing them and they've been unchecked!

               if ( isset( $this->ipsclass->input['enablesig'] ) AND ( ! $this->ipsclass->input['enablesig'] ) )
               {
                       $default_checked['sig'] = "";
               }

               if ( isset( $this->ipsclass->input['enableemo'] ) AND ( ! $this->ipsclass->input['enableemo'] ) )
               {
                       $default_checked['emo'] = "";
               }

               if ( isset( $this->ipsclass->input['enabletrack'] ) AND ( ! $this->ipsclass->input['enabletrack'] ) )
               {
                       $default_checked['tra'] = "";
               }
               else if ( isset( $this->ipsclass->input['enabletrack'] ) AND ( $this->ipsclass->input['enabletrack'] == 1 ) )
               {
                       $default_checked['tra'] = 'checked="checked"';
               }

               $this->output = str_replace( '<!--IBF.EMO-->'  , $this->ipsclass->compiled_templates['skin_post']->get_box_enableemo( $default_checked['emo'] )  , $this->output );

               if ( $this->ipsclass->member['id'] )
               {
                       $this->output = str_replace( '<!--IBF.SIG-->'  , $this->ipsclass->compiled_templates['skin_post']->get_box_enablesig( $default_checked['sig'] )  , $this->output );
               }

               if ( $this->ipsclass->cache['forum_cache'][$fid]['use_html'] and $this->ipsclass->cache['group_cache'][ $this->ipsclass->member['mgroup'] ]['g_dohtml'] )
               {
                       $this->output = str_replace( '<!--IBF.HTML-->' , $this->ipsclass->compiled_templates['skin_post']->get_box_html( array( intval($this->ipsclass->input['post_htmlstatus']) => ' selected="selected"' ) ), $this->output );
               }

               if ( $type == 'reply' )
               {
                       if ( $tid and $this->ipsclass->member['id'] )
                       {
                               $this->ipsclass->DB->simple_construct( array( 'select' => 'trid', 'from' => 'tracker', 'where' => "topic_id=$tid AND member_id=".$this->ipsclass->member['id'] ) );
                               $this->ipsclass->DB->simple_exec();

                               if ( $this->ipsclass->DB->get_num_rows() )
                               {
                                       $this->output = str_replace( '<!--IBF.TRACK-->',$this->ipsclass->compiled_templates['skin_post']->get_box_alreadytrack(), $this->output );
                               }
                               else
                               {
                                       $this->output = str_replace( '<!--IBF.TRACK-->', $this->ipsclass->compiled_templates['skin_post']->get_box_enabletrack( $default_checked['tra'] ), $this->output );
                               }
                       }
               }
               else if ( $type != 'edit' )
               {
                       if ( $this->ipsclass->member['id'] )
                       {
                               $this->output = str_replace( '<!--IBF.TRACK-->', $this->ipsclass->compiled_templates['skin_post']->get_box_enabletrack( $default_checked['tra'] ), $this->output );
                       }
               }
       }

   /*-------------------------------------------------------------------------*/
       // HTML: add smilie box.
       // ------------------
       // Inserts the clickable smilies box
       /*-------------------------------------------------------------------------*/

       function html_add_smilie_box($in_html="",$light=0)
       {
               $show_table = 0;
               $count      = 0;

               if ( ! $light )
               {
                      $smilies    = "<tr align='center'>\n";
               }

               $smilie_id  = 0;

               //-----------------------------------------
               // Get the smilies from the DB
               //-----------------------------------------

               if ( ! is_array( $this->ipsclass->cache['emoticons'] ) )
               {
                       $this->ipsclass->cache['emoticons'] = array();

                       $this->ipsclass->DB->simple_construct( array( 'select' => 'typed,image,clickable,emo_set', 'from' => 'emoticons' ) );
                       $this->ipsclass->DB->simple_exec();

                       while ( $r = $this->ipsclass->DB->fetch_row() )
                       {
                               $this->ipsclass->cache['emoticons'][] = $r;
                       }
               }

               usort( $this->ipsclass->cache['emoticons'] , array( 'topics', 'smilie_alpha_sort' ) );

               foreach( $this->ipsclass->cache['emoticons'] as $a_id => $elmo )
               {
                       if ( $elmo['emo_set'] != $this->ipsclass->skin['_emodir'] )
                       {
                               continue;
                       }

                       if ( ! $elmo['clickable'] )
                       {
                               continue;
                       }

                       if ($light and $count >= $this->ipsclass->vars['qr_max_emo'] and $this->ipsclass->vars['qr_max_emo'] )
                       {
                               break;
                       }

                       $show_table++;
                       $count++;
                       $smilie_id++;

                       //-----------------------------------------
                       // Make single quotes as URL's with html entites in them
                       // are parsed by the browser, so ' causes JS error 
                       //-----------------------------------------

                       if (strstr( $elmo['typed'], "'" ) )
                       {
                               $in_delim  = '"';
                               $out_delim = "'";
                       }
                       else
                       {
                               $in_delim  = "'";
                               $out_delim = '"';
                       }

                       if ( ! $light )
                       {
                              $smilies .= "<td><a href={$out_delim}java script:emoticon($in_delim".$elmo['typed']."$in_delim, 'smid_$smilie_id'){$out_delim}><img id='smid_$smilie_id' src=\"".$this->ipsclass->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='smilie' border='0' /></a> </td>\n";
                       }
                       else
                       {
                              $smilies .= "<a href={$out_delim}java script:emoticon($in_delim".$elmo['typed']."$in_delim, 'smid_$smilie_id'){$out_delim}><img id='smid_$smilie_id' src=\"".$this->ipsclass->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='smilie' border='0' /></a> \n";
                       }

                       if ($count == $this->ipsclass->vars['emo_per_row'] and ! $light)
                       {
                               $smilies .= "</tr>\n\n<tr align='center'>";
                               $count = 0;
                       }
               }

               //-----------------------------------------
               // Write 'em
               //-----------------------------------------

               if ( $count != $this->ipsclass->vars['emo_per_row'] and ! $light )
               {
                       for ($i = $count ; $i < $this->ipsclass->vars['emo_per_row'] ; ++$i)
                       {
                               $smilies .= "<td> </td>\n";
                       }
                       $smilies .= "</tr>";
               }

               if ( ! $light )
               {
                      $table = $this->ipsclass->compiled_templates['skin_post']->smilie_table();
               }

               if ($show_table != 0 and ! $light )
               {
                       $table   = preg_replace( "/<!--THE SMILIES-->/", $smilies, $table );
                       $in_html = preg_replace( "/<!--SMILIE TABLE-->/", $table, $in_html );
               }
               else
               {
                       $in_html = preg_replace( "/<!--SMILIE TABLE-->/", $smilies, $in_html );
               }

               return $in_html;
       }

       function smilie_alpha_sort($a, $
       {
               return strcmp( $a['typed'], $b['typed'] );
       }

//FastReply Mod

ниразу не правильно добавлен

а значит руки кривые

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

ну уж если бы дело было в моих кривых руках, я бы в тему писать не стал. Я пишу уже тогда, когда либо ответов не мог найти, либо сам не разобрался... А вообще если учесть кол-во постов моих тут и дату реги (я уже год с вами), то я уж не такой частый гость, ноющий "плизззз памагите!!!!!". Еще раз проверил файл, все коды стоят из инструкции. Я вообще по нескольку раз проверяю, может где запятую забыл и т.д. Увы, все там есть, значит дело в инструкции.... О! Может быть он из-за того, что я уже давно его качал... :D
Ссылка на комментарий
Поделиться на других сайтах

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


×
×
  • Создать...

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

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