Перейти к контенту

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

  • Ответы 132
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

См. мой пост, ббкоды-то в ауте...
Ссылка на комментарий
Поделиться на других сайтах

в ауте "сообщение отредактировал")

может кто-нидь знает, как составить регулярку так, чтобы она выхватывала не первый открывающийся тег и первый закрывающийся, а охватывающие

сейчас так:

[ expand ]text[ expand ]text[/ expand ]text[/ expand ]

а надо

[ expand ]text[ expand ]text[/ expand ]text[/ expand ]
Ссылка на комментарий
Поделиться на других сайтах

Включить "жадность" по аналогии как это с другими кодами сделано, с b, u, i etc. :D попробуй в регулярке .+? нужно ставитть чтобы не нарушалось соответствие.
Ссылка на комментарий
Поделиться на других сайтах

"#\[expand(.*?)\](.+?)\[/expand\]#ies", "\$this->regex_expand_tag( '\\2', '\\1' )"

надо какое-то условие, типа

"#\[expand(.*?)\](.+?)\[/expand\](все что угодно, кроме [/expand])#ies",

я хз как его написать)

 

сам дурак, разобрался...

</div>'ов не хватало

Ссылка на комментарий
Поделиться на других сайтах

воплотил в жизнь код с торрентса

http://www.sumirea.ru/forum/index.php?show...ost&p=81084

 

См. мой пост, ббкоды-то в ауте...

 

Оба в Опере не разворачиваются.

 

http://vesvalo.net/journal.php?user=1&comm=2620 - а тут разворачиваются. :D

Ссылка на комментарий
Поделиться на других сайтах

у меня разворачиваются везде: IE7, FF2.0.0.11, Opera 9 : http://ifolder.ru/4389012

какие ошибки в консоли?

Раскрывающийся текст - Информационный студенческий портал МИРЭА
http://www.sumirea.ru/forum/index.php?showtopic=1489&st=0&p=81084&
Inline script thread
Error:
name: TypeError
message: Statement on line 8: Could not convert undefined or null to object
Backtrace:
 Line 8 of inline#1 script in http://www.sumirea.ru/forum/index.php?showtopic=1489&st=0&p=81084&
$("div.sp-head-wrap", $(context)).click(function ()
{
 $(this).find("div.sp-head").toggleClass("unfolded");
 $(this).next("div.sp-body").toggle();
}
);
 Line 3 of inline#23 script in http://www.sumirea.ru/forum/index.php?showtopic=1489&st=0&p=81084&
menu_do_global_init();
initSpoilers("body");

Опера 8.54 под w2kSP4.

Ссылка на комментарий
Поделиться на других сайтах

Архар, именно про это и говорил из-под линуха тебе :D
Ссылка на комментарий
Поделиться на других сайтах

и так только Опера 8 ?

Сейчас для пробы зашел IE6 - то же самое. Ошибка джаваскрипт при загрузке страницы.

И в ФайерФоксе тоже...

Может это особенность ОС-ы? У меня w2k.

ХРюша есть, но перегружаться сейчас неохота.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

свой текст я проверял на самых различных компах и ноутбуках, он всегда работал, так что проблемы точно еденичные и точно связаны с недозагрузкой файла expand.js

у кого-то в кеше старая версия мб

кто-то тыкает с нетерпением в текст, хотя expand весит много

так что вопрос исчерпан

ибо проверял я ИЕ6, ИЕ7, FireFox самых разных версий, Avant, Opera 9

Ссылка на комментарий
Поделиться на других сайтах

свой текст я проверял на самых различных компах и ноутбуках, он всегда работал, так что проблемы точно еденичные и точно связаны с недозагрузкой файла expand.js

Сейчас работает. Но разворачивается не плавно, а рывком. Такой код должен весить пол-килобайта...

Ссылка на комментарий
Поделиться на других сайтах

Да, явно нужн почистить лишнее :D Тем более что плавность увеличивает всего на несколько(~) строчек скрипт.
Ссылка на комментарий
Поделиться на других сайтах

да нигде пока, я не выкладывал...

там в принципе всего три блока кода по 3 строчки)

Выкладывай :D

Полезная вещь ;)

 

Кстати, было бы не плохо, если можно было применять к твоему моду, в название BBCODE, т.е.:

[color="#FFFF00"][size="4"][expand=тектс][/size][/color]Проверим Раскрывающийся текст[/expand]

 

или

 

[expand=[color="#FFFF00"][size="4"]тектс[/size][/color]]Проверим Раскрывающийся текст[/expand]

 

Хотя второй вариант не получится, но можно как в первом попробовать сделать)

Ссылка на комментарий
Поделиться на других сайтах

Первый вариант лол :D

 

Архар, а второй разве у тебя не работает? memo, второй вариант работает, только не с тем кодом что в теме раньше написан ;)

Ссылка на комментарий
Поделиться на других сайтах

второй у меня работает...

код в студию

1. новая функция в class_bbcode_core.php

	function regex_expand_tag($content, $option)
{
	if($option=="")
	{
		$option = "Раскрывающийся текст";
	}
	else
	{
		$option = substr($option,1);
		$option = stripslashes($option); 
	}
	$content = stripslashes($content);		
	return "<div class=\"sp-wrap\"><div class=\"sp-head-wrap\"><div class=\"sp-head folded clickable\">".$option."</div></div><div class=\"sp-body\"><div class=\"sp-content\">".$content."<div class=\"clear\"></div></div></div></div>";
}

2. class_bbcode.php (mb *_legacy.php)

найти

$txt = $this->bbcode_check($txt);

добавить после

		if ( $this->parse_bbcode )
	{		
		//expand
		while ( preg_match( "#\[expand(.*?)\](.+?)\[/expand\]#is", $txt ) )
		{			
			$txt = preg_replace( "#\[expand(.*?)\](.+?)\[/expand\]#ies", "\$this->regex_expand_tag( '\\2', '\\1' )", $txt );
		}		
	}

мы добавили обработку тега expand в саааамый конец, перед return $txt;,все мыслимые ббкоды внутри таким образом поддерживаются

 

в этом же файле

найти

			$txt = preg_replace( "#<!--EDIT\|.+?\|.+?-->#" , "" , $txt );
		$txt = str_replace( "</li>", "", $txt );
		$txt = str_replace( "(tm)", "(tm)", $txt );

добавить после

			while ( preg_match( "#<div class=\"sp-wrap\"><div class=\"sp-head-wrap\"><div class=\"sp-head folded clickable\">(.+?)</div></div><div class=\"sp-body\"><div class=\"sp-content\">(.+?)<div class=\"clear\"></div></div></div></div>#is", $txt ) )
		{
			$txt = preg_replace( "#<div class=\"sp-wrap\"><div class=\"sp-head-wrap\"><div class=\"sp-head folded clickable\">(.+?)</div></div><div class=\"sp-body\"><div class=\"sp-content\">(.+?)<div class=\"clear\"></div></div></div></div>#is"	, "\[expand=\\1\]\\2\[/expand\]", $txt );
		}

мы добавили разборку ббкода

оба действия в цикле while, поэтому вложенность неограниченная (разве только мемори лимитом)

можете поставить защиту от дурака

 

файл яваскрипта expand.js крадете у меня, все равно это тупо весь jquery+функция инициализации, я сам его где-то тырил...

 

в глобальном хедере (в шаблонах) линкуете этот скрипт

в глобальном футере около инициализации меню (menu_do_global_init(); ) вставить initSpoilers('body');

Ссылка на комментарий
Поделиться на других сайтах

В обоих этих файлах(class_bbcode.php и class_bbcode_legacy.php) лучше сделать, на всякий пожарный. Это на случай, если у вас включён режим совместимости с 1.3-2.0 :D
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.