mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-01 22:59:02 +00:00
154 lines
No EOL
4.2 KiB
JavaScript
154 lines
No EOL
4.2 KiB
JavaScript
/**
|
|
* @desc Navigate with Keyboard from an article to another on an article's page
|
|
* @param string leftURL - URL of the article on the left
|
|
* @param string rightURL - URL of the article on the right
|
|
*/
|
|
|
|
function navigateKeyboard(leftURL, rightURL) {
|
|
window.addEventListener("keydown", function (event) {
|
|
var key = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier versions
|
|
switch (key) {
|
|
case 37:
|
|
goLeft(leftURL); // left arrow
|
|
break;
|
|
case 72:
|
|
goLeft(leftURL); // h letter (vim style)
|
|
break;
|
|
|
|
case 39:
|
|
goRight(rightURL); // right arrow
|
|
break;
|
|
case 76:
|
|
goRight(rightURL); // l letter (vim style)
|
|
break;
|
|
case 8:
|
|
window.history.back();
|
|
|
|
}
|
|
|
|
}, false);
|
|
}
|
|
|
|
function goLeft(leftURL) {
|
|
if (leftURL != "?view=view&id=") {
|
|
window.location = window.location.origin + window.location.pathname + leftURL;
|
|
}
|
|
}
|
|
|
|
function goRight(rightURL) {
|
|
if (rightURL != "?view=view&id=") {
|
|
window.location = window.location.origin + window.location.pathname + rightURL;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* @desc Do actions with Keyboard on an article's page
|
|
* @param number id - ID of the current article
|
|
*/
|
|
|
|
function actionArticle(id) {
|
|
window.addEventListener("keydown", function (event) {
|
|
var key = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier versions
|
|
switch (key) {
|
|
case 46:
|
|
deleteArticle(id); // delete key
|
|
break;
|
|
case 68:
|
|
deleteArticle(id); // d key letter
|
|
break;
|
|
case 70:
|
|
favoriteArticle(id); // f key letter
|
|
break;
|
|
case 77:
|
|
markReadArticle(id); // m key letter
|
|
break;
|
|
}
|
|
|
|
}, false);
|
|
}
|
|
|
|
function deleteArticle(id) {
|
|
if (id) {
|
|
window.location = window.location.origin + window.location.pathname + '?action=delete&id=' + id;
|
|
}
|
|
}
|
|
|
|
function favoriteArticle(id) {
|
|
if (id) {
|
|
window.location = window.location.origin + window.location.pathname + '?action=toggle_fav&id=' + id;
|
|
}
|
|
}
|
|
|
|
function markReadArticle(id) {
|
|
if (id) {
|
|
window.location = window.location.origin + window.location.pathname + '?action=toggle_archive&id=' + id;
|
|
}
|
|
}
|
|
|
|
function homeNavigation() {
|
|
selectedArticle = $('.entrie:first');
|
|
console.log("selected first article");
|
|
window.addEventListener("keydown", function (event) {
|
|
var key = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier versions
|
|
switch (key) {
|
|
case 37: // left arrow
|
|
selectedArticle = goSelectPrev(selectedArticle,1);
|
|
break;
|
|
case 72: // h letter (vim style)
|
|
selectedArticle = goSelectPrev(selectedArticle,1);
|
|
break;
|
|
|
|
case 39: // right arrow
|
|
selectedArticle = goSelectNext(selectedArticle,1);
|
|
break;
|
|
case 76: // l letter (vim style)
|
|
selectedArticle = goSelectNext(selectedArticle,1);
|
|
break;
|
|
case 13: // enter into article
|
|
enterArticle(selectedArticle);
|
|
break;
|
|
case 74: // j letter key
|
|
selectedArticle = goSelectNext(selectedArticle,3);
|
|
break;
|
|
case 40: // down arrow
|
|
selectedArticle = goSelectNext(selectedArticle,3);
|
|
break;
|
|
case 75: // k letter key
|
|
selectedArticle = goSelectNext(selectedArticle,3);
|
|
break;
|
|
case 38: // up arrow
|
|
selectedArticle = goSelectNext(selectedArticle,3);
|
|
break;
|
|
}
|
|
|
|
}, false);
|
|
}
|
|
|
|
function goSelectNext(selectedArticle,number) {
|
|
if (selectedArticle.next().length) {
|
|
selectedArticle.removeClass("eselected");
|
|
selectedArticle = selectedArticle.next();
|
|
selectedArticle.addClass("eselected");
|
|
console.log("Changed selected to next");
|
|
console.log("selectedArticle is now " + selectedArticle.attr("id"));
|
|
}
|
|
return selectedArticle;
|
|
}
|
|
|
|
|
|
function goSelectPrev(selectedArticle,number) {
|
|
if (selectedArticle.prev().length) {
|
|
selectedArticle.removeClass("eselected");
|
|
selectedArticle = selectedArticle.prev();
|
|
selectedArticle.addClass("eselected");
|
|
console.log("Changed selected to previous");
|
|
console.log("selectedArticle is now " + selectedArticle.attr("id"));
|
|
|
|
}
|
|
return selectedArticle;
|
|
}
|
|
|
|
function enterArticle(selectedArticle) {
|
|
window.location = selectedArticle.find('a:first').attr('href');
|
|
} |