Чтение RSS каналов

Форум

Открыть Ответить

Хак для редактора magnet и dchub

0

0
1
10.12.2008 12:40:2510.12.2008 12:41:28
Есть некий хак, позволяющий вставлять в редакторе magnet и dchub ссылки.

Вот его установка:

Файл: */function/sources.php

найти:
# Decode BB
function bb_decode($sourse, $mod) {


ниже добавить:
# Magnet & DCHub Start
	$bb[] = "#\[magnet\](\S+?)\[/magnet\]#is";
	$html[] = "<a href=\"\\1\">\\1</a>";
	$bb[] = "#\[magnet=([\w]+?:[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[\/magnet\]#is";
	$html[] = "<a href=\"\\1\" title=\"\\1\">\\2</a>";
	$bb[] = "#\[magnet=([\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/magnet\]#is";
	$html[] = "<a href=\"\\1\" title=\"\\1\">\\3</a>";
	$bb[] = "#\[magnet\]([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/magnet\]#is";
	$html[] = "<a href=\"\\1\" title=\"\\1\">\\1</a>";
	$bb[] = "#\[dchub\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!dchub=))*?)\[/dchub\]#is";
	$html[] = "<a href=\"\\1\" title=\"\\1\">\\1</a>";
	$bb[] = "#\[dchub\]((dchub)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/dchub\]#is";
	$html[] = "<a href=\"dchub://\\1\" title=\"\\1\">\\1</a>";
	$bb[] = "#\[dchub=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/dchub\]#is";
	$html[] = "<a href=\"\\1\" title=\"\\1\">\\2</a>";
	$bb[] = "#\[dchub=((dchub)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";
	$html[] = "<a href=\"dchub://\\1\" title=\"\\1\">\\3</a>";
	# Magnet & DCHub End


найти:
<img src=\"".img_find("editor/img")."\" title=\""._EIMG."\"></div>"
		."</div>"


ниже добавить:

."<div class=\"editor\">"
		."<div class=\"editorbutton\" OnMouseOver=\"this.className='editorbuttonover';\" OnMouseOut=\"this.className='editorbutton';\" OnClick=\"InsertCode('magnet', '"._MINFO."', '"._MTYPE."', '"._MERROR."', '".$id."')\"><img src=\"".img_find("editor/magnet")."\" title=\""._EMAGNET."\"></div>"
		."<div class=\"editorbutton\" OnMouseOver=\"this.className='editorbuttonover';\" OnMouseOut=\"this.className='editorbutton';\" OnClick=\"InsertCode('dchub', '"._HINFO."', '"._HTYPE."', '"._HERROR."', '".$id."')\"><img src=\"".img_find("editor/dchub")."\" title=\""._EDCHUB."\"></div>"
		."</div>"
		."</div>"


Файл: */language/lang-russian.php

# Magnet & DCHub Start
define("_MINFO","Введите магнет-ссылку");
define("_MTYPE","Введите описание");
define("_MERROR","Вы не указали магнет-ссылку!");
define("_EMAGNET","Вставить магнет-ссылку");
define("_HINFO","Введите адрес хаба");
define("_HTYPE","Введите описание");
define("_HERROR","Вы не указали адрес хаба!");
define("_EDCHUB","Вставить адрес хаба");
# Magnet & DCHub End

Файл: */ajax/insert_code.js

найти:
function InsertCode(code, info, type, error, area) {
	if ((ClientVer >= 4) && IsIE && IsWin) {
		if (code == 'name') {
			AddIE('' + info + '', ', ');
		} else if (code == 'url' || code == 'mail') {
			if (code == 'url') var url = prompt(info, 'http://');
			if (code == 'mail') var url = prompt(info, '');


заменить на:

function InsertCode(code, info, type, error, area) {
	if ((ClientVer >= 4) && IsIE && IsWin) {
		if (code == 'name') {
			AddIE('' + info + '', ', ');
		} else if (code == 'url' || code == 'mail' || code == 'magnet' || code == 'dchub') {
			if (code == 'url') var url = prompt(info, 'http://');
			if (code == 'mail') var url = prompt(info, '');
			if (code == 'magnet') var url = prompt(info, 'Магнет-ссылка');
			if (code == 'dchub') var url = prompt(info, 'dchub://');


найти:
} else {
		var txtarea = document.getElementById(area);
		if (code == 'name') {
			AddMoz(txtarea, '' + info + '', ', ');
		} else if (code == 'url' || code == 'mail') {
			if (code == 'url') var url = prompt(info, 'http://');
			if (code == 'mail') var url = prompt(info, '');


заменить на:
} else {
		var txtarea = document.getElementById(area);
		if (code == 'name') {
			AddMoz(txtarea, '' + info + '', ', ');
		} else if (code == 'url' || code == 'mail' || code == 'magnet' || code == 'dchub') {
			if (code == 'url') var url = prompt(info, 'http://');
			if (code == 'mail') var url = prompt(info, '');
			if (code == 'magnet') var url = prompt(info, 'Магнет-ссылка');
			if (code == 'dchub') var url = prompt(info, 'dchub://');



Впринцепи все ясно! Почти все то же, что и для обычного url.
Но у меня возникла проблема:

Сделал все как написано, dchub работает как часы, а вот с magnet проблема. Рассказываю. После всех изменений вообще перестал отображаться текст новостей и текст комментарий к ним. т.е вижу только название новости и все. причину я нашел:

$bb[] = "#\[magnet\](\S+?)\[/magnet\]#is";
$html[] = "<a href=\"\\1\">\\1</a>";
$bb[] = "#\[magnet=([\w]+?:[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[\/magnet\]#is";
$html[] = "<a href=\"\\1\" title=\"\\1\">\\2</a>";
$bb[] = "#\[magnet=([\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/magnet\]#is";
$html[] = "<a href=\"\\1\" title=\"\\1\">\\3</a>";
// $bb[] = "#\[magnet\]([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/magnet\]#is";
$html[] = "<a href=\"\\1\" title=\"\\1\">\\1</a>";

Стоит закоментировать выделенную строку, как все отображается.
Что в ней не так? Нужна ли она?
3.62

3.62
2
11.12.2008 02:33:42
такое чуство что регуляр перевернутый, то есть вместо
"/^[a-z]$/is" получаем "\^[a-z]$\is".
Хотя быть может я забыл синтаксис, но помоему идти должно именно так
3
11.12.2008 08:36:10
А где тут такое вообще? Не ну в других строчках то же ведь / используется.
Подскажите пожалуйста где ошибка в выделенной жирным строчке?
SLAEDCMS Вы непременно должны знать, ведь она не сильно отличается от url. Я просто в целом не могу понять смысл этого набора символов.

Заранее большое спасибо.
3.62

3.62
4
11.12.2008 18:50:04
Народ ну подскажи пожалуйста ! Это ведь не займет много времени

может ошибка строчки
$bb[] = "#\[magnet\]([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/magnet\]#is";

вот где:

$bb[] = "#\[magnet\] ( ([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/magnet\]#is";

не хватает скобки?
3.62

3.62
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь