From 09cb8c67cb59a331490fa28cc3b608bfd99c3aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Justin=20Nu=C3=9F?= Date: Fri, 25 Jul 2014 20:56:17 +0200 Subject: [PATCH] Save comment/issue drafts in sessionStorage. --- public/js/app.js | 60 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/public/js/app.js b/public/js/app.js index d7208119b..ef54aaf81 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -520,6 +520,50 @@ function initIssue() { }); }()); + // store unsend text in session storage. + (function() { + var $textArea = $("#issue-content,#issue-reply-content"); + var current = ""; + + if ($textArea == null || !('sessionStorage' in window)) { + return; + } + + var path = location.pathname.split("/"); + var key = "issue-" + path[1] + "-" + path[2] + "-"; + + if (/\/issues\/\d+$/.test(location.pathname)) { + key = key + path[4]; + } else { + key = key + "new"; + } + + if ($textArea.val() !== undefined && $textArea.val() !== "") { + sessionStorage.setItem(key, $textArea.val()); + } else { + $textArea.val(sessionStorage.getItem(key) || ""); + + if ($textArea.attr("id") == "issue-reply-content") { + var $closeBtn = $('#issue-close-btn'); + var $openBtn = $('#issue-open-btn'); + + if ($textArea.val().length) { + $closeBtn.val($closeBtn.data("text")); + $openBtn.val($openBtn.data("text")); + } else { + $closeBtn.val($closeBtn.data("origin")); + $openBtn.val($openBtn.data("origin")); + } + } + } + + $textArea.on("keyup", function() { + if ($textArea.val() !== current) { + sessionStorage.setItem(key, current = $textArea.val()); + } + }); + }()); + // Preview for images. (function() { var $hoverElement = $("
"); @@ -659,8 +703,22 @@ function initIssue() { $button.text("An error encoured!") return; - } + } + + if (!('sessionStorage' in window)) { + return; + } + + var path = location.pathname.split("/"); + var key = "issue-" + path[1] + "-" + path[2] + "-"; + + if (/\/issues\/\d+$/.test(location.pathname)) { + key = key + path[4]; + } else { + key = key + "new"; + } + sessionStorage.removeItem(key); window.location.href = response.data; });