redmine_nonproject_modules 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc031e4d77cdf5071904532778bcb3125b62b71a94e028e37143df2bb7e08a04
4
- data.tar.gz: 79d18b5296b28eb9c8d2e420b9e6597d21af7636c07bd176a719381df5206db1
3
+ metadata.gz: 9f9433cc7007312e8ef5c011eee4ddb3b79974c6ccd8cd85e680208b6a0649e1
4
+ data.tar.gz: 1a41f84dd10c23981d902370e2c9807151ae1f57dde131ca96439a09c0ba56cf
5
5
  SHA512:
6
- metadata.gz: 8375cafd48467e31dbbafa7d20861a58f0122882127e05c598c2f043cbd65391f11025edb8f8066505d516c00c1bb660be284cb44dbc6fc4813d5397069cdd8e
7
- data.tar.gz: a735ddf06ea745d50adac99bbd33d385a301821afcabc81f57866537f28ae4051243487fd70d8b6ab8a2bff889b79b16586e3a53c806827de68b57f88e131c20
6
+ metadata.gz: c85ec4ca425a83d840800b041d64b12aadb295be0520afdd4b5534e4ad98731cfe9cfe2a964f013b4da0b6497b67844f203ea79107216afc47b6942c9daefe97
7
+ data.tar.gz: 11dc39bc9fdef85a9358697f58345bc61efb1aa1715319044b2752b4314d114394f0241a486cd94c7ba77c9c21b2559609543ef40bcd63629a8467d39f3d3c38
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'eac_rails_utils/models/tableless'
4
4
 
5
- class GroupMerge < ::EacRailsUtils::Models::Tableless
5
+ class GroupMerge < EacRailsUtils::Models::Tableless
6
6
  ONLY_ON_TARGET = :only_on_target
7
7
  ONLY_ON_SOURCE = :only_on_source
8
8
  ON_BOTH = :on_both
@@ -12,9 +12,6 @@ class GroupMerge < ::EacRailsUtils::Models::Tableless
12
12
  belongs_to :source, class_name: 'Group'
13
13
  belongs_to :target, class_name: 'Group'
14
14
 
15
- validates :source, presence: true
16
- validates :target, presence: true
17
-
18
15
  def to_merge_elements
19
16
  (target_elements + source_elements).uniq.map do |x|
20
17
  [x[0], element_on_status(x)]
@@ -5,8 +5,7 @@ require 'eac_ruby_utils/simple_cache'
5
5
  class GroupPermission < ActiveRecord::Base
6
6
  belongs_to :group
7
7
 
8
- validates :group, presence: true
9
- validates :permission, presence: true, uniqueness: { scope: [:group],
8
+ validates :permission, presence: true, uniqueness: { scope: [:group], # rubocop:disable Rails/UniqueValidationWithoutIndex
10
9
  case_sensitive: false }
11
10
 
12
11
  def permission=(value)
@@ -27,7 +26,7 @@ class GroupPermission < ActiveRecord::Base
27
26
  permission(key).description
28
27
  end
29
28
 
30
- def permission?(permission, user = false)
29
+ def permission?(permission, user = false) # rubocop:disable Style/OptionalBooleanParameter
31
30
  return permission_by_hash?(permission, user) if permission.is_a?(Hash)
32
31
 
33
32
  permission(permission).user_has?(user || User.current)
@@ -3,6 +3,6 @@
3
3
  require 'redmine_nonproject_modules/patches/controller_patch'
4
4
  require 'redmine_nonproject_modules/patches/group_patch'
5
5
  require 'redmine_nonproject_modules/patches/redmine/i18n_patch'
6
- require 'redmine_nonproject_modules/patches/redmine/menu_manager_patch'
6
+ require 'redmine_nonproject_modules/patches/redmine/menu_manager/mapper'
7
7
  require 'redmine_nonproject_modules/patches/redmine/plugin'
8
8
  require 'redmine_nonproject_modules/patches/user_patch'
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ::GroupPermission.add_permission('group_permissions')
4
- ::GroupPermission.add_permission('group_merge')
3
+ GroupPermission.add_permission('group_permissions')
4
+ GroupPermission.add_permission('group_merge')
data/init.rb CHANGED
@@ -8,9 +8,9 @@ require 'redmine_nonproject_modules/version'
8
8
 
9
9
  Redmine::Plugin.register :redmine_nonproject_modules do
10
10
  name 'Redmine non-project modules'
11
- author ::RedmineNonprojectModules::AUTHOR
12
- description ::RedmineNonprojectModules::SUMMARY
13
- version ::RedmineNonprojectModules::VERSION
14
- url ::RedmineNonprojectModules::HOMEPAGE
11
+ author RedmineNonprojectModules::AUTHOR
12
+ description RedmineNonprojectModules::SUMMARY
13
+ version RedmineNonprojectModules::VERSION
14
+ url RedmineNonprojectModules::HOMEPAGE
15
15
  author_url 'https://github.com/eduardobogoni'
16
16
  end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module RedmineNonprojectModules
6
+ class MenuControllerEntry
7
+ # @!method initialize(controller, options = {})
8
+ # @param controller [String]
9
+ # @param options [Hash]
10
+ common_constructor :controller, :options, default: [{}] do
11
+ self.controller = controller.to_s
12
+ self.options = options.with_indifferent_access
13
+ end
14
+
15
+ def build
16
+ [build_name, build_url, build_options]
17
+ end
18
+
19
+ def permissions
20
+ parse_permissions(permissions_const)
21
+ end
22
+
23
+ private
24
+
25
+ def build_name
26
+ r = controller
27
+ r = "#{r}_#{action}" unless action == 'index'
28
+ r.to_sym
29
+ end
30
+
31
+ def build_url
32
+ { controller: controller, action: action, id: id }
33
+ end
34
+
35
+ def build_options
36
+ {
37
+ caption: build_caption,
38
+ if: proc { GroupPermission.permission?(permissions_const) }
39
+ }
40
+ end
41
+
42
+ def build_caption
43
+ :"label_#{build_name}"
44
+ end
45
+
46
+ def controller_class
47
+ Object.const_get("#{controller.camelize}Controller")
48
+ end
49
+
50
+ def action
51
+ options[:action] || 'index'
52
+ end
53
+
54
+ def id
55
+ options[:id]
56
+ end
57
+
58
+ def permissions_const
59
+ controller_class.const_get('PERMISSIONS')
60
+ end
61
+
62
+ def parse_permissions(permission)
63
+ return parse_permissions(permission.values) if permission.is_a?(Hash)
64
+ return permission.flat_map { |v| parse_permissions(v) } if permission.is_a?(Enumerable)
65
+
66
+ [permission.to_s]
67
+ end
68
+ end
69
+ end
@@ -28,5 +28,7 @@ end
28
28
  unless ActionController::Base.included_modules.include?(
29
29
  RedmineNonprojectModules::Patches::ControllerPatch
30
30
  )
31
- ActionController::Base.include RedmineNonprojectModules::Patches::ControllerPatch
31
+ ActiveSupport.on_load(:action_controller) do
32
+ include RedmineNonprojectModules::Patches::ControllerPatch
33
+ end
32
34
  end
@@ -22,6 +22,6 @@ module RedmineNonprojectModules
22
22
  end
23
23
  end
24
24
 
25
- unless ::Group.included_modules.include?(RedmineNonprojectModules::Patches::GroupPatch)
26
- ::Group.include RedmineNonprojectModules::Patches::GroupPatch
25
+ unless Group.included_modules.include?(RedmineNonprojectModules::Patches::GroupPatch)
26
+ Group.include RedmineNonprojectModules::Patches::GroupPatch
27
27
  end
@@ -23,7 +23,7 @@ module RedmineNonprojectModules
23
23
  end
24
24
  end
25
25
 
26
- x = ::Redmine::I18n
27
- y = ::RedmineNonprojectModules::Patches::Redmine::I18nPatch
26
+ x = Redmine::I18n
27
+ y = RedmineNonprojectModules::Patches::Redmine::I18nPatch
28
28
 
29
29
  x.send(:include, y) unless x.included_modules.include?(y)
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RedmineNonprojectModules
4
+ module Patches
5
+ module Redmine
6
+ module MenuManagerMapperPatch
7
+ def push_controller(*args)
8
+ e = ::RedmineNonprojectModules::MenuControllerEntry.new(*args)
9
+ push(*e.build)
10
+ e.permissions.each do |p|
11
+ ::GroupPermission.add_permission(p)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ Redmine::MenuManager::Mapper
20
+ .include(RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch)
@@ -3,92 +3,31 @@
3
3
  module RedmineNonprojectModules
4
4
  module Patches
5
5
  module Redmine
6
- module MenuManagerMapperPatch
7
- def self.included(base)
8
- base.send(:include, InstanceMethods)
9
- end
10
- end
11
-
12
- module InstanceMethods
13
- def push_controller(*args)
14
- e = ControllerEntry.new(*args)
15
- push(*e.build)
16
- e.permissions.each do |p|
17
- ::GroupPermission.add_permission(p)
6
+ module MenuManager
7
+ module Mapper
8
+ def self.included(base)
9
+ base.send(:include, InstanceMethods)
18
10
  end
19
11
  end
20
- end
21
-
22
- class ControllerEntry
23
- def initialize(controller, options = {})
24
- @controller = controller.to_s
25
- @options = options.with_indifferent_access
26
- end
27
-
28
- def build
29
- [build_name, build_url, build_options]
30
- end
31
-
32
- def permissions
33
- parse_permissions(permissions_const)
34
- end
35
-
36
- private
37
-
38
- attr_reader :controller, :options
39
-
40
- def build_name
41
- r = controller
42
- r = "#{r}_#{action}" unless action == 'index'
43
- r.to_sym
44
- end
45
-
46
- def build_url
47
- { controller: controller, action: action, id: id }
48
- end
49
-
50
- def build_options
51
- {
52
- caption: build_caption,
53
- if: proc { GroupPermission.permission?(permissions_const) }
54
- }
55
- end
56
-
57
- def build_caption
58
- "label_#{build_name}".to_sym
59
- end
60
-
61
- def controller_class
62
- Object.const_get("#{controller.camelize}Controller")
63
- end
64
12
 
65
- def action
66
- @options[:action] || 'index'
67
- end
68
-
69
- def id
70
- @options[:id]
71
- end
72
-
73
- def permissions_const
74
- controller_class.const_get('PERMISSIONS')
75
- end
76
-
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]
13
+ module InstanceMethods
14
+ def push_controller(*args)
15
+ e = ::RedmineNonprojectModules::MenuControllerEntry.new(*args)
16
+ push(*e.build)
17
+ e.permissions.each do |p|
18
+ ::GroupPermission.add_permission(p)
19
+ end
20
+ end
82
21
  end
83
22
  end
84
23
  end
85
24
  end
86
25
  end
87
26
 
88
- unless ::Redmine::MenuManager::Mapper.included_modules.include?(
89
- ::RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch
27
+ unless Redmine::MenuManager::Mapper.included_modules.include?(
28
+ RedmineNonprojectModules::Patches::Redmine::MenuManager::Mapper
90
29
  )
91
- ::Redmine::MenuManager::Mapper.include(
92
- ::RedmineNonprojectModules::Patches::Redmine::MenuManagerMapperPatch
30
+ Redmine::MenuManager::Mapper.include(
31
+ RedmineNonprojectModules::Patches::Redmine::MenuManager::Mapper
93
32
  )
94
33
  end
@@ -16,4 +16,4 @@ module RedmineNonprojectModules
16
16
  end
17
17
  end
18
18
 
19
- ::Redmine::Plugin.include(::RedmineNonprojectModules::Patches::Redmine::Plugin)
19
+ Redmine::Plugin.include(RedmineNonprojectModules::Patches::Redmine::Plugin)
@@ -16,6 +16,6 @@ module RedmineNonprojectModules
16
16
  end
17
17
  end
18
18
 
19
- unless ::User.included_modules.include?(RedmineNonprojectModules::Patches::UserPatch)
20
- ::User.include RedmineNonprojectModules::Patches::UserPatch
19
+ unless User.included_modules.include?(RedmineNonprojectModules::Patches::UserPatch)
20
+ User.include RedmineNonprojectModules::Patches::UserPatch
21
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.4.0'
7
+ VERSION = '0.5.1'
8
8
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'redmine_plugins_helper/test_tasks/rspec'
4
- ::RedminePluginsHelper::TestTasks::Rspec.register(:redmine_nonproject_modules, :test)
4
+ RedminePluginsHelper::TestTasks::Rspec.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.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
- - 0.4.0
7
+ - 0.5.1
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-18 00:00:00.000000000 Z
11
+ date: 2024-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_active_scaffold
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '0.5'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.5.1
22
+ version: 0.5.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '0.5'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.5.1
32
+ version: 0.5.3
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: eac_rails_utils
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -56,25 +56,22 @@ dependencies:
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '0.119'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 0.119.2
59
+ version: '0.121'
63
60
  type: :runtime
64
61
  prerelease: false
65
62
  version_requirements: !ruby/object:Gem::Requirement
66
63
  requirements:
67
64
  - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '0.119'
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: 0.119.2
66
+ version: '0.121'
73
67
  - !ruby/object:Gem::Dependency
74
68
  name: i18n-recursive-lookup
75
69
  requirement: !ruby/object:Gem::Requirement
76
70
  requirements:
77
71
  - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.0'
74
+ - - ">="
78
75
  - !ruby/object:Gem::Version
79
76
  version: 0.0.5
80
77
  type: :runtime
@@ -82,6 +79,9 @@ dependencies:
82
79
  version_requirements: !ruby/object:Gem::Requirement
83
80
  requirements:
84
81
  - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.0'
84
+ - - ">="
85
85
  - !ruby/object:Gem::Version
86
86
  version: 0.0.5
87
87
  - !ruby/object:Gem::Dependency
@@ -99,19 +99,25 @@ dependencies:
99
99
  - !ruby/object:Gem::Version
100
100
  version: '4.6'
101
101
  - !ruby/object:Gem::Dependency
102
- name: eac_ruby_gem_support
102
+ name: eac_rails_gem_support
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: 0.8.1
107
+ version: '0.9'
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.2
108
111
  type: :development
109
112
  prerelease: false
110
113
  version_requirements: !ruby/object:Gem::Requirement
111
114
  requirements:
112
115
  - - "~>"
113
116
  - !ruby/object:Gem::Version
114
- version: 0.8.1
117
+ version: '0.9'
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 0.9.2
115
121
  description:
116
122
  email:
117
123
  executables: []
@@ -147,9 +153,11 @@ files:
147
153
  - init.rb
148
154
  - lib/redmine_nonproject_modules.rb
149
155
  - lib/redmine_nonproject_modules/dispatcher_finder.rb
156
+ - lib/redmine_nonproject_modules/menu_controller_entry.rb
150
157
  - lib/redmine_nonproject_modules/patches/controller_patch.rb
151
158
  - lib/redmine_nonproject_modules/patches/group_patch.rb
152
159
  - lib/redmine_nonproject_modules/patches/redmine/i18n_patch.rb
160
+ - lib/redmine_nonproject_modules/patches/redmine/menu_manager/mapper.rb
153
161
  - lib/redmine_nonproject_modules/patches/redmine/menu_manager_patch.rb
154
162
  - lib/redmine_nonproject_modules/patches/redmine/plugin.rb
155
163
  - lib/redmine_nonproject_modules/patches/user_patch.rb
@@ -166,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
174
  requirements:
167
175
  - - ">="
168
176
  - !ruby/object:Gem::Version
169
- version: '0'
177
+ version: 2.7.0
170
178
  required_rubygems_version: !ruby/object:Gem::Requirement
171
179
  requirements:
172
180
  - - ">="