您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fügt auf auf Letterboxing Germany eine Merker-Spalte hinzu.
// ==UserScript== // @name LetterboxMarker // @namespace http://dosensuche.de // @description Fügt auf auf Letterboxing Germany eine Merker-Spalte hinzu. // @include http://*michael-wilhelm.info/forum/viewforum.php* // @include http://*michael-wilhelm.info/lbg_forum/* // @include http://*letterboxing-germany.info/lbg_forum/* // @grant GM_getValue // @grant GM_setValue // @grant GM_listValues // @version 2015.3.1 // ==/UserScript== var markerValues=new Array("","gefunden","vorgemerkt","ignoriert"); var ignoreForums=new Array(1,7,15,8,9,10,11,12,29,31); var bs=document.getElementsByTagName("th"); var themen=null; for(var i=0;i<bs.length;i++) { if(bs[i].firstChild && bs[i].firstChild.data && bs[i].firstChild.data.substr(1,6)=="Themen") { themen=bs[i].parentNode; } } if(!themen) { log("unbekanntes/unpassendes HTML"); } else { var url=document.URL; var reForum=/viewforum\.php\?f=(\d+)/; reForum.exec(url); var forum=RegExp.$1; var ignore=false; for(var i=0;i<ignoreForums.length;i++) { if(ignoreForums[i]==forum) ignore=true; } if(!ignore) displayMarkers(); } function displayMarkers() { var trs=themen.parentNode.getElementsByTagName("tr"); var themenseen=false; for(var i=0;i<trs.length-1;i++) { if(trs[i]==themen) {themenseen=true;} else if(themenseen==true) { var tds=trs[i].getElementsByTagName("td"); if(!tds || tds.length<2) continue; var as=tds[1].getElementsByTagName("a"); var topiclink=null; for(var j=0;j<as.length;j++) { var classString=as[j].getAttribute("class"); if(classString=="topictitle link-new" || classString=="topictitle") topicLink=as[j].getAttribute("href"); } var regexp=/viewtopic\.php\?f=(\d+)&t=(\d+)/; regexp.exec(topicLink); var topic=RegExp.$2; var newCell=tds[0].cloneNode(false); newCell.appendChild(getMarker(topic)); tds[0].parentNode.appendChild(newCell); } } trs[trs.length-1].getElementsByTagName("td")[0].setAttribute("colspan","7"); trs[trs.length-1].id="letterboxmarker_lastrow"; trs[1].id="letterboxmarker_firstrow"; var headerCell=themen.getElementsByTagName("th")[0].cloneNode(false); var title=document.createElement("b"); var titletext=document.createTextNode("LetterboxMarker"); title.appendChild(titletext); title.setAttribute("class","gensmall"); title.setAttribute("font-size","smaller"); var titlespan=document.createElement("span"); titlespan.addEventListener("click",insertStoreControl,false); titlespan.appendChild(title); headerCell.appendChild(titlespan); headerCell.setAttribute("colspan","1"); // themen.parentNode.insertBefore(headerCell,themen); themen.appendChild(headerCell); } function getMarker(topic) { var select=document.createElement("select"); var selected=getStoredMarker(topic); for(var i=0;i<markerValues.length;i++) { var option=document.createElement("option"); option.setAttribute("value",i); if(i==selected) { option.setAttribute("selected","selected"); } option.appendChild(document.createTextNode(markerValues[i])); select.appendChild(option); } select.addEventListener("change",getEventHandler(topic),false); return select; } function getEventHandler(topic) { return function() { var val=this.value; setStoredMarker(topic,val); } } function getStoredMarker(topic) { var val=getValue(topic); if(!val) { val=0; } return val; } function setStoredMarker(topic, value) { // log(topic+"->"+value); if(value==0) { deleteValue(topic); } else { setValue(topic,value); } if(storeControlActive()) { document.getElementById("letterboxmarker_markerstring").setAttribute("value",getMarkerString()); } } function getMarkerString() { var string=""; var topics=listValues(); for(i in topics) { // log("top "+i+": "+topics[i]); var val=getStoredMarker(topics[i]); if(val!=0) { if(string.length>0) string+=";"; string+=topics[i]+":"+val; } } // log("markerstring "+string); return string; } function setMarkerString(string) { // log("setmarkerstring "+string); if(!string || string.length==0) return; // log("setmarkerstring1 "+string); var tops=string.split(";"); for (var i in tops) { var top=tops[i]; var re=/(\d+):(\d+)/; re.exec(top); var topic=RegExp.$1; var value=RegExp.$2; // log(topic+"->"+value); setStoredMarker(topic,value); } } function deleteStoredMarkers() { var topics=listValues(); for (topic in topics) { // log("del "+topics[topic]); var val=setStoredMarker(topics[topic],0); } } function storeControlActive() { return document.getElementById("letterboxmarker_storecontrol"); } function saveStore() { var val=document.getElementById("letterboxmarker_markerstring").value; if(document.getElementById("letterboxmarker_overwrite").checked && val) deleteStoredMarkers(); setMarkerString(val); window.location.reload(); } function insertStoreControl() { if(storeControlActive()) return; var lastrow=document.getElementById("letterboxmarker_lastrow"); var tr=lastrow.cloneNode(false);; tr.id="letterboxmarker_storecontrol"; var td=lastrow.getElementsByTagName("td")[0].cloneNode(false); td.setAttribute("colspan",7); tr.appendChild(td); var input=document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("size","50"); input.setAttribute("value",getMarkerString()); input.id="letterboxmarker_markerstring"; td.appendChild(input); var checkbox=document.createElement("input"); checkbox.setAttribute("type","checkbox"); checkbox.id="letterboxmarker_overwrite"; td.appendChild(checkbox); td.appendChild(document.createTextNode("\u00fcberschreiben")); var button=document.createElement("input"); button.setAttribute("type","button"); button.setAttribute("value","\u00fcbernehmen"); button.addEventListener("click",saveStore,false); td.appendChild(button); lastrow.parentNode.insertBefore(tr,document.getElementById("letterboxmarker_firstrow")); } function log(s) { if(typeof GM_log!="undefined") {GM_log(s);} else { opera.postError(s); } } function setValue(k,v,lifeTime) { if(typeof GM_setValue!="undefined") {GM_setValue(k,v);} else { if( lifeTime == "delete" ) { lifeTime = -10; } else { lifeTime = 31536000; } document.cookie = escape(k) + "=" + escape( v ) + ";expires=" + ( new Date( ( new Date() ).getTime() + ( 1000 * 31536000 ) ) ).toGMTString() + ";path=/"; } } function getValue(k) { if(typeof GM_getValue!="undefined") {return GM_getValue(k);} else { var cookieJar = document.cookie.split( "; " ); for( var x = 0; x < cookieJar.length; x++ ) { var oneCookie = cookieJar[x].split( "=" ); if( oneCookie[0] == escape(k) ) { try { eval('var footm = '+unescape( oneCookie[1] )); } catch(e) { return null; } return footm; } } return null; } } function deleteValue(k) { if(typeof GM_deleteValue!="undefined") {GM_deleteValue(k);} else { setValue( k, '', 'delete' ); } } function listValues() { if(typeof GM_listValues!="undefined") {return GM_listValues();} else { var cookieJar = document.cookie.split( "; " ); var arr=new Array(); // log("found "+cookieJar.length+" in "+document.cookie); for( var x = 0; x < cookieJar.length; x++ ) { var oneCookie = cookieJar[x].split( "=" ); var val=unescape(oneCookie[0]); if(!val.match(/\D/)) { // log(oneCookie[0]); arr.push(val); } } return arr; } }