From 1380f8eed4015a2759f9f49e9c90145c464ecd0c Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 18 Jan 2009 15:36:50 +0100 Subject: [PATCH] allow adding/removing labels from frontend --- functions.php | 25 +++++++++++++++++++++++++ modules/pref-feeds.php | 2 ++ modules/pref-labels.php | 22 +--------------------- tt-rss.js | 41 ++++++++++++++++++++++++++++++++++++----- tt-rss.php | 2 ++ 5 files changed, 66 insertions(+), 26 deletions(-) diff --git a/functions.php b/functions.php index 5bcfa3e35..1d5210677 100644 --- a/functions.php +++ b/functions.php @@ -6102,4 +6102,29 @@ (label_id, article_id) VALUES ('$label_id', '$id')"); } } + + function label_remove($link, $id, $owner_uid) { + + db_query($link, "BEGIN"); + + $result = db_query($link, "SELECT caption FROM ttrss_labels2 + WHERE id = '$id'"); + + $caption = db_fetch_result($result, 0, "caption"); + + $result = db_query($link, "DELETE FROM ttrss_labels2 WHERE id = '$id' + AND owner_uid = " . $_SESSION["uid"]); + + if (db_affected_rows($link, $result) != 0 && $caption) { + + /* Disable filters that reference label being removed */ + + db_query($link, "UPDATE ttrss_filters SET + enabled = false WHERE action_param = '$caption' + AND action_id = 7 + AND owner_uid = " . $_SESSION["uid"]); + } + + db_query($link, "COMMIT"); + } ?> diff --git a/modules/pref-feeds.php b/modules/pref-feeds.php index ee4e4d1f8..8b715e48f 100644 --- a/modules/pref-feeds.php +++ b/modules/pref-feeds.php @@ -717,6 +717,8 @@ if (file_exists($icons_dir . "/$id.ico")) { unlink($icons_dir . "/$id.ico"); } + } else { + label_remove($link, -11-$id, $_SESSION["uid"]); } } } diff --git a/modules/pref-labels.php b/modules/pref-labels.php index 797d2de3f..c645b12a1 100644 --- a/modules/pref-labels.php +++ b/modules/pref-labels.php @@ -50,30 +50,10 @@ $ids = split(",", db_escape_string($_GET["ids"])); - db_query($link, "BEGIN"); - foreach ($ids as $id) { - $result = db_query($link, "SELECT caption FROM ttrss_labels2 - WHERE id = '$id'"); - - $caption = db_fetch_result($result, 0, "caption"); - - $result = db_query($link, "DELETE FROM ttrss_labels2 WHERE id = '$id' - AND owner_uid = " . $_SESSION["uid"]); - - if (db_affected_rows($link, $result) != 0 && $caption) { - - /* Disable filters that reference label being removed */ - - db_query($link, "UPDATE ttrss_filters SET - enabled = false WHERE action_param = '$caption' - AND action_id = 7 - AND owner_uid = " . $_SESSION["uid"]); - } + label_remove($link, $id, $_SESSION["uid"]); } - db_query($link, "COMMIT"); - } if ($subop == "add") { diff --git a/tt-rss.js b/tt-rss.js index fba1158f0..9757639b3 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -562,11 +562,6 @@ function quickMenuGo(opid) { return; } - if (actid <= 0) { - alert(__("You can't unsubscribe from this kind of feed.")); - return; - } - if (!actid) { alert(__("Please select some feed first.")); return; @@ -627,6 +622,10 @@ function quickMenuGo(opid) { displayDlg("quickAddFilter", getActiveFeedId()); } + if (opid == "qmcAddLabel") { + addLabel(); + } + if (opid == "qmcRescoreFeed") { rescoreCurrentFeed(); } @@ -1391,3 +1390,35 @@ function hotkey_handler(e) { function feedsSortByUnread() { return feeds_sort_by_unread; } + +function addLabel() { + + try { + + var caption = prompt(__("Please enter label caption:"), ""); + + if (caption != undefined) { + + if (caption == "") { + alert(__("Can't create label: missing caption.")); + return false; + } + + var query = "backend.php?op=pref-labels&subop=add&caption=" + + param_escape(caption); + + notify_progress("Loading, please wait...", true); + + new Ajax.Request(query, { + onComplete: function(transport) { + updateFeedList(); + } }); + + } + + } catch (e) { + exception_error("addLabel", e); + } +} + + diff --git a/tt-rss.php b/tt-rss.php index 6e3d19a29..3454a3484 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -160,6 +160,8 @@ window.onload = init; + +