Вставка url в ответ - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

htmlpurifier

  • 4 Страниц +
  • 1
  • 2
  • 3
  • Последняя »

Вставка url в ответ криво отображается

#1 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 16 Июль 2013 - 23:55

Доброго времени суток!
При вставке ссылки из буфера обмена в форму ответа и последующей отправки ответа ...
В сообщении криво отображаеться ссылка...
Например: иммеем ссылку вида _http://domain.ru/forum/topic/76643-novyi-forum/?p=1601360
А получаем вот такое преобразование
[url=http://domain.ru/forum/topic/]http://domain.ru/forum/topic/[/url]76643-novyi-forum/?p=1601360

http://domain.ru/forum/topic/76643-novyi-forum/?p=1601360

Как починить?
Форум 3.4.5
Спасибо!
0

#2 Пользователь не на сайте   Bot ответил: »

 
 
  • Почетный робот
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
 

Отправлено 16 Июль 2013 - 23:55

Обратите внимание

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


0

#3 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Июль 2013 - 00:06

Вот была похожая тема...но там проблемма в квадратных скобках....
http://community.inv...es-wrong-r38342
0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 721
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 17 Июль 2013 - 00:18

Просмотреть сообщениеasterix_kpi сказал(а):

Как починить?

Написать разработчикам, или же обрамлять ссылку в ббкод url

[url]http://domain.ru/forum/topic/76643-novyi-forum/?p=1601360[/url]

0

#5 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Июль 2013 - 00:28

Просмотреть сообщениеsiv1987 17 Июль 2013 - 00:18 сказал(а):

Написать разработчикам, или же обрамлять ссылку в ббкод url

[url]http://domain.ru/forum/topic/76643-novyi-forum/?p=1601360[/url]


Спасибо!
На старой версии 3.1.4 - при вставке просто ссылки в ответ - движок автоматически обрамлял.... а счаз беда...
0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 721
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 17 Июль 2013 - 00:46

Автоматически никогда ничего не обрамлялось. Просто парсеры стали разными. А виноват во всем все тот же HTMLPurifier
0

#7 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 721
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 17 Июль 2013 - 02:35

Открыть /ips_kernel/htmlpurifier/HTMLPurifier/Injector/Linkify.php

Найти регулярку:
#(.*?)(\()?((?:http|ftp|https):\/\/[\p{L}\-_]+(?:\.[\p{L}\-_]+)?(?:[\p{L}\-\.,\(\)@?^=%&:\/~\+\#]*[\p{L}\-\@?^=%&\/~\+\#]))(.*?)$#ims

Заменить на:
#(.*?)(\()?((?:http|ftp|https):\/\/[\p{L}\d\-_]+(?:\.[\p{L}\d\-_]+)?(?:[\p{L}\d\-\.,\(\)@?^=%&:\/~\+\#]*[\p{L}\d\-\@?^=%&\/~\+\#]))(.*?)$#ims


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

#8 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 721
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 17 Июль 2013 - 14:46

По хорошему весь их этот код

        $uni = (IPS_DOC_CHAR_SET=="UTF-8") ? "u" : "";
        preg_match_all( "#(.*?)(\()?((?:http|ftp|https):\/\/[\p{L}\-_]+(?:\.[\p{L}\-_]+)?(?:[\p{L}\-\.,\(\)@?^=%&:\/~\+\#]*[\p{L}\-\@?^=%&\/~\+\#]))(.*?)$#ims" . $uni, $token->data, $matches );
        //print_r($matches);exit;

        //$token = array();

        // $i = index
        // $c = count
        // $l = is link
        /*for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
            if (!$l) {
                if ($bits[$i] === '') continue;
                $token[] = new HTMLPurifier_Token_Text($bits[$i]);
            } else {
                $token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i]));
                $token[] = new HTMLPurifier_Token_Text($bits[$i]);
                $token[] = new HTMLPurifier_Token_End('a');
            }
        }*/

        if( is_array($matches) AND count($matches) )
        {	
			$token = array();//by denchu 06062013
            foreach( $matches[0] as $k => $match )
            {
                if( !$matches[3][$k] )
                {
                    $token[]   = new HTMLPurifier_Token_Text($token->data);
                }
                else
                {
                    if( $matches[1][$k] )
                    {
                        $token[] = new HTMLPurifier_Token_Text($matches[1][$k]);
                    }

                    if( $matches[2][$k] )
                    {
                        $token[] = new HTMLPurifier_Token_Text($matches[2][$k]);
                    }

                    if( !$matches[2][$k] AND $matches[4][$k] == ')' )
                    {
                        $matches[3][$k] .= ')';
                        unset($matches[4][$k]);
                    }

                    $token[] = new HTMLPurifier_Token_Start('a', array('href' => $matches[3][$k]));
                    $token[] = new HTMLPurifier_Token_Text($matches[3][$k]);
                    $token[] = new HTMLPurifier_Token_End('a');

                    if( $matches[4][$k] )
                    {
                        $token[] = new HTMLPurifier_Token_Text($matches[4][$k]);
                    }
                }
            }
        }


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

        $uni = (IPS_DOC_CHAR_SET=="UTF-8") ? "u" : "";
        $bits = preg_split('#((?:http|ftp|https)://[\p{L}\d\-_]+(?:\.[\p{L}\d\-_]+)?(?:[\p{L}\d\-\.,\(\)@?^=%&amp;:\/~\+\#]*[\p{L}\d\-\@?^=%&amp;\/~\+\#]))#i'.$uni, $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);

        $token = array();

        // $i = index
        // $c = count
        // $l = is link
        for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
            if (!$l) {
                if ($bits[$i] === '') continue;
                $token[] = new HTMLPurifier_Token_Text($bits[$i]);
            } else {
                $token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i]));
                $token[] = new HTMLPurifier_Token_Text($bits[$i]);
                $token[] = new HTMLPurifier_Token_End('a');
            }
        }

1

#9 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Июль 2013 - 15:41

Спасибо огромное!!!
Помогло.....
0

#10 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Июль 2013 - 16:45

Просмотреть сообщениеsiv1987 17 Июль 2013 - 14:46 сказал(а):

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

Кто имеется в виду под их и что такое оригинальный (чей?). Ничего непонятно.
0

#11 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 721
  • Регистрация: 20-Март 09
  • Репутация: 2 269
  • IPB version:3.1.x
 

Отправлено 17 Июль 2013 - 16:59

Оригинальный - имеется ввиду оригинальный код из функции HTMLPurifier_Injector_Linkify::handleText() в библиотеки htmlpurifier (сторонняя библиотека которая прикручена к IPB и модифицирована IPS), тот маленький кусочек закаментированого кода. Ладно регулярное выражение то понятно, но зачем заменили preg_split на preg_match_all с которого довольно трудно получить результат соответствующей старой логике - не понятно.
0

#12 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Июль 2013 - 17:05

Ничего не менял в Linkify.php или где-то еще в лицензионной версии 3.4.5.

Ссылка топик стартера нормально парсится:

-IMG-

Посмотрю, что у меня в Linkify.php сейчас..
0

#13 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Июль 2013 - 17:08

У меня стоит строка:

#(.*?)(\()?((?:http|ftp|https):\/\/[\w\-_]+(?:\.[\w\-_]+)?(?:[\w\-\.,\(\)@?^=%&amp;:/~\+\#]*[\w\-\@?^=%&amp;/~\+\#]))(.*?)$#ims"


У топик стартера локализация от IBR или что-то еще не то?
0

#14 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 17 Июль 2013 - 19:15

Просмотреть сообщениеZero108 17 Июль 2013 - 17:08 сказал(а):

У меня стоит строка:

#(.*?)(\()?((?:http|ftp|https):\/\/[\w\-_]+(?:\.[\w\-_]+)?(?:[\w\-\.,\(\)@?^=%&amp;:/~\+\#]*[\w\-\@?^=%&amp;/~\+\#]))(.*?)$#ims"


У топик стартера локализация от IBR или что-то еще не то?


Залил оригинальный...и все заработало... Еще раз Всем спасибо!!!
Особенно siv1987

З.Ы.Версия лицензия 3.4.5 + локализация IBR поверх...
0

#15 Пользователь не на сайте   Zero108 ответил: »

 
 
  • Advanced
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 562
  • Регистрация: 25-Июль 09
  • Репутация: 92
  • IPB version:4.1.x
 

Отправлено 17 Июль 2013 - 19:57

Просмотреть сообщениеasterix_kpi 17 Июль 2013 - 19:15 сказал(а):

Залил оригинальный...и все заработало... Еще раз Всем спасибо!!!
Особенно siv1987

З.Ы.Версия лицензия 3.4.5 + локализация IBR поверх...


А почему не пишите гневные письма на форуме техподдержки IBR?!

И второй вопрос: чем прекрасна локализация, а не просто перевод, которых масса бесплатных и платных? Хотя бы вот на вашем примере?
0

Сообщить об этой теме:


  • 4 Страниц +
  • 1
  • 2
  • 3
  • Последняя »


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна