aboutsummaryrefslogtreecommitdiffstats
path: root/bugzillaBugTriage.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2009-11-15 23:38:56 +0100
committerMatěj Cepl <mcepl@redhat.com>2009-11-15 23:38:56 +0100
commitb9736e4fd94d34fca9eb11ec6e51d2d93af53e4a (patch)
treeaa3d0b6f57f92f165064b5aae957e0c6c2d527d3 /bugzillaBugTriage.js
parentf6473374cf5984ebdb3e96edc1e176ae65bc2eac (diff)
downloadbugzilla-triage-b9736e4fd94d34fca9eb11ec6e51d2d93af53e4a.tar.gz
Another attempt of jetpackization and jQueryization.
Ended in weird errors in tune of "no document.getElementById" or "no document".
Diffstat (limited to 'bugzillaBugTriage.js')
-rw-r--r--bugzillaBugTriage.js937
1 files changed, 527 insertions, 410 deletions
diff --git a/bugzillaBugTriage.js b/bugzillaBugTriage.js
index 0d323e6..673da77 100644
--- a/bugzillaBugTriage.js
+++ b/bugzillaBugTriage.js
@@ -1,74 +1,50 @@
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
-
-// https://bugzilla.redhat.com/show_bug.cgi?id=451951
-//
-
-// EXAMPLE OF THE WORKING JETPACK FUNCTION!!!
-//jetpack.future.import("pageMods");
-
-//var callback = function(document) {
-// jetpack.statusBar.append({
-// html: "BOOM<i>!</i>",
-// width: 45,
-// onReady: function(widget) {
-// console.log("Boom!");
-// },
-// });
-//};
-//var options = {};
-//options.matches = [
-// "https://bugzilla.redhat.com/show_bug.cgi*",
-// "https://bugzilla.redhat.com/process_bug.cgi"];
-//jetpack.pageMods.add(callback, options);
-// Interesting JEPs
-// https://wiki.mozilla.org/Labs/Jetpack/JEP/10 -- clipboard access
-// https://wiki.mozilla.org/Labs/Jetpack/JEP/17 -- page mods
+jetpack.future.import("pageMods");
+jetpack.future.import("storage.simple");
// ************* FUNCTIONS ********************
/* EXTERNAL FUNCTIONS */
+
/**
- * split URI into array
+ * This function creates a new anchor element and uses location properties (inherent)
+ * to get the desired URL data. Some String operations are used (to normalize results
+ * across browsers).
+ * originally from http://snipplr.com/view.php?codeview&id=12659
*
- * @param str string with the URL
- * @return array with parsed URL
+ * @param url String with URL
+ * @return object with parameters set
*
- * parseUri 1.2.1
- * originally from http://blog.stevenlevithan.com/archives/parseuri
- * (c) 2007 Steven Levithan <stevenlevithan.com>
- * MIT License
*/
-function parseUri (str) {
- var o = parseUri.options,
- m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
- uri = {},
- i = 14;
-
- while (i--) {
- uri[o.key[i]] = m[i] || "";
- }
-
- uri[o.q.name] = {};
- uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
- if ($1) uri[o.q.name][$1] = $2;
- });
-
- return uri;
-};
+function parseURL(url) {
+ var a = jetpack.tabs.focused.contentDocument.createElement('a');
+ a.href = url;
+ return {
+ source: url,
+ protocol: a.protocol.replace(':',''),
+ host: a.hostname,
+ port: a.port,
+ query: a.search,
+ params: (function(){
+ var ret = {},
+ seg = a.search.replace(/^\?/,'').split('&'),
+ len = seg.length, i = 0, s;
+ for (;i<len;i++) {
+ if (!seg[i]) { continue; }
+ s = seg[i].split('=');
+ ret[s[0]] = s[1];
+ }
+ return ret;
+ })(),
+ file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
+ hash: a.hash.replace('#',''),
+ path: a.pathname.replace(/^([^\/])/,'/$1'),
+ relative: (a.href.match(/tp:\/\/[^\/]+(.+)/) || [,''])[1],
+ segments: a.pathname.replace(/^\//,'').split('/')
+ };
+}
-parseUri.options = {
- strictMode: false,
- key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
- q: {
- name: "queryKey",
- parser: /(?:^|&)([^&=]*)=?([^&]*)/g
- },
- parser: {
- strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
- loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
- }
-};
/**
* Clean the string from spaces around
@@ -77,78 +53,12 @@ parseUri.options = {
* @return string which was cleaned
*
*/
-function strip(str) {
- return str.replace(/^\s*(.*)\s*$/,"$1");
-}
-
-/**
- * Primitive version of sprintf
- * @param string with the format of the result and
- * @param list of parameters
- * @return string with the format applied
- *
- * Call as
- * format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
- * originally from
- * http://www.sitepoint.com/blogs/2008/11/11/arguments-a-javascript-oddity/
- * FIXME needs testing and debugging
- */
-function format(string) {
- var args = arguments;
- var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
- return String(string).replace(pattern, function(match, index) {
- return args[index];
- });
-}
-
-/**
- * escape input string so that it could be used in URLs
- * @param clearString
- * @return string decoded so that it is safe for URLs
- */
-function URLEncode (clearString) {
- var output = '';
- var x = 0;
- clearString = clearString.toString();
- var regex = /(^[a-zA-Z0-9_.]*)/;
- while (x < clearString.length) {
- var match = regex.exec(clearString.substr(x));
- if (match != null && match.length > 1 && match[1] != '') {
- output += match[1];
- x += match[1].length;
- } else {
- if (clearString[x] == ' ')
- output += '+';
- else {
- var charCode = clearString.charCodeAt(x);
- var hexVal = charCode.toString(16);
- output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
- }
- x++;
- }
- } var output = '';
- var x = 0;
- clearString = clearString.toString();
- var regex = /(^[a-zA-Z0-9_.]*)/;
- while (x < clearString.length) {
- var match = regex.exec(clearString.substr(x));
- if (match != null && match.length > 1 && match[1] != '') {
- output += match[1];
- x += match[1].length;
- } else {
- if (clearString[x] == ' ')
- output += '+';
- else {
- var charCode = clearString.charCodeAt(x);
- var hexVal = charCode.toString(16);
- output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
- }
- x++;
- }
- }
- return output;
-
- return output;
+function trim(str,cleanRE) {
+ var re = RegExp("^\\s*(.*)\\s*$");
+ if (cleanRE) {
+ re = RegExp(cleanRE);
+ }
+ return str.replace(re,"$1");
}
/**
@@ -163,11 +73,11 @@ function filterByRegexp(list,chosingMark) {
if (list.length > 0) {
chosenPair = list.filter(
function(pair){
- return RegExp(pair['regexp']).test(chosingMark);
+ return RegExp(pair['regexp'],"i").test(chosingMark);
});
};
if (chosenPair.length > 0) {
- return strip(chosenPair[0]['addr']).toLowerCase();
+ return trim(chosenPair[0]['addr']);
} else {
return "";
}
@@ -176,6 +86,7 @@ function filterByRegexp(list,chosingMark) {
/**
* Converts attributes value of the given list of elements to the
* Javascript list.
+ *
* @param list array of elements
* @return array of values
*/
@@ -183,14 +94,10 @@ function valuesToList(list) {
var outL = [];
var member = "";
- for (var i = 0; i < list.length; i++) {
- // FIXME how to say hasAttribute in jQuery?
- if(list[i].hasAttribute("value")) {
- // FIXME getAttribute in jQuery
- member = list[i].getAttribute("value");
- member = member.replace(/\s*(.*)\s*/,"$1");
- outL[outL.length] = member;
- }
+ for (var element in list) {
+ if (element.hasAttribute("value")) {
+ outL[outL.length] = trim(element.getAttribute("value"));
+ }
}
return outL;
}
@@ -212,11 +119,11 @@ function isInList(mbr,list) {
* @return string with the content of the clipboard or "" if empty.
* originally from
* https://developer.mozilla.org/en/Using_the_Clipboard
- *
+ *
*/
-// FIXME to-be-replaced by
+// TODO to-be-replaced by
// var contents = jetpack.clipboard.get();
-unsafeWindow.getClipboard = function() {
+function getClipboardText() {
this.netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
@@ -226,49 +133,30 @@ unsafeWindow.getClipboard = function() {
if (!trans) return false;
trans.addDataFlavor("text/unicode");
- clip.getData(trans, clip.kGlobalClipboard);
+ clip.getData(trans, clip.kGlobalClipboard);
- var str = new Object();
- var strLength = new Object();
+ var str = new Object();
+ var strLength = new Object();
trans.getTransferData("text/unicode", str, strLength);
if (str)
- str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
+ str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
if (str)
pastetext = str.data.substring(0, strLength.value / 2);
return pastetext;
};
- function getClipboardText() {
- return unsafeWindow.getClipboard();
- }
-
-/**
- * Compatibility layer for Firefox <3.1 which doesn't have native JSON support
- *
- * @param str string with the JSON data
- * @return object
- */
-//FIXME get rid of this ... user just has to have FF > 3.1
-function jsonParse(str) {
- if (JSON) {
- return JSON.parse(str);
- } else {
- return(eval('(' + str + ')'));
- }
-}
-
/* Bugzilla functions.*/
/**
* add Fedora Bug zapper's signature to the comment of the current bug
*/
function addSignature(evt) {
- var cmntText = document.getElementById("comment");
- if ((signatureFedoraString.length > 0) && (strip(cmntText.value).length > 0)) {
- cmntText.value = strip(cmntText.value) + signatureFedoraString;
+ var cmntText = $("#comment",document);
+ if ((signatureFedoraString.length > 0) && (trim(cmntText.value).length > 0)) {
+ cmntText.value = trim(cmntText.value) + signatureFedoraString;
}
}
@@ -278,14 +166,12 @@ function addSignature(evt) {
* @return None
*/
function clickMouse(target) {
- var localEvent = document.createEvent("MouseEvents");
+ var localEvent = jetpack.tabs.focused.contentDocument.createEvent("MouseEvents");
localEvent.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
target.dispatchEvent(localEvent);
}
-// ******************************************
-
/**
* Parse the row with the attachment
* @param <tr> element to be parsed
@@ -301,23 +187,23 @@ function parseAttachmentLine(inElem) {
var size = Number();
var id = Number();
+ // FIXME we should skip obsolete attachments
+
inElem.normalize();
// getting name of the attachment
var bElem = inElem.getElementsByTagName("b")[0];
- name = strip(bElem.textContent);
+ name = trim(bElem.textContent);
// getting id
var aElem = inElem.getElementsByTagName("a")[0];
id = parseInt(aElem.getAttribute("href").replace(/^.*attachment.cgi\?id=/,""),10);
//getting MIME type and size
- // not sure whether the following is possible, otherwise
- // I would have to get first span element
var spanElems = inElem.getElementsByClassName("bz_attach_extra_info")[0];
var roundedText = spanElems.innerHTML;
- var stringArray = strip(roundedText.replace(/^\s*\((.*)\s*KB,\s*$/,"$1"));
+ var stringArray = trim(roundedText.replace(/^\s*\((.*)\s*KB,\s*$/,"$1"));
size = parseInt(stringArray,10);
MIMEtype = roundedText.split("\n")[2].replace(/^\s*(.*)\)\s*$/,"$1");
@@ -325,16 +211,6 @@ function parseAttachmentLine(inElem) {
}
/**
- * Get the attachments table of the bug
- *
- * @return attachments table
- */
-function getAttTable() {
- var tempList = document.getElementById("attachment_table");
- return(tempList);
-}
-
-/**
* Get list of attachments to the bug
*
* @return array of attachments
@@ -351,12 +227,214 @@ function getAttachments(attTable) {
return(attList);
}
-/*
- * old
- * long_desc=Xpress%20200&bug_status=NEW&bug_status=ASSIGNED
- * new
- * long_desc_type=substring&long_desc=Xpress%20200&bug_status=NEW&bug_status=ASSIGNED
- */
+function isOctetStream(element, index, array) {
+ var inArray = ["application/octet-stream","text/x-log"];
+ return(inArray.indexOf(element[2]) != -1);
+}
+
+function fixAttachments(){
+ var aTable = $("#attachment_table",document);
+ var attachmentsList = getAttachments(aTable);
+ var badAttachments = attachmentsList.filter(isOctetStream);
+
+ if (badAttachments.length>0) {
+ var titleElement = $(".bz_alias_short_desc_container:first",document);
+ titleElement.css("background-color","olive");
+ titleElement.append(createFixAllButton(badAttachments));
+ for(var i=0;i<badAttachments.length;i++) {
+ addTextLink(badAttachments[i]);
+ }
+ }
+}
+
+function groupIDs(manStr,cardStrID) {
+// console.log("RegExpArr = " + chipIDsGroupings.toSource() + ", hledam = " + manStr + "," + cardStrID);
+ var outStr = filterByRegexp(chipIDsGroupings,manStr+","+cardStrID);
+ if (outStr.length == 0) {
+ outStr = "UNGROUPED_" + manStr+"/"+cardStrID;
+ }
+ return outStr;
+}
+
+/**
+ * Given PCI IDs for manufacturer and card ID return chipset string
+ *
+ * @param manufacturerNo string with manufacturer PCI ID
+ * @param cardNo string with card PCI ID
+ *
+ * @return array with chip string and optinoal variants
+ */
+function checkChipStringFromID(manufacturerNo,cardNo) {
+ console.log("This is the card ID: " + cardNo + " manufactured by " + manufacturerNo);
+ var soughtID = (manufacturerNo+","+cardNo).toUpperCase();
+ var outList = PCI_ID_Array[soughtID];
+ console.log("nalezeno = " + outList.toSource());
+ if (outList) {
+ return outList;
+ } else {
+ return "";
+ }
+}
+
+/**
+ * Given line to be parsed, find out which chipset it is and fill in the whiteboard
+ *
+ * @param iLine string with the whole unparsed "interesting line"
+ * @param driverStr string with the driver name
+ * @return None
+ */
+function fillInWhiteBoard(iLine,driverStr) {
+ var outStr = "";
+ var cardIDStr = "";
+ var cardIDArr = Array();
+
+ console.log("driverStr = " + driverStr);
+ console.log("iLine: " + iLine);
+
+ chipSwitchboard:
+ if (driverStr == "RADEON") {
+ var cardID = iLine.replace(ATIgetIDRE,"$1");
+ cardIDArr = checkChipStringFromID("1002",cardID);
+ if (cardIDArr.length > 0) {
+ cardIDStr = cardIDArr[0];
+ if (cardIDArr[1]) {
+ optionStr = cardIDArr[1];
+ outStr = groupIDs(driverStr,cardIDStr)+"/" + optionStr;
+ console.log("cardIDArr = " + cardIDArr.toSource() + ", outStr = "+outStr);
+ } else {
+ outStr = groupIDs(driverStr,cardIDStr);
+ optionStr = "";
+ }
+ console.log("found IDs: " + cardIDStr + "," + optionStr);
+ } else {
+ outStr = "**** FULLSTRING: " + iLine;
+ }
+ } else {
+ // Intel Corporation, NVIDIA
+ cardIDArr = manuChipStrs.filter(function (el, ind, arr) {
+ return RegExp(el[0],"i").test(iLine);
+ });
+ console.log("cardIDArr = " + cardIDArr.toSource());
+ if (cardIDArr && (cardIDArr.length > 0)) {
+ cardIDArr = cardIDArr[0];
+ } else {
+ outStr = iLine;
+ break chipSwitchboard;
+ }
+ // cardIDArr [0] = RE, [1] = ("RADEON","INTEL","NOUVEAU"), [2] = manu PCIID
+ iLine = trim(iLine.replace(RegExp(cardIDArr[0],"i"),""));
+ // FIXME is this necessary? Let's try without it
+ // outStr = iLine.replace(/^\W*(\w*).*$/,"$1");
+ // nVidia developers opted-out from grouping
+ if (driverStr == "INTEL") {
+ outStr = groupIDs(cardIDArr[1],iLine);
+ } else {
+ outStr = iLine;
+ }
+ }
+ console.log("result = " + outStr);
+ var whiteboardInput = $("#status_whiteboard",document);
+ var attachedText = trim("card_"+outStr);
+ if (whiteboardInput.value.length == 0) {
+ whiteboardInput.value = attachedText;
+ } else {
+ whiteboardInput.value += ", " + attachedText;
+ }
+}
+
+/**
+ * Insert "Fill In" button to the status whiteboard
+ * @param interestLine string with the interesting part of the Chipset: line
+ * @param driverString string with name of the driver ("INTEL", "RADEON", "NOUVEAU",
+ * etc.)
+ * @return none
+ */
+function fillInAddButton(interestLine,driverString) {
+ var newButt = originalButton.cloneNode(true);
+ var whiteboardInput = $("#status_whiteboard",document);
+
+ newButt.setAttribute("id","chipmagic");
+ newButt.setAttribute("value","Fill In");
+ newButt.addEventListener('click',function (evt) {
+ fillInWhiteBoard(interestLine,driverString);
+ },true);
+ newButt.setAttribute("type","button");
+ whiteboardInput.parentNode.appendChild(newButt);
+ whiteboardInput.parentNode.insertBefore(jetpack.tabs.focused.contentDocument.createTextNode("\u00A0"),newButt);
+}
+
+/**
+ * Recursive function to run Get attached Xorg.0.log, parse it and find the value of chip
+ * @return None
+ */
+function fillInChipMagicProcessAtts(ret) {
+ if (ret) {
+ if (ret.status != 200) {
+ alert([ret.status,ret.statusText,ret.responseHeaders,
+ ret.responseText]);
+ throw "XMLHttpRequest got return code " + ret.status;
+ }
+ console.log('fetched ' + ret.finalUrl);
+ var interestingLineArr = ret.responseText.split("\n").filter(function (v,i,a) {
+ return ChipsetRE.test(v);
+ });
+ console.log("interestingLineArr = " + interestingLineArr.toSource());
+ if (interestingLineArr.length >0) {
+ // Process and exit
+ // .replace(ChipsetRE,"$1\t$2").split("\t")
+ var interestingArray = ChipsetRE.exec(interestingLineArr[0]);
+ console.log("interesting array = " + interestingArray.toSource());
+ interestingLine = trim(interestingArray[2].replace(/[\s"]+/g," "));
+ console.log("interesting line = " + interestingLine);
+ fillInAddButton(interestingLine,interestingArray[1].toUpperCase());
+ console.log("XMLHttpRequest done!");
+ return;
+ }
+ }
+
+ if (XorgLogAttList[XorgLogAttListIndex]) {
+ var XorgLogAttID = XorgLogAttList[XorgLogAttListIndex][1];
+ var attURL = "https://bugzilla.redhat.com/attachment.cgi?id="+XorgLogAttID;
+ XMLHttpRequest({
+ method: 'GET',
+ url: attURL,
+ headers: {
+ 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey getXorgLog',
+ 'Accept': 'text/plain',
+ 'Content-type': 'text/xml'
+ },
+ onload:fillInChipMagicProcessAtts
+ });
+ XorgLogAttListIndex++;
+ } else {
+ console.log("No more Xorg.0.log attachments!");
+ }
+}
+
+/**
+ * Get attached Xorg.0.log, parse it and find the value of chip.
+ * Does not fill the whiteboard itself, just adds button to do so, so that
+ * slow XMLHttpRequest is done in advance.
+ * @param none
+ * @return none
+ */
+function fillInChipMagic() {
+ var XorgLogURL = "";
+ var XorgLogAttID = "";
+ var XorgLogFound = false;
+
+ // Find out Xorg.0.log attachment URL
+ XorgLogAttList = attachmentsList.filter(function (value, index, array) {
+ // Xorg.0.log must be text, otherwise we cannot parse it
+ return (RegExp("[xX].*log").test(value[0]) && /text/.test(value[2]));
+ });
+ console.log("XorgLogAttList = " + XorgLogAttList.toSource());
+ if (XorgLogAttList.length == 0) {
+ console.log("No Xorg.0.log attachments found.")
+ return;
+ }
+ fillInChipMagicProcessAtts();
+}
/**
* Opens a new tab with a query for the given text in the selected component
@@ -364,6 +442,11 @@ function getAttachments(attTable) {
* @param component string with the component name (maybe latter regexp?)
* @param product (optional) string with the product name
* @return None
+ *
+ * old
+ * long_desc=Xpress%20200&bug_status=NEW&bug_status=ASSIGNED
+ * new
+ * long_desc_type=substring&long_desc=Xpress%20200&bug_status=NEW&bug_status=ASSIGNED
*/
function queryInNewTab(text,component,product) {
// Optional parameter
@@ -372,10 +455,10 @@ function queryInNewTab(text,component,product) {
}
var url = "https://bugzilla.redhat.com/buglist.cgi?query_format=advanced";
if (product) {
- url += "&product="+product;
+ url += "&product="+product;
}
if (component) {
- url += "&component="+component;
+ url += "&component="+component;
}
if (text) {
url += "&long_desc_type=substring&long_desc="+ text.replace(" ","%20");
@@ -384,13 +467,13 @@ function queryInNewTab(text,component,product) {
window.open(url);
}
-function queryForSelection() {
+function queryForSelection(component) {
var text = window.getSelection().toString();
if (text.length < 1) {
text = getClipboardText();
};
if (text.length > 0) {
- queryInNewTab(text, component);
+ queryInNewTab(text, getComponent());
}
}
@@ -404,7 +487,7 @@ function queryForSelection() {
*/
function sendRequest(url,data,method,callback) {
//$.rpc(url, dataType, onLoadCallback, version);
- GM_xmlhttpRequest({
+ XMLHttpRequest({
method: method,
url: url,
headers: {
@@ -420,7 +503,7 @@ function sendRequest(url,data,method,callback) {
/**
* Callback function for the XMLRPC request
*
- * @param ret object with xmlhttprequest response
+ * @param ret object with XMLHttpRequest response
* with attributes:
* + status -- int return code
* + statusText
@@ -460,6 +543,11 @@ function fixAttachById(id,type) {
reqCounter++;
}
+/**
+ * Callback function for "Fix all attachments" button
+ * @param list Array of
+ * @return none
+ */
function fixAllAttachments(list) {
var tmpElem = {};
@@ -470,7 +558,7 @@ function fixAllAttachments(list) {
}
function createFixAllButton(list) {
- var aElem = document.createElement("a");
+ var aElem = jetpack.tabs.focused.contentDocument.createElement("a");
aElem.setAttribute("href","");
aElem.addEventListener('click',
function(event) {fixAllAttachments(list);},
@@ -498,9 +586,6 @@ function getTextAllLink(table,list) {
vAllElem = tElem;
}
}
-// tdElement.parentNode.insertBefore(tElem,tdElement.nextSibling);
-// tdElement.parentNode.insertBefore(document.createElement("td"),
-// tdElement.nextSibling);
}
function addTextLink(row) {
@@ -509,18 +594,13 @@ function addTextLink(row) {
var tElem = {};
var t2Elem = {};
- curElem.parentNode.appendChild(document.createTextNode(" "));
- t2Elem = document.createTextNode("Text");
- tElem = document.createElement("a");
- tElem.setAttribute("href","");
- tElem.addEventListener('click',
+ tElem = $(" <a href=''>Text</a>").bind("click",
function(event) {
fixAttachById(row[1],"text/plain");
- },
- true);
+ });
tElem.appendChild(t2Elem);
- curElem.parentNode.appendChild(document.createElement("br"));
- curElem.parentNode.appendChild(tElem);
+ $(curElem).parent().append("<br>");
+ $(curElem).parent().append(tElem);
}
function isOctetStream(element, index, array) {
@@ -566,13 +646,13 @@ function findNextSiblingByTagName(startElement,tagName,forward) {
* @return none
*/
function selectOption(id,label) {
- var selectElement = document.getElementById(id);
+ var selectElement = jetpack.tabs.focused.contentDocument.getElementById(id);
var values = selectElement.options;
for (var i = 0; i < values.length; i++) {
values[i].normalize();
if (values[i].text.search(label) != -1) {
values[i].selected = true;
- var intEvent = document.createEvent("HTMLEvents");
+ var intEvent = jetpack.tabs.focused.contentDocument.createEvent("HTMLEvents");
intEvent.initEvent("change", true, true);
selectElement.dispatchEvent(intEvent);
break;
@@ -586,7 +666,7 @@ function selectOption(id,label) {
* @return string component of the bug
*/
function getComponent() {
- return strip(document.getElementById("component").value);
+ return $.trim($("#component",document).attr("value"));
}
/**
@@ -595,7 +675,7 @@ function getComponent() {
* @return string product the bug belongs to
*/
function getProduct() {
- var productSelect = document.getElementById("product");
+ var productSelect = $("#product",document);
var index = productSelect.selectedIndex;
return productSelect.options[index].value;
}
@@ -606,7 +686,7 @@ function getProduct() {
* @return string revision of the product the bug belongs to
*/
function getVersion() {
- var versionSelect = document.getElementById("version");
+ var versionSelect = $("#version",document);
if (versionSelect) {
var index = versionSelect.selectedIndex;
return versionSelect.options[index].value;
@@ -616,48 +696,13 @@ function getVersion() {
}
/**
- * Returns owner of the bug.
- *
- * @return string with the email address of the assignee.
- */
-function getAssignedTo() {
- var assigneeEditContainer = document.getElementById("bz_assignee_edit_container").getElementsByClassName("fn")[0];
- return strip(assigneeEditContainer.textContent).toLowerCase();
-}
-
-/**
- * Returns reporter of the bug.
- *
- * @return string with the email address of the reporter.
- */
-function getReporter() {
- var reportedSpanTag = document.getElementById("bz_show_bug_column_2").getElementsByClassName("fn")[0];
- return reportedSpanTag.textContent;
-}
-
-/**
* Returns the number of the current bug
*
* @return int with the bug number
*/
function getBugNo() {
- var title = strip(document.getElementById("title").getElementsByTagName("p")[0].innerHTML);
- var bugNo = eval(title.split("&nbsp;")[1]);
- return bugNo;
-}
-
-/**
- * Returns list of people getting CC of all bug messages.
- *
- * @return array with the all members of the CC list.
- */
-function getCCList() {
- var selectRef = document.getElementsByName("cc");
- if (selectRef.length>0) {
- return valuesToList(selectRef[0]);
- } else {
- return [];
- }
+ var title = $.trim($("#title > p:first",document).html());
+ return eval(title.split("&nbsp;")[1]);
}
/**
@@ -666,16 +711,16 @@ function getCCList() {
*
* @return string email address to be on CC list.
*/
-function getCCMaintainer() {
- return filterByRegexp(AddrArray,component);
+function getCCMaintainer(addrs) {
+ return filterByRegexp(addrs,getComponent()).toLowerCase();
}
/**
- * Returns default assignee for the bug's component
+ * Returns default assignee for the bug's component
* @return string with the default assignee for given component
*/
function getDefaultAssignee() {
- return filterByRegexp(defAssigneeList,getComponent());
+ return filterByRegexp(defAssigneeList,getComponent()).toLowerCase();
}
/**
@@ -684,14 +729,29 @@ function getDefaultAssignee() {
* or because it is not a RHEL bug).
*/
function getIssueTracker() {
- var interestingElement = document.getElementById("cf_issuetracker");
+ var interestingElement = $("#cf_issuetracker",document);
if (interestingElement) {
- return strip(interestingElement.value);
+ return trim(interestingElement.value);
} else {
return "";
}
}
-
+
+/**
+ * Is this bug Xorg bug?
+ * @return boolean
+ */
+function isXorgBug() {
+ return maintCCAddr == "xgl-maint@redhat.com";
+}
+
+/**
+ * Is this bug RHEL bug?
+ * @return boolean
+ */
+function isRHELBug() {
+ return getProduct().search(/Red Hat Enterprise Linux/) != -1;
+}
/**
* Add accesskey to the particular element
@@ -734,13 +794,13 @@ function setBranding(brand,version,its) {
}
// Comment each of the following lines to get only partial branding
- document.body.style.background = brandColor;
- document.getElementById("titles").style.background = brandColor;
+ jetpack.tabs.focused.contentDocument.body.style.background = brandColor;
+ $("#titles",document).style.background = brandColor;
// Make background-color of the body of bug salmon pink
// for security bugs.
if (hasKeyword("Security")) {
- var divBody = document.getElementById("bugzilla-body");
+ var divBody = $("#bugzilla-body",document);
divBody.style.backgroundImage = "none";
divBody.style.backgroundColor = SalmonPink;
}
@@ -748,7 +808,7 @@ function setBranding(brand,version,its) {
// we should make visible whether maintCCAddr is in CCList
if (isInList(maintCCAddr, CCList)) {
- var switchCCEdit=document.getElementById("cc_edit_area_showhide");
+ var switchCCEdit=$("#cc_edit_area_showhide",document);
//switchCCEdit.textContent = "*"+switchCCEdit.textContent;
switchCCEdit.style.color = "navy";
switchCCEdit.style.fontWeight = "bolder";
@@ -786,12 +846,12 @@ function addNewButton(originalLocation,newId,newLabel,commentString,nState,secPa
newButton.setAttribute("value",newLabel);
var commStr = "";
if (msgStrs[commentString]) {
- commStr = msgStrs[commentString];
+ commStr = msgStrs[commentString];
}
newButton.addEventListener('click',function (evt) {
generalPurposeCureForAllDisease(commStr, nState, secPar);
},true);
- var textNode = document.createTextNode("\u00A0");
+ var textNode = jetpack.tabs.focused.contentDocument.createTextNode("\u00A0");
originalLocation.parentNode.insertBefore(textNode,originalLocation);
originalLocation.parentNode.insertBefore(newButton,textNode);
}
@@ -805,7 +865,7 @@ function addNewButton(originalLocation,newId,newLabel,commentString,nState,secPa
* Checks for the existing keywords.
*/
function addKeyword(str) {
- var kwd = document.getElementById('keywords');
+ var kwd = jetpack.tabs.focused.contentDocument.getElementById('keywords');
if (kwd.value.length == 0) {
kwd.value = str;
}else{
@@ -821,10 +881,10 @@ function addKeyword(str) {
*
*/
function hasKeyword(str) {
- var kwd = strip(document.getElementById('keywords').value);
+ var kwd = trim(jetpack.tabs.focused.contentDocument.getElementById('keywords').value);
return (RegExp(str).test(kwd));
}
-
+
/**
* Add XGL to the CC list
@@ -840,7 +900,7 @@ function changeOwnerHandler(evt) {
if (!isInList(maintCCAddr, CCList)) {
addToCC(maintCCAddr);
}
- var setDefaultAssigneeCheckbox = document.getElementById("set_default_assignee");
+ var setDefaultAssigneeCheckbox = $("#set_default_assignee",document);
setDefaultAssigneeCheckbox.checked = false;
selectOption("bug_status", "ASSIGNED");
}
@@ -852,7 +912,7 @@ function changeOwnerHandler(evt) {
* @return none
*/
function setNeedinfoReporter() {
- var checkbox = document.getElementById("needinfo");
+ var checkbox = $("#needinfo",document);
checkbox.click();
selectOption("needinfo_role", "reporter");
}
@@ -864,7 +924,7 @@ function setNeedinfoReporter() {
* @return none
*/
function addTextToComment(string2BAdded) {
- var commentTextarea = document.getElementById("comment");
+ var commentTextarea = $("#comment",document);
// don't remove the current content of the comment box,
// just behave accordingly
@@ -881,13 +941,13 @@ function addTextToComment(string2BAdded) {
* @return none
*/
function addToCC(address) {
- var sel = document.getElementById("newcc");
+ var sel = $("#newcc",document);
sel.value = address;
}
/**
* Generalized function for all actions
- *
+ *
* @param addString string to be added as new comment
* @param nextState string signifying next state of the bug (whatever is in Bugzilla +
"NEEDINFO" meaning NEEDINFO(Reporter))
@@ -899,7 +959,7 @@ function generalPurposeCureForAllDisease(addString,nextState,secondParameter) {
if (addString.length >0) {
addTextToComment(addString);
}
-
+
if (nextState == "CLOSED") {
if (secondParameter == "UPSTREAM") {
addClosingUpstream();
@@ -911,8 +971,8 @@ function generalPurposeCureForAllDisease(addString,nextState,secondParameter) {
throw("Missing resolution for CLOSED status.");
}
}
-
- // Now closing bugs is done, what about the rest?
+
+ // Now closing bugs is done, what about the rest?
if (nextState == "NEEDINFO") {
setNeedinfoReporter();
} else if (nextState == "ADDKEYWORD") {
@@ -928,11 +988,11 @@ function generalPurposeCureForAllDisease(addString,nextState,secondParameter) {
} else if (nextState.length >0) {
selectOption("bug_status", nextState);
}
-
+
if (secondParameter == "ADDSELFCC") {
- document.getElementById("addselfcc").checked = true;
+ $("#addselfcc",document).checked = true;
} else if (secondParameter == "NODEFAULTASSIGNEE") {
- document.getElementById("set_default_assignee").checked = false;
+ $("#set_default_assignee",document).checked = false;
}
}
@@ -976,28 +1036,28 @@ function getWholeURL(selectValue,bugID) {
* @return none
*/
function addClosingUpstream() {
- var externalRefs = document.getElementById("external_bugs_table");
+ var externalRefs = $("#external_bugs_table",document);
var refs = externalRefs.getElementsByTagName("tr");
// that's a bad id, if there is a one.
- var inputBox = document.getElementById("inputbox");
+ var inputBox = $("#inputbox",document);
var externalBugID = 0;
- var externalHost = "";
var wholeURL = "";
// Fix missing ID on the external_id SELECT
- document.getElementsByName("external_id")[0].id = "external_id";
+ jetpack.tabs.focused.contentDocument.getElementsByName("external_id")[0].id = "external_id";
if (inputBox.value.match(/^http.*/)) {
wholeURL = inputBox.value;
- var IBURLArr = parseUri(wholeURL);
- externalHost = IBURLArr.host;
- externalBugID = parseInt(IBURLArr.queryKey["id"]);
+ var IBURLArr = parseURL(wholeURL);
+ console.log("IBURLArr = " + IBURLArr.toSource());
+ externalBugID = parseInt(IBURLArr.params["id"]);
inputBox.value = externalBugID;
- var bugzillaName = getBugzillaName(externalHost);
+ var bugzillaName = getBugzillaName(IBURLArr.host);
selectOption("external_id", bugzillaName);
+ console.log("externalBugID = " + externalBugID);
} else if (!isNaN(inputBox.value)) {
externalBugID = parseInt(inputBox.value);
- var bugzillaID = document.getElementById("external_id").value;
+ var bugzillaID = $("#external_id",document).value;
wholeURL = getWholeURL(bugzillaID,externalBugID);
} else {
// no inputBox.value -- maybe there is an external bug from
@@ -1031,9 +1091,9 @@ function swapXGLMainToCCListHandler(evt) {
addToCC(maintCCAddr);
}
if (isInList(login, CCList)) {
- var selBox = document.getElementById("cc");
+ var selBox = $("#cc",document);
selBox[myAddrIndex].selected = true;
- document.getElementById("removecc").checked = true;
+ $("#removecc",document).checked = true;
}
evt.stopPropagation();
evt.preventDefault();
@@ -1045,7 +1105,7 @@ function swapXGLMainToCCListHandler(evt) {
* @param bugNo
*/
function fixAllHrefs(bugNo) {
- var AList = document.getElementsByTagName("a");
+ var AList = jetpack.tabs.focused.contentDocument.getElementsByTagName("a");
var curA;
var hrefStr = "";
var reProcess = RegExp("");
@@ -1075,15 +1135,18 @@ function generateToolBar(anchor,array) {
}
/**
- * make sure that prefs.js contain password for bugzilla
+ * make sure that prefs.js contain password for bugzilla
* @return None
*/
function checkPrivateValues() {
- var password = GM_getValue("BZpassword","");
- if (password == "") {
- password = prompt("Enter your Bugzilla password","");
- GM_setValue("BZpassword",password);
- }
+ var password = "";
+ if (myStorage.BZpassword) {
+ password = myStorage.BZpassword;
+ }
+ if (password == "") {
+ password = prompt("Enter your Bugzilla password","");
+ myStorage.BZpassword = password;
+ }
}
/**
@@ -1093,17 +1156,17 @@ function checkPrivateValues() {
function getLogin() {
var tmpElement = {};
var tmpText = "";
- var divHeaderElement = document.getElementById("header");
+ var divHeaderElement = $("#header",document);
var headerLiElements = divHeaderElement.getElementsByTagName("ul")[0].getElementsByTagName("li");
var loginLIElement = headerLiElements[headerLiElements.length-1];
- var loginText = strip(loginLIElement.lastChild.textContent);
+ var loginText = trim(loginLIElement.lastChild.textContent);
return loginText;
}
/**
* Main executable functioning actually building all buttons on the page -- separated into function, so that
- * it could be called from onload method of the GM_XMLHTTPRequest.
+ * it could be called from onload method of the XMLHttpRequest.
* @param jsonList Array created from JSON
* @return none
*/
@@ -1119,7 +1182,7 @@ function buildButtons(above,below) {
//----------------------------------------------
//Generate a list of <input> elements in the page
var IBList = [];
- var IBRawList = document.getElementsByTagName("input");
+ var IBRawList = jetpack.tabs.focused.contentDocument.getElementsByTagName("input");
for (var i=0;i<IBRawList.length;i++) {
if ((IBRawList[i].hasAttribute("type")) &&
(IBRawList[i].getAttribute("type")=="submit")) {
@@ -1135,8 +1198,8 @@ function buildButtons(above,below) {
"","ASSIGNED","NODEFAULTASSIGNEE");
// BUTTONS ABOVE THE COMMENT BOX
- var textCommentElement = document.getElementById("comment");
- var brElement = document.createElement("br");
+ var textCommentElement = $("#comment",document);
+ var brElement = jetpack.tabs.focused.contentDocument.createElement("br");
textCommentElement.parentNode.insertBefore(brElement,textCommentElement);
//var brElement = findNextSiblingByTagName(textCommentElement,"BR",false);
var insertAfterElement = brElement;
@@ -1149,7 +1212,7 @@ function buildButtons(above,below) {
// framework
if (queryButtonAvailable){
// Add query search button
- var privateCheckbox = document.getElementById("newcommentprivacy");
+ var privateCheckbox = $("#newcommentprivacy",document);
var newPosition = privateCheckbox.nextSibling.nextSibling.nextSibling;
var newButt = originalButton.cloneNode(true);
newButt.setAttribute("id","newqueryintab");
@@ -1159,14 +1222,21 @@ function buildButtons(above,below) {
},true);
newButt.setAttribute("type","button");
newPosition.parentNode.insertBefore(newButt,newPosition);
- newPosition.parentNode.insertBefore(document.createTextNode("\u00A0"),newButt);
+ newPosition.parentNode.insertBefore(jetpack.tabs.focused.contentDocument.createTextNode("\u00A0"),newButt);
+ }
+ if ((chipIDsGroupings.length >0) && isXorgBug()) {
+ // Add find chip magic button
+ var whiteboardInput = $("#status_whiteboard",document);
+ if (whiteboardInput.value.search(/card_/) == -1) {
+ fillInChipMagic();
+ }
}
// Add setting default assignee
var defAssignee = getDefaultAssignee();
if ((defAssignee.length > 0) && (defAssignee != owner)) {
- var divAssigned = document.getElementById("bz_assignee_edit_container");
- var divAssignedInput = document.getElementById("assigned_to");
- var divAssignedActiveCheckbox = document.getElementById("bz_assignee_edit_action");
+ var divAssigned = $("#bz_assignee_edit_container",document);
+ var divAssignedInput = $("#assigned_to",document);
+ var divAssignedActiveCheckbox = $("#bz_assignee_edit_action",document);
newButt = originalButton.cloneNode(true);
newButt.setAttribute("id","setdefaultassigneebutton");
newButt.setAttribute("value","Def. Assignee");
@@ -1178,31 +1248,41 @@ function buildButtons(above,below) {
},true);
newButt.setAttribute("type","button");
divAssigned.appendChild(newButt);
- newButt.parentNode.insertBefore(document.createTextNode("\u00A0"),newButt);
+ newButt.parentNode.insertBefore(jetpack.tabs.focused.contentDocument.createTextNode("\u00A0"),newButt);
}
- var curComponentElement = document.getElementById("component");
+ var curComponentElement = $("#component",document);
curComponentElement.addEventListener('change',
function(event) {
//FIXME We screw up default assignee value for unknown components
var assignee = getDefaultAssignee();
if (assignee.length > 0) {
- clickMouse(document.getElementById("bz_assignee_edit_action"));
- document.getElementById("assigned_to").value = assignee;
- document.getElementById("set_default_assignee").checked = false;
+ clickMouse($("#bz_assignee_edit_action",document));
+ $("#assigned_to",document).value = assignee;
+ $("#set_default_assignee",document).checked = false;
}
},false);
}
// ****************** STATIC DATA *************************
-
var XMLRPCurl = "https://bugzilla.redhat.com/xmlrpc.cgi";
+var myStorage = jetpack.storage.simple;
// CONFIGURE: The easiest method how to set up the configuration
// value is to uncomment the following line with proper URL as
// the second parameter. Then reload the bug page and comment out
// again.
//GM_setValue("JSONURL","URL-somewhere-with-your-JSON");
-var jsonDataURL = GM_getValue("JSONURL","http://mcepl.fedorapeople.org/scripts/BugZappers_data.json");
-var debug = GM_getValue("debug",false);
+var jsonDataURL = "";
+myStorage.JSONURL = "http://barstool.build.redhat.com/~mcepl/RH_Data.json";
+if (myStorage.JSONURL) {
+ jsonDataURL = myStorage.JSONURL
+}
+if (!jsonDataURL) {
+ jsonDataURL = "http://mcepl.fedorapeople.org/scripts/BugZappers_data.json";
+}
+console.log("jsonDataURL = " + jsonDataURL);
+var PCIIDsURL = "http://mcepl.fedorapeople.org/scripts/drm_pciids.json";
+//var debug = GM_getValue("debug",false);
+var debug = true;
var reqCounter = 0;
var msgStrs = {};
@@ -1211,105 +1291,142 @@ var FedoraColor = "#002867";
var RawhideColor = "#007700"; // or "green"
var RHITColor = "#660066";
var SalmonPink = "#FFE0B0";
-
-// Initialize data from remote URL
-var XMLHTTPRequestDone = false;
-var hashBugzillaName = Array();
-var hashBugzillaWholeURL = Array();
-var defAssigneeList = Array();
-var signatureFedoraString = "";
-var queryButtonAvailable = false;
-var AddrArray = Array();
-GM_xmlhttpRequest({
+var CommentRe = RegExp("^\\s*#");
+var BlankLineRe = RegExp("^\\s*$");
+var ChipsetRE = RegExp("^\\(--\\) ([A-Za-z]+)\\([0-9]?\\): Chipset: (.*)$");
+var ATIgetIDRE = RegExp("^.*\\(ChipID = 0x([0-9a-fA-F]+)\\).*$");
+var PCI_ID_Array = Array();
+
+// For identification of graphics card
+var manuChipStrs = [
+ ["ATI Radeon","ATI","1002"],
+ ["ATI Mobility Radeon","ATI","1002"],
+ ["Intel Corporation","INTEL","8086"],
+ ["NVIDIA","NV","10de"]
+];
+var backTranslateManufacturerPCIID = [{
+ regexp: "ATI Technologies Inc",
+ addr: "1002"
+ },{
+ regexp: "Intel Corporation",
+ addr: "8086"
+ },{
+ regexp: "nVidia Corporation",
+ addr: "10de"
+}];
+
+// Get card translation table
+XMLHttpRequest({
+ // anything called inside of this Request cannot have variables set in MAIN
method: 'GET',
- url: jsonDataURL,
+ url: PCIIDsURL,
onload: function(response) {
- var data = jsonParse(response.responseText);
- msgStrs = data['strings'];
- signatureFedoraString = data['signature'];
- hashBugzillaName = data['bugzillalabelNames'];
- hashBugzillaWholeURL = data['bugzillaIDURLs'];
- // [{'regexp to match component':'email address of an universal maintainer'}, ...]
- AddrArray = data['CCmaintainer'],
- defAssigneeList = data['defaultAssignee'],
- queryButtonAvailable = data['queryButton'];
- buildButtons(data['topRow'],data['bottomRow']);
- if (signatureFedoraString.length > 0) {
- console.logs("yes, add signature listener");
- // (or a form named "changeform")
- document.forms[1].addEventListener("submit",addSignature,true);
- }
-
-
+ PCI_ID_Array = JSON.parse(response.responseText);
}
});
-// ******************** MAIN *********************
-
-function main(document) {
- // FOR DEBUGGING ONLY!!!
- if (debug) {
- console.log("signatureFedoraString = " + signatureFedoraString);
- var urlWarning = document.createElement("span");
- urlWarning.appendChild(document.createTextNode(jsonDataURL));
- urlWarning.style.fontSize = "x-small";
- var urlWarningParent = document.getElementById("bz_field_status");
- urlWarningParent.appendChild(urlWarning);
- }
-
- // *** collect information about the bug
- var bugNo = getBugNo();
- var reporter = getReporter();
- var owner = getAssignedTo();
- var CCList = getCCList();
- var product = getProduct();
- var version = getVersion();
- var issueTracker = getIssueTracker();
- var maintCCAddr = getCCMaintainer();
- var component = getComponent();
- checkPrivateValues();
-
- var login = getLogin();
- var password = GM_getValue("BZpassword");
-
- //*** set the main environment
- setBranding(product,version,issueTracker);
-
- // fix process.cgi HREFs so that to avoid confusion on IRC
- if (document.location.href.search(/process.cgi/) != -1) {
- fixAllHrefs(bugNo);
- }
-
- // ----------------------------------------------
- // fix attachments
- var aTable = getAttTable();
- var badAttachments = getAttachments(aTable).filter(isOctetStream);
-
- if (badAttachments.length>0) {
- var titleElement = $("bz_alias_short_desc_container");
- titleElement.style.backgroundColor = "olive";
- titleElement.appendChild(createFixAllButton(badAttachments));
- for(var i=0;i<badAttachments.length;i++) {
- addTextLink(badAttachments[i]);
- }
- }
-
- var originalButton = document.getElementById("commit"); // source button to be copied from
- originalButton.setAttribute("accesskey",'s');
- originalButton.setAttribute("value","Submit");
+// ******************** MAIN *********************
+function main() {
+ var hashBugzillaName = Array();
+ var hashBugzillaWholeURL = Array();
+ var defAssigneeList = Array();
+ var signatureFedoraString = "";
+ // TODO we should have an array SpecialFlags instead of multiple Boolean variables
+ var queryButtonAvailable = false;
+ var chipIDsGroupings = Array();
+ var AddrArray = Array();
+ // Initialize data from remote URL
+ var XMLHttpRequestDone = false;
+ var XorgLogAttList = Array();
+ var XorgLogAttListIndex = 0;
+
+ // Get JSON configuration data
+ XMLHttpRequest({
+ // anything called inside of this Request cannot have variables set in MAIN
+ method: 'GET',
+ url: jsonDataURL,
+ onload: function(response) {
+ var data = JSON.parse(response.responseText);
+ msgStrs = data['strings'];
+ signatureFedoraString = data['signature'];
+ hashBugzillaName = data['bugzillalabelNames'];
+ hashBugzillaWholeURL = data['bugzillaIDURLs'];
+ AddrArray = data['CCmaintainer'];
+ defAssigneeList = data['defaultAssignee'];
+ queryButtonAvailable = data['queryButton'];
+ chipIDsGroupings = data['chipIDsGroupings'];
+ buildButtons(data['topRow'],data['bottomRow']);
+ if (signatureFedoraString.length > 0) {
+ // (or a form named "changeform")
+ document.forms[1].addEventListener("submit",addSignature,true);
+ }
+ }
+ });
+
+ // FOR DEBUGGING ONLY!!!
+ if (debug) {
+ //console.log("signatureFedoraString = " + signatureFedoraString);
+ $("#bz_field_status",document).append("<span inline='font-size:x-small'>"+jsonDataURL+"</span>");
+ }
+
+ // *** collect information about the bug
+ // var bugNo = getBugNo();
+ console.log("BBB");
+ var bugNo = $("#title > p:first",document).text();
+ console.log("BBB");
+ console.log(bugNo);
+ var reporter = $('#bz_show_bug_column_2 > .fn:first',document).text();
+ var owner = $.trim($("#bz_assignee_edit_container > .fn:first",document).text()).toLowerCase();
+ var CCList = $("select[name*='cc']:first > *[value]",document);
+ console.log(typeof(CCList));
+ var product = getProduct();
+ var version = getVersion();
+ var issueTracker = getIssueTracker();
+ var maintCCAddr = getCCMaintainer(AddrArray);
+ var component = getComponent();
+
+ checkPrivateValues();
+
+ var login = getLogin();
+ var password = myStorage.BZpassword;
+
+ //*** set the main environment
+ setBranding(product,version,issueTracker);
+
+ // fix process.cgi HREFs so that to avoid confusion on IRC
+ if (document.location.href.search(/process.cgi/) != -1) {
+ fixAllHrefs(bugNo);
+ }
+
+ fixAttachments();
+
+ var originalButton = document.getElementById("commit"); // source button to be copied from
+ originalButton.setAttribute("accesskey",'s');
+ originalButton.setAttribute("value","Submit");
}
-// @require jquery.rpc.js
+// https://bugzilla.redhat.com/show_bug.cgi?id=451951
+//
-jetpack.future.import("pageMods");
-jetpack.tabs.focused.contentDocument.write("<script type='text/javascript'>$.getScript('http://mcepl.fedorapeople.org/scripts/jquery.rpc.js');</script>",function() {
-console.log("jquery.rpc.js loaded");
-});
+// Interesting JEPs
+// https://wiki.mozilla.org/Labs/Jetpack/JEP/10 -- clipboard access
+// https://wiki.mozilla.org/Labs/Jetpack/JEP/17 -- page mods
+var callback = function(document) {
+ jetpack.statusBar.append({
+ onReady: function(widget) {
+ console.log("Boom!");
+ main();
+ },
+ });
+};
var options = {};
options.matches = [
- "https://bugzilla.redhat.com/show_bug.cgi*",
- "https://bugzilla.redhat.com/process_bug.cgi"];
-jetpack.pageMods.add(main, options);
-jetpack.tabs.focused.
-$('#header').css('backgroundColor','red')
+ "https://bugzilla.redhat.com/show_bug.cgi*",
+ "https://bugzilla.redhat.com/process_bug.cgi"];
+jetpack.pageMods.add(callback, options);
+
+
+Chyba: document is not defined
+Zdrojový soubor: file:///home/matej/Dokumenty/projekty/triage/jetpack/bugzillaBugTriage.js
+Řádek: 1369