aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/fixingAttMIME.js
blob: 99c32f788a6804807510e84ea499376d7a1f22ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// 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
  });

  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");
}