diff --git a/classes/rpc.php b/classes/rpc.php index 139f1fe49..8144f6b97 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -829,5 +829,20 @@ class RPC extends Handler_Protected { } } + function getlinkbyid() { + $id = db_escape_string($_REQUEST['id']); + + $result = db_query($this->link, "SELECT link FROM ttrss_entries, ttrss_user_entries + WHERE ref_id = '$id' AND ref_id = id AND owner_uid = ". $_SESSION["uid"]); + + if (db_num_rows($result) != 0) { + $link = db_fetch_result($result, 0, "link"); + + echo json_encode(array("link" => $link)); + } else { + echo json_encode(array("error" => "ARTICLE_NOT_FOUND")); + } + } + } ?> diff --git a/js/viewfeed.js b/js/viewfeed.js index 5567c717a..35c9c12a7 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1824,6 +1824,12 @@ function initHeadlinesMenu() { openArticleInNewWindow(this.getParent().callerRowId); }})); + menu.addChild(new dijit.MenuItem({ + label: __("Display article URL"), + onClick: function(event) { + displayArticleUrl(this.getParent().callerRowId); + }})); + menu.addChild(new dijit.MenuSeparator()); menu.addChild(new dijit.MenuItem({ @@ -2035,3 +2041,21 @@ function changeScore(id, pic) { exception_error("changeScore", e); } } + +function displayArticleUrl(id) { + try { + var query = "op=rpc&method=getlinkbyid&id=" + param_escape(id); + + new Ajax.Request("backend.php", { + parameters: query, + onComplete: function(transport) { + var reply = JSON.parse(transport.responseText); + + if (reply && reply.link) { + prompt(__("Article URL:"), reply.link); + } + } }); + } catch (e) { + exception_error("changeScore", e); + } +}