Перейти к содержимому
Русский язык для Invision Community 5

Протокол ссылки

Как добавить еще один протокол ссылки?например file://

По дефолту ipb просто заменяет его на null

версия 3.4.5

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

\admin\sources\base\core.php

 

^(http|https|news|ftp)://

 

^(http|https|news|ftp|file)://

  • Автор

К сожелению не помогло(

Проверил на 3.4.2 - работает.

Правда, браузер все равно не открывает эти адреса из гиперссылки..

Это смотря какой браузер и как настроен. Опера или ФФ некоторые нестандартные протоколы открывают из коробки, "magnet://", например. И откроют (сохранят) вообще что угодно, если сопоставить протоколу или mime-типу приложение (действие) соответствующее. Парсинг ed2k:// я таким образом делал.

 

Gokus:

В файле \admin\sources\base\core.php в двух местах такие регулярки. И при вставке такой ссылки нужно выбирать протокол "other" в редакторе. Чтобы они автоматически парсились нужно реплейсы ещё в паре файлов поправить.

\admin\sources\classes\bbcode\core.php и \admin\sources\classes\bbcode\custom\defaults.php в 3.2.х-3.3.х, если правильно помню. В новых версиях еще возможно \admin\sources\classes\text\parser.php и \admin\sources\classes\text\parser\bbcode.php, не проверял.

В файле \admin\sources\base\core.php в двух местах такие регулярки.

На самом деле там куда сложнее. Все тянется с classPost.php (formatPost) к composite.php (process), далее к \ips_kernel\HTMLPurifier\HTMLPurifier.php (purify) и доходит до http://htmlpurifier.org/live/configdoc/plain.html#URI.AllowedSchemes

 

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

 

1. Открыть \admin\sources\classes\editor\composite.php

 

Найти

		$config->set( 'CSS.Trusted'       , false );

Ниже добавить

		$config->set( 'URI.AllowedSchemes', array_merge( $config->def->defaults['URI.AllowedSchemes'], array( 'file' => true ) ) );

2. В методе _denyLinkify этого же файла найти и заменить http| на http|file| (встречается 2 раза)

3. Сделать правку в core.php

 

И то, это только для поддержке в ббкоде. Без ббкода ссылка просто будет удалятся. Кому нужно, может копать дальше - истина где-то рядом в composite.php :)

В новых версиях, видимо сложнее, безопасность их шибко озаботила... На 3.2.3 мне для этого достаточно было правки реплейсов.

  • Автор

Всем спасибо за ответы,буду пробывать)

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.