Когда использем тег «вставить ссылку», то в итоге всегда идёт подстановка «http://»
Нужно убрать это, т.к. например вставляя dc++ ссылку (magnet) получается не совсем то что нужно.
В файле /actions/ActionTopic/add.tpl нашёл вот что:
/classes/lib/external/Jevix/jevix.class.php 784-785
по-умолчанию, там:
// HTTP в начале если нет
if(!preg_match('/^http:\/\//ui', $value) && !preg_match('/^\//ui', $value))
$value = 'http://'.$value;
поидее, если убрать замену по регулярному выражению, то http не будет добавлять. но это потенциальная бага безопасности, а значит надо расширить данный регэксп до более сложного
нужно добавить в редактор кнопку — вставить магнет ссылку, потом сделать её обработку в модуле Text, а в настройках типографа(там же в модуле Text) разрешить, например, тег <magnet src="blabla">
public function MagnetParser($sText) {
$sText = preg_replace('/<magnet>magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)<\/magnet>/Ui', '<a href="magnet:?xt=urn:tree:tiger:$1&xl=$2&dn=$3">$3</a> ($2 байт)', $sText);
return $sText;
}
В итоге получаем: «turgor2.iso (4237590528 байт)».
Магнет-ссылка, которая берет название файла из строки ссылки и после ссылки в скобках добавляет размер файла в байтах, который так-же парсится с самой ссылки. Но хотелось бы довести до ума, добавив перевод имени файла в utf8 для кирилических файлов и перевод размера файла хотя-бы в мегабайты.
Кто сможет довести до ума?
Было бы все так просто, я бы и не спрашивал :).
Оно ругается на любой параметр с "$" включенный в середине текста:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /usr/local/www/krasboard/www/classes/modules/sys_text/Text.class.php on line 141
В данном случае это строка с "($2*1024)".
А в конце «utf8_encode($sText);» переводит весь пост в утф, и все русские буквы превращаются в каракули. А надо, опять же, только блок "$3" с названием файла.
К примеру:
magnet:?xt=urn:tree:tiger:fwpsaf6ksqk6zxny46r74yjngnubhantctc3xay&xl=2340915200&dn=(%d0%9f%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0)(2008+bdrip+%d0%b4%d1%83%d0%b1%d0%bb%d1%8f%d0%b6).avi
С одной стороны лучше. С другой, он теперь парсит только магнеты, а остальное вообще не попадает в пост :).
Попробуй:
<b>Простая ссылка:</b>
<a href="http://www.ru">www.ru</a>.
<b>Магнет-ссылка:</b>
<magnet>magnet:?xt=urn:tree:tiger:uwb2eheowilvlnsw2j63sdk5mko4cjwwh6atboy&xl=4237590528&dn=turgor2.iso</magnet>
<b>Магнет-ссылка с кирилицей:</b>
<magnet>magnet:?xt=urn:tree:tiger:47UOM2LHA5V3T7KIKI53ZCEJUIC5ILFIFRF4CXI&xl=1920329728&dn=%D0%9D%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE%D0%B4%D0%BD%D0%B8%D0%B9+%D0%B1%D0%B5%D0%BD%D0%B5%D1%84%D0%B8%D1%81+%D0%9C%D0%B0%D0%BA%D1%81%D0%B8%D0%BC%D0%B0+%D0%93%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0.2008.XVID.SatRip_by_Senator.avi</magnet>
Выдаст только 1 магнет.
Ну и касательно перевода в килобайты, наверное стоит делить а не умнажать.
А про utf8 я оговорился. Надо не конвертировать а преобразовать символы в буквы с кодировкой utf8.
Магнет ссылка вставляется, но после сохранения топика выдает белый лист с текстом, при этом сам топик сохраняется:
Warning: Cannot modify header information — headers already sent by (output started at C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\engine\lib\external\Jevix\jevix.class.php:1) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\engine\include\function.php on line 224
Warning: Cannot modify header information — headers already sent by (output started at C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\engine\lib\external\Jevix\jevix.class.php:1) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\engine\include\function.php on line 225
Вот какой код у меня в: engine\lib\external\Jevix\jevix.class.php
case '#link':
// Ява-скрипт в ссылке
if(preg_match('/javascript:/ui', $value)) {
$this->eror('Попытка вставить JavaScript в URI');
continue(2);
}
// Первый символ должен быть a-z0-9 или #!
if(!preg_match('/^[a-z0-9\/\#]/ui', $value)) {
$this->eror('URI: Первый символ адреса должен быть буквой или цифрой');
continue(2);
}
// HTTP в начале если нет
if (!preg_match('/magnet:\?xt=urn:tree:tiger:/Ui', $value))
{
if(!preg_match('/^(http|https|ftp):\/\//ui', $value) && !preg_match('/^(\/|\#)/ui', $value) && !preg_match('/^(mailto):/ui', $value) ) $value = 'http://'.$value;
}
break;
версия LiveStreet 0.5.1 — 30.09.2011
может я куда-то не туда вставил код или в этой версии еще где-то надо что-то исправить?
33 комментария
/classes/lib/external/Jevix/jevix.class.php 784-785
по-умолчанию, там:
// HTTP в начале если нет
if(!preg_match('/^http:\/\//ui', $value) && !preg_match('/^\//ui', $value))
$value = 'http://'.$value;
поидее, если убрать замену по регулярному выражению, то http не будет добавлять. но это потенциальная бага безопасности, а значит надо расширить данный регэксп до более сложного
А так же
// HTTP в начале если нет
if(!preg_match('/^http:\/\//ui', $value) && !preg_match('/^\//ui', $value)) $value = 'http://'.$value;
break;
нужно добавить в редактор кнопку — вставить магнет ссылку, потом сделать её обработку в модуле Text, а в настройках типографа(там же в модуле Text) разрешить, например, тег <magnet src="blabla">
по аналогии в тегом
<video>
В итоге получаем: «turgor2.iso (4237590528 байт)».
Магнет-ссылка, которая берет название файла из строки ссылки и после ссылки в скобках добавляет размер файла в байтах, который так-же парсится с самой ссылки. Но хотелось бы довести до ума, добавив перевод имени файла в utf8 для кирилических файлов и перевод размера файла хотя-бы в мегабайты.
Кто сможет довести до ума?
Не уверен по поводу ($2*1024)
Оно ругается на любой параметр с "$" включенный в середине текста:
В данном случае это строка с "($2*1024)".
А в конце «utf8_encode($sText);» переводит весь пост в утф, и все русские буквы превращаются в каракули. А надо, опять же, только блок "$3" с названием файла.
magnet:?xt=urn:tree:tiger:fwpsaf6ksqk6zxny46r74yjngnubhantctc3xay&xl=2340915200&dn=(%d0%9f%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0)(2008+bdrip+%d0%b4%d1%83%d0%b1%d0%bb%d1%8f%d0%b6).avi
Попробуй:
Выдаст только 1 магнет.
Ну и касательно перевода в килобайты, наверное стоит делить а не умнажать.
А про utf8 я оговорился. Надо не конвертировать а преобразовать символы в буквы с кодировкой utf8.
Теперь бы разобраться, почему он стал «поедать» части поста от этого парсера.
А по поводу деления на 1024 — да, верно, пробуксовал.
Будем ждать свежий подход от других добрых людей.
И подставил
Теперь с размером файлов проблем нет.
Тем самым мы указали переменной, в которой хранится весь текст поста, значение одного только тега . Все остальное просто затирается этим действием.
в файле /classes/lib/external/Jevix/jevix.class.php
находим строку:
и меняем ее на:
Таким образом, кнопка link стала работать и для вставки обычных ссылок, и для вставки магнет ссылок.
Может кому поможет :)
решения выше, конечно, хороши и правильны с точки зрения движка, но зачем такой геморрой?
Вот какой код у меня в: engine\lib\external\Jevix\jevix.class.php
версия LiveStreet 0.5.1 — 30.09.2011
может я куда-то не туда вставил код или в этой версии еще где-то надо что-то исправить?