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

[2.3.x](SnS) AJAX Быстрый ответ


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

Все, наконец разобрались с быстрым ответом, спасибо админу сервера. В общем у кого возвращет ret_arr is null, в большинстве случаев надо проверить файлы форум и всех доп. модулей которые были установлены и сменить посылаемые headers с http/1.1 на http/1.0, после чего все начинает корректно работать.
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...
  • Ответы 771
  • Создана
  • Последний ответ

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

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

Загружено фотографий

я 6 часов возился с этим модом, прочитал все 36 постов ну вы там почемуто все дружно игнорировали сообщения некоторых пользователей, первое это ошибка при добавление текста и второе вставка кода в 1 файл так чтоб получилось неизвестно что! досадно однако!

 

3. Открыть шаблон skin_topic->RenderRow для редактирования. ВНИМАНИЕ!!! БУДЬТЕ ВНИМАТЕЛЬНЫ В ЭТОМ ПУНКТЕ!!!

В данный момент содержимое шаблона следующее:

html(template) код поста
<script type='text/javascript'>
javascript код создания меню
</script>

Ваша задача, не напутав, сделать вот такой код(путём вставки недостающих элементов):

<div id="post-row-{$post['pid']}">
<!--post-html-->
html(template) код поста
<!--post-html-->
</div>
<!--rrjs-->
<script type='text/javascript'>
javascript код создания меню
</script>

Что делать???

 

Вот мой код

 

<!--Begin Msg Number {$post['pid']}-->
<table class='ipbtable' cellspacing="1">
<tr>
	<td valign="middle" class="row2" width="1%"><a name="entry{$post['pid']}"></a><span class="{$post['name_css']}">{$author['members_display_name']}</span></td>
	<td class="row2" valign="top" width="99%">
		<!-- POSTED DATE DIV -->
		<div style="float: left;">
			<span class="postdetails">{$post['post_icon']} <img src='{ipb.vars['img_url']}/to_post_off.gif' alt='{ipb.lang['to_post_alt']}' border='0' style='padding-bottom:2px' /> {$post['post_date']}</span>
		</div>
		<!-- REPORT / DELETE / EDIT / QUOTE DIV -->
		<div align="right">
			<span class="postdetails">{$post['ip_address']} {ipb.lang['posted_on']}
				<a title="{ipb.lang['tt_link']}" href="#" onclick="link_to_post({$post['pid']}); return false;">#{$post['post_count']}</a>
<if="ipb.member['is_mod']">
| <a href="#" title="{ipb.lang['click_for_mod']}" onclick="topic_toggle_pid('{$post['pid']}'); return false;">{$post['pid_start_image']}</a>
</if>

			</span>
		</div>
	</td>
</tr>
<tr>
	<td valign="top" class="{$post['post_css']}">
		<span class="postdetails">
			{$author['avatar']}<br /><br />
			{$author['title']}<br />
			{$author['member_rank_img']}<br /><br />
			{$author['member_group']}<br />
			{$author['member_posts']}<br />
			{$author['member_joined']}<br />
			{$author['ins_nick']}<br />
			{$author['ins_q']}<br />
			{$author['member_location']}
			{$author['member_number']}<br />
			{$author['thanks_point']}
<if="author['custom_fields'] != """>
{$author['custom_fields']}
</if>

<br />
			{$author['warn_text']} {$author['warn_minus']}{$author['warn_img']}{$author['warn_add']}
		</span><br />
		<img src="{ipb.vars['img_url']}/spacer.gif" alt="" width="160" height="1" /><br /> 
   </td>
   <td width="100%" valign="top" class="{$post['post_css']}" id='post-main-{$post['pid']}'>
		<!-- THE POST {$post['pid']} -->
		<div class="postcolor" id='post-{$post['pid']}'>{$post['post']}</div>
		<!--IBF.ATTACHMENT_{$post['pid']}-->
		{$post['signature']}
{$post['who_thanks']}
		<!-- THE POST -->		
	</td>
</tr>
<tr>
	<td class="formbuttonrow" nowrap="nowrap">
		<div style='text-align:left'>{$author['online_status_indicator']}{$author['addresscard']}{$author['message_icon']}<!--{$author['email_icon']}--></div>
	</td>
	<td class="formbuttonrow" nowrap="nowrap">
		<!-- PM / EMAIL / WWW / MSGR -->
		<div style="float: left;">
			{$post['report_link']} {$post['thanks_button']} <a href="java script:scroll(0,0);"><{P_UP}></a>
		</div>
		<!-- REPORT / UP -->
	 	<div align="right">
	 		{$post['delete_button']}{$post['edit_button']}<a href="#" onclick="multiquote_add({$post['pid']}); return false;" title="{ipb.lang['mq_title']}">{$post['mq_start_image']}</a><a href="{ipb.script_url}act=Post&CODE=02&f={ipb.input[f]}&t={ipb.input[t]}&qpid={$post['pid']}" title="{ipb.lang['tt_reply_to_post']}"><{P_QUOTE}></a>
	 	</div>
	 </td>
</tr><tr>
<td class="catend" colspan="2">
<!-- no content -->
</td>
</tr>
</table>
<script type='text/javascript'>
//<![CDATA[
if ( ajax_loaded && use_enhanced_js )
{
menu_build_menu( 'edit-but-{$post['pid']}',
new Array(  img_item + " <a title='{ipb.lang['edit_full_desc']}' href='{ipb.script_url}act=post&do=edit_post&f={$post['forum_id']}&t={$post['topic_id']}&p={$post['pid']}&st={ipb.input['st']}'>{ipb.lang['edit_full_title']}</a>",
			img_item + " <a href='#' title='{ipb.lang['edit_quick_desc']}' onclick='return ajax_prep_for_edit({$post['pid']}, event);'>{ipb.lang['edit_quick_title']}</a>" ) );
}
//]]>
</script>

куда что ставить я честно непонял...

помогите

 

з.ы там еще прописана кнопка спасибо, вот как собрать чтоб ненавредить?

 

версия ипб 2.1.7

 

и я так понимаю это фикс для оригинал мода аджакс? "(SnS) AJAX Fast Reply for 2.1.x"

 

для быстрой связи 360974619

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

Здравствуйте. Так как вы неявно пытаете нагрубить автору, то и отвечать автор вам не будет :D Учитесь быть вежливым, чтобы получать что-то взамен. Никто не обещал, что моды сами установятся, иногда для этого требуется специалист, а с ним нужно разговаривать не в таком тоне.

 

<script type='text/javascript'>
javascript код создания меню
</script>

это

<script type='text/javascript'>
//<![CDATA[
if ( ajax_loaded && use_enhanced_js )
{
menu_build_menu( 'edit-but-{$post['pid']}',
new Array(  img_item + " <a title='{ipb.lang['edit_full_desc']}' href='{ipb.script_url}act=post&do=edit_post&f={$post['forum_id']}&t={$post['topic_id']}&p={$post['pid']}&st={ipb.input['st']}'>{ipb.lang['edit_full_title']}</a>",
			img_item + " <a href='#' title='{ipb.lang['edit_quick_desc']}' onclick='return ajax_prep_for_edit({$post['pid']}, event);'>{ipb.lang['edit_quick_title']}</a>" ) );
}
//]]>
</script>

, а html(template) код поста — всё что до этих строк.

 

и я так понимаю это фикс для оригинал мода аджакс? "(SnS) AJAX Fast Reply for 2.1.x"
Это не фикс, это вторая версия. Чтобы её установить, нужно удалить версию #1 и после этого поставить версию #2.
Ссылка на комментарий
Поделиться на других сайтах

вопрос снят, мульти ответ запустил, мульти цитатц тоже исправил, задел код 1 вот

<script type="text/javascript" src="jscripts/sns_quick_multi_quote.js"></script>

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

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

и как сделать так чтобы невыскакивало это окошко при обведенном тексте когда я его хочю сделать жирным, такое же окно и на скрытие текста выскакивает, ранее небыло

http://imagesbase.com/upload/view/1_122999..._efijnxy135.jpg

 

и неподкинешь ссылочку на расширенный быстрый текст как тут? буду по гроб благодарен (ипб 2.1.7)

http://imagesbase.com/upload/view/rasshire..._censtux278.jpg

просто и со вкусом, без всяких смайлов сбоку

 

тысяча раз спасибо :D

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

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

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

эх вы помошники
А чем вы помогли нам? :D

 

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

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

пока не будут задаваться вопросы правильно, ответов не будет

что такое "влево кринит"?!

возьми, сделай скриншот, нарисуй на нем стрелочками и напиши

что ты думаешь можно ответить на такой вопрос:

"у меня не работает форум!!адинадин я на ниго захажу а он пишит белая страница ((((((((((( ПАМАГИТЕ"

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

  • 1 месяц спустя...

5. ............. skin_topics->topic_page_top :

<script type="text/javascript" src="jscripts/ipb_topic.js"></script>

добавить после:

<script type="text/javascript" src="jscripts/sns_ajax_fast_reply.js"></script>

 

ето зоменить или после?

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

добавить

 

И перестаньте прикидываться падонком, а то мы будем к вам так и относиться :D

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

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

Вобщем, господа, проблема с ret_arr возникает у всех, у кого стоит Minerva SEO и включен встроенный в минерву FURL.

 

Я не стал разбираться глубоко с проблемой, а просто решил её топорным методом - заставил форум при запросе act=xmlout&do=sns-fast-reply-get принудительно отключать систему FURL минервы. А ещё, чтобы скрипт второй версии (который обозначен как только для IPB 2.3.x) заработал на 2.2.x, надо добавить функцию do_replace_into в драйвер БД. Итак, вот все необходимые поправки:

 

1. Открыть sources/ipsclass.php, найти:

		//--------------------------------
	// Set up defaults
	//--------------------------------

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

		$this->vars['mseo_enable_furl'] = ($this->input['do'] == 'sns-fast-reply-get') ? 0 : 1;

 

2. Открыть ips_kernel/class_db_mysql_client.php, найти:

	/*-------------------------------------------------------------------------*/
// Quick function: DO UPDATE
/*-------------------------------------------------------------------------*/

Добавить выше:

	/*-------------------------------------------------------------------------*/
// Quick function: DO REPLACE INTO
/*-------------------------------------------------------------------------*/

function do_replace_into( $tbl, $arr, $where='', $shutdown=FALSE )
{
	//-----------------------------------------
	// Form query
	//-----------------------------------------

	$dba   = $this->compile_db_insert_string( $arr );

	$query = "REPLACE INTO ".$this->obj['sql_tbl_prefix']."$tbl ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})";

	//-----------------------------------------
	// Shut down query?
	//-----------------------------------------

	$this->no_prefix_convert = 1;

	if ( $shutdown )
	{
		if ( ! $this->obj['use_shutdown'] )
		{
			$this->is_shutdown = 1;
			$return = $this->query( $query );
			$this->no_prefix_convert = 0;
			$this->is_shutdown = 1;
			return $return;
		}
		else
		{
			$this->obj['shutdown_queries'][] = $query;
			$this->no_prefix_convert = 0;
			$this->cur_query = "";
		}
	}
	else
	{
		$return = $this->query( $query );
		$this->no_prefix_convert = 0;
		return $return;
	}
}

 

3. Открыть ips_kernel/class_db_mysqli_client.php и проделать над ним действие, описанное в пункте 2

 

Всё.

 

 

 

 

P.S. Debug-наводка для Sannis: я пробовал отслеживать, какой результат выдает xmlout при включенном FURL в минерве. По прямому запросу index.php?act=xmlout&do=sns-fast-reply-get&f=111&t=111111&sns_last_topic_view=1234567890&auth_key=abcdefghijklmnopqrstuvw происходит внутренний редирект на адрес топика, посты которорого запрашиваются (видимо, через php функцию header). Происходит это во время подключения topics.php в файле sources/lib/sns_ajax_fast_reply.php:

		//-----------------------------------------
	// Load and init topics class
	//-----------------------------------------

	require_once( ROOT_PATH.'sources/action_public/topics.php' );
	$topics			 =  new topics();
	$topics->ipsclass   =& $this->ipsclass;
	$topics->init();
	$topics->topic_set_up();

	//-----------------------------------------
	// Get new posts id's
	//-----------------------------------------

Проверял банально - пошаговым расставлением стоповых exit'ов. Если вставить exit до этого куска кода, подключающего topics.php, скрипт (sns_ajax_fast_reply.php) доходит до него и останавливается. А вот если вставить exit после этого кода, то до него скрипт уже не доходит, что наводит на заключение - редирект происходит где-то в процессе подключения topics.php.

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

в topics.php от миневры есть check_topic();

его смотреть, в нем отключать

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

 

респект за трассировку

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

в topics.php от миневры есть check_topic();

его смотреть, в нем отключать

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

Я думаю, что можно даже в ipsclass прописать отключение FURL минервы для всех запросов к xmlout. Аяксовые урлы всё равно фурлом не преобразовываются (ведь в большинстве случаев они собираются налету на уровне JS), поэтому парсить их FURLом не нужно. Так что в ipsclass можно смело после Setup defaults прописывать полное отключение минервовского фурла для запросов к xmlout:

$this->vars['mseo_enable_furl'] = ($this->input['act'] == 'xmlout') ? 0 : 1;

Это поможет избежать многих возможных проблем с другими модами, использующими ajax. Я бы это даже разработчикам минервы порекомендовал добавить в свой код...

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

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

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

Поставил мод, вроде даже заработало с первого раза, но есть пара раздражающих моментов. Точнее, один глюк и один раздражающий момент :-)

 

Глюк: При добавлении сообщения у кнопок, чьи изображения подгружаются через макросы, парсится ссылка на изображение, и в итоге вместо картинки показывается ALT текст. После перегрузки страницы все нормально становится.

 

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

 

http://www.doman.com/forum/style_images/ip...3C#LANG#%3E.gif

 

В ней просто символы <> заменены на %3С и %3E соответственно. А поскольку у меня почти все кнопки у сообщений через макросы выводятся в зависимости от выбранного языка, выглядит это не очень комильфо.

 

Раздражающий момент: Когда жмешь на кнопку отправить, страничка тут же "прыгает" к блоку с информацией о добавлении сообщения. То есть сам блок оказывается вверху страницы, а потом все возвращается обратно. Нельзя ли куда-нибудь прописать что-то вроде "return false" или типа того, чтобы страница не прыгала?

 

Заранее спасибо за помощью Надеюсь, автор мода еще живой :-)

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

Вообще говоря, <#LANG#> -- нестандартный макрос, видимо придуманный вами? Тогда думаю заботу о его поддержки должны нести вы :D Могу предложить такое решение: в xmplout.php, перед отдачей клиенту ответа, делать с помощью str_replace обратную замену. переменная вроде $html называется, смотрите в последних 10 строчках функции.

 

За скролл отвечают вызовы функции

$('sns-afr-msg').scrollIntoView();

, можете удалить/закомментировать их.

 

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

topic_scroll_to_post(ret_arr['pid']);
или
topic_scroll_to_post(pid);

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

Вообще говоря, <#LANG#> -- нестандартный макрос, видимо придуманный вами? Тогда думаю заботу о его поддержки должны нести вы :D Могу предложить такое решение: в xmplout.php, перед отдачей клиенту ответа, делать с помощью str_replace обратную замену. переменная вроде $html называется, смотрите в последних 10 строчках функции.

Использование параметра <#LANG#> для вывода кнопок в зависимости от выбранного языка - вещь стандартная и используемая на многоязычных форумах. Я это не придумал, а взял, кажется, на Invision Modding. Как иначе менять кнопки, если выбран русский или английский, я не знаю.

 

А вы немогли бы немного поточнее сказать, что надо сделать? Я не очень силен в коде IPB.

Переменная есть у меня такая, функция тоже, а куда и что прописать не знаю. Если по аналогии делать, то строчка такая получится, как я понимаю:

 

$html = str_replace( '%3С', '<', $html );

 

Но куда ее втыкать?

 

За скролл отвечают вызовы функции

$('sns-afr-msg').scrollIntoView();

, можете удалить/закомментировать их.

 

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

topic_scroll_to_post(ret_arr['pid']);
или
topic_scroll_to_post(pid);

Спасибо, попробую обязательно.

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

Использование параметра <#LANG#> для вывода кнопок в зависимости от выбранного языка - вещь стандартная и используемая на многоязычных форумах. Я это не придумал, а взял, кажется, на Invision Modding. Как иначе менять кнопки, если выбран русский или английский, я не знаю.
Зачем же себя и меня обманывать. Invisionmodding.com -- сайт модов, всё что там есть такие же моды как и в этом архиве, а значит не стандартные. Все моды нужно друг с другом согласовывать, если это необходимо, а заранее предусмотреть это не возможно. Скажем мод Minerva SEO вышел после мода быстрого ответа, были глюки, потом было найдено решение.

 

А вы немогли бы немного поточнее сказать, что надо сделать? Я не очень силен в коде IPB.

Переменная есть у меня такая, функция тоже, а куда и что прописать не знаю. Если по аналогии делать, то строчка такая получится, как я понимаю:

$html = str_replace( '%3С', '<', $html );

Но куда ее втыкать?

Согласен, нужно уточнить, я давал совет по первой версии, там всё прозрачнее для начинающих. Для второй версии в файле ./sources/lib/sns_ajax_fast_reply.php найдите:

$html = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir']  , $html );

и добавьте после неё

$html = str_replace( "<#LANG#>", $this->ipsclass->lang_id , $html );

, если я правильно догадываюсь что делает мод с инвозионмоддинга.

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

Зачем же себя и меня обманывать. Invisionmodding.com -- сайт модов, всё что там есть такие же моды как и в этом архиве, а значит не стандартные. Все моды нужно друг с другом согласовывать, если это необходимо, а заранее предусмотреть это не возможно. Скажем мод Minerva SEO вышел после мода быстрого ответа, были глюки, потом было найдено решение.

А это и не мод вовсе. Это была простая инструкция по макросам, как сделать, чтобы менялись кнопки в зависимости от языка. Там вся суть была в прописывании пути к картинке и именовании изображений с кнопками в виде image_<#LANG#>.gif, где <#LANG#> - это идентификатор языка. То есть у меня все кнопки существуют в двух экземплярах: image_en.gif и image_ru.gif, и меняются в зависимости от языка. Это сложно модом назвать :-)

 

Согласен, нужно уточнить, я давал совет по первой версии, там всё прозрачнее для начинающих. Для второй версии в файле ./sources/lib/sns_ajax_fast_reply.php найдите:

$html = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir']  , $html );

и добавьте после неё

$html = str_replace( "<#LANG#>", $this->ipsclass->lang_id , $html );

, если я правильно догадываюсь что делает мод с инвозионмоддинга.

Да, похоже на правду. Попробую на днях - отпишусь. Спасибо за помощь.

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


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

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

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