//Released under the MIT/X11 license
//http://www.opensource.org/licenses/mit-license.php
var reqCounter = 0; // TODO should be probably a dict indexed by called method
/**
* Callback function for the XMLRPC request
*
* @param ret
* Object with xmlhttprequest response with attributes: + status -- int
* return code + statusText + responseHeaders + responseText
*/
function XMLRPCcallback() {
reqCounter--;
if (reqCounter <= 0) {
setTimeout(function() {
window.location.reload(true);
}, 1000);
}
}
/**
* The worker function -- call XMLRPC to fix MIME type of the particular
* attachment
*
* @param id
* Integer with the attachment id to be fixed
* @param type
* String with the new MIME type, optional defaults to "text/plain"
* @param email
* Boolean whether email should be sent to appropriate person; option,
* defaults to false
*
* updateAttachMimeType($data_ref, $username, $password)
*
* Update the attachment mime type of an attachment. The first argument is a
* data hash containing information on the new MIME type and the attachment id
* that you want to act on.
*
* $data_ref = { "attach_id" => "<Attachment ID>", # Attachment ID to perform
* MIME type change on. "mime_type" => "<New MIME Type Value>", # Legal MIME
* type value that you want to change the attachment to. "nomail" => 0, #
* OPTIONAL Flag that is either 1 or 0 if you want email to be sent or not for
* this change };
*
*/
function fixAttachById(id, XMLRPCURL, type, email) {
if (type === undefined) {
type = "text/plain";
}
if (email === undefined) {
email = false;
}
// https://bugzilla.redhat.com/\
// docs/en/html/api/extensions/compat_xmlrpc/code/webservice.html
// test on https://bugzilla.redhat.com/show_bug.cgi?id=485145
var params = {
'attach_id' : id,
'mime_type' : type,
'nomail' : !email
};
self.postMessage(new Message("MakeJSONRPCall", {
url : XMLRPCURL.replace("xmlrpc.cgi", "jsonrpc.cgi"),
method : "bugzilla.updateAttachMimeType",
login : getLogin(),
params : params,
callRPC : "FixAttachmentMIMECallback"
}));
reqCounter++;
}
/**
* Add a link to the bad attachment for fixing it.
*
* @param
* <TR> DOM jQuery element with a bad attachment
* @return none
*/
function addTextLink(att, xmlRpcUrl) {
var elemS = att.element.getElementsByTagName("td");
var elem = elemS[elemS.length - 1];
createDeadLink("addFix2TextLink", "text", elem, fixAttachById,
[
att.id, xmlRpcUrl
], "br");
}