//Released under the MIT/X11 license //http://www.opensource.org/licenses/mit-license.php //Links to read through //http://ehsanakhgari.org/blog/2010-01-07/bugzilla-tweaks-enhanced //http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/tip/bugzillatweaks //http://hg.mozilla.org/users/ehsan.akhgari_gmail.com/extensions/file/ecfa0f028b81/bugzillatweaks/lib/main.js //http://hg.mozilla.org/users/avarma_mozilla.com/atul-packages/file/42ac1e99a107/packages\ ///facebook-acquaintances/lib/main.js#l11 //http://ehsanakhgari.org/blog/2010-05-31/my-experience-jetpack-sdk#comment-1253 "use strict"; var browser = require("tab-browser"); var self = require("self"); var pageMod = require("page-mod"); var libbz = require("libbugzilla"); var tabs = require("tabs"); var logger = require("logger"); var Message = require("util").Message; var contextMenu = require("context-menu"); /** * */ function skipThisPage(doc) { var stemURL = "https://HOSTNAME/show_bug.cgi?id="; var titleElems = doc.getElementsByTagName("title"); var titleStr = titleElems[0].textContent; var REArr = new RegExp("[bB]ug\\s+([0-9]+)").exec(titleStr); var hostname = doc.location.hostname; if (REArr) { var bugNo = REArr[1]; doc.location = stemURL.replace("HOSTNAME", hostname) + bugNo; } } var messageHandler = exports.messageHandler = function messageHandler( worker, msg) { switch (msg.cmd) { case "AddLogRecord": logger.addLogRecord(msg.data); break; case "ClearTS": logger.clearTimeSheet(); break; case "ImportTS": logger.importTimeSheet(); break; case "GetTSData": worker.postMessage(new Message("ReturningLogData", logger.getAllRecords())); break; case "GetInstalledPackages": // send message with packages back libbz.getInstalledPackages(msg.data, function(pkgsMsg) { worker.postMessage(pkgsMsg); }); break; case "GetClipboard": libbz.getClipboard(function(clipboard) { worker.postMessage(new Message(msg.data, clipboard)); }); break; case "SetClipboard": libbz.setClipboard(msg.data); break; case "ChangeJSONURL": libbz.changeJSONURL(); break; // Needed because Panel is add-on module case "OpenURLinPanel": libbz.openURLInNewPanel(msg.data); break; // Needed because of tabs.open() case "OpenURLinTab": libbz.openURLInNewTab(msg.data); break; // Needed because creating additional page-mods on remote bugzilla case "OpenBugUpstream": libbz.createUpstreamBug(msg.data.url, msg.data.subject, msg.data.comment); break; case "testReady": // we ignore it here, interesting only in unit test break; default: console.error(msg.toSource()); } }; var contentScriptLibraries = [ self.data.url('tweaks/urltest.js'), self.data.url("lib/util.js"), self.data.url("lib/rpcutils.js"), self.data.url("lib/jumpNextBug.js"), self.data.url("lib/queries.js"), self.data.url("lib/collectingMetadata.js"), self.data.url("tweaks/preprocessDuplicates.js"), self.data.url("tweaks/viewSource.js"), self.data.url("lib/color.js"), self.data.url("tweaks/addNewLinks.js"), self.data.url("lib/bugzillaDOMFunctions.js"), self.data.url("rhlib/xorgBugCategories.js"), self.data.url("lib/otherButtons.js"), self.data.url("rhlib/makeBacktraceAttachment.js"), self.data.url("rhlib/fixingAttMIME.js"), self.data.url("lib/logging-front.js"), self.data.url('tweaks/bug-page-mod.js'), self.data.url('mozlib/mozpage.js'), self.data.url("rhlib/rhbzpage.js"), self.data.url("lib/bzpage.js") ]; var mainPMRE = new RegExp("http[s]?:\\/\\/bug(zilla|s)\\.[^\\/]*?" + "\\/show_bug.cgi\\?id=.*"); libbz.initialize(function() { pageMod.PageMod({ include : [ mainPMRE ], contentScriptWhen : 'ready', contentScriptFile : contentScriptLibraries, onAttach : function onAttach(worker, msg) { worker.on('message', function(msg) { messageHandler(worker, msg); }); worker.port.on('GetURL', function (command) { libbz.getURL(command.url, function(stuff) { worker.port.emit(command.backMessage, stuff); }); }); } }); }); var skipPGRE = new RegExp("http[s]?:\\/\\/bug(zilla|s)\\.[^\\/]*?" + "\\/(process_bug|post_bug|attachment).cgi"); pageMod.PageMod({ include : [ skipPGRE ], contentScriptWhen : 'ready', contentScriptFile : self.data.url("lib/skip-bug.js") }); //Allow toggling of CC event displays using a context menu entry contextMenu.Item({ label : "Toggle CC History", contentScriptFile : [ self.data.url('tweaks/urltest.js'), self.data.url('tweaks/cc-context.js') ] }); contextMenu.Item({ label : "Copy Check-in Comment", contentScriptFile : [ self.data.url('tweaks/urltest.js'), self.data.url('tweaks/checkin-context.js') ], onMessage : function(comment) { require("clipboard").set(comment); } }); //tabs.open("https://bugzilla.redhat.com/show_bug.cgi?id=710548");