mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-13 21:15:55 +00:00
add a simple appearing preview for unexpanded cdm and normal mode
This commit is contained in:
20
cdm.css
20
cdm.css
@@ -174,3 +174,23 @@ div.cdm.expanded div.cdmHeader a.title, div.cdm.active div.cdmHeader a.title {
|
|||||||
font-size : 13px;
|
font-size : 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div#small_article_preview {
|
||||||
|
width : 300px;
|
||||||
|
max-height : 350px;
|
||||||
|
overflow : hidden;
|
||||||
|
border : 1px solid #c0c0c0;
|
||||||
|
background : white;
|
||||||
|
position : absolute;
|
||||||
|
box-shadow : 2px 2px 4px #c0c0c0;
|
||||||
|
z-index : 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#small_article_preview div.content {
|
||||||
|
padding : 5px;
|
||||||
|
font-size : 12px;
|
||||||
|
color : gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#small_article_preview div.content img {
|
||||||
|
max-width : 290px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -413,7 +413,7 @@ class Feeds extends Handler_Protected {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$mouseover_attrs = "onmouseover='postMouseIn($id)'
|
$mouseover_attrs = "onmouseover='postMouseIn(event, $id)'
|
||||||
onmouseout='postMouseOut($id)'";
|
onmouseout='postMouseOut($id)'";
|
||||||
|
|
||||||
$reply['content'] .= "<div class='$class' id='RROW-$id' $label_row_style $mouseover_attrs>";
|
$reply['content'] .= "<div class='$class' id='RROW-$id' $label_row_style $mouseover_attrs>";
|
||||||
@@ -512,7 +512,7 @@ class Feeds extends Handler_Protected {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$mouseover_attrs = "onmouseover='postMouseIn($id)'
|
$mouseover_attrs = "onmouseover='postMouseIn(event, $id)'
|
||||||
onmouseout='postMouseOut($id)'";
|
onmouseout='postMouseOut($id)'";
|
||||||
|
|
||||||
$expanded_class = $expand_cdm ? "expanded" : "";
|
$expanded_class = $expand_cdm ? "expanded" : "";
|
||||||
@@ -537,7 +537,6 @@ class Feeds extends Handler_Protected {
|
|||||||
onclick=\"return cdmClicked(event, $id);\"
|
onclick=\"return cdmClicked(event, $id);\"
|
||||||
class=\"titleWrap$hlc_suffix\">
|
class=\"titleWrap$hlc_suffix\">
|
||||||
<a class=\"title\"
|
<a class=\"title\"
|
||||||
title=\"".htmlspecialchars($line['title'])."\"
|
|
||||||
target=\"_blank\" href=\"".
|
target=\"_blank\" href=\"".
|
||||||
htmlspecialchars($line["link"])."\">".
|
htmlspecialchars($line["link"])."\">".
|
||||||
$line["title"] .
|
$line["title"] .
|
||||||
|
|||||||
@@ -843,5 +843,32 @@ class RPC extends Handler_Protected {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cdmArticlePreview() {
|
||||||
|
$id = db_escape_string($this->link, $_REQUEST['id']);
|
||||||
|
|
||||||
|
$result = db_query($this->link, "SELECT link,
|
||||||
|
ttrss_entries.title, content, feed_url
|
||||||
|
FROM
|
||||||
|
ttrss_entries, ttrss_user_entries
|
||||||
|
LEFT JOIN ttrss_feeds ON (ttrss_user_entries.feed_id = ttrss_feeds.id)
|
||||||
|
WHERE ref_id = '$id' AND ref_id = ttrss_entries.id AND
|
||||||
|
ttrss_user_entries.owner_uid = ". $_SESSION["uid"]);
|
||||||
|
|
||||||
|
if (db_num_rows($result) != 0) {
|
||||||
|
$link = db_fetch_result($result, 0, "link");
|
||||||
|
$title = db_fetch_result($result, 0, "title");
|
||||||
|
$feed_url = db_fetch_result($result, 0, "feed_url");
|
||||||
|
|
||||||
|
$content = sanitize($this->link,
|
||||||
|
db_fetch_result($result, 0, "content"), false, false, $feed_url);
|
||||||
|
|
||||||
|
print "<div class='content'>".$content."</content>";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
print "Article not found.";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -123,6 +123,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div style="display : none" onclick="Element.hide(this)" id="small_article_preview"></div>
|
||||||
|
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<img id="net-alert" style="display : none"
|
<img id="net-alert" style="display : none"
|
||||||
title="<?php echo __("Communication problem with server.") ?>"
|
title="<?php echo __("Communication problem with server.") ?>"
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ var catchup_timeout_id = false;
|
|||||||
var cids_requested = [];
|
var cids_requested = [];
|
||||||
var loaded_article_ids = [];
|
var loaded_article_ids = [];
|
||||||
|
|
||||||
|
var _post_preview_timeout = false;
|
||||||
|
|
||||||
var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null;
|
var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null;
|
||||||
|
|
||||||
function headlines_callback2(transport, offset, background, infscroll_req) {
|
function headlines_callback2(transport, offset, background, infscroll_req) {
|
||||||
@@ -1166,12 +1168,54 @@ function getActiveArticleId() {
|
|||||||
return _active_article_id;
|
return _active_article_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
function postMouseIn(id) {
|
function postMouseIn(e, id) {
|
||||||
post_under_pointer = id;
|
post_under_pointer = id;
|
||||||
|
|
||||||
|
if (_post_preview_timeout) window.clearTimeout(_post_preview_timeout);
|
||||||
|
|
||||||
|
if (!getInitParam("cdm_expanded")) {
|
||||||
|
_post_preview_timeout = window.setTimeout(function() {
|
||||||
|
displaySmallArticlePreview(e, id);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function displaySmallArticlePreview(e, id) {
|
||||||
|
try {
|
||||||
|
var query = "?op=rpc&method=cdmarticlepreview&id=" + id;
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: query,
|
||||||
|
onComplete: function(transport) {
|
||||||
|
cexc = $("CEXC-" + id);
|
||||||
|
preview = $("small_article_preview");
|
||||||
|
row = $("RROW-" + id);
|
||||||
|
|
||||||
|
if (id != getActiveArticleId() && (!isCdmMode() || (cexc && Element.visible(cexc))) && row && preview) {
|
||||||
|
preview.innerHTML = transport.responseText;
|
||||||
|
new Effect.Appear(preview, {duration:0.2});
|
||||||
|
|
||||||
|
preview.setStyle({
|
||||||
|
left: (e.clientX + 20) + 'px',
|
||||||
|
top: (Element.cumulativeOffset(row)[1] + row.offsetHeight + 10) + 'px' });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} });
|
||||||
|
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("displaySmallArticlePreview", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function postMouseOut(id) {
|
function postMouseOut(id) {
|
||||||
post_under_pointer = false;
|
post_under_pointer = false;
|
||||||
|
|
||||||
|
if (_post_preview_timeout) window.clearTimeout(_post_preview_timeout);
|
||||||
|
|
||||||
|
if (Element.visible("small_article_preview"))
|
||||||
|
Element.hide("small_article_preview");
|
||||||
}
|
}
|
||||||
|
|
||||||
function unpackVisibleHeadlines() {
|
function unpackVisibleHeadlines() {
|
||||||
|
|||||||
@@ -1220,3 +1220,5 @@ body#ttrssZoom div.footer {
|
|||||||
margin-top : 1em;
|
margin-top : 1em;
|
||||||
text-align : center;
|
text-align : center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user