Advertisement
Guest User

kwierso

a guest
Jul 1st, 2010
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.15 KB | None | 0 0
  1. /* ***** BEGIN LICENSE BLOCK *****
  2. * Version: Open Software License v. 2.1
  3. *
  4. * The contents of this file are subject to the Open Software License Version
  5. * 2.1 (the "License"); you may not use this file except in compliance with
  6. * the License. You may obtain a copy of the License at
  7. * http://www.opensource.org/licenses/osl-2.1.php
  8. *
  9. * Software distributed under the License is distributed on an "AS IS" basis,
  10. * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. * for the specific language governing rights and limitations under the
  12. * License.
  13. *
  14. * The Original Code is the 'Rooster Teeth Site Extender'.
  15. *
  16. * The Initial Developer of the Original Code is
  17. * Shawn Wilsher
  18. *
  19. * Portions created by the Initial Developer are Copyright (C) 2005-2007
  20. * the Initial Developer. All Rights Reserved.
  21. *
  22. * Contributor(s):
  23. *
  24. * ***** END LICENSE BLOCK ***** */
  25.  
  26. var gRTSE=Components.classes['@shawnwilsher.com/rtse;1']
  27. .getService(Components.interfaces.nsIRTSE);
  28. var RTSE = {
  29. // Initialize sponsor setting for session
  30. sponsor: false,
  31.  
  32. /**
  33. * Function that initializes everything for each windows
  34. */
  35. init: function init() {
  36. // Ininitialzing other data
  37. this.smilies.init();
  38. RTSE.editor.init();
  39.  
  40. // Check if wizard should run
  41. if (gRTSE.prefsGetBool('extensions.rtse.firstInstall'))
  42. window.openDialog('chrome://rtse/content/setupwizard.xul','RTSEsetup','chrome,centerscreen');
  43.  
  44. var appcontent=document.getElementById("appcontent"); /* This is the browser */
  45. if(appcontent)
  46. appcontent.addEventListener("DOMContentLoaded",this.onPageLoad,true);
  47. var menu=document.getElementById("contentAreaContextMenu"); /* This is the context menu */
  48. if(menu)
  49. menu.addEventListener("popupshowing",this._menu,false);
  50.  
  51. var pb = Components.classes["@mozilla.org/preferences-service;1"]
  52. .getService(Components.interfaces.nsIPrefBranch2);
  53. pb.addObserver("extensions.rtse", RTSE_PrefsChangeObserver, false);
  54. },
  55.  
  56. destruct: function destruct()
  57. {
  58. var pb = Components.classes["@mozilla.org/preferences-service;1"]
  59. .getService(Components.interfaces.nsIPrefBranch2);
  60. pb.removeObserver("extensions.rtse", RTSE_PrefsChangeObserver);
  61. },
  62.  
  63. updateSponsor: function(doc) {
  64. let userInfoElem = doc.getElementById("userInfo").getElementsByTagName("td")[0]
  65. .getElementsByTagName("a");
  66. try {
  67. this.sponsor = userInfoElem[5].innerHTML == "Sponsor" ||
  68. userInfoElem[6].innerHTML == "Sponsor";
  69. } catch(e) { this.sponsor = false; }
  70. },
  71.  
  72. onPageLoad: function(aEvent) {
  73. /* the document is doc */
  74. var doc=aEvent.originalTarget;
  75.  
  76. if(doc.location.protocol != "about:")
  77. if(RTSE_findOnDomain(doc.domain)) {
  78. /* Run on all RT pages */
  79. let rtURL = doc.location.href.split(doc.domain)[1];
  80.  
  81. // Get Sponsor status for this browser session
  82. RTSE.updateSponsor(doc);
  83. RTSE.editor.sponsorSmilies();
  84.  
  85. // Visibility of the quotebuttons in the ATE
  86. RTSE.editor.quoteButtons();
  87.  
  88. // Add custom CSS
  89. RTSE_addCSS(doc);
  90.  
  91. /* Adjust positioning of floating navbar */
  92. try {
  93. if(!gRTSE.prefsGetBool("extensions.rtse.header"))
  94. RTSE_adjustFloatingBar(doc);
  95. } catch(e) { /* It breaks here? That's weird */ }
  96.  
  97. /*Add UserInfo Links*/
  98. if(gRTSE.prefsGetBool("extensions.rtse.link.enabled"))
  99. RTSE_addToUserInfo(doc);
  100.  
  101. /*Hide Homepage Elements*/
  102. if((rtURL == "/members/" || rtURL == "/members/index.php") &&
  103. !gRTSE.prefsGetBool("extensions.rtse.homepage"))
  104. RTSE_hideHomepageElements(doc);
  105.  
  106. /*Add Extra Tab*/
  107. RTSE_addExtraTab(doc);
  108.  
  109. // Fix Links
  110. RTSE_linkFix(doc);
  111.  
  112. /* Forum Quick Jump */
  113. RTSE_forumListBox(doc);
  114.  
  115. // Page jump
  116. RTSE_pageJump(doc);
  117.  
  118. // MozSearch
  119. RTSE_addSearchPlugins(doc);
  120.  
  121. /* Run on journal pages */
  122. if( /^\/members\/journal(.*)?$/.test(rtURL) ) {
  123. /* Run on your journal page */
  124. if( /^\/members\/journal\/?$/.test(rtURL) ||
  125. /^\/members\/journal\/index\.php.*$/.test(rtURL) ) {
  126. /* Fix Search */
  127. try {
  128. RTSE_fixSearch(doc);
  129. } catch(e) {
  130. //If the user is not using the beta journal layout, fail quietly.
  131. }
  132. }
  133. }
  134.  
  135. let isLocked = doc.getElementById("pageContent").getElementsByTagName("span")[0];
  136. if(isLocked) {
  137. if(isLocked.innerHTML!="Locked:") {
  138. // Run on all other pages with posts
  139. if( doc.location.href.match("entry.php") == 'entry.php' || doc.location.href.match("viewEntry.php") == 'viewEntry.php' ||
  140. doc.location.href.match("viewTopic.php") == 'viewTopic.php' || doc.location.href.match("image.php") == 'image.php' ||
  141. doc.location.href.match("strip.php") == 'strip.php' || doc.location.href.match("viewItem.php") == 'viewItem.php' ||
  142. doc.location.href.match("episode.php") == 'episode.php') {
  143.  
  144. // Replies
  145. try {
  146. RTSE_modifyReply(doc);
  147. } catch(e) { /* Eat any errors that occur here */}
  148.  
  149. // Quotes
  150. try {
  151. RTSE_modifyQuote(doc);
  152. } catch(e) { /* Eat any errors that occur here */}
  153.  
  154. // Permalinks
  155. try {
  156. RTSE_postPermalink(doc);
  157. } catch(e) { /* Eat any errors that occur here */}
  158. }
  159.  
  160. // Modify links for user comment pages
  161. if(doc.location.href.match("comments") == 'comments' || doc.location.href.match("profile.php") == 'profile.php'||
  162. (doc.getElementById("Add a Comment") && doc.getElementById(" Friends") && doc.getElementById("The Goods")))
  163. { // Those getElementById's essentially confirm that this is a user's profile
  164. // Replies
  165. try {
  166. RTSE_modifyReply(doc);
  167. } catch(e) { /* Eat any errors that occur here */}
  168.  
  169. // Quotes
  170. try {
  171. RTSE_modifyQuote(doc);
  172. } catch(e) { /* Eat any errors that occur here */}
  173. }
  174. }
  175. }
  176. // Modify post form for journal entries to direct user to the latest page of the journal when replying
  177. if(doc.location.href.match("/members/journal/entry.php") == "/members/journal/entry.php") {
  178. let lastPageURL = doc.location.href;
  179.  
  180. // Does the URL already have a page number?
  181. if(lastPageURL.search("&page=") == -1) {
  182. lastPageURL = lastPageURL + "&page=9999999";
  183. }
  184. else {
  185. lastPageURL = lastPageURL.split("&page=")[0] + "&page=9999999";
  186. }
  187.  
  188. RTSE_modifyForm(doc, null, lastPageURL, null, null, true);
  189. }
  190.  
  191. // Add Watchlist and Alerts if enabled.
  192. if( (rtURL != "/members/" && rtURL != "/members/index.php" && rtURL != "members/signin.php") &&
  193. gRTSE.prefsGetBool("extensions.rtse.watchlist") )
  194. RTSE_addWatchlistAlerts(doc);
  195. } else
  196. return;
  197. },
  198.  
  199. _menu: function() {
  200. /* Context Menu Goodies */
  201. let url=gBrowser.getBrowserAtIndex(gBrowser.mTabContainer.selectedIndex).contentDocument.location;
  202. let regEx=/^https?:\/\/((|panics.|magic.|m.|myspace.)roosterteeth|achievementhunter|strangerhood|redvsblue|roosterteethcomics|captaindynamic).com(.*)$/i
  203.  
  204. // Hide the menu by default. Only show it if conditions are met.
  205. gContextMenu.showItem("rtse-sub-menu",false);
  206.  
  207. //These checks occur regardless of context
  208. if(gContextMenu.onLink && regEx.test(url.href)) {
  209.  
  210. // Are we on the ONline user div?
  211. let targetON = false;
  212. if(gContextMenu.target.innerHTML == "ON" && /onTag/.test(gContextMenu.target.parentNode.id) && !gContextMenu.onImage ) {
  213. targetON = true;
  214. }
  215.  
  216. // User/Avatar context items
  217. if( (gContextMenu.onImage && gContextMenu.target.parentNode.href) || targetON) {
  218. let target = gContextMenu.target;
  219.  
  220. // Adjust target if over the ONline div
  221. if(targetON) {
  222. target = gContextMenu.target.parentNode.parentNode.getElementsByTagName("a")[1].getElementsByTagName("img")[0];
  223. }
  224. if(/avatar av{0,1}/.test(target.className)) {
  225. gContextMenu.showItem("rtse-sub-menu",true);
  226.  
  227. let uid = target.getAttribute("src");
  228. uid = uid.split("?")[1];
  229. let dom = url.hostname;
  230.  
  231. // Only show the items if the uID can be found
  232. if(uid) {
  233. // Make only user items visible
  234. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  235. document.getElementById('rtse-thread-watch').style.display = 'none';
  236. document.getElementById('rtse-user-log').style.display = '';
  237. document.getElementById('rtse-user-watch').style.display = '';
  238. document.getElementById('rtse-user-block').style.display = '';
  239. document.getElementById('rtse-user-friends').style.display = '';
  240. document.getElementById('rtse-user-sendPM').style.display = '';
  241. document.getElementById('rtse-user-journal').style.display = '';
  242. document.getElementById('rtse-user-images').style.display = '';
  243. document.getElementById('rtse-user-videos').style.display = '';
  244. document.getElementById('rtse-user-comments').style.display = '';
  245. document.getElementById('rtse-no-uid').style.display = 'none';
  246. document.getElementById('rtse-search-last').style.display = 'none';
  247. document.getElementById('rtse-search-group-news').style.display = 'none';
  248. document.getElementById('rtse-search-group-forum').style.display = 'none';
  249. document.getElementById('rtse-search-group-images').style.display = 'none';
  250. document.getElementById('rtse-search-group-members').style.display = 'none';
  251. document.getElementById('rtse-edit-name').style.display = 'none';
  252. document.getElementById('rtse-edit-zip').style.display = 'none';
  253. document.getElementById('rtse-edit-location').style.display = 'none';
  254. document.getElementById('rtse-edit-occupation').style.display = 'none';
  255. document.getElementById('rtse-edit-about').style.display = 'none';
  256. document.getElementById('rtse-edit-interests').style.display = 'none';
  257. document.getElementById('rtse-edit-music').style.display = 'none';
  258. document.getElementById('rtse-edit-movies').style.display = 'none';
  259. document.getElementById('rtse-edit-tv').style.display = 'none';
  260. document.getElementById('rtse-edit-books').style.display = 'none';
  261. document.getElementById('rtse-edit-games').style.display = 'none';
  262. document.getElementById('rtse-edit-screenname').style.display = 'none';
  263. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  264. document.getElementById('rtse-edit-twitter').style.display = 'none';
  265. document.getElementById('rtse-edit-title').style.display = 'none';
  266.  
  267. // Send PM
  268. RTSE_openContextItem("rtse-user-sendPM", "http://" + dom + "/members/messaging/send.php?to=" + uid, 1);
  269. // Add Friend
  270. RTSE_openContextItem("rtse-user-friends", "http://" + dom + "/members/addFriend.php?uid=" + uid, 1);
  271. // Watch
  272. RTSE_openContextItem("rtse-user-watch", "http://" + dom + "/members/addWatch.php?uid=" + uid, 1);
  273. // Block
  274. RTSE_openContextItem("rtse-user-block", "http://" + dom + "/members/addBlock.php?uid=" + uid, 1);
  275.  
  276. // View Log
  277. if (!RTSE.sponsor) {
  278. document.getElementById('rtse-user-log').style.display = 'none';
  279. }
  280. RTSE_openContextItem("rtse-user-log", "http://" + dom + "/members/log.php?uid=" + uid, 1);
  281.  
  282. // View Journal
  283. RTSE_openContextItem("rtse-user-journal", "http://" + dom + "/members/journal/?uid=" + uid, 1);
  284. // View Images
  285. RTSE_openContextItem("rtse-user-images", "http://" + dom + "/members/images/?uid=" + uid, 1);
  286. // View Videos
  287. RTSE_openContextItem("rtse-user-videos", "http://" + dom + "/members/videos/?uid=" + uid, 1);
  288. // View Comments
  289. RTSE_openContextItem("rtse-user-comments", "http://" + dom + "/members/comments/?uid=" + uid, 1);
  290. } else {
  291. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  292. document.getElementById('rtse-thread-watch').style.display = 'none';
  293. document.getElementById('rtse-user-log').style.display = 'none';
  294. document.getElementById('rtse-user-watch').style.display = 'none';
  295. document.getElementById('rtse-user-block').style.display = 'none';
  296. document.getElementById('rtse-user-friends').style.display = 'none';
  297. document.getElementById('rtse-user-sendPM').style.display = 'none';
  298. document.getElementById('rtse-user-journal').style.display = 'none';
  299. document.getElementById('rtse-user-images').style.display = 'none';
  300. document.getElementById('rtse-user-videos').style.display = 'none';
  301. document.getElementById('rtse-user-comments').style.display = 'none';
  302. document.getElementById('rtse-no-uid').style.display = '';
  303. document.getElementById('rtse-search-last').style.display = 'none';
  304. document.getElementById('rtse-search-group-news').style.display = 'none';
  305. document.getElementById('rtse-search-group-forum').style.display = 'none';
  306. document.getElementById('rtse-search-group-images').style.display = 'none';
  307. document.getElementById('rtse-search-group-members').style.display = 'none';
  308. document.getElementById('rtse-edit-name').style.display = 'none';
  309. document.getElementById('rtse-edit-zip').style.display = 'none';
  310. document.getElementById('rtse-edit-location').style.display = 'none';
  311. document.getElementById('rtse-edit-occupation').style.display = 'none';
  312. document.getElementById('rtse-edit-about').style.display = 'none';
  313. document.getElementById('rtse-edit-interests').style.display = 'none';
  314. document.getElementById('rtse-edit-music').style.display = 'none';
  315. document.getElementById('rtse-edit-movies').style.display = 'none';
  316. document.getElementById('rtse-edit-tv').style.display = 'none';
  317. document.getElementById('rtse-edit-books').style.display = 'none';
  318. document.getElementById('rtse-edit-games').style.display = 'none';
  319. document.getElementById('rtse-edit-screenname').style.display = 'none';
  320. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  321. document.getElementById('rtse-edit-twitter').style.display = 'none';
  322. document.getElementById('rtse-edit-title').style.display = 'none';
  323. }
  324. }
  325. // Tournament context items
  326. if(/tournaments\/event.php/.test(gContextMenu.target.parentNode.href) ){
  327. gContextMenu.showItem("rtse-sub-menu",true);
  328.  
  329. let dom = url.hostname;
  330. let tid = gContextMenu.target.parentNode.href.split("id=")[1];
  331.  
  332. // Make sure only tourney items are visible
  333. document.getElementById('rtse-user-log').style.display = 'none';
  334. document.getElementById('rtse-user-watch').style.display = 'none';
  335. document.getElementById('rtse-user-block').style.display = 'none';
  336. document.getElementById('rtse-user-friends').style.display = 'none';
  337. document.getElementById('rtse-user-sendPM').style.display = 'none';
  338. document.getElementById('rtse-user-journal').style.display = 'none';
  339. document.getElementById('rtse-user-images').style.display = 'none';
  340. document.getElementById('rtse-user-videos').style.display = 'none';
  341. document.getElementById('rtse-user-comments').style.display = 'none';
  342. document.getElementById('rtse-thread-watch').style.display = 'none';
  343. document.getElementById('rtse-tournament-bracket').style.display = '';
  344. document.getElementById('rtse-no-uid').style.display = 'none';
  345. document.getElementById('rtse-search-last').style.display = 'none';
  346. document.getElementById('rtse-search-group-news').style.display = 'none';
  347. document.getElementById('rtse-search-group-forum').style.display = 'none';
  348. document.getElementById('rtse-search-group-images').style.display = 'none';
  349. document.getElementById('rtse-search-group-members').style.display = 'none';
  350. document.getElementById('rtse-edit-name').style.display = 'none';
  351. document.getElementById('rtse-edit-zip').style.display = 'none';
  352. document.getElementById('rtse-edit-location').style.display = 'none';
  353. document.getElementById('rtse-edit-occupation').style.display = 'none';
  354. document.getElementById('rtse-edit-about').style.display = 'none';
  355. document.getElementById('rtse-edit-interests').style.display = 'none';
  356. document.getElementById('rtse-edit-music').style.display = 'none';
  357. document.getElementById('rtse-edit-movies').style.display = 'none';
  358. document.getElementById('rtse-edit-tv').style.display = 'none';
  359. document.getElementById('rtse-edit-books').style.display = 'none';
  360. document.getElementById('rtse-edit-games').style.display = 'none';
  361. document.getElementById('rtse-edit-screenname').style.display = 'none';
  362. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  363. document.getElementById('rtse-edit-twitter').style.display = 'none';
  364. document.getElementById('rtse-edit-title').style.display = 'none';
  365.  
  366. /* View Tourney Bracket */
  367. RTSE_openContextItem("rtse-tournament-bracket", "http://" + dom + "/tournaments/bracket.php?id=" + tid, 1);
  368. }
  369. }
  370. // Forum Thread context items
  371. if(/forum\/viewTopic.php/.test(gContextMenu.target.href) || /forum\/viewTopic.php/.test(gContextMenu.target.parentNode.href)) {
  372. gContextMenu.showItem("rtse-sub-menu",true);
  373.  
  374. let dom = url.hostname;
  375. let link = gContextMenu.target.href;
  376. if(!link) {
  377. link = gContextMenu.target.parentNode.href;
  378. }
  379. let tid = link.split("id=")[1];
  380. link = link.split("&")[0];
  381.  
  382. // Make only thread items visible
  383. document.getElementById('rtse-user-log').style.display = 'none';
  384. document.getElementById('rtse-user-watch').style.display = 'none';
  385. document.getElementById('rtse-user-block').style.display = 'none';
  386. document.getElementById('rtse-user-friends').style.display = 'none';
  387. document.getElementById('rtse-user-sendPM').style.display = 'none';
  388. document.getElementById('rtse-user-journal').style.display = 'none';
  389. document.getElementById('rtse-user-images').style.display = 'none';
  390. document.getElementById('rtse-user-videos').style.display = 'none';
  391. document.getElementById('rtse-user-comments').style.display = 'none';
  392. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  393. document.getElementById('rtse-thread-watch').style.display = '';
  394. document.getElementById('rtse-no-uid').style.display = 'none';
  395. document.getElementById('rtse-search-last').style.display = '';
  396. document.getElementById('rtse-search-group-news').style.display = 'none';
  397. document.getElementById('rtse-search-group-forum').style.display = 'none';
  398. document.getElementById('rtse-search-group-images').style.display = 'none';
  399. document.getElementById('rtse-search-group-members').style.display = 'none';
  400. document.getElementById('rtse-edit-name').style.display = 'none';
  401. document.getElementById('rtse-edit-zip').style.display = 'none';
  402. document.getElementById('rtse-edit-location').style.display = 'none';
  403. document.getElementById('rtse-edit-occupation').style.display = 'none';
  404. document.getElementById('rtse-edit-about').style.display = 'none';
  405. document.getElementById('rtse-edit-interests').style.display = 'none';
  406. document.getElementById('rtse-edit-music').style.display = 'none';
  407. document.getElementById('rtse-edit-movies').style.display = 'none';
  408. document.getElementById('rtse-edit-tv').style.display = 'none';
  409. document.getElementById('rtse-edit-books').style.display = 'none';
  410. document.getElementById('rtse-edit-games').style.display = 'none';
  411. document.getElementById('rtse-edit-screenname').style.display = 'none';
  412. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  413. document.getElementById('rtse-edit-twitter').style.display = 'none';
  414. document.getElementById('rtse-edit-title').style.display = 'none';
  415.  
  416. /* Watch Thread */
  417. if(!/groups\//.test(gContextMenu.target.href)) {
  418. RTSE_openContextItem("rtse-thread-watch", "http://" + dom +
  419. "/forum/watch.php?id=" + tid + "&return=/forum/viewTopic.php?id=" + tid, 1);
  420. } else {
  421. RTSE_openContextItem("rtse-thread-watch", "http://" + dom +
  422. "/groups/forum/watch.php?id=" + tid + "&return=/groups/forum/viewTopic.php?id=" + tid, 1);
  423. }
  424. /* Go to Last Page of Link */
  425. RTSE_openContextItem("rtse-search-last", link + "&page=9999999", 0);
  426. }
  427. // Journal, Comic, News, Blog Comments context items
  428. if(/members\/journal\/entry.php/.test(gContextMenu.target.href) || /members\/journal\/entry.php/.test(gContextMenu.target.parentNode.href) ||
  429. /media\/viewItem.php/.test(gContextMenu.target.href) || /media\/viewItem.php/.test(gContextMenu.target.parentNode.href) ||
  430. /comics\/strip.php/.test(gContextMenu.target.href) || /comics\/strip.php/.test(gContextMenu.target.parentNode.href) ||
  431. /blog\//.test(gContextMenu.target.href) || /blog\//.test(gContextMenu.target.parentNode.href) ||
  432. /home.php/.test(gContextMenu.target.href) || /home.php/.test(gContextMenu.target.parentNode.href)) {
  433. gContextMenu.showItem("rtse-sub-menu",true);
  434.  
  435. let dom = url.hostname;
  436. let link = gContextMenu.target.href;
  437. if(!link) {
  438. link = gContextMenu.target.parentNode.href;
  439. }
  440. let tid = link.split("id=")[1];
  441. link = link.split("&")[0];
  442.  
  443. // Make only thread items visible
  444. document.getElementById('rtse-user-log').style.display = 'none';
  445. document.getElementById('rtse-user-watch').style.display = 'none';
  446. document.getElementById('rtse-user-block').style.display = 'none';
  447. document.getElementById('rtse-user-friends').style.display = 'none';
  448. document.getElementById('rtse-user-sendPM').style.display = 'none';
  449. document.getElementById('rtse-user-journal').style.display = 'none';
  450. document.getElementById('rtse-user-images').style.display = 'none';
  451. document.getElementById('rtse-user-videos').style.display = 'none';
  452. document.getElementById('rtse-user-comments').style.display = 'none';
  453. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  454. document.getElementById('rtse-thread-watch').style.display = 'none';
  455. document.getElementById('rtse-no-uid').style.display = 'none';
  456. document.getElementById('rtse-search-last').style.display = '';
  457. document.getElementById('rtse-search-group-news').style.display = 'none';
  458. document.getElementById('rtse-search-group-forum').style.display = 'none';
  459. document.getElementById('rtse-search-group-images').style.display = 'none';
  460. document.getElementById('rtse-search-group-members').style.display = 'none';
  461. document.getElementById('rtse-edit-name').style.display = 'none';
  462. document.getElementById('rtse-edit-zip').style.display = 'none';
  463. document.getElementById('rtse-edit-location').style.display = 'none';
  464. document.getElementById('rtse-edit-occupation').style.display = 'none';
  465. document.getElementById('rtse-edit-about').style.display = 'none';
  466. document.getElementById('rtse-edit-interests').style.display = 'none';
  467. document.getElementById('rtse-edit-music').style.display = 'none';
  468. document.getElementById('rtse-edit-movies').style.display = 'none';
  469. document.getElementById('rtse-edit-tv').style.display = 'none';
  470. document.getElementById('rtse-edit-books').style.display = 'none';
  471. document.getElementById('rtse-edit-games').style.display = 'none';
  472. document.getElementById('rtse-edit-screenname').style.display = 'none';
  473. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  474. document.getElementById('rtse-edit-twitter').style.display = 'none';
  475. document.getElementById('rtse-edit-title').style.display = 'none';
  476.  
  477. /* Go to Last Page of Link */
  478. if(link.search(/\?/) > -1)
  479. RTSE_openContextItem("rtse-search-last", link + "&page=9999999", 0);
  480. else {
  481. RTSE_openContextItem("rtse-search-last", link + "?page=9999999", 0);
  482. }
  483. }
  484. if(gContextMenu.target == "[object XPCNativeWrapper [object HTMLDivElement]]") {
  485. // Search Dropdown context items (thread, journal and group items)
  486. if(gContextMenu.target.parentNode.className == "available"){
  487. let link = gContextMenu.target.parentNode.href;
  488. let typeCheck = gContextMenu.target.parentNode.getElementsByTagName("div")[1].innerHTML;
  489. switch(typeCheck) {
  490. case "Forum Thread":
  491. case "Comments":
  492. if(typeCheck == "Comments") {
  493. if(!/members\/journal\/entry.php/.test(link)) {
  494. break;
  495. }
  496. }
  497. gContextMenu.showItem("rtse-sub-menu",true);
  498.  
  499. // Make only last-page items visible
  500. document.getElementById('rtse-user-log').style.display = 'none';
  501. document.getElementById('rtse-user-watch').style.display = 'none';
  502. document.getElementById('rtse-user-block').style.display = 'none';
  503. document.getElementById('rtse-user-friends').style.display = 'none';
  504. document.getElementById('rtse-user-sendPM').style.display = 'none';
  505. document.getElementById('rtse-user-journal').style.display = 'none';
  506. document.getElementById('rtse-user-images').style.display = 'none';
  507. document.getElementById('rtse-user-videos').style.display = 'none';
  508. document.getElementById('rtse-user-comments').style.display = 'none';
  509. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  510. document.getElementById('rtse-thread-watch').style.display = 'none';
  511. document.getElementById('rtse-no-uid').style.display = 'none';
  512. document.getElementById('rtse-search-last').style.display = '';
  513. document.getElementById('rtse-search-group-news').style.display = 'none';
  514. document.getElementById('rtse-search-group-forum').style.display = 'none';
  515. document.getElementById('rtse-search-group-images').style.display = 'none';
  516. document.getElementById('rtse-search-group-members').style.display = 'none';
  517. document.getElementById('rtse-edit-name').style.display = 'none';
  518. document.getElementById('rtse-edit-zip').style.display = 'none';
  519. document.getElementById('rtse-edit-location').style.display = 'none';
  520. document.getElementById('rtse-edit-occupation').style.display = 'none';
  521. document.getElementById('rtse-edit-about').style.display = 'none';
  522. document.getElementById('rtse-edit-interests').style.display = 'none';
  523. document.getElementById('rtse-edit-music').style.display = 'none';
  524. document.getElementById('rtse-edit-movies').style.display = 'none';
  525. document.getElementById('rtse-edit-tv').style.display = 'none';
  526. document.getElementById('rtse-edit-books').style.display = 'none';
  527. document.getElementById('rtse-edit-games').style.display = 'none';
  528. document.getElementById('rtse-edit-screenname').style.display = 'none';
  529. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  530. document.getElementById('rtse-edit-twitter').style.display = 'none';
  531. document.getElementById('rtse-edit-title').style.display = 'none';
  532.  
  533. /* Go to Last Page of Link */
  534. RTSE_openContextItem("rtse-search-last", link + "&page=9999999", 0);
  535. break;
  536. case "Group":
  537. gContextMenu.showItem("rtse-sub-menu",true);
  538.  
  539. let dom = url.hostname;
  540. let gID = link.split("id=")[1].split("&")[0];
  541. // Make only Group items visible
  542. document.getElementById('rtse-user-log').style.display = 'none';
  543. document.getElementById('rtse-user-watch').style.display = 'none';
  544. document.getElementById('rtse-user-block').style.display = 'none';
  545. document.getElementById('rtse-user-friends').style.display = 'none';
  546. document.getElementById('rtse-user-sendPM').style.display = 'none';
  547. document.getElementById('rtse-user-journal').style.display = 'none';
  548. document.getElementById('rtse-user-images').style.display = 'none';
  549. document.getElementById('rtse-user-videos').style.display = 'none';
  550. document.getElementById('rtse-user-comments').style.display = 'none';
  551. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  552. document.getElementById('rtse-thread-watch').style.display = 'none';
  553. document.getElementById('rtse-no-uid').style.display = 'none';
  554. document.getElementById('rtse-search-last').style.display = 'none';
  555. document.getElementById('rtse-search-group-news').style.display = '';
  556. document.getElementById('rtse-search-group-forum').style.display = '';
  557. document.getElementById('rtse-search-group-images').style.display = '';
  558. document.getElementById('rtse-search-group-members').style.display = '';
  559. document.getElementById('rtse-edit-name').style.display = 'none';
  560. document.getElementById('rtse-edit-zip').style.display = 'none';
  561. document.getElementById('rtse-edit-location').style.display = 'none';
  562. document.getElementById('rtse-edit-occupation').style.display = 'none';
  563. document.getElementById('rtse-edit-about').style.display = 'none';
  564. document.getElementById('rtse-edit-interests').style.display = 'none';
  565. document.getElementById('rtse-edit-music').style.display = 'none';
  566. document.getElementById('rtse-edit-movies').style.display = 'none';
  567. document.getElementById('rtse-edit-tv').style.display = 'none';
  568. document.getElementById('rtse-edit-books').style.display = 'none';
  569. document.getElementById('rtse-edit-games').style.display = 'none';
  570. document.getElementById('rtse-edit-screenname').style.display = 'none';
  571. document.getElementById('rtse-edit-gamertag').style.display = 'none';
  572. document.getElementById('rtse-edit-twitter').style.display = 'none';
  573. document.getElementById('rtse-edit-title').style.display = 'none';
  574.  
  575. /* Open each Group item in a new tab when clicked */
  576. RTSE_openContextItem("rtse-search-group-news", "http://" + dom + "/groups/news/?id=" + gID, 1);
  577. RTSE_openContextItem("rtse-search-group-forum", "http://" + dom + "/groups/forum/?id=" + gID, 1);
  578. RTSE_openContextItem("rtse-search-group-images", "http://" + dom + "/groups/images/?id=" + gID, 1);
  579. RTSE_openContextItem("rtse-search-group-members", "http://" + dom + "/groups/members.php?id=" + gID, 1);
  580. break;
  581. default:
  582. gContextMenu.showItem("rtse-sub-menu", false);
  583. }
  584. }
  585. }
  586. // Show direct links to the various "edit profile" pages.
  587. if(gContextMenu.target.parentNode.href.match("members/editProfile.php") == "members/editProfile.php") {
  588. gContextMenu.showItem("rtse-sub-menu",true);
  589.  
  590. document.getElementById('rtse-tournament-bracket').style.display = 'none';
  591. document.getElementById('rtse-thread-watch').style.display = 'none';
  592. document.getElementById('rtse-user-log').style.display = 'none';
  593. document.getElementById('rtse-user-watch').style.display = 'none';
  594. document.getElementById('rtse-user-block').style.display = 'none';
  595. document.getElementById('rtse-user-friends').style.display = 'none';
  596. document.getElementById('rtse-user-sendPM').style.display = 'none';
  597. document.getElementById('rtse-user-journal').style.display = 'none';
  598. document.getElementById('rtse-user-images').style.display = 'none';
  599. document.getElementById('rtse-user-videos').style.display = 'none';
  600. document.getElementById('rtse-user-comments').style.display = 'none';
  601. document.getElementById('rtse-no-uid').style.display = 'none';
  602. document.getElementById('rtse-search-last').style.display = 'none';
  603. document.getElementById('rtse-search-group-news').style.display = 'none';
  604. document.getElementById('rtse-search-group-forum').style.display = 'none';
  605. document.getElementById('rtse-search-group-images').style.display = 'none';
  606. document.getElementById('rtse-search-group-members').style.display = 'none';
  607. document.getElementById('rtse-edit-name').style.display = '';
  608. document.getElementById('rtse-edit-zip').style.display = '';
  609. document.getElementById('rtse-edit-location').style.display = '';
  610. document.getElementById('rtse-edit-occupation').style.display = '';
  611. document.getElementById('rtse-edit-about').style.display = '';
  612. document.getElementById('rtse-edit-interests').style.display = '';
  613. document.getElementById('rtse-edit-music').style.display = '';
  614. document.getElementById('rtse-edit-movies').style.display = '';
  615. document.getElementById('rtse-edit-tv').style.display = '';
  616. document.getElementById('rtse-edit-books').style.display = '';
  617. document.getElementById('rtse-edit-games').style.display = '';
  618. document.getElementById('rtse-edit-screenname').style.display = '';
  619. document.getElementById('rtse-edit-gamertag').style.display = '';
  620. document.getElementById('rtse-edit-twitter').style.display = '';
  621. document.getElementById('rtse-edit-title').style.display = '';
  622.  
  623. let dom = url.hostname;
  624. RTSE_openContextItem("rtse-edit-name", "http://" + dom + "/members/editField.php?field=name", 0);
  625. RTSE_openContextItem("rtse-edit-zip", "http://" + dom + "/members/editField.php?field=zip", 0);
  626. RTSE_openContextItem("rtse-edit-location", "http://" + dom + "/members/editField.php?field=location", 0);
  627. RTSE_openContextItem("rtse-edit-occupation", "http://" + dom + "/members/editField.php?field=occupation", 0);
  628. RTSE_openContextItem("rtse-edit-about", "http://" + dom + "/members/editField.php?field=about", 0);
  629. RTSE_openContextItem("rtse-edit-interests", "http://" + dom + "/members/editField.php?field=interests", 0);
  630. RTSE_openContextItem("rtse-edit-music", "http://" + dom + "/members/editField.php?field=favMusic", 0);
  631. RTSE_openContextItem("rtse-edit-movies", "http://" + dom + "/members/editField.php?field=favMovies", 0);
  632. RTSE_openContextItem("rtse-edit-tv", "http://" + dom + "/members/editField.php?field=favTV", 0);
  633. RTSE_openContextItem("rtse-edit-books", "http://" + dom + "/members/editField.php?field=favBooks", 0);
  634. RTSE_openContextItem("rtse-edit-games", "http://" + dom + "/members/editField.php?field=favGames", 0);
  635. RTSE_openContextItem("rtse-edit-screenname", "http://" + dom + "/members/editField.php?field=screenName", 0);
  636. RTSE_openContextItem("rtse-edit-gamertag", "http://" + dom + "/members/editField.php?field=gamertag", 0);
  637. RTSE_openContextItem("rtse-edit-twitter", "http://" + dom + "/members/editField.php?field=twitter", 0);
  638. RTSE_openContextItem("rtse-edit-title", "http://" + dom + "/members/editField.php?field=title", 0);
  639. }
  640. }
  641. },
  642.  
  643. // Stylesheet handling
  644. // Registers and unregisters stylesheets for instant application of preferences.
  645. registerStyleSheets: function registerStyleSheets()
  646. {
  647. var sss = Cc["@mozilla.org/content/style-sheet-service;1"]
  648. .getService(Ci.nsIStyleSheetService);
  649. var ios = Cc["@mozilla.org/network/io-service;1"]
  650. .getService(Ci.nsIIOService);
  651. var uri2 = ios.newURI("chrome://rtse/content/styles2.css", null, null);
  652. var uri3 = ios.newURI("chrome://rtse/content/styles3.css", null, null);
  653. var uri4 = ios.newURI("chrome://rtse/content/styles4.css", null, null);
  654. var uri5 = ios.newURI("chrome://rtse/content/styles5.css", null, null);
  655. var uriHome = ios.newURI("chrome://rtse/content/homepage.css", null, null);
  656. var uriWatch = ios.newURI("chrome://rtse/content/watchlist.css", null, null);
  657.  
  658. if(!gRTSE.prefsGetBool("extensions.rtse.sidebar")) {
  659. if(!sss.sheetRegistered(uri2, sss.USER_SHEET))
  660. sss.loadAndRegisterSheet(uri2, sss.USER_SHEET);
  661.  
  662. } else {
  663. if(sss.sheetRegistered(uri2, sss.USER_SHEET))
  664. sss.unregisterSheet(uri2, sss.USER_SHEET);
  665. }
  666.  
  667. if(!gRTSE.prefsGetBool("extensions.rtse.header")) {
  668. if(!sss.sheetRegistered(uri3, sss.USER_SHEET))
  669. sss.loadAndRegisterSheet(uri3, sss.USER_SHEET);
  670. } else {
  671. if(sss.sheetRegistered(uri3, sss.USER_SHEET))
  672. sss.unregisterSheet(uri3, sss.USER_SHEET);
  673. }
  674.  
  675. if(!gRTSE.prefsGetBool("extensions.rtse.journals")) {
  676. if(!sss.sheetRegistered(uri4, sss.USER_SHEET))
  677. sss.loadAndRegisterSheet(uri4, sss.USER_SHEET);
  678. } else {
  679. if(sss.sheetRegistered(uri4, sss.USER_SHEET))
  680. sss.unregisterSheet(uri4, sss.USER_SHEET);
  681. }
  682.  
  683. if(!gRTSE.prefsGetBool("extensions.rtse.background")) {
  684. if(!sss.sheetRegistered(uri5, sss.USER_SHEET)) {
  685. sss.loadAndRegisterSheet(uri5, sss.USER_SHEET);
  686. }
  687. } else {
  688. if(sss.sheetRegistered(uri5, sss.USER_SHEET))
  689. sss.unregisterSheet(uri5, sss.USER_SHEET);
  690. }
  691.  
  692. if(!gRTSE.prefsGetBool("extensions.rtse.homepage")) {
  693. if(!sss.sheetRegistered(uriHome, sss.USER_SHEET))
  694. sss.loadAndRegisterSheet(uriHome, sss.USER_SHEET);
  695. } else {
  696. if(sss.sheetRegistered(uriHome, sss.USER_SHEET))
  697. sss.unregisterSheet(uriHome, sss.USER_SHEET);
  698. }
  699.  
  700. if(gRTSE.prefsGetBool("extensions.rtse.watchlistcolor")) {
  701. if(!sss.sheetRegistered(uriWatch, sss.USER_SHEET))
  702. sss.loadAndRegisterSheet(uriWatch, sss.USER_SHEET);
  703. } else {
  704. if(sss.sheetRegistered(uriWatch, sss.USER_SHEET))
  705. sss.unregisterSheet(uriWatch, sss.USER_SHEET);
  706. }
  707. },
  708.  
  709. /**
  710. * Object that takes care of smilie conversion
  711. */
  712. smilies: {
  713. /**
  714. * Loads the smilies using the XPCOM component
  715. * @return true if successful, false otherwise
  716. */
  717. init: function init()
  718. {
  719. this.data = Components.classes["@shawnwilsher.com/smilies;1"]
  720. .getService(Components.interfaces.nsISmilies);
  721. if (!this.data) return false;
  722.  
  723. this.converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
  724. .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  725. this.converter.charset = "UTF-8";
  726.  
  727. // Get the profile directory
  728. var profD = Components.classes["@mozilla.org/file/directory_service;1"]
  729. .getService(Components.interfaces.nsIProperties)
  730. .get("ProfD", Components.interfaces.nsIFile);
  731.  
  732. // Loading smilies file
  733. var file=profD.clone();
  734. file.append("rtse");
  735. file.append("smilies.xml");
  736.  
  737. if (!file.exists()) {
  738. // Now we have to make the file
  739. const ID = "rtse-nightly@shawnwilsher.com"
  740. var file = profD.clone();
  741. file.append("rtse");
  742.  
  743. if (!file.exists())
  744. file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
  745.  
  746. // Doing this without using the extension manager to find the addon's
  747. // installLocation means that you can't be running RTSE from outside
  748. // of your profile directory (for development work). If I can figure
  749. // out how to use the new API's getResourceURL(), I might be able
  750. // to get that working again in the future.
  751. var ext = profD.clone();
  752. ext.append("extensions");
  753. ext.append(ID);
  754. ext.append("defaults");
  755. ext.append("smilies.xml");
  756. ext.copyTo(file, "smilies.xml");
  757. // XXX this takes care of an initial install where the code seems to
  758. // die outside of this
  759. return this.init();
  760. }
  761. this.data.load(file);
  762. return this.data.ok;
  763. },
  764.  
  765. /**
  766. * Converts the supplied text using the XPCOM method
  767. * @param aText the text to be converted
  768. * @return the converted text
  769. */
  770. convert: function convert(aText)
  771. {
  772. return this.data.ok ?
  773. this.converter.ConvertToUnicode(
  774. this.data.convertText(
  775. this.converter.ConvertFromUnicode(aText)
  776. )
  777. ) + this.converter.Finish() : aText;
  778. },
  779.  
  780. /**
  781. * Removes any conversions that may have taken place from convert
  782. * @param aText the text to be deconverted
  783. * @return unconverted text
  784. */
  785. deconvert: function deconvert(aText)
  786. {
  787. return this.data.ok ?
  788. this.converter.ConvertToUnicode(
  789. this.data.deconvertText(
  790. this.converter.ConvertFromUnicode(aText)
  791. )
  792. ) + this.converter.Finish() : aText;
  793. },
  794.  
  795. ///////////////////////////////////////////////////////////////////////////
  796. //// Attributes
  797.  
  798. /**
  799. * The names of the smilies
  800. * @return an array of objects with the name, key, and path for each smiley
  801. */
  802. get items()
  803. {
  804. if (!this.data.ok) return [];
  805. var names = this.data.getNames({});
  806. var out = [];
  807. for (var i in names) {
  808. out.push({ name: names[i],
  809. key: this.data.getKey(names[i]),
  810. path: this.data.getPath(names[i])
  811. });
  812. }
  813. return out;
  814. }
  815. }
  816. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement