From 87da9185ff3b973afd0676ed375e7aa98a0fb233 Mon Sep 17 00:00:00 2001
From: Douwe Maan <douwe@gitlab.com>
Date: Wed, 25 Feb 2015 12:22:05 +0100
Subject: [PATCH] Autosave title and description of new issues/MRs.

---
 app/assets/javascripts/dispatcher.js.coffee   |  4 +++
 .../javascripts/issuable_form.js.coffee       | 28 +++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 app/assets/javascripts/issuable_form.js.coffee

diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index ed1bdd6ca3..591a3749a9 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -33,12 +33,16 @@ class Dispatcher
         shortcut_handler = new ShortcutsNavigation()
         new ZenMode()
         new DropzoneInput($('.issue-form'))
+        if page == 'projects:issues:new'
+          new IssuableForm($('.issue-form'))
       when 'projects:merge_requests:new', 'projects:merge_requests:edit'
         GitLab.GfmAutoComplete.setup()
         new Diff()
         shortcut_handler = new ShortcutsNavigation()
         new ZenMode()
         new DropzoneInput($('.merge-request-form'))
+        if page == 'projects:merge_requests:new'
+          new IssuableForm($('.merge-request-form'))
       when 'projects:merge_requests:show'
         new Diff()
         shortcut_handler = new ShortcutsIssueable()
diff --git a/app/assets/javascripts/issuable_form.js.coffee b/app/assets/javascripts/issuable_form.js.coffee
new file mode 100644
index 0000000000..abd58bcf97
--- /dev/null
+++ b/app/assets/javascripts/issuable_form.js.coffee
@@ -0,0 +1,28 @@
+class @IssuableForm
+  constructor: (@form) ->
+    @titleField       = @form.find("input[name*='[title]']")
+    @descriptionField = @form.find("textarea[name*='[description]']")
+
+    return unless @titleField.length && @descriptionField.length
+
+    @initAutosave()
+
+    @form.on "submit", @resetAutosave
+    @form.on "click", ".btn-cancel", @resetAutosave
+
+  initAutosave: ->
+    new Autosave @titleField, [
+      document.location.pathname,
+      document.location.search,
+      "title"
+    ]
+
+    new Autosave @descriptionField, [
+      document.location.pathname,
+      document.location.search,
+      "description"
+    ]
+
+  resetAutosave: =>
+    @titleField.data("autosave").reset()
+    @descriptionField.data("autosave").reset()
-- 
2.30.9