summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions.js39
-rw-r--r--modules/pref-filters.php5
-rw-r--r--modules/pref-labels.php16
3 files changed, 54 insertions, 6 deletions
diff --git a/functions.js b/functions.js
index af18f8383..ae4737dca 100644
--- a/functions.js
+++ b/functions.js
@@ -1983,7 +1983,7 @@ function uploadFeedIcon() {
}
}
-function addLabel() {
+function addLabel(select, callback) {
try {
@@ -1999,14 +1999,19 @@ function addLabel() {
var query = "?op=pref-labels&subop=add&caption=" +
param_escape(caption);
+ if (select)
+ query += "&output=select";
+
notify_progress("Loading, please wait...", true);
- if (inPreferences()) active_tab = "labelConfig";
+ if (inPreferences() && !select) active_tab = "labelConfig";
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
- if (inPreferences()) {
+ if (callback) {
+ callback(transport);
+ } else if (inPreferences()) {
infobox_submit_callback2(transport);
} else {
updateFeedList();
@@ -2232,3 +2237,31 @@ function genUrlChangeKey(feed, is_cat) {
return false;
}
+function labelSelectOnChange(elem) {
+ try {
+ var value = elem[elem.selectedIndex].value;
+ var def = elem.getAttribute('default');
+
+ if (value == "ADD_LABEL") {
+
+ if (def)
+ dropboxSelect(elem, def);
+ else
+ elem.selectedIndex = 0;
+
+ addLabel(elem, function(transport) {
+ var response = transport.responseXML;
+
+ var payload = response.getElementsByTagName("payload")[0];
+
+ if (payload)
+ elem.innerHTML = payload.firstChild.nodeValue;
+ });
+ }
+
+ } catch (e) {
+ exception_error("catSelectOnChange", e);
+ }
+}
+
+
diff --git a/modules/pref-filters.php b/modules/pref-filters.php
index f3ca8e4cb..c629f9c18 100644
--- a/modules/pref-filters.php
+++ b/modules/pref-filters.php
@@ -523,7 +523,8 @@
$result = db_query($link, "SELECT caption FROM ttrss_labels2
WHERE owner_uid = '".$_SESSION["uid"]."' ORDER BY caption");
- print "<select name=\"$name\" style=\"$style\">";
+ print "<select default=\"$value\" name=\"$name\" style=\"$style\"
+ onchange=\"labelSelectOnChange(this)\" >";
while ($line = db_fetch_assoc($result)) {
@@ -533,6 +534,8 @@
}
+ print "<option value=\"ADD_LABEL\">" .__("Add label...") . "</option>";
+
print "</select>";
diff --git a/modules/pref-labels.php b/modules/pref-labels.php
index a744b9f6a..d9cacecc3 100644
--- a/modules/pref-labels.php
+++ b/modules/pref-labels.php
@@ -93,15 +93,27 @@
}
if ($subop == "add") {
-
$caption = db_escape_string($_REQUEST["caption"]);
+ $output = db_escape_string($_REQUEST["output"]);
if ($caption) {
if (label_create($link, $caption)) {
- print T_sprintf("Created label <b>%s</b>", htmlspecialchars($caption));
+ if (!$output) {
+ print T_sprintf("Created label <b>%s</b>", htmlspecialchars($caption));
+ }
}
+ if ($output == "select") {
+ header("Content-Type: text/xml");
+
+ print "<rpc-reply><payload><![CDATA[";
+
+ print_label_select($link, "select_label",
+ $caption, "");
+
+ print "]]></payload></rpc-reply>";
+ }
}
return;