/** @name Super newz.dk Enhancement Suite (SNES) @url https://raw.github.com/Daniel-Dane/newz.dk-Enhancement-Suite/master/nes.js */ // Følgende (FRA OG MED CITATIONSTEGNET TIL SLUT) indsættes i indstillinger -> stylesheet for at installere SNES // " />"~"){c="&#"+c.charCodeAt()+";"}e+=c}return e},htmlDecode:function(s){var c,m,d=s;if(this.isEmpty(d))return"";d=this.HTML2Numerical(d);arr=d.match(/&#[0-9]{1,5};/g);if(arr!=null){for(var x=0;x=-32768&&c<=65535){d=d.replace(m,String.fromCharCode(c))}else{d=d.replace(m,"")}}}return d},htmlEncode:function(s,dbl){if(this.isEmpty(s))return"";dbl=dbl||false;if(dbl){if(this.EncodeType=="numerical"){s=s.replace(/&/g,"&")}else{s=s.replace(/&/g,"&")}}s=this.XSSEncode(s,false);if(this.EncodeType=="numerical"||!dbl){s=this.HTML2Numerical(s)}s=this.numEncode(s);if(!dbl){s=s.replace(/&#/g,"##AMPHASH##");if(this.EncodeType=="numerical"){s=s.replace(/&/g,"&")}else{s=s.replace(/&/g,"&")}s=s.replace(/##AMPHASH##/g,"&#")}s=s.replace(/&#\d*([^\d;]|$)/g,"$1");if(!dbl){s=this.correctEncoding(s)}if(this.EncodeType=="entity"){s=this.NumericalToHTML(s)}return s},XSSEncode:function(s,en){if(!this.isEmpty(s)){en=en||true;if(en){s=s.replace(/\'/g,"'");s=s.replace(/\"/g,""");s=s.replace(//g,">")}else{s=s.replace(/\'/g,"'");s=s.replace(/\"/g,""");s=s.replace(//g,">")}return s}else{return""}},hasEncoded:function(s){if(/&#[0-9]{1,5};/g.test(s)){return true}else if(/&[A-Z]{2,6};/gi.test(s)){return true}else{return false}},stripUnicode:function(s){return s.replace(/[^\x20-\x7E]/g,"")},correctEncoding:function(s){return s.replace(/(&)(amp;)+/,"$1")},swapArrayVals:function(s,arr1,arr2){if(this.isEmpty(s))return"";var re;if(arr1&&arr2){if(arr1.length==arr2.length){for(var x=0,i=arr1.length;x - http://blog.0xab.cd */ (function(){var a={getSelection:function(){var a=this.jquery?this[0]:this;return("selectionStart"in a&&function(){var b=a.selectionEnd-a.selectionStart;return{start:a.selectionStart,end:a.selectionEnd,length:b,text:a.value.substr(a.selectionStart,b)}}||document.selection&&function(){a.focus();var b=document.selection.createRange();if(b==null){return{start:0,end:a.value.length,length:0}}var c=a.createTextRange();var d=c.duplicate();c.moveToBookmark(b.getBookmark());d.setEndPoint("EndToStart",c);return{start:d.text.length,end:d.text.length+b.text.length,length:b.text.length,text:b.text}}||function(){return{start:0,end:a.value.length,length:0}})()},replaceSelection:function(){var a=this.jquery?this[0]:this;var b=arguments[0]||"";return("selectionStart"in a&&function(){a.value=a.value.substr(0,a.selectionStart)+b+a.value.substr(a.selectionEnd,a.value.length);return this}||document.selection&&function(){a.focus();document.selection.createRange().text=b;return this}||function(){a.value+=b;return this})()}};jQuery.each(a,function(a){jQuery.fn[a]=this})})(); // ---------------------------------------------------------------------------- // markItUp! Universal MarkUp Engine, JQuery plugin // v 1.1.x // Dual licensed under the MIT and GPL licenses. // ---------------------------------------------------------------------------- // Copyright (C) 2007-2011 Jay Salvat // http://markitup.jaysalvat.com/ // ---------------------------------------------------------------------------- // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // ---------------------------------------------------------------------------- (function($){$.fn.markItUp=function(settings,extraSettings){var options,ctrlKey,shiftKey,altKey;ctrlKey=shiftKey=altKey=false;options={id:"",nameSpace:"",root:"",previewInWindow:"",previewAutoRefresh:true,previewPosition:"after",previewTemplatePath:"~/templates/preview.html",previewParser:false,previewParserPath:"",previewParserVar:"data",resizeHandle:true,beforeInsert:"",afterInsert:"",onEnter:{},onShiftEnter:{},onCtrlEnter:{},onTab:{},markupSet:[{}]};$.extend(options,settings,extraSettings);if(!options.root){$("script").each(function(a,b){miuScript=$(b).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/);if(miuScript!==null){options.root=miuScript[1]}})}return this.each(function(){function keyPressed(a){shiftKey=a.shiftKey;altKey=a.altKey;ctrlKey=!(a.altKey&&a.ctrlKey)?a.ctrlKey||a.metaKey:false;if(a.type==="keydown"){if(ctrlKey===true){li=$('a[accesskey="'+String.fromCharCode(a.keyCode)+'"]',header).parent("li");if(li.length!==0){ctrlKey=false;setTimeout(function(){li.triggerHandler("mouseup")},1);return false}}if(a.keyCode===13||a.keyCode===10){if(ctrlKey===true){ctrlKey=false;markup(options.onCtrlEnter);return options.onCtrlEnter.keepDefault}else if(shiftKey===true){shiftKey=false;markup(options.onShiftEnter);return options.onShiftEnter.keepDefault}else{markup(options.onEnter);return options.onEnter.keepDefault}}if(a.keyCode===9){if(shiftKey==true||ctrlKey==true||altKey==true){return false}if(caretOffset!==-1){get();caretOffset=$$.val().length-caretOffset;set(caretOffset,0);caretOffset=-1;return false}else{markup(options.onTab);return options.onTab.keepDefault}}}}function writeInPreview(a){if(previewWindow.document){try{sp=previewWindow.document.documentElement.scrollTop}catch(b){sp=0}previewWindow.document.open();previewWindow.document.write(a);previewWindow.document.close();previewWindow.document.documentElement.scrollTop=sp}}function renderPreview(){var a;if(options.previewParser&&typeof options.previewParser==="function"){var b=options.previewParser($$.val());writeInPreview(localize(b,1))}else if(options.previewParserPath!==""){$.ajax({type:"POST",dataType:"text",global:false,url:options.previewParserPath,data:options.previewParserVar+"="+encodeURIComponent($$.val()),success:function(a){writeInPreview(localize(a,1))}})}else{if(!template){$.ajax({url:options.previewTemplatePath,dataType:"text",global:false,success:function(a){writeInPreview(localize(a,1).replace(//g,$$.val()))}})}}return false}function refreshPreview(){renderPreview()}function preview(){if(!previewWindow||previewWindow.closed){if(options.previewInWindow){previewWindow=window.open("","preview",options.previewInWindow);$(window).unload(function(){previewWindow.close()})}else{iFrame=$('');if(options.previewPosition=="after"){iFrame.insertAfter(footer)}else{iFrame.insertBefore(header)}previewWindow=iFrame[iFrame.length-1].contentWindow||frame[iFrame.length-1]}}else if(altKey===true){if(iFrame){iFrame.remove()}else{previewWindow.close()}previewWindow=iFrame=false}if(!options.previewAutoRefresh){refreshPreview()}if(options.previewInWindow){previewWindow.focus()}}function get(){textarea.focus();scrollPosition=textarea.scrollTop;if(document.selection){selection=document.selection.createRange().text;if($.browser.msie){var a=document.selection.createRange(),b=a.duplicate();b.moveToElementText(textarea);caretPosition=-1;while(b.inRange(a)){b.moveStart("character");caretPosition++}}else{caretPosition=textarea.selectionStart}}else{caretPosition=textarea.selectionStart;selection=textarea.value.substring(caretPosition,textarea.selectionEnd)}return selection}function set(a,b){if(textarea.createTextRange){if($.browser.opera&&$.browser.version>=9.5&&b==0){return false}range=textarea.createTextRange();range.collapse(true);range.moveStart("character",a);range.moveEnd("character",b);range.select()}else if(textarea.setSelectionRange){textarea.setSelectionRange(a,a+b)}textarea.scrollTop=scrollPosition;textarea.focus()}function insert(a){if(document.selection){var b=document.selection.createRange();b.text=a}else{textarea.value=textarea.value.substring(0,caretPosition)+a+textarea.value.substring(caretPosition+selection.length,textarea.value.length)}}function fixIeBug(a){if($.browser.msie){return a.length-a.replace(/\r*/g,"").length}return 0}function fixOperaBug(a){if($.browser.opera){return a.length-a.replace(/\n*/g,"").length}return 0}function markup(a){var b,c,d,e;hash=clicked=a;get();$.extend(hash,{line:"",root:options.root,textarea:textarea,selection:selection||"",caretPosition:caretPosition,ctrlKey:ctrlKey,shiftKey:shiftKey,altKey:altKey});prepare(options.beforeInsert);prepare(clicked.beforeInsert);if(ctrlKey===true&&shiftKey===true||a.multiline===true){prepare(clicked.beforeMultiInsert)}$.extend(hash,{line:1});if(ctrlKey===true&&shiftKey===true){lines=selection.split(/\r?\n/);for(c=0,d=lines.length,e=0;e"),i=0;$("li:hover > ul",ul).css("display","block");$.each(markupSet,function(){var button=this,t="",title,li,j;title=button.key?(button.name||"")+" [Ctrl+"+button.key+"]":button.name||"";key=button.key?'accesskey="'+button.key+'"':"";if(button.separator){li=$('
  • '+(button.separator||"")+"
  • ").appendTo(ul)}else{i++;for(j=levels.length-1;j>=0;j--){t+=levels[j]+"-"}li=$('
  • '+(button.name||"")+"
  • ").bind("contextmenu",function(){return false}).click(function(){return false}).bind("focusin",function(){$$.focus()}).mouseup(function(){if(button.call){eval(button.call)()}setTimeout(function(){markup(button)},1);return false}).hover(function(){$("> ul",this).show();$(document).one("click",function(){$("ul ul",header).hide()})},function(){$("> ul",this).hide()}).appendTo(ul);if(button.dropMenu){levels.push(i);$(li).addClass("markItUpDropMenu").append(dropMenus(button.dropMenu))}}});levels.pop();return ul}function init(){id="";nameSpace="";if(options.id){id='id="'+options.id+'"'}else if($$.attr("id")){id='id="markItUp'+$$.attr("id").substr(0,1).toUpperCase()+$$.attr("id").substr(1)+'"'}if(options.nameSpace){nameSpace='class="'+options.nameSpace+'"'}$$.wrap("
    ");$$.wrap("
    ');$$.wrap('
    ');$$.addClass("markItUpEditor");header=$('
    ').insertBefore($$);$(dropMenus(options.markupSet)).appendTo(header);footer=$('
    ').insertAfter($$);if(options.resizeHandle===true&&$.browser.safari!==true){resizeHandle=$('
    ').insertAfter($$).bind("mousedown",function(a){var b=$$.height(),c=a.clientY,d,e;d=function(a){$$.css("height",Math.max(20,a.clientY+b-c)+"px");return false};e=function(a){$("html").unbind("mousemove",d).unbind("mouseup",e);return false};$("html").bind("mousemove",d).bind("mouseup",e)});footer.append(resizeHandle)}$$.keydown(keyPressed).keyup(keyPressed);$$.bind("insertion",function(a,b){if(b.target!==false){get()}if(textarea===$.markItUp.focused){markup(b)}});$$.focus(function(){$.markItUp.focused=this})}function localize(a,b){if(b){return a.replace(/("|')~\//g,"$1"+options.root)}return a.replace(/^~\//,options.root)}var $$,textarea,levels,scrollPosition,caretPosition,caretOffset,clicked,hash,header,footer,previewWindow,template,iFrame,abort;$$=$(this);textarea=this;levels=[];abort=false;scrollPosition=caretPosition=0;caretOffset=-1;options.previewParserPath=localize(options.previewParserPath);options.previewTemplatePath=localize(options.previewTemplatePath);init()})};$.fn.markItUpRemove=function(){return this.each(function(){var a=$(this).unbind().removeClass("markItUpEditor");a.parent("div").parent("div.markItUp").parent("div").replaceWith(a)})};$.markItUp=function(a){var b={target:false};$.extend(b,a);if(b.target){return $(b.target).each(function(){$(this).focus();$(this).trigger("insertion",[b])})}else{$("textarea").trigger("insertion",[b])}}})(jQuery) // SNES-indstillingsboksen $('
    ').insertAfter('#nmTopBar') .html(' \

    Super newz.dk Enhancement Suite (SNES)

    \
    \
    \
    \
    pewbe mode:  
    \
    \
    \
    \
    \
    \
    \ \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \
    \ \
    \
    \
    \
    \
    \
    \ \
    \
    \
    \
    \
    \
    \
    \
    \ Ændringerne sættes i kraft ved næste indlæsning. Lær alt om SNES på kynz! Version ' + SNES_version + '. \
    \
    \ ').hide(); // "SNES-indstillinger"-knappen $('#nmSiteSelect').next().find('a:last').before('SNES-indstillinger | '); $('#SNES-toggle').click(function (e) { e.preventDefault(); $('#SNES-menu').toggle(); return false; }); // Henter indstillinger addLinkToPostReference = (localStorage["addLinkToPostReference"] == "true"); showPostOnMouseOverReferenceMini = (localStorage["showPostOnMouseOverReferenceMini"] == "true"); showPostOnMouseOverReference = (localStorage["showPostOnMouseOverReference"] == "true"); improvedQuoteSetting = (localStorage["improvedQuoteSetting"] == "true"); applyTargetBlank = (localStorage["applyTargetBlank"] == "true"); applyTargetBlankOnlyOutgoing = (localStorage["applyTargetBlankOnlyOutgoing"] == "true"); fixFailTagsSetting = (localStorage["fixFailTagsSetting"] == "true"); showUrlImages = (localStorage["showUrlImages"] == "true"); showUrlImagesNotInQuote = (localStorage["showUrlImagesNotInQuote"] == "true"); showUrlImagesNewOnly = (localStorage["showUrlImagesNewOnly"] == "true"); $('#showUrlImagesCount').val(showUrlImagesCount = +localStorage["showUrlImagesCount"] || 0); showUrlVideos = (localStorage["showUrlVideos"] == "true"); embedYouTubeUrls = (localStorage["embedYouTubeUrls"] == "true"); embedYouTubeUrlsNotInQuote = (localStorage["embedYouTubeUrlsNotInQuote"] == "true"); embedYouTubeUrlsNewOnly = (localStorage["embedYouTubeUrlsNewOnly"] == "true"); $('#embedYouTubeUrlsCount').val(embedYouTubeUrlsCount = +localStorage["embedYouTubeUrlsCount"] || 0); if (narrowSite = (localStorage["narrowSite"] == "true")) { $('body,#center,#nmContainer').css('width','1000px'); } updateFaviconOnNewPosts = (localStorage["updateFaviconOnNewPosts"] == "true"); updateFaviconOnNewPostsBlink = (localStorage["updateFaviconOnNewPostsBlink"] == "true"); // Event handlers til knapperne var handlerList = ['addLinkToPostReference', 'showPostOnMouseOverReference', 'showPostOnMouseOverReferenceLeft', 'showPostOnMouseOverReferenceMini', 'improvedQuoteSetting', 'applyTargetBlank', 'applyTargetBlankOnlyOutgoing', 'fixFailTagsSetting', 'showUrlImages', 'showUrlImagesNotInQuote', 'showUrlImagesNewOnly', 'showUrlVideos', 'embedYouTubeUrls', 'embedYouTubeUrlsNotInQuote', 'embedYouTubeUrlsNewOnly', 'narrowSite', 'updateFaviconOnNewPosts', 'updateFaviconOnNewPostsBlink']; for (var i = 0; i < handlerList.length; i++) { $("#" + handlerList[i]).bind("click", function() { localStorage[this.id] = this.checked ? 'true' : 'false'; SNES_updateSettingsSub(); }).attr('checked', (localStorage[handlerList[i]] == 'true')); } $("#sortRating").bind("click", function() { SNES_postSortByRating = true; $('.comments_new').remove(); $(this).attr('disabled', true).text('* POOF *'); $(".comment").each(function() { if ($(this).find(".comment_rating_details").css("display") == "none") $(this).find(".information").click(); }); }); $("#pewbeMode").bind("change", function() { var a = this.selectedIndex; $(".comment_rate").each(function() { this.selectedIndex = a; $(this).change(); }); }); $('#showUrlImagesCount').change(function() { $(this).val(localStorage["showUrlImagesCount"] = Math.floor(Math.max(+$(this).val() || 0, 0))); }); $('#embedYouTubeUrlsCount').change(function() { $(this).val(localStorage["embedYouTubeUrlsCount"] = Math.floor(Math.max(+$(this).val() || 0, 0))); }); // Styles til fix af newz.dk samt til nogle af SNES' features. $("").appendTo("head"); $(document).ajaxSuccess(function(event, xhr, options) { // Behandling af AJAX-sideskift if (options.url.match('class=Z4_Forum_Item&action=page') !== null) { var href = SNES_getUrl(); if (window._pageId > window._lastPage) { // Hvis man får et link med en henvisning til et indlæg, som ikke findes endnu SNES_startHash = ''; $('#postcontainer').prepend('Hopper lige til den rigtige side...'); history.replaceState({page: _lastPage}, '', href + '/page' + _lastPage); SNES_fetchPage(_lastPage, 0); } else { if (SNES_startHash != '') { $(window).scrollTop($('.comment h2:has(a[name=' + SNES_startHash.substr(1) + '])').offset().top); history.replaceState({page: _pageId}, '', href + '/page' + _pageId + SNES_startHash); SNES_startHash = ''; } // Retter newz.dk's buggede AJAX. $(".pagination a").each(function() { $(this).attr('href', href + '/page' + /#page(\d+)/.exec($(this).attr('href'))[1]); }); // SNES_fixTitle(); SNES_insertLoadingGif(); SNES_fixPosts(); if (location.hash.length > 1) { location.hash = location.hash; history.replaceState({page: _pageId}, '', location.href); } $("#sortRating").attr('disabled', false).text('Sorter indlæg efter rating'); } } if (options.data) { // fixPosts() af det indsendte indlæg. (Der SKAL bruges options.data, da det er POST!) // samt // fixPosts() efter den løbende AJAX-indhentning af nye indlæg. if ((options.data.match('class=Z4_Forum_Item&action=usersave') !== null) || (options.url.match('class=Z4_Forum_Item&action=new') !== null)) { var a = $('#comments > div:last'); if ($.trim(a.text()) != '') SNES_fixPosts(a); } // fixPosts() af Preview. (Slået fra, når man opretter en tråd.) if ((options.data.match('class=Z4_Forum_Item&action=preview') !== null) && (location.href.indexOf('/opret') == -1)) { SNES_fixPosts($('#post_preview .content'), false, true); $("#SNES_button_edit").focus(); // Hører til fiks af resize af kommentarfeltet efter Preview } // fixPosts() af indlæg efter endt redigering (rettelse) if (options.data.match('class=Z4_Forum_Item&action=edit') !== null) SNES_fixPosts($('#post' + /&id=(\d+)&/.exec(options.data)[1]), true); // Efter tryk på "Ret indlæg" og indlægget er hentet og forberedt. if (options.data.match('class=Z4_Forum_Item&action=getRaw') !== null && options.data.match('&jstimestamp') !== null) { SNES_fixToolbar(); } // TAG: "SNES_flashFavicon() #2" // Starter SNES_flashFavicon(), som blinker favicon, når der er ulæste tråde i /forum efter den 30-sekunders opdatering if (updateFaviconOnNewPosts && options.data.match('class=Z4_Forum_Thread&action=mine') !== null) { if ($('.unread', $('
    ').html($("Response", xhr.responseXML).text())).length > 0) { if (updateFaviconOnNewPostsBlink) { clearInterval(SNES_flashFaviconCounter); SNES_flashFaviconCounter = setInterval('SNES_flashFavicon()', 1000); } else { $('link[type="image/x-icon"]').remove(); $('head').append($('')); } } else { clearInterval(SNES_flashFaviconCounter); $('link[type="image/x-icon"]').remove(); $('head').append($('')); } } } }); $(document).ajaxStop(function() { if (SNES_postSortByRating) { SNES_postSortByRating = false; var point = new Array(); point[1] = 2; point[2] = 1; point[4] = 1; point[3] = 0; point[5] = 0; point[6] = -1; point[7] = -2; var el = $('#comments'); var list = $('.comment'); var rating = new Array(); $('.comment').each(function() { var p = 0; $(this).find('.comment_rating_details tbody tr').each(function() { p += point[+this.id.substr(7)] }); $(this).find('.rating_name').append(' (' + p + ')'); rating[this.id] = p; }); list.sort(function(a, b) { return (rating[a.id] == rating[b.id]) ? 0 : ((rating[a.id] < rating[b.id]) ? 1 : -1); }); el.append(list); $('.comment').each(function() { if ($(this).find('.comment_rating_details').css('display') != 'none') $(this).find('.information').click(); }); } }); $(window).bind('hashchange', function() { var a = +location.hash.substr(1); // Indlægget befinder sig på en anden side if (!isNaN(a) && (a > 0) && (a <= 50 * (_lastPage - 1) + 50) && ((a <= 50 * (_pageId - 1)) || (a > 50 * (_pageId - 1) + 50))) { // Hopper til top, så brugeren ved, at der skiftes side $(window).scrollTop(0); var href = SNES_getUrl(); SNES_startHash = ''; var p = Math.ceil(a / _pageSize); history.replaceState({page: p}, '', href + '/page' + p + '#' + a); SNES_fetchPage(p, 2, a); } }); window.onpopstate = function(e) { var a = e.state; if (a == null) history.replaceState({page: window._pageId}, '', location.href); else { if (a.page == _pageId) return; SNES_fetchPage(a.page, 3); } }; // Fix af "Sorter indlæg efter rating", så den finder det nyeste indlæg det rigtige sted. if (typeof GetLastPostId != "undefined") { OldGetLastPostId = GetLastPostId; GetLastPostId = function() { if ($("#sortRating").text() == "* POOF *") { var maxid = 0; $(".comment").each(function() { var id = this.id.substr(4); if (id > maxid) maxid = id; }); return maxid; } else return OldGetLastPostId(); } } // Gemmer de sidste fem indlæg // Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den. // Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit). $("#id_commentpost").unbind().attr('id', 'id_commentpost2').bind("click", function(e) { e.preventDefault(); var a = $("#id_comment").val(); if ($.trim(a).length > 1) { for (var i = 5; i > 1; i--) { localStorage['commentHistory' + i] = function(v) { var r = localStorage['commentHistory' + v]; return (r == null) ? '' : r; }(i - 1); } localStorage['commentHistory1'] = a; } SNES_updateCommentList(); SubmitPost(true); return false; }); // Indholdet af kommentarfeltet gemmes løbende, så det kan gendannes. Feltet til skrivning af trådbrødtekst er også inkluderet. $("#id_comment,#id_forumcontent").keyup(function() { var a = $("#id_comment,#id_forumcontent").val(); if ($.trim(a).length > 1) { localStorage['commentHistory0'] = a; a = Encoder.htmlEncode(a); var l = a.length; if (l > 119) a = a.substr(0, 60) + ' [...] ' + a.substr(l - 60, l - 60); $('#commentStorage select option[value=0]').html(a); } }); // Indstillinger til den nye toolbar. Se SNES_fixToolbar(). toolbarSettings = { markupSet: [ {name:'[b]fed tekst[/b]', key:'B', openWith:'[b]', closeWith:'[/b]'}, {name:'[i]kursiv tekst[/i]', key:'I', openWith:'[i]', closeWith:'[/i]'}, {name:'[u]understreget tekst[/u]', key:'U', openWith:'[u]', closeWith:'[/u]'}, {name:'[s]gennemstreget tekst[/s]', key:'S', openWith:'[s]', closeWith:'[/s]'}, {separator:'---------------' }, {name:'Punktopstilling', openWith:'[list]\n', closeWith:'\n[/list]'}, {name:'Numerisk liste', openWith:'[list=1]\n', closeWith:'\n[/list]'}, {name:'Listeelement', openWith:'[li]', closeWith:'[/li]'}, {separator:'---------------' }, { name:"[url=http://newz.dk/]newz.dk[/url]", openWith: '[url=', replaceWith: function(e) { SNES_selstart = 0, SNES_selend = 0; if (e.selection.substr(0, 7) == 'http://' || e.selection.substr(0, 8) == 'https://') { SNES_selstart = e.textarea.selectionStart + e.selection.length + 6; SNES_selend = e.textarea.selectionEnd + e.selection.length + 6; return e.selection + ']' + e.selection; } else { SNES_selstart = e.textarea.selectionStart + 5; SNES_selend = e.textarea.selectionEnd + 12; return 'http://' + e.selection + ']' + e.selection; } }, closeWith: '[/url]', afterInsert: function(e) { e.textarea.setSelectionRange(SNES_selstart, SNES_selend); e.textarea.focus(); return false; } }, {separator:'---------------' }, {name:'[code]kode[/code]', openWith:'[code]', closeWith:'[/code]'}, { name:'[quote]citat[/quote]', openWith: '[quote', replaceWith: function(e) { var quotewho = prompt("Skriv venligst et navn eller en URL til der hvor quotet er fra") || ''; SNES_selstart2 = 0, SNES_selend2 = 0; SNES_selstart2 = e.textarea.selectionStart + 7 + (quotewho.length > 0 ? 1 + quotewho.length : 0); SNES_selend2 = e.textarea.selectionEnd + 7 + (quotewho.length > 0 ? 1 + quotewho.length : 0); return (quotewho.length > 0 ? "=" + quotewho : "") + "]" + e.selection; }, closeWith: '[/quote]', afterInsert: function(e) { e.textarea.setSelectionRange(SNES_selstart2, SNES_selend2); e.textarea.focus(); return false; } } ] } // Resizer kommentarfeltet, når der trykkes på Rediger (inde i Preview) // Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den. // Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit). $("#button_edit").unbind().attr('id', 'SNES_button_edit').bind("click", function(e) { // Original newz.dk-kode $("#post_preview").hide(); $("#post_form").show(); StartAutoUpdate(); // SNES' tilføjelse $('#id_comment').keyup(); // Original newz.dk-kode e.preventDefault(); return false; }); /* // Virker ikke, da den bindes FØR de andre funktioner, så kommentarfeltet resizes, INDEN indhold tilføjes. // Kommentarfeltet resizes, når $('.comment_left .toolbar').delegate('a', 'click', function() { $(domain).keyup(); }); */ // SNES_ajaxPageChange(); SNES_updateSettingsSub(); SNES_fixToolbar(); // Til gemning af kommentarfeltet $('.markItUpHeader').append('
    '); SNES_updateCommentList(); // Fjerner også tråden fra listen over overvågede tråde, når man trykker på "Ignorer denne tråd" $('a[title="Ignorer denne tråd"]').unbind().click(function(e) { e.preventDefault(); var id = this.href.match(/\d+$/)[0]; $(this).replaceWith('
    '); var me = $('#SNES_ignorethread'); $.ajax({ url: '/forum/track/delete/' + id, success: function() { me.html('
    [✓] Fjernet fra listen over overvågede tråde'); }, error: function() { me.html('
    [X] Fjernelse fra listen over overvågede tråden fejlede'); }, complete: function() { $.ajax({ url: '/forum/ignore/add/' + id, success: function() { me.html(me.html() + '
    [✓] Tråd ignoreret'); }, error: function() { me.html(me.html() + '
    [X] Fjernelse fra listen over overvågede tråden fejlede'); }, }); } }); return false; }); // I store tråde ender man nogle gange (hvis den sidste side er på 50 indlæg) en side for langt if (window._pageId > window._lastPage) { var href = SNES_getUrl(); SNES_startHash = ''; $('#postcontainer').prepend('Hopper lige til den rigtige side...'); history.replaceState({page: _lastPage}, '', href + '/page' + _lastPage); SNES_fetchPage(_lastPage, 0); } else if (window._pageId) { SNES_fixTitle(); SNES_fixPosts(); if (location.hash.length > 1) history.replaceState({page: _pageId}, '', location.href); else { if (location.href.substr(-1) == '#') var href = location.href + 'new'; else var href = location.href + '#new'; history.replaceState({page: _pageId}, '', href); } location.hash = location.hash; history.replaceState({page: _pageId}, '', location.href); } // Smider genveje til underdomænernes fora ind. $('.links:first').before(''); } // Sørger for, at underindstillingerne bliver grå, når featuren er slået fra. function SNES_updateSettingsSub() { $('#addLinkToPostReferenceSub > input').attr('disabled', !$('#addLinkToPostReference').attr('checked')); $('#showPostOnMouseOverReferenceSub input').attr('disabled', (!$('#showPostOnMouseOverReference').attr('checked') || !$('#addLinkToPostReference').attr('checked'))); $('#showUrlImagesSub input').attr('disabled', !$('#showUrlImages').attr('checked')); $('#embedYouTubeUrlsSub input').attr('disabled', !$('#embedYouTubeUrls').attr('checked')); $('#applyTargetBlankSub input').attr('disabled', !$('#applyTargetBlank').attr('checked')); $('#updateFaviconOnNewPostsSub input').attr('disabled', !$('#updateFaviconOnNewPosts').attr('checked')); } // Den nye BB-toolbar function SNES_fixToolbar() { $('.toolbar + textarea,.toolbar + div textarea').markItUp(toolbarSettings); $('.toolbar').remove(); } // Køres ved indlæsning, AJAX-sideskift, indsendelse af indlæg, ved den løbende AJAX-indhentning af nye indlæg, ved Preview og ved rettelse af indlæg function SNES_fixPosts(object, afterEdit, isPreview) { // Køres kun én per indlæg if (afterEdit !== true) { SNES_improvedQuote(object); SNES_addPermLink(object); SNES_fixPostTimes(object); //SNES_reportSpam(object); } // Forkorter links efter endt redigering (rettelse) for brugeren (altså, ændrer ikke i teksten), da det normalt gøres ved indsendelse af indlæg og når siden opdateres if (afterEdit === true) { $(object).linkShorten(); } // Køres kun én per indlæg (men også når indlægget er blevet rettet) SNES_addLinkToPostReferenceFunc(object, (isPreview === true)); SNES_urlToImg(object); SNES_urlToVid(object); SNES_fixFailTags(object); SNES_fixSpoilers(object); SNES_embedYouTubeUrlsFunc(object); SNES_applyTargetBlankFunc(object); } // Blinker favicon, når der er ulæste tråde i /forum efter den 30-sekunders opdatering // Startes fra "SNES_flashFavicon() #2" (TAG) function SNES_flashFavicon() { $('link[type="image/x-icon"]').remove(); (SNES_flashFaviconBoolean = !SNES_flashFaviconBoolean) ? $('head').append($('')) : $('head').append($('')); } // Advarsel: Tåler ikke at blive kørt flere gange for samme indlæg, men det burde ikke være noget problem endnu function SNES_reportSpam(object) { function _feedback(str) { spamobj.html(str); } function _report() { if (previousFound) { _feedback('[✓] Allerede rapporteret.'); } else { _feedback('Klargør rapport...'); $.ajax({ dataType: 'xml', url: "/z4/action.php", data: {"class":"Z4_Forum_Item", "action":"getRaw", "id":postId}, success: function (xml) { _feedback('Rapporterer indlæg...'); var text = encodeURIComponent("Automatisk spamrapport.\n[url=" + userLink + "]Brugernavn: " + userName + "[/url]\nURL: " + postLink + "\n\nEksempel på spam:\n[quote]" + $.trim($("Response", xml).text().replace("\n\n\n\n", "\n\n").replace(/www\./gmi, '').replace(/https?:\/\//gmi, '').replace(/\[url=.+?\]/gm, '').replace(/\[\/url\]/gm, '')) + "[/quote]"); $.ajax({ dataType: 'xml', url: "/z4/action.php", data: {"action":"usersave", "class":"Z4_Forum_Item", "thread_id":119686, "lastId":99999999999999999, "comment":text}, // Jeg har byttet om på action og class (rækkefølgen), så fixPosts() ikke køres. Skide smart, Daniel. success: function (xml) { _feedback('[✓] Rapporteret. Tak.'); }, error: function() { _feedback('[X] Kunne ikke rapportere indlæg.'); } }); }, error: function() { _feedback('[X] Kunne ikke hente indlæg.'); } }); } } $('.comment_rating li:first-child', object).before('
  • Rapportér spam
  • '); $('.reportSpam', object).bind('click', function(e) { e.preventDefault(); if (confirm("Er du sikker på, at dette er spam, som skal rapporteres? Du ender med selv at spamme, hvis dette ikke er spam.")) { spamobj = $(this); postParent = spamobj.parents('.comment').find('h2'); userLink = $('a:last', postParent)[0].href.replace('%7E', '~'); userName = $('a:last', postParent).text(); postId = $('a:nth-child(2)', postParent).attr('name').substr(2); postLink = $('a:nth-child(3)', postParent).attr('href'); previousFound = false; // Tjekker tråden for at se, om indlægget allerede er rapporteret. spamobj.html('Tjekker om allerede rapporteret...').removeAttr("href").unbind(); $.ajax({ url: '/forum/newz-dk/spamrapporteringstraaden-119686', success: function(response) { thread = $('' + response); if ($('.comment a[href="'+postLink+'"]', thread).length > 0) previousFound = true; if (previousFound === false && $('.comment', thread).length < 15) { _feedback('Tjekker om allerede rapporteret... (2)') var p = +/var _pageId = (\d+)/.exec(response)[1]; $.ajax({ url: '/forum/newz-dk/spamrapporteringstraaden-119686/page' + (p-1), success: function(response2) { var thread2 = $('' + response2); if ($('.comment a[href="'+postLink+'"]', thread2).length > 0) previousFound = true; _report(); }, error: function() { _feedback('[X] Kunne ikke nå spamlisten. (2)'); } }); } else _report(); }, error: function() { _feedback('[X] Kunne ikke nå spamlisten.'); } }); } return false; }); } function SNES_embedYouTubeUrlsFunc(object) { if (embedYouTubeUrls) { function ttotime(s) { s = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s?)?$/.exec(s); return (typeof s[1] === "undefined" ? 0 : +s[1])*3600 + (typeof s[2] === "undefined" ? 0 : +s[2])*60 + (typeof s[3] === "undefined" ? 0 : +s[3]); } var count = 0, countmax = embedYouTubeUrlsCount; if (embedYouTubeUrlsNewOnly && object == undefined) { var a = $('.comments_new'); if (a.length > 0) { object = a.nextAll(); countmax = 0; } } $('.text_content a[href*="youtu"]', object).reverse().each(function() { var w = parseInt($(this).parent().css('width')); var res = /(?:youtu\.be\/|youtube\.com\/watch\?.*v=)(.{11})/gmi.exec(this.href); if (typeof this.href !== 'undefined' && res != null && (!embedYouTubeUrlsNotInQuote || (embedYouTubeUrlsNotInQuote && w === 381))) { var q = ''; var t = 0; if (this.hash.length > 1 && (q = splitquery(this.hash))) { if (typeof q.t !== "undefined") t = ttotime(q.t); else if (typeof q.at !== "undefined") t = ttotime(q.at); } if (t === 0 && this.search.length > 1 && (q = splitquery(this.search)) && (typeof q.t !== "undefined")) t = ttotime(q.t); $(this).replaceWith(''.replace(/&/gm, '&')); if (countmax > 0 && ++count >= countmax) return false; } }); } } function SNES_fixSpoilers(object) { $('.spoiler', object).remove(); // Skal omdøbes, så den originale bind ikke kommer på. Hvis den allerede er på, sørger unbind() for at fjerne den. // Rækkefølgen af scripts er ikke altid den samme (tak for lort, HTML5, IE og Webkit). $('.open_spoiler', object).unbind().attr('class', 'SNES_open_spoiler').click(function(e) { e.preventDefault(); if (/^(?:http:\/\/|www\.)[^\^!\(\)\[\]{} ]+$/i.test(this.id)) { var parent = $(this).parents('.comment'); $(this).replaceWith(''+$('').linkShorten().find('a').text()+''); SNES_urlToImg(parent); } else $(this).replaceWith(Encoder.htmlEncode(this.id)); return false; }) } function SNES_fixPostTimes(object) { try { var weekday = new Array(7); weekday[0] = "Søn. "; weekday[1] = "Man. "; weekday[2] = "Tir. "; weekday[3] = "Ons. "; weekday[4] = "Tor. "; weekday[5] = "Fre. "; weekday[6] = "Lør. "; var a = $('.comment_date:contains("min siden")', object); var b = $('.comment_date:contains("sek siden")', object); var c = $('.comment_date:contains("nu")', object); var d = $('.comment_date:contains("i dag"):not(:contains("."))', object); var q = $('.comment_date:not(:contains("i dag")):not(:contains("nu")):not(:contains("sek siden")):not(:contains("min siden"))', object); d.each(function() { var e = $(this); var dat = new Date(); e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (i dag)'); }); q.each(function() { var e = $(this); var m = {'jan':0,'feb':1,'mar':2,'apr':3,'maj':4,'jun':5,'jul':6,'aug':7,'sep':8,'okt':9,'nov':10,'dec':11}; var s = /(\d+)\. ([a-z]+)\.? (\d+) (\d+):(\d+)/.exec(e.attr('title')); var dat = new Date(s[3], m[s[2]], s[1], s[4], s[5], 0, 0); e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title')); }); if (b.length > 0 || c.length > 0) var l = 980; else if (a.length > 0) var l = 1000 * (61 - (new Date()).getSeconds()); // Så starter den altid, når klokken slår et nyt minut. else return; c.each(function() { var e = $(this); var dat = new Date(); e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (1 sek siden)'); }); b.each(function() { var e = $(this); var s = +e.html().match(/(\d+) sek siden/)[1] + 1; var dat = new Date(); if (s >= 60) $(this).html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (1 min siden)'); else $(this).html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (' + s + ' sek siden)'); }); a.each(function() { var e = $(this); var m = {'jan':0,'feb':1,'mar':2,'apr':3,'maj':4,'jun':5,'jul':6,'aug':7,'sep':8,'okt':9,'nov':10,'dec':11}; var s = /(\d+)\. ([a-z]+)\.? (\d+) (\d+):(\d+)/.exec(e.attr('title')); var dat = new Date(s[3], m[s[2]], s[1], s[4], s[5], 0, 0); var v = Math.round(((new Date()) - dat)/(60000)); if (v >= 60) e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (i dag)'); else e.html(weekday[dat.getDay()] + 'd. ' + e.attr('title') + ' (' + v + ' min siden)'); }); } catch(wejrhewhigrissldghdkguhsfdkguifhdugifhdgfdhigfd) { } clearTimeout(SNES_fixPostTimesCounter); SNES_fixPostTimesCounter = setTimeout("SNES_fixPostTimes()", l); } function SNES_applyTargetBlankFunc(object) { if (applyTargetBlank) { if (applyTargetBlankOnlyOutgoing) { var href = location.protocol + "//" + location.hostname + "/"; $('a:not([href^="#"])', object).filter(function() { return (this.href.substring(0, href.length) != href); }).attr('target', '_blank'); } else { $('a:not([href^="#"])', object).attr('target', '_blank'); } } } function SNES_fixFailTags(object) { if (fixFailTagsSetting) { var a = ['b', 'u', 'i', 's' ]; var b = {'b': 'strong>', 'u': 'u>', 'i': 'em>', 's': 's>'}; $('.text_content', object).each(function() { var e = $(this); for (i in a) { var x = e.html().indexOf('[' + a[i] + ']'); if (x !== -1) { e.html(e.html().substr(0, x) + e.html().substr(x).replace(new RegExp('<(\/)?' + b[a[i]], 'g'), '').replace(new RegExp('\\[' + a[i] + '\\]', 'g'), ' 0) { object = a.nextAll(); countmax = 0; } } $('.text_content a:not([href^="#"])', object).reverse().each(function() { var w = parseInt($(this).parent().css('width')); if (/\.(png|gif|jp(e)?g)(\?.*)?$/i.test(this.href) && $(this).attr('data') === undefined && (!showUrlImagesNotInQuote || (showUrlImagesNotInQuote && w === 381))) { var e = $(this); var b = this.href; var c = e.text().replace(/"/gm, '"'); if (b == c) var c = $('').linkShorten().find('a').text(); e.replaceWith(''+c+''); if (countmax > 0 && ++count >= countmax) return false; } }); } } function SNES_urlToVid(object) { if (showUrlVideos) { $('.text_content a:not([href^="#"])', object).each(function() { var reg; if (reg = /\.(og(?:g|v|a|x)|spx|mp4)$/i.exec(this.href)) $(this).replaceWith(''); }); } } function SNES_addLinkToPostReferenceFunc(object, isPreview) { if (addLinkToPostReference) { $('.text_content p:contains("#")', object).each(function() { if (isPreview) { var postNum = $('h2 a:first', '.comment:not([id=]):last').attr('name'); var p = 'post_preview'; } else { var postNum = $(this).parents('.comment').find('h2 a:first').attr('name'); var p = $(this).parents('.comment').attr('id'); } $(this.childNodes).each(function() { if (this.nodeType == 3) { // #tal efterfulgt af enten mellemrum, linjeknæk, kolon, komma, punktum, apostrof, skråstreg, plus, spørgsmålstegn, udråbstegn eller parentes-slut samt ved afsluttet afsnit eller linje $(this).replaceWith(this.nodeValue.replace(/#(\d+)( |
    |:|,|\.|'|\/|\+|\?|!|\)|<\/p>|$)/gm, function(str, a, b) { if (a < 100 && _pageId > 20) { // Fra indlæg #1001 vil #99 betyde #999 osv. c = Math.floor((50 * (_pageId - 1)) / 100) * 100 + +a; if (c > postNum) c -= 100; } else c = +a; if (a == 0 || (c == postNum && p != 'post_preview')) return '#' + a + b; var him = $('.comment:has(a[name=' + c + '])').attr('id'); return ' 50 * (_pageId - 1)) && (c <= 50 * (_pageId - 1) + 50))) ? ' onclick="SNES_goToPost(\'' + him + '\')" onmouseout="SNES_hidePost();" onmouseover="SNES_showPost(\'' + p + '\', \'' + him + '\')"' : '') + ' href="#' + c + '">#' + a + '' + b; }).replace(/&/gm, '&')); } }); }); } } function SNES_showPost(me, him) { var q = $("#" + him).clone().attr('id', '').addClass("SNES_cite").prependTo('#comments'); if (showPostOnMouseOverReferenceMini) q.find('.comment_right').remove(); } function SNES_hidePost() { $('.SNES_cite').remove(); } function SNES_goToPost(him) { SNES_hidePost(); } function SNES_addPermLink(object) { href = SNES_getUrl(); $('h2', object).each(function() { var a = $(this).html(); a = a.replace(/#(\d+):/, '#$1:') $(this).html(a); }); } // Advarsel: Tåler ikke at blive kørt flere gange for samme indlæg, men det burde ikke være noget problem endnu // Sætter event handler på "Citer indlæg" - Sakset direkte fra newz.dk med vigtige ændringer. Jeg har ladet mine kommentarer fra newz.dk's script lade blive. function SNES_improvedQuote(object) { // Laver citeringslinjen om, så den indeholder "citer indlæg, nummer, svar". $('.quoteitem', object).parent().html('Citer indlæg | nummer'); $('.text_content', object).filter(function() { var a = $(this).children(); return($('>blockquote', this).length === 1 && a[1].tagName === 'BLOCKQUOTE' && a[0].tagName === 'P' && $(a[0]).text() === ''); }).each(function() { var a = $('.SNES_quoteitem', $(this).parents('.comment')).parent(); a.html(a.html() + ' | svar'); }); // "svar"-citering $('.responsequote', object).click(function(e) { e.preventDefault(); // Hvis dette ligner noget kode fra newz.dk, så er det, fordi det er. Der er lige en enkelt tilføjelse. // Finder indlæggets id (ikke nummer) var $post = $(this).parents(".comment"); var postId = $post.attr("id").substring(4); // Finder indlæggets nummer (ikke id) var itemId = $post.find("h2 a").attr("name"); // Finder indlæggets ejermand var username = $post.find("h2 a:last").html(); // Hvis den ikke kunne findes, prøv et andet sted (dunno hvor) if (!username) { username = $post.find('.right_box a:last').html(); } $.get("/z4/action.php", {"class":"Z4_Forum_Item", "action":"getRaw", "id":postId}, function(xml) { var text = $.trim($("Response", xml).text()).replace(/\[quote(?:.|\n)*\[\/quote\]/, ''); // Fjerner flere end ét efter hinanden følgende linjeknæk text = $.trim(text.replace("\n\n\n\n", "\n\n")); // Finder kommentarfeltet og indsætter et linjeknæk før det citerede indlæg, hvis feltet ikke er tomt var comment = $("#id_comment").val(); if (comment.length > 0) { comment += "\n\n"; } // Sætter indlægget ind i en quote, som vi kender den comment += "[quote=" + username + " (" + itemId + ")]" + text + "[/quote]" + "\n\n"; $("#id_comment").val(comment); $('#id_comment').keyup(); }, "xml"); $('#id_comment').keyup(); return false; }); // "nummer"-citering $('.miniquote', object).click(function(e) { e.preventDefault(); // Hvis dette ligner noget kode fra newz.dk, så er det, fordi det er. var comment = $("#id_comment").val(); if (comment.length > 0) { comment += "\n\n"; } comment += "#" + $(this).parents(".comment").find("h2 a").attr("name") + "\n"; $("#id_comment").val(comment); $('#id_comment').keyup(); return false; }); // Almindelig citering med SNES' forbedring, hvis slået til $(".SNES_quoteitem", object).click(function(e) { e.preventDefault(); // Finder indlæggets id (ikke nummer) var $post = $(this).parents(".comment"); var postId = $post.attr("id").substring(4); // Finder indlæggets nummer (ikke id) var itemId = $post.find("h2 a").attr("name"); // Finder indlæggets ejermand var username = $post.find("h2 a:last").html(); // Hvis den ikke kunne findes, prøv et andet sted (dunno hvor) if (!username) { username = $post.find('.right_box a:last').html(); } // Bliver false, hvis improvedQuoteSetting eller den originale synes, at den sagtens kan klare markeringen var hentFraServer = true; // Jeg bruger ikke document.selection, som andre browsere (IE, gammel IE, Opera?) bruger, så det må du ordne, m910q. // Checker, om markeringen er inden for indlæggets tekst. Virker i Firefox og Chrome. if (improvedQuoteSetting) { if ((getSelection().rangeCount > 0) && ($(getSelection().getRangeAt(0).commonAncestorContainer).parents('#' + $post.attr("id")).length > 0)) { // Dette kan sikkert reduceres til noget pænere... var container = document.createElement("div"); container.appendChild(getSelection().getRangeAt(0).cloneContents()); var text = container.innerHTML; if (text != '') { hentFraServer = false; function parse(givenQuotePos) { function parseTag(tag) { // tag = '' (u.s.w. med attr'erne) // eller '' var tagmatch = /^<([a-z]+)>/.exec(tag); // Har attr, else har ikke if (tagmatch == null) { var tag2 = tag.substr(tag.indexOf(' ') + 1).substr(0, tag.length - 1), regmatch, tagattrs = {}, tagreg = /([^= ]+)="([^"]+)"/g; while (regmatch = tagreg.exec(tag2)) { tagattrs[regmatch[1]] = regmatch[2]; } return { tag: /^<([a-z]+) /.exec(tag)[1], attr: tagattrs } } else { return { tag: tagmatch[1], attr: null } } } if (typeof givenQuotePos === 'undefined') givenQuotePos = -1; while (true) { // Hvis nået slutningen if (i >= len) return; s = text.substr(i); l = s.indexOf('<'); // Hvis løbet tør for HTML if (l === -1) { t += s; return; } t += text.substr(i, l); i += s.indexOf('>') + 1; // Hvis nået et end-tag, else hvis nået et start-tag if (s.substr(l + 1, 1) === '/') { if (givenQuotePos === -1) return; else return false; } else { var obj = parseTag(s.substr(l, s.indexOf('>') + 1)); switch (obj.tag) { case 'strong': t += '[b]'; parse(); t += '[/b]' break; case 'u': t += '[u]'; parse(); t += '[/u]' break; case 'em': t += '[i]'; parse(); t += '[/i]' break; case 's': t += '[s]'; parse(); t += '[/s]' break; case 'code': t += '[code]'; parse(); t += '[/code]' break; case 'ul': t += '[list]'; parse(); t += '[/list]' break; case 'li': t += '[li]'; parse(); t += '[/li]' break; case 'a': switch (obj.attr.data) { case 'SNES_img': s = $('').linkShorten().find('a').text(); if (s === obj.attr.title || s.substr(7) === obj.attr.title) t += obj.attr.href; else t += '[url=' + obj.attr.href + ']' + obj.attr.title + '[/url]'; i += 4; break; case 'SNES_ref': t += obj.attr.href; i += text.substr(i).indexOf('>') + 1; break; default: l = s.indexOf(''+obj.attr.href+'
    ').linkShorten().find('a').text(), tmp2 = s.substring(s.indexOf('>') + 1, l); // a uden [url], else a med [url] if (s.substr(l, 4) === '' && (tmp1 === tmp2 || tmp1.substr(7) === tmp2)) { t += obj.attr.href; i += text.substr(i).indexOf('') + 4; } else { t += '[url=' + obj.attr.href + ']'; parse(); t += '[/url]'; } break; } break; case 'blockquote': t += '[quote'; var quotePos = t.length; if (parse(t.length) === false) { t = t.substr(0, quotePos) + ']' + t.substr(quotePos); } t += '[/quote]'; break; case 'cite': if (givenQuotePos === -1) { i += text.substr(i).indexOf('') + 7; break; } s = text.substr(i); var rem = s.match(/^([^<]+)<\/a><\/cite>/); // Ingen kilde, else kilde/#-reference if (rem === null) { s = /([^<]+)') + 7; givenQuotePos = -1; break; case 'iframe': t += obj.attr.data; i += text.substr(i).indexOf('') + 9; break; default: console.log('SNES: Parse fejlede. Data:'); console.log(obj); return; } } } } text = text.replace(/<\/p>

    /g, '\n\n').replace(/

    <\/p>/g, '\n').replace(/<\/p>|

    /g, '').replace(/]+>/g, '').replace(/
    /g, '\n'); var t = '', s = '', i = 0, l = 0, len = text.length; if (text.indexOf('

  • ') === 0) { t = '[list]'; parse(); t += '[/list]'; } else parse(); text = t; // Entity decode text = $.trim(Encoder.htmlDecode(text)); // Finder kommentarfeltet og indsætter et linjeknæk før det citerede indlæg, hvis feltet ikke er tomt var comment = $("#id_comment").val(); if (comment.length > 0) { comment += "\n\n"; } // Sætter indlægget ind i en quote, som vi kender den comment += "[quote=" + username + " (" + itemId + ")]" + text + "[/quote]" + "\n\n"; $("#id_comment").val(comment); } } } else { // Finder ud af, om der er noget, som er markeret try { if (typeof (getSelection) != 'undefined') { var select_string = getSelection(); } else if (document.selection) { var select_string = document.selection.createRange().text; } else { var select_string = ''; } } catch(e) { var select_string = ''; } // Læg venligst mærke til, at konvertering til [b] og deslige er udeladt (WTF) var posttext = $post.find('.comment_content').html(); posttext = posttext.replace(/\<\/p\>\/g, "\n\n"); posttext = posttext.replace(/\/g, "\n"); posttext = posttext.replace(/\/g, "\n"); posttext = posttext.replace(/\/g, "\n"); posttext = posttext.replace(/\<([a-z]+)\>/g, ""); posttext = posttext.replace(/\<\/([a-z]+)\>/g, ""); if (select_string != '' && posttext.indexOf(select_string) == -1) { select_string = ''; } if (select_string != '') { hentFraServer = false; var comment = $("#id_comment").val(); if (comment.length > 0) { comment+="\n\n"; } comment += "[quote=" + username + " (" + itemId + ")]" + select_string + "[/quote]" + "\n\n"; $("#id_comment").val(comment); } } if (hentFraServer) { $.get("/z4/action.php", {"class":"Z4_Forum_Item", "action":"getRaw", "id":postId}, function(xml) { var text = $.trim($("Response", xml).text()); // Fjerner flere end ét efter hinanden følgende linjeknæk text = $.trim(text.replace("\n\n\n\n", "\n\n")); // Finder kommentarfeltet og indsætter et linjeknæk før det citerede indlæg, hvis feltet ikke er tomt var comment = $("#id_comment").val(); if (comment.length > 0) { comment += "\n\n"; } // Sætter indlægget ind i en quote, som vi kender den comment += "[quote=" + username + " (" + itemId + ")]" + text + "[/quote]" + "\n\n"; $("#id_comment").val(comment); $('#id_comment').keyup(); } , "xml"); } $('#id_comment').keyup(); return false; }); } function SNES_updateCommentList() { $('#commentStorage').empty(); var a = $('