Форум » Система построения сайтов » Разное » Хак для редактора magnet и dchub
Открыть Ответить

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

10.12.2008 12:40:25 10.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('[b]' + info + '[/b]', ', ');
		} 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('[b]' + info + '[/b]', ', ');
		} 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, '[b]' + info + '[/b]', ', ');
		} 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, '[b]' + info + '[/b]', ', ');
		} 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>";
[b]// $bb[] = "#\[magnet\]([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/magnet\]#is";[/b]
$html[] = "<a href=\"\\1\" title=\"\\1\">\\1</a>";

Стоит закоментировать выделенную строку, как все отображается.
Что в ней не так? Нужна ли она?
Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

11.12.2008 02:33:42

такое чуство что регуляр перевернутый, то есть вместо
"/^[a-z]$/is" получаем "\^[a-z]$\is".
Хотя быть может я забыл синтаксис, но помоему идти должно именно так

DiFor (Гость)
  • Нет информации
DiFor (Гость)

А где тут такое вообще? Не ну в других строчках то же ведь / используется.
Подскажите пожалуйста где ошибка в выделенной жирным строчке?
SLAEDCMS Вы непременно должны знать, ведь она не сильно отличается от url. Я просто в целом не могу понять смысл этого набора символов.

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

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

Народ ну подскажи пожалуйста ! Это ведь не займет много времени

может ошибка строчки
$bb[] = "#\magnet\)*?)\[/magnet\]#is";

вот где:

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

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

Storozh
  • Группа: Клиент
  • Пункты: 286
  • Регистрация: 04.10.2007
  • Пол: Мужчина
Storozh
3.62

3.62

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

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

Идеи и предложения
Обратная связь