Skip to content

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

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

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

версия 3.4.5

Featured Replies

\admin\sources\base\core.php

 

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

 

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

  • Author

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

Проверил на 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 мне для этого достаточно было правки реплейсов.

  • Author

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

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.