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

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


d1pro

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

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

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

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

Почитал я тамошний саппорт топик. Очень ругают сей мод. Думаю лучше будет написать менее кривой аналог.
Ссылка на комментарий
Поделиться на других сайтах

// *************************************************************

// Отредактируйте ./sources/action_public/topics.php

// *************************************************************

 

Найти:

 

$this->output = str_replace( "<!--IBF.QUICK_REPLY_CLOSED-->", $this->ipsclass->compiled_templates['skin_topic']->quick_reply_box_closed(), $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, $qr_type), $this->output );

 

Заменить:

 

//FastReply Mod

 

$qr_type = $this->ipsclass->member['qr_type'];

 

//--------------------------------

// Let's get type of qreply user selected

//--------------------------------

 

if ($qr_type == "-1")

{

$qr_type = $this->ipsclass->vars['qr_default_type'];

}

 

//--------------------------------

// If he's using classic mode, no need for further changes

//--------------------------------

 

if ( $qr_type )

{

$this->ipsclass->load_language('lang_post');

$this->ipsclass->load_template('skin_post');

 

//-----------------------------------------

// Load and config the std/rte editors

//-----------------------------------------

 

require_once( ROOT_PATH."sources/handlers/han_editor.php" );

$this->han_editor = new han_editor();

$this->han_editor->ipsclass =& $this->ipsclass;

$this->han_editor->init();

}

 

$this->output = str_replace( "<!--IBF.QUICK_REPLY_CLOSED-->", $this->ipsclass->compiled_templates['skin_topic']->quick_reply_box_closed(), $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, $qr_type), $this->output );

 

//--------------------------------

// Let's go around mode's needs

//--------------------------------

 

switch( $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 );

$this->output = $this->html_add_smilie_box( $this->output, 1 );

break;

case 2:

$this->han_editor->ed_height = 150;

$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

 

Найти:

 

// Pass it to our print routine

 

$this->ipsclass->print->add_output("$this->output");

$this->ipsclass->print->do_output( array( 'TITLE' => $this->topic['title'] . ' - ' . $this->ipsclass->vars['board_name'],

'JS' => 1,

'NAV' => $this->nav,

) );

 

}

 

Добавить ниже:

 

//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 :D

//-----------------------------------------

 

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

Все сделал именно так. После чего при входе в тему появляется вот это:

Parse error: parse error, unexpected ';', expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/newladd1/public_html/forum/sources/action_public/topics.php on line 2969

 

Что не так? Версия форума 2.1.4

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

Собрал функцию для вставки цитаты в форму:

Вставьте в конец файла /jscripts/ipb_editor_std.js

function pasteselection_new()
{ 
if ( mystored_selection != '' && mystored_selection != null )
{
  doInsert( "[quote]"+mystored_selection+"[/quote] \n" );  
}
}

Вставьте в конец файла /jscripts/ipb_editor_rte.js:

 
function pasteselection_new()
{
if ( mystored_selection != '' && mystored_selection != null )
{

  rtewindow.focus();
  wrap_tags( "[quote]"+mystored_selection, "[/quote]<br />" );
  rtewindow.focus();
}
}

Вставьте в конец файла /jscripts/ipb_topic.js:

function pasteselection_new()
{
if ( mystored_selection != '' && mystored_selection != null )
{
  document.getElementById( 'fastreplyarea' ).value += "[quote]"+mystored_selection+"[/quote]\n";

}
}

Теперь надо куда угодно вставить ссылку (или модифицировать кнопки "цитата"):

<a href="java script:pasteselection_new();" onMouseDown="checkselection();">Вставить выделенное</a>

JavaScript в коде пишется СЛИТНО!

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

Пополню ряды, у кого не работает форма быстрого ответа.

Все по инструкции выполнила. Никаких ошибок не было ни разу. Но просто не работает и все. Сейф моды отключены везде. А очень хочется быстрый ответ.

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

Люди помогите в чём проблема. Мод вроде работал ноормально но потом заметил что если ответить с помощью формы быстрого ответа один раз, а потом ещё раз, то второй раз окно не перезагружается.
Ссылка на комментарий
Поделиться на других сайтах

Binfos, я видимо все-таки не догоняю, что должно было случиться. Зашла на Ваш форум, форма быстрого ответа точно такая же как здесь. Это так и должно быть?.. Или это гостям у вас не показывается в расширенном виде?

Чтобы расширенная форма открывалась прямо по нажатию кнопки Быстрый ответ.

Мож поэтому мне и кажется, что ничего не изменилось. Как было, так и осталось.

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

В админке должна появится настройка формы быстрого ответа,в разделе Темы сообщения и голосования (по-моему так в русской версии),там нужно будет выбрать тип отображаемой формы ответа

 

Так-же в настройках профиля,в разделе Настройка форума должна появится настройка - Тип формы быстрого ответа

 

Возможно вы не настроили в админке :D

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

aridanew!Насколько я понял, расширенная форма быстрого ответа устанавливается в Личных настройках твоего аккаунта.

 

Так как в системных настройках из админки никакого эффекта нет.

Какую только форму не ставь!

 

Или я не прав?

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

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

В своих настройках у меня стоит открывать быстрый ответ сразу. Он и открывается, но в таком виде, как здесь - в пустом без кнопок и смайлов.

 

Не, что ни ставь, никаких изменений. Хоть Reduced+Smilies, хоть Extended, который и есть видимо то самое.

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

У многих мод не пашет (у меня в том числе), у многих мод пашет. Чем форум первых отличается от форума вторых? НИЧЕМ. Мистика прям.
Ссылка на комментарий
Поделиться на других сайтах

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

 

Проблемы с непоказом расширенных вариантов - проверять, добавили ли переменную в функцию (в скинах) и прописались ли сами изменения в кэш скинов.

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

Ребят, подскажите пожалуйста как сделать чтобы форма быстрого ответа была сразу же внизу не нажимая на кнопку этого Быстрого Ответа?
Ссылка на комментарий
Поделиться на других сайтах

У меня 2.1.5 нормально работает

У меня 2.1.5 нормально работает

Вот это хорошая новость. Щас и я попробую поставить. Да, кстати: В архиве лежит уже исправленная версия? Или придётся читая тему самому латать?

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


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

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

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