Merge branch 'upstream' of github.com:mkresin/miniflux into mkresin-upstream

This commit is contained in:
Frédéric Guillot 2014-11-23 10:13:26 -05:00
commit 6314a509c4
37 changed files with 502 additions and 509 deletions

View File

@ -317,6 +317,33 @@ a.btn-red:hover,
background: #357ae8;
}
/* icons */
article[data-item-status="read"] .read-icon:before {
content: "✔";
}
article[data-item-bookmark="1"] .bookmark-icon:before {
content: "★";
}
/* not bookmarked icon only in article view */
article[data-item-bookmark="0"] .item-infos .bookmark-icon:before {
content: "☆";
}
/* counter brackets */
span#nav-counter:not(:empty):before, span#page-counter:not(:empty):before {
content: " (";
}
span[id^="items-count-"]:before {
content: "(";
}
span#nav-counter:not(:empty):after, span#page-counter:not(:empty):after, span[id^="items-count-"]:after {
content: ")";
}
/* header */
header {
margin-bottom: 50px;
@ -459,7 +486,7 @@ nav .active a {
color: #555;
}
.items a.read {
.items article[data-item-status="read"] h2 a {
color: #666;
}

41
assets/js/all.min.js vendored
View File

@ -1,22 +1,19 @@
var Miniflux={};Miniflux.App=function(){return{BlinkIcon:function(){var d=document.querySelectorAll(".loading-icon");[].forEach.call(d,function(b){b.classList.toggle("loading-icon-blink")})},Run:function(){Miniflux.Event.ListenKeyboardEvents();Miniflux.Event.ListenMouseEvents()}}}();
Miniflux.Feed=function(){function d(a){if(a=document.getElementById("loading-feed-"+a))a.appendChild(document.createTextNode("\u2600")),a.classList.add("loading-icon-blink");f||(f=setInterval(Miniflux.App.BlinkIcon,500))}function b(){for(var b=document.getElementsByTagName("a"),c=0,d=b.length;c<d;c++){var e=b[c].getAttribute("data-feed-id");e&&a.push(parseInt(e))}}var a=[],c=[],f;return{Update:function(a,b){d(a);var c=new XMLHttpRequest;c.onload=function(){var e=document.getElementById("loading-feed-"+
a);e&&(e.innerHTML="");if(e=document.getElementById("last-checked-feed-"+a))e.innerHTML=e.getAttribute("data-after-update");try{var h=JSON.parse(this.responseText);if(h.result){var n=h.items_count,c=document.getElementById("items-count-"+a);c&&(c.innerHTML="("+n.items_unread+"/"+n.items_total+")")}b&&b(h)}catch(d){}};c.open("POST","?action=refresh-feed&feed_id="+a,!0);c.send()},UpdateAll:function(){b();var d=setInterval(function(){for(;0<a.length&&5>c.length;){var b=a.shift();c.push(b);Miniflux.Feed.Update(b,
function(b){b=c.indexOf(b.feed_id);0<=b&&c.splice(b,1);0==a.length&&0==c.length&&(clearInterval(d),clearInterval(f),window.location.href="?action=unread")})}},100)}}}();
Miniflux.Item=function(){function d(e){var a=document.getElementById("item-"+e);a||(a=document.getElementById("current-item"),a.getAttribute("data-item-id")!=e&&(a=!1));return a}function b(e){if(e&&e.getAttribute("data-reverse-label")){var a=e.innerHTML;e.innerHTML=e.getAttribute("data-reverse-label");e.setAttribute("data-reverse-label",a)}}function a(e){e=document.getElementById("bookmark-"+e);b(e)}function c(e){e=document.getElementById("status-"+e);b(e)}function f(e){"mouse"!=Miniflux.Event.lastEventType&&
Miniflux.Nav.SelectNextItem();e.parentNode.removeChild(e);var a=document.getElementById("page-counter");if(a){e=e.getAttribute("data-item-page");var b=parseInt(a.textContent,10)-1,c=document.getElementsByTagName("article");if(0===b||0===c.length)window.location=location.href;a.textContent=b;switch(e){case "unread":document.title="Miniflux ("+b+")";document.getElementById("nav-counter").textContent="("+b+")";break;case "feed-items":document.title="("+b+") "+a.parentNode.firstChild.nodeValue;break;
default:document.title=a.parentNode.textContent}}}function g(e){var a=new XMLHttpRequest;a.onload=function(){if(Miniflux.Nav.IsListing()){var a=d(e);if(a)if(a.getAttribute("data-hide"))f(a);else{a.setAttribute("data-item-status","read");c(e);if(a=document.getElementById("show-"+e)){a.className="read";var b=document.createElement("span");b.id="read-icon-"+e;b.appendChild(document.createTextNode("\u2714 "));a.parentNode.insertBefore(b,a)}(a=document.getElementById("status-"+e))&&a.setAttribute("data-action",
"mark-unread")}}};a.open("POST","?action=mark-item-read&id="+e,!0);a.send()}function l(a){var b=new XMLHttpRequest;b.onload=function(){if(Miniflux.Nav.IsListing()){var b=d(a);if(b)if(b.getAttribute("data-hide"))f(b);else{b.setAttribute("data-item-status","unread");c(a);if(b=document.getElementById("show-"+a))b.className="";(b=document.getElementById("read-icon-"+a))&&b.parentNode.removeChild(b);(b=document.getElementById("status-"+a))&&b.setAttribute("data-action","mark-read")}}};b.open("POST","?action=mark-item-unread&id="+
a,!0);b.send()}function m(e,b){var c=e.getAttribute("data-item-id"),d=new XMLHttpRequest;d.onload=function(){try{if(JSON.parse(this.responseText).result)if(e.setAttribute("data-item-bookmark",b),b)if(Miniflux.Nav.IsListing()){if(f=document.getElementById("show-"+c)){var d=document.createElement("span");d.id="bookmark-icon-"+c;d.appendChild(document.createTextNode("\u2605 "));f.parentNode.insertBefore(d,f)}a(c)}else{var f=document.getElementById("bookmark-"+c);f&&(f.innerHTML="\u2605")}else if(Miniflux.Nav.IsListing()){var k=
document.getElementById("bookmark-icon-"+c);k&&k.parentNode.removeChild(k);a(c)}else{var p=document.getElementById("bookmark-"+c);p&&(p.innerHTML="\u2606")}}catch(g){}};d.open("POST","?action=bookmark&id="+c+"&value="+b,!0);d.send()}return{Get:d,MarkAsRead:g,MarkAsUnread:l,MarkAsRemoved:function(a){var b=new XMLHttpRequest;b.onload=function(){Miniflux.Nav.IsListing()&&f(d(a))};b.open("POST","?action=mark-item-removed&id="+a,!0);b.send()},SwitchBookmark:function(a){"1"==a.getAttribute("data-item-bookmark")?
m(a,0):m(a,1)},SwitchStatus:function(a){var b=a.getAttribute("data-item-id");a=a.getAttribute("data-item-status");"read"==a?l(b):"unread"==a&&g(b)},Show:function(a){(a=document.getElementById("show-"+a))&&a.click()},OpenOriginal:function(a){var b=document.getElementById("original-"+a);b&&("unread"==d(a).getAttribute("data-item-status")&&g(a),b.removeAttribute("data-action"),b.click())},DownloadContent:function(){var a=document.getElementById("download-item");if(a){var b=a.getAttribute("data-item-id"),
c=a.getAttribute("data-before-message"),d=document.createElement("span");d.appendChild(document.createTextNode("\u2600"));d.className="loading-icon";a.innerHTML="";a.className="downloading";a.appendChild(d);a.appendChild(document.createTextNode(" "+c));var f=setInterval(Miniflux.App.BlinkIcon,250),g=new XMLHttpRequest;g.onload=function(){var b=JSON.parse(g.responseText);clearInterval(f);if(b.result){var c=document.getElementById("item-content");c&&(c.innerHTML=b.content);a&&(b=a.getAttribute("data-after-message"),
a.innerHTML="",a.appendChild(document.createTextNode(" "+b)))}else a&&(b=a.getAttribute("data-failure-message"),a.innerHTML="",a.appendChild(document.createTextNode(" "+b)))};g.open("POST","?action=download-item&id="+b,!0);g.send()}},MarkListingAsRead:function(a){for(var b=document.getElementsByTagName("article"),c=[],d=0,f=b.length;d<f;d++)c.push(b[d].getAttribute("data-item-id"));b=new XMLHttpRequest;b.onload=function(){window.location.href=a};b.open("POST","?action=mark-items-as-read",!0);b.send(JSON.stringify(c))}}}();
Miniflux.Event=function(){var d=[];return{lastEventType:"",ListenMouseEvents:function(){document.onclick=function(b){var a=b.target.getAttribute("data-action");if(a)switch(Miniflux.Event.lastEventType="mouse",a){case "refresh-all":b.preventDefault();Miniflux.Feed.UpdateAll();break;case "refresh-feed":b.preventDefault();Miniflux.Feed.Update(b.target.getAttribute("data-feed-id"));break;case "mark-read":b.preventDefault();Miniflux.Item.MarkAsRead(b.target.getAttribute("data-item-id"));break;case "mark-unread":b.preventDefault();
Miniflux.Item.MarkAsUnread(b.target.getAttribute("data-item-id"));break;case "mark-removed":b.preventDefault();Miniflux.Item.MarkAsRemoved(b.target.getAttribute("data-item-id"));break;case "bookmark":b.preventDefault();Miniflux.Item.SwitchBookmark(Miniflux.Item.Get(b.target.getAttribute("data-item-id")));break;case "download-item":b.preventDefault();Miniflux.Item.DownloadContent();break;case "original-link":b.preventDefault();Miniflux.Item.OpenOriginal(b.target.getAttribute("data-item-id"));break;
case "mark-all-read":b.preventDefault();Miniflux.Item.MarkListingAsRead("?action=unread");break;case "mark-feed-read":b.preventDefault(),Miniflux.Item.MarkListingAsRead("?action=feed-items&feed_id="+b.target.getAttribute("data-feed-id"))}}},ListenKeyboardEvents:function(){document.onkeypress=function(b){if(!(b.ctrlKey||b.shiftKey||b.altKey||b.metaKey)){var a=b.target||b.srcElement;if("INPUT"!=a.tagName&&"TEXTAREA"!=a.tagName)if(Miniflux.Event.lastEventType="keyboard",d.push(b.keyCode||b.which),103==
d[0])switch(d[1]){case void 0:break;case 117:window.location.href="?action=unread";d=[];break;case 98:window.location.href="?action=bookmarks";d=[];break;case 104:window.location.href="?action=history";d=[];break;case 115:window.location.href="?action=feeds";d=[];break;case 112:window.location.href="?action=config";d=[];break;default:d=[]}else switch(d=[],b.keyCode||b.which){case 100:Miniflux.Item.DownloadContent(Miniflux.Nav.GetCurrentItemId());break;case 112:case 107:Miniflux.Nav.SelectPreviousItem();
break;case 110:case 106:Miniflux.Nav.SelectNextItem();break;case 118:Miniflux.Item.OpenOriginal(Miniflux.Nav.GetCurrentItemId());break;case 111:Miniflux.Item.Show(Miniflux.Nav.GetCurrentItemId());break;case 109:Miniflux.Item.SwitchStatus(Miniflux.Nav.GetCurrentItem());break;case 102:Miniflux.Item.SwitchBookmark(Miniflux.Nav.GetCurrentItem());break;case 104:Miniflux.Nav.OpenPreviousPage();break;case 108:Miniflux.Nav.OpenNextPage();break;case 114:Miniflux.Feed.UpdateAll();break;case 63:Miniflux.Nav.ShowHelp()}}}}}}();
Miniflux.Nav=function(){function d(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function b(){return document.getElementById("listing")?!0:!1}return{GetCurrentItem:function(){return document.getElementById("current-item")},GetCurrentItemId:function(){var a=Miniflux.Nav.GetCurrentItem();return a?a.getAttribute("data-item-id"):null},OpenNextPage:function(){var a=document.getElementById("next-page");
a&&a.click()},OpenPreviousPage:function(){var a=document.getElementById("previous-page");a&&a.click()},SelectNextItem:function(){var a=document.getElementById("next-item");if(a)a.click();else if(b())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var c=0,f=a.length;c<f;c++){if("current-item"==a[c].id){a[c].id="item-"+a[c].getAttribute("data-item-id");c+1<f&&(a[c+1].id="current-item",d(a[c+1]));break}}else a[0].id="current-item",d(a[0])},SelectPreviousItem:function(){var a=
document.getElementById("previous-item");if(a)a.click();else if(b())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var c=a.length-1;0<=c;c--){if("current-item"==a[c].id){a[c].id="item-"+a[c].getAttribute("data-item-id");0<=c-1&&(a[c-1].id="current-item",d(a[c-1]));break}}else a[a.length-1].id="current-item",d(a[a.length-1])},ShowHelp:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},IsListing:b}}();
Miniflux.App.Run();
var Miniflux={};Miniflux.App=function(){return{BlinkIcon:function(){var e=document.querySelectorAll(".loading-icon");[].forEach.call(e,function(c){c.classList.toggle("loading-icon-blink")})},Run:function(){Miniflux.Event.ListenKeyboardEvents();Miniflux.Event.ListenMouseEvents()}}}();
Miniflux.Feed=function(){function e(d){if(d=document.getElementById("loading-feed-"+d))d.appendChild(document.createTextNode("\u2600")),d.classList.add("loading-icon-blink");f||(f=setInterval(Miniflux.App.BlinkIcon,500))}function c(){for(var d=document.getElementsByTagName("a"),g=0,b=d.length;g<b;g++){var c=d[g].getAttribute("data-feed-id");c&&a.push(parseInt(c))}}var a=[],b=[],f;return{Update:function(d,a){e(d);var b=new XMLHttpRequest;b.onload=function(){var b=document.getElementById("loading-feed-"+
d);b&&(b.innerHTML="");if(b=document.getElementById("last-checked-feed-"+d))b.innerHTML=b.getAttribute("data-after-update");try{var c=JSON.parse(this.responseText);if(c.result){var h=c.items_count,e=document.getElementById("items-count-"+d);e&&(e.innerHTML="("+h.items_unread+"/"+h.items_total+")")}a&&a(c)}catch(f){}};b.open("POST","?action=refresh-feed&feed_id="+d,!0);b.send()},UpdateAll:function(){c();var d=setInterval(function(){for(;0<a.length&&5>b.length;){var g=a.shift();b.push(g);Miniflux.Feed.Update(g,
function(g){g=b.indexOf(g.feed_id);0<=g&&b.splice(g,1);0==a.length&&0==b.length&&(clearInterval(d),clearInterval(f),window.location.href="?action=unread")})}},100)}}}();
Miniflux.Item=function(){function e(d){return item_id=d.getAttribute("data-item-id")}function c(d){if(d&&d.hasAttribute("data-reverse-label")){var a=d.innerHTML;d.innerHTML=d.getAttribute("data-reverse-label");d.setAttribute("data-reverse-label",a)}}function a(d){"mouse"!==Miniflux.Event.lastEventType&&Miniflux.Nav.SelectNextItem();d.parentNode.removeChild(d);var a=document.getElementById("page-counter");if(a){d=d.getAttribute("data-item-page");var b=parseInt(a.textContent,10)-1,c=document.getElementsByTagName("article");
if(0===b||0===c.length)window.location=location.href;a.textContent=b;switch(d){case "unread":document.title="Miniflux ("+b+")";document.getElementById("nav-counter").textContent=b;break;case "feed-items":document.title="("+b+") "+a.parentNode.firstChild.nodeValue;break;default:document.title=a.parentNode.firstChild.nodeValue+" ("+b+")"}}}function b(d){var b=e(d),h=new XMLHttpRequest;h.onload=function(){if(Miniflux.Nav.IsListing())if(d.getAttribute("data-hide"))a(d);else{d.setAttribute("data-item-status",
"read");var b=d.querySelector("a.mark");c(b);(b=d.querySelector("a.mark"))&&b.setAttribute("data-action","mark-unread")}};h.open("POST","?action=mark-item-read&id="+b,!0);h.send()}function f(d){var b=e(d),h=new XMLHttpRequest;h.onload=function(){if(Miniflux.Nav.IsListing())if(d.getAttribute("data-hide"))a(d);else{d.setAttribute("data-item-status","unread");var b=d.querySelector("a.mark");c(b);(b=d.querySelector("a.mark"))&&b.setAttribute("data-action","mark-read")}};h.open("POST","?action=mark-item-unread&id="+
b,!0);h.send()}return{MarkAsRead:b,MarkAsUnread:f,MarkAsRemoved:function(d){var b=e(d),c=new XMLHttpRequest;c.onload=function(){Miniflux.Nav.IsListing()&&a(d)};c.open("POST","?action=mark-item-removed&id="+b,!0);c.send()},SwitchBookmark:function(b){var g=e(b),h="1"===b.getAttribute("data-item-bookmark")?"0":"1",k=new XMLHttpRequest;k.onload=function(){if(Miniflux.Nav.IsListing()&&"bookmarks"===b.getAttribute("data-item-page"))a(b);else if(b.setAttribute("data-item-bookmark",h),Miniflux.Nav.IsListing()){var g=
b.querySelector("a.bookmark");c(g)}};k.open("POST","?action=bookmark&id="+g+"&value="+h,!0);k.send()},SwitchStatus:function(a){var c=a.getAttribute("data-item-status");"read"===c?f(a):"unread"===c&&b(a)},Show:function(b){(b=b.querySelector("a.show"))&&b.click()},OpenOriginal:function(a){var c=a.querySelector("a.original");c&&("unread"===a.getAttribute("data-item-status")&&b(a),c.removeAttribute("data-action"),c.click())},DownloadContent:function(b){var a=document.getElementById("download-item");if(a){b=
e(b);var c=a.getAttribute("data-before-message"),k=document.createElement("span");k.appendChild(document.createTextNode("\u2600"));k.className="loading-icon";a.innerHTML="";a.className="downloading";a.appendChild(k);a.appendChild(document.createTextNode(" "+c));var f=setInterval(Miniflux.App.BlinkIcon,250),l=new XMLHttpRequest;l.onload=function(){var b=JSON.parse(l.responseText);clearInterval(f);if(b.result){var c=document.getElementById("item-content");c&&(c.innerHTML=b.content);a&&(b=a.getAttribute("data-after-message"),
a.innerHTML="",a.appendChild(document.createTextNode(" "+b)))}else a&&(b=a.getAttribute("data-failure-message"),a.innerHTML="",a.appendChild(document.createTextNode(" "+b)))};l.open("POST","?action=download-item&id="+b,!0);l.send()}},MarkListingAsRead:function(b){for(var a=document.getElementsByTagName("article"),c=[],f=0,m=a.length;f<m;f++)c.push(e(a[f]));a=new XMLHttpRequest;a.onload=function(){window.location.href=b};a.open("POST","?action=mark-items-as-read",!0);a.send(JSON.stringify(c))}}}();
Miniflux.Event=function(){var e=[];return{lastEventType:"",ListenMouseEvents:function(){document.onclick=function(c){var a=c.target.getAttribute("data-action");if(a){Miniflux.Event.lastEventType="mouse";var b;a:{for(element=c.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){b=element;break a}b=null}switch(a){case "refresh-all":c.preventDefault();Miniflux.Feed.UpdateAll();break;case "refresh-feed":c.preventDefault();Miniflux.Feed.Update(c.target.getAttribute("data-feed-id"));
break;case "mark-read":c.preventDefault();Miniflux.Item.MarkAsRead(b);break;case "mark-unread":c.preventDefault();Miniflux.Item.MarkAsUnread(b);break;case "mark-removed":c.preventDefault();Miniflux.Item.MarkAsRemoved(b);break;case "bookmark":c.preventDefault();Miniflux.Item.SwitchBookmark(b);break;case "download-item":c.preventDefault();Miniflux.Item.DownloadContent(b);break;case "original-link":c.preventDefault();Miniflux.Item.OpenOriginal(b);break;case "mark-all-read":c.preventDefault();Miniflux.Item.MarkListingAsRead("?action=unread");
break;case "mark-feed-read":c.preventDefault(),Miniflux.Item.MarkListingAsRead("?action=feed-items&feed_id="+c.target.getAttribute("data-feed-id"))}}}},ListenKeyboardEvents:function(){document.onkeypress=function(c){if(!(c.ctrlKey||c.shiftKey||c.altKey||c.metaKey)){var a=c.target||c.srcElement;if("INPUT"!=a.tagName&&"TEXTAREA"!=a.tagName)if(Miniflux.Event.lastEventType="keyboard",e.push(c.keyCode||c.which),103===e[0])switch(e[1]){case void 0:break;case 117:window.location.href="?action=unread";e=
[];break;case 98:window.location.href="?action=bookmarks";e=[];break;case 104:window.location.href="?action=history";e=[];break;case 115:window.location.href="?action=feeds";e=[];break;case 112:window.location.href="?action=config";e=[];break;default:e=[]}else switch(e=[],a=document.getElementById("current-item"),c.keyCode||c.which){case 100:Miniflux.Item.DownloadContent(a);break;case 112:case 107:Miniflux.Nav.SelectPreviousItem();break;case 110:case 106:Miniflux.Nav.SelectNextItem();break;case 118:Miniflux.Item.OpenOriginal(a);
break;case 111:Miniflux.Item.Show(a);break;case 109:Miniflux.Item.SwitchStatus(a);break;case 102:Miniflux.Item.SwitchBookmark(a);break;case 104:Miniflux.Nav.OpenPreviousPage();break;case 108:Miniflux.Nav.OpenNextPage();break;case 114:Miniflux.Feed.UpdateAll();break;case 63:Miniflux.Nav.ShowHelp()}}}}}}();
Miniflux.Nav=function(){function e(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function c(){return document.getElementById("listing")?!0:!1}return{OpenNextPage:function(){var a=document.getElementById("next-page");a&&a.click()},OpenPreviousPage:function(){var a=document.getElementById("previous-page");a&&a.click()},SelectNextItem:function(){var a=document.getElementById("next-item");
if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,f=a.length;b<f;b++){if("current-item"===a[b].id){b+1<f&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b+1].id="current-item",e(a[b+1]));break}}else a[0].id="current-item",e(a[0])},SelectPreviousItem:function(){var a=document.getElementById("previous-item");if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=
a.length-1;0<=b;b--){if("current-item"===a[b].id){0<=b-1&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b-1].id="current-item",e(a[b-1]));break}}else a[a.length-1].id="current-item",e(a[a.length-1])},ShowHelp:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},IsListing:c}}();Miniflux.App.Run();

View File

@ -14,6 +14,19 @@ Miniflux.Event = (function() {
Miniflux.Event.lastEventType = "mouse";
var currentItem = function () {
element = e.target;
while (element && element.parentNode) {
element = element.parentNode;
if (element.tagName && element.tagName.toLowerCase() === 'article') {
return element;
}
}
return null;
}();
switch (action) {
case 'refresh-all':
e.preventDefault();
@ -25,27 +38,27 @@ Miniflux.Event = (function() {
break;
case 'mark-read':
e.preventDefault();
Miniflux.Item.MarkAsRead(e.target.getAttribute("data-item-id"));
Miniflux.Item.MarkAsRead(currentItem);
break;
case 'mark-unread':
e.preventDefault();
Miniflux.Item.MarkAsUnread(e.target.getAttribute("data-item-id"));
Miniflux.Item.MarkAsUnread(currentItem);
break;
case 'mark-removed':
e.preventDefault();
Miniflux.Item.MarkAsRemoved(e.target.getAttribute("data-item-id"));
Miniflux.Item.MarkAsRemoved(currentItem);
break;
case 'bookmark':
e.preventDefault();
Miniflux.Item.SwitchBookmark(Miniflux.Item.Get(e.target.getAttribute("data-item-id")));
Miniflux.Item.SwitchBookmark(currentItem);
break;
case 'download-item':
e.preventDefault();
Miniflux.Item.DownloadContent();
Miniflux.Item.DownloadContent(currentItem);
break;
case 'original-link':
e.preventDefault();
Miniflux.Item.OpenOriginal(e.target.getAttribute("data-item-id"));
Miniflux.Item.OpenOriginal(currentItem);
break;
case 'mark-all-read':
e.preventDefault();
@ -77,7 +90,7 @@ Miniflux.Event = (function() {
queue.push(e.keyCode || e.which);
if (queue[0] == 103) { // g
if (queue[0] === 103) { // g
switch (queue[1]) {
case undefined:
@ -111,9 +124,13 @@ Miniflux.Event = (function() {
queue = [];
var currentItem = function () {
return document.getElementById("current-item");
}();
switch (e.keyCode || e.which) {
case 100: // d
Miniflux.Item.DownloadContent(Miniflux.Nav.GetCurrentItemId());
Miniflux.Item.DownloadContent(currentItem);
break;
case 112: // p
case 107: // k
@ -124,16 +141,16 @@ Miniflux.Event = (function() {
Miniflux.Nav.SelectNextItem();
break;
case 118: // v
Miniflux.Item.OpenOriginal(Miniflux.Nav.GetCurrentItemId());
Miniflux.Item.OpenOriginal(currentItem);
break;
case 111: // o
Miniflux.Item.Show(Miniflux.Nav.GetCurrentItemId());
Miniflux.Item.Show(currentItem);
break;
case 109: // m
Miniflux.Item.SwitchStatus(Miniflux.Nav.GetCurrentItem());
Miniflux.Item.SwitchStatus(currentItem);
break;
case 102: // f
Miniflux.Item.SwitchBookmark(Miniflux.Nav.GetCurrentItem());
Miniflux.Item.SwitchBookmark(currentItem);
break;
case 104: // h
Miniflux.Nav.OpenPreviousPage();
@ -142,8 +159,8 @@ Miniflux.Event = (function() {
Miniflux.Nav.OpenNextPage();
break;
case 114: // r
Miniflux.Feed.UpdateAll();
break;
Miniflux.Feed.UpdateAll();
break;
case 63: // ?
Miniflux.Nav.ShowHelp();
break;

View File

@ -1,138 +1,65 @@
Miniflux.Item = (function() {
function getItem(item_id)
function getItemID(item)
{
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;
item_id = item.getAttribute("data-item-id");
return item_id;
}
function changeLabel(link)
{
if (link && link.getAttribute("data-reverse-label")) {
if (link && link.hasAttribute("data-reverse-label")) {
var content = link.innerHTML;
link.innerHTML = link.getAttribute("data-reverse-label");
link.setAttribute("data-reverse-label", content);
}
}
function changeBookmarkLabel(item_id)
function changeBookmarkLabel(item)
{
var link = document.getElementById("bookmark-" + item_id);
var link = item.querySelector("a.bookmark");
changeLabel(link);
}
function showItemBookmarked(item_id)
function changeStatusLabel(item)
{
if (! Miniflux.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 showItemNotBookmarked(item_id)
{
if (! Miniflux.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);
var link = item.querySelector("a.mark");
changeLabel(link);
}
function showItemAsRead(item_id)
function showItemAsRead(item)
{
var item = getItem(item_id);
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "read");
changeStatusLabel(item);
if (item) {
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "read");
changeStatusLabel(item_id);
// Show icon
var link = document.getElementById("show-" + item_id);
if (link) {
link.className = "read";
var icon = document.createElement("span");
icon.id = "read-icon-" + item_id;
icon.appendChild(document.createTextNode("✔ "));
link.parentNode.insertBefore(icon, link);
}
// Change action
link = document.getElementById("status-" + item_id);
if (link) link.setAttribute("data-action", "mark-unread");
}
// Change action
var link = item.querySelector("a.mark");
if (link) link.setAttribute("data-action", "mark-unread");
}
}
function showItemAsUnread(item_id)
function showItemAsUnread(item)
{
var item = getItem(item_id);
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "unread");
changeStatusLabel(item);
if (item) {
if (item.getAttribute("data-hide")) {
hideItem(item);
}
else {
item.setAttribute("data-item-status", "unread");
changeStatusLabel(item_id);
// Remove icon
var link = document.getElementById("show-" + item_id);
if (link) link.className = "";
var icon = document.getElementById("read-icon-" + item_id);
if (icon) icon.parentNode.removeChild(icon);
// Change action
link = document.getElementById("status-" + item_id);
if (link) link.setAttribute("data-action", "mark-read");
}
// Change action
var link = item.querySelector("a.mark");
if (link) link.setAttribute("data-action", "mark-read");
}
}
function hideItem(item)
{
if (Miniflux.Event.lastEventType != "mouse") {
if (Miniflux.Event.lastEventType !== "mouse") {
Miniflux.Nav.SelectNextItem();
}
@ -153,125 +80,106 @@ Miniflux.Item = (function() {
switch (source) {
case "unread":
document.title = "Miniflux (" + counter + ")";
document.getElementById("nav-counter").textContent = "(" + counter + ")";
document.getElementById("nav-counter").textContent = counter;
break;
case "feed-items":
document.title = "(" + counter + ") " + pageCounter.parentNode.firstChild.nodeValue;
break;
default:
document.title = pageCounter.parentNode.textContent;
document.title = pageCounter.parentNode.firstChild.nodeValue + " (" + counter + ")";
}
}
}
function markAsRead(item_id)
function markAsRead(item)
{
var item_id = getItemID(item);
var request = new XMLHttpRequest();
request.onload = function() {
if (Miniflux.Nav.IsListing()) showItemAsRead(item_id);
if (Miniflux.Nav.IsListing()) showItemAsRead(item);
};
request.open("POST", "?action=mark-item-read&id=" + item_id, true);
request.send();
}
function markAsUnread(item_id)
function markAsUnread(item)
{
var item_id = getItemID(item);
var request = new XMLHttpRequest();
request.onload = function() {
if (Miniflux.Nav.IsListing()) showItemAsUnread(item_id);
if (Miniflux.Nav.IsListing()) showItemAsUnread(item);
};
request.open("POST", "?action=mark-item-unread&id=" + item_id, true);
request.send();
}
function markAsRemoved(item_id)
function markAsRemoved(item)
{
var item_id = getItemID(item);
var request = new XMLHttpRequest();
request.onload = function() {
if (Miniflux.Nav.IsListing()) hideItem(getItem(item_id));
if (Miniflux.Nav.IsListing()) hideItem(item);
};
request.open("POST", "?action=mark-item-removed&id=" + item_id, true);
request.send();
}
function bookmark(item, value)
{
var item_id = item.getAttribute("data-item-id");
var request = new XMLHttpRequest();
request.onload = function() {
try {
var response = JSON.parse(this.responseText);
if (response.result) {
item.setAttribute("data-item-bookmark", value);
if (value) {
showItemBookmarked(item_id);
}
else {
showItemNotBookmarked(item_id);
}
}
}
catch (e) {}
};
request.open("POST", "?action=bookmark&id=" + item_id + "&value=" + value, true);
request.send();
}
return {
Get: getItem,
MarkAsRead: markAsRead,
MarkAsUnread: markAsUnread,
MarkAsRemoved: markAsRemoved,
SwitchBookmark: function(item) {
var item_id = getItemID(item);
var value = item.getAttribute("data-item-bookmark") === "1" ? "0" : "1";
var request = new XMLHttpRequest();
request.onload = function() {
if (Miniflux.Nav.IsListing() && item.getAttribute("data-item-page") === "bookmarks") {
hideItem(item);
}
else {
item.setAttribute("data-item-bookmark", value);
var bookmarked = item.getAttribute("data-item-bookmark");
if (Miniflux.Nav.IsListing()) {
changeBookmarkLabel(item);
}
}
};
if (bookmarked == "1") {
bookmark(item, 0);
}
else {
bookmark(item, 1);
}
request.open("POST", "?action=bookmark&id=" + item_id + "&value=" + value, true);
request.send();
},
SwitchStatus: function(item) {
var item_id = item.getAttribute("data-item-id");
var status = item.getAttribute("data-item-status");
if (status == "read") {
markAsUnread(item_id);
if (status === "read") {
markAsUnread(item);
}
else if (status == "unread") {
markAsRead(item_id);
else if (status === "unread") {
markAsRead(item);
}
},
Show: function(item_id) {
var link = document.getElementById("show-" + item_id);
Show: function(item) {
var link = item.querySelector("a.show");
if (link) link.click();
},
OpenOriginal: function(item_id) {
var link = document.getElementById("original-" + item_id);
OpenOriginal: function(item) {
var link = item.querySelector("a.original");
if (link) {
if (getItem(item_id).getAttribute("data-item-status") == "unread") markAsRead(item_id);
if (item.getAttribute("data-item-status") === "unread") markAsRead(item);
link.removeAttribute("data-action");
link.click();
}
},
DownloadContent: function() {
DownloadContent: function(item) {
var container = document.getElementById("download-item");
if (! container) return;
var item_id = container.getAttribute("data-item-id");
var item_id = getItemID(item);
var message = container.getAttribute("data-before-message");
var span = document.createElement("span");
@ -321,7 +229,7 @@ Miniflux.Item = (function() {
var listing = [];
for (var i = 0, ilen = articles.length; i < ilen; i++) {
listing.push(articles[i].getAttribute("data-item-id"));
listing.push(getItemID(articles[i]));
}
var request = new XMLHttpRequest();

View File

@ -23,11 +23,11 @@ Miniflux.Nav = (function() {
for (var i = 0, ilen = items.length; i < ilen; i++) {
if (items[i].id == "current-item") {
items[i].id = "item-" + items[i].getAttribute("data-item-id");
if (items[i].id === "current-item") {
if (i + 1 < ilen) {
items[i].id = "item-" + items[i].getAttribute("data-item-id");
items[i + 1].id = "current-item";
scrollPageTo(items[i + 1]);
}
@ -51,11 +51,10 @@ Miniflux.Nav = (function() {
for (var i = items.length - 1; i >= 0; i--) {
if (items[i].id == "current-item") {
items[i].id = "item-" + items[i].getAttribute("data-item-id");
if (items[i].id === "current-item") {
if (i - 1 >= 0) {
items[i].id = "item-" + items[i].getAttribute("data-item-id");
items[i - 1].id = "current-item";
scrollPageTo(items[i - 1]);
}
@ -73,14 +72,6 @@ Miniflux.Nav = (function() {
}
return {
GetCurrentItem: function() {
return document.getElementById("current-item");
},
GetCurrentItemId: function() {
var item = Miniflux.Nav.GetCurrentItem();
if (item) return item.getAttribute("data-item-id");
return null;
},
OpenNextPage: function() {
var link = document.getElementById("next-page");
if (link) link.click();

View File

@ -3,9 +3,6 @@
return array(
// 'attachment' => '',
// 'When there is nothing to read, redirect me to this page' => '',
// 'Subscription page' => '',
// 'History page' => '',
// 'Bookmark page' => '',
// 'There is nothing new to read, enjoy your favorites articles!' => '',
// 'There is nothing new to read, enjoy your previous readings!' => '',
// 'Immediately' => '',
@ -17,7 +14,6 @@ return array(
'or' => 'nebo',
// 'edit' => '',
'cancel' => 'zrušit',
// 'Edit' => '',
// 'Feed URL' => '',
// 'Website URL' => '',
// 'Title' => '',
@ -40,11 +36,6 @@ return array(
// 'Bookmarklet:' => '',
// 'Subscribe with Miniflux' => '',
// 'Drag and drop this link to your bookmarks' => '',
// 'The content grabber is disabled successfully.' => '',
// 'The content grabber is enabled successfully.' => '',
// 'Unable to activate the content grabber for this subscription.' => '',
// 'enable full content' => '',
// 'disable full content' => '',
// 'Download full content' => '',
// 'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => '',
// 'No message' => '',
@ -53,20 +44,11 @@ return array(
'API username:' => 'Uživatelské jméno:',
'API token:' => 'Heslo:',
// 'Generate new tokens' => '',
// 'Bookmarks RSS Feed:' => '',
// 'Bookmark RSS Feed' => '',
// 'updated just now' => '',
'checked at' => 'zkontrolováno',
// 'never updated after creation' => '',
// 'Unable to enable this subscription.' => '',
'This subscription has been enabled successfully.' => 'Odběr byl úspěšně povolen.',
// 'Unable to disable this subscription.' => '',
'This subscription has been disabled successfully.' => 'Odběr byl úspěšně zakázán.',
'Do you really want to disable this subscription: "%s"?' => 'Opravdu chcete zakázet odběr "%s"?',
'enable' => 'povolit',
'disable' => 'zakázat',
'Disable' => 'Zakázat',
// 'Subscription disabled' => '',
'Listing' => 'Seznam',
'content downloaded' => 'obsah stažen',
'in progress...' => 'probíhá&hellip;',
// 'unable to fetch content' => '',
@ -74,8 +56,6 @@ return array(
'download content' => 'stáhnout obsah',
'Help' => 'Nápověda',
'Theme' => 'Vzhled',
'No item' => 'Žádný článěk',
'items' => 'články',
'There is %d empty feeds, there is maybe an error: %s...' => 'K dispozici je %d prázdné kanály, je možná chyba: %s...',
'Items per page' => 'Článků na stránku',
'Previous page' => 'Předchozí stránka',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Po %d dni',
'After %d days' => 'Po %d dnech',
'unread' => 'nepřečtené',
'Unread' => 'Nepřečtené',
'bookmark' => 'přidat do záložek',
'remove bookmark' => 'odstranit záložku',
'bookmarks' => 'záložky',
@ -103,7 +84,6 @@ return array(
'Confirmation' => 'Potvrzení',
'Language' => 'Jazyk',
'Save' => 'Uložit',
// 'More information' => '',
'Database' => 'Databáze',
'Database size:' => 'Velikost databáze:',
'Optimize the database' => 'Optimalizovat databázi',
@ -119,7 +99,6 @@ return array(
'About' => 'O aplikaci',
'Miniflux version:' => 'Verze Miniflux:',
'Nothing to read' => 'Nic ke čtení',
'unread items' => 'nepřečtené články',
'mark all as read' => 'označit vše jako přečtené',
'original link' => 'původní odkaz',
'mark as read' => 'označit jako přečtené',
@ -128,7 +107,6 @@ return array(
'History' => 'Historie',
'flush all items' => 'zahodit všechny články',
'Item not found' => 'Článek nenalezen',
'Unread items' => 'Nepřečtené články',
'Next' => 'Další',
'Previous' => 'Předchozí',
'Sign in' => 'Přihlásit',
@ -144,12 +122,10 @@ return array(
'remove' => 'odstranit',
'Remove' => 'Odstranit',
'refresh' => 'aktualizovat',
'feed link' => 'odkaz zdroje',
'New subscription' => 'Nový odběr',
'Website or Feed URL' => 'URL stránky nebo zdroje',
'Add' => 'Přidat',
'http://website/' => 'http://webova-stranka/',
'Yes' => 'Ano',
'Official website:' => 'Oficiální stránka:',
'Bad username or password' => 'Špatné přihlašovací jméno nebo heslo',
'Unable to update your preferences.' => 'Nelze aktualizovat nastavení.',
@ -211,8 +187,6 @@ return array(
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
@ -230,9 +204,15 @@ return array(
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'API' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
// 'Console' => '',
// 'Miniflux API' => '',
// 'menu' => '',
// 'Default' => '',
// 'Value required' => '',
// 'Must be an integer' => '',
);

View File

@ -3,9 +3,6 @@
return array(
'attachment' => 'anhang',
'When there is nothing to read, redirect me to this page' => 'Wenn es nichts zu lesen gibt, leite mich auf diese Seite weiter',
'Subscription page' => 'Abonnements',
'History page' => 'Verlauf',
'Bookmark page' => 'Favoriten',
'There is nothing new to read, enjoy your favorites articles!' => 'Es gibt nichts zu lesen, genieße deine Favoriten!',
'There is nothing new to read, enjoy your previous readings!' => 'Es gibt nichts zu lesen, genieße bereits gelesenes!',
'Immediately' => 'Sofort',
@ -17,7 +14,6 @@ return array(
'or' => 'oder',
'edit' => 'bearbeiten',
'cancel' => 'abbrechen',
'Edit' => 'Bearbeiten',
'Feed URL' => 'Feed-URL',
'Website URL' => 'Website-URL',
'Title' => 'Titel',
@ -40,11 +36,6 @@ return array(
'Bookmarklet:' => 'Bookmarklet:',
'Subscribe with Miniflux' => 'Mit Miniflux abonnieren',
'Drag and drop this link to your bookmarks' => 'Ziehe diesen Link in deine Lesezeichen',
'The content grabber is disabled successfully.' => 'Der Inhalt-Grabber wurde erfolgreich deaktiviert.',
'The content grabber is enabled successfully.' => 'Der Inhalt-Grabber wurde erfolgreich aktiviert.',
'Unable to activate the content grabber for this subscription.' => 'Fehler bei der Aktivierung des Inhalt-Grabbers für dieses Abonnement.',
'enable full content' => 'vollständigen Inhalt aktivieren',
'disable full content' => 'vollständigen Inhalt deaktivieren',
'Download full content' => 'Vollständigen Inhalt herunterladen',
'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => 'Den vollständigen Inhalt herunterzuladen beansprucht mehr Zeit, da Miniflux den Inhalt von der Original-Website bekommt. Du solltest diese Funktion nur für Feeds nutzen, die lediglich einen Auszug anzeigen. Diese Funktion funktioniert nicht mit jeder Website.',
'No message' => 'Keine Nachricht',
@ -53,20 +44,11 @@ return array(
'API username:' => 'API-Benutzername:',
'API token:' => 'API-Token:',
'Generate new tokens' => 'Neue Tokens generieren',
'Bookmarks RSS Feed:' => 'RSS-Feed der Lesezeichen:',
'Bookmark RSS Feed' => 'RSS-Feed der Lesezeichen',
'updated just now' => 'eben aktualisiert',
'checked at' => 'überprüft am',
'never updated after creation' => 'niemals aktualisiert nach der erstellung',
'Unable to enable this subscription.' => 'Aktivieren des Abonnements fehlgeschlagen',
'This subscription has been enabled successfully.' => 'Dieses Abonnement wurde erfolgreich aktiviert.',
'Unable to disable this subscription.' => 'Deaktivieren des Abonnements fehlgeschlagen.',
'This subscription has been disabled successfully.' => 'Dieses Abonnement wurde erfolgreich deaktiviert.',
'Do you really want to disable this subscription: "%s"?' => 'Möchtest du wirklich dieses Abonnement deaktivieren: "%s"?',
'enable' => 'aktivieren',
'disable' => 'deaktivieren',
'Disable' => 'Deaktivieren',
'Subscription disabled' => 'Abonnement deaktiviert',
'Listing' => 'Liste',
'content downloaded' => 'Inhalt heruntergeladen',
'in progress...' => 'In Bearbeitung...',
'unable to fetch content' => 'Lesen des Inhalts fehlgeschlagen',
@ -74,8 +56,6 @@ return array(
'download content' => 'inhalt herunterladen',
'Help' => 'Hilfe',
'Theme' => 'Theme',
'No item' => 'Kein Eintrag',
'items' => 'Einträge',
'There is %d empty feeds, there is maybe an error: %s...' => 'Es gibt %d leere Feeds, vielleicht gibt es einen Fehler: %s...',
'Items per page' => 'Einträge pro Seite',
'Previous page' => 'vorherige Seite',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Nach %d Tag',
'After %d days' => 'Nach %d Tagen',
'unread' => 'ungelesen',
'Unread' => 'Ungelesen',
'bookmark' => 'lesezeichen',
'remove bookmark' => 'lesezeichen entfernen',
'bookmarks' => 'lesezeichen',
@ -99,11 +80,10 @@ return array(
'Preferences' => 'Einstellungen',
'logout' => 'abmelden',
'Username' => 'Benutzername',
'Password' => 'Passwort:',
'Confirmation' => 'Bestätigung:',
'Password' => 'Passwort',
'Confirmation' => 'Bestätigung',
'Language' => 'Sprache',
'Save' => 'Speichern',
'More information' => 'Mehr Informationen',
'Database' => 'Datenbank',
'Database size:' => 'Größe der Datenbank:',
'Optimize the database' => 'Datenbank optimieren',
@ -119,7 +99,6 @@ return array(
'About' => 'Über',
'Miniflux version:' => 'Miniflux-Version:',
'Nothing to read' => 'Nichts zu lesen',
'unread items' => 'ungelesene einträge',
'mark all as read' => 'alle als gelesen markieren',
'original link' => 'original-link',
'mark as read' => 'als gelesen markieren',
@ -128,7 +107,6 @@ return array(
'History' => 'Verlauf',
'flush all items' => 'alle einträge entfernen',
'Item not found' => 'Eintrag nicht gefunden',
'Unread items' => 'Ungelesene Einträge',
'Next' => 'Nächster',
'Previous' => 'Vorheriger',
'Sign in' => 'Anmelden',
@ -144,12 +122,10 @@ return array(
'remove' => 'entfernen',
'Remove' => 'Entfernen',
'refresh' => 'aktualisieren',
'feed link' => 'Feed-URL',
'New subscription' => 'Neues Abonnement',
'Website or Feed URL' => 'Website oder Feed-URL',
'Add' => 'Hinzufügen',
'http://website/' => 'http://website/',
'Yes' => 'Ja',
'Official website:' => 'Offizielle Website:',
'Bad username or password' => 'Falscher Benutzername oder falsches Passwort',
'Unable to update your preferences.' => 'Aktualisieren der Einstellungen fehlgeschlagen.',
@ -206,16 +182,14 @@ return array(
'Display items on lists' => 'Einträge in Listen anzeigen',
'Summaries' => 'Zusammenfassungen',
'Full contents' => 'Komplette Inhalte',
// 'Force RTL mode (Right-to-left language)' => '',
// 'Activated' => '',
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
'Force RTL mode (Right-to-left language)' => 'Textrichtung rechts nach links erzwingen',
'Activated' => 'Aktiv',
'Remove this feed' => 'Dieses Abonnement entfernen',
'Miniflux' => 'Miniflux',
'mini<span>flux</span>' => 'mini<span>flux</span>',
'All' => 'Alle',
'Advanced' => 'Erweitert',
'Documentation' => 'Dokumentation',
// 'Installation instructions' => '',
// 'Upgrade to a new version' => '',
// 'Cronjob' => '',
@ -228,11 +202,17 @@ return array(
// 'Translations' => '',
// 'Run Miniflux with Docker' => '',
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
'settings' => 'einstellungen',
'help' => 'hilfe',
'API' => 'API',
'api' => 'api',
'about' => 'über',
'This action will update Miniflux with the last development version, are you sure?' => 'Miniflux wird auf die aktuelle Entwicklungsversion aktualisiert. Bist du sicher?',
'database' => 'datenbank',
'Console' => 'Konsole',
'Miniflux API' => 'Miniflux API',
'menu' => 'menü',
'Default' => 'Standard',
'Value required' => 'Wert ist erforderlich',
'Must be an integer' => 'Muss eine Ganzzahl sein',
);

View File

@ -3,9 +3,6 @@
return array(
// 'attachment' => '',
'When there is nothing to read, redirect me to this page' => 'Cuando no hay nada que leer, redirigirme a esta página',
'Subscription page' => 'Página de las suscripciones',
'History page' => 'Página del historial',
'Bookmark page' => 'Página de los marcadores',
'There is nothing new to read, enjoy your favorites articles!' => 'No hay nada nuevo que leer, ¡disfrute de sus artículos favoritos!',
'There is nothing new to read, enjoy your previous readings!' => 'No hay nada nuevo que leer, ¡disfrute de sus lecturas anteriores!',
'Immediately' => 'Inmediatamente',
@ -17,7 +14,6 @@ return array(
'or' => 'o',
'edit' => 'revisar',
'cancel' => 'cancelar',
'Edit' => 'Revisar',
'Feed URL' => 'Dirección del canal',
'Website URL' => 'Dirección de la página',
'Title' => 'Título',
@ -40,11 +36,6 @@ return array(
'Bookmarklet:' => 'Bookmarklet:',
'Subscribe with Miniflux' => 'Suscribir con Miniflux',
'Drag and drop this link to your bookmarks' => 'Arrastrar y soltar el enlace en los marcadores',
// 'The content grabber is disabled successfully.' => '',
'The content grabber is enabled successfully.' => 'La descarga de contenido se activó exitosamente.',
'Unable to activate the content grabber for this subscription.' => 'No se puede activar la descarga de contenido para esta suscripción.',
'enable full content' => 'descargar contenido completo',
'disable full content' => 'desactivar contenido completo',
'Download full content' => 'Descargar contenido completo',
'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => 'La descarga del contenido completo es más lenta porque Miniflux baja el contenido de la página original. Sólo debería usarse esto para suscripciones que no ofrecen sino un sumario. No anda esta funcionalidad con todas las páginas Web.',
'No message' => 'No hay mensaje',
@ -53,20 +44,11 @@ return array(
'API username:' => 'Nombre de usuario para la API:',
'API token:' => 'Clave para la API:',
'Generate new tokens' => 'Generar nuevas claves de autenticación',
'Bookmarks RSS Feed:' => 'Canal RSS de marcadores:',
'Bookmark RSS Feed' => 'Canal RSS de marcadores',
'updated just now' => 'recién actualizado',
'checked at' => 'comprobado a',
'never updated after creation' => 'sin actualizar desde que se creó',
'Unable to enable this subscription.' => 'No se puede activar la suscripción.',
'This subscription has been enabled successfully.' => 'La suscripción se activó exitosamente.',
'Unable to disable this subscription.' => 'No se puede desactivar la suscripción.',
'This subscription has been disabled successfully.' => 'La suscripción se desactivó exitosamente.',
'Do you really want to disable this subscription: "%s"?' => '¿De verdad quiere desactivar esta suscripción: "%s"?',
'enable' => 'activar',
'disable' => 'desactivar',
'Disable' => 'Desactivar',
'Subscription disabled' => 'Suscripción desactivada',
'Listing' => 'Listado',
'content downloaded' => 'contenido descargado',
'in progress...' => 'en curso...',
'unable to fetch content' => 'no se puede extraer el contenido',
@ -74,8 +56,6 @@ return array(
'download content' => 'descargar contenido',
'Help' => 'Ayuda',
'Theme' => 'Tema',
'No item' => 'No hay ítem',
'items' => 'ítems',
'There is %d empty feeds, there is maybe an error: %s...' => 'Hay %d suscripciones vacías, tal vez haya un problema: %s...',
'Items per page' => 'Ítems por página',
'Previous page' => 'Página anterior',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Después de %d día',
'After %d days' => 'Después de %d días',
'unread' => 'no leídos',
'Unread' => 'No leídos',
'bookmark' => 'añadir a marcadores',
'remove bookmark' => 'borrar marcador',
'bookmarks' => 'marcadores',
@ -103,7 +84,6 @@ return array(
'Confirmation' => 'Confirmación',
'Language' => 'Idioma',
'Save' => 'Guardar',
'More information' => 'Más informaciones',
'Database' => 'Base de datos',
'Database size:' => 'Tamaño de la base de datos:',
'Optimize the database' => 'Optimizar la base de datos',
@ -119,7 +99,6 @@ return array(
'About' => 'Acerca',
'Miniflux version:' => 'Versión de Miniflux:',
'Nothing to read' => 'No hay nada que leer',
'unread items' => 'ítems no leídos',
'mark all as read' => 'marcar todo como leído',
'original link' => 'enlace original',
'mark as read' => 'marcar como leído',
@ -128,7 +107,6 @@ return array(
'History' => 'Historial',
'flush all items' => 'borrar todos los ítems',
'Item not found' => 'No se encuentra el ítem',
'Unread items' => 'Ítems no leídos',
'Next' => 'Siguiente',
'Previous' => 'Anterior',
'Sign in' => 'Iniciar sesión',
@ -144,12 +122,10 @@ return array(
'remove' => 'borrar',
'Remove' => 'Borrar',
'refresh' => 'actualizar',
'feed link' => 'enlace del canal',
'New subscription' => 'Nueva suscripción',
'Website or Feed URL' => 'Dirección de la página o canal',
'Add' => 'Añadir',
'http://website/' => 'http://página-web/',
'Yes' => 'Sí',
'Official website:' => 'Página oficial:',
'Bad username or password' => 'Contraseña o usuario erróneo',
'Unable to update your preferences.' => 'No se pueden actualizar las preferencias.',
@ -211,8 +187,6 @@ return array(
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
@ -230,9 +204,15 @@ return array(
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'API' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
// 'Console' => '',
// 'Miniflux API' => '',
// 'menu' => '',
// 'Default' => '',
// 'Value required' => '',
// 'Must be an integer' => '',
);

View File

@ -3,9 +3,6 @@
return array(
'attachment' => 'pièce jointe',
'When there is nothing to read, redirect me to this page' => 'Quand il n\'y a rien à lire, redirigez moi vers cette page',
'Subscription page' => 'Page des abonnements',
'History page' => 'Historique de lecture',
'Bookmark page' => 'Page des favoris',
'There is nothing new to read, enjoy your favorites articles!' => 'Il n\'y a rien de nouveau à lire, relisez vos articles favoris !',
'There is nothing new to read, enjoy your previous readings!' => 'Il n\'y a rien de nouveau à lire, profitez de vos lectures précédentes !',
'Immediately' => 'Immédiatement',
@ -17,7 +14,6 @@ return array(
'or' => 'ou',
'edit' => 'modifier',
'cancel' => 'annuler',
'Edit' => 'Modifier',
'Feed URL' => 'URL du flux',
'Website URL' => 'URL du site web',
'Title' => 'Titre',
@ -40,11 +36,6 @@ return array(
'Bookmarklet:' => 'Bookmarklet :',
'Subscribe with Miniflux' => 'S\'abonner avec Miniflux',
'Drag and drop this link to your bookmarks' => 'Glisser-déposer ce lien dans vos favoris',
'The content grabber is disabled successfully.' => 'Le téléchargement de contenu a été désactivé avec succès.',
'The content grabber is enabled successfully.' => 'Le téléchargement de contenu est activé avec succès.',
'Unable to activate the content grabber for this subscription.' => 'Impossible d\'activer le téléchargement de contenu pour cet abonnement.',
'enable full content' => 'télécharger le contenu complet',
'disable full content' => 'désactiver le téléchargement du contenu',
'Download full content' => 'Télécharger le contenu complet',
'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => 'Le téléchargement complet du contenu est plus lent car Miniflux va chercher le contenu sur le site original. Vous devriez utiliser cela uniquement pour les abonnements qui affichent seulement un résumé. Cette fonctionnalité ne marche pas avec tous les sites web.',
'No message' => 'Aucun message',
@ -53,20 +44,11 @@ return array(
'API username:' => 'Identifiant pour l\'API : ',
'API token:' => 'Clé pour l\'API : ',
'Generate new tokens' => 'Générer des nouvelles clés d\'authentification',
'Bookmarks RSS Feed:' => 'Flux RSS des favoris :',
'Bookmark RSS Feed' => 'Flux RSS des favoris',
'updated just now' => 'mis à jour à l\'instant',
'checked at' => 'vérifié le',
'never updated after creation' => 'jamais mis à jour après la création',
'Unable to enable this subscription.' => 'Impossible d\'activer cet abonnement.',
'This subscription has been enabled successfully.' => 'L\'abonnement a été activé avec succès.',
'Unable to disable this subscription.' => 'Impossible de désactiver cet abonnement.',
'This subscription has been disabled successfully.' => 'L\'abonnement a été désactivé avec succès.',
'Do you really want to disable this subscription: "%s"?' => 'Voulez-vous vraiment désactiver cet abonnement : « %s » ?',
'enable' => 'activer',
'disable' => 'désactiver',
'Disable' => 'Désactiver',
'Subscription disabled' => 'Abonnement désactivé',
'Listing' => 'Liste',
'content downloaded' => 'contenu téléchargé',
'in progress...' => 'en cours...',
'unable to fetch content' => 'impossible de récupérer l\'article',
@ -74,8 +56,6 @@ return array(
'download content' => 'télécharger le contenu',
'Help' => 'Aide',
'Theme' => 'Thème',
'No item' => 'Aucun élément',
'items' => 'éléments',
'There is %d empty feeds, there is maybe an error: %s...' => 'Il y a %d abonnements vides, il y a peut-être un problème : %s...',
'Items per page' => 'Nombre d\'éléments par page',
'Previous page' => 'Page précédente',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Après %d jour',
'After %d days' => 'Après %d jours',
'unread' => 'non lus',
'Unread' => 'Non lus',
'bookmark' => 'ajouter aux favoris',
'remove bookmark' => 'supprimer des favoris',
'bookmarks' => 'favoris',
@ -103,7 +84,6 @@ return array(
'Confirmation' => 'Confirmation',
'Language' => 'Langue',
'Save' => 'Sauvegarder',
'More information' => 'Plus d\'informations',
'Database' => 'Base de données',
'Database size:' => 'Taille de la base de données :',
'Optimize the database' => 'Optimiser la base de données',
@ -119,7 +99,6 @@ return array(
'About' => 'A propos',
'Miniflux version:' => 'Version de Miniflux :',
'Nothing to read' => 'Rien à lire',
'unread items' => 'éléments non lus',
'mark all as read' => 'tout marquer comme lu',
'original link' => 'lien original',
'mark as read' => 'marquer comme lu',
@ -128,7 +107,6 @@ return array(
'History' => 'Historique',
'flush all items' => 'supprimer tous les éléments',
'Item not found' => 'Élément introuvable',
'Unread items' => 'Éléments non lus',
'Next' => 'Suivant',
'Previous' => 'Précédent',
'Sign in' => 'Connexion',
@ -144,12 +122,10 @@ return array(
'remove' => 'supprimer',
'Remove' => 'Supprimer',
'refresh' => 'actualiser',
'feed link' => 'lien du flux',
'New subscription' => 'Nouvel abonnement',
'Website or Feed URL' => 'URL du site ou du flux',
'Add' => 'Ajouter',
'http://website/' => 'http://site-web/',
'Yes' => 'Oui',
'Official website:' => 'Site officiel :',
'Bad username or password' => 'Mauvais utilisateur ou mot de passe',
'Unable to update your preferences.' => 'Impossible de mettre à jour vos préférences.',
@ -211,8 +187,6 @@ return array(
'Remove this feed' => 'Supprimer cet abonnement',
'Miniflux' => 'Miniflux',
'mini<span>flux</span>' => 'mini<span>flux</span>',
'Username:' => 'Utilisateur :',
'Password:' => 'Mot de passe :',
'All' => 'Tout',
'Advanced' => 'Avancé',
'Documentation' => 'Documentation',
@ -230,9 +204,15 @@ return array(
'FAQ' => 'Questions fréquentes',
'settings' => 'préférences',
'help' => 'aide',
'API' => 'API',
'api' => 'api',
'about' => 'a propos',
'Link:' => 'Lien :',
'This action will update Miniflux with the last development version, are you sure?' => 'Cette action va mettre à jour Miniflux avec la dernière version en cours de développement, êtes-vous certain ?',
'database' => 'base de données',
'Console' => 'Console',
'Miniflux API' => 'Miniflux API',
'menu' => 'menu',
'Default' => 'Défaut',
'Value required' => 'Value required',
'Must be an integer' => 'Must be an integer',
);

View File

@ -3,9 +3,6 @@
return array(
// 'attachment' => '',
// 'When there is nothing to read, redirect me to this page' => '',
// 'Subscription page' => '',
// 'History page' => '',
// 'Bookmark page' => '',
// 'There is nothing new to read, enjoy your favorites articles!' => '',
// 'There is nothing new to read, enjoy your previous readings!' => '',
// 'Immediately' => '',
@ -17,7 +14,6 @@ return array(
'or' => 'o',
// 'edit' => '',
'cancel' => 'annulla',
// 'Edit' => '',
// 'Feed URL' => '',
// 'Website URL' => '',
// 'Title' => '',
@ -40,11 +36,6 @@ return array(
// 'Bookmarklet:' => '',
// 'Subscribe with Miniflux' => '',
// 'Drag and drop this link to your bookmarks' => '',
// 'The content grabber is disabled successfully.' => '',
// 'The content grabber is enabled successfully.' => '',
// 'Unable to activate the content grabber for this subscription.' => '',
// 'enable full content' => '',
// 'disable full content' => '',
// 'Download full content' => '',
// 'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => '',
// 'No message' => '',
@ -53,20 +44,11 @@ return array(
// 'API username:' => '',
// 'API token:' => '',
// 'Generate new tokens' => '',
// 'Bookmarks RSS Feed:' => '',
// 'Bookmark RSS Feed' => '',
// 'updated just now' => '',
// 'checked at' => '',
// 'never updated after creation' => '',
// 'Unable to enable this subscription.' => '',
// 'This subscription has been enabled successfully.' => '',
// 'Unable to disable this subscription.' => '',
// 'This subscription has been disabled successfully.' => '',
// 'Do you really want to disable this subscription: "%s"?' => '',
// 'enable' => '',
// 'disable' => '',
// 'Disable' => '',
// 'Subscription disabled' => '',
// 'Listing' => '',
// 'content downloaded' => '',
// 'in progress...' => '',
// 'unable to fetch content' => '',
@ -74,8 +56,6 @@ return array(
// 'download content' => '',
'Help' => 'Aiuto',
'Theme' => 'Tema',
// 'No item' => '',
// 'items' => '',
// 'There is %d empty feeds, there is maybe an error: %s...' => '',
'Items per page' => 'Articoli per pagina',
'Previous page' => 'Pagina precedente',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Dopo %d giorno',
'After %d days' => 'Dopo %d giorni',
'unread' => 'non letti',
'Unread' => 'Non letti',
'bookmark' => 'bookmark',
'remove bookmark' => 'cancella bookmark',
'bookmarks' => 'bookmark',
@ -103,7 +84,6 @@ return array(
'Confirmation' => 'Conferma',
'Language' => 'Lingua',
'Save' => 'Salva',
'More information' => 'Altre informazioni',
'Database' => 'Database',
'Database size:' => 'Dimensione database:',
'Optimize the database' => 'Ottimizza il database',
@ -119,7 +99,6 @@ return array(
'About' => 'Informazioni sul software',
'Miniflux version:' => 'Versione Miniflux:',
'Nothing to read' => 'Niente da leggere',
'unread items' => 'articoli non letti',
'mark all as read' => 'segna tutti come già letti',
'original link' => 'link originale',
'mark as read' => 'segna come già letto',
@ -128,7 +107,6 @@ return array(
'History' => 'Cronologia',
'flush all items' => 'cancella tutti gli articoli',
'Item not found' => 'Articolo non trovato',
'Unread items' => 'Articoli non letti',
'Next' => 'Successivo',
'Previous' => 'Precedente',
'Sign in' => 'Accedi',
@ -144,12 +122,10 @@ return array(
'remove' => 'cancella',
'Remove' => 'Cancella',
'refresh' => 'aggiorna',
'feed link' => 'link feed',
'New subscription' => 'Nuova sottoscrizione',
'Website or Feed URL' => 'Sito web o URL del feed',
'Add' => 'Aggiungi',
'http://website/' => 'http://sitoweb/',
'Yes' => 'Sì',
'Official website:' => 'Sito ufficiale:',
'Bad username or password' => 'Utente o password errati',
'Unable to update your preferences.' => 'Impossibile aggiornare le preferenze.',
@ -211,8 +187,6 @@ return array(
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
@ -230,9 +204,15 @@ return array(
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'API' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
// 'Console' => '',
// 'Miniflux API' => '',
// 'menu' => '',
// 'Default' => '',
// 'Value required' => '',
// 'Must be an integer' => '',
);

View File

@ -3,9 +3,6 @@
return array(
// 'attachment' => '',
// 'When there is nothing to read, redirect me to this page' => '',
// 'Subscription page' => '',
// 'History page' => '',
// 'Bookmark page' => '',
// 'There is nothing new to read, enjoy your favorites articles!' => '',
// 'There is nothing new to read, enjoy your previous readings!' => '',
// 'Immediately' => '',
@ -17,7 +14,6 @@ return array(
'or' => 'ou',
// 'edit' => '',
'cancel' => 'Cancelar',
// 'Edit' => '',
// 'Feed URL' => '',
// 'Website URL' => '',
// 'Title' => '',
@ -40,11 +36,6 @@ return array(
// 'Bookmarklet:' => '',
// 'Subscribe with Miniflux' => '',
// 'Drag and drop this link to your bookmarks' => '',
// 'The content grabber is disabled successfully.' => '',
// 'The content grabber is enabled successfully.' => '',
// 'Unable to activate the content grabber for this subscription.' => '',
// 'enable full content' => '',
// 'disable full content' => '',
// 'Download full content' => '',
// 'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => '',
// 'No message' => '',
@ -53,20 +44,11 @@ return array(
// 'API username:' => '',
// 'API token:' => '',
// 'Generate new tokens' => '',
// 'Bookmarks RSS Feed:' => '',
// 'Bookmark RSS Feed' => '',
// 'updated just now' => '',
// 'checked at' => '',
// 'never updated after creation' => '',
// 'Unable to enable this subscription.' => '',
// 'This subscription has been enabled successfully.' => '',
// 'Unable to disable this subscription.' => '',
// 'This subscription has been disabled successfully.' => '',
// 'Do you really want to disable this subscription: "%s"?' => '',
// 'enable' => '',
// 'disable' => '',
// 'Disable' => '',
// 'Subscription disabled' => '',
// 'Listing' => '',
// 'content downloaded' => '',
// 'in progress...' => '',
// 'unable to fetch content' => '',
@ -74,8 +56,6 @@ return array(
// 'download content' => '',
'Help' => 'Ajuda',
// 'Theme' => '',
// 'No item' => '',
// 'items' => '',
// 'There is %d empty feeds, there is maybe an error: %s...' => '',
'Items per page' => 'Itens por página',
'Previous page' => 'Visualização de página',
@ -86,6 +66,7 @@ return array(
'After %d day' => 'Depois %d dias',
'After %d days' => 'Depois %d dias',
'unread' => 'não lido',
'Unread' => 'Não lido',
'bookmark' => 'lesezeichen',
'remove bookmark' => 'lesezeichen löschen',
'bookmarks' => 'bookmarks',
@ -103,7 +84,6 @@ return array(
'Confirmation' => 'Repetir Senha',
'Language' => 'Linguagem',
'Save' => 'Salvar',
'More information' => 'Mais informações',
'Database' => 'Banco de dados',
'Database size:' => 'Tamanho do Banco de dados :',
'Optimize the database' => 'Otimizar o banco de dados',
@ -119,7 +99,6 @@ return array(
'About' => 'Sobre',
'Miniflux version:' => 'Miniflux versão:',
'Nothing to read' => 'Nada para ler',
'unread items' => 'Item não lido',
'mark all as read' => 'Marcar tudo como lido',
'original link' => ' Link original',
'mark as read' => 'Marcar como lido',
@ -128,7 +107,6 @@ return array(
'History' => 'Histórico',
'flush all items' => 'Remover todos itens',
'Item not found' => 'Item não encontrado',
'Unread items' => 'Itens não lido',
'Next' => 'Proximo',
'Previous' => 'Anterior',
'Sign in' => 'Assinar em',
@ -144,12 +122,10 @@ return array(
'remove' => 'remover',
'Remove' => 'Remover',
'refresh' => 'atualizar',
'feed link' => 'feed link',
'New subscription' => 'Nova assinatura',
'Website or Feed URL' => 'Website ou URL Feed ',
'Add' => 'Adicionar',
'http://website/' => 'http://website/',
'Yes' => 'Sim',
'Official website:' => 'Site Oficial:',
'Bad username or password' => 'Nome ou senha ruins',
'Unable to update your preferences.' => 'Não é possível atualizar suas preferências.',
@ -211,8 +187,6 @@ return array(
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
@ -230,9 +204,15 @@ return array(
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'API' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
// 'Console' => '',
// 'Miniflux API' => '',
// 'menu' => '',
// 'Default' => '',
// 'Value required' => '',
// 'Must be an integer' => '',
);

View File

@ -3,9 +3,6 @@
return array(
// 'attachment' => '',
// 'When there is nothing to read, redirect me to this page' => '',
// 'Subscription page' => '',
// 'History page' => '',
// 'Bookmark page' => '',
// 'There is nothing new to read, enjoy your favorites articles!' => '',
// 'There is nothing new to read, enjoy your previous readings!' => '',
// 'Immediately' => '',
@ -17,7 +14,6 @@ return array(
'or' => '或者',
// 'edit' => '',
'cancel' => '取消',
// 'Edit' => '',
// 'Feed URL' => '',
// 'Website URL' => '',
// 'Title' => '',
@ -40,11 +36,6 @@ return array(
// 'Bookmarklet:' => '',
// 'Subscribe with Miniflux' => '',
// 'Drag and drop this link to your bookmarks' => '',
// 'The content grabber is disabled successfully.' => '',
// 'The content grabber is enabled successfully.' => '',
// 'Unable to activate the content grabber for this subscription.' => '',
// 'enable full content' => '',
// 'disable full content' => '',
// 'Download full content' => '',
// 'Downloading full content is slower because Miniflux grab the content from the original website. You should use that for subscriptions that display only a summary. This feature doesn\'t work with all websites.' => '',
// 'No message' => '',
@ -53,20 +44,11 @@ return array(
// 'API username:' => '',
// 'API token:' => '',
// 'Generate new tokens' => '',
// 'Bookmarks RSS Feed:' => '',
// 'Bookmark RSS Feed' => '',
// 'updated just now' => '',
// 'checked at' => '',
// 'never updated after creation' => '',
// 'Unable to enable this subscription.' => '',
// 'This subscription has been enabled successfully.' => '',
// 'Unable to disable this subscription.' => '',
// 'This subscription has been disabled successfully.' => '',
// 'Do you really want to disable this subscription: "%s"?' => '',
// 'enable' => '',
// 'disable' => '',
// 'Disable' => '',
// 'Subscription disabled' => '',
// 'Listing' => '',
// 'content downloaded' => '',
// 'in progress...' => '',
// 'unable to fetch content' => '',
@ -74,8 +56,6 @@ return array(
// 'download content' => '',
'Help' => '帮助',
// 'Theme' => '',
// 'No item' => '',
// 'items' => '',
// 'There is %d empty feeds, there is maybe an error: %s...' => '',
'Items per page' => '每页条目数',
'Previous page' => '上一页',
@ -86,6 +66,7 @@ return array(
'After %d day' => '%d 天之后',
'After %d days' => '%d 天之后',
'unread' => '未读',
'Unread' => '未读',
'bookmark' => '收藏',
'remove bookmark' => '取消收藏',
'bookmarks' => '收藏',
@ -103,7 +84,6 @@ return array(
'Confirmation' => '确认密码',
'Language' => '语言',
'Save' => '保存',
'More information' => '更多信息',
'Database' => '数据库',
'Database size:' => '数据库大小:',
'Optimize the database' => '数据库优化',
@ -119,7 +99,6 @@ return array(
'About' => '关于',
'Miniflux version:' => 'Miniflux 版本:',
'Nothing to read' => '没有未读条目',
'unread items' => '个未读条目',
'mark all as read' => '全部标记为已读',
'original link' => '来源链接',
'mark as read' => '标记为已读',
@ -128,7 +107,6 @@ return array(
'History' => '历史',
'flush all items' => '清空所有项目',
'Item not found' => '找不到项目',
'Unread items' => '未读条目',
'Next' => '下一个',
'Previous' => '前一个',
'Sign in' => '登陆',
@ -144,12 +122,10 @@ return array(
'remove' => '移除',
'Remove' => '移除',
'refresh' => '刷新',
'feed link' => '订阅源地址',
'New subscription' => '添加订阅源',
'Website or Feed URL' => '网站或订阅源URL',
'Add' => '添加',
'http://website/' => 'http://abc.com/rss',
'Yes' => '确认',
'Official website:' => '官方网站:',
'Bad username or password' => '用户名或密码错误',
'Unable to update your preferences.' => '无法更新你的设置',
@ -211,8 +187,6 @@ return array(
// 'Remove this feed' => '',
// 'Miniflux' => '',
// 'mini<span>flux</span>' => '',
// 'Username:' => '',
// 'Password:' => '',
// 'All' => '',
// 'Advanced' => '',
// 'Documentation' => '',
@ -230,9 +204,15 @@ return array(
// 'FAQ' => '',
// 'settings' => '',
// 'help' => '',
// 'API' => '',
// 'api' => '',
// 'about' => '',
// 'Link:' => '',
// 'This action will update Miniflux with the last development version, are you sure?' => '',
// 'database' => '',
// 'Console' => '',
// 'Miniflux API' => '',
// 'menu' => '',
// 'Default' => '',
// 'Value required' => '',
// 'Must be an integer' => '',
);

View File

@ -85,7 +85,7 @@ function get_languages()
function get_themes()
{
$themes = array(
'original' => t('Original')
'original' => t('Default')
);
if (file_exists(THEME_DIRECTORY)) {
@ -150,9 +150,9 @@ function get_paging_options()
function get_nothing_to_read_redirections()
{
return array(
'feeds' => t('Subscription page'),
'history' => t('History page'),
'bookmarks' => t('Bookmark page'),
'feeds' => t('Subscriptions'),
'history' => t('History'),
'bookmarks' => t('Bookmarks'),
);
}

View File

@ -11,9 +11,9 @@
<div class="alert alert-normal">
<h3 id="fever"><?= t('Fever API') ?></h3>
<ul>
<li><?= t('Link:') ?> <strong><?= Helper\get_current_base_url().'fever/' ?></strong></li>
<li><?= t('Username:') ?> <strong><?= Helper\escape($config['username']) ?></strong></li>
<li><?= t('Password:') ?> <strong><?= Helper\escape($config['fever_token']) ?></strong></li>
<li><?= t('API endpoint:') ?> <strong><?= Helper\get_current_base_url().'fever/' ?></strong></li>
<li><?= t('API username:') ?> <strong><?= Helper\escape($config['username']) ?></strong></li>
<li><?= t('API token:') ?> <strong><?= Helper\escape($config['fever_token']) ?></strong></li>
</ul>
</div>
<div class="alert alert-normal">

View File

@ -1,19 +1,16 @@
<li class="hide-mobile">
<?php if ($item['bookmark']): ?>
<a
id="bookmark-<?= $item['id'] ?>"
class="bookmark"
href="?action=bookmark&amp;value=0&amp;id=<?= $item['id'] ?>&amp;menu=<?= $menu ?>&amp;offset=<?= $offset ?>&amp;source=<?= $source ?>"
data-action="bookmark"
data-item-id="<?= $item['id'] ?>"
data-reverse-label="<?= t('bookmark') ?>"
><?= t('remove bookmark') ?></a>
<?php else: ?>
<a
id="bookmark-<?= $item['id'] ?>"
class="item-bookmark"
class="bookmark"
href="?action=bookmark&amp;value=1&amp;id=<?= $item['id'] ?>&amp;menu=<?= $menu ?>&amp;offset=<?= $offset ?>&amp;source=<?= $source ?>"
data-action="bookmark"
data-item-id="<?= $item['id'] ?>"
data-reverse-label="<?= t('remove bookmark') ?>"
><?= t('bookmark') ?></a>
<?php endif ?>

View File

@ -3,7 +3,7 @@
<?php else: ?>
<div class="page-header">
<h2><?= t('Bookmarks') ?> (<span id="page-counter"><?= $nb_items ?></span>)</h2>
<h2><?= t('Bookmarks') ?><span id="page-counter"><?= isset($nb_items) ? $nb_items : '' ?></span></h2>
</div>
<?php if ($nothing_to_read): ?>

View File

@ -5,7 +5,7 @@
<?php else: ?>
<div class="page-header">
<h2><?= Helper\escape($feed['title']) ?> (<span id="page-counter"><?= $nb_items ?></span>)</h2>
<h2><?= Helper\escape($feed['title']) ?><span id="page-counter"><?= isset($nb_items) ? $nb_items : '' ?></span></h2>
<ul>
<li>
<a href="?action=feed-items&amp;feed_id=<?= $feed['id'] ?>&amp;order=updated&amp;direction=<?= $direction == 'asc' ? 'desc' : 'asc' ?>"><?= tne('sort by date<span class="hide-mobile"> (%s)</span>', $direction == 'desc' ? t('older first') : t('most recent first')) ?></a>

View File

@ -28,7 +28,7 @@
<span id="loading-feed-<?= $feed['id'] ?>" class="loading-icon"></span>
<?php endif ?>
<span id="items-count-<?= $feed['id'] ?>">(<?= $feed['items_unread'] .'/' . $feed['items_total'] ?>)</span>
<span id="items-count-<?= $feed['id'] ?>"><?= $feed['items_unread'] .'/' . $feed['items_total'] ?></span>
<a href="?action=feed-items&amp;feed_id=<?= $feed['id'] ?>" title="<?= t('Show only this subscription') ?>"><?= Helper\escape($feed['title']) ?></a>
@ -41,7 +41,7 @@
<?= t('checked at').' '.dt('%e %B %Y %k:%M', $feed['last_checked']) ?>
</time>
<?php else: ?>
<span class="feed-last-checked" id="last-checked-feed-<?= $feed['id'] ?>" data-after-update="<?= t('now') ?>">
<span class="feed-last-checked" id="last-checked-feed-<?= $feed['id'] ?>" data-after-update="<?= t('updated just now') ?>">
<?= t('never updated after creation') ?>
</span>
<?php endif ?>

View File

@ -3,7 +3,7 @@
<?php else: ?>
<div class="page-header">
<h2><?= t('History') ?> (<span id="page-counter"><?= $nb_items ?></span>)</h2>
<h2><?= t('History') ?><span id="page-counter"><?= isset($nb_items) ? $nb_items : '' ?></span></h2>
<ul>
<li><a href="?action=confirm-flush-history"><?= t('flush all items') ?></a></li>
</ul>

View File

@ -8,13 +8,11 @@
<?= $hide ? 'data-hide="true"' : '' ?>
>
<h2 <?= Helper\isRTL($item) ? 'dir="rtl"' : '' ?>>
<?= $item['bookmark'] ? '<span id="bookmark-icon-'.$item['id'].'">★ </span>' : '' ?>
<?= $item['status'] === 'read' ? '<span id="read-icon-'.$item['id'].'">✔ </span>' : '' ?>
<span class="bookmark-icon"></span>
<span class="read-icon"></span>
<a
href="?action=show&amp;menu=<?= $menu ?>&amp;id=<?= $item['id'] ?>"
data-item-id="<?= $item['id'] ?>"
id="show-<?= $item['id'] ?>"
<?= $item['status'] === 'read' ? 'class="read"' : '' ?>
class="show"
><?= Helper\escape($item['title']) ?></a>
</h2>
<?php if($display_mode === 'full'): ?>
@ -38,11 +36,11 @@
<span title="<?= dt('%e %B %Y %k:%M', $item['updated']) ?>"><?= Helper\relative_time($item['updated']) ?></span>
</li>
<li class="hide-mobile">
<a href="<?= $item['url'] ?>" id="original-<?= $item['id'] ?>" rel="noreferrer" target="_blank" data-item-id="<?= $item['id'] ?>" data-action="original-link"><?= t('original link') ?></a>
<a href="<?= $item['url'] ?>" class="original" rel="noreferrer" target="_blank" data-action="original-link"><?= t('original link') ?></a>
</li>
<?php if ($item['enclosure']): ?>
<li>
<a href="<?= $item['enclosure'] ?>" rel="noreferrer" target="_blank"><?= t('media') ?></a>
<a href="<?= $item['enclosure'] ?>" rel="noreferrer" target="_blank"><?= t('attachment') ?></a>
</li>
<?php endif ?>
<?= \PicoFarad\Template\load('bookmark_links', array('item' => $item, 'menu' => $menu, 'offset' => $offset, 'source' => '')) ?>

View File

@ -23,7 +23,7 @@
<a class="logo" href="?"><?= tne('mini<span>flux</span>') ?></a>
<ul>
<li <?= isset($menu) && $menu === 'unread' ? 'class="active"' : '' ?>>
<a href="?action=unread"><?= t('unread') ?> <span id="nav-counter"><?= isset($nb_unread_items) ? '('.$nb_unread_items.')' : '' ?></span></a>
<a href="?action=unread"><?= t('unread') ?><span id="nav-counter"><?= isset($nb_unread_items) && $nb_unread_items > 0 ? $nb_unread_items : '' ?></span></a>
</li>
<li class="<?= isset($menu) && $menu === 'bookmarks' ? 'active hide-mobile' : 'hide-mobile' ?>">
<a href="?action=bookmarks"><?= t('bookmarks') ?></a>
@ -41,7 +41,7 @@
<a href="?action=logout"><?= t('logout') ?></a>
</li>
<li class="<?= isset($menu) && $menu === 'more' ? 'active hide-desktop' : 'hide-desktop' ?>">
<a href="?action=more"><?= t(' menu') ?></a>
<a href="?action=more"> <?= t('menu') ?></a>
</li>
</ul>
</nav>

View File

@ -31,29 +31,25 @@
<?php endif ?>
<h1 <?= Helper\isRTL($item + array('rtl' => $feed['rtl'])) ? 'dir="rtl"' : '' ?>>
<a href="<?= $item['url'] ?>" rel="noreferrer" target="_blank" id="original-<?= $item['id'] ?>"><?= Helper\escape($item['title']) ?></a>
<a href="<?= $item['url'] ?>" rel="noreferrer" target="_blank" class="original"><?= Helper\escape($item['title']) ?></a>
</h1>
<ul class="item-infos">
<li>
<?php if ($item['bookmark']): ?>
<a
id="bookmark-<?=$item['id'] ?>"
class="bookmark-icon"
href="?action=bookmark&amp;value=0&amp;id=<?= $item['id'] ?>&amp;source=show&amp;menu=<?= $menu ?>"
title="<?= t('remove bookmark') ?>"
class="bookmark-icon"
data-action="bookmark"
data-item-id="<?= $item['id'] ?>"
></a>
></a>
<?php else: ?>
<a
id="bookmark-<?=$item['id'] ?>"
class="bookmark-icon"
href="?action=bookmark&amp;value=1&amp;id=<?= $item['id'] ?>&amp;source=show&amp;menu=<?= $menu ?>"
title="<?= t('bookmark') ?>"
class="bookmark-icon"
data-action="bookmark"
data-item-id="<?= $item['id'] ?>"
></a>
></a>
<?php endif ?>
</li>
<li>
@ -74,7 +70,6 @@
</li>
<li class="hide-mobile">
<span id="download-item"
data-item-id="<?= $item['id'] ?>"
data-failure-message="<?= t('unable to fetch content') ?>"
data-before-message="<?= t('in progress...') ?>"
data-after-message="<?= t('content downloaded') ?>">

View File

@ -2,26 +2,22 @@
<a
href="?action=mark-item-removed&amp;id=<?= $item['id'] ?>&amp;offset=<?= $offset ?>&amp;redirect=<?= $redirect ?>&amp;feed_id=<?= $item['feed_id'] ?>"
data-action="mark-removed"
data-item-id="<?= $item['id'] ?>"
class="item-delete"
class="delete"
><?= t('remove') ?></a>
</li>
<li>
<?php if ($item['status'] == 'unread'): ?>
<a
id="status-<?= $item['id'] ?>"
class="item-mark"
class="mark"
href="?action=mark-item-read&amp;id=<?= $item['id'] ?>&amp;offset=<?= $offset ?>&amp;redirect=<?= $redirect ?>&amp;feed_id=<?= $item['feed_id'] ?>"
data-action="mark-read"
data-item-id="<?= $item['id'] ?>"
data-reverse-label="<?= t('mark as unread') ?>"
><?= t('mark as read') ?></a>
<?php else: ?>
<a
id="status-<?= $item['id'] ?>"
class="mark"
href="?action=mark-item-unread&amp;id=<?= $item['id'] ?>&amp;offset=<?= $offset ?>&amp;redirect=<?= $redirect ?>&amp;feed_id=<?= $item['feed_id'] ?>"
data-action="mark-unread"
data-item-id="<?= $item['id'] ?>"
data-reverse-label="<?= t('mark as read') ?>"
><?= t('mark as unread') ?></a>
<?php endif ?>

View File

@ -3,7 +3,7 @@
<?php else: ?>
<div class="page-header">
<h2><span id="page-counter"><?= isset($nb_items) ? $nb_items : '' ?></span> <?= t('unread items') ?></h2>
<h2><?= t('Unread') ?><span id="page-counter"><?= isset($nb_items) ? $nb_items : '' ?></span></h2>
<ul>
<li>
<a href="?action=unread&amp;order=updated&amp;direction=<?= $direction == 'asc' ? 'desc' : 'asc' ?>"><?= tne('sort by date<span class="hide-mobile"> (%s)</span>', $direction == 'desc' ? t('older first') : t('most recent first')) ?></a>

View File

@ -211,7 +211,7 @@ table {
img {
max-width: 100% !important;
}
@page {
@page {
margin: 2cm .5cm;
}
p,
@ -4532,9 +4532,6 @@ article.item > .panel-footer + .panel-collapse .panel-body,
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}
@ -5078,6 +5075,20 @@ header > nav > ul li:nth-child(5) a:before {
header > nav > ul li:nth-child(6) a:before {
content: "\e017";
}
span#nav-counter:not(:empty):before,
span#page-counter:not(:empty):before {
content: " (";
}
span#nav-counter:not(:empty):after,
span#page-counter:not(:empty):after {
content: ")";
}
span[id^="items-count-"]:before {
content: "(";
}
span[id^="items-count-"]:after {
content: ")";
}
.logo {
min-width: 100px;
min-height: 45px;
@ -5269,6 +5280,15 @@ body > header > nav > ul li.hide-mobile {
.item blockquote p {
font-size: 15px;
}
article[data-item-status="read"] .read-icon:before {
content: "✔";
}
article[data-item-bookmark="1"] .bookmark-icon:before {
content: "★";
}
article[data-item-bookmark="0"] .item-infos .bookmark-icon:before {
content: "☆";
}
article img {
max-width: 100%;
}

View File

@ -41,6 +41,32 @@ header > nav > ul li:nth-child(4) a:before {content:"\e012";} // Subscriptions
header > nav > ul li:nth-child(5) a:before {content:"\1f527";} // Préférences
header > nav > ul li:nth-child(6) a:before {content:"\e017";} // Logout
// Counter
span {
&#nav-counter,
&#page-counter {
&:not(:empty) {
&:before {
content: " @{icon-bracket-open}";
}
&:after {
content: "@{icon-bracket-close}";
}
}
}
&[id^="items-count-"] {
&:before {
content: "@{icon-bracket-open}";
}
&:after {
content: "@{icon-bracket-close}";
}
}
}
// Logo
.logo {
min-width: 100px;
@ -167,6 +193,28 @@ body > header {
.item h6 {font-size:12px}
.item blockquote p {font-size: 15px;}
article {
&[data-item-status="read"] {
.read-icon:before {
content: "@{icon-read}";
}
}
&[data-item-bookmark="1"] {
.bookmark-icon:before {
content: "@{icon-bookmarked}";
}
}
&[data-item-bookmark="0"] {
.item-infos {
.bookmark-icon:before {
content: "@{icon-not-bookmarked}";
}
}
}
}
article img {
max-width: 100%;
}

View File

@ -23,9 +23,6 @@
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}

View File

@ -60,7 +60,11 @@
@icon-font-path: "../fonts/";
@icon-font-name: "glyphicons-halflings-regular";
@icon-bracket-open: "(";
@icon-bracket-close: ")";
@icon-read: "✔";
@icon-bookmarked: "★";
@icon-not-bookmarked: "☆";
// Components
// -------------------------

View File

@ -211,7 +211,7 @@ table {
img {
max-width: 100% !important;
}
@page {
@page {
margin: 2cm .5cm;
}
p,
@ -4532,9 +4532,6 @@ article.item > .panel-footer + .panel-collapse .panel-body,
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}
@ -5078,6 +5075,20 @@ header > nav > ul li:nth-child(5) a:before {
header > nav > ul li:nth-child(6) a:before {
content: "\e017";
}
span#nav-counter:not(:empty):before,
span#page-counter:not(:empty):before {
content: " (";
}
span#nav-counter:not(:empty):after,
span#page-counter:not(:empty):after {
content: ")";
}
span[id^="items-count-"]:before {
content: "(";
}
span[id^="items-count-"]:after {
content: ")";
}
.logo {
min-width: 100px;
min-height: 45px;
@ -5269,6 +5280,15 @@ body > header > nav > ul li.hide-mobile {
.item blockquote p {
font-size: 15px;
}
article[data-item-status="read"] .read-icon:before {
content: "✔";
}
article[data-item-bookmark="1"] .bookmark-icon:before {
content: "★";
}
article[data-item-bookmark="0"] .item-infos .bookmark-icon:before {
content: "☆";
}
article img {
max-width: 100%;
}

View File

@ -41,6 +41,32 @@ header > nav > ul li:nth-child(4) a:before {content:"\e012";} // Subscriptions
header > nav > ul li:nth-child(5) a:before {content:"\1f527";} // Préférences
header > nav > ul li:nth-child(6) a:before {content:"\e017";} // Logout
// Counter
span {
&#nav-counter,
&#page-counter {
&:not(:empty) {
&:before {
content: " @{icon-bracket-open}";
}
&:after {
content: "@{icon-bracket-close}";
}
}
}
&[id^="items-count-"] {
&:before {
content: "@{icon-bracket-open}";
}
&:after {
content: "@{icon-bracket-close}";
}
}
}
// Logo
.logo {
min-width: 100px;
@ -167,6 +193,28 @@ body > header {
.item h6 {font-size:12px}
.item blockquote p {font-size: 15px;}
article {
&[data-item-status="read"] {
.read-icon:before {
content: "@{icon-read}";
}
}
&[data-item-bookmark="1"] {
.bookmark-icon:before {
content: "@{icon-bookmarked}";
}
}
&[data-item-bookmark="0"] {
.item-infos {
.bookmark-icon:before {
content: "@{icon-not-bookmarked}";
}
}
}
}
article img {
max-width: 100%;
}

View File

@ -23,9 +23,6 @@
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}

View File

@ -60,7 +60,11 @@
@icon-font-path: "../fonts/";
@icon-font-name: "glyphicons-halflings-regular";
@icon-bracket-open: "(";
@icon-bracket-close: ")";
@icon-read: "✔";
@icon-bookmarked: "★";
@icon-not-bookmarked: "☆";
// Components
// -------------------------

View File

@ -159,9 +159,9 @@ nav .active a {
color: #929292;
}
.items .item-menu .item-bookmark,
.items .item-menu .item-delete,
.items .item-menu .item-mark{
.items .item-menu .bookmark,
.items .item-menu .delete,
.items .item-menu .mark{
color: transparent;
text-indent: -9999px;
background-repeat: no-repeat;
@ -171,15 +171,15 @@ nav .active a {
height: 15px;
}
.items .item-menu .item-bookmark{
.items .item-menu .bookmark{
background-image: url("../img/star.png");
}
.items .item-menu .item-delete{
.items .item-menu .delete{
background-image: url("../img/cross.png");
}
.items .item-menu .item-mark{
.items .item-menu .mark{
background-image: url("../img/tick.png");
}

View File

@ -212,6 +212,15 @@ header {
header .logo span {
color: #b3e6cc; }
span#nav-counter:not(:empty):before, span#page-counter:not(:empty):before {
content: " ("; }
span#nav-counter:not(:empty):after, span#page-counter:not(:empty):after {
content: ")"; }
span[id^="items-count-"]:before {
content: "("; }
span[id^="items-count-"]:after {
content: ")"; }
section.page {
right: 0;
width: 81.69839%;
@ -288,6 +297,11 @@ section.page {
margin-bottom: 15px;
margin-top: 15px; }
article[data-item-bookmark="1"] .bookmark-icon:before {
content: "★"; }
article[data-item-bookmark="0"] .bookmark-icon:before {
content: "☆"; }
.items article {
-moz-box-shadow: 0 3px 0 #006644;
-webkit-box-shadow: 0 3px 0 #006644;
@ -297,9 +311,11 @@ section.page {
padding: 10px 20px; }
.items article[data-item-status="read"][data-item-page="feed-items"] {
background-color: rgba(153, 153, 153, 0.7); }
.items article[data-item-bookmark="1"] .item-menu a[id*="bookmark-"]:before {
.items article[data-item-status="read"] .read-icon:before {
content: "✔"; }
.items article[data-item-bookmark="1"] .item-menu a.bookmark:before {
content: "\f088"; }
.items article[data-item-bookmark="0"] .item-menu a[id*="bookmark-"]:before {
.items article[data-item-bookmark="0"] .item-menu a.bookmark:before {
content: "\f087"; }
.items article h2 {
display: block;
@ -334,7 +350,7 @@ section.page {
margin-right: 2px; }
.items .item-menu li a:first-child:before {
content: "\f0b0"; }
.items .item-menu li a[id*="original-"]:before {
.items .item-menu li a.original:before {
content: "\f08e"; }
.items .item-menu li a[href*="action=confirm-remove-feed"]:before {
content: "\f014"; }
@ -345,7 +361,7 @@ section.page {
.items .item-menu li a[href*="action=mark-item-removed"]:before {
content: "\f014";
margin-right: 2px; }
.items .item-menu li a[id*="status-"]:before {
.items .item-menu li a.mark:before {
content: "\f058"; }
.items .item-menu li a[href*="action=disable-grabber-feed"]:before {
content: "\f057"; }

View File

@ -30,4 +30,11 @@ $alert-info: #40bac8;
$alert-sucess: #72c5a1;
// Logo
$logo-basecolor: #339966;
$logo-basecolor: #339966;
// Icons
$icon-bracket-open: "(";
$icon-bracket-close: ")";
$icon-read: "";
$icon-bookmarked: "";
$icon-not-bookmarked: "";

View File

@ -119,6 +119,34 @@ header {
}
}
}
// Counter
span {
&#nav-counter,
&#page-counter {
&:not(:empty) {
&:before {
content: " " + $icon-bracket-open;
}
&:after {
content: $icon-bracket-close;
}
}
}
&[id^="items-count-"] {
&:before {
content: $icon-bracket-open;
}
&:after {
content: $icon-bracket-close;
}
}
}
// Main container
section {
&.page {

View File

@ -1,3 +1,17 @@
article {
&[data-item-bookmark="1"] {
.bookmark-icon:before {
content: $icon-bookmarked;
}
}
&[data-item-bookmark="0"] {
.bookmark-icon:before {
content: $icon-not-bookmarked;
}
}
}
.items {
article {
@ -10,12 +24,16 @@
&[data-item-page="feed-items"] {
background-color: rgba(lighten(black,60%), .7);
}
.read-icon:before {
content: $icon-read;
}
}
&[data-item-bookmark="1"] {
.item-menu {
a {
&[id*="bookmark-"] {
&.bookmark {
&:before {
content: "\f088";
}
@ -27,7 +45,7 @@
&[data-item-bookmark="0"] {
.item-menu {
a {
&[id*="bookmark-"] {
&.bookmark {
&:before {
content: "\f087";
}
@ -89,7 +107,7 @@
content: "\f0b0";
}
}
&[id*="original-"] {
&.original {
&:before {
content: "\f08e";
}
@ -117,7 +135,7 @@
}
}
&[id*="status-"] {
&.mark {
&:before {
content: "\f058";
}