diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 460393ba..8d9adedf 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -30,7 +30,7 @@ class ProjectsController < ApplicationController Project.transaction do @project.save! - @project.users_projects.create!(:admin => true, :read => true, :write => true, :user => current_user) + @project.users_projects.create!(:repo_access => Repository::REPO_RW , :project_access => Project::PROJECT_RWA, :user => current_user) # when project saved no team member exist so # project repository should be updated after first user add diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index e913754c..cd7a3a81 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -43,18 +43,17 @@ %tr %th Name %th Added - %th Web - %th Git - %th Admin + %th Project Access + %th Repository Access %th - @admin_project.users_projects.each do |tm| %tr - %td= link_to tm.user_name, admin_team_member_path(tm) + %td + = link_to tm.user_name, admin_team_member_path(tm) %td= time_ago_in_words(tm.updated_at) + " ago" - %td= check_box_tag "read", 1, @admin_project.readers.include?(tm.user), :disabled => :disabled - %td= check_box_tag "commit", 1, @admin_project.writers.include?(tm.user), :disabled => :disabled - %td.span-2= check_box_tag "admin", 1, @admin_project.admins.include?(tm.user), :disabled => :disabled + %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled + %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete = link_to 'New Team Member', new_admin_team_member_path(:team_member => {:project_id => @admin_project.id}), :class => "grey-button" diff --git a/app/views/admin/team_members/_form.html.haml b/app/views/admin/team_members/_form.html.haml index 042c84ef..f8e7f104 100644 --- a/app/views/admin/team_members/_form.html.haml +++ b/app/views/admin/team_members/_form.html.haml @@ -17,21 +17,26 @@ = f.select :project_id, Project.all.map { |user| [user.name, user.id] } .span-6 - %b Access: + %b Project Access: .span-6 - = f.check_box :read - Web Access (Browse Repo) + = f.select :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), {}, :class => "project-access-select" + .span-6 - = f.check_box :write - Git Access (User will be added to commiters list) + %b Repository Access: .span-6 - = f.check_box :admin - Admin (Can manage project) + = f.select :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), {}, :class => "repo-access-select" %br .actions = f.submit 'Save', :class => "grey-button" -:javascript - $('select#team_member_user_id').selectmenu({width:300}); - $('select#team_member_project_id').selectmenu({width:300}); +:css + form select { + width:300px; + } + +:javascript + $('select#team_member_user_id').chosen(); + $('select#team_member_project_id').chosen(); + $('select#team_member_repo_access').chosen(); + $('select#team_member_project_access').chosen(); diff --git a/app/views/admin/team_members/index.html.haml b/app/views/admin/team_members/index.html.haml index 0cd87d21..8033e690 100644 --- a/app/views/admin/team_members/index.html.haml +++ b/app/views/admin/team_members/index.html.haml @@ -3,21 +3,21 @@ %table %thead %th Name - %th Email - %th Read - %th Git - %th Manage + %th Project Access + %th Repo Access %th Added %th %th - members.each do |tm| - user = tm.user %tr - %td.span-6= link_to tm.user_name, admin_team_member_path(tm) - %td.span-6= tm.user_email - %td.span-1= check_box_tag "read", 1, project.readers.include?(user), :disabled => :disabled - %td.span-1= check_box_tag "commit", 1, project.writers.include?(user), :disabled => :disabled - %td.span-2= check_box_tag "admin", 1, project.admins.include?(user), :disabled => :disabled + %td.span-6 + = link_to tm.user_name, admin_team_member_path(tm) + %br + %br + = tm.user_email + %td.span-3= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled + %td.span-3= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled %td.span-3= time_ago_in_words(tm.updated_at) + " ago" %td= link_to 'Edit', edit_admin_team_member_path(tm), :id => "edit_#{dom_id(tm)}" %td= link_to 'Destroy', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete diff --git a/app/views/admin/team_members/show.html.haml b/app/views/admin/team_members/show.html.haml index 1555424b..8579b6af 100644 --- a/app/views/admin/team_members/show.html.haml +++ b/app/views/admin/team_members/show.html.haml @@ -11,19 +11,13 @@ #infoblock .span-6 - %b Access: + %b Project Access: + = select_tag :project_access, options_for_select(Project.access_options, @admin_team_member.project_access), :class => "project-access-select", :disabled => true + %br .span-6 - = check_box_tag "read", 1, @admin_team_member.read, :disabled => :disabled - Web Access (Browse Repo) - %br - .span-6 - = check_box_tag "commit", 1, @admin_team_member.write, :disabled => :disabled - Git Access (User will be added to commiters list) - %br - .span-6.append-bottom - = check_box_tag "admin", 1, @admin_team_member.admin, :disabled => :disabled - Admin (Can manage project) + %b Repository Access: + = select_tag :repo_access, options_for_select(Repository.access_options, @admin_team_member.repo_access), :class => "repo-access-select", :disabled => true %br diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml index 2fc2daa7..da8f4370 100644 --- a/app/views/admin/users/show.html.haml +++ b/app/views/admin/users/show.html.haml @@ -51,9 +51,8 @@ %thead %th Name %th Added - %th Web - %th Git - %th Admin + %th Project Access + %th Repository Access %th %th @@ -62,9 +61,8 @@ %tr %td= link_to project.name, admin_project_path(project) %td= time_ago_in_words(tm.updated_at) + " ago" - %td= check_box_tag "read", 1, project.readers.include?(@admin_user), :disabled => :disabled - %td= check_box_tag "commit", 1, project.writers.include?(@admin_usertm), :disabled => :disabled - %td.span-2= check_box_tag "admin", 1, project.admins.include?(@admin_user), :disabled => :disabled + %td= select_tag :project_access, options_for_select(Project.access_options, tm.project_access), :class => "project-access-select", :disabled => :disabled + %td= select_tag :repo_access, options_for_select(Repository.access_options, tm.repo_access), :class => "repo-access-select", :disabled => :disabled %td= link_to 'Edit', edit_admin_team_member_path(tm) %td= link_to 'Cancel', admin_team_member_path(tm), :confirm => 'Are you sure?', :method => :delete diff --git a/app/views/projects/_team.html.haml b/app/views/projects/_team.html.haml index ebf3e9a8..e3d36136 100644 --- a/app/views/projects/_team.html.haml +++ b/app/views/projects/_team.html.haml @@ -14,7 +14,7 @@ :javascript $(function(){ - $('.repo-access-select, .project-access-select').live("change", function() { + $('#team-table .repo-access-select, #team-table .project-access-select').live("change", function() { $(this.form).submit(); }); }) diff --git a/app/views/team_members/_form.html.haml b/app/views/team_members/_form.html.haml index c413485b..786369e3 100644 --- a/app/views/team_members/_form.html.haml +++ b/app/views/team_members/_form.html.haml @@ -10,16 +10,15 @@ .span-6 = f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" }) .span-6 - %b Access: + %b Project Access: .span-6 - = f.check_box :read - Web Access + = f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select" + .span-6 - = f.check_box :write - Git Access - .span-6.append-bottom - = f.check_box :admin - Admin + %b Repository Access: + .span-6 + = f.select :repo_access, options_for_select(Repository.access_options, @team_member.repo_access), {}, :class => "repo-access-select" %br .span-6 = f.submit 'Save', :class => "grey-button" + diff --git a/app/views/team_members/new.js.haml b/app/views/team_members/new.js.haml index af3e99f6..fe1ae1c7 100644 --- a/app/views/team_members/new.js.haml +++ b/app/views/team_members/new.js.haml @@ -12,4 +12,5 @@ modal: true }); - $('select#team_member_user_id').chosen(); + + $('#team_member_new select#team_member_user_id').chosen(); diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index bd3f3934..ce7488db 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -31,9 +31,9 @@ describe Note do describe :read do before do - @p1.users_projects.create(:user => @u1, :read => false) - @p1.users_projects.create(:user => @u2, :read => true) - @p2.users_projects.create(:user => @u3, :read => true) + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_N) + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_R) + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_R) end it { @abilities.allowed?(@u1, :read_note, @p1).should be_false } @@ -43,9 +43,9 @@ describe Note do describe :write do before do - @p1.users_projects.create(:user => @u1, :write => false) - @p1.users_projects.create(:user => @u2, :write => true) - @p2.users_projects.create(:user => @u3, :write => true) + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R) + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RW) + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RW) end it { @abilities.allowed?(@u1, :write_note, @p1).should be_false } @@ -55,9 +55,9 @@ describe Note do describe :admin do before do - @p1.users_projects.create(:user => @u1, :admin => false) - @p1.users_projects.create(:user => @u2, :admin => true) - @p2.users_projects.create(:user => @u3, :admin => true) + @p1.users_projects.create(:user => @u1, :project_access => Project::PROJECT_R) + @p1.users_projects.create(:user => @u2, :project_access => Project::PROJECT_RWA) + @p2.users_projects.create(:user => @u3, :project_access => Project::PROJECT_RWA) end it { @abilities.allowed?(@u1, :admin_note, @p1).should be_false } diff --git a/spec/requests/team_members_spec.rb b/spec/requests/team_members_spec.rb index 3178cd2a..c15ef19c 100644 --- a/spec/requests/team_members_spec.rb +++ b/spec/requests/team_members_spec.rb @@ -32,11 +32,10 @@ describe "TeamMembers" do describe "fill in" do before do page.execute_script("$('#team_member_user_id').show();") - select @user_1.name, :from => "team_member_user_id" - - within "#team_member_new" do - check "team_member_read" - check "team_member_write" + within "#team_member_new" do + select @user_1.name, :from => "team_member_user_id" + select "Report", :from => "team_member_project_access" + select "Pull", :from => "team_member_repo_access" end end @@ -48,20 +47,9 @@ describe "TeamMembers" do page.should have_content @user_1.name - @member.read.should be_true - @member.write.should be_true - @member.admin.should be_false - end - - it "should not allow creation without access selected" do - within "#team_member_new" do - uncheck "team_member_read" - uncheck "team_member_write" - uncheck "team_member_admin" - end - - expect { click_button "Save" }.to_not change {UsersProject.count} - page.should have_content("Please choose at least one Role in the Access list") + @member.reload + @member.project_access.should == Project::PROJECT_RW + @member.repo_access.should == Repository::REPO_R end end end