Nuevo plugin Additionals 2.0.20
This commit is contained in:
parent
a2a901b71b
commit
93e1e28683
354 changed files with 40514 additions and 0 deletions
75
plugins/additionals/app/models/additionals_macro.rb
Executable file
75
plugins/additionals/app/models/additionals_macro.rb
Executable file
|
@ -0,0 +1,75 @@
|
|||
class AdditionalsMacro
|
||||
def self.all(options = {})
|
||||
all = Redmine::WikiFormatting::Macros.available_macros
|
||||
macros = {}
|
||||
macro_list = []
|
||||
|
||||
# needs to run every request (for each user once)
|
||||
permissions = build_permissions(options)
|
||||
|
||||
if options[:filtered].present?
|
||||
options[:filtered] << 'hello_world'
|
||||
else
|
||||
options[:filtered] = ['hello_world']
|
||||
end
|
||||
|
||||
all.each do |macro, macro_options|
|
||||
next if options[:filtered].include?(macro.to_s)
|
||||
next unless macro_allowed(macro, permissions)
|
||||
|
||||
macro_list << macro.to_s
|
||||
macros[macro] = macro_options
|
||||
end
|
||||
|
||||
if options[:only_names]
|
||||
macro_list.sort
|
||||
else
|
||||
macros.sort
|
||||
end
|
||||
end
|
||||
|
||||
def self.macro_allowed(macro, permissions)
|
||||
permissions.each do |permission|
|
||||
next if permission[:list].exclude?(macro)
|
||||
return false unless permission[:access]
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def self.build_permissions(options)
|
||||
gpermission = []
|
||||
macro_permissions.each do |permission|
|
||||
permission[:access] = if options[:controller_only] &&
|
||||
permission[:controller].present? &&
|
||||
options[:controller_only].to_sym != permission[:controller]
|
||||
false
|
||||
else
|
||||
User.current.allowed_to?(permission[:permission], nil, global: true)
|
||||
end
|
||||
gpermission << permission
|
||||
end
|
||||
|
||||
gpermission
|
||||
end
|
||||
|
||||
def self.macro_permissions
|
||||
[{ list: %i[issue issue_name_link],
|
||||
permission: :view_issues },
|
||||
{ list: %i[password password_query password_tag password_tag_count],
|
||||
permission: :view_passwords },
|
||||
{ list: %i[contact deal contact_avatar contact_note contact_plain],
|
||||
permission: :view_contacts },
|
||||
{ list: %i[db db_query db_tag db_tag_count],
|
||||
permission: :view_db_entries },
|
||||
{ list: %i[child_pages calendar last_updated_at last_updated_by lastupdated_at lastupdated_by
|
||||
new_page recently_updated recent comments comment_form tags taggedpages tagcloud
|
||||
show_count count vote show_vote terms_accept terms_reject],
|
||||
permission: :view_wiki_pages,
|
||||
controller: :wiki },
|
||||
{ list: %i[mail send_file],
|
||||
permission: :view_helpdesk_tickets },
|
||||
{ list: %i[kb article_id article category],
|
||||
permission: :view_kb_articles }]
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue