mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
add CTA for project members modal SCI-5645
This commit is contained in:
parent
37f3f41d06
commit
3333241c9a
24
app/controllers/access_permissions/projects_controller.rb
Normal file
24
app/controllers/access_permissions/projects_controller.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AccessPermissions
|
||||
class ProjectsController < ApplicationController
|
||||
before_action :set_project
|
||||
before_action :check_manage_permissions
|
||||
|
||||
def edit
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_project
|
||||
@project = Project.find_by(id: params[:id])
|
||||
|
||||
render_404 unless @project
|
||||
end
|
||||
|
||||
def check_manage_permissions
|
||||
render_403 unless can_manage_project?(@project)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -59,6 +59,8 @@ class Project < ApplicationRecord
|
|||
|
||||
scope :templates, -> { where(template: true) }
|
||||
|
||||
after_create :assign_project_ownership
|
||||
|
||||
def self.visible_from_user_by_name(user, team, name)
|
||||
projects = where(team: team).distinct
|
||||
if user.is_admin_of_team?(team)
|
||||
|
@ -360,4 +362,12 @@ class Project < ApplicationRecord
|
|||
def remove_project_folder
|
||||
self.project_folder = nil if archived?
|
||||
end
|
||||
|
||||
def assign_project_ownership
|
||||
UserAssignment.create(
|
||||
user: created_by,
|
||||
assignable: self,
|
||||
user_role: UserRole.owner_role
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
24
app/views/access_permissions/projects/edit.html.erb
Normal file
24
app/views/access_permissions/projects/edit.html.erb
Normal file
|
@ -0,0 +1,24 @@
|
|||
<div class="modal fade"
|
||||
tabindex="-1"
|
||||
role="dialog">
|
||||
|
||||
<%= bootstrap_form_tag(url: access_permissions_project_path(@project), remote: true) do |f| %>
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title"><%=t 'zip_export.modal_label' %></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div><%=t('zip_export.repository_header_html', repository: repository.name) %></div>
|
||||
<div class="custom-alert-info"><%=t 'zip_export.files_alert' %></div>
|
||||
<div><%=t 'zip_export.repository_footer_html' %></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type='button' class='btn btn-default' data-dismiss='modal' id='close-modal-export-repositories'><%= t('general.cancel')%></button>
|
||||
<%= f.submit t('my_modules.repository.export'), id: "export-repositories", class: "btn btn-success" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
|
@ -48,6 +48,18 @@
|
|||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<!-- Project members access -->
|
||||
<% if can_read_project?(project) %>
|
||||
<li class="form-dropdown-item">
|
||||
<%= button_to access_permissions_project_path(project, format: :json),
|
||||
method: :put,
|
||||
remote: true,
|
||||
class: 'btn btn-light' do %>
|
||||
<span class="fas fa-plus"></span>
|
||||
<%= I18n.t('projects.index.project_members_access') %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<!-- Show comments -->
|
||||
<li>
|
||||
<a href="#"
|
||||
|
|
|
@ -372,6 +372,7 @@ en:
|
|||
archive_option: "Archive"
|
||||
archive_confirm: "Are you sure you want to archive this project?"
|
||||
restore_option: "Restore"
|
||||
project_members_access: "Project members access"
|
||||
comments_option: "Show commments (%{comments_count})"
|
||||
activities_option: "Open activities"
|
||||
comment_placeholder: "Your Message"
|
||||
|
|
|
@ -227,6 +227,10 @@ Rails.application.routes.draw do
|
|||
resource :recent_works, module: 'dashboard', only: [:show]
|
||||
end
|
||||
|
||||
namespace :access_permissions do
|
||||
resources :projects, only: [:edit, :update, :destroy]
|
||||
end
|
||||
|
||||
resources :projects, except: [:destroy] do
|
||||
resources :user_projects, path: '/users', only: %i(create index update destroy), as: :users do
|
||||
collection do
|
||||
|
|
|
@ -78,4 +78,16 @@ describe Project, type: :model do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'after create hooks' do
|
||||
it 'grands owner permissions to project creator' do
|
||||
user = create(:user)
|
||||
project.created_by = user
|
||||
expect {
|
||||
project.save
|
||||
}.to change(UserAssignment, :count).by(1)
|
||||
user_role = project.reload.user_assignments.first.user_role
|
||||
expect(user_role.name).to eq 'Owner'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue