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.
- checksums.yaml +4 -4
- data/app/cells/decidim/assemblies/assembly_metadata_g_cell.rb +1 -14
- data/app/cells/decidim/assemblies/content_blocks/extra_data_cell.rb +2 -12
- data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_settings_form/show.erb +1 -1
- data/app/commands/decidim/assemblies/admin/copy_assembly.rb +2 -14
- data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -2
- data/app/commands/decidim/assemblies/admin/import_assembly.rb +0 -2
- data/app/commands/decidim/assemblies/admin/update_assembly.rb +2 -2
- data/app/controllers/concerns/decidim/assemblies/admin/filterable.rb +2 -11
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +19 -4
- data/app/controllers/decidim/assemblies/admin/assembly_copies_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/admin/assembly_landing_page_content_blocks_controller.rb +6 -0
- data/app/controllers/decidim/assemblies/admin/assembly_share_tokens_controller.rb +18 -0
- data/app/controllers/decidim/assemblies/admin/component_share_tokens_controller.rb +18 -0
- data/app/controllers/decidim/assemblies/assemblies_controller.rb +1 -3
- data/app/controllers/decidim/assemblies/{assembly_members_controller.rb → participatory_space_private_users_controller.rb} +3 -11
- data/app/forms/decidim/assemblies/admin/assembly_copy_form.rb +0 -1
- data/app/forms/decidim/assemblies/admin/assembly_form.rb +13 -48
- data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +0 -1
- data/app/helpers/decidim/assemblies/admin/assemblies_helper.rb +26 -4
- data/app/helpers/decidim/assemblies/assemblies_helper.rb +4 -4
- data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +11 -15
- data/app/models/decidim/assembly.rb +26 -11
- data/app/packs/entrypoints/decidim_assemblies_admin.js +0 -1
- data/app/packs/entrypoints/decidim_assemblies_admin_list.js +1 -0
- data/app/packs/src/decidim/assemblies/admin/assemblies_list.js +72 -0
- data/app/permissions/decidim/assemblies/permissions.rb +9 -20
- data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +1 -1
- data/app/presenters/decidim/assemblies/assembly_presenter.rb +2 -8
- data/app/queries/decidim/assemblies/metrics/assemblies_metric_manage.rb +2 -2
- data/app/serializers/decidim/assemblies/assembly_importer.rb +0 -35
- data/app/serializers/decidim/assemblies/assembly_serializer.rb +11 -135
- data/app/serializers/decidim/assemblies/open_data_assembly_serializer.rb +59 -0
- data/app/views/decidim/assemblies/admin/assemblies/_assemblies_thead.html.erb +19 -0
- data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +101 -0
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +29 -41
- data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +18 -92
- data/app/views/decidim/assemblies/admin/assemblies/index.js.erb +10 -0
- data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +20 -0
- data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +0 -4
- data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +0 -3
- data/app/views/decidim/assemblies/assemblies/index.html.erb +3 -1
- data/app/views/decidim/assemblies/assemblies/show.html.erb +5 -6
- data/app/views/decidim/assemblies/{assembly_members → participatory_space_private_users}/index.html.erb +6 -5
- data/config/assets.rb +2 -1
- data/config/locales/ar.yml +1 -72
- data/config/locales/bg.yml +0 -74
- data/config/locales/bn-BD.yml +1 -0
- data/config/locales/bs-BA.yml +29 -0
- data/config/locales/ca.yml +70 -74
- data/config/locales/cs.yml +70 -74
- data/config/locales/de.yml +72 -76
- data/config/locales/el.yml +0 -72
- data/config/locales/en.yml +71 -75
- data/config/locales/es-MX.yml +70 -74
- data/config/locales/es-PY.yml +70 -74
- data/config/locales/es.yml +70 -74
- data/config/locales/eu.yml +108 -112
- data/config/locales/fi-plain.yml +71 -75
- data/config/locales/fi.yml +75 -79
- data/config/locales/fr-CA.yml +22 -74
- data/config/locales/fr.yml +22 -74
- data/config/locales/ga-IE.yml +0 -23
- data/config/locales/gl.yml +0 -70
- data/config/locales/he-IL.yml +143 -23
- data/config/locales/hu.yml +0 -74
- data/config/locales/id-ID.yml +0 -58
- data/config/locales/is-IS.yml +0 -45
- data/config/locales/it.yml +0 -71
- data/config/locales/ja.yml +70 -74
- data/config/locales/kaa.yml +0 -9
- data/config/locales/ko.yml +0 -13
- data/config/locales/lb.yml +0 -66
- data/config/locales/lt.yml +0 -72
- data/config/locales/lv.yml +0 -69
- data/config/locales/nl.yml +0 -70
- data/config/locales/no.yml +0 -70
- data/config/locales/pl.yml +0 -75
- data/config/locales/pt-BR.yml +0 -74
- data/config/locales/pt.yml +0 -70
- data/config/locales/ro-RO.yml +5 -72
- data/config/locales/ru.yml +0 -57
- data/config/locales/sk.yml +0 -28
- data/config/locales/sl.yml +0 -39
- data/config/locales/sq-AL.yml +0 -74
- data/config/locales/sr-CS.yml +0 -15
- data/config/locales/sv.yml +75 -79
- data/config/locales/tr-TR.yml +0 -75
- data/config/locales/uk.yml +0 -57
- data/config/locales/zh-CN.yml +0 -69
- data/config/locales/zh-TW.yml +0 -72
- data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +2 -2
- data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +1 -1
- data/db/migrate/20240822161222_add_deleted_at_to_decidim_assemblies.rb +8 -0
- data/db/migrate/20241016101151_migrate_assembly_members_to_private_users.rb +53 -0
- data/db/migrate/20241108141651_remove_column_show_statistics_from_assemblies.rb +7 -0
- data/decidim-assemblies.gemspec +2 -2
- data/lib/decidim/api/assemblies_type_type.rb +2 -2
- data/lib/decidim/api/assembly_type.rb +32 -34
- data/lib/decidim/assemblies/admin_engine.rb +77 -54
- data/lib/decidim/assemblies/api.rb +0 -1
- data/lib/decidim/assemblies/content_blocks/registry_manager.rb +11 -0
- data/lib/decidim/assemblies/engine.rb +9 -3
- data/lib/decidim/assemblies/menu.rb +9 -22
- data/lib/decidim/assemblies/participatory_space.rb +7 -3
- data/lib/decidim/assemblies/seeds.rb +9 -33
- data/lib/decidim/assemblies/test/factories.rb +15 -36
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +31 -49
- data/app/cells/decidim/assemblies/assembly_member/data.erb +0 -19
- data/app/cells/decidim/assemblies/assembly_member/name_and_position.erb +0 -11
- data/app/cells/decidim/assemblies/assembly_member/show.erb +0 -9
- data/app/cells/decidim/assemblies/assembly_member_cell.rb +0 -21
- data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +0 -55
- data/app/commands/decidim/assemblies/admin/destroy_assembly_member.rb +0 -24
- data/app/commands/decidim/assemblies/admin/update_assembly_member.rb +0 -29
- data/app/controllers/concerns/decidim/assemblies/admin/assembly_members/filterable.rb +0 -39
- data/app/controllers/decidim/assemblies/admin/assemblies_types_controller.rb +0 -107
- data/app/controllers/decidim/assemblies/admin/assembly_members_controller.rb +0 -83
- data/app/controllers/decidim/assemblies/admin/categories_controller.rb +0 -13
- data/app/events/decidim/assemblies/create_assembly_member_event.rb +0 -17
- data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +0 -64
- data/app/helpers/decidim/assemblies/admin/assembly_members_helper.rb +0 -11
- data/app/models/decidim/assembly_member.rb +0 -34
- data/app/packs/src/decidim/assemblies/admin/assembly_members.js +0 -47
- data/app/packs/src/decidim/assemblies/orgchart.js +0 -0
- data/app/presenters/decidim/admin/assembly_member_presenter.rb +0 -24
- data/app/presenters/decidim/assemblies/admin_log/assembly_member_presenter.rb +0 -51
- data/app/presenters/decidim/assemblies/admin_log/value_types/member_position_presenter.rb +0 -22
- data/app/presenters/decidim/assembly_member_presenter.rb +0 -68
- data/app/views/decidim/assemblies/admin/assemblies_types/_form.html.erb +0 -9
- data/app/views/decidim/assemblies/admin/assemblies_types/edit.html.erb +0 -13
- data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +0 -44
- data/app/views/decidim/assemblies/admin/assemblies_types/new.html.erb +0 -18
- data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +0 -62
- data/app/views/decidim/assemblies/admin/assembly_members/edit.html.erb +0 -18
- data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +0 -55
- data/app/views/decidim/assemblies/admin/assembly_members/new.html.erb +0 -18
- data/app/views/decidim/assembly_members/_assembly_member.html.erb +0 -1
- data/app/views/layouts/decidim/admin/assemblies_types.html.erb +0 -17
- 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,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,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>
|