aboutsummaryrefslogtreecommitdiffstats
path: root/data/rhlib/fixingAttMIME.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/rhlib/fixingAttMIME.js')
-rw-r--r--data/rhlib/fixingAttMIME.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/data/rhlib/fixingAttMIME.js b/data/rhlib/fixingAttMIME.js
new file mode 100644
index 0000000..365cfae
--- /dev/null
+++ b/data/rhlib/fixingAttMIME.js
@@ -0,0 +1,90 @@
+// 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");
+}