add experimental clientside headline clamping (refs #479)

This commit is contained in:
Andrew Dolgov 2012-08-09 13:08:07 +04:00
parent 18e8dc12d9
commit 26e4b12466
3 changed files with 27 additions and 4 deletions

View File

@ -378,8 +378,7 @@ class Feeds extends Protected_Handler {
$updated_fmt = make_local_datetime($this->link, $line["updated_noms"], false); $updated_fmt = make_local_datetime($this->link, $line["updated_noms"], false);
if (get_pref($this->link, 'SHOW_CONTENT_PREVIEW')) { if (get_pref($this->link, 'SHOW_CONTENT_PREVIEW')) {
$content_preview = truncate_string(strip_tags($line["content_preview"]), $content_preview = strip_tags($line["content_preview"]);
100);
} }
$score = $line["score"]; $score = $line["score"];
@ -458,7 +457,7 @@ class Feeds extends Protected_Handler {
$reply['content'] .= "<a id=\"RTITLE-$id\" $reply['content'] .= "<a id=\"RTITLE-$id\"
href=\"" . htmlspecialchars($line["link"]) . "\" href=\"" . htmlspecialchars($line["link"]) . "\"
onclick=\"\">" . onclick=\"\">" .
truncate_string($line["title"], 200); $line["title"];
if (get_pref($this->link, 'SHOW_CONTENT_PREVIEW')) { if (get_pref($this->link, 'SHOW_CONTENT_PREVIEW')) {
if ($content_preview) { if ($content_preview) {

View File

@ -1718,3 +1718,12 @@ function get_radio_checked(radioObj) {
} }
return(""); return("");
} }
function clamp_element(elem, height) {
if (elem && elem.offsetHeight > height) {
while (elem.offsetHeight > height)
elem.innerHTML = cp.innerHTML.substring(0, elem.innerHTML.length - 50);
elem.innerHTML += "&hellip;";
}
}

View File

@ -81,6 +81,10 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
reply['headlines']['toolbar']); reply['headlines']['toolbar']);
$$("#headlines-frame > div[id*=RROW]").each(function(row) { $$("#headlines-frame > div[id*=RROW]").each(function(row) {
cp = row.getElementsByClassName("contentPreview")[0];
clamp_element(cp, 50);
if ($$("#headlines-frame DIV[id="+row.id+"]").length > 1) { if ($$("#headlines-frame DIV[id="+row.id+"]").length > 1) {
row.parentNode.removeChild(row); row.parentNode.removeChild(row);
} }
@ -136,8 +140,13 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
$$("#headlines-frame > div[id*=RROW]").each( $$("#headlines-frame > div[id*=RROW]").each(
function(child) { function(child) {
if (!Element.visible(child)) if (!Element.visible(child)) {
new Effect.Appear(child, { duration : 0.5 }); new Effect.Appear(child, { duration : 0.5 });
cp = child.getElementsByClassName("contentPreview")[0];
clamp_element(cp, 50);
}
}); });
} else { } else {
@ -2047,6 +2056,12 @@ function render_local_headlines(feed, is_cat, obj) {
setActiveFeedId(feed, is_cat); setActiveFeedId(feed, is_cat);
initHeadlinesMenu(); initHeadlinesMenu();
$$("#headlines-frame > div[id*=RROW]").each(function(row) {
cp = row.getElementsByClassName("contentPreview")[0];
clamp_element(cp, 50);
});
precache_headlines(); precache_headlines();
} catch (e) { } catch (e) {