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

Соместимость модов "Кубики (дайсы)" и "Скрытый текст v3


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

Имеется 2.3.5

 

Было установлено :

1. Мод: Кубики (дайсы) отсюда

2. Мод: Скрытый текст v3b (WildRAID) отсюда

 

Все работает по отдельности.

 

Но внутри приватного текста дайсы не работают ((

Как это можно исправить ?

И на будущее, как ставить моды , что бы сохранялась вложенная работоспособность ?

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

Инструкция к "скрытому тексту v2" была написана таким образом, чтобы дайсы работали внутри него. В третьей версии на это дело забил.)

 

В сущности, нужно всего лишь проверить следующее.

 

1). В class_post.php, где происходит СОХРАНЕНИЕ поста код обработки дайсов должен идти ПЕРЕД кодом скрытого текста (в функции compile_post).

2). В topics.php, в xmlout.php и т.п. местах, где происходит ВЫВОД информации, код скрытого текста должен идти ПЕРЕД дайсами.

 

Т.е., если брать тот же topics.php, должно выглядеть вот так:

$row['post'] = $this->ipsclass->add_private_data($row); // вставляем скрытый текст

$row['post'] = $this->ipsclass->parse_dices($row); // парсим дайсы

 

В class_post (можно искать по комментариям):

//DICE MOD
... ля-ля-ля, код дайсов

//PRIVATE DATA MOD
... скрываем текст

 

Можно просто вручную поменять местами эти блоки, если требуется - всё заработает.

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

Гран мерси, сегодня ночью попробую.

 

Аналогично как сделать, что бы еще и мод спойлер заработал ?

 

Вариант например трехкратной вложенности может иметь место ?

 

Например сполер-приват-дайсы

 

НО при этом что бы работали и варианты :

 

приват-спойлер-дайсы

 

Или тут возможен только один порядок вложенности и последовательности ?

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

Со "спойлером" должно работать в любых вариантах и комбинациях.

 

Едиственное, что важно -> дайсы в коде должны сохраняться раньше скрытого текста, а показываться - позже. Между ними, теоретически, можно вставлять что угодно.

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

В сущности, нужно всего лишь проверить следующее.

 

1). В class_post.php, где происходит СОХРАНЕНИЕ поста код обработки дайсов должен идти ПЕРЕД кодом скрытого текста (в функции compile_post).

 

В class_post.php так и идет :

 

/*-------------------------------------------------------------------------*/
// compile post
// ------------------
// Compiles all the incoming information into an array
// which is returned to the accessor
/*-------------------------------------------------------------------------*/

function compile_post()
{
	$this->ipsclass->vars['max_post_length'] = $this->ipsclass->vars['max_post_length'] ? $this->ipsclass->vars['max_post_length'] : 2140000;

	//-----------------------------------------
	// Sort out some of the form data, check for posting length, etc.
	// THIS MUST BE CALLED BEFORE CHECKING ATTACHMENTS
	//-----------------------------------------

	$this->ipsclass->input['enablesig']   = (isset($this->ipsclass->input['enablesig']) AND $this->ipsclass->input['enablesig'])   == 'yes' ? 1 : 0;
	$this->ipsclass->input['enableemo']   = (isset($this->ipsclass->input['enableemo']) AND $this->ipsclass->input['enableemo'])   == 'yes' ? 1 : 0;
	$this->ipsclass->input['enabletrack'] = (isset($this->ipsclass->input['enabletrack']) AND intval($this->ipsclass->input['enabletrack']) != 0) ? 1 : 0;

	//-----------------------------------------
	// Do we have a valid post?
	//-----------------------------------------

	if ( strlen( trim( $this->ipsclass->my_br2nl( $_POST['Post'] ) ) ) < 1 )
	{
		if ( ! $_POST['preview'] )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_post') );
		}
	}

	if ( strlen( $_POST['Post'] ) > ( $this->ipsclass->vars['max_post_length'] * 1024 ) )
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'post_too_long') );
	}

	//-----------------------------------------
	// Remove board tags
	//-----------------------------------------

	$this->ipsclass->input['Post'] = $this->ipsclass->remove_tags( $this->ipsclass->input['Post'] );

	//-----------------------------------------
	// Post process the editor
	// Now we have safe HTML and bbcode
	//-----------------------------------------

	if ( isset($_POST['fast_reply_used']) AND $_POST['fast_reply_used'] )
	{
		if ( $this->han_editor->method == 'rte' && $this->ipsclass->can_use_fancy_js )
		{
			//-----------------------------------------
			// Fast reply used.. and we've chosen the RTE
			// Convert STD to RTE first...
			//-----------------------------------------

			$_POST['Post'] = $this->parser->convert_std_to_rte( $_POST['Post'] );
		}
	}

	$this->ipsclass->input['Post'] = $this->han_editor->process_raw_post( 'Post' );

	//-----------------------------------------
	// Parse post
	//-----------------------------------------

	$this->parser->parse_smilies 	= $this->ipsclass->input['enableemo'];
	$this->parser->parse_html    	= (intval($this->ipsclass->input['post_htmlstatus']) AND $this->forum['use_html'] AND $this->ipsclass->member['g_dohtml']) ? 1 : 0;
	$this->parser->parse_nl2br   	= intval($this->ipsclass->input['post_htmlstatus']) == 2 ? 1 : 0;
	$this->parser->parse_bbcode  	= $this->forum['use_ibc'];
	$this->parser->bypass_badwords 	= intval($this->ipsclass->member['g_bypass_badwords']);

	$post = array(
					'author_id'   => $this->ipsclass->member['id'] ? $this->ipsclass->member['id'] : 0,
					'use_sig'     => $this->ipsclass->input['enablesig'],
					'use_emo'     => $this->ipsclass->input['enableemo'],
					'ip_address'  => $this->ipsclass->ip_address,
					'post_date'   => time(),
					'icon_id'     => isset($this->ipsclass->input['iconid']) ? $this->ipsclass->input['iconid'] : 0,
					'post'        => $this->parser->pre_display_parse( $this->parser->pre_db_parse( $this->ipsclass->input['Post'] ) ),
					'author_name' => $this->ipsclass->member['id'] ? $this->ipsclass->member['members_display_name'] : $this->ipsclass->input['UserName'],
					'topic_id'    => "",
					'queued'      => ( isset($this->obj['moderate']) AND ( $this->obj['moderate'] == 1 || $this->obj['moderate'] == 3 ) ) ? 1 : 0,
					'post_htmlstate' => isset($this->ipsclass->input['post_htmlstatus']) ? intval($this->ipsclass->input['post_htmlstatus']) : 0,
				 );

	//-----------------------------------------
    // If we had any errors, parse them back to this class
    // so we can track them later.
    //-----------------------------------------

    $this->obj['post_errors'] = $this->parser->error;

	//DICE_MOD	
	if($this->orig_post['dice'])
	{
		$this->dice = unserialize($this->orig_post['dice']);
	}
	else
	{
		$this->dice = array();
	}

	$post['post'] = preg_replace_callback( "#\[dice(?!\d)(?:=?)(?:"|&\#39;|\"|\')?(.*?)?(?:"|&\#39;|\"|\')?\](.*?)\[/dice\]#s", array( &$this, 'dice_process'),$post['post']);

	if(count($this->dice))
	{
		$post['dice'] = serialize($this->dice);
	}					 

	//PRIVATE_DATA_MOD
	$this->priv_data = array();

	#Common moderator editing the post?
	if( $this->ipsclass->vars['priv_restrict_mods'] and $this->orig_post['private_data'] and !$this->ipsclass->member['g_is_supmod'] and ($this->ipsclass->member['id'] != $this->orig_post['author_id']) )
	{
		$this->priv_data = unserialize(stripslashes($this->orig_post['private_data']));

		if(is_array($this->priv_data))
		{
			#Add all private data markers to the end of post
			foreach($this->priv_data as $pd_id=>$pd_data)
			{
				$post['post'] .= '<!--private_data='.$pd_id.'-->';
			}
		}
	}
	else
	{
		$post['post'] = preg_replace_callback( "#(?:\[".$this->ipsclass->vars['priv_bbcode_tag']."=?(?:"|&\#39;|\"|\')?(.*?)(?:"|&\#39;|\"|\')?\])((?R)|.*?)(?:\[/".$this->ipsclass->vars['priv_bbcode_tag']."\])#si", array( &$this, 'private_data_process'), $post['post'] );
	}

	if( count($this->priv_data) )
	{
		$post['private_data'] = addslashes(serialize($this->priv_data));
	}

	return $post;
}

 

2). В topics.php, в xmlout.php и т.п. местах, где происходит ВЫВОД информации, код скрытого текста должен идти ПЕРЕД дайсами.

 

В topics.php строки модов скрытого текста и кубиков вообще в разных местах

В xmlout.php кусков кода от дайсов вообще нет

 

Т.е., если брать тот же topics.php, должно выглядеть вот так:

$row['post'] = $this->ipsclass->add_private_data($row); // вставляем скрытый текст

$row['post'] = $this->ipsclass->parse_dices($row); // парсим дайсы

 

В class_post (можно искать по комментариям):

//DICE MOD
... ля-ля-ля, код дайсов

//PRIVATE DATA MOD
... скрываем текст

 

Можно просто вручную поменять местами эти блоки, если требуется - всё заработает.

 

как быть ?

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

В topics.php

 

Взять вот эту строку:

$row['post'] = $this->ipsclass->parse_dices($row);

 

Переместить её после:

$row['post'] = $this->ipsclass->add_private_data($row);

 

В xmlout.php

 

Найти:

$raw_post = $this->ipsclass->add_private_data($this->post->post);

 

Заменить на:

$this->post->post['post'] = $this->ipsclass->parse_dices($this->post->post);
$raw_post = $this->ipsclass->add_private_data($this->post->post)  . "\n" . '<!--IBF.ATTACHMENT_'. $pid . '-->';

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

Найти:

<!--IBF.ATTACHMENT_'. $pid . '-->';

там уже есть. А те кто ставят ни глядя просто скопируют и наткнутся на грабли ))

 

Сделал. Вроде заработало.

Вроде потому , что когда вставил в приватный текст бросок дайса и разлогинился, то разлогиненому пользователю показывается только - Количество бросков: 1, о приватном тексте ни слова ))

Видимо в настройках приватного текста надо что то подправить как я видел в некоторых ветках тут.

 

И еще один момент в кнопке пишет Приватный текст, а в тегах Скрытый текст. Некоторые могут запутаться.

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

/cache/lang_cache/ru/lang_wr_private_data.php

 

Поискать ненравящийся текст - поменять на свой. ^__^

 

+++

 

На самом деле, кусочек <!--IBF.ATTACHMENT_'. $pid . '-->'; следует оставить. А то, что выше, убрать или проигнорировать.

 

Модификации постоянно дополняются, инструкции периодически незаметно меняются. Но в архиве не всегда самая последняя версия. :D

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

Эм...

 

там просто тогда 2 раз получится :

 

<!--IBF.ATTACHMENT_'. $pid . '-->';

<!--IBF.ATTACHMENT_'. $pid . '-->';

 

это нормально ?

 

И код который был перед таки добавлять или нет ?

 

Счас народ гулял, на буднях займется тестом модов, может чего и всплывет ))

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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