diff options
Diffstat (limited to 'p')
| -rw-r--r-- | p/scripts/extra.js | 6 | ||||
| -rw-r--r-- | p/scripts/main.js | 31 |
2 files changed, 37 insertions, 0 deletions
diff --git a/p/scripts/extra.js b/p/scripts/extra.js index fe4e54739..d34042e05 100644 --- a/p/scripts/extra.js +++ b/p/scripts/extra.js @@ -30,6 +30,10 @@ function poormanSalt() { //If crypto.getRandomValues is not available return text; } +function forgetOpenCategories() { + localStorage.removeItem('FreshRSS_open_categories'); +} + function init_crypto_form() { /* globals dcodeIO */ const crypto_form = document.getElementById('crypto-form'); @@ -45,6 +49,8 @@ function init_crypto_form() { return; } + forgetOpenCategories(); + crypto_form.onsubmit = function (e) { const submit_button = this.querySelector('button[type="submit"]'); submit_button.disabled = true; diff --git a/p/scripts/main.js b/p/scripts/main.js index 6823f3119..21141f210 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -692,6 +692,26 @@ function init_posts() { } } +function rememberOpenCategory(category_id, isOpen) { + if (context.display_categories === 'remember') { + const open_categories = JSON.parse(localStorage.getItem('FreshRSS_open_categories') || '{}'); + if (isOpen) { + open_categories[category_id] = true; + } else { + delete open_categories[category_id]; + } + localStorage.setItem('FreshRSS_open_categories', JSON.stringify(open_categories)); + } +} + +function openCategory(category_id) { + const category_element = document.getElementById(category_id); + category_element.querySelector('.tree-folder-items').classList.add('active'); + const img = category_element.querySelector('a.dropdown-toggle img'); + img.src = img.src.replace('/icons/down.', '/icons/up.'); + img.alt = '△'; +} + function init_column_categories() { if (context.current_view !== 'normal' && context.current_view !== 'reader') { return; @@ -700,16 +720,27 @@ function init_column_categories() { //Restore sidebar scroll position document.getElementById('sidebar').scrollTop = +sessionStorage.getItem('FreshRSS_sidebar_scrollTop'); + //Restore open categories + if (context.display_categories === 'remember') { + const open_categories = JSON.parse(localStorage.getItem('FreshRSS_open_categories') || '{}'); + Object.keys(open_categories).forEach(function (category_id) { + openCategory(category_id); + }); + } + document.getElementById('aside_feed').onclick = function (ev) { let a = ev.target.closest('.tree-folder > .tree-folder-title > a.dropdown-toggle'); if (a) { const img = a.querySelector('img'); + const category_id = a.closest('.category').id; if (img.alt === '▽') { img.src = img.src.replace('/icons/down.', '/icons/up.'); img.alt = '△'; + rememberOpenCategory(category_id, true); } else { img.src = img.src.replace('/icons/up.', '/icons/down.'); img.alt = '▽'; + rememberOpenCategory(category_id, false); } const ul = a.closest('li').querySelector('.tree-folder-items'); |
