mirror of
				https://git.tt-rss.org/fox/tt-rss.git
				synced 2025-11-04 05:41:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			164 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var backend = "backend.php";
 | 
						|
 | 
						|
function toggleMarked(id, elem) {
 | 
						|
 | 
						|
	var toggled = false;
 | 
						|
 | 
						|
	if (elem.getAttribute("toggled") == "true") {
 | 
						|
		toggled = 1;
 | 
						|
	} else {
 | 
						|
		toggled = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	var query = "op=toggleMarked&id=" + id + "&mark=" + toggled;
 | 
						|
 | 
						|
	new Ajax.Request(backend, {
 | 
						|
		parameters: query,
 | 
						|
		onComplete: function (transport) {
 | 
						|
			//
 | 
						|
		} });
 | 
						|
}
 | 
						|
 | 
						|
function togglePublished(id, elem) {
 | 
						|
 | 
						|
	var toggled = false;
 | 
						|
 | 
						|
	if (elem.getAttribute("toggled") == "true") {
 | 
						|
		toggled = 1;
 | 
						|
	} else {
 | 
						|
		toggled = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	var query = "op=togglePublished&id=" + id + "&pub=" + toggled;
 | 
						|
 | 
						|
	new Ajax.Request(backend, {
 | 
						|
		parameters: query,
 | 
						|
		onComplete: function (transport) {
 | 
						|
			//
 | 
						|
		} });
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function toggleUnread(id, elem) {
 | 
						|
 | 
						|
	var toggled = false;
 | 
						|
 | 
						|
	if (elem.getAttribute("toggled") == "true") {
 | 
						|
		toggled = 1;
 | 
						|
	} else {
 | 
						|
		toggled = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	var query = "op=toggleUnread&id=" + id + "&unread=" + toggled;
 | 
						|
 | 
						|
	new Ajax.Request(backend, {
 | 
						|
		parameters: query,
 | 
						|
		onComplete: function (transport) {
 | 
						|
			//
 | 
						|
		} });
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function setPref(elem) {
 | 
						|
	var toggled = false;
 | 
						|
	var id = elem.id;
 | 
						|
 | 
						|
	if (elem.getAttribute("toggled") == "true") {
 | 
						|
		toggled = 1;
 | 
						|
	} else {
 | 
						|
		toggled = 0;
 | 
						|
	}
 | 
						|
 | 
						|
	var query = "op=setPref&id=" + id + "&to=" + toggled;
 | 
						|
 | 
						|
	new Ajax.Request(backend, {
 | 
						|
		parameters: query,
 | 
						|
		onComplete: function (transport) {
 | 
						|
			//
 | 
						|
		} });
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Go directly to another item in the same feed
 | 
						|
function goToSibling(article_id, feed_id, link, step) {
 | 
						|
    var links = linksInFeed(feed_id);
 | 
						|
    for (var i=0 ; i<links.length ; i++) {
 | 
						|
        var re = new RegExp(".*article\\.php\\?id="+article_id+"&.*");
 | 
						|
        if (!re.test(links[i].href)) continue;
 | 
						|
        // here, we've found the current article
 | 
						|
        var index = i + step;
 | 
						|
        if (index < 0) {
 | 
						|
            markAsRead(feed_id);
 | 
						|
            iui.showPage($("feed-"+feed_id), true);
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        if (index >= links.length) {
 | 
						|
            showRestOfFeed(feed_id);
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        console.log(links[index]);
 | 
						|
        var match = links[index].href.match(/.*article\.php\?(.*)/);
 | 
						|
        var qs = match[1];
 | 
						|
        var backwards = false;
 | 
						|
        if (step < 0) backwards = true;
 | 
						|
        link.setAttribute("selected", "progress");
 | 
						|
        function unselect() { link.removeAttribute("selected"); }
 | 
						|
        iui.showPageByHref("article.php?"+qs, null, null, null, unselect, backwards);
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
    return false;
 | 
						|
}
 | 
						|
function goPrev(article_id, feed_id, link) {
 | 
						|
    return goToSibling(article_id, feed_id, link, -1);
 | 
						|
}
 | 
						|
function goNext(article_id, feed_id, link) {
 | 
						|
    return goToSibling(article_id, feed_id, link, 1);
 | 
						|
}
 | 
						|
 | 
						|
// Get all the links in the feed. The all_links variable includes the "get more article" link
 | 
						|
function linksInFeed(feed_id, all_links) {
 | 
						|
    var feed_content = $("feed-"+feed_id);
 | 
						|
    var links_raw = feed_content.getElementsByTagName("a");
 | 
						|
    if (all_links) return links_raw;
 | 
						|
    var links = [];
 | 
						|
    // filter the array to remove the "get more articles" link
 | 
						|
    // and the "search" link (which is always first)
 | 
						|
    for (var i=1 ; i<links_raw.length ; i++) {
 | 
						|
        if (links_raw[i].href.match(/.*article\.php\?id=.*/)) {
 | 
						|
            links.push(links_raw[i]);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return links;
 | 
						|
}
 | 
						|
 | 
						|
// Adds the "read" class to all read links in the feed
 | 
						|
function markAsRead(feed_id) {
 | 
						|
    var links = linksInFeed(feed_id);
 | 
						|
    for (var j=0 ; j<links.length ; j++) {
 | 
						|
        var match = links[j].href.match(/.*article\.php\?id=(\d+)&.*/);
 | 
						|
        if ($("article-"+match[1])) {
 | 
						|
            links[j].className = "read";
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// Go the the articles list and expand the "get more articles" link
 | 
						|
function showRestOfFeed(feed_id) {
 | 
						|
    var links_raw = linksInFeed(feed_id, true);
 | 
						|
    var lastlink = links_raw[links_raw.length - 1];
 | 
						|
    if (lastlink.target == "_replace") {
 | 
						|
        // It's a "get more articles" link
 | 
						|
        iui.showPage($("feed-"+feed_id), true);
 | 
						|
        // Mark old items a "read"
 | 
						|
        markAsRead(feed_id);
 | 
						|
        // Simulate click on the "get more articles" link
 | 
						|
        lastlink.setAttribute("selected", "progress");
 | 
						|
        function unselect() { lastlink.removeAttribute("selected"); }
 | 
						|
        setTimeout(window.scrollTo, 0, 0, 1000);
 | 
						|
        iui.showPageByHref(lastlink.href, null, null, lastlink, unselect);
 | 
						|
    } else {
 | 
						|
        iui.showPage($("home"), true);
 | 
						|
    }
 | 
						|
}
 | 
						|
 |