ecm_staff2 0.0.1

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.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +17 -0
  5. data/app/assets/javascripts/ecm/staff/application.js +13 -0
  6. data/app/assets/stylesheets/ecm/staff/application.css +14 -0
  7. data/app/controllers/ecm/staff/application_controller.rb +6 -0
  8. data/app/controllers/ecm/staff/people_controller.rb +33 -0
  9. data/app/helpers/ecm/staff/application_helper.rb +6 -0
  10. data/app/models/ecm/staff/base.rb +9 -0
  11. data/app/models/ecm/staff/business_unit.rb +55 -0
  12. data/app/models/ecm/staff/organisation.rb +40 -0
  13. data/app/models/ecm/staff/person.rb +92 -0
  14. data/app/models/ecm/staff/person_position.rb +22 -0
  15. data/app/models/ecm/staff/position.rb +48 -0
  16. data/app/views/ecm/staff/people/_person.haml +12 -0
  17. data/app/views/ecm/staff/people/_person_in_index.haml +13 -0
  18. data/app/views/ecm/staff/people/_person_positions_table.haml +9 -0
  19. data/app/views/ecm/staff/people/index.haml +3 -0
  20. data/app/views/ecm/staff/people/show.haml +5 -0
  21. data/app/views/ecm/staff/person_positions/_person_position_as_table_row.haml +4 -0
  22. data/app/views/layouts/ecm/staff/application.html.erb +14 -0
  23. data/config/locales/de.yml +60 -0
  24. data/config/routes.rb +7 -0
  25. data/db/migrate/001_create_ecm_staff_organisations.rb +16 -0
  26. data/db/migrate/002_create_ecm_staff_business_units.rb +26 -0
  27. data/db/migrate/003_create_ecm_staff_positions.rb +23 -0
  28. data/db/migrate/004_create_ecm_staff_person_positions.rb +17 -0
  29. data/db/migrate/005_create_ecm_staff_people.rb +22 -0
  30. data/db/migrate/006_create_ecm_staff_organisation_translations.rb +13 -0
  31. data/db/migrate/007_create_ecm_staff_business_unit_translations.rb +13 -0
  32. data/db/migrate/008_create_ecm_staff_position_translations.rb +13 -0
  33. data/db/migrate/009_create_ecm_staff_person_translations.rb +13 -0
  34. data/lib/ecm/staff/configuration.rb +14 -0
  35. data/lib/ecm/staff/engine.rb +7 -0
  36. data/lib/ecm/staff/routing.rb +19 -0
  37. data/lib/ecm/staff/version.rb +5 -0
  38. data/lib/ecm/staff.rb +7 -0
  39. data/lib/ecm_staff2.rb +8 -0
  40. data/lib/tasks/ecm/staff_tasks.rake +4 -0
  41. data/spec/factories/ecm_staff_business_units.rb +8 -0
  42. data/spec/factories/ecm_staff_organisations.rb +7 -0
  43. data/spec/factories/ecm_staff_people.rb +8 -0
  44. data/spec/factories/ecm_staff_person_positions.rb +10 -0
  45. data/spec/factories/ecm_staff_positions.rb +7 -0
  46. metadata +159 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 73e0d2d49ee3f23509b2aad6066a246e1b365f31
4
+ data.tar.gz: 0af59c59fa11cae833bebf0c203f332ecd16a730
5
+ SHA512:
6
+ metadata.gz: 874fe0ce6afa7e56652cfd407933d633322435d9ad6dc22dad7d58320c5ccd2f197d10eb35b691179f032b0e649cd06907c9062aad5493d05183a43c219b3a68
7
+ data.tar.gz: eaf0d6b13abb46b5ddef179dc684a2f25710a1315a0bcd17ec9f3ca9bfe97e4dfb794b6e7367b2b548fb4d062779254e737dfef13680906c95a857cde3d23c1d
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2016 Roberto Vasquez Angel
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = Ecm::Staff
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Ecm::Staff'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,14 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. It is generally better to create a new file per style scope.
11
+ *
12
+ *= require_tree .
13
+ *= require_self
14
+ */
@@ -0,0 +1,6 @@
1
+ module Ecm
2
+ module Staff
3
+ class ApplicationController < Configuration.frontend_base_controller.constantize
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,33 @@
1
+ module Ecm::Staff
2
+ class PeopleController < ApplicationController
3
+ def self.resource_class
4
+ Person
5
+ end
6
+
7
+ def index
8
+ @collection = load_collection
9
+ end
10
+
11
+ def show
12
+ @resource = load_resource
13
+ end
14
+
15
+ private
16
+
17
+ def resource_class
18
+ self.class.resource_class
19
+ end
20
+
21
+ def resource_scope
22
+ resource_class.includes(person_positions: :position)
23
+ end
24
+
25
+ def load_collection
26
+ resource_scope.all
27
+ end
28
+
29
+ def load_resource
30
+ resource_scope.find(params[:id])
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,6 @@
1
+ module Ecm
2
+ module Staff
3
+ module ApplicationHelper
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ module Ecm::Staff
2
+ class Base < ActiveRecord::Base
3
+ self.abstract_class = true
4
+
5
+ def self.table_name_prefix
6
+ 'ecm_staff_'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,55 @@
1
+ class Ecm::Staff::BusinessUnit < Ecm::Staff::Base
2
+ # associations
3
+ belongs_to :organisation
4
+ has_many :person_positions, dependent: :restrict_with_error
5
+ has_many :people, through: :person_positions
6
+
7
+ # # attributes
8
+ # attr_accessible :description,
9
+ # :name,
10
+ # :markup_language,
11
+ # :organisation_id,
12
+ # :parent_id,
13
+ # :slug
14
+
15
+ # callbacks
16
+ after_initialize :set_defaults, if: :new_record?
17
+
18
+ # globalization support
19
+ translates :description, :name, :slug
20
+ # attr_accessible :translations, :translations_attributes
21
+ accepts_nested_attributes_for :translations
22
+
23
+ # default scope
24
+ # default_scope order: 'lft'
25
+
26
+ # friendly id support
27
+ extend FriendlyId
28
+ friendly_id :name, use: [:slugged, :finders]
29
+
30
+ # markup support
31
+ acts_as_markup language: :variable,
32
+ columns: [:description]
33
+
34
+ # nested set support
35
+ acts_as_nested_set
36
+
37
+ # validations
38
+ validates :organisation, presence: true
39
+ validates :name, presence: true,
40
+ uniqueness: { scope: [:organisation_id] }
41
+
42
+ def people_count
43
+ people.count
44
+ end
45
+
46
+ def to_s
47
+ name
48
+ end
49
+
50
+ private
51
+
52
+ def set_defaults
53
+ self.markup_language ||= Ecm::Staff::Configuration.default_markup_language
54
+ end
55
+ end
@@ -0,0 +1,40 @@
1
+ class Ecm::Staff::Organisation < Ecm::Staff::Base
2
+ # associations
3
+ has_many :business_units
4
+
5
+ # # attributes
6
+ # attr_accessible :description,
7
+ # :markup_language,
8
+ # :name
9
+
10
+ # callbacks
11
+ after_initialize :set_defaults, if: :new_record?
12
+
13
+ # globalization support
14
+ translates :description, :name, :slug
15
+ # attr_accessible :translations, :translations_attributes
16
+ accepts_nested_attributes_for :translations
17
+
18
+ # friendly id support
19
+ extend FriendlyId
20
+ friendly_id :name, use: [:slugged, :globalize, :finders]
21
+
22
+ # markup support
23
+ acts_as_markup language: :variable,
24
+ columns: [:description]
25
+
26
+ # validations
27
+ validates :markup_language, inclusion: Ecm::Staff::Configuration.markup_languages.map(&:to_s)
28
+ validates :name, presence: true,
29
+ uniqueness: true
30
+
31
+ def to_s
32
+ name
33
+ end
34
+
35
+ private
36
+
37
+ def set_defaults
38
+ self.markup_language ||= Ecm::Staff::Configuration.default_markup_language
39
+ end
40
+ end
@@ -0,0 +1,92 @@
1
+ class Ecm::Staff::Person < Ecm::Staff::Base
2
+ # associations
3
+ has_many :person_positions, ->() { order(begin_at: :desc) },
4
+ class_name: Ecm::Staff::PersonPosition,
5
+ inverse_of: :person
6
+ accepts_nested_attributes_for :person_positions, allow_destroy: true
7
+
8
+ has_many :positions, through: :person_positions,
9
+ class_name: Ecm::Staff::Position
10
+
11
+ has_many :attached_pictures, as: :pictureable,
12
+ class_name: Ecm::Pictures::AttachedPicture,
13
+ inverse_of: :pictureable
14
+ has_many :pictures, through: :attached_pictures,
15
+ class_name: Ecm::Pictures::Picture
16
+
17
+ accepts_nested_attributes_for :attached_pictures, allow_destroy: true
18
+ accepts_nested_attributes_for :pictures, allow_destroy: true
19
+
20
+ # # attributes
21
+ # attr_accessible :attached_pictures_attributes,
22
+ # :birthdate,
23
+ # :description,
24
+ # :firstname,
25
+ # :lastname,
26
+ # :markup_language,
27
+ # :person_positions_attributes,
28
+ # :pictures_attributes,
29
+ # :position,
30
+ # :prefix
31
+
32
+ # acts as list
33
+ acts_as_list
34
+ # default_scope order: 'position ASC'
35
+
36
+ # callbacks
37
+ after_initialize :set_defaults, if: :new_record?
38
+
39
+ # globalization support
40
+ translates :description, :prefix, :slug
41
+ # attr_accessible :translations, :translations_attributes
42
+ accepts_nested_attributes_for :translations
43
+
44
+ # friendly id support
45
+ extend FriendlyId
46
+ friendly_id :fullname, use: [:slugged, :finders]
47
+
48
+ # markup support
49
+ acts_as_markup language: :variable,
50
+ columns: [:description]
51
+
52
+ # validations
53
+ validates :markup_language, presence: true,
54
+ inclusion: Ecm::Staff::Configuration.markup_languages.map(&:to_s)
55
+ validates :firstname, presence: true
56
+ validates :lastname, presence: true
57
+
58
+ def age
59
+ return if birthdate.nil?
60
+ if (Time.zone.now.month < birthdate.month) || (Time.zone.now.month == birthdate.month && birthdate.day >= Time.zone.now.day)
61
+ Time.zone.now.year - birthdate.year - 1
62
+ else
63
+ Time.zone.now.year - birthdate.year
64
+ end
65
+ end # def
66
+
67
+ def fullname
68
+ "#{firstname} #{lastname}"
69
+ end # def
70
+
71
+ def fullname_with_prefix
72
+ prefix.present? ? "#{prefix} #{fullname}" : fullname
73
+ end # def
74
+
75
+ def preview_picture
76
+ pictures.first
77
+ end # def
78
+
79
+ def preview_picture_image_url(style = nil)
80
+ preview_picture.image.url(style) if preview_picture.respond_to?(:image) && preview_picture.image.respond_to?(:url)
81
+ end # def
82
+
83
+ def to_s
84
+ fullname
85
+ end # def
86
+
87
+ private
88
+
89
+ def set_defaults
90
+ self.markup_language ||= Ecm::Staff::Configuration.default_markup_language
91
+ end
92
+ end
@@ -0,0 +1,22 @@
1
+ class Ecm::Staff::PersonPosition < Ecm::Staff::Base
2
+ # associations
3
+ has_one :organisation, through: :business_unit
4
+ belongs_to :business_unit
5
+ belongs_to :person, class_name: Ecm::Staff::Configuration.person_class_name
6
+ belongs_to :position
7
+
8
+ # # attributes
9
+ # attr_accessible :begin_at,
10
+ # :business_unit_id,
11
+ # :end_at,
12
+ # :organisation_id,
13
+ # :person_id,
14
+ # :position_id
15
+
16
+ # validations
17
+ # @TODO: Validate end_at > begin_at if present
18
+ validates :begin_at, presence: true
19
+ validates :business_unit, presence: true
20
+ validates :person, presence: true
21
+ validates :position, presence: true
22
+ end
@@ -0,0 +1,48 @@
1
+ class Ecm::Staff::Position < Ecm::Staff::Base
2
+ # associations
3
+ has_many :person_positions, dependent: :restrict_with_error
4
+ has_many :people, through: :person_positions,
5
+ class_name: Ecm::Staff::Configuration.person_class_name
6
+
7
+ # # attributes
8
+ # attr_accessible :description,
9
+ # :name,
10
+ # :parent_id
11
+
12
+ # callbacks
13
+ after_initialize :set_defaults, if: :new_record?
14
+
15
+ # globalization support
16
+ translates :description, :name, :slug
17
+ # attr_accessible :translations, :translations_attributes
18
+ accepts_nested_attributes_for :translations
19
+
20
+ # friendly id support
21
+ extend FriendlyId
22
+ friendly_id :name, use: [:slugged, :finders]
23
+
24
+ # markup support
25
+ acts_as_markup language: :variable,
26
+ columns: [:description]
27
+
28
+ # nested set support
29
+ acts_as_nested_set
30
+
31
+ # validations
32
+ validates :name, presence: true,
33
+ uniqueness: true
34
+
35
+ def people_count
36
+ people.count
37
+ end
38
+
39
+ def to_s
40
+ name
41
+ end
42
+
43
+ private
44
+
45
+ def set_defaults
46
+ self.markup_language ||= Ecm::Staff::Configuration.default_markup_language
47
+ end
48
+ end
@@ -0,0 +1,12 @@
1
+ .media.person-preview.well{:id => dom_id(person)}
2
+ .preview-picture.pull-left
3
+ - if person.preview_picture.present?
4
+ = image_tag(person.preview_picture_image_url(:medium_thumb))
5
+ - else
6
+ .preview-picture-placeholder.well
7
+ &#x263A;
8
+ .media-heading
9
+ .person-description
10
+ = person.description.to_html.html_safe if person.description.present?
11
+ .person-positions
12
+ = render 'person_positions_table', person: person if person.person_positions.present?
@@ -0,0 +1,13 @@
1
+ .media.person-preview.well{ id: dom_id(person) }
2
+ .preview-picture.pull-left
3
+ - if person.preview_picture.present?
4
+ = link_to person do
5
+ = image_tag(person.preview_picture_image_url(:medium_thumb))
6
+ - else
7
+ .preview-picture-placeholder.well= link_to "&#x263A;".html_safe, person
8
+ .media-heading
9
+ %h4= link_to person.fullname_with_prefix, person
10
+ .person-description
11
+ = person.description.to_html.html_safe if person.description.present?
12
+ .person-positions
13
+ = render 'person_positions_table', person: person if person.person_positions.present?
@@ -0,0 +1,9 @@
1
+ %table.table
2
+ %thead
3
+ %tr
4
+ %th= Ecm::Staff::PersonPosition.human_attribute_name(:position)
5
+ %th= Ecm::Staff::PersonPosition.human_attribute_name(:begin_at)
6
+ %th= Ecm::Staff::PersonPosition.human_attribute_name(:end_at)
7
+ %tbody
8
+ - person.person_positions.each do |person_position|
9
+ = render 'ecm/staff/person_positions/person_position_as_table_row', person_position: person_position
@@ -0,0 +1,3 @@
1
+ %h1= Ecm::Staff::Person.model_name.human(count: :other)
2
+
3
+ = render partial: 'ecm/staff/people/person_in_index', collection: @collection, as: :person
@@ -0,0 +1,5 @@
1
+ %h1= @resource
2
+ = render @resource
3
+ = link_to :back, class: "btn btn-primary link-back" do
4
+ %i.icon-arrow-left
5
+ = t('.back')
@@ -0,0 +1,4 @@
1
+ %tr
2
+ %td= person_position.position
3
+ %td= l(person_position.begin_at) if person_position.begin_at.present?
4
+ %td= l(person_position.end_at) if person_position.end_at.present?
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Staff</title>
5
+ <%= stylesheet_link_tag "ecm/staff/application", media: "all" %>
6
+ <%= javascript_include_tag "ecm/staff/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,60 @@
1
+ de:
2
+ activerecord:
3
+ models:
4
+ ecm/staff/business_unit:
5
+ one: Abteilung
6
+ other: Abteilungen
7
+ ecm/staff/organisation:
8
+ one: Unternehmen
9
+ other: Unternehmen
10
+ ecm/staff/person:
11
+ one: Mitarbeiter
12
+ other: Mitarbeiter
13
+ ecm/staff/position:
14
+ one: Stelle
15
+ other: Stellen
16
+ attributes:
17
+ ecm/staff/business_unit:
18
+ description: Beschreibung
19
+ markup_language: Markupsprache
20
+ name: Name
21
+ organisation_id: Unternehmen
22
+ parent_id: Übergeordnete Abteilung
23
+ created_at: Erstellt am
24
+ updated_at: Aktualisiert am
25
+ ecm/staff/organisation:
26
+ description: Beschreibung
27
+ markup_language: Markupsprache
28
+ name: Name
29
+ created_at: Erstellt am
30
+ updated_at: Aktualisiert am
31
+ ecm/staff/person:
32
+ age: Alter
33
+ birthdate: Geburtsdatum
34
+ description: Beschreibung
35
+ firstname: Vorname
36
+ fullname: Name
37
+ lastname: Nachname
38
+ markup_language: Markupsprache
39
+ person_positions: Stellen
40
+ position: Position
41
+ prefix: Prefix
42
+ preview_picture: Bild
43
+ created_at: Erstellt am
44
+ updated_at: Aktualisiert am
45
+ ecm/staff/position:
46
+ description: Beschreibung
47
+ markup_language: Markupsprache
48
+ name: Name
49
+ parent_id: Übergeordnete Position
50
+ created_at: Erstellt am
51
+ updated_at: Aktualisiert am
52
+ ecm:
53
+ staff:
54
+ people:
55
+ show:
56
+ back: 'Zurück'
57
+ routes:
58
+ business_units: 'abteilungen'
59
+ organsiations: 'organisationen'
60
+ people: 'mitarbeiter'
data/config/routes.rb ADDED
@@ -0,0 +1,7 @@
1
+ Ecm::Staff::Engine.routes.draw do
2
+ localized do
3
+ resources :organisations
4
+ resources :business_units
5
+ resources :people
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ class CreateEcmStaffOrganisations < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_staff_organisations do |t|
4
+ t.string :name
5
+ t.text :description
6
+
7
+ # acts as markup
8
+ t.string :markup_language
9
+
10
+ # friendly id
11
+ t.string :slug
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ class CreateEcmStaffBusinessUnits < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_staff_business_units do |t|
4
+ t.references :organisation
5
+
6
+ t.string :name
7
+ t.text :description
8
+
9
+ # acts as markup
10
+ t.string :markup_language
11
+
12
+ # friendly id
13
+ t.string :slug
14
+
15
+ # awesome nested set
16
+ t.references :parent
17
+ t.integer :lft
18
+ t.integer :rgt
19
+ t.integer :depth
20
+
21
+ t.timestamps
22
+ end
23
+ add_index :ecm_staff_business_units, :organisation_id
24
+ add_index :ecm_staff_business_units, :parent_id
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ class CreateEcmStaffPositions < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_staff_positions do |t|
4
+ t.string :name
5
+ t.text :description
6
+
7
+ # acts as markup
8
+ t.string :markup_language
9
+
10
+ # awesome nested set
11
+ t.references :parent
12
+ t.integer :lft
13
+ t.integer :rgt
14
+ t.integer :depth
15
+
16
+ # friendly id
17
+ t.string :slug
18
+
19
+ t.timestamps
20
+ end
21
+ add_index :ecm_staff_positions, :parent_id
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ class CreateEcmStaffPersonPositions < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_staff_person_positions do |t|
4
+ t.references :person
5
+ t.references :business_unit
6
+ t.references :position
7
+
8
+ t.date :begin_at
9
+ t.date :end_at
10
+
11
+ t.timestamps
12
+ end
13
+ add_index :ecm_staff_person_positions, :person_id
14
+ add_index :ecm_staff_person_positions, :business_unit_id
15
+ add_index :ecm_staff_person_positions, :position_id
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ class CreateEcmStaffPeople < ActiveRecord::Migration
2
+ def change
3
+ create_table :ecm_staff_people do |t|
4
+ t.string :prefix
5
+ t.string :firstname
6
+ t.string :lastname
7
+ t.date :birthdate
8
+ t.text :description
9
+
10
+ # acts as list
11
+ t.integer :position
12
+
13
+ # acts as markup
14
+ t.string :markup_language
15
+
16
+ # friendly id
17
+ t.string :slug
18
+
19
+ t.timestamps
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcmStaffOrganisationTranslations < ActiveRecord::Migration
2
+ def up
3
+ Ecm::Staff::Organisation.create_translation_table!({
4
+ name: :string,
5
+ description: :text,
6
+ slug: :string
7
+ }, migrate_data: true)
8
+ end
9
+
10
+ def down
11
+ Ecm::Staff::Organisation.drop_translation_table!(migrate_data: true)
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcmStaffBusinessUnitTranslations < ActiveRecord::Migration
2
+ def up
3
+ Ecm::Staff::BusinessUnit.create_translation_table!({
4
+ name: :string,
5
+ description: :text,
6
+ slug: :string
7
+ }, migrate_data: true)
8
+ end
9
+
10
+ def down
11
+ Ecm::Staff::BusinessUnit.drop_translation_table!(migrate_data: true)
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcmStaffPositionTranslations < ActiveRecord::Migration
2
+ def up
3
+ Ecm::Staff::Position.create_translation_table!({
4
+ name: :string,
5
+ description: :text,
6
+ slug: :string
7
+ }, migrate_data: true)
8
+ end
9
+
10
+ def down
11
+ Ecm::Staff::Position.drop_translation_table!(migrate_data: true)
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateEcmStaffPersonTranslations < ActiveRecord::Migration
2
+ def up
3
+ Ecm::Staff::Person.create_translation_table!({
4
+ prefix: :string,
5
+ description: :text,
6
+ slug: :string
7
+ }, migrate_data: true)
8
+ end
9
+
10
+ def down
11
+ Ecm::Staff::Person.drop_translation_table!(migrate_data: true)
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ module Ecm
2
+ module Staff
3
+ module Configuration
4
+ def configure
5
+ yield self
6
+ end
7
+
8
+ mattr_accessor(:default_markup_language) { :textile }
9
+ mattr_accessor(:markup_languages) { [:textile] }
10
+ mattr_accessor(:person_class_name) { 'Person' }
11
+ mattr_accessor(:base_controller) { '::ApplicationController' }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Ecm
2
+ module Staff
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Ecm::Staff
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module Ecm::Staff
2
+ class Routing
3
+ def self.routes(router, options = {})
4
+ options.reverse_merge!(
5
+ { organisations_actions: [:index, :show],
6
+ business_units_actions: [:index, :show],
7
+ people_actions: [:index, :show],
8
+ }
9
+ )
10
+
11
+ router.resources :ecm_staff_organisations, only: options[:organisations_actions],
12
+ controller: 'ecm/staff/organisations'
13
+ router.resources :ecm_staff_business_units, only: options[:business_units_actions],
14
+ controller: 'ecm/staff/business_units'
15
+ router.resources :ecm_staff_people, only: options[:people_actions],
16
+ controller: 'ecm/staff/people'
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ module Ecm
2
+ module Staff
3
+ VERSION = '0.0.1'.freeze
4
+ end
5
+ end
data/lib/ecm/staff.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'ecm/staff/configuration'
2
+
3
+ module Ecm
4
+ module Staff
5
+ extend Configuration
6
+ end
7
+ end
data/lib/ecm_staff2.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'awesome_nested_set'
2
+ require 'friendly_id'
3
+ require 'globalize'
4
+ require 'route_translator'
5
+
6
+ require 'ecm/staff'
7
+ require 'ecm/staff/engine'
8
+ require 'ecm/staff/routing'
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :staff do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,8 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :ecm_staff_business_unit, class: Ecm::Staff::BusinessUnit do
5
+ association :organisation, factory: :ecm_staff_organisation
6
+ sequence(:name) { |i| "Business Unit ##{i}" }
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :ecm_staff_organisation, class: Ecm::Staff::Organisation do
5
+ sequence(:name) { |i| "Organisation ##{i}" }
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :ecm_staff_person, class: Ecm::Staff::Person do
5
+ firstname 'John'
6
+ lastname 'Doe'
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :ecm_staff_person_position, class: Ecm::Staff::PersonPosition do
5
+ association :person, factory: :ecm_staff_person
6
+ association :business_unit, factory: :ecm_staff_business_unit
7
+ association :position, factory: :ecm_staff_position
8
+ begin_at 1.year.ago
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :ecm_staff_position, class: Ecm::Staff::Position do
5
+ sequence(:name) { |i| "Position ##{i}" }
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ecm_staff2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Roberto Vasquez Angel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: awesome_nested_set
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: friendly_id
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: globalize
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: route_translator
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Ecm::Staff Module.
84
+ email:
85
+ - roberto@vasquez-angel.de
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - MIT-LICENSE
91
+ - README.rdoc
92
+ - Rakefile
93
+ - app/assets/javascripts/ecm/staff/application.js
94
+ - app/assets/stylesheets/ecm/staff/application.css
95
+ - app/controllers/ecm/staff/application_controller.rb
96
+ - app/controllers/ecm/staff/people_controller.rb
97
+ - app/helpers/ecm/staff/application_helper.rb
98
+ - app/models/ecm/staff/base.rb
99
+ - app/models/ecm/staff/business_unit.rb
100
+ - app/models/ecm/staff/organisation.rb
101
+ - app/models/ecm/staff/person.rb
102
+ - app/models/ecm/staff/person_position.rb
103
+ - app/models/ecm/staff/position.rb
104
+ - app/views/ecm/staff/people/_person.haml
105
+ - app/views/ecm/staff/people/_person_in_index.haml
106
+ - app/views/ecm/staff/people/_person_positions_table.haml
107
+ - app/views/ecm/staff/people/index.haml
108
+ - app/views/ecm/staff/people/show.haml
109
+ - app/views/ecm/staff/person_positions/_person_position_as_table_row.haml
110
+ - app/views/layouts/ecm/staff/application.html.erb
111
+ - config/locales/de.yml
112
+ - config/routes.rb
113
+ - db/migrate/001_create_ecm_staff_organisations.rb
114
+ - db/migrate/002_create_ecm_staff_business_units.rb
115
+ - db/migrate/003_create_ecm_staff_positions.rb
116
+ - db/migrate/004_create_ecm_staff_person_positions.rb
117
+ - db/migrate/005_create_ecm_staff_people.rb
118
+ - db/migrate/006_create_ecm_staff_organisation_translations.rb
119
+ - db/migrate/007_create_ecm_staff_business_unit_translations.rb
120
+ - db/migrate/008_create_ecm_staff_position_translations.rb
121
+ - db/migrate/009_create_ecm_staff_person_translations.rb
122
+ - lib/ecm/staff.rb
123
+ - lib/ecm/staff/configuration.rb
124
+ - lib/ecm/staff/engine.rb
125
+ - lib/ecm/staff/routing.rb
126
+ - lib/ecm/staff/version.rb
127
+ - lib/ecm_staff2.rb
128
+ - lib/tasks/ecm/staff_tasks.rake
129
+ - spec/factories/ecm_staff_business_units.rb
130
+ - spec/factories/ecm_staff_organisations.rb
131
+ - spec/factories/ecm_staff_people.rb
132
+ - spec/factories/ecm_staff_person_positions.rb
133
+ - spec/factories/ecm_staff_positions.rb
134
+ homepage: https://github.com/robotex82/ecm_staff2
135
+ licenses:
136
+ - MIT
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.4.8
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: Ecm::Staff.
158
+ test_files: []
159
+ has_rdoc: