Proxer-Userscript-Anker

Dieses Script fügt der Proxer-Navigation den Reiter "Tools" hinzu, an den Userscripte angedockt werden können

This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greatest.deepsurf.us/scripts/10320/79622/Proxer-Userscript-Anker.js

  1. // ==UserScript==
  2. // @name Proxer-Userscript-Anker
  3. // @namespace de.34749.proxer
  4. // @version 0.2.1
  5. // @description Dieses Script fügt der Proxer-Navigation den Reiter "Tools" hinzu, an den Userscripte angedockt werden können
  6. // @author Blue.Reaper
  7. // @history 0.2.1 alphabetische Sortierung, 'ankerTop' wird nur 1x erzeugt
  8. // ==/UserScript==
  9.  
  10. //Starte die Funktion "addAnker" beim Laden der Seite
  11. document.addEventListener('DOMContentLoaded', function(event) {
  12. addAnker();
  13. });
  14.  
  15. //Fügt den Button "Tools" zu "leftNav" hinzu
  16. var addAnker = function() {
  17. if (document.getElementById('ankerTop') === null) {
  18. var ul = document.getElementById("leftNav");
  19. var li = document.createElement("li");
  20. li.setAttribute("id","ankerTop");
  21. li.setAttribute("class","topmenu");
  22. ul.appendChild(li);
  23. document.getElementById('ankerTop').innerHTML = '<a href="javascript:;">Tools ▾</a><ul id="anker"></ul>';
  24. }
  25. };
  26.  
  27. //############################# Ab hier generische Klassen nicht ändern #############################
  28.  
  29. /* Fügt den Button zu "Anker" hinzu und startet die changefunktion beim Seitenaufruf
  30. 1.Parameter --> id des Members in der Menüleiste
  31. 2.Parameter --> Angezeigter Text des Members
  32. 3.Parameter --> Boolean: true -> mit Häckhen/Kreuz | false -> ohne Häckhen/Kreuz
  33. 4.Parameter --> Methode die bei Initialisierung und Änderung der Speichervariable aufgerufen wird (An/Aus)
  34. 5.Parameter --> Name der Speichervariable
  35. 6.Parameter --> Initalwert der Speichervariable
  36. */
  37. function addAnkerMember(id, name, withTick, changefunktion, memoryName, memoryDefault) {
  38. var test = setInterval(function () {
  39. // console.log('anker');
  40. if (document.getElementById('anker') !== null) {
  41. var ul = document.getElementById("anker");
  42. var li = document.createElement("li");
  43. li.setAttribute("id",id);
  44. // fügt das Member an der alphabetisch richtigen Stellein
  45. var i=0;
  46. // Wenn Zähler kleiner als Listenlänge und Name des Member größer (alphabetisch danach) als aktueller Listeneintrag, dann gehe weiter
  47. while(ul.childNodes.length > i && ul.childNodes[i].textContent < name){
  48. // console.log('Schleife - '+name+' - '+ul.childNodes[i].textContent+' < '+name+' = '+(ul.childNodes[i].textContent < name));
  49. i++;
  50. }
  51. // Setzt Member an richtige Stelle
  52. ul.insertBefore(li, ul.childNodes[i]);
  53. // Setzt den html-Inhalt des Members
  54. if(withTick){
  55. document.getElementById(id).innerHTML = '<a href="javascript:;">'+name+' <img id="'+id+'_img" src="" width="15" height="15"></a>';
  56. updateAnkerTick(id, memoryName, memoryDefault);
  57. }else{
  58. document.getElementById(id).innerHTML = '<a href="javascript:;">'+name+'</a>';
  59. }
  60. document.getElementById(id).addEventListener("click",function () {
  61. switchAnkerMemory(id, memoryName, memoryDefault, changefunktion);
  62. });
  63. changefunktion(false);
  64. clearInterval(test);
  65. }
  66. },100);
  67. };
  68.  
  69. // Troogelt den Speicherwert (0/1) und ruft die changefunktion auf
  70. function switchAnkerMemory(id, memoryName, memoryDefault, changefunktion) {
  71. if (GM_getValue(memoryName, memoryDefault) === 0) {
  72. GM_setValue(memoryName,1);
  73. } else {
  74. GM_setValue(memoryName,0);
  75. }
  76. changefunktion(true);
  77. updateAnkerTick(id, memoryName, memoryDefault);
  78. };
  79.  
  80. // Setzt den Hacken / Kreuz nach das Member
  81. function updateAnkerTick(id, memoryName, memoryDefault) {
  82. if (GM_getValue(memoryName, memoryDefault) === 0) {
  83. document.getElementById(id+'_img').src="https://proxer.me/images/misc/kreuz.png";
  84. } else {
  85. document.getElementById(id+'_img').src="https://proxer.me/images/misc/haken.png";
  86. }
  87. };