+ Ответить в теме
Показано с 1 по 6 из 6
  1. #1
    Administrator LeshaK is on a distinguished road
    Регистрация
    04.12.2009
    Адрес
    Moscow, Russia
    Сообщений
    3,712

    По умолчанию [VB4 mod] Lang bbcode

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

    Что правим (сделано все под ручную правку)
    1. Добавляем универсальную функцию getElementsByClassName
    Код:
    /*
    	Developed by Robert Nyman, http://www.robertnyman.com
    	Code/licensing: http://code.google.com/p/getelementsbyclassname/
    */
    var getElementsByClassName = function (className, tag, elm){
    	if (document.getElementsByClassName) {
    		getElementsByClassName = function (className, tag, elm) {
    			elm = elm || document;
    			var elements = elm.getElementsByClassName(className),
    				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
    				returnElements = [],
    				current;
    			for(var i=0, il=elements.length; i<il; i+=1){
    				current = elements[i];
    				if(!nodeName || nodeName.test(current.nodeName)) {
    					returnElements.push(current);
    				}
    			}
    			return returnElements;
    		};
    	}
    	else if (document.evaluate) {
    		getElementsByClassName = function (className, tag, elm) {
    			tag = tag || "*";
    			elm = elm || document;
    			var classes = className.split(" "),
    				classesToCheck = "",
    				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
    				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
    				returnElements = [],
    				elements,
    				node;
    			for(var j=0, jl=classes.length; j<jl; j+=1){
    				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
    			}
    			try	{
    				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
    			}
    			catch (e) {
    				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
    			}
    			while ((node = elements.iterateNext())) {
    				returnElements.push(node);
    			}
    			return returnElements;
    		};
    	}
    	else {
    		getElementsByClassName = function (className, tag, elm) {
    			tag = tag || "*";
    			elm = elm || document;
    			var classes = className.split(" "),
    				classesToCheck = [],
    				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
    				current,
    				returnElements = [],
    				match;
    			for(var k=0, kl=classes.length; k<kl; k+=1){
    				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
    			}
    			for(var l=0, ll=elements.length; l<ll; l+=1){
    				current = elements[l];
    				match = false;
    				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
    					match = classesToCheck[m].test(current.className);
    					if (!match) {
    						break;
    					}
    				}
    				if (match) {
    					returnElements.push(current);
    				}
    			}
    			return returnElements;
    		};
    	}
    	return getElementsByClassName(className, tag, elm);
    };
    Сохраняем ее в файле, например uservb4script.js
    Файл загружаем на сервер в папку yourforum/clientscript/

    2. Добавим возможность загрузки данного скрипта
    в шаблон: headinclude
    добавим: <script type="text/javascript" src="clientscript/spoiler.js"></script>

    3. Добавим вызов данной функции
    в шаблон: footer
    после:
    Код:
    	<script type="text/javascript">
    	<!--
    		// Main vBulletin Javascript Initialization
    		vBulletin_init();
    
    	//-->
    	</script>
    добавить:
    Код:
    	<script type="text/javascript">
    	<!--
                    // support show diff languages
                    var lklang = getElementsByClassName("lkln-{vb:stylevar languagecode}", "div");
                    var i = 0;
                    while (lklang_cur = lklang[i++]) {
                        lklang_cur.style.display = "";
                    }
    	//-->
    	</script>
    4. Добавляем новый bbcode
    - заголовок: lang_only
    - название BB: lang
    - замена:
    Код:
    <div class="lkln-{option}" style="display:none;">{param}</div>
    - пример:
    Код HTML:
    [lang=ru]Это только в русском интерфейсе[/lang][lang=en]This is in English only[/lang]
    - использовать опцию: Да
    остальное по умолчанию, если хотите, можно добавить кнопку, но я все ввожу ручками

    Как используем:
    Чтобы увидели пользователи с русским интерфейсом:
    Код HTML:
    [lang=ru]Только для русских[/lang]
    Для английского:
    Код HTML:
    [lang=en]Only for English[/lang]
    Таким методом собираюсь сделать весь FAQ, надеюсь пользователям будет удобно.
    Если есть предложения, замечания, вопросы - готов выслушать.
    Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
    If you like my stuff, buy me a beer!

  2. #2
    Vit
    Vit вне форума
    Member Vit is on a distinguished road
    Регистрация
    19.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Возможно, еще есть смысл добавить тег [QR] , который заенкодит содерживое в баркод. Не помню, есть на орге готовые или нет. Можно в панели управления прописать, но не уверен что там правильно кавычки заэкранируются.

  3. #3
    Administrator LeshaK is on a distinguished road
    Регистрация
    04.12.2009
    Адрес
    Moscow, Russia
    Сообщений
    3,712

    По умолчанию

    Спасибо за идею
    Код HTML:
    [QR]http://forum.samdroid.net[/QR]
    Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
    If you like my stuff, buy me a beer!

  4. #4
    Vit
    Vit вне форума
    Member Vit is on a distinguished road
    Регистрация
    19.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    44

    По умолчанию

    Реализацию-то покажи

  5. #5
    Administrator LeshaK is on a distinguished road
    Регистрация
    04.12.2009
    Адрес
    Moscow, Russia
    Сообщений
    3,712

    По умолчанию

    Цитата Сообщение от Vit Посмотреть сообщение
    Реализацию-то покажи
    вот http://forum.samdroid.net/threads/68...=8925#post8925
    Twitter | Devices: Samsung Spica i5700 - SamdroidMod 2.0.1 Froyo | Nexus One - Android 2.2 Froyo | Nexus S CyanogenMod 7.1
    If you like my stuff, buy me a beer!

  6. #6
    Junior Member PeXLS is on a distinguished road
    Регистрация
    23.09.2010
    Адрес
    USA
    Сообщений
    12

    По умолчанию

    Thinx
    I have benefited greatly


    منتدى بنات


 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения