fixes, make modal a mixin so compilefileclient works properly, and other small fixes

merge-requests/208/head
fatchan 5 years ago
parent 485dc802aa
commit 89e8f4b977
  1. 2
      controllers/forms/makepost.js
  2. 3
      gulp/res/js/captcha.js
  3. 2
      gulp/res/js/live.js
  4. 35
      gulp/res/js/modal.js
  5. 6
      gulp/res/js/progress.js
  6. 2
      gulpfile.js
  7. 6
      helpers/dynamic.js
  8. 19
      views/includes/modal.pug
  9. 19
      views/mixins/modal.pug

@ -21,7 +21,7 @@ module.exports = async (req, res, next) => {
const errors = []; const errors = [];
// even if force file and message are off, the post must contain one of either. // even if force file and message are off, the post must contain one of either.
if (!req.body.message && res.locals.numFiles === 0) { if ((!req.body.message || req.body.message.length === 0) && res.locals.numFiles === 0) {
errors.push('Posts must include a message or file'); errors.push('Posts must include a message or file');
} }

@ -1,3 +1,4 @@
window.addEventListener('DOMContentLoaded', (event) => { window.addEventListener('DOMContentLoaded', (event) => {
const captchaFields = document.getElementsByClassName('captchafield'); const captchaFields = document.getElementsByClassName('captchafield');
@ -16,7 +17,7 @@ window.addEventListener('DOMContentLoaded', (event) => {
} }
xhr.open('GET', '/captcha', true); xhr.open('GET', '/captcha', true);
xhr.send(null); xhr.send(null);
} };
const loadCaptcha = function(e) { const loadCaptcha = function(e) {
const captchaDiv = this.previousSibling; const captchaDiv = this.previousSibling;

@ -19,7 +19,7 @@ window.addEventListener('DOMContentLoaded', (event) => {
console.log('got new post'); console.log('got new post');
const postData = data; const postData = data;
//create a new post //create a new post
const postHtml = post({post: postData}); const postHtml = post({ post: postData });
//add it to the end of the thread //add it to the end of the thread
thread.insertAdjacentHTML('beforeend', postHtml); thread.insertAdjacentHTML('beforeend', postHtml);
for (let j = 0; j < postData.quotes.length; j++) { for (let j = 0; j < postData.quotes.length; j++) {

@ -1,17 +1,17 @@
function pug_escape(e){var a=""+e,t=pug_match_html.exec(a);if(!t)return e;var r,c,n,s="";for(r=t.index,c=0;r<a.length;r++){switch(a.charCodeAt(r)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}c!==r&&(s+=a.substring(c,r)),c=r+1,s+=n}return c!==r?s+a.substring(c,r):s} function pug_escape(e){var a=""+e,t=pug_match_html.exec(a);if(!t)return e;var r,c,n,s="";for(r=t.index,c=0;r<a.length;r++){switch(a.charCodeAt(r)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}c!==r&&(s+=a.substring(c,r)),c=r+1,s+=n}return c!==r?s+a.substring(c,r):s}
var pug_match_html=/["&<>]/;function modal(locals) {var pug_html = "", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (error, errors, message, messages, title) {pug_html = pug_html + "\u003Cdiv class=\"modal-bg\"\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\"modal\"\u003E\u003Cdiv class=\"row\"\u003E\u003Cp class=\"bold\"\u003E" + (pug_escape(null == (pug_interp = title) ? "" : pug_interp)) + "\u003C\u002Fp\u003E\u003Ca class=\"close postform-style\" id=\"modalclose\"\u003EX\u003C\u002Fa\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\"row\"\u003E\u003Cul class=\"nomarks\"\u003E"; var pug_match_html=/["&<>]/;function modal(locals) {var pug_html = "", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (errors, messages, modal) {pug_mixins["modal"] = pug_interp = function(data){
if (message) { var block = (this && this.block), attributes = (this && this.attributes) || {};
pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = message) ? "" : pug_interp)) + "\u003C\u002Fli\u003E"; pug_html = pug_html + "\u003Cdiv class=\"modal-bg\"\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\"modal\"\u003E\u003Cdiv class=\"row\"\u003E\u003Cp class=\"bold\"\u003E" + (pug_escape(null == (pug_interp = data.title) ? "" : pug_interp)) + "\u003C\u002Fp\u003E\u003Ca class=\"close postform-style\" id=\"modalclose\"\u003EX\u003C\u002Fa\u003E\u003C\u002Fdiv\u003E\u003Cdiv class=\"row\"\u003E\u003Cul class=\"nomarks\"\u003E";
if (data.message) {
pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = data.message) ? "" : pug_interp)) + "\u003C\u002Fli\u003E";
} }
else if (data.error) {
if (error) { pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = data.error) ? "" : pug_interp)) + "\u003C\u002Fli\u003E";
pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = error) ? "" : pug_interp)) + "\u003C\u002Fli\u003E";
} }
else
if (messages) { if (messages) {
// iterate messages // iterate data.messages
;(function(){ ;(function(){
var $$obj = messages; var $$obj = data.messages;
if ('number' == typeof $$obj.length) { if ('number' == typeof $$obj.length) {
for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) { for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {
var msg = $$obj[pug_index0]; var msg = $$obj[pug_index0];
@ -28,25 +28,26 @@ pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = msg)
}).call(this); }).call(this);
} }
else
if (errors) { if (errors) {
// iterate errors // iterate data.errors
;(function(){ ;(function(){
var $$obj = errors; var $$obj = data.errors;
if ('number' == typeof $$obj.length) { if ('number' == typeof $$obj.length) {
for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) { for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {
var err = $$obj[pug_index1]; var error = $$obj[pug_index1];
pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = err) ? "" : pug_interp)) + "\u003C\u002Fli\u003E"; pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = error) ? "" : pug_interp)) + "\u003C\u002Fli\u003E";
} }
} else { } else {
var $$l = 0; var $$l = 0;
for (var pug_index1 in $$obj) { for (var pug_index1 in $$obj) {
$$l++; $$l++;
var err = $$obj[pug_index1]; var error = $$obj[pug_index1];
pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = err) ? "" : pug_interp)) + "\u003C\u002Fli\u003E"; pug_html = pug_html + "\u003Cli\u003E" + (pug_escape(null == (pug_interp = error) ? "" : pug_interp)) + "\u003C\u002Fli\u003E";
} }
} }
}).call(this); }).call(this);
} }
pug_html = pug_html + "\u003C\u002Ful\u003E\u003C\u002Fdiv\u003E\u003C\u002Fdiv\u003E";}.call(this,"error" in locals_for_with?locals_for_with.error:typeof error!=="undefined"?error:undefined,"errors" in locals_for_with?locals_for_with.errors:typeof errors!=="undefined"?errors:undefined,"message" in locals_for_with?locals_for_with.message:typeof message!=="undefined"?message:undefined,"messages" in locals_for_with?locals_for_with.messages:typeof messages!=="undefined"?messages:undefined,"title" in locals_for_with?locals_for_with.title:typeof title!=="undefined"?title:undefined));;return pug_html;} pug_html = pug_html + "\u003C\u002Ful\u003E\u003C\u002Fdiv\u003E\u003C\u002Fdiv\u003E";
};
pug_mixins["modal"](modal);}.call(this,"errors" in locals_for_with?locals_for_with.errors:typeof errors!=="undefined"?errors:undefined,"messages" in locals_for_with?locals_for_with.messages:typeof messages!=="undefined"?messages:undefined,"modal" in locals_for_with?locals_for_with.modal:typeof modal!=="undefined"?modal:undefined));;return pug_html;}

@ -39,11 +39,15 @@ window.addEventListener('DOMContentLoaded', () => {
window.location.hash = json.postId; window.location.hash = json.postId;
} }
form.reset(); //reset form on success form.reset(); //reset form on success
if (form.getElementsByTagName('img').length > 0) {
//TODO: refresh captcha here
}
} else { } else {
//not 200 status, so some error/failed post, wrong captcha, etc //not 200 status, so some error/failed post, wrong captcha, etc
if (json) { if (json) {
console.log(json);
//show modal when possible //show modal when possible
const modalHtml = modal(json); const modalHtml = modal({ modal: json });
document.body.insertAdjacentHTML('afterbegin', modalHtml); document.body.insertAdjacentHTML('afterbegin', modalHtml);
document.getElementById('modalclose').onclick = () => { document.getElementById('modalclose').onclick = () => {
document.getElementsByClassName('modal')[0].remove(); document.getElementsByClassName('modal')[0].remove();

@ -148,7 +148,7 @@ function scripts() {
} }
gulp.src(`${paths.scripts.src}/*.js`) gulp.src(`${paths.scripts.src}/*.js`)
.pipe(concat('all.js')) .pipe(concat('all.js'))
// .pipe(uglify()) .pipe(uglify())
.pipe(gulp.dest(paths.scripts.dest)); .pipe(gulp.dest(paths.scripts.dest));
return gulp.src(`${paths.scripts.src}/*.js`) return gulp.src(`${paths.scripts.src}/*.js`)
.pipe(uglify()) .pipe(uglify())

@ -3,6 +3,12 @@
module.exports = (req, res, code, page, data) => { module.exports = (req, res, code, page, data) => {
res.status(code); res.status(code);
if (req.headers['x-using-xhr'] != null) { if (req.headers['x-using-xhr'] != null) {
if (data.messages) {
data.message = data.messages.join('\n');
}
if (data.errors) {
data.message = data.errors.join('\n');
}
return res.json(data); return res.json(data);
} else { } else {
return res.render(page, data); return res.render(page, data);

@ -1,17 +1,2 @@
.modal-bg include ../mixins/modal.pug
.modal +modal(modal)
.row
p.bold #{title}
a.close.postform-style#modalclose X
.row
ul.nomarks
if message
li #{message}
else if error
li #{error}
else if messages
each msg in messages
li #{msg}
else if errors
each err in errors
li #{err}

@ -0,0 +1,19 @@
mixin modal(data)
.modal-bg
.modal
.row
p.bold #{data.title}
a.close.postform-style#modalclose X
.row
ul.nomarks
if data.message
li #{data.message}
if data.error
li #{data.error}
if messages
each msg in data.messages
li #{msg}
if errors
each error in data.errors
li #{error}
Loading…
Cancel
Save