Add functionality to setup share of project with group via project settings
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
ea5f4cae53
commit
746ac56b6f
6 changed files with 79 additions and 0 deletions
|
@ -103,6 +103,8 @@ class Dispatcher
|
|||
new ProjectFork()
|
||||
when 'projects:artifacts:browse'
|
||||
new BuildArtifacts()
|
||||
when 'projects:group_links:index'
|
||||
new GroupsSelect()
|
||||
|
||||
switch path.first()
|
||||
when 'admin'
|
||||
|
|
23
app/controllers/projects/group_links_controller.rb
Normal file
23
app/controllers/projects/group_links_controller.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
class Projects::GroupLinksController < Projects::ApplicationController
|
||||
layout 'project_settings'
|
||||
before_action :authorize_admin_project!
|
||||
|
||||
def index
|
||||
@group_links = project.project_group_links.all
|
||||
end
|
||||
|
||||
def create
|
||||
link = project.project_group_links.new
|
||||
link.group_id = params[:link_group_id]
|
||||
link.group_access = params[:link_group_access]
|
||||
link.save
|
||||
|
||||
redirect_to namespace_project_group_links_path(project.namespace, project)
|
||||
end
|
||||
|
||||
def destroy
|
||||
project.project_group_links.find(params[:id]).destroy
|
||||
|
||||
redirect_to namespace_project_group_links_path(project.namespace, project)
|
||||
end
|
||||
end
|
|
@ -880,6 +880,11 @@ class Project < ActiveRecord::Base
|
|||
jira_tracker? && jira_service.active
|
||||
end
|
||||
|
||||
def allowed_to_share_with_group?
|
||||
# TODO: replace with logic
|
||||
true
|
||||
end
|
||||
|
||||
def ci_commit(sha)
|
||||
ci_commits.find_by(sha: sha)
|
||||
end
|
||||
|
|
|
@ -13,6 +13,12 @@
|
|||
= icon('pencil-square-o fw')
|
||||
%span
|
||||
Project Settings
|
||||
- if @project.allowed_to_share_with_group?
|
||||
= nav_link(controller: :group_links) do
|
||||
= link_to namespace_project_group_links_path(@project.namespace, @project), title: "Groups" do
|
||||
= icon('share-square-o fw')
|
||||
%span
|
||||
Groups
|
||||
= nav_link(controller: :deploy_keys) do
|
||||
= link_to namespace_project_deploy_keys_path(@project.namespace, @project), title: 'Deploy Keys' do
|
||||
= icon('key fw')
|
||||
|
|
41
app/views/projects/group_links/index.html.haml
Normal file
41
app/views/projects/group_links/index.html.haml
Normal file
|
@ -0,0 +1,41 @@
|
|||
- page_title "Groups"
|
||||
%h3.page_title Share project with other groups
|
||||
%p.light
|
||||
Projects can be stored in only one group at once. However you can share a project with other groups here.
|
||||
%hr
|
||||
- if @group_links.present?
|
||||
.enabled-groups.panel.panel-default
|
||||
.panel-heading
|
||||
Already shared with
|
||||
%ul.well-list
|
||||
- @group_links.each do |group_link|
|
||||
- group = group_link.group
|
||||
%li
|
||||
.pull-right
|
||||
= link_to namespace_project_group_link_path(@project.namespace, @project, group_link), method: :delete, class: 'btn btn-sm' do
|
||||
%i.icon-remove
|
||||
disable sharing
|
||||
= link_to group do
|
||||
%strong
|
||||
%i.icon-folder-open
|
||||
= group.name
|
||||
%br
|
||||
.light up to #{group_link.human_access}
|
||||
|
||||
|
||||
.available-groups
|
||||
%h4
|
||||
Can be shared with
|
||||
%div
|
||||
= form_tag namespace_project_group_links_path(@project.namespace, @project), method: :post, class: 'form-horizontal' do
|
||||
.form-group
|
||||
= label_tag :link_group_id, 'Group', class: 'control-label'
|
||||
.col-sm-10
|
||||
= groups_select_tag(:link_group_id, skip_group: @project.group.try(:path))
|
||||
.form-group
|
||||
= label_tag :link_group_access, 'Max access level', class: 'control-label'
|
||||
.col-sm-10
|
||||
= select_tag :link_group_access, options_for_select(ProjectGroupLink.access_options, ProjectGroupLink.default_access), class: "form-control"
|
||||
.form-actions
|
||||
= submit_tag "Share", class: "btn btn-create"
|
||||
|
|
@ -701,6 +701,8 @@ Rails.application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
resources :group_links, only: [:index, :create, :destroy], constraints: { id: /\d+/ }
|
||||
|
||||
resources :notes, only: [:index, :create, :destroy, :update], constraints: { id: /\d+/ } do
|
||||
member do
|
||||
delete :delete_attachment
|
||||
|
|
Loading…
Reference in a new issue