From ea71f2b3c7d6b7e8a2a63669aa818d79ad85ffa0 Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Wed, 2 Mar 2011 16:23:39 +0100 Subject: Separate logging front-end into special content script. --- data/lib/bzpage.js | 134 ---------------------------------------------- data/lib/logging-front.js | 88 ++++++++++++++++++++++++++++++ data/lib/util.js | 50 +++++++++++++++++ 3 files changed, 138 insertions(+), 134 deletions(-) create mode 100644 data/lib/logging-front.js (limited to 'data') diff --git a/data/lib/bzpage.js b/data/lib/bzpage.js index aa81370..bd8e6ce 100644 --- a/data/lib/bzpage.js +++ b/data/lib/bzpage.js @@ -12,14 +12,11 @@ var SalmonPink = new Color(255, 224, 176); // RGB 255, 224, 176; HSL 36, 2, // 85 var ReporterColor = new Color(255, 255, 166); // RGB 255, 255, 166; HSL 60, 2, // 83 -var EmptyLogsColor = new Color(0, 255, 0); -var FullLogsColor = new Color(0, 40, 103); // global variables var config = {}; var constantData = {}; // This should be probably eliminated ASAP or // or done by other means. TODO -var submitHandlerInstalled = false; // for setUpLogging /** * central handler processing messages from the main script. */ @@ -271,57 +268,6 @@ function addToCommentsDropdown (cmdObj) { select.appendChild(opt); } -/** - * Create a A element leadink nowhere, but with listener running a callback on the click - * - * @param id String with a id to be added to the element - * @param text String with a string to be added as a textContent of the element - * @param parent Node which is a parent of the object - * @param callback Function to be called after clicking on the link - * @param params Array with parameters of the callback - * @param Boolean before if there should be a
element before. - * @return none - */ -function createDeadLink (id, text, parent, callback, params, before, covered, accesskey) { - params = valToArray(params); - var locParent = {}; - - // Yes, I want != here, not !== - if (covered != null) { - locParent = document.createElement(covered); - parent.appendChild(locParent); - } else { - locParent = parent; - } - - var newAElem = document.createElement("a"); - newAElem.setAttribute("id", id); - if (accesskey) { - newAElem.setAttribute("accesskey", accesskey); - } - newAElem.textContent = text; - - if (typeof callback === "string") { - newAElem.setAttribute("href", callback); - } else { - newAElem.setAttribute("href", ""); - newAElem.addEventListener("click", function(evt) { - callback.apply(null, params); - evt.stopPropagation(); - evt.preventDefault(); - }, false); - } - - if ((before === "br") || (before === true)) { - locParent.appendChild(document.createElement("br")); - } else if (before === "dash") { - locParent.appendChild(document.createTextNode("\u00A0-\u00A0")); - } - - locParent.appendChild(newAElem); -} - - /** * Generic function to add new button to the page. Actually copies new button * from the old one (in order to have the same look-and-feel, etc. @@ -384,8 +330,6 @@ function generateButtons (pkgs, kNodes) { var topRowPosition = "topRowPositionID"; var bottomRowPosition = "commit"; - setUpLogging(); - // ========================================================= if (kNodes && window.location.hostname in kNodes) { var killConf = killNodes[window.location.hostname]; @@ -757,84 +701,6 @@ function getLogin () { return loginStr; } -function addLogRecord() { - var rec = {}; - rec.date = new Date(); - rec.url = document.location.toString(); - rec.title = document.title; - var comment = window.prompt( - "Enter comments for this comment"); - if (comment) { - comment = comment.trim(); - if (comment.length > 0) { - comment = comment.trim(); - rec.comment = comment; - var dateStr = getISODate(rec.date); - var urlStr = window.location.hostname; - var bugNo = getBugNoFromURL(window.location.href); - rec.key = dateStr + "+" + - urlStr + "+" + bugNo; - postMessage(new Message("AddLogRecord", rec)); - } else { - console.log("Empty string!"); - } - console.log("addLogRecord : rec = " + rec.toSource()); - return rec; - } - return null; -} - -/** - */ -function setUpLogging () { - // Protection against double-call - if (document.getElementById("generateTSButton")) { - return ; - } - - // For adding additional buttons to the top toolbar - var additionalButtons = document.querySelector("#bugzilla-body *.related_actions"); - var that = this; - - // logging all submits for timesheet - if (!submitHandlerInstalled) { - document.forms.namedItem("changeform").addEventListener("submit",function (evt) { - if (addLogRecord() === null) { - evt.stopPropagation(); - evt.preventDefault(); - } - }, false); - submitHandlerInstalled = true; - } - - // (id, text, parent, callback, params, before, covered, accesskey) - createDeadLink("generateTSButton", "Generate TS", additionalButtons, - function(evt) { - postMessage(new Message("GenerateTS")); - }, [], "dash", "li"); - - createDeadLink("clearLogs", "Clear TS", additionalButtons, - function(evt) { - postMessage(new Message("ClearTS")); - }, [], "dash", "li"); - - createDeadLink("importTSButton", "Import TS", additionalButtons, - function(evt) { - postMessage(new Message("ImportTS")); - }, [], "dash", "li"); - - /* TODO - var clearLogAElem = document.getElementById("clearLogs"); - if (this.log.isEmpty()) { - clearLogAElem.style.color = this.log.EmptyLogsColor; - clearLogAElem.style.fontWeight = "normal"; - } else { - clearLogAElem.style.color = this.log.FullLogsColor; - clearLogAElem.style.fontWeight = "bolder"; - } - */ -} - function getSelection () { var text = ""; var selectionObject = window.getSelection(); diff --git a/data/lib/logging-front.js b/data/lib/logging-front.js new file mode 100644 index 0000000..4b0a3f9 --- /dev/null +++ b/data/lib/logging-front.js @@ -0,0 +1,88 @@ +// Released under the MIT/X11 license +// http://www.opensource.org/licenses/mit-license.php +"use strict"; + +var EmptyLogsColor = new Color(0, 255, 0); +var FullLogsColor = new Color(0, 40, 103); + +var submitHandlerInstalled = false; // for setUpLogging + +function addLogRecord() { + var rec = {}; + rec.date = new Date(); + rec.url = document.location.toString(); + rec.title = document.title; + var comment = window.prompt( + "Enter comments for this comment"); + if (comment) { + comment = comment.trim(); + if (comment.length > 0) { + comment = comment.trim(); + rec.comment = comment; + var dateStr = getISODate(rec.date); + var urlStr = window.location.hostname; + var bugNo = getBugNoFromURL(window.location.href); + rec.key = dateStr + "+" + + urlStr + "+" + bugNo; + postMessage(new Message("AddLogRecord", rec)); + } else { + console.log("Empty string!"); + } + console.log("addLogRecord : rec = " + rec.toSource()); + return rec; + } + return null; +} + +/** + */ +function setUpLogging () { + // Protection against double-call + if (document.getElementById("generateTSButton")) { + return ; + } + + // For adding additional buttons to the top toolbar + var additionalButtons = document.querySelector("#bugzilla-body *.related_actions"); + var that = this; + + // logging all submits for timesheet + if (!submitHandlerInstalled) { + document.forms.namedItem("changeform").addEventListener("submit",function (evt) { + if (addLogRecord() === null) { + evt.stopPropagation(); + evt.preventDefault(); + } + }, false); + submitHandlerInstalled = true; + } + + // (id, text, parent, callback, params, before, covered, accesskey) + createDeadLink("generateTSButton", "Generate TS", additionalButtons, + function(evt) { + postMessage(new Message("GenerateTS")); + }, [], "dash", "li"); + + createDeadLink("clearLogs", "Clear TS", additionalButtons, + function(evt) { + postMessage(new Message("ClearTS")); + }, [], "dash", "li"); + + createDeadLink("importTSButton", "Import TS", additionalButtons, + function(evt) { + postMessage(new Message("ImportTS")); + }, [], "dash", "li"); + + /* TODO + var clearLogAElem = document.getElementById("clearLogs"); + if (this.log.isEmpty()) { + clearLogAElem.style.color = this.log.EmptyLogsColor; + clearLogAElem.style.fontWeight = "normal"; + } else { + clearLogAElem.style.color = this.log.FullLogsColor; + clearLogAElem.style.fontWeight = "bolder"; + } + */ +} + +setUpLogging(); diff --git a/data/lib/util.js b/data/lib/util.js index 6c204ff..0ecc318 100644 --- a/data/lib/util.js +++ b/data/lib/util.js @@ -80,6 +80,56 @@ function getBugNoFromURL(url) { } } +/** + * Create a A element leadink nowhere, but with listener running a callback on the click + * + * @param id String with a id to be added to the element + * @param text String with a string to be added as a textContent of the element + * @param parent Node which is a parent of the object + * @param callback Function to be called after clicking on the link + * @param params Array with parameters of the callback + * @param Boolean before if there should be a
element before. + * @return none + */ +function createDeadLink (id, text, parent, callback, params, before, covered, accesskey) { + params = valToArray(params); + var locParent = {}; + + // Yes, I want != here, not !== + if (covered != null) { + locParent = document.createElement(covered); + parent.appendChild(locParent); + } else { + locParent = parent; + } + + var newAElem = document.createElement("a"); + newAElem.setAttribute("id", id); + if (accesskey) { + newAElem.setAttribute("accesskey", accesskey); + } + newAElem.textContent = text; + + if (typeof callback === "string") { + newAElem.setAttribute("href", callback); + } else { + newAElem.setAttribute("href", ""); + newAElem.addEventListener("click", function(evt) { + callback.apply(null, params); + evt.stopPropagation(); + evt.preventDefault(); + }, false); + } + + if ((before === "br") || (before === true)) { + locParent.appendChild(document.createElement("br")); + } else if (before === "dash") { + locParent.appendChild(document.createTextNode("\u00A0-\u00A0")); + } + + locParent.appendChild(newAElem); +} + /* * From element diggs out just plain email address * Note that bugzilla.gnome.org doesn't have mailto: url but -- cgit