/*jslint onevar: false, browser: true, evil: true, laxbreak: true, undef: true, nomen: true, eqeqeq: true, bitwise: true, maxerr: 1000, immed: false, white: false, plusplus: false, regexp: false, undef: false */ /*global jetpack */ // 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 util = require("util"); var logger = require("logger"); var file = require("file"); var myStorage = require("simple-storage").storage; var browser = require("tab-browser"); const JSONURL = "http://matej.ceplovi.cz/progs/data/RH_Data-packages.json"; var myStorage = require("simple-storage"); var config = {}; function initialize(callback) { util.loadJSON(JSONURL, function(parsedData) { config.gJSONData = parsedData; var keys = "", key = ""; for (key in config.gJSONData) { keys += key + " "; } console.log("loaded JSON object keys: " + keys); // Get card translation table if ("PCIIDsURL" in config.gJSONData.configData) { util.loadJSON(config.gJSONData.configData.PCIIDsURL, function(response) { config.PCI_ID_Array = response; }); } config.logger = new logger.Logger(myStorage.logs, config.gJSONData.constantData.bugzillalabelAbbreviations); callback(config); }, this); } // TODO: sometime in the future we should include // also skip-process.js functionality and these URLs // "https://bugzilla.redhat.com/process_bug.cgi", // "https://bugzilla.redhat.com/post_bug.cgi", // "https://bugzilla.mozilla.org/post_bug.cgi", // "https://bugzilla.mozilla.org/process_bug.cgi" function isOurPage(window, matchingURLs) { if ("window" in window) { window = window.window; } var url = window.location.href; // like ["regexp-url1", "regexp-url2"] return matchingURLs.some(function (element,i,a) { return new RegExp(element).test(url); }); } exports.main = function main(options, callbacks) { initialize(function (config) { browser.whenContentLoaded( function(window) { var doc = window.document; if (isOurPage(window, config.gJSONData.configData.matches)) { console.log("dump config:\n" + config); var curPage = {}; if (config.gJSONData.configData.objectStyle = "RH") { curPage = new require("rhbzpage").RHBugzillaPage(doc, config); } else if (config.gJSONData.configData.objectStyle = "MoFo") { curPage = new require("mozillabzpage").MozillaBugzilla(doc, config); } } else { console.log("Not our page: " + window.location.href); } }); }); };