// 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) {
var params = [];
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
params.push({
'attach_id' : id,
'mime_type' : type,
'nomail' : !email
});
self.postMessage(new Message("MakeXMLRPCall", {
url: XMLRPCURL,
login: getLogin(),
method: "bugzilla.updateAttachMimeType",
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(row, xmlRpcUrl) {
var elemS = row[4].getElementsByTagName("td");
var elem = elemS[elemS.length - 1];
createDeadLink("addFix2TextLink", "text", elem,
fixAttachById, [row[1], xmlRpcUrl], "br");
}