diff options
-rw-r--r-- | functions.php | 32 | ||||
-rw-r--r-- | modules/backend-rpc.php | 29 | ||||
-rw-r--r-- | 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 @@ <li onclick=\"$tog_unread_link\"> ".__('Unread')."</li> <li onclick=\"$tog_marked_link\"> ".__('Starred')."</li> <li onclick=\"$tog_published_link\"> ".__('Published')."</li> - <li><span class=\"insensitive\">--------</span></li> + <!-- <li><span class=\"insensitive\">--------</span></li> --> <li><span class=\"insensitive\">".__('Mark as read:')."</span></li> <li onclick=\"$catchup_sel_link\"> ".__('Selection')."</li>"; @@ -4045,9 +4045,21 @@ print "<li onclick=\"$catchup_feed_link\"> ".__('Entire feed')."</li>"; - print "<li><span class=\"insensitive\">--------</span></li>"; - print "<li><span class=\"insensitive\">".__('Other actions:')."</span></li>"; - + //print "<li><span class=\"insensitive\">--------</span></li>"; + print "<li><span class=\"insensitive\">".__('Assign label:')."</span></li>"; + + $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 "<li onclick=\"javascript:selectionAssignLabel($label_id)\"> + $label_caption</li>"; + } + print "</ul></li></ul>"; print "</td>"; @@ -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 "<rpc-reply><counters>"; + + if ($label) { + getGlobalCounters($link); + getLabelCounters($link); + if (get_pref($link, 'ENABLE_FEED_CATS')) { + getCategoryCounters($link); + } + } + + print "</counters></rpc-reply>"; + + return; + } + print "<rpc-reply><error>Unknown method: $subop</error></rpc-reply>"; } ?> 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; |