Write a note!

You can edit a note on all websites!

As of 2014-05-08. See the latest version.

  1. // ==UserScript==
  2. // @name Write a note!
  3. // @version 2.0
  4. // @description You can edit a note on all websites!
  5. // @match http://*/*
  6. // @match https://*/*
  7. // @copyright 2014+, ich01
  8. // @namespace https://greatest.deepsurf.us/scripts/92
  9. // @grant GM_registerMenuCommand
  10. // @grant GM_setValue
  11. // @grant GM_getValue
  12. // ==/UserScript==
  13. var uw = (this.unsafeWindow) ? this.unsafeWindow : window;
  14. uw.WriteANote = {
  15. langArray: [],
  16. pageURL: "",
  17. littleNote: false,
  18. init: function() {
  19. WriteANote.addGMMenuItem();
  20. WriteANote.initLittleNote();
  21. WriteANote.insertStyles();
  22. WriteANote.initLanguage();
  23. //Getting formatted url for localStorage saving
  24. var _url = document.location.toString();
  25. if (_url.indexOf("?")) {
  26. _url = _url.slice(0,_url.indexOf("?"));
  27. }
  28. WriteANote.pageURL=_url;
  29. WriteANote.checkForLittleNote();
  30. },
  31. addGMMenuItem: function() {
  32. GM_registerMenuCommand("Write A Note",function() {WriteANote.openPopup();});
  33. },
  34. initLanguage: function() {
  35. WriteANote.langArray[0] = "Your Note";
  36. WriteANote.langArray[1] = "Save";
  37. WriteANote.langArray[2] = "Delete";
  38. WriteANote.langArray[3] = "Settings";
  39. WriteANote.langArray[4] = "Your note was saved!";
  40. WriteANote.langArray[5] = "Your note was deleted!";
  41. WriteANote.langArray[6] = "Close";
  42. WriteANote.langArray[7] = "Enable little note in top-left page-corner";
  43. if (navigator.language.toString().toLowerCase().indexOf("de")>-1) {
  44. WriteANote.langArray[0] = "Deine Notiz";
  45. WriteANote.langArray[1] = "Speichern";
  46. WriteANote.langArray[2] = "Löschen";
  47. WriteANote.langArray[3] = "Einstellungen";
  48. WriteANote.langArray[4] = "Deine Notiz wurde gespeichert!";
  49. WriteANote.langArray[5] = "Deine Notiz wurde geloescht!";
  50. WriteANote.langArray[6] = "Schließen";
  51. WriteANote.langArray[7] = "Mini-Notiz in Ecke links-oben aktivieren";
  52. }
  53. },
  54. openPopup: function() {
  55. if (document.getElementsByTagName("writeanotepopup").length==0) {
  56. var xyElement = document.createElement("writeanotepopup");
  57. xyElement.style.position="fixed";
  58. xyElement.style.borderRadius="3px";
  59. xyElement.style.minWidth="500px";
  60. xyElement.style.minHeight="350px";
  61. var leftAbstand = (window.innerWidth-500)/2;
  62. var topAbstand = (window.innerHeight-350)/2;
  63. xyElement.style.left=leftAbstand+"px";
  64. xyElement.style.top=topAbstand+"px";
  65. xyElement.style.zIndex="9999999999999";
  66. xyElement.style.border="1px solid black";
  67. xyElement.style.backgroundColor="rgba(200,200,200,0.9)";
  68. xyElement.style.display="block";
  69. xyElement.style.overflow="scroll";
  70. xyElement.style.textAlign="left";
  71. xyElement.style.color="black";
  72. var string1 = "<span style='left:-1px;background:rgb(245,233,237);width:97%;margin-left:0px;position:absolute;padding:7px;font-family:Arial;font-size:16px;font-weight:bold;color:black;'>Write A Note!</span>";
  73. string1+="<span style='right:0px;position:absolute;cursor:pointer;top:0px;font-family:Arial;' onclick=WriteANote.closePopup();>"+WriteANote.langArray[6]+"</span>";
  74. string1+="<br><br><br>";
  75. string1+="<span style='background-color:rgba(118,105,199,0.7);color:black;font-weight:bold;font-family:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>"+WriteANote.langArray[0]+"</span><br>";
  76. string1+="<textarea id=writeanotetextarea placeholder='"+WriteANote.langArray[0]+"' rows=4 cols=45 style='font-family:Tahoma;color:black;border:1px solid rgb(140,250,106);'>"+WriteANote.getSavedNote()+"</textarea><br>";
  77. string1+="<table border=0 cellpadding=1 cellpadding=1><tr><td><button onclick=WriteANote.saveNote();>"+WriteANote.langArray[1]+"</button></td><td><button onclick=WriteANote.deleteNote();>"+WriteANote.langArray[2]+"</td></tr></table><br>";
  78. string1+="<span style='background-color:rgba(118,105,199,0.7);color:black;font-weight:bold;font-family:Arial;width:50%;border-radius:3px;padding:1px;position:absolute;'>"+WriteANote.langArray[3]+"</span><br>";
  79. var littleNoteChecked = "";
  80. if (WriteANote.littleNote==true) {
  81. littleNoteChecked = "checked";
  82. }
  83. string1+="<input type=checkbox onchange=WriteANote.gmChangeNoteStatus(); "+littleNoteChecked+">"+WriteANote.langArray[7]+"</input><br>";
  84. xyElement.innerHTML=string1;
  85. document.body.appendChild(xyElement);
  86. } else {
  87. document.getElementsByTagName("writeanotepopup")[0].style.display="block";
  88. }
  89. },
  90. saveNote: function() {
  91. var newNote = document.getElementById("writeanotetextarea").value;
  92. localStorage.setItem(WriteANote.pageURL+"_notf",newNote);
  93. alert(WriteANote.langArray[4]);
  94. },
  95. deleteNote: function() {
  96. localStorage.removeItem(WriteANote.pageURL+"_notf");
  97. document.getElementById("writeanotetextarea").value="";
  98. alert(WriteANote.langArray[5]);
  99. },
  100. getSavedNote: function() {
  101. if (localStorage.getItem(WriteANote.pageURL+"_notf")!=null) {
  102. return localStorage.getItem(WriteANote.pageURL+"_notf");
  103. } else {
  104. return "";
  105. }
  106. },
  107. closePopup: function() {
  108. if (document.getElementsByTagName("writeanotepopup").length==1) {
  109. document.getElementsByTagName("writeanotepopup")[0].outerHTML="";
  110. }
  111. },
  112. gmChangeNoteStatus: function() {
  113. if (WriteANote.littleNote==true) {
  114. WriteANote.gmDisableNote();
  115. } else {
  116. WriteANote.gmEnableNote();
  117. }
  118. },
  119. gmEnableNote: function() {
  120. setTimeout(function() {
  121. GM_setValue("littleNote", "true");
  122. }, 0);
  123. },
  124. gmDisableNote: function() {
  125. setTimeout(function() {
  126. GM_setValue("littleNote", "false");
  127. }, 0);
  128. },
  129. initLittleNote: function() {
  130. if (GM_getValue("littleNote")=="true") {
  131. WriteANote.littleNote = true;
  132. } else {
  133. WriteANote.littleNote = false;
  134. }
  135. },
  136. insertStyles: function() {
  137. var myStyle = document.createElement("style");
  138. myStyle.setAttribute("type", "text/css");
  139. document.getElementsByTagName("head")[0].appendChild(myStyle);
  140. var styles = document.styleSheets.length;
  141. myStyle = document.styleSheets[styles-1];
  142. if (document.styleSheets[0].cssRules) {
  143. myStyle.insertRule("writeanotelittle {font-family:Tahoma; font-size:0px; cursor:pointer; z-index:9999999999999; white-space:nowrap; text-align:left; color:black;transition:all 0.3s ease; overflow:hidden; width:10px; min-width:10px; min-height:10px; height:10px; background-color:yellow; position:fixed; top:0px; left:0px; text-overflow:ellipsis; opacity:0.8; border:1px solid black; border-radius:3px;}", 0);
  144. myStyle.insertRule("writeanotelittle:hover {font-size:14px; width:100px; height:20px;}", 0);
  145. } else {
  146. if (document.styleSheets[0].rules) {
  147. myStyle.addRule("writeanotelittle", "font-family:Tahoma; font-size:0px; cursor:pointer; z-index:9999999999999; white-space:nowrap; text-align:left; color:black; transition:all 0.3s ease; overflow:hidden; width:10px; min-width:10px; min-height:10px; height:10px; background-color:yellow; position:fixed; top:0px; left:0px; text-overflow:ellipsis; opacity:0.8; border:1px solid black; border-radius:3px;");
  148. myStyle.addRule("writeanotelittle:hover", "font-size:14px; width:100px; height:20px;");
  149. }
  150. }
  151. },
  152. checkForLittleNote: function() {
  153. if (WriteANote.littleNote==true) {
  154. var littleNote = document.createElement("writeanotelittle");
  155. littleNote.setAttribute("id","writeanotelittle");
  156. littleNote.setAttribute("onclick","WriteANote.openPopup();");
  157. document.body.appendChild(littleNote);
  158. document.getElementById("writeanotelittle").innerHTML=WriteANote.getSavedNote();
  159. }
  160. }
  161. };
  162. if (navigator.userAgent.toLowerCase().indexOf("firefox")>-1) {
  163. window.WriteANote = uw.WriteANote;
  164. console.log("Firefox detected. Compatibility mode enabled.");
  165. }
  166. WriteANote.init();