summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-06-05 22:19:33 +0400
committerAndrew Dolgov <[email protected]>2013-06-05 22:20:22 +0400
commit08820be70b4d5cbe66e9ca9d5986c429c5186ca5 (patch)
tree94f9dc2e789de967a0c26c55b84c5b60cba1befa
parenta1495542fcbe85e5dbe84d4eea26a8364924e2f0 (diff)
add experimental floating title when scrolling long articles in combined mode
-rw-r--r--classes/feeds.php2
-rw-r--r--css/cdm.css32
-rw-r--r--css/tt-rss.css1
-rw-r--r--index.php2
-rw-r--r--js/viewfeed.js67
5 files changed, 101 insertions, 3 deletions
diff --git a/classes/feeds.php b/classes/feeds.php
index 12af76df0..83736925c 100644
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -593,7 +593,7 @@ class Feeds extends Handler_Protected {
$reply['content'] .= "<span class='updated' title='$date_entered_fmt'>
$updated_fmt</span>";
- $reply['content'] .= "<div style=\"vertical-align : middle\">";
+ $reply['content'] .= "<div class='scoreWrap' style=\"vertical-align : middle\">";
$reply['content'] .= "$score_pic";
if (!get_pref("VFEED_GROUP_BY_FEED") && $line["feed_title"]) {
diff --git a/css/cdm.css b/css/cdm.css
index 900c83791..8b9693c33 100644
--- a/css/cdm.css
+++ b/css/cdm.css
@@ -215,3 +215,35 @@ div.cdmHeader span.author {
}
+div#floatingTitle {
+ position : absolute;
+ z-index : 5;
+ top : 30px;
+ right : 20px;
+ border : 1px solid #ccc;
+ background : white;
+ border-radius : 3px;
+ box-shadow : 0px 0px 3px 0px rgba(0,0,0,0.1);
+ color : #555;
+ font-size : 10px;
+ padding : 3px;
+}
+
+div#floatingTitle > * {
+ display : table-cell;
+ white-space : nowrap;
+ vertical-align : middle;
+}
+
+div#floatingTitle img {
+ padding-right : 3px;
+}
+
+div#floatingTitle .dijit,
+div#floatingTitle span.updated,
+div#floatingTitle div.scoreWrap,
+div#floatingTitle div.hlFeed,
+div#floatingTitle span.author,
+div#floatingTitle img.tinyFeedIcon {
+ display : none;
+}
diff --git a/css/tt-rss.css b/css/tt-rss.css
index 10fec5a55..b1928bb48 100644
--- a/css/tt-rss.css
+++ b/css/tt-rss.css
@@ -1109,3 +1109,4 @@ body#ttrssPrefs hr {
.dijitTreeRowSelected .dijitTreeLabel {
text-shadow : 1px 1px 2px #fff;
}
+
diff --git a/index.php b/index.php
index 8dae2831f..db7962908 100644
--- a/index.php
+++ b/index.php
@@ -260,6 +260,8 @@
<div id="headlines-toolbar" dojoType="dijit.layout.ContentPane" region="top">
</div>
+ <div id="floatingTitle" style="display : none"></div>
+
<div id="headlines-frame" dojoType="dijit.layout.ContentPane"
onscroll="headlines_scroll_handler(this)" region="center">
<div id="headlinesInnerContainer">
diff --git a/js/viewfeed.js b/js/viewfeed.js
index b708accfd..eee6bf766 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -444,7 +444,21 @@ function toggleMark(id, client_only) {
var row = $("RROW-" + id);
if (!row) return;
- var imgs = row.getElementsByClassName("markedPic");
+ var imgs = [];
+
+ var row_imgs = row.getElementsByClassName("markedPic");
+
+ for (var i = 0; i < row_imgs.length; i++)
+ imgs.push(row_imgs[i]);
+
+ var ft = $("floatingTitle");
+
+ if (ft && ft.getAttribute("rowid") == "RROW-" + id) {
+ var fte = ft.getElementsByClassName("markedPic");
+
+ for (var i = 0; i < fte.length; i++)
+ imgs.push(fte[i]);
+ }
for (i = 0; i < imgs.length; i++) {
var img = imgs[i];
@@ -488,7 +502,21 @@ function togglePub(id, client_only, no_effects, note) {
var row = $("RROW-" + id);
if (!row) return;
- var imgs = row.getElementsByClassName("pubPic");
+ var imgs = [];
+
+ var row_imgs = row.getElementsByClassName("pubPic");
+
+ for (var i = 0; i < row_imgs.length; i++)
+ imgs.push(row_imgs[i]);
+
+ var ft = $("floatingTitle");
+
+ if (ft && ft.getAttribute("rowid") == "RROW-" + id) {
+ var fte = ft.getElementsByClassName("pubPic");
+
+ for (var i = 0; i < fte.length; i++)
+ imgs.push(fte[i]);
+ }
for (i = 0; i < imgs.length; i++) {
var img = imgs[i];
@@ -1280,6 +1308,10 @@ function headlines_scroll_handler(e) {
if (hsp) hsp.innerHTML = "";
}
+ if (getInitParam("cdm_expanded") && isCdmMode()) {
+ updateFloatingTitle();
+ }
+
if (getInitParam("cdm_auto_catchup") == 1) {
// let's get DOM some time to settle down
@@ -2157,3 +2189,34 @@ function openSelectedAttachment(elem) {
exception_error("openSelectedAttachment", e);
}
}
+
+function updateFloatingTitle() {
+ try {
+ var hf = $("headlines-frame");
+
+ var elems = $$("#headlines-frame > div[id*=RROW]");
+
+ for (var i = 0; i < elems.length; i++) {
+ var child = elems[i];
+
+ if (child.offsetTop + child.offsetHeight > hf.scrollTop) {
+
+ var header = child.getElementsByClassName("cdmHeader")[0];
+
+ $("floatingTitle").setAttribute("rowid", child.id);
+ $("floatingTitle").innerHTML =
+ header.innerHTML;
+
+ if (child.offsetTop < hf.scrollTop - header.offsetHeight - 100 &&
+ child.offsetTop + child.offsetHeight - hf.scrollTop > 100)
+ Element.show("floatingTitle");
+ else
+ Element.hide("floatingTitle");
+
+ break;
+ }
+ }
+ } catch (e) {
+ exception_error("updateFloatingTitle", e);
+ }
+}