decidim-assemblies 0.29.2 → 0.30.0.rc2

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 (139) 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_share_tokens_controller.rb +18 -0
  13. data/app/controllers/decidim/assemblies/admin/component_share_tokens_controller.rb +18 -0
  14. data/app/controllers/decidim/assemblies/assemblies_controller.rb +1 -3
  15. data/app/controllers/decidim/assemblies/{assembly_members_controller.rb → participatory_space_private_users_controller.rb} +3 -11
  16. data/app/forms/decidim/assemblies/admin/assembly_copy_form.rb +0 -1
  17. data/app/forms/decidim/assemblies/admin/assembly_form.rb +5 -40
  18. data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +0 -1
  19. data/app/helpers/decidim/assemblies/admin/assemblies_helper.rb +26 -4
  20. data/app/helpers/decidim/assemblies/assemblies_helper.rb +4 -4
  21. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +11 -15
  22. data/app/models/decidim/assembly.rb +21 -11
  23. data/app/packs/entrypoints/decidim_assemblies_admin.js +0 -1
  24. data/app/packs/entrypoints/decidim_assemblies_admin_list.js +1 -0
  25. data/app/packs/src/decidim/assemblies/admin/assemblies_list.js +72 -0
  26. data/app/permissions/decidim/assemblies/permissions.rb +9 -20
  27. data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +1 -1
  28. data/app/presenters/decidim/assemblies/assembly_presenter.rb +0 -6
  29. data/app/queries/decidim/assemblies/metrics/assemblies_metric_manage.rb +2 -2
  30. data/app/serializers/decidim/assemblies/assembly_importer.rb +0 -35
  31. data/app/serializers/decidim/assemblies/assembly_serializer.rb +11 -135
  32. data/app/serializers/decidim/assemblies/open_data_assembly_serializer.rb +59 -0
  33. data/app/views/decidim/assemblies/admin/assemblies/_assemblies_thead.html.erb +19 -0
  34. data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +101 -0
  35. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +29 -41
  36. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +18 -92
  37. data/app/views/decidim/assemblies/admin/assemblies/index.js.erb +10 -0
  38. data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +20 -0
  39. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +0 -4
  40. data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +0 -3
  41. data/app/views/decidim/assemblies/assemblies/index.html.erb +3 -1
  42. data/app/views/decidim/assemblies/assemblies/show.html.erb +5 -6
  43. data/app/views/decidim/assemblies/{assembly_members → participatory_space_private_users}/index.html.erb +6 -5
  44. data/config/assets.rb +2 -1
  45. data/config/locales/ar.yml +0 -72
  46. data/config/locales/bg.yml +0 -74
  47. data/config/locales/bs-BA.yml +0 -15
  48. data/config/locales/ca.yml +70 -74
  49. data/config/locales/cs.yml +70 -74
  50. data/config/locales/de.yml +70 -74
  51. data/config/locales/el.yml +0 -72
  52. data/config/locales/en.yml +71 -75
  53. data/config/locales/es-MX.yml +70 -74
  54. data/config/locales/es-PY.yml +70 -74
  55. data/config/locales/es.yml +70 -74
  56. data/config/locales/eu.yml +71 -75
  57. data/config/locales/fi-plain.yml +71 -75
  58. data/config/locales/fi.yml +71 -75
  59. data/config/locales/fr-CA.yml +22 -74
  60. data/config/locales/fr.yml +22 -74
  61. data/config/locales/ga-IE.yml +0 -25
  62. data/config/locales/gl.yml +0 -72
  63. data/config/locales/he-IL.yml +8 -57
  64. data/config/locales/hu.yml +0 -74
  65. data/config/locales/id-ID.yml +0 -63
  66. data/config/locales/is-IS.yml +0 -45
  67. data/config/locales/it.yml +0 -73
  68. data/config/locales/ja.yml +70 -74
  69. data/config/locales/kaa.yml +0 -9
  70. data/config/locales/ko.yml +0 -6
  71. data/config/locales/lb.yml +0 -70
  72. data/config/locales/lt.yml +0 -72
  73. data/config/locales/lv.yml +0 -74
  74. data/config/locales/nl.yml +0 -72
  75. data/config/locales/no.yml +0 -72
  76. data/config/locales/pl.yml +0 -75
  77. data/config/locales/pt-BR.yml +0 -74
  78. data/config/locales/pt.yml +0 -72
  79. data/config/locales/ro-RO.yml +14 -85
  80. data/config/locales/ru.yml +0 -57
  81. data/config/locales/sk.yml +0 -46
  82. data/config/locales/sl.yml +0 -54
  83. data/config/locales/sq-AL.yml +0 -74
  84. data/config/locales/sr-CS.yml +0 -15
  85. data/config/locales/sv.yml +71 -75
  86. data/config/locales/tr-TR.yml +0 -75
  87. data/config/locales/uk.yml +0 -57
  88. data/config/locales/zh-CN.yml +0 -74
  89. data/config/locales/zh-TW.yml +0 -72
  90. data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +2 -2
  91. data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +1 -1
  92. data/db/migrate/20240822161222_add_deleted_at_to_decidim_assemblies.rb +8 -0
  93. data/db/migrate/20241016101151_migrate_assembly_members_to_private_users.rb +53 -0
  94. data/db/migrate/20241108141651_remove_column_show_statistics_from_assemblies.rb +7 -0
  95. data/decidim-assemblies.gemspec +1 -1
  96. data/lib/decidim/api/assemblies_type_type.rb +2 -2
  97. data/lib/decidim/api/assembly_type.rb +32 -34
  98. data/lib/decidim/assemblies/admin_engine.rb +77 -54
  99. data/lib/decidim/assemblies/api.rb +0 -1
  100. data/lib/decidim/assemblies/content_blocks/registry_manager.rb +11 -0
  101. data/lib/decidim/assemblies/engine.rb +9 -3
  102. data/lib/decidim/assemblies/menu.rb +9 -22
  103. data/lib/decidim/assemblies/participatory_space.rb +7 -3
  104. data/lib/decidim/assemblies/seeds.rb +9 -33
  105. data/lib/decidim/assemblies/test/factories.rb +15 -36
  106. data/lib/decidim/assemblies/version.rb +1 -1
  107. metadata +28 -48
  108. data/app/cells/decidim/assemblies/assembly_member/data.erb +0 -19
  109. data/app/cells/decidim/assemblies/assembly_member/name_and_position.erb +0 -11
  110. data/app/cells/decidim/assemblies/assembly_member/show.erb +0 -9
  111. data/app/cells/decidim/assemblies/assembly_member_cell.rb +0 -21
  112. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +0 -55
  113. data/app/commands/decidim/assemblies/admin/destroy_assembly_member.rb +0 -24
  114. data/app/commands/decidim/assemblies/admin/update_assembly_member.rb +0 -29
  115. data/app/controllers/concerns/decidim/assemblies/admin/assembly_members/filterable.rb +0 -39
  116. data/app/controllers/decidim/assemblies/admin/assemblies_types_controller.rb +0 -107
  117. data/app/controllers/decidim/assemblies/admin/assembly_members_controller.rb +0 -83
  118. data/app/controllers/decidim/assemblies/admin/categories_controller.rb +0 -13
  119. data/app/events/decidim/assemblies/create_assembly_member_event.rb +0 -17
  120. data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +0 -64
  121. data/app/helpers/decidim/assemblies/admin/assembly_members_helper.rb +0 -11
  122. data/app/models/decidim/assembly_member.rb +0 -34
  123. data/app/packs/src/decidim/assemblies/admin/assembly_members.js +0 -47
  124. data/app/packs/src/decidim/assemblies/orgchart.js +0 -0
  125. data/app/presenters/decidim/admin/assembly_member_presenter.rb +0 -24
  126. data/app/presenters/decidim/assemblies/admin_log/assembly_member_presenter.rb +0 -51
  127. data/app/presenters/decidim/assemblies/admin_log/value_types/member_position_presenter.rb +0 -22
  128. data/app/presenters/decidim/assembly_member_presenter.rb +0 -68
  129. data/app/views/decidim/assemblies/admin/assemblies_types/_form.html.erb +0 -9
  130. data/app/views/decidim/assemblies/admin/assemblies_types/edit.html.erb +0 -13
  131. data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +0 -44
  132. data/app/views/decidim/assemblies/admin/assemblies_types/new.html.erb +0 -18
  133. data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +0 -62
  134. data/app/views/decidim/assemblies/admin/assembly_members/edit.html.erb +0 -18
  135. data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +0 -55
  136. data/app/views/decidim/assemblies/admin/assembly_members/new.html.erb +0 -18
  137. data/app/views/decidim/assembly_members/_assembly_member.html.erb +0 -1
  138. data/app/views/layouts/decidim/admin/assemblies_types.html.erb +0 -17
  139. 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>