.silent Опубликовано 31 Января 2006 Жалоба Поделиться Опубликовано 31 Января 2006 Все, наверное, знают что такое автоматическая склейка постов.Это когда я написал пост, и где-нить через полминуты добавил еще один пост. Как результат - один склеенный пост (если, конечно, никто не написал следом за моим первым постом).Одна фигня - иногда хочется видеть что пост состоит из двух, тобишь чтобы была пометка, что к посту потом приписал человек. И так, мое решение для форумов IPB 2.1.x, кому интересно, конечно.Выглядит оно так:http://pixmixer.com/uploads/images/20060131/full_size/46929_Untitled-2.jpg cache/lang_cache/*/lang_post.php (для всех языков сделать надо бы) 1ый вариант:ищем: $lang = array (, добавляем ниже 'added_later' => "Добавлено позже", 2ой вариант (если строка из первого не находится):ищем: <?, добавляем ниже $lang['added_later'] = "Добавлено позже"; sources/classes/post/class_post_reply.php ищем: $new_post = $last_post['post'].'<br /><br />'.$this->post['post'];, заменяем на: $new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br />'.$this->post['post']; ищем: $this->ipsclass->DB->do_update( 'posts', array( 'post' => $new_post, 'post_date' => time() ), 'pid='.$last_post['pid'] );, и, чтобы дата оригинального поста не менялась, заменяем на: $this->ipsclass->DB->do_update( 'posts', array( 'post' => $new_post), 'pid='.$last_post['pid'] ); ну вот, в общем-то и всё. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
VADOS [Dj] Опубликовано 31 Января 2006 Жалоба Поделиться Опубликовано 31 Января 2006 Респект огромный!!!Всё пашет замечательно! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 31 Января 2006 Автор Жалоба Поделиться Опубликовано 31 Января 2006 да, вот написал я штуку сюда, а протестировать на редактирование не догадался =)<hr /> не парсится обратно.по сему предлагаю избавиться от горизонтальной черты.ушел редактировать первый пост =) кто успел сделать всё до даты этого поста, тому надо сделать:sources/classes/post/class_post_reply.phpискать: $new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br /><hr />'.$this->post['post']; и заменить на $new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br />'.$this->post['post']; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
makarek Опубликовано 13 Февраля 2006 Жалоба Поделиться Опубликовано 13 Февраля 2006 А для 1.3.1 это подойдет? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
.silent Опубликовано 13 Февраля 2006 Автор Жалоба Поделиться Опубликовано 13 Февраля 2006 makarek, нет, не пойдет. для нее вроде есть отдельный мод, насколько я помню Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
makarek Опубликовано 13 Февраля 2006 Жалоба Поделиться Опубликовано 13 Февраля 2006 Спасибо.По слову "склейка" нашел кучу тем Поиск рулит, ушел читать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Инвизионист Опубликовано 20 Февраля 2006 Жалоба Поделиться Опубликовано 20 Февраля 2006 Респект .silent давно искал нечто подобное спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 8 Июня 2006 Жалоба Поделиться Опубликовано 8 Июня 2006 можно ли как-нибудь редактировать цвет и размер этой фразы, причём при редактировании сообщения она бы оставалась неизменной? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
punkz Опубликовано 8 Июня 2006 Жалоба Поделиться Опубликовано 8 Июня 2006 а можно сделать чтоб потом писалось добавлено через х минут или часов или дней....? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
OverHerz Опубликовано 10 Июня 2006 Жалоба Поделиться Опубликовано 10 Июня 2006 все хорошо, но время берется то, которое установлено по умолчанию, лучше было бы брать время, установленное в профиле Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
OverHerz Опубликовано 18 Сентября 2006 Жалоба Поделиться Опубликовано 18 Сентября 2006 да и теги не парсятся потом после правки... может кто что придумал? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 30 Ноября 2006 Жалоба Поделиться Опубликовано 30 Ноября 2006 Если вам надо то выложу функцию для определения разницы во времени т.е.с колько прошло и в итоге получаем на выходе разницу которая выглядит так "Добавлено через 7 часов 51 минут 10 секунд (тут время поста)"Отображение времени склейки Вот моя функция для этого: //calculate timestamp diff function dateDiffEx($row) { $s = $row["nu"] - $row["lastpost"]; $m = intval($s/60); $s = $s % 60; $h = intval($m/60); $m = $m % 60; $d = intval($h/24); $h = $h % 24; $diff = ""; if ( !$d == "0" ) { $diff = $diff . "$d дней "; } if ( !$h == "0" ) { if (strlen($h)==1) $diff = $diff . "$h часа "; else $diff = $diff . "$h часов "; } if ( !$m == "0" ) { if (($m=="2") or ($m=="3") or ($m=="4")) { $diff = $diff . "$m минуты "; } else { if ($m=="1") $diff = $diff . "$m минуту "; else $diff = $diff . "$m минут "; } } if ( !$s == "0" ) { if (($s=="2") or ($s=="3") or ($s=="4")) { $diff = $diff . "$s секунды "; } else { if ($s=="1") $diff = $diff . "$s секунду "; else $diff = $diff . "$s секунд "; } } if ( $diff == "" ) { $diff = "-"; } trim ($diff); return $diff; } Использовать так:// calculate timestap diff $dta["lastpost"]=$this->topic['last_post']; $dta['nu']=time(); $dif1 = trim($this->dateDiffEx($dta)); Ну втыкаем ее Было в коде .silent так$new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br />'.$this->post['post']; дописываем вывод timestap diffв результате это$new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' '.$dif1.' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br />'.$this->post['post'];то что вставить надо зеленым цветом выделено Функция пашет давно и исправно, может чудок окончания подрихтовать только надо Удачи! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 1 Декабря 2006 Жалоба Поделиться Опубликовано 1 Декабря 2006 Я еще приделывал проверку на отправку дубликата сообщения, но это вообще легко Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 2 Декабря 2006 Жалоба Поделиться Опубликовано 2 Декабря 2006 предвижу ошибку в этом. как вы это сделалали? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 2 Декабря 2006 Жалоба Поделиться Опубликовано 2 Декабря 2006 SongВот так (пашет только если не было уже склеек к своему же посту) код из 2.0.х: $str1 = $last_post['post']; $str2 = $this->post['post']; $flood_str_cmp = str_replace ($str1,"",$str2); if (strlen($flood_str_cmp)==0) { $this->$flood_post = 1; $std->Error( array( 'LEVEL' => 1, 'MSG' => 'dont_flood_equal_msg', 'EXTRA' => '') ); } else $DB->do_update( 'posts', array( 'post' => $new_post, 'post_date' => time() ), 'pid='.$last_post['pid'] ); Ну и в ерор_ланг пихаем месагу о том что это дубль в dont_flood_equal_msg Блин писал этот код давно сейчас не догоняю почему это гад вообще срабатывает Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 2 Декабря 2006 Жалоба Поделиться Опубликовано 2 Декабря 2006 Ну как и я говорил, ошибка у тебя алгоритмическая.Вот смотри: Первый пост: "тест"Второй пост: "тест1"Получилось (например): "тест Добавлено тест1" Теперь ты опять пишешь "тест1" и ожидаешь, что оно у тебя атлупится по сравнению двух постов. Такого не будет т.к."тест Добавлено тест1" != "тест1" Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 2 Декабря 2006 Жалоба Поделиться Опубликовано 2 Декабря 2006 Я же написал работает если не было до этого склейки. Ты у себя это делал? Если да, то как разрулил вместе со склейкой? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 2 Декабря 2006 Жалоба Поделиться Опубликовано 2 Декабря 2006 Ты у себя это делал?да, я ж не зря внимание акцентировал.Ты у себя это делал?регулярным выражением вырезаю только последний ответ после "Добавлено" и сравниваю уже его. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
demvrem Опубликовано 10 Января 2007 Жалоба Поделиться Опубликовано 10 Января 2007 Попробовал на 2.2.1.Не работает. Кто знает? Может ещё чего-нибудь добавить? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
demvrem Опубликовано 11 Января 2007 Жалоба Поделиться Опубликовано 11 Января 2007 Всё разобрался, извините за беспокойство Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
TOIIOP Опубликовано 13 Марта 2007 Жалоба Поделиться Опубликовано 13 Марта 2007 Странно он как-то работает... склейка сообщений происходит всегда или то. что задано в админке?Допустим если человек написал сообщение вчера.. и сегодня опять пишет в эту тему... то сообщения не склеиваются... Т.е. вот эта функция в админке влияет?Обьединять сообщенияУкажите время в течении которого будут обьединены сообщения участника отправленные один после другого. 0 - отмена возможности. И можно как-нить объеденить этот мод и ЭТОТ? А то приходится выбирать что-то одно ((( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GoldSnake Опубликовано 18 Марта 2007 Жалоба Поделиться Опубликовано 18 Марта 2007 Все, наверное, знают что такое автоматическая склейка постов.Это когда я написал пост, и где-нить через полминуты добавил еще один пост. Как результат - один склеенный пост (если, конечно, никто не написал следом за моим первым постом).Одна фигня - иногда хочется видеть что пост состоит из двух, тобишь чтобы была пометка, что к посту потом приписал человек. И так, мое решение для форумов IPB 2.1.x, кому интересно, конечно.Выглядит оно так:http://pixmixer.com/uploads/images/20060131/full_size/46929_Untitled-2.jpg cache/lang_cache/*/lang_post.php (для всех языков сделать надо бы) 1ый вариант:ищем: $lang = array (, добавляем ниже 'added_later' => "Добавлено позже", 2ой вариант (если строка из первого не находится):ищем: <?, добавляем ниже $lang['added_later'] = "Добавлено позже"; sources/classes/post/class_post_reply.php ищем: $new_post = $last_post['post'].'<br /><br />'.$this->post['post'];, заменяем на: $new_post = $last_post['post'].'<br /><br /><b>'.$this->ipsclass->lang['added_later'].' ('.$this->ipsclass->get_date( time(), 'SHORT', 1 ).'):</b><br />'.$this->post['post']; ищем: $this->ipsclass->DB->do_update( 'posts', array( 'post' => $new_post, 'post_date' => time() ), 'pid='.$last_post['pid'] );, и, чтобы дата оригинального поста не менялась, заменяем на: $this->ipsclass->DB->do_update( 'posts', array( 'post' => $new_post), 'pid='.$last_post['pid'] ); ну вот, в общем-то и всё.пробывал на 2.2.2 - не пашет Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
TIER_FOREVER Опубликовано 2 Апреля 2007 Жалоба Поделиться Опубликовано 2 Апреля 2007 А можно про функцию поподробнее? Куда её вставлять-то? И еще вопрос: как сделать так, чтобы добавленное сообщение распознавалось форумом как новое? То бишь, чтобы в списке новых сообщений выводилось? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
TOIIOP Опубликовано 3 Апреля 2007 Жалоба Поделиться Опубликовано 3 Апреля 2007 А можно про функцию поподробнее? Куда её вставлять-то? И еще вопрос: как сделать так, чтобы добавленное сообщение распознавалось форумом как новое? То бишь, чтобы в списке новых сообщений выводилось?оно так и работает... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
TIER_FOREVER Опубликовано 3 Апреля 2007 Жалоба Поделиться Опубликовано 3 Апреля 2007 А можно про функцию поподробнее? Куда её вставлять-то? И еще вопрос: как сделать так, чтобы добавленное сообщение распознавалось форумом как новое? То бишь, чтобы в списке новых сообщений выводилось?оно так и работает... Эм. У меня нет... Я ставил версию мода из первого поста, то бишь из файлового архива. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.