redmine_nonproject_modules 0.2.1 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5376c3a5a50a27ab5825bf4c0d6c6cadc2d672047808792d8b7b2d5b47118443
4
- data.tar.gz: b173b20f273e8236950d0ac67641e40b23a88395ad35a7157828a6c29dddc296
3
+ metadata.gz: c417f99f1a29888b41e9f436899fa571d059b836d596f2f7a27efe8c2f0c8420
4
+ data.tar.gz: ee4051f4b9b220d4e2c50f1e4492604932046d68984ffc79cdc5999763081415
5
5
  SHA512:
6
- metadata.gz: 3b78a4ccfc86da2be65496081ad35730be443faec2b2da9a299ceb4ae8a31e89ede3f94a8b16098484fc5be448b7835179a386c8d494a2201e31173d92ab1446
7
- data.tar.gz: 57bf1adcd605ee92b9d1be876d67c279cee75b90cc49017996c955dd61c81e61a31370958de94db143ac1fdde6b73c2a4152fcc8714aae1edfc90cfb72f1ed47
6
+ metadata.gz: 7a908fabb449db2afddef4909699133656ead7208f38305c7971aef6ac9e6c04e40cec91aaec9bec7789a8007b001eb0bdc3650e4489b5b672ac7ba372728ddb
7
+ data.tar.gz: a92620cf8505e8af7815c597bda645ca9c313595205e99c4ead35c8ca3019125f06aca2e96cd5e65a40015bc6faba03c27b16388f890113311c7b146c1335198
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class GroupMergeController < ApplicationController
2
4
  require_permission 'group_merge'
3
5
  helper GroupMergeHelper
@@ -10,6 +12,7 @@ class GroupMergeController < ApplicationController
10
12
  def check
11
13
  @group_merge = ::GroupMerge.new(check_parameters)
12
14
  return if @group_merge.valid?
15
+
13
16
  build_targets_list
14
17
  render :index
15
18
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class GroupPermissionsController < ApplicationController
2
4
  require_permission 'group_permissions'
3
- before_action :set_group, only: [:show, :update]
5
+ before_action :set_group, only: %i[show update]
4
6
 
5
7
  def index
6
8
  @groups = Group.sorted
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class NonprojectModulesController < ApplicationController
4
+ layout 'nonproject_modules'
5
+
6
+ def index; end
7
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GroupMergeHelper
2
4
  def group_merge_elements_sorted(group_merge)
3
5
  r = group_merge.to_merge_elements.map do |x|
@@ -8,8 +10,8 @@ module GroupMergeHelper
8
10
  r.sort_by { |x| [x[0], x[1]] }
9
11
  end
10
12
 
11
- def group_merge_element_class(x)
12
- "GroupMergeHelper_element_#{x[1]}"
13
+ def group_merge_element_class(element)
14
+ "GroupMergeHelper_element_#{element[1]}"
13
15
  end
14
16
 
15
17
  def group_merge_type_element_label(element)
@@ -21,11 +23,11 @@ module GroupMergeHelper
21
23
  respond_to?(m) ? send(m, element) : element.to_s
22
24
  end
23
25
 
24
- def group_merge_member_element_label(m)
25
- "#{t(:label_project)}: #{m.project} (#{m.roles.to_a.join(', ')})"
26
+ def group_merge_member_element_label(member)
27
+ "#{t(:label_project)}: #{member.project} (#{member.roles.to_a.join(', ')})"
26
28
  end
27
29
 
28
- def group_merge_group_permission_element_label(gp)
29
- gp.permission
30
+ def group_merge_group_permission_element_label(group_permission)
31
+ group_permission.permission
30
32
  end
31
33
  end
@@ -1,10 +1,8 @@
1
- require 'virtus'
1
+ # frozen_string_literal: true
2
2
 
3
- class GroupMerge
4
- include ActiveModel::Model
5
- include Virtus.model
6
- include ActiveModel::Associations
3
+ require 'eac_rails_utils/models/tableless'
7
4
 
5
+ class GroupMerge < ::EacRailsUtils::Models::Tableless
8
6
  ONLY_ON_TARGET = :only_on_target
9
7
  ONLY_ON_SOURCE = :only_on_source
10
8
  ON_BOTH = :on_both
@@ -17,14 +15,6 @@ class GroupMerge
17
15
  validates :source, presence: true
18
16
  validates :target, presence: true
19
17
 
20
- def [](attr)
21
- send(attr)
22
- end
23
-
24
- def []=(attr, value)
25
- send("#{attr}=", value)
26
- end
27
-
28
18
  def to_merge_elements
29
19
  (target_elements + source_elements).uniq.map do |x|
30
20
  [x[0], element_on_status(x)]
@@ -39,16 +29,17 @@ class GroupMerge
39
29
  end
40
30
 
41
31
  def associations_to_merge
42
- [:users, :memberships, :permissions]
32
+ %i[users memberships permissions]
43
33
  end
44
34
 
45
35
  private
46
36
 
47
- def element_on_status(x)
48
- return ON_BOTH if target_elements.include?(x) && source_elements.include?(x)
49
- return ONLY_ON_TARGET if target_elements.include?(x)
50
- return ONLY_ON_SOURCE if source_elements.include?(x)
51
- raise "Element is neither on source nor on target: #{x}"
37
+ def element_on_status(element)
38
+ return ON_BOTH if target_elements.include?(element) && source_elements.include?(element)
39
+ return ONLY_ON_TARGET if target_elements.include?(element)
40
+ return ONLY_ON_SOURCE if source_elements.include?(element)
41
+
42
+ raise "Element is neither on source nor on target: #{element}"
52
43
  end
53
44
 
54
45
  def target_elements
@@ -68,8 +59,8 @@ class GroupMerge
68
59
  end
69
60
 
70
61
  def source_new_elements
71
- source_elements.select do |x|
72
- !target_elements.include?(x)
62
+ source_elements.reject do |x|
63
+ target_elements.include?(x)
73
64
  end
74
65
  end
75
66
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'eac_ruby_utils/simple_cache'
2
4
 
3
5
  class GroupPermission < ActiveRecord::Base
@@ -27,23 +29,26 @@ class GroupPermission < ActiveRecord::Base
27
29
 
28
30
  def permission?(permission, user = false)
29
31
  return permission_by_hash?(permission, user) if permission.is_a?(Hash)
32
+
30
33
  permission(permission).user_has?(user || User.current)
31
34
  end
32
35
 
33
36
  def permission(key)
34
37
  key = key.to_s
35
38
  return permissions_hash[key] if permissions_hash.key?(key)
39
+
36
40
  raise "Not found \"#{key}\" in GroupPermission::permissions"
37
41
  end
38
42
 
39
43
  private
40
44
 
41
45
  def permissions_hash
42
- @permissions ||= {}.with_indifferent_access
46
+ @permissions_hash ||= {}.with_indifferent_access
43
47
  end
44
48
 
45
49
  def permission_by_hash?(hash, user)
46
- raise 'Hasy should have :or parameter' unless hash[:or].present?
50
+ raise 'Hasy should have :or parameter' if hash[:or].blank?
51
+
47
52
  ps = hash[:or].is_a?(Array) ? hash[:or] : [hash[:or]]
48
53
  ps.any? { |p| permission?(p, user) }
49
54
  end
@@ -53,8 +58,8 @@ class GroupPermission < ActiveRecord::Base
53
58
  include ::EacRubyUtils::SimpleCache
54
59
 
55
60
  class << self
56
- def sanitize_key(k)
57
- k.to_s.downcase
61
+ def sanitize_key(key)
62
+ key.to_s.downcase
58
63
  end
59
64
  end
60
65
 
@@ -75,11 +80,13 @@ class GroupPermission < ActiveRecord::Base
75
80
 
76
81
  def user_has?(user)
77
82
  return true if user.admin
83
+
78
84
  GroupPermission.where(group: user_groups(user), permission: depends_recursive.to_a).any?
79
85
  end
80
86
 
81
87
  def depends_recursive(visited = Set.new)
82
88
  return [] if visited.include?(key)
89
+
83
90
  r = Set.new([key])
84
91
  visited << key
85
92
  depends.each do |d|
@@ -96,6 +103,7 @@ class GroupPermission < ActiveRecord::Base
96
103
 
97
104
  def user_groups(user)
98
105
  return [Group.anonymous] if user.anonymous?
106
+
99
107
  [Group.anonymous, Group.non_member] + user.groups
100
108
  end
101
109
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class GroupPermissionsSetup
2
4
  include ActiveModel::Model
3
5
 
@@ -0,0 +1,14 @@
1
+ <% any_available = false %>
2
+ <% ::Redmine::Plugin.registered_plugins.keys.each do |plugin_key| %>
3
+ <% content = render_menu plugin_key %>
4
+ <% if content %>
5
+ <% any_available = true %>
6
+ <div style="margin-bottom: 1.0em">
7
+ <h4><%= t("menu_#{plugin_key}") %></h4>
8
+ <%= content %>
9
+ </div>
10
+ <% end %>
11
+ <% end %>
12
+ <% unless any_available %>
13
+ <p><em><%= t(:none_module_available) %></em></p>
14
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% content_for :sidebar do %>
2
+ <h3><%= t(:label_nonproject_modules) %></h3>
3
+ <%= render partial: 'layouts/nonproject_modules_menu' %>
4
+ <% end %>
5
+ <%= render :file => "layouts/base" %>
@@ -0,0 +1,7 @@
1
+ <h2><%= t(:label_nonproject_modules) %></h2>
2
+ <% if User.current.anonymous? %>
3
+ <p>Faça o <%= link_to('login', signin_path) %> para que o acesso aos módulos
4
+ apareçam à direita.</p>
5
+ <% else %>
6
+ <p>Navegue pelo menu à direita.</p>
7
+ <% end %>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Redmine::Plugin.post_register :redmine_nonproject_modules do
2
4
  # Source: https://github.com/esquilo-azul/redmine_plugins_helper
3
5
  requires_redmine_plugin(:redmine_plugins_helper, version_or_higher: '0.5.2')
@@ -4,7 +4,9 @@ en:
4
4
  in_both_group: In both groups.
5
5
  label_group_permission: Group permission
6
6
  label_group_permission_plural: Groups / Permissions
7
+ label_nonproject_modules: Non-project
7
8
  merge: Merge
9
+ none_module_available: 'No modules available.'
8
10
  group_will_receive_elements: 'The group "%{group}" will receive the following elements:'
9
11
  only_in_group: 'Only in "%{group}".'
10
12
  permission_group_permissions_description: Read/write access to groups' permissions.
@@ -5,7 +5,9 @@ pt-BR:
5
5
  in_both_group: Em ambos os grupos.
6
6
  label_group_permission: Permissão de grupo
7
7
  label_group_permission_plural: Grupos / Permissões
8
+ label_nonproject_modules: Não-projetos
8
9
  merge: Mesclar
10
+ none_module_available: 'Nenhum módulo disponível.'
9
11
  group_will_receive_elements: 'O grupo "%{group}" receberá os seguintes elementos:'
10
12
  only_in_group: 'Somente em "%{group}".'
11
13
  permission_group_permissions_description: Visualização/modificação das
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RedmineApp::Application.routes.draw do
2
- resources(:group_permissions, only: [:index, :show, :update])
4
+ resources(:group_permissions, only: %i[index show update])
5
+ resources(:nonproject_modules, only: [:index])
3
6
  get '/group/:id/merge', to: 'group_merge#index', as: :merge_group
4
7
  post '/group/:id/merge_check', to: 'group_merge#check', as: :merge_check_group
5
8
  post '/group/:id/merge_confirm', to: 'group_merge#confirm', as: :merge_confirm_group
data/init.rb CHANGED
@@ -1,6 +1,7 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'active_scaffold'
4
+ require 'jquery/rails'
4
5
 
5
6
  require 'redmine'
6
7
 
@@ -24,6 +25,11 @@ Redmine::Plugin.register :redmine_nonproject_modules do
24
25
  if: proc { GroupPermission.permission?('group_permissions') }
25
26
  end
26
27
 
28
+ Redmine::MenuManager.map :top_menu do |menu|
29
+ menu.push :nonproject_modules, { controller: 'nonproject_modules', action: 'index', id: nil },
30
+ caption: :label_nonproject_modules
31
+ end
32
+
27
33
  ActiveScaffold.delayed_setup = true
28
34
  end
29
35
 
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'eac_ruby_utils/simple_cache'
2
4
 
3
5
  module RedmineNonprojectModules
4
6
  # https://stackoverflow.com/questions/12088025/detect-if-application-was-started-as...
5
7
  # https://github.com/newrelic/rpm/blob/master/lib/new_relic/local_environment.rb
6
8
  class DispatcherFinder
7
- WEBSERVER_DISPATCHERS = %w(webrick passenger).freeze
9
+ WEBSERVER_DISPATCHERS = %w[webrick passenger].freeze
8
10
  DISPATCHERS = WEBSERVER_DISPATCHERS
9
11
 
10
12
  class << self
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedmineNonprojectModules
2
4
  module Patches
3
5
  module ControllerPatch
@@ -7,14 +9,15 @@ module RedmineNonprojectModules
7
9
  end
8
10
 
9
11
  module ClassMethods
10
- def require_permission(permission)
11
- before_action { |c| c.before_action_require_permission(permission) }
12
+ def require_permission(permission, options = {})
13
+ before_action(options) { |c| c.before_action_require_permission(permission) }
12
14
  end
13
15
  end
14
16
 
15
17
  module InstanceMethods
16
18
  def before_action_require_permission(permission)
17
19
  return true if GroupPermission.permission?(permission)
20
+
18
21
  deny_access
19
22
  end
20
23
  end
@@ -25,5 +28,5 @@ end
25
28
  unless ActionController::Base.included_modules.include?(
26
29
  RedmineNonprojectModules::Patches::ControllerPatch
27
30
  )
28
- ActionController::Base.send(:include, RedmineNonprojectModules::Patches::ControllerPatch)
31
+ ActionController::Base.include RedmineNonprojectModules::Patches::ControllerPatch
29
32
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedmineNonprojectModules
2
4
  module Patches
3
5
  module GroupPatch
@@ -12,6 +14,7 @@ module RedmineNonprojectModules
12
14
  def add_permission(permission)
13
15
  permission = permission.permission if permission.is_a?(::GroupPermission)
14
16
  return if permissions.pluck(:permission).include?(permission)
17
+
15
18
  ::GroupPermission.create!(group: self, permission: permission)
16
19
  end
17
20
  end
@@ -20,5 +23,5 @@ module RedmineNonprojectModules
20
23
  end
21
24
 
22
25
  unless ::Group.included_modules.include?(RedmineNonprojectModules::Patches::GroupPatch)
23
- ::Group.send(:include, RedmineNonprojectModules::Patches::GroupPatch)
26
+ ::Group.include RedmineNonprojectModules::Patches::GroupPatch
24
27
  end
@@ -4,18 +4,11 @@ module RedmineNonprojectModules
4
4
  module Patches
5
5
  module Redmine
6
6
  module I18nPatch
7
- def self.included(base)
8
- base.include(InstanceMethods)
9
- base.alias_method_chain :l, :active_scaffold
10
- end
11
-
12
- module InstanceMethods
13
- def l_with_active_scaffold(*args)
14
- if (args.first.is_a?(Time) || args.first.is_a?(Date)) && args.last.is_a?(Hash)
15
- ::I18n.l(args.first, args.last)
16
- else
17
- l_without_active_scaffold(*args)
18
- end
7
+ def l(*args)
8
+ if (args.first.is_a?(Time) || args.first.is_a?(Date)) && args.last.is_a?(Hash)
9
+ ::I18n.l(args.first, args.last)
10
+ else
11
+ super(*args)
19
12
  end
20
13
  end
21
14
  end
@@ -26,4 +19,4 @@ end
26
19
  x = ::Redmine::I18n
27
20
  y = ::RedmineNonprojectModules::Patches::Redmine::I18nPatch
28
21
 
29
- x.send(:include, y) unless x.included_modules.include?(y)
22
+ x.send(:prepend, y) unless x.included_modules.include?(y)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedmineNonprojectModules
2
4
  module Patches
3
5
  module Redmine
@@ -72,10 +74,11 @@ module RedmineNonprojectModules
72
74
  controller_class.const_get('PERMISSIONS')
73
75
  end
74
76
 
75
- def parse_permissions(p)
76
- return parse_permissions(p.values) if p.is_a?(Hash)
77
- return p.flat_map { |v| parse_permissions(v) } if p.is_a?(Enumerable)
78
- [p.to_s]
77
+ def parse_permissions(permission)
78
+ return parse_permissions(permission.values) if permission.is_a?(Hash)
79
+ return permission.flat_map { |v| parse_permissions(v) } if permission.is_a?(Enumerable)
80
+
81
+ [permission.to_s]
79
82
  end
80
83
  end
81
84
  end
@@ -85,7 +88,7 @@ end
85
88
  unless ::Redmine::MenuManager::Mapper.included_modules.include?(
86
89
  ::RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch
87
90
  )
88
- ::Redmine::MenuManager::Mapper.send(
89
- :include, ::RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch
91
+ ::Redmine::MenuManager::Mapper.include(
92
+ ::RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch
90
93
  )
91
94
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedmineNonprojectModules
2
4
  module Patches
3
5
  module UserPatch
@@ -15,5 +17,5 @@ module RedmineNonprojectModules
15
17
  end
16
18
 
17
19
  unless ::User.included_modules.include?(RedmineNonprojectModules::Patches::UserPatch)
18
- ::User.send(:include, RedmineNonprojectModules::Patches::UserPatch)
20
+ ::User.include RedmineNonprojectModules::Patches::UserPatch
19
21
  end
@@ -4,5 +4,5 @@ module RedmineNonprojectModules
4
4
  AUTHOR = 'Eduardo Henrique Bogoni'
5
5
  HOMEPAGE = 'https://github.com/esquilo-azul/redmine_nonproject_modules'
6
6
  SUMMARY = 'Support to non-project modules.'
7
- VERSION = '0.2.1'
7
+ VERSION = '0.3.4'
8
8
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'redmine_plugins_helper/plugin_rake_task'
4
+ ::RedminePluginsHelper::PluginRakeTask.register(:redmine_nonproject_modules, :test)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_nonproject_modules
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
- - 0.2.1
7
+ - 0.3.4
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2020-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.5'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 3.5.4
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,43 +24,54 @@ dependencies:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.5'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 3.5.4
33
27
  - !ruby/object:Gem::Dependency
34
- name: activemodel-associations
28
+ name: eac_rails_utils
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.12'
37
34
  - - ">="
38
35
  - !ruby/object:Gem::Version
39
- version: '0'
36
+ version: 0.12.2
40
37
  type: :runtime
41
38
  prerelease: false
42
39
  version_requirements: !ruby/object:Gem::Requirement
43
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.12'
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: 0.12.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: eac_ruby_utils
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.10'
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 0.10.1
53
+ version: '0.33'
57
54
  type: :runtime
58
55
  prerelease: false
59
56
  version_requirements: !ruby/object:Gem::Requirement
60
57
  requirements:
61
58
  - - "~>"
62
59
  - !ruby/object:Gem::Version
63
- version: '0.10'
64
- - - ">="
60
+ version: '0.33'
61
+ - !ruby/object:Gem::Dependency
62
+ name: jquery-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
65
66
  - !ruby/object:Gem::Version
66
- version: 0.10.1
67
+ version: '4.4'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '4.4'
67
75
  - !ruby/object:Gem::Dependency
68
76
  name: virtus
69
77
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +86,26 @@ dependencies:
78
86
  - - ">="
79
87
  - !ruby/object:Gem::Version
80
88
  version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: eac_ruby_gem_support
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.1'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.1.2
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.1'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 0.1.2
81
109
  description:
82
110
  email:
83
111
  executables: []
@@ -88,6 +116,7 @@ files:
88
116
  - app/assets/stylesheets/redmine_nonproject_modules.css
89
117
  - app/controllers/group_merge_controller.rb
90
118
  - app/controllers/group_permissions_controller.rb
119
+ - app/controllers/nonproject_modules_controller.rb
91
120
  - app/helpers/group_merge_helper.rb
92
121
  - app/models/group_merge.rb
93
122
  - app/models/group_permission.rb
@@ -98,6 +127,9 @@ files:
98
127
  - app/views/group_permissions/_member_context.html.erb
99
128
  - app/views/group_permissions/index.html.erb
100
129
  - app/views/group_permissions/show.html.erb
130
+ - app/views/layouts/_nonproject_modules_menu.html.erb
131
+ - app/views/layouts/nonproject_modules.html.erb
132
+ - app/views/nonproject_modules/index.html.erb
101
133
  - config/initializers/000_dependencies.rb
102
134
  - config/locales/en.yml
103
135
  - config/locales/pt-BR.yml
@@ -111,6 +143,7 @@ files:
111
143
  - lib/redmine_nonproject_modules/patches/redmine/menu_manager_patch.rb
112
144
  - lib/redmine_nonproject_modules/patches/user_patch.rb
113
145
  - lib/redmine_nonproject_modules/version.rb
146
+ - lib/tasks/redmine_nonproject_modules.rake
114
147
  homepage: https://github.com/esquilo-azul/redmine_nonproject_modules
115
148
  licenses: []
116
149
  metadata: {}
@@ -129,8 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
162
  - !ruby/object:Gem::Version
130
163
  version: '0'
131
164
  requirements: []
132
- rubyforge_project:
133
- rubygems_version: 2.7.7
165
+ rubygems_version: 3.0.8
134
166
  signing_key:
135
167
  specification_version: 4
136
168
  summary: Support to non-project modules.