dorsale 3.6.1 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/app/controllers/concerns/dorsale/flyboy/tasks_summary_concern.rb +1 -2
  4. data/app/controllers/dorsale/customer_vault/activity_types_controller.rb +76 -0
  5. data/app/controllers/dorsale/customer_vault/origins_controller.rb +76 -0
  6. data/app/controllers/dorsale/customer_vault/people_controller.rb +2 -0
  7. data/app/controllers/dorsale/flyboy/task_comments_controller.rb +1 -1
  8. data/app/controllers/dorsale/flyboy/tasks_controller.rb +1 -1
  9. data/app/models/dorsale/alexandrie/attachment.rb +1 -1
  10. data/app/models/dorsale/comment.rb +1 -1
  11. data/app/models/dorsale/customer_vault/activity_type.rb +9 -0
  12. data/app/models/dorsale/customer_vault/individual.rb +7 -0
  13. data/app/models/dorsale/customer_vault/origin.rb +9 -0
  14. data/app/models/dorsale/customer_vault/person.rb +3 -0
  15. data/app/models/dorsale/flyboy/task.rb +1 -1
  16. data/app/models/dorsale/flyboy/task_comment.rb +1 -1
  17. data/app/policies/dorsale/customer_vault/activity_type_policy_helper.rb +7 -0
  18. data/app/policies/dorsale/customer_vault/origin_policy_helper.rb +7 -0
  19. data/app/policies/dorsale/flyboy/task_policy_helper.rb +1 -0
  20. data/app/policies/dorsale/policy_checker.rb +2 -0
  21. data/app/views/dorsale/customer_vault/activity_types/_form.html.slim +13 -0
  22. data/app/views/dorsale/customer_vault/activity_types/_index_actions.html.slim +2 -0
  23. data/app/views/dorsale/customer_vault/activity_types/_list.html.slim +17 -0
  24. data/app/views/dorsale/customer_vault/activity_types/edit.html.slim +1 -0
  25. data/app/views/dorsale/customer_vault/activity_types/index.html.slim +11 -0
  26. data/app/views/dorsale/customer_vault/activity_types/new.html.slim +1 -0
  27. data/app/views/dorsale/customer_vault/origins/_form.html.slim +13 -0
  28. data/app/views/dorsale/customer_vault/origins/_index_actions.html.slim +2 -0
  29. data/app/views/dorsale/customer_vault/origins/_list.html.slim +17 -0
  30. data/app/views/dorsale/customer_vault/origins/edit.html.slim +1 -0
  31. data/app/views/dorsale/customer_vault/origins/index.html.slim +11 -0
  32. data/app/views/dorsale/customer_vault/origins/new.html.slim +1 -0
  33. data/app/views/dorsale/customer_vault/people/_context_general.html.slim +2 -0
  34. data/app/views/dorsale/customer_vault/people/_form.html.slim +3 -0
  35. data/app/views/dorsale/flyboy/task_comments/_list.html.slim +10 -6
  36. data/app/views/dorsale/flyboy/tasks/_form.html.slim +1 -1
  37. data/config/locales/customer_vault.en.yml +26 -0
  38. data/config/locales/customer_vault.fr.yml +25 -0
  39. data/config/locales/dorsale.en.yml +2 -0
  40. data/config/locales/dorsale.fr.yml +2 -0
  41. data/config/locales/flyboy.en.yml +0 -1
  42. data/config/locales/flyboy.fr.yml +0 -1
  43. data/config/routes.rb +4 -0
  44. data/db/migrate/20170427082626_create_dorsale_customer_vault_origins.rb +8 -0
  45. data/db/migrate/20170427082920_create_dorsale_customer_vault_activity_types.rb +8 -0
  46. data/db/migrate/20170427083541_remove_useless_polymorphic_belongs_to.rb +9 -0
  47. data/db/migrate/20170427093507_add_origin_and_activity_type_to_customer_vault_people.rb +6 -0
  48. data/features/customer_vault_activity_types.feature +19 -0
  49. data/features/customer_vault_origins.feature +19 -0
  50. data/features/step_definitions/customer_vault_activity_types_steps.rb +42 -0
  51. data/features/step_definitions/customer_vault_origins_steps.rb +42 -0
  52. data/lib/dorsale/version.rb +1 -1
  53. data/spec/controllers/dorsale/flyboy/tasks_controller_spec.rb +4 -4
  54. data/spec/factories/customer_vault_activity_types.rb +5 -0
  55. data/spec/factories/customer_vault_corporations.rb +8 -6
  56. data/spec/factories/customer_vault_individuals.rb +1 -0
  57. data/spec/factories/customer_vault_origins.rb +5 -0
  58. data/spec/models/dorsale/customer_vault/activity_type_spec.rb +8 -0
  59. data/spec/models/dorsale/customer_vault/corporation_spec.rb +3 -0
  60. data/spec/models/dorsale/customer_vault/individual_spec.rb +24 -0
  61. data/spec/models/dorsale/customer_vault/origin_spec.rb +8 -0
  62. data/spec/routing/dorsale/customer_vault/activity_types_routing_spec.rb +40 -0
  63. data/spec/routing/dorsale/customer_vault/origins_routing_spec.rb +40 -0
  64. metadata +44 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b1e9d0f347103fbdd22f9b4dcf92688e3c4f2dc
4
- data.tar.gz: 65ea3dd53a8de8bb9fc4c7769d438a3d63711e22
3
+ metadata.gz: 523d3264e16c525112422f6ec7beb74c0c28a2e8
4
+ data.tar.gz: 5018061784efc57024e7787e055bb8f64ed6be2c
5
5
  SHA512:
6
- metadata.gz: a9d8a3a529b0353e2867e08daea7065d4053c3f9ddc333633a085c9a5b3c6e0068261b009b36fc2aabb0c61fb02e89993cae7334c690cd9117f6f7b1cb815355
7
- data.tar.gz: b11827ac3d227f2790eed5693491b0a7b23d62baa6cd344ae0a7fa8ec78e111a7f08318dcfd0433b54e9d83cb4360944ffbf8f71b16c772c24f689b8f58eb9c9
6
+ metadata.gz: 9497cb875ece483c790e5aae3a5c1661b3e9fade30246d9c9a269ea1239f642056c6898ba981197829eca38263cc9eb9452723a3e849c391e44e0983da0810bb
7
+ data.tar.gz: 16ecb86b3ad8dd7df1992bc507b091c479657dd4a3172a5ced80e1434051bbadb5b3656f4c3453f38a4ac36894ff488e7c7e34abbe1dfb628f21863bf1b4f8eb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0
4
+
5
+ - Remove some useless "polymorphic" belongs_to
6
+ - Add `comment?` action to task policy
7
+ - CustomerVault : origins and activity types
8
+
3
9
  ## 3.6.1
4
10
 
5
11
  - CSS fix
@@ -2,8 +2,7 @@ module Dorsale::Flyboy::TasksSummaryConcern
2
2
  extend ActiveSupport::Concern
3
3
 
4
4
  def setup_tasks_summary
5
- tasks = policy_scope(::Dorsale::Flyboy::Task)
6
- .where("(owner_id IS NULL and owner_type IS NULL) OR (owner_id = ? and owner_type = ?)", current_user.id, current_user.class)
5
+ tasks = policy_scope(::Dorsale::Flyboy::Task).where(owner: [current_user, nil])
7
6
 
8
7
  @delayed_tasks = tasks.delayed
9
8
  @today_tasks = tasks.today
@@ -0,0 +1,76 @@
1
+ class Dorsale::CustomerVault::ActivityTypesController < ::Dorsale::CustomerVault::ApplicationController
2
+ before_action :set_objects, only: [:edit, :update]
3
+
4
+ def index
5
+ authorize model, :list?
6
+
7
+ @activity_types ||= scope.all
8
+ end
9
+
10
+ def new
11
+ @activity_type ||= scope.new
12
+
13
+ authorize @activity_type, :create?
14
+ end
15
+
16
+ def create
17
+ @activity_type ||= scope.new(activity_type_params_for_create)
18
+
19
+ authorize @activity_type, :create?
20
+
21
+ if @activity_type.save
22
+ flash[:notice] = t("messages.activity_types.create_ok")
23
+ redirect_to back_url
24
+ else
25
+ render action: :new
26
+ end
27
+ end
28
+
29
+ def edit
30
+ authorize @activity_type, :update?
31
+ end
32
+
33
+ def update
34
+ authorize @activity_type, :update?
35
+
36
+ if @activity_type.update(activity_type_params_for_update)
37
+ flash[:notice] = t("messages.activity_types.update_ok")
38
+ redirect_to back_url
39
+ else
40
+ render action: :edit
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def set_objects
47
+ @activity_type ||= scope.find(params[:id])
48
+ end
49
+
50
+ def model
51
+ ::Dorsale::CustomerVault::ActivityType
52
+ end
53
+
54
+ def back_url
55
+ customer_vault_activity_types_path
56
+ end
57
+
58
+ def permitted_params
59
+ [
60
+ :name,
61
+ ]
62
+ end
63
+
64
+ def activity_type_params
65
+ params.fetch(:activity_type, {}).permit(permitted_params)
66
+ end
67
+
68
+ def activity_type_params_for_create
69
+ activity_type_params
70
+ end
71
+
72
+ def activity_type_params_for_update
73
+ activity_type_params
74
+ end
75
+
76
+ end
@@ -0,0 +1,76 @@
1
+ class Dorsale::CustomerVault::OriginsController < ::Dorsale::CustomerVault::ApplicationController
2
+ before_action :set_objects, only: [:edit, :update]
3
+
4
+ def index
5
+ authorize model, :list?
6
+
7
+ @origins ||= scope.all
8
+ end
9
+
10
+ def new
11
+ @origin ||= scope.new
12
+
13
+ authorize @origin, :create?
14
+ end
15
+
16
+ def create
17
+ @origin ||= scope.new(origin_params_for_create)
18
+
19
+ authorize @origin, :create?
20
+
21
+ if @origin.save
22
+ flash[:notice] = t("messages.origins.create_ok")
23
+ redirect_to back_url
24
+ else
25
+ render action: :new
26
+ end
27
+ end
28
+
29
+ def edit
30
+ authorize @origin, :update?
31
+ end
32
+
33
+ def update
34
+ authorize @origin, :update?
35
+
36
+ if @origin.update(origin_params_for_update)
37
+ flash[:notice] = t("messages.origins.update_ok")
38
+ redirect_to back_url
39
+ else
40
+ render action: :edit
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def set_objects
47
+ @origin ||= scope.find(params[:id])
48
+ end
49
+
50
+ def model
51
+ ::Dorsale::CustomerVault::Origin
52
+ end
53
+
54
+ def back_url
55
+ customer_vault_origins_path
56
+ end
57
+
58
+ def permitted_params
59
+ [
60
+ :name,
61
+ ]
62
+ end
63
+
64
+ def origin_params
65
+ params.fetch(:origin, {}).permit(permitted_params)
66
+ end
67
+
68
+ def origin_params_for_create
69
+ origin_params
70
+ end
71
+
72
+ def origin_params_for_update
73
+ origin_params
74
+ end
75
+
76
+ end
@@ -153,6 +153,8 @@ class Dorsale::CustomerVault::PeopleController < ::Dorsale::CustomerVault::Appli
153
153
  :linkedin,
154
154
  :viadeo,
155
155
  :context,
156
+ :origin_id,
157
+ :activity_type_id,
156
158
  :tag_list => [],
157
159
  :address_attributes => [
158
160
  :street,
@@ -5,7 +5,7 @@ class Dorsale::Flyboy::TaskCommentsController < ::Dorsale::Flyboy::ApplicationCo
5
5
  @task_comment ||= model.new(task_comment_params_for_create)
6
6
  @task ||= @task_comment.task
7
7
 
8
- authorize @task, :update?
8
+ authorize @task, :comment?
9
9
 
10
10
  if @task_comment.save
11
11
  redirect_to @task
@@ -186,7 +186,7 @@ class Dorsale::Flyboy::TasksController < ::Dorsale::Flyboy::ApplicationControlle
186
186
  :reminder_date,
187
187
  :reminder_duration,
188
188
  :reminder_unit,
189
- :owner_guid,
189
+ :owner_id,
190
190
  ]
191
191
  end
192
192
 
@@ -2,7 +2,7 @@ class Dorsale::Alexandrie::Attachment < ::Dorsale::ApplicationRecord
2
2
  self.table_name = "dorsale_alexandrie_attachments"
3
3
 
4
4
  belongs_to :attachable, polymorphic: true
5
- belongs_to :sender, polymorphic: true
5
+ belongs_to :sender, class_name: User
6
6
 
7
7
  belongs_to :attachment_type, required: false
8
8
 
@@ -1,5 +1,5 @@
1
1
  class Dorsale::Comment < ::Dorsale::ApplicationRecord
2
- belongs_to :author, polymorphic: true
2
+ belongs_to :author, class_name: User
3
3
  belongs_to :commentable, polymorphic: true
4
4
 
5
5
  validates :author, presence: true
@@ -0,0 +1,9 @@
1
+ class Dorsale::CustomerVault::ActivityType < ::Dorsale::ApplicationRecord
2
+ self.table_name = "dorsale_customer_vault_activity_types"
3
+
4
+ validates :name, presence: true
5
+
6
+ def to_s
7
+ name
8
+ end
9
+ end
@@ -14,6 +14,13 @@ class Dorsale::CustomerVault::Individual < Dorsale::CustomerVault::Person
14
14
  [self.last_name, self.first_name].join(", ")
15
15
  end
16
16
 
17
+ def activity_type
18
+ corporation.try(:activity_type)
19
+ end
20
+
17
21
  private def corporation_name; raise NoMethodError; end
18
22
  private def corporation_name=; raise NoMethodError; end
23
+ private def activity_type=; raise NoMethodError; end
24
+ private def activity_type_id; raise NoMethodError; end
25
+ private def activity_type_id=; raise NoMethodError; end
19
26
  end
@@ -0,0 +1,9 @@
1
+ class Dorsale::CustomerVault::Origin < ::Dorsale::ApplicationRecord
2
+ self.table_name = "dorsale_customer_vault_origins"
3
+
4
+ validates :name, presence: true
5
+
6
+ def to_s
7
+ name
8
+ end
9
+ end
@@ -27,6 +27,9 @@ class Dorsale::CustomerVault::Person < ::Dorsale::ApplicationRecord
27
27
  has_many :invoices, class_name: ::Dorsale::BillingMachine::Invoice, as: :customer
28
28
  accepts_nested_attributes_for :address, allow_destroy: true
29
29
 
30
+ belongs_to :activity_type, class_name: ::Dorsale::CustomerVault::ActivityType
31
+ belongs_to :origin, class_name: ::Dorsale::CustomerVault::Origin
32
+
30
33
  after_destroy :destroy_links
31
34
 
32
35
  default_scope -> {
@@ -9,7 +9,7 @@ class Dorsale::Flyboy::Task < ::Dorsale::ApplicationRecord
9
9
  paginates_per 50
10
10
 
11
11
  belongs_to :taskable, polymorphic: true, required: false
12
- belongs_to :owner, polymorphic: true
12
+ belongs_to :owner, class_name: User
13
13
  has_many :comments, class_name: ::Dorsale::Flyboy::TaskComment, inverse_of: :task, dependent: :destroy
14
14
 
15
15
  polymorphic_id_for :taskable
@@ -2,7 +2,7 @@ class Dorsale::Flyboy::TaskComment < ::Dorsale::ApplicationRecord
2
2
  self.table_name = "dorsale_flyboy_task_comments"
3
3
 
4
4
  belongs_to :task
5
- belongs_to :author, polymorphic: true
5
+ belongs_to :author, class_name: User
6
6
 
7
7
  validates :author, presence: true
8
8
  validates :task, presence: true
@@ -0,0 +1,7 @@
1
+ module Dorsale::CustomerVault::ActivityTypePolicyHelper
2
+ POLICY_METHODS = [
3
+ :list?,
4
+ :create?,
5
+ :update?,
6
+ ]
7
+ end
@@ -0,0 +1,7 @@
1
+ module Dorsale::CustomerVault::OriginPolicyHelper
2
+ POLICY_METHODS = [
3
+ :list?,
4
+ :create?,
5
+ :update?,
6
+ ]
7
+ end
@@ -4,6 +4,7 @@ module Dorsale::Flyboy::TaskPolicyHelper
4
4
  :export?,
5
5
  :create?,
6
6
  :read?,
7
+ :comment?,
7
8
  :update?,
8
9
  :delete?,
9
10
  :complete?,
@@ -16,6 +16,8 @@ class Dorsale::PolicyChecker
16
16
  check_policy! "Dorsale::CustomerVault::EventPolicy"
17
17
  check_policy! "Dorsale::CustomerVault::PersonPolicy"
18
18
  check_policy! "Dorsale::CustomerVault::LinkPolicy"
19
+ check_policy! "Dorsale::CustomerVault::OriginPolicy"
20
+ check_policy! "Dorsale::CustomerVault::ActivityTypePolicy"
19
21
  check_policy! "Dorsale::ExpenseGun::CategoryPolicy"
20
22
  check_policy! "Dorsale::ExpenseGun::ExpensePolicy"
21
23
  check_policy! "Dorsale::Flyboy::TaskPolicy"
@@ -0,0 +1,13 @@
1
+ .panel.panel-default
2
+ .panel-heading: .panel-title
3
+ - if @activity_type.new_record?
4
+ = t("customer_vault.activity_type.actions.create")
5
+ - else
6
+ = t("actions.update")
7
+ = " : "
8
+ = @activity_type
9
+
10
+ .panel-body
11
+ = horizontal_form_for @activity_type, as: :activity_type do |f|
12
+ = f.input :name
13
+ = form_buttons
@@ -0,0 +1,2 @@
1
+ - if policy(::Dorsale::CustomerVault::ActivityType).create?
2
+ = create_button new_customer_vault_activity_type_path, action: :create
@@ -0,0 +1,17 @@
1
+ table.table.default#activity_type
2
+ thead
3
+ tr
4
+ th.actions.activity_type-name
5
+ = ::Dorsale::CustomerVault::ActivityType.t(:name)
6
+ th.actions.activity_type-action
7
+ = "Action"
8
+
9
+ tbody
10
+ - @activity_types.each do |activity_type|
11
+ tr.actions.activity_type
12
+ td.actions.activity_type-name
13
+ = activity_type
14
+
15
+ td.actions.activity_type-action
16
+ - if policy(activity_type).create?
17
+ = update_button edit_customer_vault_activity_type_path(activity_type), id: "edit-#{activity_type.id}"
@@ -0,0 +1,11 @@
1
+ .customer_vault
2
+ - content_for :title
3
+ = ::Dorsale::CustomerVault::ActivityType.ts
4
+
5
+ - content_for :actions
6
+ = render "dorsale/customer_vault/activity_types/index_actions"
7
+
8
+ - content_for :table
9
+ = render "dorsale/customer_vault/activity_types/list", activity_types: @activity_types
10
+
11
+ = render_dorsale_page
@@ -0,0 +1 @@
1
+ = render "form"
@@ -0,0 +1,13 @@
1
+ .panel.panel-default
2
+ .panel-heading: .panel-title
3
+ - if @origin.new_record?
4
+ = t("customer_vault.origin.actions.create")
5
+ - else
6
+ = t("actions.update")
7
+ = " : "
8
+ = @origin
9
+
10
+ .panel-body
11
+ = horizontal_form_for @origin, as: :origin do |f|
12
+ = f.input :name
13
+ = form_buttons
@@ -0,0 +1,2 @@
1
+ - if policy(::Dorsale::CustomerVault::Origin).create?
2
+ = create_button new_customer_vault_origin_path, action: :create
@@ -0,0 +1,17 @@
1
+ table.table.default#origin
2
+ thead
3
+ tr
4
+ th.actions.origin-name
5
+ = ::Dorsale::CustomerVault::Origin.t(:name)
6
+ th.actions.origin-action
7
+ = "Action"
8
+
9
+ tbody
10
+ - @origins.each do |origin|
11
+ tr.actions.origin
12
+ td.actions.origin-name
13
+ = origin
14
+
15
+ td.actions.origin-action
16
+ - if policy(origin).create?
17
+ = update_button edit_customer_vault_origin_path(origin), id: "edit-#{origin.id}"
@@ -0,0 +1 @@
1
+ = render "form"
@@ -0,0 +1,11 @@
1
+ .customer_vault
2
+ - content_for :title
3
+ = ::Dorsale::CustomerVault::Origin.ts
4
+
5
+ - content_for :actions
6
+ = render "dorsale/customer_vault/origins/index_actions"
7
+
8
+ - content_for :table
9
+ = render "dorsale/customer_vault/origins/list", origins: @origins
10
+
11
+ = render_dorsale_page
@@ -0,0 +1 @@
1
+ = render "form"
@@ -1,5 +1,7 @@
1
1
  .sub-context
2
2
  = info person, :tags, tags(person)
3
+ = info person, :activity_type
4
+ = info person, :origin
3
5
 
4
6
  - if person.individual?
5
7
  = info person, :corporation, helper: :link_to_object
@@ -11,6 +11,9 @@
11
11
 
12
12
  = f.input :short_name
13
13
  = render "dorsale/forms/avatar", f: f
14
+ = f.association :origin, collection: policy_scope(Dorsale::CustomerVault::Origin), input_html: {class: 'select2'}
15
+ - if @person.corporation?
16
+ = f.association :activity_type, collection: policy_scope(Dorsale::CustomerVault::ActivityType), input_html: {class: 'select2'}
14
17
  = f.input :tag_list, collection: @tags, input_html: {multiple: true}
15
18
 
16
19
  .panel.panel-default
@@ -9,12 +9,12 @@
9
9
  = Dorsale::Flyboy::TaskComment.t(:description)
10
10
 
11
11
  tbody
12
- - if policy(@task).update?
12
+ - if policy(@task).comment?
13
13
  tr#new_task_comment_tr
14
14
  td.task_comment-progress
15
15
  = f.input :progress, label: false
16
16
 
17
- td.task_comment-description
17
+ td.task_comment-content
18
18
  = f.hidden_field :task_id
19
19
 
20
20
  .textarea-input-group
@@ -23,12 +23,16 @@
23
23
 
24
24
 
25
25
  - @task.reload.comments.map do |comment|
26
- tr
26
+ tr.task_comment
27
27
  td.task_comment-progress
28
28
  = progress_bar percentage: comment.progress, label: true
29
29
 
30
- td.task_comment-description
30
+ td.task_comment-content
31
31
  p: small
32
- span.date = date(comment.date)
32
+ span.task_comment-date = date(comment.date)
33
+ = " "
34
+ = comment.t(:written_by)
35
+ = " "
36
+ span.task_comment-author = comment.author
33
37
 
34
- p = text2html comment.description
38
+ p.task_comment-description = text2html comment.description
@@ -17,7 +17,7 @@
17
17
 
18
18
  .row
19
19
  .col-sm-8 = f.input :name
20
- .col-sm-4 = f.input :owner_guid, collection: @owners.map{ |e| [e.to_s, e.guid] }
20
+ .col-sm-4 = f.input :owner_id, collection: @owners
21
21
 
22
22
  = f.input :description, input_html: {rows: 5}
23
23
  = render "dorsale/flyboy/tasks/term_fields", f: f
@@ -7,6 +7,14 @@ en:
7
7
  address_informations: "Address informations"
8
8
  additional_informations: "Additional informations"
9
9
 
10
+ origin:
11
+ actions:
12
+ create: "New origin"
13
+
14
+ activity_type:
15
+ actions:
16
+ create: "New activity type"
17
+
10
18
  messages:
11
19
  no_people: "No people find."
12
20
  no_activity: "No recent activity."
@@ -29,6 +37,14 @@ en:
29
37
  delete_ok : "Link deleted."
30
38
  delete_error : "One error occurs, link not deleted."
31
39
 
40
+ origins:
41
+ create_ok : "Origin created."
42
+ update_ok : "Origin updated."
43
+
44
+ activity_types:
45
+ create_ok : "Activity created."
46
+ update_ok : "Activity updated."
47
+
32
48
  actions:
33
49
  new_individual: "New individual"
34
50
  new_corporation: "New corporation"
@@ -53,6 +69,13 @@ en:
53
69
  dorsale/customer_vault/event:
54
70
  one: "Event"
55
71
  other: "Events"
72
+ dorsale/customer_vault/origin:
73
+ one: "Origin"
74
+ other: "Origin"
75
+ dorsale/customer_vault/activity_type:
76
+ one: "Activity type"
77
+ other: "Activity types"
78
+
56
79
 
57
80
  attributes:
58
81
  dorsale/customer_vault/person: &customer_vault_person_attributes
@@ -72,6 +95,9 @@ en:
72
95
  person_type: "Type"
73
96
  title: "Title"
74
97
  individuals: "Individuals"
98
+ origin: "Origin"
99
+ activity_type: "Activity type"
100
+
75
101
  dorsale/customer_vault/individual:
76
102
  <<: *customer_vault_person_attributes
77
103
  dorsale/customer_vault/corporation:
@@ -7,6 +7,14 @@ fr:
7
7
  address_informations: "Adresse"
8
8
  additional_informations: "Informations complémentaires"
9
9
 
10
+ origin:
11
+ actions:
12
+ create: "Nouvelle origine"
13
+
14
+ activity_type:
15
+ actions:
16
+ create: "Nouveau type d'activité"
17
+
10
18
  messages:
11
19
  no_people: "Aucune personne trouvée."
12
20
  no_activity: "Aucune activité récente."
@@ -29,6 +37,14 @@ fr:
29
37
  delete_ok : "Le lien a été supprimé."
30
38
  delete_error : "Impossible de supprimer ce lien."
31
39
 
40
+ origins:
41
+ create_ok : "L'origine a été créée."
42
+ update_ok : "L'origine a été modifiée."
43
+
44
+ activity_types:
45
+ create_ok : "Le type d'activité a été créé."
46
+ update_ok : "Le type d'activité a été modifiée."
47
+
32
48
  actions:
33
49
  new_individual: "Nouvel individu"
34
50
  new_corporation: "Nouvelle entreprise"
@@ -53,6 +69,12 @@ fr:
53
69
  dorsale/customer_vault/event:
54
70
  one: "Événement"
55
71
  other: "Événements"
72
+ dorsale/customer_vault/origin:
73
+ one: "Origine du contact"
74
+ other: "Origines du contact"
75
+ dorsale/customer_vault/activity_type:
76
+ one: "Type d'activité"
77
+ other: "Type d'activité"
56
78
 
57
79
  attributes:
58
80
  dorsale/customer_vault/person: &customer_vault_person_attributes
@@ -72,6 +94,9 @@ fr:
72
94
  person_type: "Type"
73
95
  title: "Fonction"
74
96
  individuals: "Individus"
97
+ origin: "Origine"
98
+ activity_type: "Type d'activité"
99
+
75
100
  dorsale/customer_vault/individual:
76
101
  <<: *customer_vault_person_attributes
77
102
  dorsale/customer_vault/corporation:
@@ -8,12 +8,14 @@ en:
8
8
  update_error : "One error occurs, comment can't be updated."
9
9
  delete_ok : "Comment deleted."
10
10
  delete_error : "One error occurs, comment can't be deleted."
11
+
11
12
  users:
12
13
  inactive: "This account is inactive"
13
14
  create_ok : "User created."
14
15
  create_error : "One error occurs, user can't be created."
15
16
  update_ok : "User updated."
16
17
  update_error : "One error occurs, user can't be updated."
18
+
17
19
  emails:
18
20
  user:
19
21
  new_account:
@@ -8,12 +8,14 @@ fr:
8
8
  update_error : "Impossible de modifier le commentaire."
9
9
  delete_ok : "Le commentaire a été supprimé."
10
10
  delete_error : "Impossible de supprimer le commentaire."
11
+
11
12
  users:
12
13
  inactive: "Ce compte est inactif"
13
14
  create_ok : "L'utilisateur a été créé."
14
15
  create_error : "Impossible de créer l'utilisateur."
15
16
  update_ok : "L'utilisateur a été modifié."
16
17
  update_error : "Impossible de modifier l'utilisateur."
18
+
17
19
  emails:
18
20
  user:
19
21
  new_account: