redmine_nonproject_modules 0.2.1 → 0.3.4

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: 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.