diff --git a/app/controllers/drafts_controller.rb b/app/controllers/drafts_controller.rb index 0a251a6..c0bf29c 100644 --- a/app/controllers/drafts_controller.rb +++ b/app/controllers/drafts_controller.rb @@ -1,5 +1,5 @@ class DraftsController < ApplicationController - + before_action :require_login def autosave @@ -10,7 +10,8 @@ def autosave params[:notes] = params[:issue][:notes] if params[:notes].blank? params[:issue][:notes] = params[:notes] if params[:issue][:notes].blank? #decide whether the record should be saved - has_to_be_saved = !params[:notes].blank? + has_to_be_saved = params[:force] === "true" + has_to_be_saved ||= !params[:notes].blank? has_to_be_saved ||= (params[:issue_id].to_i == 0 && !params[:issue][:subject].blank?) #if so, save it! if request.xhr? && has_to_be_saved @@ -38,7 +39,7 @@ def restore redirect_to({:controller => "issues", :action => "edit", :id => @draft.element_id, :draft_id => @draft}) end end - + def destroy @draft = Draft.find_by_id(params[:id]) @draft.destroy if @draft.present? diff --git a/app/overrides/issues/_edit.rb b/app/overrides/issues/_edit.rb new file mode 100644 index 0000000..971235d --- /dev/null +++ b/app/overrides/issues/_edit.rb @@ -0,0 +1,4 @@ +Deface::Override.new :virtual_path => 'issues/_edit', + :name => 'add-save-draft-button-in-issue-form', + :insert_after => 'div.box', + :partial => "drafts/save_draft_button" diff --git a/app/overrides/issues/_new.rb b/app/overrides/issues/_new.rb index b327ced..eb40605 100644 --- a/app/overrides/issues/_new.rb +++ b/app/overrides/issues/_new.rb @@ -2,3 +2,8 @@ :name => 'add-drafts-action-in-new-issue-form', :insert_after => '#watchers_form_container', :partial => "drafts/issue_new" + +Deface::Override.new :virtual_path => 'issues/new', + :name => 'add-save-draft-button-in-new-issue-form', + :insert_after => 'div.box.tabular', + :partial => "drafts/save_draft_button" diff --git a/app/views/drafts/_issue_form.html.erb b/app/views/drafts/_issue_form.html.erb index 26230c0..f377a1c 100644 --- a/app/views/drafts/_issue_form.html.erb +++ b/app/views/drafts/_issue_form.html.erb @@ -7,16 +7,25 @@ $(function() { //ensure draft status div is at the bottom of the fieldset $("#draft-status").appendTo($("#draft-status").closest("fieldset")) - //observe changed on the form - $("#issue-form").observe(60, function() { + + function saveDraft(force = false) { $.ajax({ url: "<%= autosave_drafts_path(:issue_id => @issue.id) %>", dataType: "script", type: "PUT", - data: $(this).serialize(), + data: $("#issue-form").serialize() + "&force=" + force, global: false //no 'loading...' tooltip - }) - }) + }); + } + + //observe changed on the form + $("#issue-form").observe(60, saveDraft); + + // Handle save draft button + $(".save-draft-button").on("click", (e)=>{ + e.preventDefault(); + saveDraft(true); + }); }) <% end %> diff --git a/app/views/drafts/_save_draft_button.html.erb b/app/views/drafts/_save_draft_button.html.erb new file mode 100644 index 0000000..f20d49c --- /dev/null +++ b/app/views/drafts/_save_draft_button.html.erb @@ -0,0 +1,3 @@ +<% if User.current.logged? %> + +<% end %> \ No newline at end of file diff --git a/assets/stylesheets/drafts.css b/assets/stylesheets/drafts.css index 27c0f34..af14269 100644 --- a/assets/stylesheets/drafts.css +++ b/assets/stylesheets/drafts.css @@ -1 +1,13 @@ #draft-status, #draft-pending { padding:5px; color:#900; text-align:center; } +button.save-draft-button { + height: 28px; + cursor: pointer; + background-color: #fff; + transition: background-color 100ms linear; + padding-left: 25px; + background-position: 5px 50%; +} + +button.save-draft-button:hover { + background-color: #ddd; +} \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index b70b170..9b56ba6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4,3 +4,4 @@ en: label_draft_pending: "Draft pending, saved %{time} ago : %{restore} or %{delete}" label_draft_restore: "restore" label_draft_delete: "delete" + label_save_draft: "Save draft" diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 1c17b87..2615dae 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -3,4 +3,5 @@ ja: label_draft_saved_time: "ドラフトは %{value} に保存されました。" label_draft_pending: "%{time}前に保存されたドラフトがあります。 : %{restore} or %{delete}" label_draft_restore: "復旧" - label_draft_delete: "削除" \ No newline at end of file + label_draft_delete: "削除" + label_save_draft: "ドラフトを保存"