1
0
mirror of https://github.com/moparisthebest/wallabag synced 2024-11-27 11:22:17 -05:00
wallabag/web/assets/js/item.js

290 lines
8.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

wallabag.Item = (function() {
function getItem(item_id)
{
var item = document.getElementById("item-" + item_id);
if (! item) {
item = document.getElementById("current-item");
if (item.getAttribute("data-item-id") != item_id) item = false;
}
return item;
}
function changeBookmarkLabel(item_id)
{
var link = document.getElementById("bookmark-" + item_id);
if (link && link.getAttribute("data-reverse-label")) {
var content = link.innerHTML;
link.innerHTML = link.getAttribute("data-reverse-label");
link.setAttribute("data-reverse-label", content);
}
}
// function showItemBookmarked(item_id, item)
// {
// if (! wallabag.Nav.IsListing()) {
// var link = document.getElementById("bookmark-" + item_id);
// if (link) link.innerHTML = "★";
// }
// else {
// var link = document.getElementById("show-" + item_id);
// if (link) {
// var icon = document.createElement("span");
// icon.id = "bookmark-icon-" + item_id;
// icon.appendChild(document.createTextNode("★ "));
// link.parentNode.insertBefore(icon, link);
// }
// changeBookmarkLabel(item_id);
// }
// }
function hideItemBookmarked(item_id, item)
{
if (! wallabag.Nav.IsListing()) {
var link = document.getElementById("bookmark-" + item_id);
if (link) link.innerHTML = "☆";
}
else {
var icon = document.getElementById("bookmark-icon-" + item_id);
if (icon) icon.parentNode.removeChild(icon);
changeBookmarkLabel(item_id);
}
}
function changeStatusLabel(item_id)
{
var link = document.getElementById("status-" + item_id);
if (link) {
var content = link.innerHTML;
link.innerHTML = link.getAttribute("data-reverse-label");
link.setAttribute("data-reverse-label", content);
}
}
function showItemAsStarred(item_id)
{
var item = getItem(item_id);
if (item) {
changeBookmarkLabel(item_id);
// Change action
link = document.getElementById("bookmark-" + item_id);
if (link) link.setAttribute("data-action", "unstar_entry");
}
}
function showItemAsUnstarred(item_id)
{
var item = getItem(item_id);
if (item) {
changeBookmarkLabel(item_id);
// Change action
link = document.getElementById("bookmark-" + item_id);
if (link) link.setAttribute("data-action", "unstar_entry");
}
}
function showItemAsRead(item_id)
{
var item = getItem(item_id);
if (item) {
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "read");
changeStatusLabel(item_id);
// Change action
link = document.getElementById("status-" + item_id);
if (link) link.setAttribute("data-action", "mark_entry_unread");
}
}
}
function showItemAsUnread(item_id)
{
var item = getItem(item_id);
if (item) {
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "unread");
changeStatusLabel(item_id);
// Change action
link = document.getElementById("status-" + item_id);
if (link) link.setAttribute("data-action", "mark_entry_read");
}
}
}
function hideItem(item)
{
item.parentNode.removeChild(item);
var container = document.getElementById("counter");
if (container) {
counter = parseInt(container.textContent.trim(), 10) - 1;
container.textContent = counter;
document.title = "unread (" + counter + ") wallabag";
}
}
function markAsStarred(item_id)
{
var request = new XMLHttpRequest();
request.onload = function() {
if (wallabag.Nav.IsListing()) showItemAsStarred(item_id);
};
request.open("POST", "star/" + item_id, true);
request.send();
}
function markAsUnstarred(item_id)
{
var request = new XMLHttpRequest();
request.onload = function() {
if (wallabag.Nav.IsListing()) showItemAsUnstarred(item_id);
};
request.open("POST", "unstar/" + item_id, true);
request.send();
}
function markAsRead(item_id)
{
var request = new XMLHttpRequest();
request.onload = function() {
if (wallabag.Nav.IsListing()) showItemAsRead(item_id);
};
request.open("POST", "mark-read/" + item_id, true);
request.send();
}
function markAsUnread(item_id)
{
var request = new XMLHttpRequest();
request.onload = function() {
if (wallabag.Nav.IsListing()) showItemAsUnread(item_id);
};
request.open("POST", "mark-unread/" + item_id, true);
request.send();
}
// function bookmark(item, value)
// {
// var item_id = item.getAttribute("data-item-id");
// var request = new XMLHttpRequest();
// request.onload = function() {
// item.setAttribute("data-item-bookmark", value);
// if (value) {
// showItemBookmarked(item_id, item);
// }
// else {
// hideItemBookmarked(item_id, item);
// }
// };
// request.open("POST", "?action=bookmark&id=" + item_id + "&value=" + value, true);
// request.send();
// }
return {
// Get: getItem,
MarkAsRead: markAsRead,
MarkAsUnread: markAsUnread,
MarkAsStarred: markAsStarred,
MarkAsUnstarred: markAsUnstarred,
// SwitchBookmark: function(item) {
// var bookmarked = item.getAttribute("data-item-bookmark");
// if (bookmarked == "1") {
// bookmark(item, 0);
// }
// else {
// bookmark(item, 1);
// }
// },
// SwitchStatus: function(item) {
// var item_id = item.getAttribute("data-item-id");
// var status = item.getAttribute("data-item-status");
// if (status == "read") {
// markAsUnread(item_id);
// }
// else if (status == "unread") {
// markAsRead(item_id);
// }
// },
// ChangeStatus: function(item_id, status) {
// switch (status) {
// case "read":
// markAsRead(item_id);
// break;
// case "unread":
// markAsUnread(item_id);
// break;
// }
// },
// Show: function(item_id) {
// var link = document.getElementById("show-" + item_id);
// if (link) link.click();
// },
// OpenOriginal: function(item_id) {
// var link = document.getElementById("original-" + item_id);
// if (link) {
// if (getItem(item_id).getAttribute("data-item-status") == "unread") markAsRead(item_id);
// link.removeAttribute("data-action");
// link.click();
// }
// },
// MarkListingAsRead: function(redirect) {
// var articles = document.getElementsByTagName("article");
// var listing = [];
// for (var i = 0, ilen = articles.length; i < ilen; i++) {
// listing.push(articles[i].getAttribute("data-item-id"));
// }
// var request = new XMLHttpRequest();
// request.onload = function() {
// window.location.href = redirect;
// };
// request.open("POST", "?action=mark-items-as-read", true);
// request.send(JSON.stringify(listing));
// }
};
})();
wallabag.App.Run();