get rid off modal window for issue create/edit

This commit is contained in:
Dmitriy Zaporozhets 2011-11-25 23:40:12 +02:00
parent 16bd018f08
commit 15fa14f1d6
12 changed files with 126 additions and 87 deletions

View file

@ -0,0 +1,32 @@
function switchToNewIssue(form){
$("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){
$(".project-content").append(form);
$('select#issue_assignee_id').chosen();
$("#new_issue_dialog").show("slide", { direction: "right" }, 150);
});
}
function switchToEditIssue(form){
$("#issues-table-holder").hide("slide", { direction: "left" }, 150, function(){
$(".project-content").append(form);
$('select#issue_assignee_id').chosen();
$("#edit_issue_dialog").show("slide", { direction: "right" }, 150);
});
}
function switchFromNewIssue(){
backToIssues();
}
function switchFromEditIssue(){
backToIssues();
}
function backToIssues(){
$("#edit_issue_dialog, #new_issue_dialog").hide("slide", { direction: "right" }, 150, function(){
$("#issues-table-holder").show("slide", { direction: "left" }, 150, function() {
$("#edit_issue_dialog").remove();
$("#new_issue_dialog").remove();
});
});
}

View file

@ -40,3 +40,6 @@
.prepend-top-10 {
margin-top:10px;
}
.no-borders {
border:none;
}

View file

@ -48,3 +48,21 @@
width:100%;
.data p { font-size:16px }
}
#issue_assignee_id {
width:300px;
}
.issue-form-holder .ui-box .data {
margin: 0;
padding: 0;
}
body.project-page .issue-form-holder table.no-borders tr,
body.project-page .issue-form-holder table.no-borders td
{
&:hover {
background:none;
}
}

View file

@ -387,3 +387,10 @@ body.dashboard.project-page .news-feed .project-updates a.project-update span.up
body.project-page .team_member_new .span-6, .team_member_edit .span-6{ padding:10px 0; }
body.projects-page input.text.git-url.project_list_url { width:165px; }
body.project-page table.no-borders tr,
body.project-page table.no-borders td{
border:none;
}

View file

@ -1,24 +1,45 @@
%div
= form_for [@project, @issue], :remote => "true" do |f|
-if @issue.errors.any?
%ul
- @issue.errors.full_messages.each do |msg|
%li= msg
%div.issue-form-holder
.issue-show-holder.ui-box
%h3
= @issue.new_record? ? "New issue" : "Edit Issue ##{@issue.id}"
- unless @issue.new_record?
.right
- if @issue.closed
%span.tag.high Resolved
- else
%span.tag.today Open
= form_for [@project, @issue], :remote => "true" do |f|
.data
%table.no-borders
-if @issue.errors.any?
%tr
%td Errors
%td
#error_explanation
- @issue.errors.full_messages.each do |msg|
%span= msg
%br
.form-row
= f.label :title
= f.text_area :title, :style => "width:450px; height:100px", :maxlength => 255
.form-row
= f.label :assignee_id
= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
.form-row
= f.label :critical, "Critical"
%br
= f.check_box :critical
- unless @issue.new_record?
.form-row
= f.label :closed
%br
= f.check_box :closed
.form-row
= f.submit 'Save', :class => "grey-button"
%tr
%td= f.label :title
%td= f.text_area :title, :style => "width:450px; height:100px", :maxlength => 255
%tr
%td= f.label :assignee_id
%td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
%tr
%td= f.label :critical, "Critical"
%td= f.check_box :critical
- unless @issue.new_record?
%tr
%td= f.label :closed
%td= f.check_box :closed
.buttons
= f.submit 'Save', :class => "grey-button"
.right
- if request.xhr?
= link_to_function "Back", "backToIssues();", :class => "grey-button"
- else
= link_to "Back", [@project, @issue], :class => "grey-button"

View file

@ -1,10 +1,10 @@
- if @issue.valid?
:plain
$("#new_issue_dialog").dialog("close");
switchFromNewIssue();
$("#issues-table").prepend("#{escape_javascript(render(:partial => 'show', :locals => {:issue => @issue} ))}");
$.ajax({type: "GET", url: location.href, dataType: "script"});
- else
:plain
$("#new_issue_dialog").empty();
$("#new_issue_dialog").append("#{escape_javascript(render('form'))}");
$('select#issue_assignee_id').selectmenu({width:300});
$('select#issue_assignee_id').chosen();

View file

@ -1,37 +1,7 @@
%div.issue-form-holder
= form_for [@project, @issue] do |f|
-if @issue.errors.any?
%ul
- @issue.errors.full_messages.each do |msg|
%li= msg
%table
%thead
%th Name
%th Value
%tr
%td= f.label :title
%td= f.text_area :title, :style => "width:450px; height:100px", :maxlength => 255
%tr
%td= f.label :assignee_id
%td= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" })
-#%tr
%td= f.label :branch_name
%td= f.select(:branch_name, @project.heads.map(&:name), { :include_blank => "Select git branch" })
%tr
%td
= f.label :critical, "Critical"
%br
%td= f.check_box :critical
- unless @issue.new_record?
%tr
%td= f.label :closed
%td= f.check_box :closed
= f.submit 'Save', :class => "grey-button"
= render "form"
:javascript
$(function(){
$('select#issue_branch_name').selectmenu({width:300});
$('select#issue_assignee_id').selectmenu({width:300});
$('select#issue_assignee_id').chosen();
});

View file

@ -1,12 +1,5 @@
:plain
var edit_issue_dialog = $("<div id='edit_issue_dialog'></div>");
edit_issue_dialog.html("#{escape_javascript(render('form'))}");
$(edit_issue_dialog).dialog({
width: 500,
resizable: false,
draggable: false,
title: "Issue ##{@issue.id} #{"[CLOSED]" if @issue.closed}",
close: function(event, ui) { $("#edit_issue_dialog").remove();},
modal: true
});
$('select#issue_assignee_id').selectmenu({width:300});
switchToEditIssue(edit_issue_dialog);

View file

@ -0,0 +1,7 @@
= render "form"
:javascript
$(function(){
$('select#issue_assignee_id').chosen();
});

View file

@ -1,12 +1,4 @@
:plain
var new_issue_dialog = $("<div id='new_issue_dialog'></div>");
new_issue_dialog.html("#{escape_javascript(render('form'))}");
$(new_issue_dialog).dialog({
width: 500,
resizable: false,
draggable: false,
title: "Add new issue",
modala: true,
close: function(event, ui) { $("#new_issue_dialog").remove();}
});
$('select#issue_assignee_id').selectmenu({width:300});
switchToNewIssue(new_issue_dialog);

View file

@ -5,10 +5,10 @@
- else
- if @issue.valid?
:plain
$("#edit_issue_dialog").dialog("close");
updatePage();
switchFromEditIssue();
- else
:plain
$("#edit_issue_dialog").empty();
$("#edit_issue_dialog").append("#{escape_javascript(render('form'))}");
$('select#issue_assignee_id').selectmenu({width:300});
$('select#issue_assignee_id').chosen();

View file

@ -95,18 +95,16 @@ describe "Issues" do
click_link "New Issue"
end
it "should open new issue popup" do
page.should have_content("Add new issue")
it "should open new issue form" do
page.should have_content("New issue")
end
describe "fill in" do
describe 'assign to me' do
before do
fill_in "issue_title", :with => "bug 345"
click_link "Select user"
within "#issue_assignee_id-menu" do
click_link @user.name
end
page.execute_script("$('#issue_assignee_id').show();")
select @user.name, :from => "issue_assignee_id"
end
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }
@ -129,10 +127,8 @@ describe "Issues" do
describe 'assign to other' do
before do
fill_in "issue_title", :with => "bug 345"
click_link "Select user"
within "#issue_assignee_id-menu" do
click_link @user2.name
end
page.execute_script("$('#issue_assignee_id').show();")
select @user2.name, :from => "issue_assignee_id"
end
it { expect { click_button "Save" }.to change {Issue.count}.by(1) }