diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/api.php | 13 | ||||
-rw-r--r-- | classes/handler/public.php | 70 | ||||
-rw-r--r-- | classes/pref/feeds.php | 8 | ||||
-rw-r--r-- | classes/rpc.php | 2 |
4 files changed, 90 insertions, 3 deletions
diff --git a/classes/api.php b/classes/api.php index 2e9c1b902..cce1d2a78 100644 --- a/classes/api.php +++ b/classes/api.php @@ -2,7 +2,7 @@ class API extends Handler { - const API_LEVEL = 3; + const API_LEVEL = 4; const STATUS_OK = 0; const STATUS_ERR = 1; @@ -419,6 +419,17 @@ class API extends Handler { print $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD')); } + function shareToPublished() { + $title = db_escape_string(strip_tags($_REQUEST["title"])); + $url = db_escape_string(strip_tags($_REQUEST["url"])); + $content = db_escape_string(strip_tags($_REQUEST["content"])); + + if (create_published_article($this->link, $title, $url, $content, $_SESSION["uid"])) { + print $this->wrap(self::STATUS_OK, array("status" => 'OK')); + } else { + print $this->wrap(self::STATUS_ERR, array("error" => 'Publishing failed')); + } + } } ?> diff --git a/classes/handler/public.php b/classes/handler/public.php index 983f0aaa9..cd46fa033 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -306,5 +306,75 @@ class Handler_Public extends Handler { // Update all feeds needing a update. update_daemon_common($this->link, 0, true, false); } + + function sharepopup() { + header('Content-Type: text/html; charset=utf-8'); + print "<html> + <head> + <title>Tiny Tiny RSS</title> + <link rel=\"stylesheet\" type=\"text/css\" href=\"utility.css\"> + <script type=\"text/javascript\" src=\"lib/prototype.js\"></script> + <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/> + </head> + <body id='sharepopup'>"; + + $action = $_REQUEST["action"]; + + if ($_SESSION["uid"]) { + + if (!$action) { + + print "<table height='100%' width='100%'><tr><td colspan='2'>"; + print "<h1>Publish with Tiny Tiny RSS</h1>"; + print "</td></tr>"; + + print "<form id='share_form' name='share_form'>"; + + print "<input type=\"hidden\" name=\"op\" value=\"sharepopup\">"; + print "<input type=\"hidden\" name=\"action\" value=\"share\">"; + + $title = htmlspecialchars($_REQUEST["title"]); + $url = htmlspecialchars($_REQUEST["url"]); + + print "<tr><td>".__("Title:")."</td><td width='80%'><input name='title' value=\"$title\"></td></tr>"; + print "<tr><td>".__("URL:")."</td><td><input name='url' value=\"$url\"></td></tr>"; + print "<tr><td>".__("Content:")."</td><td><input name='content' value=\"\"></td></tr>"; + + print "<script type='text/javascript'>"; + print "document.forms[0].title.focus();"; + print "</script>"; + + print "<tr><td colspan='2'> + <button type=\"submit\">". + __('Publish')."</button> + <button onclick=\"return window.close()\">". + __('Cancel')."</button> + </div>"; + + print "</form>"; + print "</td></tr></table>"; + + print "</body></html>"; + + } else { + + $title = db_escape_string(strip_tags($_REQUEST["title"])); + $url = db_escape_string(strip_tags($_REQUEST["url"])); + $content = db_escape_string(strip_tags($_REQUEST["content"])); + + create_published_article($this->link, $title, $url, $content, $_SESSION["uid"]); + + print "<script type='text/javascript'>"; + print "window.close();"; + print "</script>"; + } + + } else { + + print "<table><tr><td>" . __("Not logged in.") . "</td></tr></table>"; + + } + } + } ?> diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index ef308ee1c..d6bb94ebe 100644 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -1557,7 +1557,7 @@ class Pref_Feeds extends Handler_Protected { print "</div>"; # pane } - print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Subscribing using bookmarklet')."\">"; + print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Bookmarklets')."\">"; print "<p>" . __("Drag the link below to your browser toolbar, open the feed you're interested in in your browser and click on the link to subscribe to it.") . "</p>"; @@ -1569,6 +1569,12 @@ class Pref_Feeds extends Handler_Protected { print "<a href=\"$bm_url\" class='bookmarklet'>" . __('Subscribe in Tiny Tiny RSS'). "</a>"; + print "<p>" . __("Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS") . "</p>"; + + $bm_url = htmlspecialchars("javascript:(function(){var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='".SELF_URL_PATH."/public.php?op=sharepopup',l=d.location,e=encodeURIComponent,g=f+'&title='+((e(s))?e(s):e(document.title))+'&url='+e(l.href);function a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=500,height=200')){l.href=g;}}a();})()"); + + print "<a href=\"$bm_url\" class='bookmarklet'>" . __('Share with Tiny Tiny RSS'). "</a>"; + print "</div>"; #pane print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Published & shared articles / Generated feeds')."\">"; diff --git a/classes/rpc.php b/classes/rpc.php index db34a6c9d..733649139 100644 --- a/classes/rpc.php +++ b/classes/rpc.php @@ -2,7 +2,7 @@ class RPC extends Handler_Protected { function csrf_ignore($method) { - $csrf_ignored = array("sanitycheck", "buttonplugin", "exportget"); + $csrf_ignored = array("sanitycheck", "buttonplugin", "exportget", "sharepopup"); return array_search($method, $csrf_ignored) !== false; } |