decidim-assemblies 0.29.1 → 0.30.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assembly_metadata_g_cell.rb +1 -14
  3. data/app/cells/decidim/assemblies/content_blocks/extra_data_cell.rb +2 -12
  4. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_settings_form/show.erb +1 -1
  5. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +2 -14
  6. data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -2
  7. data/app/commands/decidim/assemblies/admin/import_assembly.rb +0 -2
  8. data/app/commands/decidim/assemblies/admin/update_assembly.rb +2 -2
  9. data/app/controllers/concerns/decidim/assemblies/admin/filterable.rb +2 -11
  10. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +19 -4
  11. data/app/controllers/decidim/assemblies/admin/assembly_copies_controller.rb +1 -1
  12. data/app/controllers/decidim/assemblies/admin/assembly_landing_page_content_blocks_controller.rb +6 -0
  13. data/app/controllers/decidim/assemblies/admin/assembly_share_tokens_controller.rb +18 -0
  14. data/app/controllers/decidim/assemblies/admin/component_share_tokens_controller.rb +18 -0
  15. data/app/controllers/decidim/assemblies/assemblies_controller.rb +1 -3
  16. data/app/controllers/decidim/assemblies/{assembly_members_controller.rb → participatory_space_private_users_controller.rb} +3 -11
  17. data/app/forms/decidim/assemblies/admin/assembly_copy_form.rb +0 -1
  18. data/app/forms/decidim/assemblies/admin/assembly_form.rb +13 -48
  19. data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +0 -1
  20. data/app/helpers/decidim/assemblies/admin/assemblies_helper.rb +26 -4
  21. data/app/helpers/decidim/assemblies/assemblies_helper.rb +4 -4
  22. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +11 -15
  23. data/app/models/decidim/assembly.rb +26 -11
  24. data/app/packs/entrypoints/decidim_assemblies_admin.js +0 -1
  25. data/app/packs/entrypoints/decidim_assemblies_admin_list.js +1 -0
  26. data/app/packs/src/decidim/assemblies/admin/assemblies_list.js +72 -0
  27. data/app/permissions/decidim/assemblies/permissions.rb +9 -20
  28. data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +1 -1
  29. data/app/presenters/decidim/assemblies/assembly_presenter.rb +2 -8
  30. data/app/queries/decidim/assemblies/metrics/assemblies_metric_manage.rb +2 -2
  31. data/app/serializers/decidim/assemblies/assembly_importer.rb +0 -35
  32. data/app/serializers/decidim/assemblies/assembly_serializer.rb +11 -135
  33. data/app/serializers/decidim/assemblies/open_data_assembly_serializer.rb +59 -0
  34. data/app/views/decidim/assemblies/admin/assemblies/_assemblies_thead.html.erb +19 -0
  35. data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +101 -0
  36. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +29 -41
  37. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +18 -92
  38. data/app/views/decidim/assemblies/admin/assemblies/index.js.erb +10 -0
  39. data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +20 -0
  40. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +0 -4
  41. data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +0 -3
  42. data/app/views/decidim/assemblies/assemblies/index.html.erb +3 -1
  43. data/app/views/decidim/assemblies/assemblies/show.html.erb +5 -6
  44. data/app/views/decidim/assemblies/{assembly_members → participatory_space_private_users}/index.html.erb +6 -5
  45. data/config/assets.rb +2 -1
  46. data/config/locales/ar.yml +1 -72
  47. data/config/locales/bg.yml +0 -74
  48. data/config/locales/bn-BD.yml +1 -0
  49. data/config/locales/bs-BA.yml +29 -0
  50. data/config/locales/ca.yml +70 -74
  51. data/config/locales/cs.yml +70 -74
  52. data/config/locales/de.yml +72 -76
  53. data/config/locales/el.yml +0 -72
  54. data/config/locales/en.yml +71 -75
  55. data/config/locales/es-MX.yml +70 -74
  56. data/config/locales/es-PY.yml +70 -74
  57. data/config/locales/es.yml +70 -74
  58. data/config/locales/eu.yml +108 -112
  59. data/config/locales/fi-plain.yml +71 -75
  60. data/config/locales/fi.yml +75 -79
  61. data/config/locales/fr-CA.yml +22 -74
  62. data/config/locales/fr.yml +22 -74
  63. data/config/locales/ga-IE.yml +0 -23
  64. data/config/locales/gl.yml +0 -70
  65. data/config/locales/he-IL.yml +143 -23
  66. data/config/locales/hu.yml +0 -74
  67. data/config/locales/id-ID.yml +0 -58
  68. data/config/locales/is-IS.yml +0 -45
  69. data/config/locales/it.yml +0 -71
  70. data/config/locales/ja.yml +70 -74
  71. data/config/locales/kaa.yml +0 -9
  72. data/config/locales/ko.yml +0 -13
  73. data/config/locales/lb.yml +0 -66
  74. data/config/locales/lt.yml +0 -72
  75. data/config/locales/lv.yml +0 -69
  76. data/config/locales/nl.yml +0 -70
  77. data/config/locales/no.yml +0 -70
  78. data/config/locales/pl.yml +0 -75
  79. data/config/locales/pt-BR.yml +0 -74
  80. data/config/locales/pt.yml +0 -70
  81. data/config/locales/ro-RO.yml +5 -72
  82. data/config/locales/ru.yml +0 -57
  83. data/config/locales/sk.yml +0 -28
  84. data/config/locales/sl.yml +0 -39
  85. data/config/locales/sq-AL.yml +0 -74
  86. data/config/locales/sr-CS.yml +0 -15
  87. data/config/locales/sv.yml +75 -79
  88. data/config/locales/tr-TR.yml +0 -75
  89. data/config/locales/uk.yml +0 -57
  90. data/config/locales/zh-CN.yml +0 -69
  91. data/config/locales/zh-TW.yml +0 -72
  92. data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +2 -2
  93. data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +1 -1
  94. data/db/migrate/20240822161222_add_deleted_at_to_decidim_assemblies.rb +8 -0
  95. data/db/migrate/20241016101151_migrate_assembly_members_to_private_users.rb +53 -0
  96. data/db/migrate/20241108141651_remove_column_show_statistics_from_assemblies.rb +7 -0
  97. data/decidim-assemblies.gemspec +2 -2
  98. data/lib/decidim/api/assemblies_type_type.rb +2 -2
  99. data/lib/decidim/api/assembly_type.rb +32 -34
  100. data/lib/decidim/assemblies/admin_engine.rb +77 -54
  101. data/lib/decidim/assemblies/api.rb +0 -1
  102. data/lib/decidim/assemblies/content_blocks/registry_manager.rb +11 -0
  103. data/lib/decidim/assemblies/engine.rb +9 -3
  104. data/lib/decidim/assemblies/menu.rb +9 -22
  105. data/lib/decidim/assemblies/participatory_space.rb +7 -3
  106. data/lib/decidim/assemblies/seeds.rb +9 -33
  107. data/lib/decidim/assemblies/test/factories.rb +15 -36
  108. data/lib/decidim/assemblies/version.rb +1 -1
  109. metadata +31 -49
  110. data/app/cells/decidim/assemblies/assembly_member/data.erb +0 -19
  111. data/app/cells/decidim/assemblies/assembly_member/name_and_position.erb +0 -11
  112. data/app/cells/decidim/assemblies/assembly_member/show.erb +0 -9
  113. data/app/cells/decidim/assemblies/assembly_member_cell.rb +0 -21
  114. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +0 -55
  115. data/app/commands/decidim/assemblies/admin/destroy_assembly_member.rb +0 -24
  116. data/app/commands/decidim/assemblies/admin/update_assembly_member.rb +0 -29
  117. data/app/controllers/concerns/decidim/assemblies/admin/assembly_members/filterable.rb +0 -39
  118. data/app/controllers/decidim/assemblies/admin/assemblies_types_controller.rb +0 -107
  119. data/app/controllers/decidim/assemblies/admin/assembly_members_controller.rb +0 -83
  120. data/app/controllers/decidim/assemblies/admin/categories_controller.rb +0 -13
  121. data/app/events/decidim/assemblies/create_assembly_member_event.rb +0 -17
  122. data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +0 -64
  123. data/app/helpers/decidim/assemblies/admin/assembly_members_helper.rb +0 -11
  124. data/app/models/decidim/assembly_member.rb +0 -34
  125. data/app/packs/src/decidim/assemblies/admin/assembly_members.js +0 -47
  126. data/app/packs/src/decidim/assemblies/orgchart.js +0 -0
  127. data/app/presenters/decidim/admin/assembly_member_presenter.rb +0 -24
  128. data/app/presenters/decidim/assemblies/admin_log/assembly_member_presenter.rb +0 -51
  129. data/app/presenters/decidim/assemblies/admin_log/value_types/member_position_presenter.rb +0 -22
  130. data/app/presenters/decidim/assembly_member_presenter.rb +0 -68
  131. data/app/views/decidim/assemblies/admin/assemblies_types/_form.html.erb +0 -9
  132. data/app/views/decidim/assemblies/admin/assemblies_types/edit.html.erb +0 -13
  133. data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +0 -44
  134. data/app/views/decidim/assemblies/admin/assemblies_types/new.html.erb +0 -18
  135. data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +0 -62
  136. data/app/views/decidim/assemblies/admin/assembly_members/edit.html.erb +0 -18
  137. data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +0 -55
  138. data/app/views/decidim/assemblies/admin/assembly_members/new.html.erb +0 -18
  139. data/app/views/decidim/assembly_members/_assembly_member.html.erb +0 -1
  140. data/app/views/layouts/decidim/admin/assemblies_types.html.erb +0 -17
  141. data/lib/decidim/api/assembly_member_type.rb +0 -27
@@ -1,107 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module Admin
6
- # Controller used to manage the available assemblies types for the current
7
- # organization.
8
- # As this substitutes former i18n simple hash we need to keep these i18n keys for migrations
9
- # and rollbacks. So let i18n-tasks know about:
10
- # i18n-tasks-use t('decidim.assemblies.assembly_types.government')
11
- # i18n-tasks-use t('decidim.assemblies.assembly_types.commission')
12
- # i18n-tasks-use t('decidim.assemblies.assembly_types.consultative_advisory')
13
- # i18n-tasks-use t('decidim.assemblies.assembly_types.executive')
14
- # i18n-tasks-use t('decidim.assemblies.assembly_types.others')
15
- # i18n-tasks-use t('decidim.assemblies.assembly_types.participatory')
16
- # i18n-tasks-use t('decidim.assemblies.assembly_types.working_group')
17
- # This comment (and the i18n keys) may be removed in future versions
18
- class AssembliesTypesController < Decidim::Assemblies::Admin::ApplicationController
19
- helper_method :available_assemblies_types, :current_assembly_type
20
- layout "decidim/admin/assemblies_types"
21
-
22
- # GET /admin/assemblies_types
23
- def index
24
- enforce_permission_to :index, :assembly_type
25
- end
26
-
27
- # GET /admin/assemblies_types/new
28
- def new
29
- enforce_permission_to :create, :assembly_type
30
- @form = assembly_type_form.instance
31
- end
32
-
33
- # POST /admin/assemblies_types
34
- def create
35
- enforce_permission_to :create, :assembly_type
36
- @form = assembly_type_form.from_params(params)
37
-
38
- CreateAssembliesType.call(@form) do
39
- on(:ok) do |_assembly_type|
40
- flash[:notice] = I18n.t("assemblies_types.create.success", scope: "decidim.admin")
41
- redirect_to assemblies_types_path
42
- end
43
-
44
- on(:invalid) do
45
- flash.now[:alert] = I18n.t("assemblies_types.create.error", scope: "decidim.admin")
46
- render :new
47
- end
48
- end
49
- end
50
-
51
- # GET /admin/assemblies_types/:id/edit
52
- def edit
53
- enforce_permission_to :edit, :assembly_type, assembly_type: current_assembly_type
54
- @form = assembly_type_form
55
- .from_model(current_assembly_type,
56
- assembly_type: current_assembly_type)
57
- end
58
-
59
- # PUT /admin/assemblies_types/:id
60
- def update
61
- enforce_permission_to :update, :assembly_type, assembly_type: current_assembly_type
62
-
63
- @form = assembly_type_form
64
- .from_params(params, assembly_type: current_assembly_type)
65
-
66
- UpdateAssembliesType.call(@form, current_assembly_type) do
67
- on(:ok) do
68
- flash[:notice] = I18n.t("assemblies_types.update.success", scope: "decidim.admin")
69
- redirect_to assemblies_types_path
70
- end
71
-
72
- on(:invalid) do
73
- flash.now[:alert] = I18n.t("assemblies_types.update.error", scope: "decidim.admin")
74
- render :edit
75
- end
76
- end
77
- end
78
-
79
- # DELETE /admin/assemblies_types/:id
80
- def destroy
81
- enforce_permission_to :destroy, :assembly_type, assembly_type: current_assembly_type
82
-
83
- Decidim::Commands::DestroyResource.call(current_assembly_type, current_user) do
84
- on(:ok) do
85
- flash[:notice] = I18n.t("assemblies_types.destroy.success", scope: "decidim.admin")
86
- redirect_to assemblies_types_path
87
- end
88
- end
89
- end
90
-
91
- private
92
-
93
- def available_assemblies_types
94
- @available_assemblies_types ||= AssembliesType.where(organization: current_organization)
95
- end
96
-
97
- def current_assembly_type
98
- @current_assembly_type ||= available_assemblies_types.find(params[:id])
99
- end
100
-
101
- def assembly_type_form
102
- form(Decidim::Assemblies::Admin::AssembliesTypeForm)
103
- end
104
- end
105
- end
106
- end
107
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module Admin
6
- # Controller that allows managing assembly members.
7
- #
8
- class AssemblyMembersController < Decidim::Assemblies::Admin::ApplicationController
9
- include Concerns::AssemblyAdmin
10
- include Decidim::Assemblies::Admin::AssemblyMembers::Filterable
11
-
12
- def index
13
- enforce_permission_to :index, :assembly_member
14
- @assembly_members = filtered_collection
15
- end
16
-
17
- def new
18
- enforce_permission_to :create, :assembly_member
19
- @form = form(AssemblyMemberForm).instance
20
- end
21
-
22
- def create
23
- enforce_permission_to :create, :assembly_member
24
- @form = form(AssemblyMemberForm).from_params(params)
25
-
26
- CreateAssemblyMember.call(@form) do
27
- on(:ok) do
28
- flash[:notice] = I18n.t("assembly_members.create.success", scope: "decidim.admin")
29
- redirect_to assembly_members_path(current_assembly)
30
- end
31
-
32
- on(:invalid) do
33
- flash[:alert] = I18n.t("assembly_members.create.error", scope: "decidim.admin")
34
- render :new
35
- end
36
- end
37
- end
38
-
39
- def edit
40
- @assembly_member = collection.find(params[:id])
41
- enforce_permission_to :update, :assembly_member, member: @assembly_member
42
- @form = form(AssemblyMemberForm).from_model(@assembly_member)
43
- end
44
-
45
- def update
46
- @assembly_member = collection.find(params[:id])
47
- enforce_permission_to :update, :assembly_member, member: @assembly_member
48
- @form = form(AssemblyMemberForm).from_params(params)
49
-
50
- UpdateAssemblyMember.call(@form, @assembly_member) do
51
- on(:ok) do
52
- flash[:notice] = I18n.t("assembly_members.update.success", scope: "decidim.admin")
53
- redirect_to assembly_members_path(current_assembly)
54
- end
55
-
56
- on(:invalid) do
57
- flash.now[:alert] = I18n.t("assembly_members.update.error", scope: "decidim.admin")
58
- render :edit
59
- end
60
- end
61
- end
62
-
63
- def destroy
64
- @assembly_member = collection.find(params[:id])
65
- enforce_permission_to :destroy, :assembly_member, member: @assembly_member
66
-
67
- DestroyAssemblyMember.call(@assembly_member, current_user) do
68
- on(:ok) do
69
- flash[:notice] = I18n.t("assembly_members.destroy.success", scope: "decidim.admin")
70
- redirect_to assembly_members_path(current_assembly)
71
- end
72
- end
73
- end
74
-
75
- private
76
-
77
- def collection
78
- @collection ||= current_assembly.members
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module Admin
6
- # Controller that allows managing categories for assemblies.
7
- #
8
- class CategoriesController < Decidim::Admin::CategoriesController
9
- include Concerns::AssemblyAdmin
10
- end
11
- end
12
- end
13
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- class CreateAssemblyMemberEvent < Decidim::Events::SimpleEvent
6
- i18n_attributes :resource_name
7
-
8
- def resource_name
9
- @resource_name ||= decidim_sanitize_translated(assembly.title)
10
- end
11
-
12
- def assembly
13
- @assembly ||= resource
14
- end
15
- end
16
- end
17
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module Admin
6
- # A form object used to create assembly members from the admin dashboard.
7
- #
8
- class AssemblyMemberForm < Form
9
- mimic :assembly_member
10
-
11
- attribute :weight, Integer, default: 0
12
- attribute :full_name, String
13
- attribute :non_user_avatar
14
- attribute :remove_non_user_avatar, Boolean, default: false
15
- attribute :gender, String
16
- attribute :birthday, Decidim::Attributes::LocalizedDate
17
- attribute :birthplace, String
18
- attribute :ceased_date, Decidim::Attributes::LocalizedDate
19
- attribute :designation_date, Decidim::Attributes::LocalizedDate
20
- attribute :position, String
21
- attribute :position_other, String
22
- attribute :user_id, Integer
23
- attribute :existing_user, Boolean, default: false
24
-
25
- validates :designation_date, presence: true
26
- validates :full_name, presence: true, unless: proc { |object| object.existing_user }
27
- validates :non_user_avatar, passthru: {
28
- to: Decidim::AssemblyMember,
29
- with: {
30
- # The member gets its organization context through the assembly
31
- # object which is why we need to create a dummy assembly in order
32
- # to pass the correct organization context to the file upload
33
- # validators.
34
- assembly: lambda do |form|
35
- Decidim::Assembly.new(organization: form.current_organization)
36
- end
37
- }
38
- }
39
- validates :position, presence: true, inclusion: { in: Decidim::AssemblyMember::POSITIONS }
40
- validates :position_other, presence: true, if: ->(form) { form.position == "other" }
41
- validates :ceased_date, date: { after: :designation_date, allow_blank: true }
42
- validates :user, presence: true, if: proc { |object| object.existing_user }
43
-
44
- def map_model(model)
45
- self.user_id = model.decidim_user_id
46
- self.existing_user = user_id.present?
47
- end
48
-
49
- def user
50
- @user ||= current_organization.user_entities.find_by(id: user_id)
51
- end
52
-
53
- def positions_for_select
54
- Decidim::AssemblyMember::POSITIONS.map do |position|
55
- [
56
- I18n.t(position, scope: "decidim.admin.models.assembly_member.positions"),
57
- position
58
- ]
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module Admin
6
- module AssemblyMembersHelper
7
- include Decidim::PaginateHelper
8
- end
9
- end
10
- end
11
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # It represents a member of the assembly (president, secretary, ...)
5
- # Can be linked to an existent user in the platform
6
- class AssemblyMember < ApplicationRecord
7
- include Decidim::Traceable
8
- include Decidim::Loggable
9
- include Decidim::HasUploadValidations
10
-
11
- POSITIONS = %w(president vice_president secretary other).freeze
12
-
13
- belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::UserBaseEntity", optional: true
14
- belongs_to :assembly, foreign_key: "decidim_assembly_id", class_name: "Decidim::Assembly"
15
- alias participatory_space assembly
16
-
17
- has_one_attached :non_user_avatar
18
- validates_avatar :non_user_avatar, uploader: Decidim::AvatarUploader
19
-
20
- delegate :organization, to: :assembly
21
-
22
- default_scope { order(weight: :asc, created_at: :asc) }
23
-
24
- scope :not_ceased, -> { where("ceased_date >= ? OR ceased_date IS NULL", Time.zone.today) }
25
-
26
- def self.log_presenter_class_for(_log)
27
- Decidim::Assemblies::AdminLog::AssemblyMemberPresenter
28
- end
29
-
30
- def remove_non_user_avatar
31
- false
32
- end
33
- end
34
- end
@@ -1,47 +0,0 @@
1
- import createFieldDependentInputs from "src/decidim/admin/field_dependent_inputs.component"
2
-
3
- $(() => {
4
- const $assemblyMemberType = $("#assembly_member_existing_user");
5
-
6
- createFieldDependentInputs({
7
- controllerField: $assemblyMemberType,
8
- wrapperSelector: ".user-fields",
9
- dependentFieldsSelector: ".user-fields--full-name",
10
- dependentInputSelector: "input",
11
- enablingCondition: ($field) => {
12
- return $field.val() === "false"
13
- }
14
- });
15
-
16
- createFieldDependentInputs({
17
- controllerField: $assemblyMemberType,
18
- wrapperSelector: ".user-fields",
19
- dependentFieldsSelector: ".user-fields--non-user-avatar",
20
- dependentInputSelector: "input",
21
- enablingCondition: ($field) => {
22
- return $field.val() === "false"
23
- }
24
- });
25
-
26
- createFieldDependentInputs({
27
- controllerField: $assemblyMemberType,
28
- wrapperSelector: ".user-fields",
29
- dependentFieldsSelector: ".user-fields--user-picker",
30
- dependentInputSelector: "input",
31
- enablingCondition: ($field) => {
32
- return $field.val() === "true"
33
- }
34
- });
35
-
36
- const $assemblyMemberPosition = $("#assembly_member_position");
37
-
38
- createFieldDependentInputs({
39
- controllerField: $assemblyMemberPosition,
40
- wrapperSelector: ".position-fields",
41
- dependentFieldsSelector: ".position-fields--position-other",
42
- dependentInputSelector: "input",
43
- enablingCondition: ($field) => {
44
- return $field.val() === "other"
45
- }
46
- });
47
- })
File without changes
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Admin
5
- #
6
- # Decorator for assembly members
7
- #
8
- class AssemblyMemberPresenter < SimpleDelegator
9
- def name
10
- if user
11
- "#{user.name} (#{Decidim::UserPresenter.new(user).nickname})"
12
- else
13
- full_name
14
- end
15
- end
16
-
17
- def position
18
- return position_other if __getobj__.position == "other"
19
-
20
- I18n.t(__getobj__.position, scope: "decidim.admin.models.assembly_member.positions", default: "")
21
- end
22
- end
23
- end
24
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module AdminLog
6
- # This class holds the logic to present a `Decidim::AssemblyMember`
7
- # for the `AdminLog` log.
8
- #
9
- # Usage should be automatic and you should not need to call this class
10
- # directly, but here is an example:
11
- #
12
- # action_log = Decidim::ActionLog.last
13
- # view_helpers # => this comes from the views
14
- # AssemblyMemberPresenter.new(action_log, view_helpers).present
15
- class AssemblyMemberPresenter < Decidim::Log::BasePresenter
16
- private
17
-
18
- def diff_fields_mapping
19
- {
20
- full_name: :string,
21
- gender: :string,
22
- birthday: :date,
23
- birthplace: :string,
24
- designation_date: :date,
25
- position: "Decidim::Assemblies::AdminLog::ValueTypes::MemberPositionPresenter",
26
- position_other: :string,
27
- weight: :integer,
28
- ceased_date: :date
29
- }
30
- end
31
-
32
- def i18n_labels_scope
33
- "activemodel.attributes.assembly_member"
34
- end
35
-
36
- def action_string
37
- case action
38
- when "create", "delete", "update"
39
- "decidim.admin_log.assembly_member.#{action}"
40
- else
41
- super
42
- end
43
- end
44
-
45
- def diff_actions
46
- super + %w(delete)
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Assemblies
5
- module AdminLog
6
- module ValueTypes
7
- # This class presents the given value as an assembly member position.
8
- # Check the `DefaultPresenter` for more info on how value presenters work.
9
- class MemberPositionPresenter < Decidim::Log::ValueTypes::DefaultPresenter
10
- # Public: Presents the value as an assembly member position.
11
- #
12
- # Returns an HTML-safe String.
13
- def present
14
- return if value.blank?
15
-
16
- h.t(value, scope: "decidim.admin.models.assembly_member.positions", default: value)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- #
5
- # Decorator for assembly members
6
- #
7
- class AssemblyMemberPresenter < SimpleDelegator
8
- def age
9
- (Time.current.strftime("%Y%m%d").to_i - birthday.strftime("%Y%m%d").to_i) / 10_000 if birthday
10
- end
11
-
12
- delegate :profile_url, to: :user, allow_nil: true
13
-
14
- def name
15
- user ? user.name : full_name
16
- end
17
-
18
- def nickname
19
- user.nickname if user
20
- end
21
-
22
- def personal_information
23
- [
24
- gender.presence,
25
- age,
26
- birthplace.presence
27
- ].compact.join(" / ")
28
- end
29
-
30
- def position
31
- return position_other if __getobj__.position == "other"
32
-
33
- I18n.t(__getobj__.position, scope: "decidim.admin.models.assembly_member.positions", default: "")
34
- end
35
-
36
- def avatar_url(variant = nil)
37
- return user.avatar_url(variant) if user.present?
38
-
39
- non_user_avatar_path(variant)
40
- end
41
-
42
- def non_user_avatar_path(variant = nil)
43
- return non_user_avatar.default_url(variant) unless non_user_avatar.attached?
44
-
45
- non_user_avatar.path(variant:)
46
- end
47
-
48
- def non_user_avatar
49
- attached_uploader(:non_user_avatar)
50
- end
51
-
52
- def has_tooltip?
53
- false
54
- end
55
-
56
- def deleted?
57
- false
58
- end
59
-
60
- private
61
-
62
- def user
63
- @user ||= if (user = __getobj__.user.presence)
64
- Decidim::UserPresenter.new(user)
65
- end
66
- end
67
- end
68
- end
@@ -1,9 +0,0 @@
1
- <div class="form__wrapper">
2
- <div class="card pt-4">
3
- <div class="card-section">
4
- <div class="row column">
5
- <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
6
- </div>
7
- </div>
8
- </div>
9
- </div>
@@ -1,13 +0,0 @@
1
- <% add_decidim_page_title(t("decidim.assemblies.admin.assemblies_types.form.title")) %>
2
- <div class="item__edit item__edit-1col">
3
- <div class="item__edit-form">
4
- <%= decidim_form_for(@form, html: { class: "form-defaults form edit_assembly_type" }) do |f| %>
5
- <%= render partial: "form", object: f %>
6
- <div class="item__edit-sticky">
7
- <div class="item__edit-sticky-container">
8
- <%= f.submit t("assemblies.edit.update", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
9
- </div>
10
- </div>
11
- <% end %>
12
- </div>
13
- </div>
@@ -1,44 +0,0 @@
1
- <% add_decidim_page_title(t("decidim.admin.titles.assemblies_types")) %>
2
-
3
- <div class="card" id="assembly-types">
4
- <div class="item_show__header">
5
- <h1 class="item_show__header-title">
6
- <%= t "decidim.admin.titles.assemblies_types" %>
7
- <%= link_to t("actions.new_assembly_type", scope: "decidim.admin"),
8
- [:new, :assemblies_type],
9
- class: "button button__sm button__secondary" if allowed_to? :create, :assembly_type %>
10
- </h1>
11
- </div>
12
- <div class="table-scroll">
13
- <table class="table-list">
14
- <thead>
15
- <tr>
16
- <th><%= t("models.assemblies_types.fields.title", scope: "decidim.admin") %></th>
17
- <th><%= t("models.assemblies_types.fields.created_at", scope: "decidim.admin") %></th>
18
- <th></th>
19
- </tr>
20
- </thead>
21
- <tbody>
22
- <% available_assemblies_types.each do |assembly_type| %>
23
- <tr>
24
- <td>
25
- <% if allowed_to? :update, :assembly_type, assembly_type: assembly_type %>
26
- <%= link_to translated_attribute(assembly_type.title), edit_assemblies_type_path(assembly_type) %>
27
- <% else %>
28
- <%= translated_attribute assembly_type.title %></td>
29
- <% end %>
30
- <td><%= l assembly_type.created_at, format: :short %></td>
31
- <td class="table-list__actions">
32
- <% if allowed_to? :update, :assembly_type, assembly_type: assembly_type %>
33
- <%= icon_link_to "pencil-line", edit_assemblies_type_path(assembly_type), t("actions.edit", scope: "decidim.admin"), class: "action-icon--new" %>
34
- <% end %>
35
- <% if allowed_to? :destroy, :assembly_type, assembly_type: assembly_type %>
36
- <%= icon_link_to "delete-bin-line", assemblies_type_path(assembly_type), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
37
- <% end %>
38
- </td>
39
- </tr>
40
- <% end %>
41
- </tbody>
42
- </table>
43
- </div>
44
- </div>
@@ -1,18 +0,0 @@
1
- <% add_decidim_page_title(t("assemblies_types.new.title", scope: "decidim.admin")) %>
2
- <div class="item_show__header">
3
- <h1 class="item_show__header-title">
4
- <%= t("assemblies_types.new.title", scope: "decidim.admin") %>
5
- </h1>
6
- </div>
7
- <div class="item__edit item__edit-1col">
8
- <div class="item__edit-form">
9
- <%= decidim_form_for(@form, html: { class: "form-defaults form new_assembly_type" }) do |f| %>
10
- <%= render partial: "form", object: f %>
11
- <div class="item__edit-sticky">
12
- <div class="item__edit-sticky-container">
13
- <%= f.submit t("assemblies_types.new.create", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
14
- </div>
15
- </div>
16
- <% end %>
17
- </div>
18
- </div>