Merge branch 'new-dev'

indiachan-spamvector
Thomas Lynch 3 years ago
commit 4eee7dbcdb
  1. 6
      CHANGELOG.md
  2. 17
      gulp/res/js/forms.js
  3. 1
      gulp/res/js/localstorage.js
  4. 25
      gulp/res/js/saveoverboard.js
  5. 2
      gulpfile.js
  6. 2
      helpers/posting/markdown.js
  7. 114
      package-lock.json
  8. 2
      package.json
  9. 2
      views/includes/navbar.pug
  10. 9
      views/pages/boardlist.pug
  11. 2
      views/pages/overboardcatalog.pug

@ -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

@ -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]);
}
}
})
});

@ -57,3 +57,4 @@ setDefaultLocalStorage('name', '');
setDefaultLocalStorage('theme', 'default');
setDefaultLocalStorage('codetheme', 'default');
setDefaultLocalStorage('customcss', '');
setDefaultLocalStorage('overboardsettings', '{}');

@ -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);
}
}

@ -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`,

@ -14,7 +14,7 @@ const greentextRegex = /^&gt;((?!&gt;\d+|&gt;&gt;&#x2F;\w+(&#x2F;\d*)?|&gt;&gt;#
, codeRegex = /(?:(?<language>[a-z+]{1,14})\r?\n)?(?<code>[\s\S]+)/i
, includeSplitRegex = /(\[code\][\s\S]+?\[\/code\])/gm
, splitRegex = /\[code\]([\s\S]+?)\[\/code\]/gm
, trimNewlineRegex = /^\s*(\r?\n)*|(\r?\n)*$/g
, trimNewlineRegex = /^(\s*\r?\n)*/g
, escape = require(__dirname+'/escape.js')
, { highlight, highlightAuto } = require('highlight.js')
, { addCallback } = require(__dirname+'/../../redis.js')

114
package-lock.json generated

@ -1,6 +1,6 @@
{
"name": "jschan",
"version": "0.1.6",
"version": "0.1.7",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1881,9 +1881,9 @@
}
},
"@pm2/agent": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.0.tgz",
"integrity": "sha512-W1LvdyF1tGaVU5f/hV8DjpI5joI7MEgXiQMLZnTwZlFwDVP00O9s86571Q8xSiweTcFZFyye0F4wORN/PjSgGA==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.1.tgz",
"integrity": "sha512-QKHMm6yexcvdDfcNE7PL9D6uEjoQPGRi+8dh+rc4Hwtbpsbh5IAvZbz3BVGjcd4HaX6pt2xGpOohG7/Y2L4QLw==",
"requires": {
"async": "~3.2.0",
"chalk": "~3.0.0",
@ -1895,7 +1895,7 @@
"nssocket": "0.6.0",
"pm2-axon": "~4.0.1",
"pm2-axon-rpc": "~0.7.0",
"proxy-agent": "~4.0.1",
"proxy-agent": "~5.0.0",
"semver": "~7.2.0",
"ws": "~7.4.0"
},
@ -1909,9 +1909,9 @@
}
},
"async": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
"integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg=="
},
"chalk": {
"version": "3.0.0",
@ -1936,9 +1936,9 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -4036,9 +4036,9 @@
}
},
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"deepmerge": {
"version": "4.2.2",
@ -4116,13 +4116,14 @@
}
},
"degenerator": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-2.2.0.tgz",
"integrity": "sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz",
"integrity": "sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ==",
"requires": {
"ast-types": "^0.13.2",
"escodegen": "^1.8.1",
"esprima": "^4.0.0"
"esprima": "^4.0.0",
"vm2": "^3.9.3"
}
},
"del": {
@ -4972,9 +4973,9 @@
}
},
"fast-json-patch": {
"version": "3.0.0-1",
"resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz",
"integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw=="
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz",
"integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA=="
},
"fast-json-stable-stringify": {
"version": "2.1.0",
@ -5415,9 +5416,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -5438,9 +5439,9 @@
}
},
"graceful-fs": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"jsonfile": {
"version": "4.0.0",
@ -5993,9 +5994,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -6028,9 +6029,9 @@
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -8008,9 +8009,9 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"pac-proxy-agent": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz",
"integrity": "sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q==",
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
"integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
"requires": {
"@tootallnate/once": "1",
"agent-base": "6",
@ -8018,15 +8019,15 @@
"get-uri": "3",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "5",
"pac-resolver": "^4.1.0",
"pac-resolver": "^5.0.0",
"raw-body": "^2.2.0",
"socks-proxy-agent": "5"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -8039,11 +8040,11 @@
}
},
"pac-resolver": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-4.2.0.tgz",
"integrity": "sha512-rPACZdUyuxT5Io/gFKUeeZFfE5T7ve7cAkE5TUZRRfuKP0u5Hocwe48X7ZEm6mYB+bTB0Qf+xlVlA/RM/i6RCQ==",
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz",
"integrity": "sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA==",
"requires": {
"degenerator": "^2.2.0",
"degenerator": "^3.0.1",
"ip": "^1.1.5",
"netmask": "^2.0.1"
}
@ -8627,24 +8628,24 @@
}
},
"proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-4.0.1.tgz",
"integrity": "sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA==",
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz",
"integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
"requires": {
"agent-base": "^6.0.0",
"debug": "4",
"http-proxy-agent": "^4.0.0",
"https-proxy-agent": "^5.0.0",
"lru-cache": "^5.1.1",
"pac-proxy-agent": "^4.1.0",
"pac-proxy-agent": "^5.0.0",
"proxy-from-env": "^1.0.0",
"socks-proxy-agent": "^5.0.0"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@ -10335,9 +10336,9 @@
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
},
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"tsscmp": {
"version": "1.0.6",
@ -10835,6 +10836,11 @@
}
}
},
"vm2": {
"version": "3.9.3",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.3.tgz",
"integrity": "sha512-smLS+18RjXYMl9joyJxMNI9l4w7biW8ilSDaVRvFBDwOH8P0BK1ognFQTpg0wyQ6wIKLTblHJvROW692L/E53Q=="
},
"void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",

@ -1,6 +1,6 @@
{
"name": "jschan",
"version": "0.1.6",
"version": "0.1.7",
"migrateVersion": "0.1.6",
"description": "",
"main": "server.js",

@ -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

@ -24,10 +24,11 @@ block content
select(name='direction')
option(value='desc') Descending
option(value='asc' selected=query.direction === 'asc') Ascending
.row
.label Local First
label.postform-style.ph-5
input(type='checkbox', name='local_first', value='true' checked=localFirst)
if enableWebring
.row
.label Local First
label.postform-style.ph-5
input(type='checkbox', name='local_first', value='true' checked=localFirst)
if enableWebring
.col
.row

@ -10,7 +10,7 @@ block head
block content
.board-header.mb-5
h1.board-title Overboard Catalog
h4.board-description Recently bumped threads from all listed boards
h4.board-description Recently bumped threads from multiple boards
|
| (
a(href=`/overboard.html?${cacheQueryString}`) Index View

Loading…
Cancel
Save