Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » phpBB 3.0.x » Поддержка phpBB 3.0.x

Проблема с редактированием длинных ссылок

Помощь в установке, настройке и использовании phpBB 3.0.x
Пожалуйста, помните, что существуют: Поиск, Правила форума
Возможно, ответ на Ваш вопрос уже имеется: Документация, Статьи, Накопленный опыт
Полезные материалы по этой теме: Инструкция по установке форума, Конвертеры

Сообщение 27 май 2011, 21:41

Извините, если такой вопрос уже был на форуме. Найти ответа не смогла.

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

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

Где могла собака порыться?
shushara

 

Сообщение 29 май 2011, 15:07

открываем файл includes/functions.php
Ищем функцию get_preg_expression, внутри функции находим
Код: выделить все
                case 'bbcode_htm':
                        return array(
                                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                                '#<!\-\- l \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                                '#<!\-\- .*? \-\->#s',
                                '#<.*?>#s',
                        );
                break;

Изменяем на
Код: выделить все
                case 'bbcode_htm':
                        return array(
                                '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
                                '#<!\-\- l \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
                                '#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" target="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
                                '#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
                                '#<!\-\- .*? \-\->#s',
                                '#<a (?:class="[\w-]+" href=")#s',
                                '#" target="[\w-]+">.*?</a>#s',
                                '#<.*?>#s',
                        );
                break;

Сохраняем файл, наслаждаемся исправленным багом.
Shad0w

 

Сообщение 31 май 2011, 20:06

Спасибо за помощь.

Но это не помогло. Может надо что-то еще сделать?

Пишу новое сообщение в форум, в сообщении длинная ссылка.
Не отправляя сообщения нажимаю "предосмотр", после этого в окне редактирования уже испорченная ссылка.
shushara

 

Сообщение 01 июн 2011, 07:40

кэш чистили?
crash
Поддержка
 
Сообщений: 11345
Зарегистрирован:
27 янв 2009, 03:22
Благодарил (а): 1 раз.
Поблагодарили: 568 раз.

Сообщение 01 июн 2011, 12:49

Да, чистила.

И еще вопрос: в приведенном тексте правки касаются 'bbcode_htm"
Но портится длинная ссылка только в том случае, если она не обрамляется bb-кодами, а вводится вот так как есть http://www.и-так-далее-и-тому-подобное/

Если обрамлять длинную ссылку bb-кодами, то она ведет себя корректно.
shushara

 

Сообщение 02 июн 2011, 02:14

Эээ, вообще-то такого не должно быть, в режиме предпросмотра текст сообщения не поступает парсеру на обработку, ну по крайней мере в моей версии так. Я не знаю, если у вас так происходит, надо смотреть, куда отправляется текст в режиме предпросмотра.
Я дал исправление ссылок уже после того, как сообщение попало в базу - т.е. прошло через внутренний парсер (ББ-коды, ссылки, е-мейлы, фильтрация "вредных" символов и пр.), и если его вызвать повторно на редактирование (модератором, админом или самим пользователем), вот там как раз тоже испорченная ссылка уже выводилась.
Вы кэш форума чистили или браузера?
Shad0w

 

Сообщение 14 июн 2011, 16:04

Shad0w писал(а): Я не знаю, если у вас так происходит, надо смотреть, куда отправляется текст в режиме предпросмотра.

Эта... а где смотреть? :)

Shad0w писал(а):Вы кэш форума чистили или браузера?

Кэш форума.

Пришлось пойти на проставление заплатки, без гарантий :(
Чтобы форум мог работать (а то пользователи сильно ругаются и я их понимаю..), пришлось в коде закомментировать обрезку длинных строк.
В модуле functions_content.php в функции make_clickable_callback строку
Код: выделить все
$short_url = (strlen($url) > 55) ? substr($url, 0, 39) . ' ... ' . substr($url, -10) : $url;

заменила на строку:
Код: выделить все
$short_url = $url;

Потому что в предосмотр приходила уже испорченная вот эта строка.
И все заработало.
Вот только не уверена, что это хороший способ..
shushara

 


Вернуться в Поддержка phpBB 3.0.x

 


  • Похожие темы
    Ответов
    Просмотров
    Последнее сообщение

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
авторов модов
разработчиков скинов
русификаторов
и всех поклонников phpBB3