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

Закрыть все теги (и те, что набирались вручную)


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

Кнопка "Закрыть все теги" в форме ответа закрывает все теги которые открывались кнопками формы, набранные вручную - нет :D

 

Причем нужно соблюдать вложенность:

[b][i]text[/b]

Нужно заменять на

[b][i]text[/i][/b]

А не

[b][i]text[/b][/i]

 

Нужен ли такой мод? )

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

Было бы неплохо. А можно такой сделать?
Ссылка на комментарий
Поделиться на других сайтах

Можно :D...

 

Я вообще сначала пишу на php, потому что там функции работы со стеками есть ), потом переведу в js

 

Сейчас делаю чтобы то, что между "

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

Ну круто. В общем кнопочкой я этой не пользуюсь, но всё равно круто :D
Ссылка на комментарий
Поделиться на других сайтах

Прикольно.

А если я в форме ответа буду писать код программы в которой напишу например

$code = ...

то он тоже расценит его как открытый тег ?

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

$code = ...

то он тоже расценит его как открытый тег ?

Если это будет между тегами [code] или после открытого тэга, то не расценит, если тегом кода не пользоваться, то расценит...

 

Первая версия (пока без указания списка тегов, и списка какие теги отменяют теги %) ).

 

Для версии 1.х - открыть html/ibfcode.js, для версии 2.1 - jscripts/ipb_editor.js (в 2.0 вроде бы такое же название, на данный момент нету у меня этой версии)

 

Для всех версий добавить функции:

function tagclose (text)
{
 var new_text="";
 var st=0; 
 var tag="";
 var rt=0;
 var a=new Array(); 
 var c=text.charAt(0);
 for(var i=0; i<text.length; i++, c=text.charAt(i))
 {  new_text+=c;

 switch (st)
 {
	case 0: if (c=='[') st=1; break;
	case 1: if (c=='/') st=3; 
			else if (is_tagalph(c)) 
			{
				st=2;
				tag+=c;
			}
			else st=0; break;
	case 2: if (c==']') st=5;
			else if (is_tagalph(c)) tag+=c;
			else st=7; break;
	case 3: if (is_tagalph(c)) {st=4; tag+=c;}
			else st=0; break;
	case 4: if (is_tagalph(c)) tag+=c;
			else
			if (c==']')
			  st=6; 
			else {st=0;tag="";} break;
	case 7: if (c==']') st=5; break;
	default: if (c=='[') st=1;
				else st=0;
 } 

 if (st==5) 
 {   
	 if (rt==0)
	 { pushstack(a, tag); 
	   if (tag.toLowerCase()=="code") rt=1;  
	 }

	 tag=""; st=0;

 }


 if (st==6)
 {   
	 if (rt==0)
	 {
		 while ((t=popstack(a)) && t.toLowerCase()!=tag.toLowerCase())
			 new_text=new_text.substring(0, new_text.length - tag.length - 1)+t+"][/"+tag+"]";
	 }
	 else if (tag.toLowerCase()=="code") 
	 {  
		 t=popstack(a);
		 rt=0;
	 }
	 tag="";st=0;
 }


 }
 while (t=popstack(a)) new_text+="[/"+t+"]"; 
 return new_text;
}
function is_tagalph(c)
{
 return (c>='a' && c<='z') || (c>='A' && c<='Z') ? true : false;
}

 

Для всех версий найти функцию "function closeall()", в ней -

Для 1.х найти и закомментировать (добавить // вначале строки ):

document.REPLIER.Post.value += "[/" + tagRemove + "]";

Для 2.1.х (может и для 2.0.х) найти и закомментировать (добавить // вначале строки ):

postformobj.Post.value += "[/" + tagRemove + "]";

 

Добавить в конце этой же функции:

Для 1.х (конец функции после "document.REPLIER.Post.focus();"):

 document.REPLIER.Post.value=tagclose(document.REPLIER.Post.value);

Для 2.х (конец функции после "postformobj.Post.focus();"):

 postformobj.Post.value=tagclose(postformobj.Post.value);

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

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

В какой версии?

 

Тогда в 2.1 надо открывать jscripts/ipb_editor.js

в closeall комментировать:

postformobj.Post.value += "[/" + tagRemove + "]";

И после

postformobj.Post.focus();

Добавлять:

postformobj.Post.value=tagclose(postformobj.Post.value);

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

для 1.3

Описание менялось? Переустановил.

Ставлю тэг кнопочкой, кликаю закрыть все теги, всё в форме ответа пишется

undefinedundefinedundefined

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

Это в эксплорере, щас гляну ). Я смотрел только в firefox2 :-[

 

Значит, не учел особенность js ). Вместо

  var c=text[0];
 for(var i=0; i<text.length; i++, c=text[i])

 

Надо

var c=text.charAt(0);
 for(var i=0; i<text.length; i++, c=text.charAt(i))

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

Hostem, пиши когда редактируешь верхние посты. Я чуть с ума не сошёл пока не понял что то что надо заменить наверху уже заменено :D

 

 

В общем работает ;)

 

Насчёт расстановки тегов (когда они дописываются в конец) может и не всегда получается как хотелось бы, но по другому наверное никак.

Уж точно лучше того что есть по стандарту.

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

Можно еще при отправке поста проверять закрыты ли все теги, если найден не закрытый - сообщение "Обнаружен не закрытый тег. Нажмите ОК чтобы исправить сообщение и 'Cancel', чтобы отправить его" :D
Ссылка на комментарий
Поделиться на других сайтах

Да, сделай :D

 

А как быть с самопальными непарными тэгами. Вот я себе например сделал тэг


, хтмл'ный <hr>. Он тоже закрывается, а не надо.

Я им в общем-то уже и не пользуюсь лет как 100, но если на будущее.

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

Это версия без списка тегов. Пока так тестим :D... В окончательной версии можно будет указывать теги которые следует закрывать и тэги, которые отменяют разметку бб-тегами (например, не только
Ссылка на комментарий
Поделиться на других сайтах

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

Hostem

Отличный мод!!!

Спасибо!

 

Только для 2.0.4 нужно изменить postformobj.Post.value на fombj.Post.value

 

Ещё раз респект!

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

  • 1 месяц спустя...
Hostem, молодец всегда уважал тебя. :D
Ссылка на комментарий
Поделиться на других сайтах

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

Круто, особенно круто что для 1.3. Это очень круто и мы-любители_1.3 - нстоящая элита :D Нас мало...
Ссылка на комментарий
Поделиться на других сайтах

  • 11 месяцев спустя...
Продолжение следует? :D
Ссылка на комментарий
Поделиться на других сайтах

Это про настройку списка тегов которые нужно закрывать? :D Или более глубокая проверка синтаксиса? ;)
Ссылка на комментарий
Поделиться на других сайтах

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

Ну для bb-кодов можно, например, проверять правильно ли написаны теги , , , или таблицы если есть тег [table].
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

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

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

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

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

Зарузка...
×
×
  • Создать...

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

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