Skip to content

Commit cd15d13

Browse files
author
NdT3Development
committed
goodbye shit code, hello less shit code
1 parent 7953fbc commit cd15d13

File tree

1 file changed

+93
-141
lines changed

1 file changed

+93
-141
lines changed

Diff for: _layouts/post.html

+93-141
Original file line numberOriginal file lineDiff line numberDiff line change
@@ -96,12 +96,7 @@ <h3>Leave a comment</h3>
96
$("#addComments").submit(function (e) {
96
$("#addComments").submit(function (e) {
97
e.preventDefault();
97
e.preventDefault();
98
var post = true;
98
var post = true;
99-
$('[name="email"]').first().removeClass('invalid-form-data');
99+
$('#addComments')[0].reset();
100-
$('[name="name"]').first().removeClass('invalid-form-data');
101-
$('[name="comment"]').first().removeClass('invalid-form-data');
102-
//if (grecaptcha) {
103-
$(".g-recaptcha-comment").first().removeClass('invalid-form-data');
104-
//}
105
var red = "#F66";
100
var red = "#F66";
106
if (!($('[name="email"]')[0].value.match(/^[a-zA-Z0-9-.]+@[a-zA-Z0-9-.]+\.[a-zA-Z]{2,6}$/gi))) {
101
if (!($('[name="email"]')[0].value.match(/^[a-zA-Z0-9-.]+@[a-zA-Z0-9-.]+\.[a-zA-Z]{2,6}$/gi))) {
107
$('[name="email"]').first().addClass('invalid-form-data');
102
$('[name="email"]').first().addClass('invalid-form-data');
@@ -138,8 +133,10 @@ <h3>Leave a comment</h3>
138
} else {
133
} else {
139
$("#comment-form-result")[0].style = "background-color:rgb(48, 48, 48);border-radius:5px;padding:10px;margin-bottom:8px;display:inline-block;color:white;";
134
$("#comment-form-result")[0].style = "background-color:rgb(48, 48, 48);border-radius:5px;padding:10px;margin-bottom:8px;display:inline-block;color:white;";
140
$("#addComments")[0].reset();
135
$("#addComments")[0].reset();
141-
location.hash = '#comments';
136+
setTimeout(function() {
142-
location.reload();
137+
location.hash = '#comments';
138+
location.reload();
139+
}, 500);
143
}
140
}
144
if (grecaptcha) {
141
if (grecaptcha) {
145
grecaptcha.reset();
142
grecaptcha.reset();
@@ -301,6 +298,8 @@ <h5 class="modal-title">Reply</h5>
301
}
298
}
302
}
299
}
303

300

301+
var commentsArray = [];
302+
304
function loadComments(page) {
303
function loadComments(page) {
305

304

306
if (!page) page = 1;
305
if (!page) page = 1;
@@ -317,170 +316,91 @@ <h5 class="modal-title">Reply</h5>
317
var metadata = data.metadata;
316
var metadata = data.metadata;
318
var twcomments = data.data.comments;
317
var twcomments = data.data.comments;
319
var replies = data.data.replies;
318
var replies = data.data.replies;
319+
320+
// Start Preact rewrite
321+
function Comment(props) {
322+
return html`
323+
<div data-comment-id="${props.id}" class="${props.type}">
324+
<table>
325+
<tr>
326+
<td>
327+
<img data-email-hash="${props.email_hash}" src="https://www.gravatar.com/avatar/${props.email_hash}?s=50&d=identicon" class="${props.type}-image" />
328+
</td>
329+
<td>
330+
<div class="${props.type}-name">${props.name}${props.isTrueWinter && (html`<i class=\"the-truewinter fa fa-check-circle\" title=\"This is the real TrueWinter\"></i>`)}</div>
331+
<div class="${props.type}-time">${props.time}
332+
<span class="comment-reply">
333+
<a href="#" class="comment-reply-btn" data-tw-crb-id="${props.id}" data-tw-crb-type="${props.type}">Reply</a>
334+
</span>
335+
</div>
336+
<div class="${props.type}-text">${props.comment}</div>
337+
</td>
338+
</tr>
339+
</table>
340+
${repliesP(props.id)}
341+
</div>
342+
`;
343+
}
320

344

321-
function getReplies(id) {
345+
function repliesP(id) {
322-
var r = [];
346+
323-
for (var i = 0; i < replies.length; i++) {
347+
function getRepliesP(id) {
324-
if(replies[i].in_reply_to === id) {
348+
var r = [];
325-
r.push(replies[i]);
349+
for (var i = 0; i < replies.length; i++) {
350+
if(replies[i].in_reply_to === id) {
351+
r.push(replies[i]);
352+
}
326
}
353
}
354+
return r;
327
}
355
}
328-
return r;
329-
}
330

356

331-
function createCommentElement(comment) {
357+
var repliesArr = [];
332-
// Comment
333-
var e = document.createElement('div');
334-
e.setAttribute('data-comment-id', comment.id);
335-
e.className = 'comment';
336-
var tb = document.createElement('table');
337-
var tr = document.createElement('tr');
338-
var td1 = document.createElement('td');
339-
td1.className = 'image-td';
340-
var td2 = document.createElement('td');
341-
var ei = document.createElement('img');
342-
ei.setAttribute('data-email-hash', comment.email_hash);
343-
ei.src = 'https://www.gravatar.com/avatar/'+comment.email_hash+'?s=50&d=identicon';
344-
ei.className = 'comment-image';
345-
var n = document.createElement('div');
346-
if (comment.isTrueWinter) {
347-
n.innerHTML = comment.name + "<i class=\"the-truewinter fa fa-check-circle\" title=\"This is the real TrueWinter\"></i>";
348-
} else {
349-
n.innerText = comment.name;
350-
}
351-
n.className = 'comment-name';
352-
var t = document.createElement('div');
353-
t.innerText = comment.time;
354-
t.className = 'comment-time';
355-
var cr = document.createElement('span');
356-
cr.className = 'comment-reply';
357-
var crb = document.createElement('a');
358-
crb.href = '#';
359-
crb.innerText = 'Reply';
360-
crb.className = 'comment-reply-btn';
361-
crb.setAttribute('data-tw-crb-id', comment.id);
362-
crb.setAttribute('data-tw-crb-type', 'comment');
363-
crb.onclick = replyForm;
364-
cr.appendChild(crb);
365-
t.appendChild(cr);
366-
var c = document.createElement('div');
367-
c.innerText = comment.comment;
368-
c.className = 'comment-text';
369-
td1.appendChild(ei);
370-
td2.appendChild(n);
371-
td2.appendChild(t);
372-
td2.appendChild(c);
373-
tr.appendChild(td1);
374-
tr.appendChild(td2);
375-
tb.appendChild(tr);
376-
e.appendChild(tb);
377-
378-
document.getElementById('tw-comments').appendChild(e);
379-
380-
addReplies(comment.id);
381-
382-
}
383

358

384-
function addReplies(id) {
359+
function addRepliesP(id) {
385-
var rp = getReplies(id);
360+
var rp = getRepliesP(id);
386-
//console.log(rp);
361+
//console.log(rp);
387-
388-
for (var i = 0; i < rp.length; i++) {
389-
//console.log('reply');
390-
$('[data-comment-id=\''+id+'\']').append(createReplyElement(rp[i]));
391-
392-
addReplies(rp[i].id);
393-
394-
}
395-
}
396

362

397-
function createReplyElement(reply) {
363+
for (var i = 0; i < rp.length; i++) {
398-
var e = document.createElement('div');
364+
repliesArr.push(html`<${Comment} id=${rp[i].id} email_hash=${rp[i].email_hash} name=${rp[i].name} time=${rp[i].time} comment=${rp[i].comment} type="reply" isTrueWinter=${rp[i].isTrueWinter ? true : false} />`);
399-
e.setAttribute('data-comment-id', reply.id);
365+
if (i === rp.length - 1) {
400-
e.setAttribute('data-in-reply-to', reply.in_reply_to);
366+
return repliesArr;
401-
e.className = 'reply';
367+
}
402-
var tb = document.createElement('table');
368+
}
403-
var tr = document.createElement('tr');
404-
var td1 = document.createElement('td');
405-
td1.className = 'image-td';
406-
var td2 = document.createElement('td');
407-
var ei = document.createElement('img');
408-
ei.setAttribute('data-email-hash', reply.email_hash);
409-
ei.src = 'https://www.gravatar.com/avatar/'+reply.email_hash+'?s=50&d=identicon';
410-
ei.className = 'reply-image';
411-
var n = document.createElement('div');
412-
if (reply.isTrueWinter) {
413-
n.innerHTML = reply.name + "<i class=\"the-truewinter fa fa-check-circle\" title=\"This is the real TrueWinter\"></i>";
414-
} else {
415-
n.innerText = reply.name;
416
}
369
}
417-
n.className = 'reply-name';
370+
return addRepliesP(id);
418-
var t = document.createElement('div');
419-
t.innerText = reply.time;
420-
t.className = 'reply-time';
421-
var cr = document.createElement('span');
422-
cr.className = 'comment-reply';
423-
var crb = document.createElement('a');
424-
crb.href = '#';
425-
crb.innerText = 'Reply';
426-
crb.className = 'comment-reply-btn';
427-
crb.setAttribute('data-tw-crb-id', reply.id);
428-
crb.setAttribute('data-tw-crb-type', 'reply');
429-
crb.onclick = replyForm;
430-
cr.appendChild(crb);
431-
t.appendChild(cr);
432-
var c = document.createElement('div');
433-
c.innerText = reply.comment;
434-
c.className = 'reply-text';
435-
td1.appendChild(ei);
436-
td2.appendChild(n);
437-
td2.appendChild(t);
438-
td2.appendChild(c);
439-
tr.appendChild(td1);
440-
tr.appendChild(td2);
441-
tb.appendChild(tr);
442-
e.appendChild(tb);
443-
return e;
444
}
371
}
445

372

373+
const html = htm.bind(preact.h);
374+
446
for (var i = 0; i < twcomments.length; i++) {
375
for (var i = 0; i < twcomments.length; i++) {
447-
//console.log('Comment:');
376+
commentsArray.push(html`<${Comment} id=${twcomments[i].id} email_hash=${twcomments[i].email_hash} name=${twcomments[i].name} time=${twcomments[i].time} comment=${twcomments[i].comment} type="comment" isTrueWinter=${twcomments[i].isTrueWinter ? true : false} />`);
448-
//console.log(comments[i]);
449-
createCommentElement(twcomments[i]);
450-
//console.log('Replies:');
451-
//console.log(getReplies(comments[i].id));
452
}
377
}
378+
379+
preact.render(commentsArray, $('#tw-comments')[0]);
453

380

454
var replyRecaptchaRendered = false;
381
var replyRecaptchaRendered = false;
455

382

456-
function replyForm(e) {
383+
$('.comment-reply-btn').on('click', function(e) {
457
e.preventDefault();
384
e.preventDefault();
458

385

459
$('#replyTextarea').on('keyup', function() {
386
$('#replyTextarea').on('keyup', function() {
460
$('#replyFormCharacterCount').text($('#replyTextarea').val().length);
387
$('#replyFormCharacterCount').text($('#replyTextarea').val().length);
461
});
388
});
462

389

463
$('#replyModal').on('hidden.bs.modal', function (e) {
390
$('#replyModal').on('hidden.bs.modal', function (e) {
464-
$('[name="tw-rf-name"]').val('');
465-
$('[name="tw-rf-email"]').val('');
466-
$('[name="tw-rf-comment"]').val('');
467
$('#tw-reply-form-reply-to').val('');
391
$('#tw-reply-form-reply-to').val('');
468
$('#tw-reply-form-reply-type').val('');
392
$('#tw-reply-form-reply-type').val('');
469
$('#tw-reply-form-reply-post').val('');
393
$('#tw-reply-form-reply-post').val('');
470
$('#tw-reply-form-root-comment').val('');
394
$('#tw-reply-form-root-comment').val('');
395+
$('#comment-reply-form')[0].reset();
471
});
396
});
472

397

473
var replyCaptchaComplete = false;
398
var replyCaptchaComplete = false;
474

399

475
$("#comment-reply-form").submit(function (e) {
400
$("#comment-reply-form").submit(function (e) {
476
e.preventDefault();
401
e.preventDefault();
477
var post = true;
402
var post = true;
478-
$('[name="tw-rf-email"]').first().removeClass('invalid-form-data');
403+
$('#comment-reply-form').find('.invalid-form-data').removeClass('invalid-form-data');
479-
$('[name="tw-rf-name"]').first().removeClass('invalid-form-data');
480-
$('[name="tw-rf-comment"]').first().removeClass('invalid-form-data');
481-
//if (recaptcha) {
482-
$(".g-recaptcha-reply").first().removeClass('invalid-form-data');
483-
//}
484
var red = "#F66";
404
var red = "#F66";
485
if (!($('[name="tw-rf-email"]')[0].value.match(/^[a-zA-Z0-9-.]+@[a-zA-Z0-9-.]+\.[a-zA-Z]{2,24}$/gi))) {
405
if (!($('[name="tw-rf-email"]')[0].value.match(/^[a-zA-Z0-9-.]+@[a-zA-Z0-9-.]+\.[a-zA-Z]{2,24}$/gi))) {
486
$('[name="tw-rf-email"]').first().addClass('invalid-form-data');
406
$('[name="tw-rf-email"]').first().addClass('invalid-form-data');
@@ -573,7 +493,7 @@ <h5 class="modal-title">Reply</h5>
573
replyCaptchaComplete = false;
493
replyCaptchaComplete = false;
574
}
494
}
575
$('#replyModal').modal('show');
495
$('#replyModal').modal('show');
576-
}
496+
});
577

497

578
//console.log(data);
498
//console.log(data);
579

499

@@ -585,7 +505,39 @@ <h5 class="modal-title">Reply</h5>
585
xhr.send();
505
xhr.send();
586
}
506
}
587

507

508+
var preactLoad = false;
509+
var htmLoad = false;
510+
511+
var preactAndHTMLoadedEvent = new Event('preactAndHTMLoadedEvent');
512+
513+
function preactLoaded() {
514+
console.log('Preact loaded');
515+
preactLoad = true;
516+
if (preactLoad && htmLoad) {
517+
window.dispatchEvent(preactAndHTMLoadedEvent);
518+
}
519+
}
520+
function htmLoaded() {
521+
console.log('HTM loaded');
522+
htmLoad = true;
523+
if (preactLoad && htmLoad) {
524+
window.dispatchEvent(preactAndHTMLoadedEvent);
525+
}
526+
}
527+
528+
function loadScript(url, onloadFn) {
529+
var e = document.createElement('script');
530+
e.src = url;
531+
e.onload = onloadFn;
532+
document.body.appendChild(e);
533+
}
534+
588
window.addEventListener('load', function() {
535
window.addEventListener('load', function() {
536+
loadScript('https://cdnjs.cloudflare.com/ajax/libs/preact/10.4.7/preact.min.js', preactLoaded);
537+
loadScript('https://cdnjs.cloudflare.com/ajax/libs/htm/3.0.4/htm.min.js', htmLoaded);
538+
});
539+
540+
window.addEventListener('preactAndHTMLoadedEvent', function() {
589
var commentsLoaded = false;
541
var commentsLoaded = false;
590
function loadCommentsIfInView() {
542
function loadCommentsIfInView() {
591
if (commentsLoaded) return;
543
if (commentsLoaded) return;

0 commit comments

Comments
 (0)