openproject-ensure_project_hierarchy 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c161be0488b95656f7e66701a9b044b4b22b7966
4
+ data.tar.gz: 909858bb807edc78dc8972e3fa8b31f0faf4e2d1
5
+ SHA512:
6
+ metadata.gz: 15cb9043cf21680b755ff014488aac5d892de3643804eb67b1c67b1ae8107e8c4ea9c80d5bf46d5d478ba75f9af65ff4d4a13c967b9b1944971e11016d5b0393
7
+ data.tar.gz: 5cde86fab68912c5899aaf86838a8a4f0e5d267346bc44f2e6ae8b7cbfdc86228540e201ea3450457aa8a202a6b0b54b398d0b9e06649be0d3891d95abb23757
data/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # OpenProject Ensure Project Hierarchy Plugin
2
+
3
+ This plugin ensures subproject identifiers are prefixed with their parent
4
+ project's identifier.
5
+
6
+ ## Notes
7
+
8
+ * Admins are allowed to set any identifier regardless of the parent project.
9
+ * You cannot update the identifier of a project without changing the parent project to a matching value.
10
+
11
+ ## Requirements
12
+
13
+ * OpenProject Version >= 3.0
14
+
15
+
16
+ ## Installation
17
+
18
+ Create a file `Gemfile.plugins` in your OpenProject installation with the following content:
19
+
20
+ gem "openproject-plugins", :git => "https://github.com/opf/openproject-plugins.git", :branch => "stable"
21
+ gem "openproject-ensure_project_hierarchy", :git => "https://github.com/oliverguenther/openproject-ensure_project_hierarchy.git", :branch => "stable"
22
+
23
+
24
+ Please see the [OpenProject plugin overview](https://www.openproject.org/projects/openproject/wiki/OpenProject_Plug-Ins)
25
+ for more details.
26
+
27
+ ## License
28
+
29
+ Copyright (c) 2014 Oliver Günther (mail@oliverguenther.de)
30
+
31
+ This plugin is forked from the [ChiliProject Ensure Project Hierarchy Plugin](https://github.com/thegcat/chiliproject_ensure_project_hierarchy) by Felix Schäfer.
32
+
33
+ Copyright (c) 2011 Felix Schäfer
34
+
35
+ This plugin is licensed under the MIT license. See COPYING for details.
@@ -0,0 +1,10 @@
1
+ <h3><%= l(:separator) %></h3>
2
+
3
+ <p>
4
+ <label><%= l(:separator) %></label>
5
+ <%= text_field_tag("settings[separator]",
6
+ Setting.plugin_openproject_ensure_project_hierarchy[:separator], :size => 10)
7
+ %>
8
+ <br />
9
+ <em><%= t(:separator_desc, default_separator: Setting.plugin_openproject_ensure_project_hierarchy[:separator]) %></em>
10
+ </p>
@@ -0,0 +1,8 @@
1
+ # German strings go here for Rails i18n
2
+ de:
3
+ activerecord:
4
+ errors:
5
+ messages:
6
+ prefix_invalid: "muss den Präfix \"%{prefix}\" haben"
7
+ separator: Trennzeichen
8
+ separator_desc: "Das Trennzeichen zwischen Nutzername und Projektname. Standard: \'%{default_separator}\'"
@@ -0,0 +1,8 @@
1
+ # English strings go here for Rails i18n
2
+ en:
3
+ activerecord:
4
+ errors:
5
+ messages:
6
+ prefix_invalid: "must start with \"%{prefix}\""
7
+ separator: Separator
8
+ separator_desc: "The separator between username and the given project name. Defaults to \'%{default_separator}\'"
@@ -0,0 +1,5 @@
1
+ module OpenProject
2
+ module EnsureProjectHierarchy
3
+ require "open_project/ensure_project_hierarchy/engine"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ module OpenProject::EnsureProjectHierarchy
2
+ class Engine < ::Rails::Engine
3
+ engine_name :openproject_ensure_project_hierarchy
4
+
5
+
6
+ def self.settings
7
+ { :partial => 'settings/openproject_ensure_project_hierarchy',
8
+ :default => {
9
+ :separator => '-',
10
+ }
11
+ }
12
+ end
13
+
14
+ include OpenProject::Plugins::ActsAsOpEngine
15
+
16
+ register 'openproject-ensure_project_hierarchy',
17
+ :author_url => 'https://github.com/oliverguenther/openproject-ensure_project_hierarchy',
18
+ :requires_openproject => '>= 3.0.0',
19
+ :settings => settings
20
+
21
+ patches [ :Project, :ProjectsController ]
22
+
23
+ end
24
+ end
@@ -0,0 +1,2 @@
1
+ module OpenProject::EnsureProjectHierarchy::Patches
2
+ end
@@ -0,0 +1,36 @@
1
+ module OpenProject::EnsureProjectHierarchy
2
+ module Patches
3
+ module ProjectPatch
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ unloadable
8
+
9
+ include InstanceMethods
10
+
11
+ validate :identifier_hierarchy_correctness
12
+ end
13
+ end
14
+
15
+
16
+ module InstanceMethods
17
+
18
+ private
19
+
20
+ def identifier_hierarchy_correctness
21
+ return true if User.current.admin?
22
+
23
+ if parent && !identifier.start_with?([parent.identifier,
24
+ Setting.plugin_openproject_ensure_project_hierarchy[:separator]].join)
25
+
26
+ errors.add :identifier, :prefix_invalid, :prefix => "#{parent.identifier}-"
27
+ return false
28
+ end
29
+ true
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ Project.send(:include, OpenProject::EnsureProjectHierarchy::Patches::ProjectPatch)
@@ -0,0 +1,36 @@
1
+ module OpenProject::EnsureProjectHierarchy
2
+ module Patches
3
+ module ProjectsControllerPatch
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ unloadable
8
+
9
+ include InstanceMethods
10
+
11
+ alias_method_chain :new, :default_identifier_for_new_subprojects
12
+ end
13
+ end
14
+
15
+
16
+ module InstanceMethods
17
+
18
+ private
19
+
20
+ def new_with_default_identifier_for_new_subprojects
21
+ new_without_default_identifier_for_new_subprojects
22
+ if params[:parent_id]
23
+
24
+ parent_project = Project.find params[:parent_id]
25
+ @project.identifier = [parent_project.identifier,
26
+ Setting.plugin_openproject_ensure_project_hierarchy[:separator]].join
27
+
28
+ Rails.logger.info("[EnsureProjectHierarchy] Overriding project identifier to #{@project.identifier}")
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ ProjectsController.send(:include, OpenProject::EnsureProjectHierarchy::Patches::ProjectsControllerPatch)
@@ -0,0 +1,5 @@
1
+ module OpenProject
2
+ module EnsureProjectHierarchy
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1 @@
1
+ require 'open_project/ensure_project_hierarchy'
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openproject-ensure_project_hierarchy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Oliver Günther
8
+ - Felix Schäfer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-07-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '3.2'
28
+ description: This plugin ensures subproject identifiers are prefixes with their parent
29
+ project's identifier.
30
+ email: mail@oliverguenther.de
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - README.md
36
+ - app/views/settings/_openproject_ensure_project_hierarchy.html.erb
37
+ - config/locales/de.yml
38
+ - config/locales/en.yml
39
+ - lib/open_project/ensure_project_hierarchy.rb
40
+ - lib/open_project/ensure_project_hierarchy/engine.rb
41
+ - lib/open_project/ensure_project_hierarchy/patches.rb
42
+ - lib/open_project/ensure_project_hierarchy/patches/project_patch.rb
43
+ - lib/open_project/ensure_project_hierarchy/patches/projects_controller_patch.rb
44
+ - lib/open_project/ensure_project_hierarchy/version.rb
45
+ - lib/openproject-ensure_project_hierarchy.rb
46
+ homepage: https://www.github.com/oliverguenther/openproject-ensure_project_hierarchy
47
+ licenses:
48
+ - MIT
49
+ metadata: {}
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project:
66
+ rubygems_version: 2.2.2
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: Ensure Project Hierarchy Plugin
70
+ test_files: []
71
+ has_rdoc: