From 43cafcc761bc12f442c30ab952164736aa18f9d8 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sun, 8 Apr 2018 14:18:10 -0400 Subject: Auto-save post and comment entry using localStorage in browser. --- view/js/main.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'view/js') diff --git a/view/js/main.js b/view/js/main.js index e700c4e6e..d09615f3c 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -166,6 +166,12 @@ function handle_comment_form(e) { $('#' + commentElm).addClass('expanded').removeAttr('placeholder'); $('#' + commentElm).attr('tabindex','9'); $('#' + submitElm).attr('tabindex','10'); + + var commentBody = localStorage.getItem("comment_body"); + if(commentBody && $('#' + commentElm).val() === '') { + $('#' + commentElm).val(commentBody); + } + form.find(':not(:visible)').show(); } @@ -185,6 +191,28 @@ function handle_comment_form(e) { form.find(':not(.comment-edit-text)').hide(); } }); + + var commentSaveTimer = null; + var emptyCommentElm = form.find('.comment-edit-text').attr('id'); + $(document).on('focusout','#' + emptyCommentElm,function(e){ + if(commentSaveTimer) + clearTimeout(commentSaveTimer); + commentSaveChanges(true); + commentSaveTimer = null; + }); + + $(document).on('focusin','#' + emptyCommentElm,function(e){ + commentSaveTimer = setTimeout(function () { + commentSaveChanges(false); + },10000); + }); + + function commentSaveChanges(isFinal = false, type) { + localStorage.setItem("comment_body", $('#' + emptyCommentElm).val()); + if( !isFinal) { + commentSaveTimer = setTimeout(commentSaveChanges,10000); + } + } } function commentClose(obj, id) { @@ -1106,6 +1134,7 @@ function post_comment(id) { $("#comment-edit-form-" + id).serialize(), function(data) { if(data.success) { + localStorage.removeItem("comment_body"); $("#comment-edit-preview-" + id).hide(); $("#comment-edit-wrapper-" + id).hide(); $("#comment-edit-text-" + id).val(''); -- cgit v1.2.3 From f9ec3c66ff1305ca0647454d27793ac5365f7f4a Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sun, 8 Apr 2018 19:44:21 -0400 Subject: Added feature setting for auto-save, defaulting to enabled. --- view/js/main.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'view/js') diff --git a/view/js/main.js b/view/js/main.js index d09615f3c..c3c2c850f 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -167,9 +167,13 @@ function handle_comment_form(e) { $('#' + commentElm).attr('tabindex','9'); $('#' + submitElm).attr('tabindex','10'); - var commentBody = localStorage.getItem("comment_body"); - if(commentBody && $('#' + commentElm).val() === '') { - $('#' + commentElm).val(commentBody); + if(auto_save_draft) { + var commentBody = localStorage.getItem("comment_body"); + if(commentBody && $('#' + commentElm).val() === '') { + $('#' + commentElm).val(commentBody); + } + } else { + localStorage.removeItem("comment_body"); } form.find(':not(:visible)').show(); @@ -207,10 +211,12 @@ function handle_comment_form(e) { },10000); }); - function commentSaveChanges(isFinal = false, type) { - localStorage.setItem("comment_body", $('#' + emptyCommentElm).val()); - if( !isFinal) { - commentSaveTimer = setTimeout(commentSaveChanges,10000); + function commentSaveChanges(isFinal = false) { + if(auto_save_draft) { + localStorage.setItem("comment_body", $('#' + emptyCommentElm).val()); + if( !isFinal) { + commentSaveTimer = setTimeout(commentSaveChanges,10000); + } } } } -- cgit v1.2.3