[FOORUM] Hashtag ja mention süsteem

Vaata eelmist teemat Vaata järgmist teemat Go down

Tonight
Tonight

[FOORUM] Hashtag ja mention süsteem Vetera11
Liitus : 19/02/2012
Postitusi : 17991

PostitamineTonight 15.08.13 6:52

[FOORUM] Hashtag ja mention süsteem Hm10

Twitteri-taoline hashtag ning mention süsteem on veebimaailmas väga populaarne ning paljud foorumiomanikud soovivad seda ka enda foorumisse. Seepärast otsustasin teiega jagada koode, mis mulle kunagi lahkelt valmistati.

Loo uus Javascript ning märgi In all the pages.
Kood:
$(function(){
          var p = $('.post .content'); //get the posts
          for(var i = 0, post; (post = p[ i++ ]); ) {
              var codes = post.getElementsByTagName('code'), store = [];
              for(var j = 0, c; (c = codes[j++]); ) {
                store.push(c.innerHTML);
                c.innerHTML = '';
              }
              post.innerHTML = LGBB.parse( post.innerHTML ); //swap the innerhtml of the post, for the LGBB parsed innerhtml.
              for(var s, j = 0; (s = store[j]); ) codes[j++].innerHTML = s;
          }
        });
Seejärel Salvesta see Javascript.

Nüüd asume süsteemi juurde. Loo taaskord uus Javascript ning märgi In all the pages.
Kood:
(function(){"LGBB, a Javascript BBCode parser and API. Copyright \u00a9 by AvacWeb 2011-2013. All Rights Reserved. Use of this script is not allowed without this entire copyright notice in place. No Distribution without authors consent.";var f={expando:"{LGBB:"+(new Date).getMilliseconds()+"}",bbcodes:{},basics:[],attrReg:/.*?=("|'|)(.*?)\1\]/,parseTag:function(a,b,d){for(var g=b.insensitive?"i":"",c="\\["+b.tag+"[^\\]]*?\\]",h="\\[\\/"+b.tag+"\\]",g=d?RegExp("("+c+")(?!.*"+c+")((?:.|[\\r\\n])*?)"+h,g):RegExp(c,g),j=[];g.test(a);)a=a.replace(g,function(a,e,c){d||(e=a);e=f.attrReg.test(e)?e.replace(f.attrReg,"$2"):b.defaultAttr;if(b.validate&&!(d?b.validate.call(b,c,e):b.validate.call(b,e)))return j.push(a),f.expando;b.replace&&(a=d?b.replace.call(b,c,e):b.replace(e),"string"===typeof a?d?c=a:e=a:a&&"object"===typeof a&&(c=a.content||c,e=a.attr||e));return f.swapReplacers(b.replacement,c,e)});for(g=0;c=j[g++];)a=a.replace(f.expando,c);return a},swapReplacers:function(a,b,d){return(a||"").replace(/{CONTENT}/g,b||"").replace(/{ATTR}/g,d||"")},parse:function(a){var b=f.bbcodes,d=f.basics;f.expando="{LGBB:"+(new Date).getMilliseconds()+"}";for(var g=0,c;c=d[g++];){var h=c[0];if("string"===typeof h&&-1===c[1].indexOf(h))for(;-1!==a.indexOf(h);)a=a.replace(h,c[1]);else a=a.replace(h,c[1])}for(var j in b)if(b.hasOwnProperty(j)&&(d=b[j])&&d.replacement&&d.tag)try{a=f.parseTag(a,d,d.close)}catch(k){console.log("LGBB: Error parsing "+d.tag+" tag.",k)}return a},add:function(a,b){if(!/^\w+$/.test(a))throw new Exception("Invalid LGBB tag name: "+a);b.tag||(b.tag=a);"close"in b||(b.close=!1);f.bbcodes[a]=b;return this},addSwap:function(a,b){f.basics.push([a,b]);return this}};window.LGBB=f})();

LGBB.addSwap(/(\W)@([^\s<\n]+)/g, '$1@<a href="/profile?mode=viewprofile&u=$2">$2</a>');
        LGBB.addSwap(/(\W)#(?![^<]+>)([^\s<\n]+)/g, function(m, pre, word) {
            return pre + '#<a href="/search?mode=searchbox&search_keywords=' + encodeURIComponent(word) + '">' + word + '</a>';
        });
Tegelikult, on süsteem ise sealt ainult paar rida.
Kood:
LGBB.addSwap(/(\W)@([^\s<\n]+)/g, '$1@<a href="/profile?mode=viewprofile&u=$2">$2</a>');
        LGBB.addSwap(/(\W)#(?![^<]+>)([^\s<\n]+)/g, function(m, pre, word) {
            return pre + '#<a href="/search?mode=searchbox&search_keywords=' + encodeURIComponent(word) + '">' + word + '</a>';
        });
Aga kuna Forumotioni enda API seda ei võimalda, peame kasutama kasutaja LGforum poolt loodud APIt.

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid vestluses osaleda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele