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

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

  • Ответы 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

Зарузка...

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

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

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