]> git.wh0rd.org Git - tt-rss.git/commitdiff
add experimental plugin to shorten articles which are too damn long in expanded cdm
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Wed, 31 Jul 2013 14:58:56 +0000 (18:58 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Wed, 31 Jul 2013 14:58:56 +0000 (18:58 +0400)
plugins/shorten_expanded/init.css [new file with mode: 0644]
plugins/shorten_expanded/init.js [new file with mode: 0644]
plugins/shorten_expanded/init.php [new file with mode: 0644]

diff --git a/plugins/shorten_expanded/init.css b/plugins/shorten_expanded/init.css
new file mode 100644 (file)
index 0000000..5e1bfa8
--- /dev/null
@@ -0,0 +1,9 @@
+div.contentSizeWrapper {
+       overflow : hidden;
+       text-overflow: ellipsis;
+       height : 700px;
+}
+
+button.expandPrompt {
+       margin-top : 20px;
+}
diff --git a/plugins/shorten_expanded/init.js b/plugins/shorten_expanded/init.js
new file mode 100644 (file)
index 0000000..ba82b64
--- /dev/null
@@ -0,0 +1,45 @@
+var _shorten_expanded_threshold = 900; //px, longer than css height so that we would only clip articles significantly longer than limit
+
+function expandSizeWrapper(id) {
+       try {
+               var row = $(id);
+
+               console.log(row);
+
+               if (row) {
+                       var content = row.select(".contentSizeWrapper")[0];
+                       var link = row.select(".expandPrompt")[0];
+
+                       if (content) content.removeClassName("contentSizeWrapper");
+                       if (link) Element.hide(link);
+
+               }
+       } catch (e) {
+               exception_error("expandSizeWrapper", e);
+       }
+
+       return false;
+
+}
+
+dojo.addOnLoad(function() {
+       PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) {
+               if (getInitParam('cdm_expanded')) {
+
+                       window.setTimeout(function() {
+                               if (row) {
+                                       if (row.offsetHeight >= _shorten_expanded_threshold) {
+                                               var content = row.select(".cdmContentInner")[0];
+
+                                               if (content) {
+                                                       content.innerHTML = "<div class='contentSizeWrapper'>" +
+                                                               content.innerHTML + "</div><button class='expandPrompt' onclick='return expandSizeWrapper(\""+row.id+"\")' "+
+                                                               "href='#'>" + __("Click to expand article") + "</button>";
+
+                                               }
+                                       }
+                               }
+                       }, 150);
+               }
+       });
+});
diff --git a/plugins/shorten_expanded/init.php b/plugins/shorten_expanded/init.php
new file mode 100644 (file)
index 0000000..1d0c99e
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+class Shorten_Expanded extends Plugin {
+       private $host;
+
+       function about() {
+               return array(1.0,
+                       "Shorten overly long articles in CDM/expanded",
+                       "fox");
+       }
+
+       function init($host) {
+               $this->host = $host;
+
+       }
+
+       function get_css() {
+               return file_get_contents(__DIR__ . "/init.css");
+       }
+
+       function get_js() {
+               return file_get_contents(__DIR__ . "/init.js");
+       }
+
+       function api_version() {
+               return 2;
+       }
+
+}
+?>