Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions app/controllers/drafts_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class DraftsController < ApplicationController

before_action :require_login

def autosave
Expand All @@ -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
Expand Down Expand Up @@ -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?
Expand Down
4 changes: 4 additions & 0 deletions app/overrides/issues/_edit.rb
Original file line number Diff line number Diff line change
@@ -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"
5 changes: 5 additions & 0 deletions app/overrides/issues/_new.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
19 changes: 14 additions & 5 deletions app/views/drafts/_issue_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
})
</script>
<% end %>
Expand Down
3 changes: 3 additions & 0 deletions app/views/drafts/_save_draft_button.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<% if User.current.logged? %>
<button class="icon icon-save save-draft-button" type="button"><%= I18n.t("label_save_draft") %></button>
<% end %>
12 changes: 12 additions & 0 deletions assets/stylesheets/drafts.css
Original file line number Diff line number Diff line change
@@ -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;
}
1 change: 1 addition & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
3 changes: 2 additions & 1 deletion config/locales/ja.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ ja:
label_draft_saved_time: "ドラフトは %{value} に保存されました。"
label_draft_pending: "%{time}前に保存されたドラフトがあります。 : %{restore} or %{delete}"
label_draft_restore: "復旧"
label_draft_delete: "削除"
label_draft_delete: "削除"
label_save_draft: "ドラフトを保存"