#1080 Menu permissions
This commit is contained in:
parent
cea6885293
commit
50e2f0730e
@ -41,11 +41,16 @@ class DmsfContextMenusController < ApplicationController
|
|||||||
@unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) &&
|
@unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) &&
|
||||||
User.current.allowed_to?(:force_file_unlock, @project)
|
User.current.allowed_to?(:force_file_unlock, @project)
|
||||||
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
||||||
elsif @dmsf_link
|
elsif @dmsf_link # url link
|
||||||
|
@locked = false
|
||||||
|
@unlockable = false
|
||||||
@allowed = User.current.allowed_to? :file_manipulation, @project
|
@allowed = User.current.allowed_to? :file_manipulation, @project
|
||||||
else
|
@email_allowed = false
|
||||||
@allowed = User.current.allowed_to?(:folder_manipulation, @project) &&
|
else # multiple selection
|
||||||
User.current.allowed_to?(:file_delete, @project)
|
@locked = false
|
||||||
|
@unlockable = false
|
||||||
|
@allowed = User.current.allowed_to?(:file_manipulation, @project) &&
|
||||||
|
User.current.allowed_to?(:folder_manipulation, @project)
|
||||||
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
||||||
end
|
end
|
||||||
render layout: false
|
render layout: false
|
||||||
@ -58,13 +63,16 @@ class DmsfContextMenusController < ApplicationController
|
|||||||
@allowed_restore = User.current.allowed_to? :file_manipulation, @project
|
@allowed_restore = User.current.allowed_to? :file_manipulation, @project
|
||||||
@allowed_delete = User.current.allowed_to? :file_delete, @project
|
@allowed_delete = User.current.allowed_to? :file_delete, @project
|
||||||
elsif @dmsf_folder
|
elsif @dmsf_folder
|
||||||
@allowed = User.current.allowed_to?(:folder_manipulation, @project)
|
@allowed_restore = User.current.allowed_to? :folder_manipulation, @project
|
||||||
elsif @dmsf_link
|
@allowed_delete = @allowed_restore
|
||||||
|
elsif @dmsf_link # url link
|
||||||
@allowed_restore = User.current.allowed_to? :file_manipulation, @project
|
@allowed_restore = User.current.allowed_to? :file_manipulation, @project
|
||||||
@allowed_delete = User.current.allowed_to? :file_delete, @project
|
@allowed_delete = User.current.allowed_to? :file_delete, @project
|
||||||
else
|
else # multiple selection
|
||||||
@allowed = User.current.allowed_to?(:folder_manipulation, @project) &&
|
@allowed_restore = User.current.allowed_to?(:file_manipulation, @project) &&
|
||||||
User.current.allowed_to?(:file_manipulation, @project)
|
User.current.allowed_to?(:folder_manipulation, @project)
|
||||||
|
@allowed_delete = User.current.allowed_to?(:file_delete, @project) &&
|
||||||
|
User.current.allowed_to?(:folder_manipulation, @project)
|
||||||
end
|
end
|
||||||
render layout: false
|
render layout: false
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
@ -87,7 +95,7 @@ class DmsfContextMenusController < ApplicationController
|
|||||||
@dmsf_file = DmsfFile.find_by(id: $1)
|
@dmsf_file = DmsfFile.find_by(id: $1)
|
||||||
elsif params[:ids][0] =~ /(file|url)-link-(\d+)/
|
elsif params[:ids][0] =~ /(file|url)-link-(\d+)/
|
||||||
@dmsf_link = DmsfLink.find_by(id: $2)
|
@dmsf_link = DmsfLink.find_by(id: $2)
|
||||||
@dmsf_file = DmsfFile.find_by(id: @dmsf_link.target_id) if @dmsf_link && @dmsf_link.target_type != 'DmsfUrl'
|
@dmsf_file = DmsfFile.find_by(id: @dmsf_link.target_id) if @dmsf_link && (@dmsf_link.target_type != 'DmsfUrl')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -105,7 +105,6 @@ class DmsfController < ApplicationController
|
|||||||
format.html {
|
format.html {
|
||||||
@dmsf_count = @query.dmsf_count
|
@dmsf_count = @query.dmsf_count
|
||||||
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
|
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
|
||||||
#@dmsf_nodes = @query.dmsf_nodes(offset: @dmsf_pages.offset, limit: @dmsf_pages.per_page)
|
|
||||||
render layout: !request.xhr?
|
render layout: !request.xhr?
|
||||||
}
|
}
|
||||||
format.api
|
format.api
|
||||||
@ -151,7 +150,6 @@ class DmsfController < ApplicationController
|
|||||||
format.html {
|
format.html {
|
||||||
@dmsf_count = @query.dmsf_count
|
@dmsf_count = @query.dmsf_count
|
||||||
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
|
@dmsf_pages = Paginator.new @dmsf_count, per_page_option, params['page']
|
||||||
#@dmsf_nodes = @query.dmsf_nodes(offset: @dmsf_pages.offset, limit: @dmsf_pages.per_page)
|
|
||||||
render layout: !request.xhr?
|
render layout: !request.xhr?
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|||||||
@ -576,24 +576,36 @@ class DmsfFolder < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def css_classes
|
def css_classes(trash)
|
||||||
classes = %w(dmsf_tree)
|
classes = []
|
||||||
if type == 'folder'
|
if trash
|
||||||
classes << 'dmsf_collapsed'
|
if title =~ /^\./
|
||||||
classes << 'dmsf-not-loaded'
|
classes << 'dmsf_system'
|
||||||
else
|
else
|
||||||
classes << 'dmsf_child'
|
classes << 'hascontextmenu'
|
||||||
end
|
if type =~ /link$/
|
||||||
if title =~ /^\./
|
classes << 'dmsf_gray'
|
||||||
classes << 'dmsf_system'
|
end
|
||||||
else
|
|
||||||
classes << 'hascontextmenu'
|
|
||||||
classes << 'dmsf-draggable'
|
|
||||||
if type =~ /^folder/
|
|
||||||
classes << 'dmsf-droppable'
|
|
||||||
end
|
end
|
||||||
if type =~ /link$/
|
else
|
||||||
classes << 'dmsf_gray'
|
classes << 'dmsf_tree'
|
||||||
|
if type == 'folder'
|
||||||
|
classes << 'dmsf_collapsed'
|
||||||
|
classes << 'dmsf-not-loaded'
|
||||||
|
else
|
||||||
|
classes << 'dmsf_child'
|
||||||
|
end
|
||||||
|
if title =~ /^\./
|
||||||
|
classes << 'dmsf_system'
|
||||||
|
else
|
||||||
|
classes << 'hascontextmenu'
|
||||||
|
classes << 'dmsf-draggable'
|
||||||
|
if type =~ /^folder/
|
||||||
|
classes << 'dmsf-droppable'
|
||||||
|
end
|
||||||
|
if type =~ /link$/
|
||||||
|
classes << 'dmsf_gray'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
classes.join(' ')
|
classes.join(' ')
|
||||||
|
|||||||
@ -202,7 +202,7 @@ class DmsfQuery < Query
|
|||||||
end
|
end
|
||||||
scope = DmsfLink.
|
scope = DmsfLink.
|
||||||
select(%{
|
select(%{
|
||||||
dmsf_folders.id AS id,
|
dmsf_links.id AS id,
|
||||||
COALESCE(dmsf_folders.project_id, dmsf_links.project_id) AS project_id,
|
COALESCE(dmsf_folders.project_id, dmsf_links.project_id) AS project_id,
|
||||||
NULL AS revision_id,
|
NULL AS revision_id,
|
||||||
dmsf_links.name AS title,
|
dmsf_links.name AS title,
|
||||||
@ -270,7 +270,7 @@ class DmsfQuery < Query
|
|||||||
end
|
end
|
||||||
scope = DmsfLink.
|
scope = DmsfLink.
|
||||||
select(%{
|
select(%{
|
||||||
dmsf_files.id AS id,
|
dmsf_links.id AS id,
|
||||||
dmsf_files.project_id AS project_id,
|
dmsf_files.project_id AS project_id,
|
||||||
dmsf_file_revisions.id AS revision_id,
|
dmsf_file_revisions.id AS revision_id,
|
||||||
dmsf_links.name AS title,
|
dmsf_links.name AS title,
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<% query.dmsf_nodes.each do |node| %>
|
<% query.dmsf_nodes.each do |node| %>
|
||||||
<% system = node.title =~ /^\./ %>
|
<% system = node.title =~ /^\./ %>
|
||||||
<% @idnt ||= 0 %>
|
<% @idnt ||= 0 %>
|
||||||
<tr id="<%= node.id %>span" class="<%= cycle('odd', 'even') %> <%= node.css_classes %> <%= params[:classes] %> <%= @idnt > 0 ? "idnt idnt-#{@idnt}" : nil %>">
|
<tr id="<%= node.id %>span" class="<%= cycle('odd', 'even') %> <%= node.css_classes(query.deleted) %> <%= params[:classes] %> <%= @idnt > 0 ? "idnt idnt-#{@idnt}" : nil %>">
|
||||||
<td class="checkbox hide-when-print">
|
<td class="checkbox hide-when-print">
|
||||||
<%= check_box_tag('ids[]', "#{node.type}-#{node.id}", false, id: nil) unless system %>
|
<%= check_box_tag('ids[]', "#{node.type}-#{node.id}", false, id: nil) unless system %>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -22,10 +22,10 @@
|
|||||||
|
|
||||||
<li>
|
<li>
|
||||||
<%= context_menu_link l(:title_restore), entries_operations_dmsf_path(id: project, folder_id: folder,
|
<%= context_menu_link l(:title_restore), entries_operations_dmsf_path(id: project, folder_id: folder,
|
||||||
ids: params[:ids], restore_entries: true), method: :post, class: 'icon icon-cancel', disabled: !allowed %>
|
ids: params[:ids], restore_entries: true), method: :post, class: 'icon icon-cancel', disabled: !allowed_restore %>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<%= context_menu_link l(:button_delete), entries_operations_dmsf_path(id: project, folder_id: folder,
|
<%= context_menu_link l(:button_delete), entries_operations_dmsf_path(id: project, folder_id: folder,
|
||||||
ids: params[:ids], destroy_entries: true), method: :post, class: 'icon icon-del',
|
ids: params[:ids], destroy_entries: true), method: :post, class: 'icon icon-del',
|
||||||
data: { confirm: l(:text_are_you_sure) }, id: 'dmsf-cm-delete', disabled: !allowed %>
|
data: { confirm: l(:text_are_you_sure) }, id: 'dmsf-cm-delete', disabled: !allowed_delete %>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -29,7 +29,8 @@
|
|||||||
<%= render(partial: 'folder_trash', locals: { project: @project, folder: @folder, dmsf_folder: @dmsf_folder,
|
<%= render(partial: 'folder_trash', locals: { project: @project, folder: @folder, dmsf_folder: @dmsf_folder,
|
||||||
dmsf_link: @dmsf_link, allowed: @allowed }) %>
|
dmsf_link: @dmsf_link, allowed: @allowed }) %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render(partial: 'multiple_trash', locals: { project: @project, folder: @folder, allowed: @allowed }) %>
|
<%= render(partial: 'multiple_trash', locals: { project: @project, folder: @folder, allowed_delete: @allowed_delete,
|
||||||
|
allowed_restore: @allowed_restore }) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<%= late_javascript_tag do %>
|
<%= late_javascript_tag do %>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user