redmine_nonproject_modules 0.3.13 → 0.5.0
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 +4 -4
- data/app/models/group_merge.rb +1 -4
- data/app/models/group_permission.rb +3 -4
- data/config/initializers/001_patches.rb +2 -1
- data/config/initializers/group_permissions.rb +2 -2
- data/config/initializers/i18n.rb +4 -0
- data/init.rb +4 -9
- data/lib/redmine_nonproject_modules/menu_controller_entry.rb +69 -0
- data/lib/redmine_nonproject_modules/patches/controller_patch.rb +3 -1
- data/lib/redmine_nonproject_modules/patches/group_patch.rb +2 -2
- data/lib/redmine_nonproject_modules/patches/redmine/i18n_patch.rb +2 -2
- data/lib/redmine_nonproject_modules/patches/redmine/menu_manager/mapper.rb +20 -0
- data/lib/redmine_nonproject_modules/patches/redmine/menu_manager_patch.rb +16 -77
- data/lib/redmine_nonproject_modules/patches/redmine/plugin.rb +19 -0
- data/lib/redmine_nonproject_modules/patches/user_patch.rb +2 -2
- data/lib/redmine_nonproject_modules/version.rb +1 -1
- data/lib/tasks/redmine_nonproject_modules.rake +1 -1
- metadata +38 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c393719a43c09b1fcaa018311f53571ba1943532d1254f17c7e3248b30ac285
|
4
|
+
data.tar.gz: aabcd0192dbede3d36b45e15c52930826bd84d7967404cc6448a833dd36f1da6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c052d43b5619ddf692720f3da0c54facf5baf72c6a9e6afdaea0f9ac40bcecdde6758f74710776805bd0f3b0f89feb8a1a46c9494874c3a0c7476eec8fe94f11
|
7
|
+
data.tar.gz: b207fa51fb6d973da1f537265edd40883ffac3e27ade190f65d416c07b93ccff456361b49513fcd35f4f4edd907a96ef8414152389266db79dfe7612c2235d18
|
data/app/models/group_merge.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'eac_rails_utils/models/tableless'
|
4
4
|
|
5
|
-
class GroupMerge <
|
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)]
|
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'eac_ruby_utils/simple_cache'
|
4
4
|
|
5
|
-
class GroupPermission < ActiveRecord::Base
|
5
|
+
class GroupPermission < ActiveRecord::Base # rubocop:disable Rails/ApplicationRecord
|
6
6
|
belongs_to :group
|
7
7
|
|
8
|
-
validates :
|
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,5 +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/
|
6
|
+
require 'redmine_nonproject_modules/patches/redmine/menu_manager/mapper'
|
7
|
+
require 'redmine_nonproject_modules/patches/redmine/plugin'
|
7
8
|
require 'redmine_nonproject_modules/patches/user_patch'
|
data/init.rb
CHANGED
@@ -4,18 +4,13 @@ require 'active_scaffold'
|
|
4
4
|
require 'jquery/rails'
|
5
5
|
|
6
6
|
require 'redmine'
|
7
|
-
|
8
|
-
require 'redmine_nonproject_modules/patches/controller_patch'
|
9
|
-
require 'redmine_nonproject_modules/patches/group_patch'
|
10
|
-
require 'redmine_nonproject_modules/patches/redmine/i18n_patch'
|
11
|
-
require 'redmine_nonproject_modules/patches/redmine/menu_manager_patch'
|
12
7
|
require 'redmine_nonproject_modules/version'
|
13
8
|
|
14
9
|
Redmine::Plugin.register :redmine_nonproject_modules do
|
15
10
|
name 'Redmine non-project modules'
|
16
|
-
author
|
17
|
-
description
|
18
|
-
version
|
19
|
-
url
|
11
|
+
author RedmineNonprojectModules::AUTHOR
|
12
|
+
description RedmineNonprojectModules::SUMMARY
|
13
|
+
version RedmineNonprojectModules::VERSION
|
14
|
+
url RedmineNonprojectModules::HOMEPAGE
|
20
15
|
author_url 'https://github.com/eduardobogoni'
|
21
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}".to_sym
|
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
|
-
|
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
|
26
|
-
|
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 =
|
27
|
-
y =
|
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
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
89
|
-
|
27
|
+
unless Redmine::MenuManager::Mapper.included_modules.include?(
|
28
|
+
RedmineNonprojectModules::Patches::Redmine::MenuManager::Mapper
|
90
29
|
)
|
91
|
-
|
92
|
-
|
30
|
+
Redmine::MenuManager::Mapper.include(
|
31
|
+
RedmineNonprojectModules::Patches::Redmine::MenuManager::Mapper
|
93
32
|
)
|
94
33
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module RedmineNonprojectModules
|
6
|
+
module Patches
|
7
|
+
module Redmine
|
8
|
+
module Plugin
|
9
|
+
common_concern
|
10
|
+
|
11
|
+
def nonprojects_menu(&block)
|
12
|
+
::Redmine::MenuManager.map(id, &block)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Redmine::Plugin.include(RedmineNonprojectModules::Patches::Redmine::Plugin)
|
@@ -16,6 +16,6 @@ module RedmineNonprojectModules
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
unless
|
20
|
-
|
19
|
+
unless User.included_modules.include?(RedmineNonprojectModules::Patches::UserPatch)
|
20
|
+
User.include RedmineNonprojectModules::Patches::UserPatch
|
21
21
|
end
|
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
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- 0.
|
7
|
+
- 0.5.0
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_active_scaffold
|
@@ -36,14 +36,20 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0.
|
39
|
+
version: '0.22'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.22.2
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
47
|
- - "~>"
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version: '0.
|
49
|
+
version: '0.22'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.22.2
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: eac_ruby_utils
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,6 +70,26 @@ dependencies:
|
|
64
70
|
- - ">="
|
65
71
|
- !ruby/object:Gem::Version
|
66
72
|
version: 0.119.2
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: i18n-recursive-lookup
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.0'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.5
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.0'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.0.5
|
67
93
|
- !ruby/object:Gem::Dependency
|
68
94
|
name: jquery-rails
|
69
95
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,14 +110,14 @@ dependencies:
|
|
84
110
|
requirements:
|
85
111
|
- - "~>"
|
86
112
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0.
|
113
|
+
version: 0.8.1
|
88
114
|
type: :development
|
89
115
|
prerelease: false
|
90
116
|
version_requirements: !ruby/object:Gem::Requirement
|
91
117
|
requirements:
|
92
118
|
- - "~>"
|
93
119
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
120
|
+
version: 0.8.1
|
95
121
|
description:
|
96
122
|
email:
|
97
123
|
executables: []
|
@@ -119,6 +145,7 @@ files:
|
|
119
145
|
- config/initializers/001_patches.rb
|
120
146
|
- config/initializers/assets.rb
|
121
147
|
- config/initializers/group_permissions.rb
|
148
|
+
- config/initializers/i18n.rb
|
122
149
|
- config/initializers/menus.rb
|
123
150
|
- config/locales/en.yml
|
124
151
|
- config/locales/pt-BR.yml
|
@@ -126,10 +153,13 @@ files:
|
|
126
153
|
- init.rb
|
127
154
|
- lib/redmine_nonproject_modules.rb
|
128
155
|
- lib/redmine_nonproject_modules/dispatcher_finder.rb
|
156
|
+
- lib/redmine_nonproject_modules/menu_controller_entry.rb
|
129
157
|
- lib/redmine_nonproject_modules/patches/controller_patch.rb
|
130
158
|
- lib/redmine_nonproject_modules/patches/group_patch.rb
|
131
159
|
- lib/redmine_nonproject_modules/patches/redmine/i18n_patch.rb
|
160
|
+
- lib/redmine_nonproject_modules/patches/redmine/menu_manager/mapper.rb
|
132
161
|
- lib/redmine_nonproject_modules/patches/redmine/menu_manager_patch.rb
|
162
|
+
- lib/redmine_nonproject_modules/patches/redmine/plugin.rb
|
133
163
|
- lib/redmine_nonproject_modules/patches/user_patch.rb
|
134
164
|
- lib/redmine_nonproject_modules/version.rb
|
135
165
|
- lib/tasks/redmine_nonproject_modules.rake
|
@@ -144,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
174
|
requirements:
|
145
175
|
- - ">="
|
146
176
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
177
|
+
version: 2.7.0
|
148
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
179
|
requirements:
|
150
180
|
- - ">="
|