Proxer-Userscript-Anker

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

Tento skript by nemal byť nainštalovaný priamo. Je to knižnica pre ďalšie skripty, ktorú by mali používať cez meta príkaz // @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. };