Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/1.1/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozillaZine Forums Menu user script.
- *
- * The Initial Developer of the Original Code is LouCypher.
- * Portions created by the Initial Developer are Copyright (C) 2011
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s)
- * - LouCypher <loucypher@mozillaca.com>
- *
- * ***** END LICENSE BLOCK ***** */
- // ==UserScript==
- // @name mozillaZine Forums Menu
- // @namespace http://mozilla.status.net/loucypher
- // @description Navigation menu for mozillaZine Forums
- // @icon http://i.imgur.com/01UZS.png
- // @version 2.4
- // @author LouCypher
- // @license MPL 1.1
- // @include http://forums.mozillazine.org/*
- // ==/UserScript==
- /*
- Changelog:
- * 2011-07-21:
- + Added links to official forums for Firefox/Thunderbird/mobile
- * Cosmetic changes
- * 2011-07-19:
- + Added link to this user script at userscripts.org
- x Cosmetic changes
- * 2011-07-18: Version 2.0
- * 2006-07-31: Updated to new layout
- * 2006-06-20: Added new forum and new forum category
- * 2006-06-12: Rearrange
- * 2005-08-13: Rearrange
- * 2005-08-08:
- - Fixed menu positions
- - Added index to insertMenu function
- - Added User Links menu
- */
- var linklist = document.querySelector("#page-header .linklist");
- if (!linklist) return;
- const htmlns = "http://www.w3.org/1999/xhtml";
- GM_addStyle("\
- #page-header .linklist .icon-home, .menu .submenu {\
- display: none;\
- }\
- .menu { padding: 1px .5em 0 17px; }\
- .menu .submenu {\
- border: 1px solid #027ab7;\
- /*border-top-width: 0;*/\
- background-color: rgb(202, 220, 235);\
- padding: 0 0 .5em .5em;\
- margin-left: -2em;\
- position: absolute;\
- z-index: 3;\
- }\
- .menu.icon-subscribe {\
- background-position: .5em 50%;\
- background-color: white;\
- box-shadow: inset 1px 1px 2px rgba(0, 0, 0, .5);\
- padding-left: 2em;\
- }\
- .menu .submenu, .menu:hover {\
- box-shadow: 3px 3px 3px rgba(0, 0, 0, .5);\
- }\
- .menu:hover .submenu, .submenu li a { display: block; }\
- .menu:hover, .submenu li:hover { background-color: #027ab7; }\
- .menu a:hover { text-decoration: none; }\
- .menu:hover, .menu:hover > strong > a, \
- .submenu li:hover a, .submenu a:hover { color: white; }\
- .submenu li { float: none !important; padding-right: .5em; }\
- .menu a:-moz-focusring { outline: none; }\
- .submenu a { padding: 0 .5em; }\
- .submenu li.external { border-top: 2px groove rgba(202, 220, 235, .5); }\
- ");
- var forums = [
- { name: "Firefox", id: "49",
- subs: [
- { name: "Firefox Support", id: "38" },
- { name: "Firefox General", id: "7" },
- { name: "Firefox Builds", id: "23" },
- { name: "Firefox Features", id: "8" },
- { name: "Firefox Bugs", id: "9" },
- { name: "Official Forum", id: "!",
- url: "https://support.mozilla.com/" }
- ]
- },
- { name: "Thunderbird", id: "50",
- subs: [
- { name: "Thunderbird Support", id: "39" },
- { name: "Thunderbird General", id: "28" },
- { name: "Thunderbird Builds", id: "29" },
- { name: "Thunderbird Features", id: "30" },
- { name: "Thunderbird Bugs", id: "31" },
- { name: "Official Forum", id: "!",
- url: "http://support.mozillamessaging.com/" }
- ]
- },
- { name: "SeaMonkey", id: "51",
- subs: [
- { name: "SeaMonkey Support", id: "40" },
- { name: "SeaMonkey General", id: "3" },
- { name: "SeaMonkey Builds", id: "6" },
- { name: "SeaMonkey Features", id: "4" },
- { name: "SeaMonkey Bugs", id: "5" }
- ]
- },
- { name: "Others", id: "52",
- subs: [
- { name: "Camino", id: "12" },
- { name: "Calendar", id: "46" },
- { name: "Mobile", id: "47" },
- { name: "Miscellaneous Support", id: "32" },
- { name: "Other Applications and Distributions", id: "34" },
- { name: "Official Mobile Forum", id: "!",
- url: "https://support.mozilla.com/mobile" }
- ]
- },
- { name: "Add-ons", id: "53",
- subs: [
- { name: "Extension/Theme Releases", id: "48" },
- { name: "Extension Development", id: "19" },
- { name: "Theme Development", id: "18" },
- { name: "Mozilla Add-ons Forum", id: "!",
- url: "https://forums.mozilla.org/addons/" }
- ]
- },
- { name: "Development", id: "54",
- subs: [
- { name: "Mozilla Development", id: "27" },
- { name: "Web Development / Standards Evangelism", id: "25" },
- { name: "Third Party/Unofficial Builds", id: "42" }
- ]
- },
- { name: "mozillaZine", id: "55",
- subs: [
- { name: "MozillaZine Site Discussion", id: "11" },
- { name: "MozillaZine Tech", id: "37" },
- { name: "MozillaZine AfterDark", id: "22" },
- { name: "Locked Posts", id: "26" },
- { name: "About This User Script", id: "?",
- url: "http://userscripts.org/scripts/show/1455" }
- ]
- }
- ]
- for (var i = 0; i < forums.length; i++) {
- let sibling = linklist.querySelector(".rightside");
- let menu = addMenu(forums[i].name, forums[i].id, sibling);
- for (var j = 0; j < forums[i].subs.length; j++) {
- let submenu = menu.querySelector(".submenu");
- addSubMenu(forums[i].subs[j].name, forums[i].subs[j].id,
- submenu, forums[i].subs[j].url);
- }
- }
- function addMenu(aText, aId, aSibling) {
- let icon = setIconFromCurrent(".icon-home > strong > strong + a", aId);
- let menu = <li xmlns={htmlns} class={"icon-" + icon + " menu"}>
- <strong>
- <a href={"/viewforum.php?f=" + aId}>{aText}</a>
- </strong>
- <ul class="submenu"></ul>
- </li>;
- return aSibling.parentNode.insertBefore(makeXML(menu), aSibling);
- }
- function addSubMenu(aText, aId, aParent, aExternal) {
- let external = (aExternal != null)
- let icon = setIconFromCurrent(".icon-home > strong > a:last-child", aId);
- let menu = <li xmlns={htmlns}
- class={"icon-" + icon + (external ? " external" : "")}>
- <strong>
- <a href={
- external ? aExternal : ("/viewforum.php?f=" + aId)
- }>{aText}</a>
- </strong>
- </li>;
- aParent.appendChild(makeXML(menu));
- }
- function setIconFromCurrent(aSelector, aId) {
- let icon = "";
- switch (aId) {
- case "!": icon = "logout"; break;
- case "?": icon = "faq"; break;
- default: icon = "bump";
- }
- let current = document.querySelector(aSelector);
- if (current) {
- if (current.href.match(/\d+/) == aId) {
- icon = "subscribe";
- }
- }
- return icon;
- }
- function makeXML(aXML) {
- return (new DOMParser).parseFromString(new XML(aXML).toXMLString(),
- "application/xml")
- .documentElement;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement