aboutsummaryrefslogtreecommitdiffstats
path: root/lib/prompts.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2010-07-16 17:45:14 +0200
committerMatěj Cepl <mcepl@redhat.com>2010-07-16 17:45:14 +0200
commitd53b9140d0768522eeb6a024a17fc41dc73b4966 (patch)
treeb34cd2e97df964d3f7012bb110b70d0cf8025422 /lib/prompts.js
parent641d7c3743be440112952140ca799b6748b261c7 (diff)
downloadbugzilla-triage-d53b9140d0768522eeb6a024a17fc41dc73b4966.tar.gz
Create a special library prompts, add prompts.prompt, and switch bzpage
and logger to use it.
Diffstat (limited to 'lib/prompts.js')
-rw-r--r--lib/prompts.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/lib/prompts.js b/lib/prompts.js
new file mode 100644
index 0000000..ac21c49
--- /dev/null
+++ b/lib/prompts.js
@@ -0,0 +1,82 @@
+/*global exports: false, require: false, console: false */
+/*jslint onevar: false */
+// Released under the MIT/X11 license
+// http://www.opensource.org/licenses/mit-license.php
+"use strict";
+// ==============================================================
+var {Cc,Ci} = require("chrome");
+// just for JSLINT var Cc, Ci = {};
+var promptTitle = "Bugzilla Triage Script";
+
+/**
+ * general prompts for a string method
+ *
+ * @return String with the password
+ */
+exports.prompt = function prompt(prompt, defaultValue) {
+ var stringValue = {
+ value: defaultValue ? defaultValue : ""
+ };
+
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+ var result = prompts.prompt(null, promptTitle, prompt,
+ stringValue, null, {});
+ if (result) {
+ return stringValue.value;
+ } else {
+ return undefined;
+ }
+};
+
+/**
+ * returns password with a special password
+ *
+ * @return String with the password
+ */
+exports.promptPassword = function promptPassword(prompt) {
+ if (!prompt) { // either undefined or null
+ prompt = "Enter password:";
+ }
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+ var password = {
+ value : ""
+ }; // default the password to pass
+ var check = {
+ value : true
+ }; // default the checkbox to true
+ var result = prompts.promptPassword(null, "Bugzilla Triage Script", prompt,
+ password, null, check);
+ // result is true if OK was pressed, false if cancel was pressed.
+ // password.value is set if OK was pressed.
+ // The checkbox is not displayed.
+ if (result) {
+ return password.value ? password.value : null;
+ } else {
+ return undefined;
+ }
+};
+
+/**
+ * YES/NO prompt; returns boolean or null (for Cancel)
+ * https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPromptService
+ */
+exports.promptYesNoCancel = function promptOKNoCancel(prompt) {
+ if (!prompt) { // either undefined or null
+ console.error("Prompt is required!");
+ return undefined;
+ }
+ var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+
+ var result = prompts.confirmEx(null, "Bugzilla Triage Script", prompt,
+ prompts.STD_YES_NO_BUTTONS, null, null, null, null, {});
+ if (result === 0) {
+ return true;
+ } else if (result === 1) {
+ return false;
+ } else {
+ return null;
+ }
+};