diff --git a/configs/template.js.example b/configs/template.js.example index db9feffe..eed477af 100644 --- a/configs/template.js.example +++ b/configs/template.js.example @@ -400,6 +400,7 @@ module.exports = { forceThreadFile: false, forceThreadSubject: false, disableReplySubject: false, + hideBanners: false, minThreadMessageLength: 0, minReplyMessageLength: 0, maxThreadMessageLength: 20000, diff --git a/migrations/0.9.0.js b/migrations/0.9.0.js new file mode 100644 index 00000000..4d597884 --- /dev/null +++ b/migrations/0.9.0.js @@ -0,0 +1,21 @@ +'use strict'; + +module.exports = async(db, redis) => { + console.log('add board option to hide banners and [banners] link, and globalsettings board default option'); + await db.collection('globalsettings').updateOne({ _id: 'globalsettings' }, { + '$set': { + 'boardDefaults.hideBanners': false, + }, + }); + await db.collection('boards').updateMany({ + 'webring': false, + }, { + '$set':{ + 'settings.hideBanners': false, + }, + }); + console.log('Clearing globalsettings cache'); + await redis.deletePattern('globalsettings'); + console.log('Clearing boards cache'); + await redis.deletePattern('board:*'); +}; diff --git a/models/forms/changeboardsettings.js b/models/forms/changeboardsettings.js index 70bbca29..13d7ace6 100644 --- a/models/forms/changeboardsettings.js +++ b/models/forms/changeboardsettings.js @@ -28,6 +28,7 @@ const { Boards, Posts } = require(__dirname+'/../../db/') 'announcement.raw': ['board', 'threads', 'catalog', 'other'], 'customCss': ['board', 'threads', 'catalog', 'other'], 'enableTegaki': ['board', 'threads', 'catalog'], + 'hideBanners': ['board', 'threads', 'catalog'], }); module.exports = async (req, res) => { @@ -79,6 +80,7 @@ module.exports = async (req, res) => { 'forceReplyFile': booleanSetting(req.body.force_reply_file), 'forceThreadSubject': booleanSetting(req.body.force_thread_subject), 'disableReplySubject': booleanSetting(req.body.disable_reply_subject), + 'hideBanners': booleanSetting(req.body.hide_banners), 'captchaMode': numberSetting(req.body.captcha_mode, oldSettings.captchaMode), 'tphTrigger': numberSetting(req.body.tph_trigger, oldSettings.tphTrigger), 'tphTriggerAction': numberSetting(req.body.tph_trigger_action, oldSettings.tphTriggerAction), diff --git a/models/forms/changeglobalsettings.js b/models/forms/changeglobalsettings.js index d67fc876..92d43d06 100644 --- a/models/forms/changeglobalsettings.js +++ b/models/forms/changeglobalsettings.js @@ -306,6 +306,7 @@ module.exports = async (req, res) => { forceThreadFile: booleanSetting(req.body.board_defaults_force_thread_file, oldSettings.boardDefaults.forceThreadFile), forceThreadSubject: booleanSetting(req.body.board_defaults_force_thread_subject, oldSettings.boardDefaults.forceThreadSubject), disableReplySubject: booleanSetting(req.body.board_defaults_disable_reply_subject, oldSettings.boardDefaults.disableReplySubject), + hideBanners: booleanSetting(req.body.board_defaults_hide_banners, oldSettings.boardDefaults.hideBanners), minThreadMessageLength: numberSetting(req.body.board_defaults_min_thread_message_length, oldSettings.boardDefaults.minThreadMessageLength), minReplyMessageLength: numberSetting(req.body.board_defaults_min_reply_message_length, oldSettings.boardDefaults.minReplyMessageLength), maxThreadMessageLength: numberSetting(req.body.board_defaults_max_thread_message_length, oldSettings.boardDefaults.maxThreadMessageLength), diff --git a/package.json b/package.json index 892ac29e..6effeb72 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "jschan", "version": "0.8.2", - "migrateVersion": "0.8.0", + "migrateVersion": "0.9.0", "description": "", "main": "server.js", "dependencies": { diff --git a/views/mixins/boardheader.pug b/views/mixins/boardheader.pug index 6c355c71..c203c739 100644 --- a/views/mixins/boardheader.pug +++ b/views/mixins/boardheader.pug @@ -1,7 +1,8 @@ mixin boardheader(pagename) .board-header - img.board-banner(src=`/randombanner?board=${board._id}` loading='lazy') - br + if board.settings != null && board.settings.hideBanners === false + img.board-banner(src=`/randombanner?board=${board._id}` loading='lazy') + br if pagename h1.board-title #{pagename}(#[a.no-decoration(href=`/${board._id}/index.html`) /#{board._id}/]) else diff --git a/views/mixins/boardnav.pug b/views/mixins/boardnav.pug index 7b8bf7c5..4c7eeeec 100644 --- a/views/mixins/boardnav.pug +++ b/views/mixins/boardnav.pug @@ -4,8 +4,9 @@ mixin boardnav(selected, showIndex, upLevel) a(href=`${upLevel ? '../' : ''}index.html` class=(selected === 'index' ? 'bold' : '')) [Index] | a(href=`${upLevel ? '../' : ''}catalog.html` class=(selected === 'catalog' ? 'bold' : '')) [Catalog] - | - a(href=`${upLevel ? '../' : ''}banners.html` class=(selected === 'banners' ? 'bold' : '')) [Banners] + if board.settings != null && board.settings.hideBanners === false + | + a(href=`${upLevel ? '../' : ''}banners.html` class=(selected === 'banners' ? 'bold' : '')) [Banners] | a(href=`${upLevel ? '../' : ''}logs.html` class=(selected === 'logs' ? 'bold' : '')) [Logs] if thread != null && board.settings != null && board.settings.archiveLinks === true diff --git a/views/pages/globalmanagesettings.pug b/views/pages/globalmanagesettings.pug index 2632c7d5..113f31bd 100644 --- a/views/pages/globalmanagesettings.pug +++ b/views/pages/globalmanagesettings.pug @@ -820,6 +820,10 @@ block content .label Disable Reply Subject label.postform-style.ph-5 input(type='checkbox', name='board_defaults_disable_reply_subject', value='true' checked=settings.boardDefaults.disableReplySubject) + .row + .label Hide Baners + label.postform-style.ph-5 + input(type='checkbox', name='board_defaults_hide_banners', value='true' checked=settings.boardDefaults.hideBanners) .row .label Min Thread Message Length input(type='number' name='board_defaults_min_thread_message_length' value=settings.boardDefaults.minThreadMessageLength) diff --git a/views/pages/managesettings.pug b/views/pages/managesettings.pug index 48fd9551..b37bd80b 100644 --- a/views/pages/managesettings.pug +++ b/views/pages/managesettings.pug @@ -85,6 +85,10 @@ block content .row .label Custom CSS textarea(name='custom_css' placeholder='Test first in top-right settings if you have javascript enabled' maxlength=globalLimits.customCss.max) #{board.settings.customCss} + .row + .label Hide Banners + label.postform-style.ph-5 + input(type='checkbox', name='hide_banners', value='true' checked=board.settings.hideBanners) .row .label IDs label.postform-style.ph-5