]> git.wh0rd.org - tt-rss.git/commitdiff
tweak article notes
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Mon, 29 Nov 2010 17:25:51 +0000 (20:25 +0300)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Mon, 29 Nov 2010 17:36:39 +0000 (20:36 +0300)
functions.php
modules/backend-rpc.php
modules/popup-dialog.php
tt-rss.css
viewfeed.js

index 01785e38c8e5aa7a0fcd9c44cdfbbd762c403302..7c12d538d4368c0e67406a45a614dcb2a883f6f7 100644 (file)
                                                onclick=\"postOpenInNewTab(event, $id)\"
                                                alt='Zoom' title='".__('Open article in new tab')."'>";
 
-                               $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
+                               //$note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
 
                                print "<img src=\"".theme_image($link, 'images/art-pub-note.png')."\" 
                                                class='tagsPic' style=\"cursor : pointer\"
-                                               onclick=\"publishWithNote($id, '$note_escaped')\"
-                                               alt='PubNote' title='".__('Publish article with a note')."'>";
+                                               onclick=\"editArticleNote($id)\"
+                                               alt='PubNote' title='".__('Edit article note')."'>";
 
                                if (DIGEST_ENABLE) {
                                        print "<img src=\"".theme_image($link, 'images/art-email.png')."\" 
                                href=\"".htmlspecialchars($feed_site_url)."\">".
                                $feed_icon . "</a></div>";
 
-                       print "<div class=\"postContent\">";
-
-                       $article_content = sanitize_rss($link, $line["content"], false, false,
-                               $feed_site_url);
-
                        print "<div id=\"POSTNOTE-$id\">";
                                if ($line['note']) {
                                        print format_article_note($id, $line['note']);
                                }
                        print "</div>";
 
+                       print "<div class=\"postContent\">";
+
+                       $article_content = sanitize_rss($link, $line["content"], false, false,
+                               $feed_site_url);
+
                        print $article_content;
 
                        print_article_enclosures($link, $id, $always_display_enclosures, 
                                                alt='Zoom' 
                                                title='".__('Open article in new tab')."'>";
 
-                                       $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
+                                       //$note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
 
                                        print "<img src=\"images/art-pub-note.png\"
                                                style=\"cursor : pointer\" style=\"cursor : pointer\"
-                                               onclick=\"publishWithNote($id, '$note_escaped')\"
-                                               alt='PubNote' title='".__('Publish article with a note')."'>";
+                                               onclick=\"editArticleNote($id)\"
+                                               alt='PubNote' title='".__('Edit article note')."'>";
 
                                        if (DIGEST_ENABLE) {
                                                print "<img src=\"".theme_image($link, 'images/art-email.png')."\" 
 
        function format_article_note($id, $note) {
 
-               $note_escaped = htmlspecialchars($note, ENT_QUOTES);
-
-               $str = "<div class='articleNote'>";
-               $str .= $note;
-               $str .= "<div class='articleNoteOps'>";
-               $str .= "<a href=\"javascript:publishWithNote($id, '$note_escaped')\">".
-                       __('edit note')."</a>";
-               $str .= "</div>";
-               $str .= "</div>";
+               $str = "<div class='articleNote' title=\"".__('edit note')."\" 
+                       onclick=\"editArticleNote($id)\">$note</div>";
 
                return $str;
        }
index b8877da20eca1197d9bb7ea317fa9503cf7a0039..239ff60f6b8eb9f4e75f12df3fdb802e02cba57f 100644 (file)
                        return;
                }
 
-               // XML method
                if ($subop == "publ") {
+                       header("Content-Type: text/plain");
+
                        $pub = $_REQUEST["pub"];
                        $id = db_escape_string($_REQUEST["id"]);
                        $note = trim(strip_tags(db_escape_string($_REQUEST["note"])));
                                $pub = "false";
                        }
 
-                       if ($note != 'undefined') {
-                               $note_qpart = "note = '$note',";
-                       }
-
-                       // FIXME this needs collision testing
-
                        $result = db_query($link, "UPDATE ttrss_user_entries SET 
-                               $note_qpart
                                published = $pub
                                WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
 
-
-                       print "<rpc-reply>";
-                       
-                       if ($note != 'undefined') {
-                               $note_size = strlen($note);
-                               print "<note id=\"$id\" size=\"$note_size\">";
-                               print "<![CDATA[" . format_article_note($id, $note) . "]]>";
-                               print "</note>";
-                       }
-
-                       print "<message>UPDATE_COUNTERS</message>";
-
-                       print "</rpc-reply>";
-
+                       print json_encode(array("message" => "UPDATE_COUNTERS"));
                        return;
                }
 
                        return;
                }
 
+               if ($subop == "setNote") {
+                       header("Content-Type: text/plain");
+
+                       $id = db_escape_string($_REQUEST["id"]);
+                       $note = strip_tags(db_escape_string($_REQUEST["note"]));
+
+                       db_query($link, "UPDATE ttrss_user_entries SET note = '$note'
+                               WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+
+                       $formatted_note = format_article_note($id, $note);
+
+                       print json_encode(array("note" => $formatted_note));
+                       return;
+               }
+
                print "<rpc-reply><error>Unknown method: $subop</error></rpc-reply>";
        }
 ?>
index 6da30521bd1561d51998cfda366156981a702159..4513c7cfb443de0cf9c6f1593ce3e78e83c475da 100644 (file)
                        print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"setpref\">";
                        print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"key\" value=\"USER_STYLESHEET\">";
 
-                       print "<p><textarea dojoType=\"dijit.form.SimpleTextarea\"
+                       print "<table width='100%'><tr><td>";
+                       print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
                                style='font-size : 12px; width : 100%; height: 200px;'
                                placeHolder='body#ttrssMain { font-size : 14px; };'
                                name='value'>$value</textarea>";
+                       print "</td></tr></table>";
 
                        print "<div class='dlgButtons'>";
                        print "<button dojoType=\"dijit.form.Button\"
 
                }
 
+               if ($id == "editArticleNote") {
+
+                       $result = db_query($link, "SELECT note FROM ttrss_user_entries WHERE
+                               ref_id = '$param' AND owner_uid = " . $_SESSION['uid']);
+
+                       $note = db_fetch_result($result, 0, "note");
+
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"id\" value=\"$param\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
+                       print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"subop\" value=\"setNote\">";
+
+                       print "<table width='100%'><tr><td>";
+                       print "<textarea dojoType=\"dijit.form.SimpleTextarea\"
+                               style='font-size : 12px; width : 100%; height: 100px;'
+                               placeHolder='body#ttrssMain { font-size : 14px; };'
+                               name='note'>$note</textarea>";
+                       print "</td></tr></table>";
+
+                       print "<div class='dlgButtons'>";
+                       print "<button dojoType=\"dijit.form.Button\"
+                               onclick=\"dijit.byId('editNoteDlg').execute()\">".__('Save')."</button> ";
+                       print "<button dojoType=\"dijit.form.Button\"
+                               onclick=\"dijit.byId('editNoteDlg').hide()\">".__('Cancel')."</button>";
+                       print "</div>";
+
+               }
+
+
                print "</dlg>"; 
        }
 ?>
index 4f45e171eb6d2cef078b3bdc4159d5dd1d4936e1..d8b92e5aba99146a52f95368a688dbf78c1ce7f7 100644 (file)
@@ -74,31 +74,15 @@ div.postReply img.tagsPic {
        vertical-align : middle;
 }
 
-div.articleNote div.articleNoteOps {
-       text-align : center;
-       color : #9a8c59;
-       font-style : italic;
-       margin-top : 5px;
-}
-
-div.articleNote div.articleNoteOps a {
-       color : #9a8c59;
-}
-
-div.articleNote div.articleNoteOps a:hover {
-       color : black;
-}
-
 div.articleNote {
        background-color : #fff7d5;
        border-width : 1px;
        padding : 5px;
        border-style : dashed;
        border-color : #e7d796;
-       font-size : 8px;
-       margin-bottom : 5px;
-       margin-top : 5px;
+       font-size : 11px;
        margin-left : 5px;
+       margin-top : 5px;
        float : right;
        color : #9a8c59;
        max-width : 150px;
index 0823ed321956ce46d417b05d7be2b33bc68e4c85..5d40fb3216f95e5f8ed3b0d8a661967cad222878 100644 (file)
@@ -483,6 +483,14 @@ function togglePub(id, client_only, no_effects, note) {
                }
 
                if (!client_only) {
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
+                               onComplete: function(transport) { 
+                                       handle_rpc_json(transport); 
+                               } });
+               }
+
+/*             if (!client_only) {
                        new Ajax.Request("backend.php", {
                                parameters: query,
                                onComplete: function(transport) { 
@@ -510,7 +518,7 @@ function togglePub(id, client_only, no_effects, note) {
                                        }       
 
                                } });
-               }
+               } */
 
        } catch (e) {
                exception_error("togglePub", e);
@@ -1799,7 +1807,7 @@ function toggleHeadlineActions() {
        }
 }
 
-function publishWithNote(id, def_note) {
+/* function publishWithNote(id, def_note) {
        try {
                if (!def_note) def_note = '';
 
@@ -1812,7 +1820,7 @@ function publishWithNote(id, def_note) {
        } catch (e) {
                exception_error("publishWithNote", e);
        }
-}
+} */
 
 function emailArticle(id) {
        try {
@@ -2308,3 +2316,52 @@ function tweetArticle(id) {
                exception_error("tweetArticle", e);
        }
 }
+
+function editArticleNote(id) {
+       try {
+
+               var query = "backend.php?op=dlg&id=editArticleNote&param=" + param_escape(id);
+
+               if (dijit.byId("editNoteDlg"))
+                       dijit.byId("editNoteDlg").destroyRecursive();
+
+               dialog = new dijit.Dialog({
+                       id: "editNoteDlg",
+                       title: __("Edit article note"),
+                       style: "width: 600px",
+                       execute: function() {
+                               if (this.validate()) {
+                                       var query = dojo.objectToQuery(this.attr('value'));
+
+                                       notify_progress("Saving article note...", true);
+
+                                       new Ajax.Request("backend.php", {
+                                       parameters: query,
+                                       onComplete: function(transport) {
+                                               notify('');
+                                               dialog.hide();
+                                       
+                                               var reply = JSON.parse(transport.responseText);
+
+                                               cache_invalidate(id);
+
+                                               var elem = $("POSTNOTE-" + id);
+
+                                               if (elem) {
+                                                       Element.hide(elem);
+                                                       elem.innerHTML = reply.note;
+                                                       new Effect.Appear(elem);
+                                               }
+
+                                       }});
+                               }
+                       },
+                       href: query,
+               });
+
+               dialog.show();
+
+       } catch (e) {
+               exception_error("editArticleNote", e);
+       }
+}