dijit.tree feedlist improvements
This commit is contained in:
parent
13e785e069
commit
fcf70c5106
|
@ -176,7 +176,8 @@
|
|||
|
||||
case "collapse":
|
||||
$cat_id = db_escape_string($_REQUEST["cid"]);
|
||||
toggle_collapse_cat($link, $cat_id);
|
||||
$mode = (int) db_escape_string($_REQUEST['mode']);
|
||||
toggle_collapse_cat($link, $cat_id, $mode);
|
||||
return;
|
||||
break;
|
||||
|
||||
|
|
373
feedlist.js
373
feedlist.js
|
@ -31,20 +31,6 @@ function viewCategory(cat) {
|
|||
return false;
|
||||
}
|
||||
|
||||
/* function render_feedlist(data) {
|
||||
try {
|
||||
|
||||
var f = $("feeds-frame");
|
||||
f.innerHTML = data;
|
||||
// cache_invalidate("FEEDLIST");
|
||||
// cache_inject("FEEDLIST", data, getInitParam("num_feeds"));
|
||||
feedlist_init();
|
||||
|
||||
} catch (e) {
|
||||
exception_error("render_feedlist", e);
|
||||
}
|
||||
} */
|
||||
|
||||
function viewNextFeedPage() {
|
||||
try {
|
||||
//if (!getActiveFeedId()) return;
|
||||
|
@ -227,25 +213,11 @@ function viewfeed(feed, subop, is_cat, offset) {
|
|||
}
|
||||
|
||||
if (cache_check) {
|
||||
var f = $("headlines-frame");
|
||||
|
||||
clean_feed_selections();
|
||||
|
||||
setActiveFeedId(feed, is_cat);
|
||||
|
||||
if (!is_cat) {
|
||||
var feedr = $("FEEDR-" + feed);
|
||||
if (feedr && !feedr.hasClassName("Selected")) {
|
||||
feedr.addClassName("Selected");
|
||||
}
|
||||
} else {
|
||||
var feedr = $("FCAT-" + feed_id);
|
||||
if (feedr && !feedr.hasClassName("Selected")) {
|
||||
feedr.addClassName("Selected");
|
||||
}
|
||||
}
|
||||
|
||||
f.innerHTML = cache_find_param(cache_prefix + feed, unread_ctr);
|
||||
$("headlines-frame").innerHTML = cache_find_param(cache_prefix + feed,
|
||||
unread_ctr);
|
||||
|
||||
request_counters();
|
||||
remove_splash();
|
||||
|
@ -316,61 +288,6 @@ function viewfeed(feed, subop, is_cat, offset) {
|
|||
}
|
||||
}
|
||||
|
||||
function toggleCollapseCat_af(effect) {
|
||||
//var caption = elem.id.replace("FCATLIST-", "");
|
||||
|
||||
try {
|
||||
|
||||
var elem = effect.element;
|
||||
var cat = elem.id.replace("FCATLIST-", "");
|
||||
var cap = $("FCAP-" + cat);
|
||||
|
||||
if (Element.visible(elem)) {
|
||||
cap.innerHTML = cap.innerHTML.replace("…", "");
|
||||
} else {
|
||||
if (cap.innerHTML.lastIndexOf("…") != cap.innerHTML.length-3) {
|
||||
cap.innerHTML = cap.innerHTML + "…";
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
exception_error("toggleCollapseCat_af", e);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCollapseCat(cat) {
|
||||
try {
|
||||
|
||||
var cat_elem = $("FCAT-" + cat);
|
||||
var cat_list = $("FCATLIST-" + cat).parentNode;
|
||||
var caption = $("FCAP-" + cat);
|
||||
|
||||
Effect.toggle('FCATLIST-' + cat, 'blind', { duration: 0.5,
|
||||
afterFinish: toggleCollapseCat_af });
|
||||
|
||||
var img = cat_elem.getElementsByTagName("IMG")[0];
|
||||
|
||||
if (img.src.match("-collapse"))
|
||||
img.src = img.src.replace("-collapse", "-uncollapse")
|
||||
else
|
||||
img.src = img.src.replace("-uncollapse", "-collapse")
|
||||
|
||||
new Ajax.Request("backend.php",
|
||||
{ parameters: "backend.php?op=feeds&subop=collapse&cid=" +
|
||||
param_escape(cat) } );
|
||||
|
||||
} catch (e) {
|
||||
exception_error("toggleCollapseCat", e);
|
||||
}
|
||||
}
|
||||
|
||||
function isCatCollapsed(cat) {
|
||||
try {
|
||||
return Element.visible("FCATLIST-" + cat);
|
||||
} catch (e) {
|
||||
exception_error("isCatCollapsed", e);
|
||||
}
|
||||
}
|
||||
|
||||
function feedlist_dragsorted(ctr) {
|
||||
try {
|
||||
|
@ -400,24 +317,26 @@ function feedlist_init() {
|
|||
try {
|
||||
loading_set_progress(90);
|
||||
|
||||
//console.log("in feedlist init");
|
||||
console.log("in feedlist init");
|
||||
|
||||
hideOrShowFeeds(getInitParam("hide_read_feeds") == 1);
|
||||
document.onkeydown = hotkey_handler;
|
||||
setTimeout("hotkey_prefix_timeout()", 5*1000);
|
||||
|
||||
if (getActiveFeedId()) {
|
||||
if (getActiveFeedId()) {
|
||||
//console.log("some feed is open on feedlist refresh, reloading");
|
||||
//setTimeout("viewCurrentFeed()", 100);
|
||||
} else {
|
||||
if (getInitParam("cdm_auto_catchup") != 1 && get_feed_unread(-3) > 0) {
|
||||
notify_silent_next();
|
||||
if (getInitParam("cdm_auto_catchup") != 1) {
|
||||
setTimeout("viewfeed(-3)", 100);
|
||||
} else {
|
||||
setTimeout("viewfeed(-5)", 100);
|
||||
remove_splash();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log("T:" +
|
||||
getInitParam("cdm_auto_catchup") + " " + get_feed_unread(-3));
|
||||
|
||||
if (getInitParam("theme") == "" ||
|
||||
getInitParam("theme_options").match("hide_footer")) {
|
||||
|
@ -461,13 +380,13 @@ function feedlist_init() {
|
|||
|
||||
function hide_footer() {
|
||||
try {
|
||||
if (Element.visible("footer")) {
|
||||
/* if (Element.visible("footer")) {
|
||||
|
||||
Element.hide("footer");
|
||||
dijit.byId("main").resize();
|
||||
|
||||
//new Effect.Fade("footer", { afterFinish: hide_footer_af });
|
||||
}
|
||||
} */
|
||||
} catch (e) {
|
||||
exception_error("hide_footer", e);
|
||||
}
|
||||
|
@ -583,114 +502,17 @@ function parse_counters(reply, scheduled_call) {
|
|||
var treeItem;
|
||||
|
||||
setFeedUnread(id, (kind == "cat"), ctr);
|
||||
|
||||
if (kind != "cat") {
|
||||
//setFeedValue(id, false, 'error', error);
|
||||
setFeedValue(id, false, 'updated', updated);
|
||||
}
|
||||
}
|
||||
|
||||
/* if (kind && kind == "cat") {
|
||||
var catctr = $("FCATCTR-" + id);
|
||||
if (catctr) {
|
||||
catctr.innerHTML = "(" + ctr + ")";
|
||||
if (ctr > 0) {
|
||||
catctr.addClassName("Unread");
|
||||
} else {
|
||||
catctr.removeClassName("Unread");
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
var feedctr = $("FEEDCTR-" + id);
|
||||
var feedu = $("FEEDU-" + id);
|
||||
var feedr = $("FEEDR-" + id);
|
||||
var feed_img = $("FIMG-" + id);
|
||||
var feedlink = $("FEEDL-" + id);
|
||||
var feedupd = $("FLUPD-" + id);
|
||||
|
||||
if (updated && feedlink) {
|
||||
if (error) {
|
||||
feedlink.title = __("Error:") + " " + error + " (" + updated + ")";
|
||||
} else {
|
||||
feedlink.title = __("Updated:") + " " + updated;
|
||||
}
|
||||
} else if (!updated && feedlink) {
|
||||
feedlink.title = __("Updated:") + " " + __("Never");
|
||||
}
|
||||
|
||||
if (feedupd) {
|
||||
if (!updated) updated = "";
|
||||
|
||||
if (error) {
|
||||
if (xmsg) {
|
||||
feedupd.innerHTML = updated + " " + xmsg + " (Error)";
|
||||
} else {
|
||||
feedupd.innerHTML = updated + " (Error)";
|
||||
}
|
||||
} else {
|
||||
if (xmsg) {
|
||||
feedupd.innerHTML = updated + " (" + xmsg + ")";
|
||||
} else {
|
||||
feedupd.innerHTML = updated;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (has_img && feed_img) {
|
||||
if (!feed_img.src.match(id + ".ico")) {
|
||||
feed_img.src = getInitParam("icons_url") + "/" + id + ".ico";
|
||||
}
|
||||
}
|
||||
|
||||
if (feedlink && title) {
|
||||
feedlink.innerHTML = title;
|
||||
}
|
||||
|
||||
if (feedctr && feedu && feedr) {
|
||||
|
||||
// if (id == getActiveFeedId())
|
||||
// console.log("HAS CTR: " + feedu.innerHTML + " GOT CTR: " + ctr +
|
||||
// " IS_SCHED: " + scheduled_call);
|
||||
|
||||
if (parseInt(ctr) > 0 &&
|
||||
parseInt(feedu.innerHTML) < parseInt(ctr) &&
|
||||
id == getActiveFeedId() && scheduled_call) {
|
||||
|
||||
displayNewContentPrompt(id);
|
||||
}
|
||||
|
||||
var row_needs_hl = (ctr > 0 && ctr > parseInt(feedu.innerHTML));
|
||||
|
||||
feedu.innerHTML = ctr;
|
||||
|
||||
if (error) {
|
||||
feedr.removeClassName("feed");
|
||||
feedr.addClassName("error");
|
||||
} else if (id > 0) {
|
||||
feedr.removeClassName("error");
|
||||
feedr.addClassName("feed");
|
||||
}
|
||||
|
||||
if (ctr > 0) {
|
||||
feedctr.addClassName("Unread");
|
||||
feedr.addClassName("Unread");
|
||||
|
||||
if (row_needs_hl &&
|
||||
!getInitParam("theme_options").match('no_highlights')) {
|
||||
new Effect.Highlight(feedr, {duration: 1, startcolor: "#fff7d5",
|
||||
queue: { position:'end', scope: 'EFQ-' + id, limit: 1 } } );
|
||||
|
||||
cache_invalidate("F:" + id);
|
||||
}
|
||||
} else {
|
||||
feedctr.removeClassName("Unread");
|
||||
feedr.removeClassName("Unread");
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
hideOrShowFeeds(getInitParam("hide_read_feeds") == 1);
|
||||
|
||||
var feeds_stored = number_of_feeds;
|
||||
|
||||
//console.log("Feed counters, C: " + feeds_found + ", S:" + feeds_stored);
|
||||
|
||||
if (feeds_stored != feeds_found) {
|
||||
number_of_feeds = feeds_found;
|
||||
|
||||
|
@ -698,12 +520,6 @@ function parse_counters(reply, scheduled_call) {
|
|||
console.log("Subscribed feed number changed, refreshing feedlist");
|
||||
setTimeout('updateFeedList()', 50);
|
||||
}
|
||||
} else {
|
||||
/* var fl = $("feeds-frame").innerHTML;
|
||||
if (fl) {
|
||||
cache_invalidate("FEEDLIST");
|
||||
cache_inject("FEEDLIST", fl, getInitParam("num_feeds"));
|
||||
} */
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
|
@ -711,23 +527,25 @@ function parse_counters(reply, scheduled_call) {
|
|||
}
|
||||
}
|
||||
|
||||
function get_feed_unread(id) {
|
||||
function get_feed_unread(feed, is_cat) {
|
||||
try {
|
||||
return parseInt($("FEEDU-" + id).innerHTML);
|
||||
if (is_cat)
|
||||
treeItem = treeModel.store._itemsByIdentity['CAT:' + feed];
|
||||
else
|
||||
treeItem = treeModel.store._itemsByIdentity['FEED:' + feed];
|
||||
|
||||
if (treeItem)
|
||||
return treeModel.store.getValue(treeItem, 'unread');
|
||||
|
||||
} catch (e) {
|
||||
return -1;
|
||||
//
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function get_cat_unread(id) {
|
||||
try {
|
||||
var ctr = $("FCATCTR-" + id).innerHTML;
|
||||
ctr = ctr.replace("(", "");
|
||||
ctr = ctr.replace(")", "");
|
||||
return parseInt(ctr);
|
||||
} catch (e) {
|
||||
return -1;
|
||||
}
|
||||
return get_feed_unread(id, true);
|
||||
}
|
||||
|
||||
function get_feed_entry_unread(elem) {
|
||||
|
@ -810,6 +628,33 @@ function resort_feedlist() {
|
|||
}
|
||||
|
||||
function hideOrShowFeeds(hide) {
|
||||
var tree = dijit.byId("feedTree");
|
||||
|
||||
if (getInitParam("enable_feed_cats")) {
|
||||
|
||||
var cats = tree.model.store._arrayOfTopLevelItems;
|
||||
|
||||
cats.each(function(cat) {
|
||||
var cat_unread = hideOrShowFeedsCategory(cat.items, hide);
|
||||
|
||||
var id = String(cat.id);
|
||||
var node = tree._itemNodesMap[id];
|
||||
|
||||
if (node) {
|
||||
if (hide && cat_unread == 0) {
|
||||
Effect.Fade(node[0].rowNode, {duration : 0.3,
|
||||
queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }});
|
||||
} else {
|
||||
Element.show(node[0].rowNode);
|
||||
++cat_unread;
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
} else {
|
||||
hideOrShowFeedsCategory(tree.model.store._arrayOfTopLevelItems, hide);
|
||||
}
|
||||
|
||||
/* try {
|
||||
|
||||
|
@ -830,10 +675,33 @@ function hideOrShowFeeds(hide) {
|
|||
} */
|
||||
}
|
||||
|
||||
function hideOrShowFeedsCategory(cat_id, hide) {
|
||||
function hideOrShowFeedsCategory(feeds, hide) {
|
||||
try {
|
||||
//console.warn("hideOrShowFeedsCategory: function not implemented");
|
||||
var tree = dijit.byId("feedTree");
|
||||
var cat_unread = 0;
|
||||
|
||||
var nodes;
|
||||
feeds.each(function(feed) {
|
||||
var id = String(feed.id);
|
||||
var bare_id = parseInt(id.substr(id.indexOf(":")+1));
|
||||
|
||||
var unread = feed.unread[0];
|
||||
var node = tree._itemNodesMap[id];
|
||||
|
||||
if (node) {
|
||||
if (hide && unread == 0 && (bare_id > 0 || !getInitParam("hide_read_shows_special"))) {
|
||||
Effect.Fade(node[0].rowNode, {duration : 0.3,
|
||||
queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }});
|
||||
} else {
|
||||
Element.show(node[0].rowNode);
|
||||
++cat_unread;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return cat_unread;
|
||||
|
||||
/* var nodes;
|
||||
var cat_node;
|
||||
|
||||
if (cat_id) {
|
||||
|
@ -869,26 +737,33 @@ function hideOrShowFeedsCategory(cat_id, hide) {
|
|||
} else {
|
||||
Element.show(cat_node);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
} catch (e) {
|
||||
exception_error("hideOrShowFeedsCategory", e);
|
||||
}
|
||||
}
|
||||
|
||||
function getFeedName(id, is_cat) {
|
||||
var e;
|
||||
function getFeedName(feed, is_cat) {
|
||||
return getFeedValue(feed, is_cat, 'name');
|
||||
}
|
||||
|
||||
if (is_cat) {
|
||||
e = $("FCATN-" + id);
|
||||
} else {
|
||||
e = $("FEEDN-" + id);
|
||||
}
|
||||
if (e) {
|
||||
return e.innerHTML.stripTags();
|
||||
} else {
|
||||
return '';
|
||||
function getFeedValue(feed, is_cat, key) {
|
||||
|
||||
try {
|
||||
if (is_cat)
|
||||
treeItem = treeModel.store._itemsByIdentity['CAT:' + feed];
|
||||
else
|
||||
treeItem = treeModel.store._itemsByIdentity['FEED:' + feed];
|
||||
|
||||
if (treeItem)
|
||||
return treeModel.store.getValue(treeItem, key);
|
||||
|
||||
} catch (e) {
|
||||
//
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
function getNextUnreadCat(id) {
|
||||
|
@ -986,29 +861,55 @@ function getRelativeFeedId2(id, is_cat, direction, unread_only) {
|
|||
}
|
||||
}
|
||||
|
||||
function clean_feed_selections() {
|
||||
try {
|
||||
$$("#feedList li").invoke('removeClassName', 'Selected');
|
||||
} catch (e) {
|
||||
exception_error("clean_feed_selections", e);
|
||||
}
|
||||
}
|
||||
|
||||
function feedsSortByUnread() {
|
||||
return feeds_sort_by_unread;
|
||||
}
|
||||
|
||||
function setFeedUnread(feed, is_cat, unread) {
|
||||
try {
|
||||
setFeedValue(feed, is_cat, 'unread', parseInt(unread));
|
||||
} catch (e) {
|
||||
exception_error("setFeedUnread", e);
|
||||
}
|
||||
}
|
||||
|
||||
function setFeedValue(feed, is_cat, key, value) {
|
||||
try {
|
||||
if (!value) value = '';
|
||||
|
||||
if (is_cat)
|
||||
treeItem = treeModel.store._itemsByIdentity['CAT:' + feed];
|
||||
else
|
||||
treeItem = treeModel.store._itemsByIdentity['FEED:' + feed];
|
||||
|
||||
if (treeItem)
|
||||
treeModel.store.setValue(treeItem, 'unread', parseInt(unread));
|
||||
treeModel.store.setValue(treeItem, key, value);
|
||||
|
||||
} catch (e) {
|
||||
exception_error("setFeedUnread", e);
|
||||
exception_error("setFeedValue", e);
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCollapseCat(id) {
|
||||
console.warn("toggleCollapseCat: function not implemented");
|
||||
}
|
||||
|
||||
function selectFeed(feed, is_cat) {
|
||||
try {
|
||||
var tree = dijit.byId("feedTree");
|
||||
|
||||
if (is_cat)
|
||||
treeNode = tree._itemNodesMap['CAT:' + feed];
|
||||
else
|
||||
treeNode = tree._itemNodesMap['FEED:' + feed];
|
||||
|
||||
if (treeNode) {
|
||||
treeNode = treeNode[0];
|
||||
tree._expandNode(treeNode);
|
||||
tree._selectNode(treeNode);
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
exception_error("selectFeed", e);
|
||||
}
|
||||
}
|
||||
|
|
211
functions.php
211
functions.php
|
@ -4117,25 +4117,119 @@
|
|||
|
||||
# print "<div class=\"headlinesSubToolbar\">";
|
||||
|
||||
$page_prev_link = "javascript:viewFeedGoPage(-1)";
|
||||
$page_next_link = "javascript:viewFeedGoPage(1)";
|
||||
$page_first_link = "javascript:viewFeedGoPage(0)";
|
||||
$page_prev_link = "viewFeedGoPage(-1)";
|
||||
$page_next_link = "viewFeedGoPage(1)";
|
||||
$page_first_link = "viewFeedGoPage(0)";
|
||||
|
||||
$catchup_page_link = "javascript:catchupPage()";
|
||||
$catchup_feed_link = "javascript:catchupCurrentFeed()";
|
||||
$catchup_sel_link = "javascript:catchupSelection()";
|
||||
$catchup_page_link = "catchupPage()";
|
||||
$catchup_feed_link = "catchupCurrentFeed()";
|
||||
$catchup_sel_link = "catchupSelection()";
|
||||
|
||||
$archive_sel_link = "javascript:archiveSelection()";
|
||||
$delete_sel_link = "javascript:deleteSelection()";
|
||||
$archive_sel_link = "archiveSelection()";
|
||||
$delete_sel_link = "deleteSelection()";
|
||||
|
||||
$sel_all_link = "javascript:selectArticles('all')";
|
||||
$sel_unread_link = "javascript:selectArticles('unread')";
|
||||
$sel_none_link = "javascript:selectArticles('none')";
|
||||
$sel_inv_link = "javascript:selectArticles('invert')";
|
||||
$sel_all_link = "selectArticles('all')";
|
||||
$sel_unread_link = "selectArticles('unread')";
|
||||
$sel_none_link = "selectArticles('none')";
|
||||
$sel_inv_link = "selectArticles('invert')";
|
||||
|
||||
$tog_unread_link = "javascript:selectionToggleUnread()";
|
||||
$tog_marked_link = "javascript:selectionToggleMarked()";
|
||||
$tog_published_link = "javascript:selectionTogglePublished()";
|
||||
$tog_unread_link = "selectionToggleUnread()";
|
||||
$tog_marked_link = "selectionToggleMarked()";
|
||||
$tog_published_link = "selectionTogglePublished()";
|
||||
|
||||
print "<div id=\"subtoolbar_main\">";
|
||||
|
||||
print __('Select:')."
|
||||
<a href=\"#\" onclick=\"$sel_all_link\">".__('All')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_unread_link\">".__('Unread')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_inv_link\">".__('Invert')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_none_link\">".__('None')."</a></li>";
|
||||
|
||||
print " ";
|
||||
|
||||
/* print "<span
|
||||
onmouseover=\"enable_selection(false)\"
|
||||
onmouseout=\"enable_selection(true)\"
|
||||
onclick=\"toggleHeadlineActions()\" id=\"headlineActionsDrop\">".
|
||||
__("Actions...") . " <img width='11' height'7'
|
||||
src=\"images/down_arrow.png\">
|
||||
</span>";
|
||||
|
||||
print "<ul id=\"headlineActionsBody\" style=\"display : none\">";
|
||||
|
||||
print "<li class=\"insensitive\">".__('Selection toggle:')."</li>
|
||||
<li onclick=\"$tog_unread_link\"> ".__('Unread')."</li>
|
||||
<li onclick=\"$tog_marked_link\"> ".__('Starred')."</li>
|
||||
<li onclick=\"$tog_published_link\"> ".__('Published')."</li>
|
||||
<li class=\"insensitive\">".__('Selection:')."</li>
|
||||
<li onclick=\"$catchup_sel_link\"> ".__('Mark as read')."</li>";
|
||||
|
||||
// print "<li onclick=\"$catchup_feed_link\"> ".__('Entire feed').
|
||||
// "</li>";
|
||||
|
||||
if ($feed_id != "0") {
|
||||
print "<li onclick=\"$archive_sel_link\"> ".__('Archive')."</li>";
|
||||
} else {
|
||||
print "<li onclick=\"$archive_sel_link\"> ".__('Move back')."</li>";
|
||||
print "<li onclick=\"$delete_sel_link\"> ".__('Delete')."</li>";
|
||||
|
||||
}
|
||||
|
||||
print "<li onclick=\"emailArticle(false)\"> ".
|
||||
__('Forward by email')."</li>";
|
||||
|
||||
//print "<li><span class=\"insensitive\">--------</span></li>";
|
||||
print "<li class=\"insensitive\">".__('Assign label:')."</li>";
|
||||
|
||||
print_labels_headlines_dropdown($link, $feed_id);
|
||||
|
||||
print "<li class=\"insensitive\">".__('Feed:')."</li>";
|
||||
print "<li onclick=\"displayDlg('generatedFeed', '$feed_id:$is_cat:$rss_link')\"> ".__('View as RSS')."</li>";
|
||||
|
||||
print "</ul>"; */
|
||||
|
||||
print "<select dojoType=\"dijit.form.Select\"
|
||||
onchange=\"headlineActionsChange(this)\">";
|
||||
print "<option value=\"\">".__('Actions...')."</option>";
|
||||
|
||||
# print "<optgroup label=\"".__("Selection toggle:")."\">";
|
||||
|
||||
print "<option value=\"$tog_unread_link\">".__('Toggle unread')."</option>
|
||||
<option value=\"$tog_marked_link\">".__('Toggle starred')."</option>
|
||||
<option value=\"$tog_published_link\">".__('Toggle published')."</option>";
|
||||
|
||||
# print "</optgroup>
|
||||
# <optgroup label=\"".__("Selection:")."\">";
|
||||
|
||||
print "<option>----------</option>";
|
||||
|
||||
print "<option value=\"$catchup_sel_link\">".__('Mark as read')."</option>";
|
||||
|
||||
if ($feed_id != "0") {
|
||||
print "<option value=\"$archive_sel_link\">".__('Archive')."</option>";
|
||||
} else {
|
||||
print "<option value=\"$archive_sel_link\">".__('Move back')."</option>";
|
||||
print "<option value=\"$delete_sel_link\">".__('Delete')."</option>";
|
||||
|
||||
}
|
||||
|
||||
print "<option value=\"emailArticle(false)\">".__('Forward by email').
|
||||
"</option>";
|
||||
|
||||
# print "<optgroup label=\"".__("Assign label:")."\">";
|
||||
print "<option>----------</option>";
|
||||
|
||||
print_labels_headlines_dropdown($link, $feed_id);
|
||||
|
||||
print "<option>----------</option>";
|
||||
|
||||
# print "</optgroup>";
|
||||
|
||||
print "<option value=\"displayDlg('generatedFeed', '$feed_id:$is_cat:$rss_link')\">".__('View as RSS')."</option>";
|
||||
|
||||
print "</select>";
|
||||
|
||||
print "</div>";
|
||||
|
||||
print "<div id=\"subtoolbar_ftitle\">";
|
||||
|
||||
|
@ -4197,56 +4291,6 @@
|
|||
|
||||
print "</div>";
|
||||
|
||||
print __('Select:')."
|
||||
<a href=\"#\" onclick=\"$sel_all_link\">".__('All')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_unread_link\">".__('Unread')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_inv_link\">".__('Invert')."</a>,
|
||||
<a href=\"#\" onclick=\"$sel_none_link\">".__('None')."</a></li>";
|
||||
|
||||
print " ";
|
||||
|
||||
print "<span
|
||||
onmouseover=\"enable_selection(false)\"
|
||||
onmouseout=\"enable_selection(true)\"
|
||||
onclick=\"toggleHeadlineActions()\" id=\"headlineActionsDrop\">".
|
||||
__("Actions...") . " <img width='11' height'7'
|
||||
src=\"images/down_arrow.png\">
|
||||
</span>";
|
||||
|
||||
print "<ul id=\"headlineActionsBody\" style=\"display : none\">";
|
||||
|
||||
print "<li class=\"insensitive\">".__('Selection toggle:')."</li>
|
||||
<li onclick=\"$tog_unread_link\"> ".__('Unread')."</li>
|
||||
<li onclick=\"$tog_marked_link\"> ".__('Starred')."</li>
|
||||
<li onclick=\"$tog_published_link\"> ".__('Published')."</li>
|
||||
<li class=\"insensitive\">".__('Selection:')."</li>
|
||||
<li onclick=\"$catchup_sel_link\"> ".__('Mark as read')."</li>";
|
||||
|
||||
// print "<li onclick=\"$catchup_feed_link\"> ".__('Entire feed').
|
||||
// "</li>";
|
||||
|
||||
if ($feed_id != "0") {
|
||||
print "<li onclick=\"$archive_sel_link\"> ".__('Archive')."</li>";
|
||||
} else {
|
||||
print "<li onclick=\"$archive_sel_link\"> ".__('Move back')."</li>";
|
||||
print "<li onclick=\"$delete_sel_link\"> ".__('Delete')."</li>";
|
||||
|
||||
}
|
||||
|
||||
print "<li onclick=\"emailArticle(false)\"> ".
|
||||
__('Forward by email')."</li>";
|
||||
|
||||
//print "<li><span class=\"insensitive\">--------</span></li>";
|
||||
print "<li class=\"insensitive\">".__('Assign label:')."</li>";
|
||||
|
||||
print_labels_headlines_dropdown($link, $feed_id);
|
||||
|
||||
print "<li class=\"insensitive\">".__('Feed:')."</li>";
|
||||
print "<li onclick=\"displayDlg('generatedFeed', '$feed_id:$is_cat:$rss_link')\"> ".__('View as RSS')."</li>";
|
||||
|
||||
print "</ul>";
|
||||
|
||||
# print "</div>";
|
||||
}
|
||||
|
||||
function printCategoryHeader($link, $cat_id, $hidden = false, $can_browse = true,
|
||||
|
@ -4437,8 +4481,10 @@
|
|||
$cat = feedlist_init_cat($link, $cat_id, $collapsed);
|
||||
}
|
||||
|
||||
$updated = make_local_datetime($link, $line["updated_noms"], false);
|
||||
|
||||
array_push($cat['items'], feedlist_init_feed($link, $feed_id,
|
||||
$feed, $unread));
|
||||
$feed, $unread, $line['last_error'], $updated));
|
||||
}
|
||||
|
||||
if (!$enable_cats) {
|
||||
|
@ -6294,8 +6340,7 @@
|
|||
}
|
||||
|
||||
function print_labels_headlines_dropdown($link, $feed_id) {
|
||||
print "<li onclick=\"javascript:addLabel()\">
|
||||
".__("Create label...")."</li>";
|
||||
print "<option value=\"addLabel()\">".__("Create label...")."</option>";
|
||||
|
||||
$result = db_query($link, "SELECT id, caption FROM ttrss_labels2 WHERE
|
||||
owner_uid = '".$_SESSION["uid"]."' ORDER BY caption");
|
||||
|
@ -6307,13 +6352,13 @@
|
|||
$id = $line["id"];
|
||||
|
||||
if ($feed_id < -10 && $feed_id == -11-$label_id) {
|
||||
print "<li id=\"LHDL-$id\"
|
||||
onclick=\"javascript:selectionRemoveLabel($label_id)\">
|
||||
$label_caption ".__('(remove)')."</li>";
|
||||
print "<option id=\"LHDL-$id\"
|
||||
value=\"selectionRemoveLabel($label_id)\">".
|
||||
__('Remove:') . " $label_caption</option>";
|
||||
} else {
|
||||
print "<li id=\"LHDL-$id\"
|
||||
onclick=\"javascript:selectionAssignLabel($label_id)\">
|
||||
$label_caption</li>";
|
||||
print "<option id=\"LHDL-$id\"
|
||||
value=\"selectionAssignLabel($label_id)\">".
|
||||
__('Assign:') . " $label_caption</option>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6397,10 +6442,12 @@
|
|||
return $str;
|
||||
}
|
||||
|
||||
function toggle_collapse_cat($link, $cat_id) {
|
||||
function toggle_collapse_cat($link, $cat_id, $mode) {
|
||||
if ($cat_id > 0) {
|
||||
$mode = bool_to_sql_bool($mode);
|
||||
|
||||
db_query($link, "UPDATE ttrss_feed_categories SET
|
||||
collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
|
||||
collapsed = $mode WHERE id = '$cat_id' AND owner_uid = " .
|
||||
$_SESSION["uid"]);
|
||||
} else {
|
||||
$pref_name = '';
|
||||
|
@ -6418,10 +6465,10 @@
|
|||
}
|
||||
|
||||
if ($pref_name) {
|
||||
if (get_pref($link, $pref_name)) {
|
||||
set_pref($link, $pref_name, 'false');
|
||||
} else {
|
||||
if ($mode) {
|
||||
set_pref($link, $pref_name, 'true');
|
||||
} else {
|
||||
set_pref($link, $pref_name, 'false');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7145,7 +7192,7 @@
|
|||
$cat_unread = getCategoryUnread($link, $cat_id);
|
||||
}
|
||||
|
||||
$obj['id'] = 'CAT:' . $cat_id;
|
||||
$obj['id'] = 'CAT:' . ((int)$cat_id);
|
||||
$obj['items'] = array();
|
||||
$obj['name'] = getCategoryTitle($link, $cat_id);
|
||||
$obj['type'] = 'feed';
|
||||
|
@ -7155,7 +7202,7 @@
|
|||
return $obj;
|
||||
}
|
||||
|
||||
function feedlist_init_feed($link, $feed_id, $title = false, $unread = false) {
|
||||
function feedlist_init_feed($link, $feed_id, $title = false, $unread = false, $error = '', $updated = '') {
|
||||
$obj = array();
|
||||
|
||||
if (!$title)
|
||||
|
@ -7168,6 +7215,8 @@
|
|||
$obj['name'] = $title;
|
||||
$obj['unread'] = (int) $unread;
|
||||
$obj['type'] = 'feed';
|
||||
$obj['error'] = $error;
|
||||
$obj['updated'] = $updated;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
|
10
prefs.js
10
prefs.js
|
@ -1162,6 +1162,14 @@ function init() {
|
|||
|
||||
try {
|
||||
|
||||
//dojo.require("dijit.layout.BorderContainer");
|
||||
//dojo.require("dijit.layout.ContentPane");
|
||||
dojo.require("dijit.Dialog");
|
||||
dojo.require("dijit.form.Button");
|
||||
//dojo.require("dojo.data.ItemFileReadStore");
|
||||
//dojo.require("dojo.data.ItemFileWriteStore");
|
||||
//dojo.require("dijit.Tree");
|
||||
|
||||
loading_set_progress(30);
|
||||
|
||||
var query = "?op=rpc&subop=sanityCheck";
|
||||
|
@ -1241,7 +1249,7 @@ function pref_hotkey_handler(e) {
|
|||
closeInfoBox();
|
||||
}
|
||||
|
||||
if (!hotkeys_enabled) {
|
||||
if (dialogs.length > 0 || !hotkeys_enabled) {
|
||||
console.log("hotkeys disabled");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<head>
|
||||
<title>Tiny Tiny RSS : Preferences</title>
|
||||
<link rel="stylesheet" type="text/css" href="tt-rss.css?<?php echo $dt_add ?>"/>
|
||||
<link rel="stylesheet" type="text/css" href="lib/modalbox/modalbox.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
|
||||
|
||||
<?php $user_theme = get_user_theme_path($link);
|
||||
if ($user_theme) { ?>
|
||||
|
@ -42,7 +42,7 @@
|
|||
<script type="text/javascript" src="lib/prototype.js"></script>
|
||||
<script type="text/javascript" src="lib/position.js"></script>
|
||||
<script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
|
||||
<script type="text/javascript" src="lib/modalbox/modalbox.js"></script>
|
||||
<script type="text/javascript" src="lib/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="localized_js.php?<?php echo $dt_add ?>"></script>
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
|
||||
</head>
|
||||
|
||||
<body id="ttrssPrefs">
|
||||
<body id="ttrssPrefs" class="claro">
|
||||
|
||||
<div id="overlay">
|
||||
<div id="overlay_inner">
|
||||
|
|
397
tt-rss.css
397
tt-rss.css
|
@ -1,4 +1,4 @@
|
|||
body#ttrssMain {
|
||||
body#ttrssMain, body#ttrssPrefs {
|
||||
background : white;
|
||||
color : black;
|
||||
margin : 0px;
|
||||
|
@ -106,130 +106,6 @@ div.postReply span.author {
|
|||
font-size : 12px;
|
||||
}
|
||||
|
||||
ul.feedList span.feedlink:hover {
|
||||
cursor : pointer;
|
||||
color : #4684ff;
|
||||
}
|
||||
|
||||
|
||||
ul.feedList img.hlLoading {
|
||||
margin-left : 5px;
|
||||
vertical-align : middle;
|
||||
height : 10px;
|
||||
}
|
||||
|
||||
ul.feedList {
|
||||
list-style-type : none;
|
||||
margin : 5px 5px 5px 0px;
|
||||
padding : 0px 0px 0px 5px;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
ul.feedList li.feedCat, ul.feedList li.virtCat {
|
||||
margin : 0px;
|
||||
padding : 3px 0px 3px 0px;
|
||||
color : #707070;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
ul.feedList img.catCollapse {
|
||||
cursor : pointer;
|
||||
vertical-align : middle;
|
||||
width : 11px;
|
||||
height : 11px;
|
||||
padding-bottom : 3px;
|
||||
}
|
||||
|
||||
ul.feedList span.catTitle {
|
||||
color : #707070;
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
ul.feedList span.catTitle:hover {
|
||||
color : #4684ff;
|
||||
}
|
||||
|
||||
ul.feedList li.feedCat.Selected {
|
||||
margin : 0px;
|
||||
padding : 3px 0px 3px 0px;
|
||||
color : #4684ff;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
ul.feedList li.feedCat.Selected span.catTitle {
|
||||
color : #4684ff;
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
ul.feedCatList {
|
||||
list-style-type : none;
|
||||
margin : 0px 0px 0px 20px;
|
||||
padding : 0px;
|
||||
}
|
||||
|
||||
ul.feedCatList li {
|
||||
margin : 0px;
|
||||
padding : 0px 0px 2px 0px;
|
||||
color : black;
|
||||
}
|
||||
|
||||
ul.feedList > li {
|
||||
padding : 0px 0px 2px 0px;
|
||||
}
|
||||
|
||||
ul.feedCatList img, ul.feedList img {
|
||||
vertical-align : bottom;
|
||||
}
|
||||
|
||||
li.feed.Unread,
|
||||
li.error.Unread,
|
||||
li.label.Unread,
|
||||
li.virt.Unread,
|
||||
li.tag.Unread {
|
||||
font-weight : bold;
|
||||
}
|
||||
|
||||
li.error.Selected span.feedlink,
|
||||
li.error span.feedlink,
|
||||
li.error.Unread span.feedlink,
|
||||
li.error.Unread.Selected span.feedlink {
|
||||
color : #f04040;
|
||||
}
|
||||
|
||||
li.feed.Selected span.feedlink,
|
||||
li.label.Selected span.feedlink,
|
||||
li.virt.Selected span.feedlink,
|
||||
li.tag.Selected span.feedlink {
|
||||
color : #4684ff;
|
||||
}
|
||||
|
||||
li.feed.Unread.Selected span.feedlink,
|
||||
li.label.Unread.Selected span.feedlink,
|
||||
li.virt.Unread.Selected span.feedlink,
|
||||
li.tag.Unread.Selected span.feedlink {
|
||||
color : #4684ff;
|
||||
}
|
||||
|
||||
li.feed.Unread.Selected,
|
||||
li.error.Unread.Selected,
|
||||
li.label.Unread.Selected,
|
||||
li.virt.Unread.Selected,
|
||||
li.tag.Unread.Selected {
|
||||
font-weight : bold;
|
||||
}
|
||||
|
||||
li.feed {
|
||||
display : block;
|
||||
}
|
||||
|
||||
ul.feedList img, img.tinyFeedIcon {
|
||||
margin : 0px 3px 0px 0px;
|
||||
width : 16px;
|
||||
height : 16px;
|
||||
vertical-align : middle;
|
||||
border-width : 0px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size : 18px;
|
||||
}
|
||||
|
@ -684,18 +560,29 @@ div#headlines-toolbar {
|
|||
font-size : 11px;
|
||||
font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
|
||||
color : gray;
|
||||
padding : 0px 5px 0px 0px;
|
||||
padding : 0px;
|
||||
margin : 0px;
|
||||
overflow : hidden;
|
||||
height : 21px;
|
||||
}
|
||||
|
||||
/* div.headlines-toolbar * {
|
||||
line-height : normal;
|
||||
} */
|
||||
div#headlines-toolbar .dijitSelect {
|
||||
font-size : 11px;
|
||||
}
|
||||
|
||||
div#headlines-toolbar div#subtoolbar_main {
|
||||
display : table-cell;
|
||||
width : 100%;
|
||||
white-space : nowrap;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
div#headlines-toolbar div#subtoolbar_ftitle {
|
||||
float : right;
|
||||
/* line-height : 20px; */
|
||||
display : table-cell;
|
||||
text-align : right;
|
||||
vertical-align : middle;
|
||||
white-space : nowrap;
|
||||
padding-right : 5px;
|
||||
}
|
||||
|
||||
span.contentPreview {
|
||||
|
@ -932,7 +819,9 @@ form {
|
|||
#main_toolbar_form {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
display : inline;
|
||||
display : table-cell;
|
||||
white-space : nowrap;
|
||||
width : 100%;
|
||||
}
|
||||
|
||||
div.feedExtInfo {
|
||||
|
@ -1027,120 +916,23 @@ div.whiteBox {
|
|||
padding : 1em;
|
||||
}
|
||||
|
||||
html, body, #main {
|
||||
html, body#ttrssMain, #main {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#toolbar div.actionChooser {
|
||||
/* margin-right : 5px; */
|
||||
float : right;
|
||||
display : table-cell;
|
||||
text-align : right;
|
||||
padding-right : 5px;
|
||||
}
|
||||
|
||||
/* layout */
|
||||
/* preferences layout */
|
||||
|
||||
/* #header {
|
||||
position : absolute;
|
||||
white-space: nowrap;
|
||||
top : 5px;
|
||||
left : 15px;
|
||||
right : 5px;
|
||||
height : 35px;
|
||||
color : #4684ff;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
#feeds-holder {
|
||||
border-width : 1px 1px 0px 0px;
|
||||
border-style : solid solid;
|
||||
border-color : #C4D1E4 #88b0f0;
|
||||
top : 40px;
|
||||
left : 0px;
|
||||
position : absolute;
|
||||
width : 260px;
|
||||
overflow : auto;
|
||||
bottom : 0px;
|
||||
border-collapse : collapse;
|
||||
}
|
||||
|
||||
#toolbar div.actionChooser {
|
||||
margin-right : 5px;
|
||||
float : right;
|
||||
}
|
||||
|
||||
#toolbar {
|
||||
position : absolute;
|
||||
left : 261px;
|
||||
padding : 0px 0px 0px 10px;
|
||||
top : 40px;
|
||||
right : 0px;
|
||||
white-space: nowrap;
|
||||
height : 30px;
|
||||
background-image : url("images/toolbar.png");
|
||||
background-position : bottom left;
|
||||
background-repeat : repeat-x;
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
#toolbar input {
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
div.headlines_normal {
|
||||
position : absolute;
|
||||
border-width : 1px 0px 0px 0px;
|
||||
border-style : solid;
|
||||
border-color : #88b0f0;
|
||||
left : 261px;
|
||||
height : 305px;
|
||||
top : 70px;
|
||||
right : 0px;
|
||||
overflow : hidden;
|
||||
font-size : 12px;
|
||||
border-collapse : collapse;
|
||||
}
|
||||
|
||||
div.headlines_cdm {
|
||||
position : absolute;
|
||||
border-width : 1px 0px 1px 0px;
|
||||
border-style : solid;
|
||||
border-color : #88b0f0;
|
||||
left : 261px;
|
||||
bottom : 40px;
|
||||
top : 70px;
|
||||
right : 0px;
|
||||
overflow : hidden;
|
||||
font-size : 12px;
|
||||
border-collapse : collapse;
|
||||
}
|
||||
|
||||
#content-frame {
|
||||
position : absolute;
|
||||
border-width : 1px 0px 0px 0px;
|
||||
border-style : solid;
|
||||
border-color : #88b0f0;
|
||||
overflow : auto;
|
||||
top : 390px;
|
||||
left : 261px;
|
||||
bottom : 40px;
|
||||
right : 0px;
|
||||
border-collapse : collapse;
|
||||
}
|
||||
|
||||
#resize-grabber {
|
||||
height : 5px;
|
||||
border-width : 0px 0px 1px 0px;
|
||||
border-style : solid;
|
||||
border-color : #88b0f0;
|
||||
background : url("images/resize_horiz.png") top left;
|
||||
cursor : move;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
#footer, #prefFooter {
|
||||
#prefFooter {
|
||||
position : absolute;
|
||||
bottom : 0px;
|
||||
height : 20px;
|
||||
|
@ -1173,26 +965,6 @@ div.headlines_cdm {
|
|||
color : black;
|
||||
}
|
||||
|
||||
#headlinesContainer {
|
||||
margin-left : 0px;
|
||||
background-color : white;
|
||||
}
|
||||
|
||||
#headlineActionsTop {
|
||||
font-size : 12px;
|
||||
}
|
||||
|
||||
#headlinesInnerContainer {
|
||||
overflow : auto;
|
||||
position : absolute;
|
||||
left : 0px;
|
||||
right : 0px;
|
||||
bottom : 0px;
|
||||
top : 25px;
|
||||
} */
|
||||
|
||||
/* preferences layout */
|
||||
|
||||
#prefHeader {
|
||||
color : #4684ff;
|
||||
font-size : 12px;
|
||||
|
@ -1243,40 +1015,16 @@ div.return a:hover {
|
|||
|
||||
}
|
||||
|
||||
#userSwitch {
|
||||
position : absolute;
|
||||
bottom : 2px;
|
||||
right : 2px;
|
||||
}
|
||||
|
||||
.catCtr.Unread, .feedCtr.Unread {
|
||||
font-weight : bold;
|
||||
color : #707070;
|
||||
display : inline;
|
||||
}
|
||||
|
||||
.catCtr, .feedCtr {
|
||||
display : none;
|
||||
}
|
||||
|
||||
div.topLinks img {
|
||||
vertical-align : middle;
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
#offlineModePic {
|
||||
margin-left : 5px;
|
||||
}
|
||||
|
||||
a.helpLinkPic img {
|
||||
border-width : 0px;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
li.feedCatHolder {
|
||||
display : inline;
|
||||
}
|
||||
|
||||
table.prefFeedCatList {
|
||||
background-color : white;
|
||||
}
|
||||
|
@ -1524,53 +1272,6 @@ pre, code {
|
|||
font-family : monospace;
|
||||
}
|
||||
|
||||
span#headlineActionsDrop {
|
||||
border : 1px solid #c0c0c0;
|
||||
padding : 1px 5px 1px 10px;
|
||||
color : #063064;
|
||||
cursor : pointer;
|
||||
}
|
||||
|
||||
ul#headlineActionsBody {
|
||||
list-style-type : none;
|
||||
position : absolute;
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
background-color : white;
|
||||
width : 150px;
|
||||
z-index : 4;
|
||||
top : auto;
|
||||
left : auto;
|
||||
border-width : 1px 1px 1px 1px;
|
||||
border-color : #c0c0c0;
|
||||
border-style : solid;
|
||||
margin-left : -1px;
|
||||
max-height : 250px;
|
||||
overflow : auto;
|
||||
|
||||
}
|
||||
|
||||
ul#headlineActionsBody li {
|
||||
padding : 2px 5px 2px 10px;
|
||||
color : black;
|
||||
}
|
||||
|
||||
ul#headlineActionsBody li:hover {
|
||||
color : #4684ff;
|
||||
cursor : pointer;
|
||||
background : #ecf4ff;
|
||||
}
|
||||
|
||||
ul#headlineActionsBody li.insensitive {
|
||||
color : gray;
|
||||
}
|
||||
|
||||
ul#headlineActionsBody li.insensitive:hover {
|
||||
background : white;
|
||||
cursor : normal;
|
||||
color : gray;
|
||||
}
|
||||
|
||||
span.prefsLabelEntry {
|
||||
padding : 2px;
|
||||
}
|
||||
|
@ -1619,29 +1320,6 @@ div.colorPicker {
|
|||
color : #909090;
|
||||
}
|
||||
|
||||
div#offlineModeDrop div {
|
||||
padding : 2px 2px 2px 2px;
|
||||
text-align : left;
|
||||
}
|
||||
|
||||
div#offlineModeDrop {
|
||||
position : absolute;
|
||||
margin : 0px;
|
||||
padding : 2px;
|
||||
background-color : white;
|
||||
z-index : 2;
|
||||
margin : 2px 0px 0px 0px;
|
||||
top : auto;
|
||||
right : 0px;
|
||||
border : 1px solid #cccccc;
|
||||
background : white;
|
||||
min-width : 170px;
|
||||
margin-left : -1px;
|
||||
max-height : 250px;
|
||||
overflow : auto;
|
||||
color : #909090;
|
||||
}
|
||||
|
||||
optgroup {
|
||||
color : #4684ff;
|
||||
font-style : normal;
|
||||
|
@ -1711,6 +1389,11 @@ div.hlRight {
|
|||
vertical-align : middle;
|
||||
}
|
||||
|
||||
div.hlRight img {
|
||||
max-width : 16px;
|
||||
max-height : 16px;
|
||||
}
|
||||
|
||||
span.hlUpdated {
|
||||
color : gray;
|
||||
font-weight : medium;
|
||||
|
@ -1764,6 +1447,9 @@ div.fatalError textarea {
|
|||
|
||||
#feeds-holder {
|
||||
padding : 0px;
|
||||
border-color : #88b0f0;
|
||||
border-left-width : 0px;
|
||||
border-bottom-width : 0px;
|
||||
}
|
||||
|
||||
#headlines-wrap-inner {
|
||||
|
@ -1774,6 +1460,8 @@ div.fatalError textarea {
|
|||
|
||||
#headlines-frame {
|
||||
padding : 0px;
|
||||
border-color : #88b0f0;
|
||||
border-right-width : 0px;
|
||||
}
|
||||
|
||||
#headlinesInnerContainer {
|
||||
|
@ -1802,10 +1490,19 @@ div.fatalError textarea {
|
|||
|
||||
#content-insert {
|
||||
padding : 0px;
|
||||
border-color : #88b0f0;
|
||||
border-bottom-width : 0px;
|
||||
border-right-width : 0px;
|
||||
}
|
||||
|
||||
.dijitTreeLabel.Unread {
|
||||
font-weight : bold;
|
||||
}
|
||||
|
||||
.dijitTreeRow.Error {
|
||||
color : red;
|
||||
}
|
||||
|
||||
.dijitTreeRow.Hidden {
|
||||
display : none;
|
||||
}
|
||||
|
|
103
tt-rss.js
103
tt-rss.js
|
@ -38,13 +38,14 @@ function getActiveFeedId() {
|
|||
|
||||
function setActiveFeedId(id, is_cat) {
|
||||
try {
|
||||
//console.log("sAFID(" + id + ", " + is_cat + ")");
|
||||
_active_feed_id = id;
|
||||
|
||||
if (is_cat != undefined) {
|
||||
_active_feed_is_cat = is_cat;
|
||||
}
|
||||
|
||||
selectFeed(id, is_cat);
|
||||
|
||||
} catch (e) {
|
||||
exception_error("setActiveFeedId", e);
|
||||
}
|
||||
|
@ -92,13 +93,13 @@ function dlg_frefresh_callback(transport, deleted_feed) {
|
|||
setTimeout("viewfeed(-5)", 100);
|
||||
}
|
||||
|
||||
setTimeout('updateFeedList(false, false)', 50);
|
||||
setTimeout('updateFeedList()', 50);
|
||||
closeInfoBox();
|
||||
}
|
||||
|
||||
function updateFeedList() {
|
||||
try {
|
||||
console.log("updateFeedList");
|
||||
console.warn("updateFeedList: function not implemented");
|
||||
|
||||
/* var query_str = "backend.php?op=feeds";
|
||||
|
||||
|
@ -245,9 +246,10 @@ function init() {
|
|||
dojo.require("dijit.layout.ContentPane");
|
||||
dojo.require("dijit.Dialog");
|
||||
dojo.require("dijit.form.Button");
|
||||
dojo.require("dojo.data.ItemFileReadStore");
|
||||
dojo.require("dojo.data.ItemFileWriteStore");
|
||||
dojo.require("dijit.Tree");
|
||||
dojo.require("dijit.form.Select");
|
||||
dojo.require("dojo.parser");
|
||||
|
||||
dojo.addOnLoad(function() {
|
||||
|
||||
|
@ -274,6 +276,10 @@ function init() {
|
|||
getLabelClass: function (item, opened) {
|
||||
return (item.unread == 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread";
|
||||
},
|
||||
getRowClass: function (item, opened) {
|
||||
return (!item.error || item.error == '') ? "dijitTreeRow" :
|
||||
"dijitTreeRow Error";
|
||||
},
|
||||
getLabel: function(item) {
|
||||
if (item.unread > 0) {
|
||||
return item.name + " (" + item.unread + ")";
|
||||
|
@ -281,6 +287,23 @@ function init() {
|
|||
return item.name;
|
||||
}
|
||||
},
|
||||
onOpen: function (item, node) {
|
||||
var id = String(item.id);
|
||||
var cat_id = id.substr(id.indexOf(":")+1);
|
||||
|
||||
new Ajax.Request("backend.php",
|
||||
{ parameters: "backend.php?op=feeds&subop=collapse&cid=" +
|
||||
param_escape(cat_id) + "&mode=1" } );
|
||||
},
|
||||
onClose: function (item, node) {
|
||||
var id = String(item.id);
|
||||
var cat_id = id.substr(id.indexOf(":")+1);
|
||||
|
||||
new Ajax.Request("backend.php",
|
||||
{ parameters: "backend.php?op=feeds&subop=collapse&cid=" +
|
||||
param_escape(cat_id) + "&mode=0" } );
|
||||
|
||||
},
|
||||
onClick: function (item, node) {
|
||||
var id = String(item.id);
|
||||
var is_cat = id.match("^CAT:");
|
||||
|
@ -323,16 +346,15 @@ function init_second_stage() {
|
|||
|
||||
feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1;
|
||||
|
||||
remove_splash();
|
||||
feedlist_init();
|
||||
|
||||
console.log("second stage ok");
|
||||
|
||||
loading_set_progress(60);
|
||||
|
||||
if (has_local_storage())
|
||||
localStorage.clear();
|
||||
|
||||
console.log("second stage ok");
|
||||
|
||||
feedlist_init();
|
||||
|
||||
} catch (e) {
|
||||
exception_error("init_second_stage", e);
|
||||
}
|
||||
|
@ -626,69 +648,10 @@ function feedEditSave() {
|
|||
|
||||
function collapse_feedlist() {
|
||||
try {
|
||||
//console.log("collapse_feedlist");
|
||||
|
||||
/* var theme = getInitParam("theme");
|
||||
if (theme != "" &&
|
||||
!getInitParam("theme_options").match("collapse_feedlist")) return;
|
||||
|
||||
var fl = $("feeds-holder");
|
||||
var fh = $("headlines-frame");
|
||||
var fc = $("content-frame");
|
||||
var ft = $("toolbar");
|
||||
var ff = $("footer");
|
||||
var fhdr = $("header");
|
||||
var fbtn = $("collapse_feeds_btn");
|
||||
|
||||
if (!Element.visible(fl)) {
|
||||
Element.show(fl);
|
||||
fbtn.innerHTML = "<<";
|
||||
|
||||
if (theme != "graycube") {
|
||||
|
||||
fh.style.left = fl.offsetWidth + "px";
|
||||
ft.style.left = fl.offsetWidth + "px";
|
||||
if (fc) fc.style.left = fl.offsetWidth + "px";
|
||||
if (ff && theme != "compat") ff.style.left = (fl.offsetWidth-1) + "px";
|
||||
|
||||
if (theme == "compact") fhdr.style.left = (fl.offsetWidth + 10) + "px";
|
||||
} else {
|
||||
fh.style.left = fl.offsetWidth + 40 + "px";
|
||||
ft.style.left = fl.offsetWidth + 40 +"px";
|
||||
if (fc) fc.style.left = fl.offsetWidth + 40 + "px";
|
||||
}
|
||||
|
||||
query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false";
|
||||
|
||||
new Ajax.Request("backend.php", { parameters: query });
|
||||
|
||||
} else {
|
||||
Element.hide(fl);
|
||||
fbtn.innerHTML = ">>";
|
||||
|
||||
if (theme != "graycube") {
|
||||
|
||||
fh.style.left = "0px";
|
||||
ft.style.left = "0px";
|
||||
if (fc) fc.style.left = "0px";
|
||||
if (ff) ff.style.left = "0px";
|
||||
|
||||
if (theme == "compact") fhdr.style.left = "10px";
|
||||
|
||||
} else {
|
||||
fh.style.left = "20px";
|
||||
ft.style.left = "20px";
|
||||
if (fc) fc.style.left = "20px";
|
||||
|
||||
}
|
||||
|
||||
query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
|
||||
|
||||
new Ajax.Request("backend.php", { parameters: query });
|
||||
|
||||
} */
|
||||
console.warn("collapse_feedlist: function not implemented");
|
||||
|
||||
query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
|
||||
new Ajax.Request("backend.php", { parameters: query });
|
||||
|
||||
} catch (e) {
|
||||
exception_error("collapse_feedlist", e);
|
||||
|
|
66
tt-rss.php
66
tt-rss.php
|
@ -131,37 +131,6 @@
|
|||
|
||||
<div id="toolbar" dojoType="dijit.layout.ContentPane" region="top">
|
||||
|
||||
<div class="actionChooser">
|
||||
<select id="quickMenuChooser" onchange="quickMenuChange()">
|
||||
<option value="qmcDefault" selected="selected"><?php echo __('Actions...') ?></option>
|
||||
<option value="qmcSearch"><?php echo __('Search...') ?></option>
|
||||
<optgroup label="<?php echo __('Feed actions:') ?>">
|
||||
<option value="qmcAddFeed"><?php echo __('Subscribe to feed...') ?></option>
|
||||
<option value="qmcEditFeed"><?php echo __('Edit this feed...') ?></option>
|
||||
<option value="qmcRescoreFeed"><?php echo __('Rescore feed') ?></option>
|
||||
<option value="qmcRemoveFeed"><?php echo __('Unsubscribe') ?></option>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo __('All feeds:') ?>">
|
||||
<option value="qmcCatchupAll"><?php echo __('Mark as read') ?></option>
|
||||
<option value="qmcShowOnlyUnread"><?php echo __('(Un)hide read feeds') ?></option>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo __('Categories:') ?>">
|
||||
|
||||
<option value="qmcToggleReorder"><?php echo __('Toggle reordering mode') ?></option>
|
||||
<option value="qmcResetCats"><?php echo __('Reset order') ?></option>
|
||||
</optgroup>
|
||||
|
||||
<optgroup label="<?php echo __('Other actions:') ?>">
|
||||
|
||||
<option value="qmcAddLabel"><?php echo __('Create label...') ?></option>
|
||||
<option value="qmcAddFilter"><?php echo __('Create filter...') ?></option>
|
||||
<option value="qmcResetUI"><?php echo __('Reset UI layout') ?></option>
|
||||
<option value="qmcHKhelp"><?php echo __('Keyboard shortcuts help') ?></option>
|
||||
</optgroup>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<form id="main_toolbar_form" action="" onsubmit='return false'>
|
||||
|
||||
<button id="collapse_feeds_btn" onclick="collapse_feedlist()"
|
||||
|
@ -195,6 +164,37 @@
|
|||
|
||||
</form>
|
||||
|
||||
<div class="actionChooser">
|
||||
<select id="quickMenuChooser" onchange="quickMenuChange()">
|
||||
<option value="qmcDefault" selected="selected"><?php echo __('Actions...') ?></option>
|
||||
<option value="qmcSearch"><?php echo __('Search...') ?></option>
|
||||
<optgroup label="<?php echo __('Feed actions:') ?>">
|
||||
<option value="qmcAddFeed"><?php echo __('Subscribe to feed...') ?></option>
|
||||
<option value="qmcEditFeed"><?php echo __('Edit this feed...') ?></option>
|
||||
<option value="qmcRescoreFeed"><?php echo __('Rescore feed') ?></option>
|
||||
<option value="qmcRemoveFeed"><?php echo __('Unsubscribe') ?></option>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo __('All feeds:') ?>">
|
||||
<option value="qmcCatchupAll"><?php echo __('Mark as read') ?></option>
|
||||
<option value="qmcShowOnlyUnread"><?php echo __('(Un)hide read feeds') ?></option>
|
||||
</optgroup>
|
||||
<optgroup label="<?php echo __('Categories:') ?>">
|
||||
|
||||
<option value="qmcToggleReorder"><?php echo __('Toggle reordering mode') ?></option>
|
||||
<option value="qmcResetCats"><?php echo __('Reset order') ?></option>
|
||||
</optgroup>
|
||||
|
||||
<optgroup label="<?php echo __('Other actions:') ?>">
|
||||
|
||||
<option value="qmcAddLabel"><?php echo __('Create label...') ?></option>
|
||||
<option value="qmcAddFilter"><?php echo __('Create filter...') ?></option>
|
||||
<option value="qmcResetUI"><?php echo __('Reset UI layout') ?></option>
|
||||
<option value="qmcHKhelp"><?php echo __('Keyboard shortcuts help') ?></option>
|
||||
</optgroup>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="headlines-wrap-inner" dojoType="dijit.layout.BorderContainer" region="center">
|
||||
|
@ -216,13 +216,13 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer" dojoType="dijit.layout.ContentPane" region="bottom">
|
||||
<!-- <div id="footer" dojoType="dijit.layout.ContentPane" region="bottom">
|
||||
<a href="http://tt-rss.org/">Tiny Tiny RSS</a>
|
||||
<?php if (!defined('HIDE_VERSION')) { ?>
|
||||
v<?php echo VERSION ?>
|
||||
<?php } ?>
|
||||
© 2005–<?php echo date('Y') ?> <a href="http://fakecake.org/">Andrew Dolgov</a>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
</div>
|
||||
|
||||
|
|
24
viewfeed.js
24
viewfeed.js
|
@ -44,8 +44,6 @@ function headlines_callback2(transport, feed_cur_page) {
|
|||
|
||||
if (!transport_error_check(transport)) return;
|
||||
|
||||
clean_feed_selections();
|
||||
|
||||
var is_cat = false;
|
||||
var feed_id = false;
|
||||
|
||||
|
@ -85,11 +83,9 @@ function headlines_callback2(transport, feed_cur_page) {
|
|||
img.src = img.alt;
|
||||
}
|
||||
|
||||
var f = $("headlines-frame");
|
||||
try {
|
||||
if (feed_cur_page == 0) {
|
||||
//console.log("resetting headlines scrollTop");
|
||||
f.scrollTop = 0;
|
||||
$("headlines-frame").scrollTop = 0;
|
||||
}
|
||||
} catch (e) { };
|
||||
|
||||
|
@ -131,6 +127,7 @@ function headlines_callback2(transport, feed_cur_page) {
|
|||
$("headlinesInnerContainer").innerHTML = headlines_content.firstChild.nodeValue;
|
||||
$("headlines-toolbar").innerHTML = headlines_toolbar.firstChild.nodeValue;
|
||||
|
||||
dojo.parser.parse("headlines-toolbar");
|
||||
dijit.byId("main").resize();
|
||||
|
||||
var cache_prefix = "";
|
||||
|
@ -145,12 +142,12 @@ function headlines_callback2(transport, feed_cur_page) {
|
|||
|
||||
if (!disable_cache) {
|
||||
cache_inject(cache_prefix + feed_id,
|
||||
headlines.firstChild.nodeValue, headlines_unread);
|
||||
$("headlines-frame").innerHTML, headlines_unread);
|
||||
}
|
||||
|
||||
} else {
|
||||
console.warn("headlines_callback: returned no data");
|
||||
f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
|
||||
$('headlinesInnerContainer').innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
|
||||
|
||||
}
|
||||
} else {
|
||||
|
@ -201,7 +198,7 @@ function headlines_callback2(transport, feed_cur_page) {
|
|||
|
||||
} else {
|
||||
console.warn("headlines_callback: returned no XML object");
|
||||
f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>";
|
||||
$('headlinesInnerContainer').innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML object)') + "</div>";
|
||||
}
|
||||
|
||||
|
||||
|
@ -2237,4 +2234,15 @@ function correctHeadlinesOffset(id) {
|
|||
|
||||
}
|
||||
|
||||
function headlineActionsChange(elem) {
|
||||
try {
|
||||
var op = elem[elem.selectedIndex].value;
|
||||
|
||||
eval(op);
|
||||
|
||||
elem.selectedIndex = 0;
|
||||
|
||||
} catch (e) {
|
||||
exception_error("headlineActionsChange", e);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue