VT Custom Mturk Tab Titles

Adds new settings to the very bottom of your Dashboard page that allow you to set tab titles for urls.

目前为 2014-09-16 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name VT Custom Mturk Tab Titles
  3. // @version 0.8001
  4. // @description Adds new settings to the very bottom of your Dashboard page that allow you to set tab titles for urls.
  5. // @author Cristo
  6. // @include https://www.mturk.com*
  7. // @grant GM_getValue
  8. // @grant GM_setValue
  9. // @copyright 2012+, You
  10. // @namespace https://greasyfork.org/users/1973
  11. // ==/UserScript==
  12.  
  13. //In the footer of the Dashboard page you'll find two new links "Add Title" and "Saved Title".
  14. //Click "Add Title"
  15. //Two boxes will appear and allow you to enter a new tab title for a URL.
  16. //You can add * to the end of any url to match all pages that start with what you entered.
  17. // * Example - https://www.mturk.com* will match all mturk urls but be overwritten by https://www.mturk.com/mturk/myhits
  18. //Clcik "Saved Title"
  19. //Shows all save titles.
  20. //Hover your mouse over a title to reveal the URL. URLs are highlighted automatically to make copying simple.
  21. //Click to delete.
  22.  
  23. var titles;
  24. var urls;
  25. var title = document.getElementsByTagName("title")[0];
  26.  
  27. if (GM_getValue("titlelist") == undefined) {
  28. titles = [];
  29. urls = [];
  30. } else {
  31. titles = GM_getValue("titlelist");
  32. urls = GM_getValue("urllist");
  33. }
  34. for (var u = 0; u < urls.length; u++) {
  35. if (urls[u].indexOf("*") > -1){
  36. var create = urls[u].replace(/[^a-zA-Z ]/g, "");
  37. var createish = create + "(.*)";
  38. var created = new RegExp(createish);
  39. var sring = document.URL.toString().replace(/[^a-zA-Z ]/g, "");
  40. if (sring.match(created)) {
  41. title.innerHTML = titles[u];
  42. }
  43. } else {
  44. if (urls[u] == document.URL.toString()) {
  45. title.innerHTML = titles[u];
  46. }
  47. }
  48. }
  49.  
  50. if(document.URL.toString() == "https://www.mturk.com/mturk/dashboard"){
  51. var foot = document.getElementsByClassName("footer_separator")[0].nextSibling.nextSibling;
  52. //For Chets AMT
  53. //var foot = document.getElementsByClassName("footer")[0];
  54. var foottable = document.createElement("table");
  55. foottable.style.textAlign = "center";
  56. foottable.style.marginLeft = "auto";
  57. foottable.style.marginRight = "auto";
  58. foot.parentNode.insertBefore(foottable, foot.nextSibling);
  59. var td1 = document.createElement("td");
  60. var td2 = document.createElement("td");
  61. var td3 = document.createElement("td");
  62. foottable.appendChild(td1);
  63. foottable.appendChild(td2);
  64. foottable.appendChild(td3);
  65. var trig1 = document.createElement("span");
  66. trig1.style.color = "#1170A0";
  67. trig1.style.textDecoration = "underline";
  68. trig1.style.cursor = "pointer";
  69. trig1.innerHTML = "Add Titles";
  70. td1.appendChild(trig1);
  71. td2.innerHTML = "&nbsp"+"|"+"&nbsp";
  72. var trig2 = document.createElement("span");
  73. trig2.style.color = "#1170A0";
  74. trig2.style.textDecoration = "underline";
  75. trig2.style.cursor = "pointer";
  76. trig2.innerHTML = "Saved Titles";
  77. td3.appendChild(trig2);
  78. var divy = document.createElement("div");
  79. divy.style.textAlign = "center";
  80. foottable.parentNode.insertBefore(divy, foottable.nextSibling);
  81. var check;
  82. trig1.addEventListener( "click", function(){
  83. if (check == "table0"){
  84. divy.innerHTML = "";
  85. check = "nope";
  86. } else {
  87. divy.innerHTML = "";
  88. var table0 = document.createElement("table");
  89. table0.style.marginLeft = "auto";
  90. table0.style.marginRight = "auto";
  91. table0.style.textAlign = "center";
  92. check = "table0";
  93. divy.appendChild(table0);
  94. var topRow = document.createElement("tr");
  95. var middleRow = document.createElement("tr");
  96. table0.appendChild(topRow);
  97. topRow.parentNode.insertBefore(middleRow, topRow.nextSibling);
  98. var nameRow = document.createElement("td");
  99. topRow.appendChild(nameRow);
  100. var ptag1 = document.createElement("p");
  101. nameRow.appendChild(ptag1);
  102. ptag1.innerHTML = "Tab Name";
  103. var urlRow = document.createElement("td");
  104. nameRow.parentNode.insertBefore(urlRow, nameRow.nextSibling);
  105. var ptag2 = document.createElement("p");
  106. urlRow.appendChild(ptag2);
  107. ptag2.innerHTML = "URL";
  108. var inputRow1 = document.createElement("td");
  109. middleRow.appendChild(inputRow1);
  110. var input1 = document.createElement("input");
  111. inputRow1.appendChild(input1);
  112. input1.type = "text";
  113. var inputRow2 = document.createElement("td");
  114. inputRow1.parentNode.insertBefore(inputRow2, inputRow1.nextSibling);
  115. var input2 = document.createElement("input");
  116. inputRow2.appendChild(input2);
  117. input2.type = "text";
  118. var addBut = document.createElement("span");
  119. addBut.style.color = "#1170A0";
  120. addBut.style.textDecoration = "underline";
  121. addBut.style.cursor = "pointer";
  122. addBut.innerHTML = "Add";
  123. table0.parentNode.insertBefore(addBut, table0.nextSibling);
  124. addBut.addEventListener( "click", function() {
  125. var userName;
  126. var userUrl;
  127. if (input1.value.length < 1) {
  128. userName = "Blank";
  129. } else {
  130. userName = input1.value;
  131. }
  132. if (input2.value.length < 1) {
  133. userUrl = "Blank";
  134. } else {
  135. userUrl = input2.value;
  136. }
  137. titles.push(userName);
  138. urls.push(userUrl);
  139. var both = [];
  140. for (var w = 0; w < titles.length; w++){
  141. both.push({ "A": titles[w], "B": urls[w] });
  142. }
  143. both.sort(function(a,b){
  144. return a.B.length - b.B.length;
  145. });
  146. var temptitles = [];
  147. var tempurls = [];
  148. for (var h = 0; h < both.length; h++) {
  149. temptitles.push(both[h].A);
  150. tempurls.push(both[h].B);
  151. }
  152. titles = temptitles;
  153. urls = tempurls;
  154. GM_setValue("titlelist", titles);
  155. GM_setValue("urllist", urls);
  156. input1.value = "";
  157. input2.value = "";
  158. }, false);
  159. }}, false);
  160. trig2.addEventListener( "click", function(){
  161. if (check == "table"){
  162. divy.innerHTML = "";
  163. check = "nope";
  164. } else {
  165. divy.innerHTML = "";
  166. var table = document.createElement("table");
  167. table.style.marginLeft = "auto";
  168. table.style.marginRight = "auto";
  169. table.style.textAlign = "center";
  170. check = "table";
  171. divy.appendChild(table);
  172. for (var g = 0; g < GM_getValue("urllist").length; g++){
  173. var row = document.createElement("tr");
  174. table.appendChild(row);
  175. var cell1 = document.createElement("td");
  176. row.appendChild(cell1);
  177. var emptyP = document.createElement("p");
  178. emptyP.style.color = "#7fb4cf";
  179. emptyP.style.textDecoration = "underline";
  180. emptyP.style.cursor = "pointer";
  181. cell1.appendChild(emptyP);
  182. emptyP.setAttribute("class","urltable");
  183. emptyP.innerHTML = GM_getValue("titlelist")[g];
  184. }
  185. function overit(l) {
  186. var inex1 = l.target.innerHTML;
  187. var switchp1 = GM_getValue("titlelist").indexOf(inex1);
  188. l.target.innerHTML = GM_getValue('urllist')[switchp1];
  189. var selection = window.getSelection();
  190. var range = document.createRange();
  191. range.selectNodeContents(this);
  192. selection.removeAllRanges();
  193. selection.addRange(range);
  194. }
  195. function outofit(l) {
  196. var newDex;
  197. var inex2 = l.target.innerHTML;
  198. if (inex2.indexOf("&amp;") > -1){
  199. newDex = inex2.replace(/&amp;/g,"&");
  200. } else {
  201. newDex = inex2;
  202. }
  203. var switchp2 = GM_getValue("urllist").indexOf(newDex);
  204. l.target.innerHTML = GM_getValue("titlelist")[switchp2];
  205. }
  206. function gonenow(l) {
  207. var inexd = l.target.innerHTML;
  208. var dele = GM_getValue("urllist").indexOf(inexd);
  209. titles.splice(dele,1);
  210. urls.splice(dele,1);
  211. GM_setValue("titlelist", titles);
  212. GM_setValue("urllist", urls);
  213. }
  214. var pps = document.getElementsByClassName("urltable");
  215. for (var p = 0; p < pps.length; p++) {
  216. pps[p].addEventListener("mouseover", overit, false);
  217. pps[p].addEventListener("mouseout", outofit, false);
  218. pps[p].addEventListener("click", gonenow, false);
  219. }
  220. }}, false);
  221. }