Commit 348653bc authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

ProjectGroupLink access level

Now you can specify max access level for shared projects
parent a48fffc4
...@@ -18,6 +18,7 @@ class Projects::GroupLinksController < Projects::ApplicationController ...@@ -18,6 +18,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
def create def create
link = project.project_group_links.new link = project.project_group_links.new
link.group_id = params[:group_id] link.group_id = params[:group_id]
link.group_access = params[:group_access]
link.save link.save
redirect_to project_group_links_path(project) redirect_to project_group_links_path(project)
......
...@@ -25,4 +25,12 @@ class ProjectGroupLink < ActiveRecord::Base ...@@ -25,4 +25,12 @@ class ProjectGroupLink < ActiveRecord::Base
"Master" => MASTER "Master" => MASTER
} }
end end
def self.default_access
DEVELOPER
end
def human_access
self.class.access_options.key(self.group_access)
end
end end
...@@ -114,15 +114,27 @@ class ProjectTeam ...@@ -114,15 +114,27 @@ class ProjectTeam
invited_members = [] invited_members = []
if project.invited_groups.any? if project.invited_groups.any?
project.invited_groups.each do |invited_group| project.project_group_links.each do |group_link|
invited_group = group_link.group
im = invited_group.users_groups im = invited_group.users_groups
if level if level
if level == :masters int_level = UsersGroup.group_access_roles[level.to_s.singularize.titleize]
im = im.owners + im.masters
# Skip group members if we ask for masters
# but max group access is developers
next if int_level > group_link.group_access
# If we ask for developers and max
# group access is developers we need to provide
# both group master, developers as devs
if int_level == group_link.group_access
im.where("group_access >= ?)", group_link.group_access)
else else
im = im.send(level) im.send(level)
end end
end end
invited_members << im invited_members << im
end end
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
= link_to group do = link_to group do
%i.icon-folder-open %i.icon-folder-open
= group.name = group.name
%small.light up to Masters %small.light up to #{group_link.human_access}
.span5.available-groups .span5.available-groups
%h4 %h4
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
%li %li
.pull-right .pull-right
= form_tag project_group_links_path(@project), method: :post do = form_tag project_group_links_path(@project), method: :post do
= select_tag :group_access, options_for_select(ProjectGroupLink.access_options, ProjectGroupLink::MASTER), class: "span2" = select_tag :group_access, options_for_select(ProjectGroupLink.access_options, ProjectGroupLink.default_access), class: "span2"
= hidden_field_tag :group_id, group.id = hidden_field_tag :group_id, group.id
= submit_tag "Share", class: "btn btn-small" = submit_tag "Share", class: "btn btn-small"
%h4 %h4
......
class AddAccessToProjectGroupLink < ActiveRecord::Migration
def change
add_column :project_group_links, :group_access, :integer, null: false, default: ProjectGroupLink.default_access
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20130812143708) do ActiveRecord::Schema.define(:version => 20130820102832) do
create_table "deploy_keys_projects", :force => true do |t| create_table "deploy_keys_projects", :force => true do |t|
t.integer "deploy_key_id", :null => false t.integer "deploy_key_id", :null => false
...@@ -162,10 +162,11 @@ ActiveRecord::Schema.define(:version => 20130812143708) do ...@@ -162,10 +162,11 @@ ActiveRecord::Schema.define(:version => 20130812143708) do
add_index "notes", ["project_id"], :name => "index_notes_on_project_id" add_index "notes", ["project_id"], :name => "index_notes_on_project_id"
create_table "project_group_links", :force => true do |t| create_table "project_group_links", :force => true do |t|
t.integer "project_id", :null => false t.integer "project_id", :null => false
t.integer "group_id", :null => false t.integer "group_id", :null => false
t.datetime "created_at", :null => false t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.integer "group_access", :default => 30, :null => false
end end
create_table "projects", :force => true do |t| create_table "projects", :force => true do |t|
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment