]> git.wh0rd.org - tt-rss.git/commitdiff
make a separate headline button to collapse current article in
authorAndrew Dolgov <fox@fakecake.org>
Wed, 20 Mar 2013 06:21:14 +0000 (10:21 +0400)
committerAndrew Dolgov <fox@fakecake.org>
Wed, 20 Mar 2013 06:22:15 +0000 (10:22 +0400)
unexpanded cdm mode; modify a q hotkey to collapse article in unexpanded
mode and dismiss article in expanded mode

classes/feeds.php
images/collapse.png [new file with mode: 0644]
include/functions.php
js/tt-rss.js
js/viewfeed.js
tt-rss.css

index 297cad3006914dc9122c5d30f054c0c727cf0ac2..0d5d8c8a00363ab269b8ad4c202993b34948d374 100644 (file)
@@ -548,6 +548,10 @@ class Feeds extends Handler_Protected {
 
                                        $reply['content'] .= $labels_str;
 
+                                       $reply['content'] .= "<span class='collapseBtn' style='display : none'>
+                                               <img src=\"images/collapse.png\" onclick=\"cdmCollapseArticle(event, $id)\"
+                                               title=\"".__("Collapse article")."\"/></span>";
+
                                        if (!$expand_cdm)
                                                $content_hidden = "style=\"display : none\"";
                                        else
@@ -555,7 +559,6 @@ class Feeds extends Handler_Protected {
 
                                        $reply['content'] .= "<span $excerpt_hidden
                                                id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>";
-
                                        $reply['content'] .= "</span>";
 
                                        if (!get_pref($this->link, 'VFEED_GROUP_BY_FEED')) {
diff --git a/images/collapse.png b/images/collapse.png
new file mode 100644 (file)
index 0000000..5adbd5e
Binary files /dev/null and b/images/collapse.png differ
index 3b73ed5f71c71d117819f4482dfcdda56632f060..62699e175392ac567df7c0f4ba57e5aaf1c92b1d 100644 (file)
                                "article_scroll_up" => __("Scroll up"),
                                "select_article_cursor" => __("Select article under cursor"),
                                "email_article" => __("Email article"),
-                               "close_article" => __("Close article"),
+                               "close_article" => __("Close/collapse article"),
                                "toggle_widescreen" => __("Toggle widescreen mode")),
                        __("Article selection") => array(
                                "select_all" => __("Select all articles"),
index e9bc9d412d615213036a03bf1af762b753f01b8b..bced926745af8851121fff6a35d56f107b8037a4 100644 (file)
@@ -669,7 +669,15 @@ function hotkey_handler(e) {
                        scrollArticle(-ctr.offsetHeight/3);
                        return false;
                case "close_article":
-                       closeArticlePanel();
+                       if (isCdmMode()) {
+                               if (!getInitParam("cdm_expanded")) {
+                                       cdmCollapseArticle(false, getActiveArticleId());
+                               } else {
+                                       dismissArticle(getActiveArticleId());
+                               }
+                       } else {
+                               closeArticlePanel();
+                       }
                        return false;
                case "email_article":
                        if (typeof emailArticle != "undefined") {
index 9a16befff2a836dd7e3e87664022c77d4d22853b..584fff5748757889e35846fb27a701d345062370 100644 (file)
@@ -1312,6 +1312,35 @@ function catchupRelativeToArticle(below, id) {
        }
 }
 
+function cdmCollapseArticle(event, id) {
+       try {
+               var row = $("RROW-" + id);
+               var elem = $("CICD-" + id);
+
+               if (elem && row) {
+                       row.removeClassName("Selected");
+
+                       var collapse = $$("div#RROW-" + id +
+                               " span[class='collapseBtn']")[0];
+
+                       Element.hide(elem);
+                       Element.show("CEXC-" + id);
+                       Element.hide(collapse);
+
+                       markHeadline(id, false);
+
+                       if (id == getActiveArticleId()) {
+                               setActiveArticleId(0);
+                       }
+
+                       if (event) Event.stop(event);
+               }
+
+       } catch (e) {
+               exception_error("cdmCollapseArticle", e);
+       }
+}
+
 function cdmExpandArticle(id) {
        try {
 
@@ -1327,17 +1356,25 @@ function cdmExpandArticle(id) {
                var old_offset = $("RROW-" + id).offsetTop;
 
                if (getActiveArticleId() && elem && !getInitParam("cdm_expanded")) {
+                       var collapse = $$("div#RROW-" + getActiveArticleId() +
+                               " span[class='collapseBtn']")[0];
+
                        Element.hide(elem);
                        Element.show("CEXC-" + getActiveArticleId());
+                       Element.hide(collapse);
                }
 
                setActiveArticleId(id);
 
                elem = $("CICD-" + id);
 
+               var collapse = $$("div#RROW-" + id +
+                               " span[class='collapseBtn']")[0];
+
                if (!Element.visible(elem)) {
                        Element.show(elem);
                        Element.hide("CEXC-" + id);
+                       Element.show(collapse);
                }
 
                /* var new_offset = $("RROW-" + id).offsetTop;
@@ -1514,6 +1551,7 @@ function cdmClicked(event, id) {
                if (!event.ctrlKey) {
 
                        if (!getInitParam("cdm_expanded")) {
+                               if (event) Event.stop(event);
                                return cdmExpandArticle(id);
                        } else {
 
@@ -1609,13 +1647,15 @@ function isCdmMode() {
        return getInitParam("combined_display_mode");
 }
 
-function markHeadline(id) {
+function markHeadline(id, marked) {
+       if (marked == undefined) marked = true;
+
        var row = $("RROW-" + id);
        if (row) {
                var check = dijit.byId("RCHK-" + id);
 
                if (check) {
-                       check.attr("checked", true);
+                       check.attr("checked", marked);
                }
 
                row.addClassName("Selected");
index 72e73e0d3f6cfbb601bcf33e50ad340499934c3c..545d8c8d159f465cc14f67f18c5b4653df679498 100644 (file)
@@ -1189,3 +1189,7 @@ ul.helpKbList h2 {
 .dijitTreeNode .loadingNode {
        margin-left : 3px;
 }
+
+span.collapseBtn {
+       cursor : pointer;
+}