Results 1 to 6 of 6

Thread: [VB4 mod] Lang bbcode

777
  1. [translate]    #1
    Administrator
    Join Date
    Dec 2009
    Location
    Moscow, Russia
    Posts
    3,727

    Default [VB4 mod] Lang bbcode

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

    Что правим (сделано все под ручную правку)
    1. Добавляем универсальную функцию getElementsByClassName
    Code:
    /*
    	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
    после:
    Code:
    	<script type="text/javascript">
    	<!--
    		// Main vBulletin Javascript Initialization
    		vBulletin_init();
    
    	//-->
    	</script>
    добавить:
    Code:
    	<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
    - замена:
    Code:
    <div class="lkln-{option}" style="display:none;">{param}</div>
    - пример:
    HTML Code:
    [lang=ru]Это только в русском интерфейсе[/lang][lang=en]This is in English only[/lang]
    - использовать опцию: Да
    остальное по умолчанию, если хотите, можно добавить кнопку, но я все ввожу ручками

    Как используем:
    Чтобы увидели пользователи с русским интерфейсом:
    HTML Code:
    [lang=ru]Только для русских[/lang]
    Для английского:
    HTML Code:
    [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. [translate]    #2
    Vit
    Vit is offline
    Member
    Join Date
    Mar 2010
    Location
    Санкт-Петербург
    Posts
    44

    Default

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

  3. [translate]    #3
    Administrator
    Join Date
    Dec 2009
    Location
    Moscow, Russia
    Posts
    3,727

    Default

    Спасибо за идею
    HTML Code:
    [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. [translate]    #4
    Vit
    Vit is offline
    Member
    Join Date
    Mar 2010
    Location
    Санкт-Петербург
    Posts
    44

    Default

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

  5. [translate]    #5
    Administrator
    Join Date
    Dec 2009
    Location
    Moscow, Russia
    Posts
    3,727

    Default

    Quote Originally Posted by Vit View Post
    Реализацию-то покажи
    вот 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. [translate]    #6
    Junior Member
    Join Date
    Sep 2010
    Location
    USA
    Posts
    12

    Default

    Thinx
    I have benefited greatly


    منتدى بنات

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •