From b8a637f3d2eff88de1d2d76d9014cc0a4086d9d1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 18 Jan 2009 09:47:34 +0100 Subject: [PATCH] implement assign-to-label in subtoolbar --- functions.php | 32 ++++++++++++++++++++++++++++---- modules/backend-rpc.php | 29 +++++++++++++++++++++++++++++ viewfeed.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 4 deletions(-) diff --git a/functions.php b/functions.php index 2a3472902..665825e41 100644 --- a/functions.php +++ b/functions.php @@ -4027,7 +4027,7 @@
  •   ".__('Unread')."
  •   ".__('Starred')."
  •   ".__('Published')."
  • -
  • --------
  • +
  • ".__('Mark as read:')."
  •   ".__('Selection')."
  • "; @@ -4045,9 +4045,21 @@ print "
  •   ".__('Entire feed')."
  • "; - print "
  • --------
  • "; - print "
  • ".__('Other actions:')."
  • "; - + //print "
  • --------
  • "; + print "
  • ".__('Assign label:')."
  • "; + + $result = db_query($link, "SELECT id, caption FROM ttrss_labels2 WHERE + owner_uid = '".$_SESSION["uid"]."' ORDER BY caption"); + + while ($line = db_fetch_assoc($result)) { + + $label_id = $line["id"]; + $label_caption = $line["caption"]; + + print "
  • +   $label_caption
  • "; + } + print ""; print ""; @@ -6047,6 +6059,18 @@ } } + function label_find_caption($link, $label, $owner_uid) { + $result = db_query($link, + "SELECT caption FROM ttrss_labels2 WHERE id = '$label' + AND owner_uid = '$owner_uid' LIMIT 1"); + + if (db_num_rows($result) == 1) { + return db_fetch_result($result, 0, "caption"); + } else { + return ""; + } + } + function label_add_article($link, $id, $label, $owner_uid) { $label_id = label_find_id($link, $label, $owner_uid); diff --git a/modules/backend-rpc.php b/modules/backend-rpc.php index 4d65ee23e..691771f73 100644 --- a/modules/backend-rpc.php +++ b/modules/backend-rpc.php @@ -424,6 +424,35 @@ return; } + if ($subop == "assignToLabel") { + + $ids = split(",", db_escape_string($_REQUEST["ids"])); + $label_id = db_escape_string($_REQUEST["lid"]); + + $label = label_find_caption($link, $label_id, $_SESSION["uid"]); + + if ($label) { + + foreach ($ids as $id) { + label_add_article($link, $id, $label, $_SESSION["uid"]); + } + } + + print ""; + + if ($label) { + getGlobalCounters($link); + getLabelCounters($link); + if (get_pref($link, 'ENABLE_FEED_CATS')) { + getCategoryCounters($link); + } + } + + print ""; + + return; + } + print "Unknown method: $subop"; } ?> diff --git a/viewfeed.js b/viewfeed.js index a93f886de..b0cb068e1 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -850,6 +850,38 @@ function toggleUnread(id, cmode, effect) { } } +function selectionAssignLabel(id) { + try { + + var ids = getSelectedArticleIds2(); + + if (ids.length == 0) { + alert(__("No articles are selected.")); + return; + } + + var ok = confirm(__("Assign selected articles to label?")); + + if (ok) { + + var query = "backend.php?op=rpc&subop=assignToLabel&ids=" + + param_escape(ids.toString()) + "&lid=" + param_escape(id); + +// notify_progress("Loading, please wait..."); + + new Ajax.Request(query, { + onComplete: function(transport) { + all_counters_callback2(transport); + } }); + + } + + } catch (e) { + exception_error("selectionAssignLabel", e); + + } +} + function selectionToggleUnread(cdm_mode, set_state, callback_func, no_error) { try { var rows;