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

[2.3.x]Черновики сообщений, автосохранение


WildRAID

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

index.php?app=downloads&module=display&section=screenshot&id=141

Название: Черновики сообщений, автосохранение

Добавил: WildRAID

Добавлен: 30 Сен 2008

Обновлен: 26 Май 2009

Категория: IP.Board 2.3.x

 

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

 

Модификация избавляет от необходимости набирать большие посты в отдельном текстовом редакторе, а также убережёт от неожиданных зависанийзакрытий браузера.

 

Для каждой темы может быть сохранён отдельный черновик. Также предусмотрен один черновик на создание новой темы.

 

Нажмите здесь, чтобы скачать файл

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

Информация к размышлению.

 

После установки модификации пользователи смогут у себя в профиле включать, либо выключать автосохранение создаваемых сообщений. Если выбран вариант "по умолчанию", будет использоваться значение соответсвующей настройки в админке.

 

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

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

Если есть желание этим заниматься, может взял бы мой код за основу, там больше интеграции написано на данный момент. Скинуть?
Ссылка на комментарий
Поделиться на других сайтах

видать для 2.3.5 он не подходит

после установки

вот например че пишет при изменении настроек в личных данных

sql_error_log_10_01_08.cgi

 Страница: /index.php?auth_key=d57413d6b3ccb198e8447513d42bd7b9
Запрос: UPDATE ibf_members SET time_offset=5,view_avs=1,mood_on=0,view_sigs=1,view_img=1,view_pop=1,dst_in_use=
0,members_auto_dst=0,members_disable_pm=0,members_editor_choice='std',view_prefs='-1&-1',pr_mode=1,rep_notify=0 WHERE id=27660

такая же беда с потерянными колонками в БД появляется после внесения изменений в class_session.php

вообще вылазит ошибка базы данных

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

видать для 2.3.5 он не подходит

после установки

вот например че пишет при изменении настроек в личных данных

sql_error_log_10_01_08.cgi

 Страница: /index.php?auth_key=d57413d6b3ccb198e8447513d42bd7b9
Запрос: UPDATE ibf_members SET time_offset=5,view_avs=1,mood_on=0,view_sigs=1,view_img=1,view_pop=1,dst_in_use=
0,members_auto_dst=0,members_disable_pm=0,members_editor_choice='std',view_prefs='-1&-1',pr_mode=1,rep_notify=0 WHERE id=27660

такая же беда с потерянными колонками в БД появляется после внесения изменений в class_session.php

вообще вылазит ошибка базы данных

По идее нужно добавить ещё одно поле в xxx_members c названием pr_mode.

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

Точно.

 

Выполняем запрос:

ALTER TABLE ibf_members ADD `pr_mode` tinyint(1) NOT NULL default '0'

 

Архив обновил.

 

На остальное чуть позже отвечу.

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

Если есть желание этим заниматься, может взял бы мой код за основу, там больше интеграции написано на данный момент. Скинуть?

 

На самом деле, ситуация следующая.

 

Та модификация, которая сейчас в архиве - самый простой вариант "Черновика". Инструкцию дольше писал, чем сам код. Но испытания в условиях пары живых форумов показали, что и этим-то мало кто пользуется (в основном, радуются автосейву). На мой взгляд, дополнительные навороты в рамках публичной модификации лишены смысла. Потому вряд ли буду дорабатывать.

 

С другой стороны, чужой код всегда интересно посмотреть. :D

 

C 2.3 совместимо?

 

Только с 2.3 и совместимо. На остальном не проверялось.

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

На самом деле, ситуация следующая.

 

Та модификация, которая сейчас в архиве - самый простой вариант "Черновика". Инструкцию дольше писал, чем сам код. Но испытания в условиях пары живых форумов показали, что и этим-то мало кто пользуется (в основном, радуются автосейву). На мой взгляд, дополнительные навороты в рамках публичной модификации лишены смысла. Потому вряд ли буду дорабатывать.

 

С другой стороны, чужой код всегда интересно посмотреть. :D

А мне не жалко ;) Автосейв правда можно было не писать, а немного пройтись пилочкой по моду для 2.0. А то, что я писал, предполагалось именно для черновиков, так что цели другие. Как будут ещё пожелания, думаю закончу версию.

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

Ну, я могу точно сказать, что автосохранения я ждала с нетерпением именно для себя, потому что один шустрый ребенок любит нажимать кнопки ;) особенно Павер. А вот, что точно могу сказать, так это то, что у меня на форуме черновиками будут однозначно пользоваться так как форум у нас игровой, а средняя возрастная категория (как ни странно) - это студенты и старше, поэтому ходы в большинстве случаев пишутся в промежутках между работой или на парах и сохранение в черновиках очень актуально :) Так, что если будут реализованы идеи Sannis в купе с тем, что сейас есть в виде готового модуля - это было бы прекрасно. :D

 

В полноценном - работает.

В быстром ответе не работает (ни автосохранение, ни после нажатия Запомнить).

Однако, после перехода (после нажатия Запомнить) в полноценный ответ -> текст там есть запомненнный этот.

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

Архив обновлён.

 

Кто уже поставил, выполнить следующее:

 

В /sources/action_public/topics.php

 

Найти:

 

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

 

Заменить на:

 

			   #WR -> rough post
		   $post_rough = $this->ipsclass->DB->simple_exec_query(array(	 'select' => 'pr_post',
																					  'from'   => 'posts_rough',
																					  'where'  => "pr_mid='{$this->ipsclass->member['id']}' AND pr_tid='{$this->topic['tid']}'",
																			)		  );


		   $post_rough = isset($post_rough['pr_post']) ? $this->ipsclass->my_br2nl($post_rough['pr_post']) : '';

		   $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, $post_rough), $this->output );

 

В шаблоне skin_topic -> quick_reply_box_open

 

Редактировать входящие переменные -> добавить в конце:

 

,$post=""

 

Найти:

 

</textarea>

 

Добавить ПЕРЕД:

 

{$post}

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

А можно сделать так, чтобы после отпоста черновик для данной темы очищался? А то сообщение запостилось и осталось в форме ответа.

И еще такой баг. Если нажать в быстром ответе "Расширенная форма", то в полноценном ответе появляются две копии одного текста.

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

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

 

Должен. Возможно, в class_post_reply одно действие пропущено..

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

А, да.. вспомнила

 

У меня не нашлось вот этого

 

Найти:

$this->topic_tracker( $this->topic['tid'], $this->post['post'], $poster_name, time() - $this->ipsclass->vars['session_expiration'] );

Добавить ПОСЛЕ:

	#WR -> remove post rough if needed
	$this->ipsclass->DB->do_delete('posts_rough', "pr_mid='{$this->ipsclass->member['id']}' AND pr_tid='{$this->topic['tid']}'");

Зато было вот это

		$this->topic_tracker( $this->topic['tid'], $this->post['post'], $poster_name, $this->last_post );

 

Я после него добавила... Но видимо, не туда в итоге? :D

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

Видимо.)

 

На самом деле, можно добавлять в любое место в функцию save_post, после проверок, но перед редиректами (boink_it).

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

Ну, собсно так и сделано

 

Вот перед этим стоит

 

//-----------------------------------------
// Redirect them back to the topic
//-----------------------------------------

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

class_post_reply.php?

 

А что, если перед

 

$this->ipsclass->DB->do_delete('posts_rough', "pr_mid='{$this->ipsclass->member['id']}' AND pr_tid='{$this->topic['tid']}'");

 

добавить

 

die('мурк!');

 

И посмотреть, будет ли муркать..

 

Если подумать, там нечему ломаться. Нету даже функции-обёртки. Тупо DELETE FROM из базы.

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

чёто данный мод грузанул наш сервак мама не горюй. тупо стал слать запросы к базе.

пришлось по умолчанию вырубить возможность и поставить огромные числа в автосохранении.

 

хотя только что выяснилось, что возможно досили.хм.

а мод уже удалил.жалко.

эх

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

Вот такой глюк ;) Все шаблоны и коды проверил, все ок..в чем причина?Ввожу в быструю 4545454 форму что надо запомнить, запоминает, а выводит выше :D

 

post-77025-1224500958_thumb.jpg

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

В шаблоне quick_reply_box_open не в то место вставили переменную {$post}.

 

Должно получаться примерно так:

 

<textarea бла-бла-бла>{$post}</textarea>

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

В шаблоне quick_reply_box_open не в то место вставили переменную {$post}.

 

Должно получаться примерно так:

 

<textarea бла-бла-бла>{$post}</textarea>

 

<div style='padding-bottom:8px'>
		<textarea style='margin:0px;padding:4px;width:98%' tabindex="1" name='Post' id='fast-reply_textarea' class='rte-iframe' cols='80' rows='15'>{$post}</textarea>

:D Вот так у меня

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

чёто данный мод грузанул наш сервак мама не горюй. тупо стал слать запросы к базе.

пришлось по умолчанию вырубить возможность и поставить огромные числа в автосохранении.

 

хотя только что выяснилось, что возможно досили.хм.

а мод уже удалил.жалко.

эх

 

Ну, так само собой, автосохранение производит обращение к серверу. Если открыто, к примеру 5 тем, то это 5 обращений в установленный интервал. если у вас хотя бы 20 пользователей сидят в одно и то же время и каждый открыто держит по пять тем, то это уже 100 обращений в заданный период.

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

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

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

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