From d7772f2b66c3dfd29b453218df9cf01454d97ef7 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Wed, 22 Sep 2021 15:44:17 +0000 Subject: [PATCH] simple overboard link changing/localstorage saving, to help the bookmarkedly challenged update CHANGELOG --- CHANGELOG.md | 6 ++++++ gulp/res/js/forms.js | 17 ++++++++++------- gulp/res/js/localstorage.js | 1 + gulp/res/js/saveoverboard.js | 25 +++++++++++++++++++++++++ gulpfile.js | 2 ++ views/includes/navbar.pug | 2 +- 6 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 gulp/res/js/saveoverboard.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a85d663..f6f98c92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,3 +55,9 @@ - Image previews now shown in notifications - Strict filtering improvements - Many bugfixes + +### 0.1.7 + - Update inconsistent wording of custom overboard subtitle from 0.1.6 + - Dont show "local first" checkbox in boardlist when webring isn't even enabled + - Bugfix to code markup, remove only leading blank lines, keeping leading whitespace on first non-empty line + - Make overboard settings save somewhat in localstorage to help stupid zoomers who dont know what a BOOKMARK is diff --git a/gulp/res/js/forms.js b/gulp/res/js/forms.js index 75feab34..49099393 100644 --- a/gulp/res/js/forms.js +++ b/gulp/res/js/forms.js @@ -95,7 +95,8 @@ let recaptchaResponse = null; function recaptchaCallback(response) { recaptchaResponse = response; } -class formHandler { + +class postFormHandler { constructor(form) { this.form = form; @@ -261,8 +262,10 @@ class formHandler { forceUpdate(); } } - if (this.form.getAttribute('action') !== '/forms/editpost' - && !this.form.getAttribute('action').endsWith('/settings')) { //dont reset on edit, keep the new values in there. todo: add exceptions/better handling for this situation + //dont reset on edit, keep the new values in there. todo: add exceptions/better handling for this situation + const formAction = this.form.getAttribute('action'); + if (formAction !== '/forms/editpost' + && !formAction.endsWith('/settings')) { this.reset(); } } else { @@ -500,10 +503,10 @@ window.addEventListener('DOMContentLoaded', () => { window.addEventListener('settingsReady', () => { - for(let i = 0; i < forms.length; i++) { - if (forms[i].method === 'post' /*&& forms[i].encoding === 'multipart/form-data'*/) { - new formHandler(forms[i]); + for (let i = 0; i < forms.length; i++) { + if (forms[i].method === 'post') { + new postFormHandler(forms[i]); } } -}) +}); diff --git a/gulp/res/js/localstorage.js b/gulp/res/js/localstorage.js index 48c14b30..df51a2c4 100644 --- a/gulp/res/js/localstorage.js +++ b/gulp/res/js/localstorage.js @@ -57,3 +57,4 @@ setDefaultLocalStorage('name', ''); setDefaultLocalStorage('theme', 'default'); setDefaultLocalStorage('codetheme', 'default'); setDefaultLocalStorage('customcss', ''); +setDefaultLocalStorage('overboardsettings', '{}'); diff --git a/gulp/res/js/saveoverboard.js b/gulp/res/js/saveoverboard.js new file mode 100644 index 00000000..a068d82c --- /dev/null +++ b/gulp/res/js/saveoverboard.js @@ -0,0 +1,25 @@ +const overboardLink = document.getElementById('overboardlink'); +if (overboardLink) { + const updateOverboardLink = () => { + const overboardSettings = JSON.parse(localStorage.getItem('overboardsettings')); + if (overboardSettings.add.length > 0 || overboardSettings.rem.length > 0 || !overboardSettings.include_default) { + overboardLink.setAttribute('href', `/overboard.html?${new URLSearchParams(overboardSettings)}`); + } + } + updateOverboardLink(); + if (location.pathname === '/overboard.html') { + const overboardForm = document.querySelector('form[action="/overboard.html"]'); + const saveOverboardSettings = (e) => { + const newOverboardSettings = { + add: overboardForm.elements.add.value, + rem: overboardForm.elements.rem.value, + include_default: overboardForm.elements.include_default.checked, + }; + if (newOverboardSettings.add.length === 0 && !newOverboardSettings.include_default) { + newOverboardSettings.include_default = true; //nice + } + setLocalStorage('overboardsettings', JSON.stringify(newOverboardSettings)); + } + overboardForm.addEventListener('submit', saveOverboardSettings, false); + } +} diff --git a/gulpfile.js b/gulpfile.js index 031556bd..a0067614 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -414,6 +414,7 @@ const extraLocals = ${JSON.stringify({ meta: config.get.meta, reverseImageLinksU `${paths.scripts.src}/captcha.js`, `${paths.scripts.src}/forms.js`, `${paths.scripts.src}/*.js`, + `!${paths.scripts.src}/saveoverboard.js`, `!${paths.scripts.src}/hidefileinput.js`, `!${paths.scripts.src}/dragable.js`, `!${paths.scripts.src}/filters.js`, @@ -428,6 +429,7 @@ const extraLocals = ${JSON.stringify({ meta: config.get.meta, reverseImageLinksU .pipe(uglify({compress:false})) .pipe(gulp.dest(paths.scripts.dest)); return gulp.src([ + `${paths.scripts.src}/saveoverboard.js`, `${paths.scripts.src}/hidefileinput.js`, `${paths.scripts.src}/dragable.js`, `${paths.scripts.src}/hideimages.js`, diff --git a/views/includes/navbar.pug b/views/includes/navbar.pug index 823e499b..fb955d0d 100644 --- a/views/includes/navbar.pug +++ b/views/includes/navbar.pug @@ -5,7 +5,7 @@ unless minimal | Boards if enableWebring .rainbow +Webring - a.nav-item(href='/overboard.html') Overboard + a.nav-item#overboardlink(href='/overboard.html') Overboard a.nav-item(href='/account.html') Account if board a.nav-item(href=`/${board._id}/manage/reports.html`) Manage