decidim-assemblies 0.24.3 → 0.25.0.rc4
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_m_cell.rb +1 -1
- data/app/cells/decidim/assemblies/assembly_member/show.erb +1 -1
- data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies/show.erb +1 -1
- data/app/commands/decidim/assemblies/admin/copy_assembly.rb +11 -3
- data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -1
- data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +5 -1
- data/app/commands/decidim/assemblies/admin/update_assembly.rb +7 -11
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +1 -5
- data/app/forms/decidim/assemblies/admin/assembly_form.rb +3 -2
- data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +1 -0
- data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +1 -1
- data/app/helpers/decidim/assemblies/admin/assemblies_admin_menu_helper.rb +0 -5
- data/app/models/decidim/assembly.rb +5 -5
- data/app/models/decidim/assembly_member.rb +1 -1
- data/app/packs/entrypoints/decidim_assemblies.js +5 -0
- data/app/packs/entrypoints/decidim_assemblies_admin.js +3 -0
- data/app/{assets/images/decidim/assemblies/assembly.svg → packs/images/decidim/assemblies/decidim_assemblies.svg} +0 -0
- data/app/packs/src/decidim/assemblies/admin/assemblies.js +63 -0
- data/app/{assets/javascripts/decidim/assemblies/admin/assembly_members.js.es6 → packs/src/decidim/assemblies/admin/assembly_members.js} +3 -3
- data/app/packs/src/decidim/assemblies/assemblies.js +14 -0
- data/app/packs/src/decidim/assemblies/orgchart.js +695 -0
- data/app/presenters/decidim/assemblies/assembly_presenter.rb +2 -12
- data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +3 -13
- data/app/queries/decidim/assemblies/admin/admin_users.rb +24 -11
- data/app/serializers/decidim/assemblies/assembly_importer.rb +3 -2
- data/app/serializers/decidim/assemblies/assembly_serializer.rb +4 -2
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +6 -3
- data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +1 -1
- data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +1 -1
- data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +2 -2
- data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +1 -1
- data/app/views/decidim/assemblies/assemblies/index.html.erb +2 -2
- data/app/views/decidim/assemblies/assemblies/show.html.erb +6 -4
- data/app/views/layouts/decidim/_assembly_header.html.erb +1 -1
- data/app/views/layouts/decidim/admin/assemblies.html.erb +1 -1
- data/app/views/layouts/decidim/admin/assembly.html.erb +4 -73
- data/app/views/layouts/decidim/assembly.html.erb +2 -2
- data/config/assets.rb +9 -0
- data/config/locales/ar.yml +0 -17
- data/config/locales/ca.yml +4 -38
- data/config/locales/cs.yml +4 -38
- data/config/locales/de.yml +4 -38
- data/config/locales/el.yml +0 -31
- data/config/locales/en.yml +5 -39
- data/config/locales/es-MX.yml +4 -38
- data/config/locales/es-PY.yml +4 -38
- data/config/locales/es.yml +4 -38
- data/config/locales/eu.yml +0 -17
- data/config/locales/fi-plain.yml +5 -39
- data/config/locales/fi.yml +5 -39
- data/config/locales/fr-CA.yml +1 -39
- data/config/locales/fr-LU.yml +449 -0
- data/config/locales/fr.yml +0 -38
- data/config/locales/gl.yml +4 -38
- data/config/locales/hu.yml +0 -31
- data/config/locales/id-ID.yml +0 -17
- data/config/locales/is-IS.yml +0 -14
- data/config/locales/it.yml +6 -39
- data/config/locales/ja.yml +4 -33
- data/config/locales/lb-LU.yml +1 -0
- data/config/locales/lv.yml +0 -30
- data/config/locales/nl.yml +5 -39
- data/config/locales/no.yml +0 -38
- data/config/locales/pl.yml +4 -41
- data/config/locales/pt-BR.yml +82 -17
- data/config/locales/pt.yml +0 -31
- data/config/locales/ro-RO.yml +5 -36
- data/config/locales/ru.yml +0 -17
- data/config/locales/sk.yml +0 -16
- data/config/locales/sl.yml +0 -17
- data/config/locales/sr-CS.yml +0 -16
- data/config/locales/sv.yml +3 -36
- data/config/locales/tr-TR.yml +0 -31
- data/config/locales/uk.yml +0 -17
- data/config/locales/zh-CN.yml +0 -31
- data/db/migrate/20210507063604_add_announcement_to_assemblies.rb +7 -0
- data/lib/decidim/api/assembly_type.rb +10 -1
- data/lib/decidim/assemblies/admin_engine.rb +122 -30
- data/lib/decidim/assemblies/engine.rb +6 -9
- data/lib/decidim/assemblies/participatory_space.rb +46 -8
- data/lib/decidim/assemblies/test/factories.rb +1 -0
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +21 -22
- data/app/assets/config/admin/decidim_assemblies_manifest.js +0 -2
- data/app/assets/config/decidim_assemblies_manifest.js +0 -2
- data/app/assets/javascripts/decidim/assemblies/admin/assemblies.js.es6 +0 -67
- data/app/assets/javascripts/decidim/assemblies/assemblies.js.es6 +0 -18
- data/app/assets/javascripts/decidim/assemblies/orgchart.js.es6 +0 -698
- data/app/cells/decidim/assemblies/statistic/show.erb +0 -9
- data/app/cells/decidim/assemblies/statistic_cell.rb +0 -20
- data/app/cells/decidim/assemblies/statistics/show.erb +0 -17
- data/app/cells/decidim/assemblies/statistics_cell.rb +0 -18
- data/config/locales/ja-JP.yml +0 -471
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbc9994a18eae0c7d1f625e52537e7fbfb780c5988218fa02cfefbabcc84ca4d
|
4
|
+
data.tar.gz: 3733bbac11e1e743b257606c725fe6404d7f1ca82963f7c3fcc36a86f2bf12b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 110784b0bbdeca53efb6a6a316c58aaa6ecf06c5a515a964eeb187d9215eaa346083a9416e7df4f9d3cc2145a56a845f67808afcc35d1dc98ad6b92dae604af8
|
7
|
+
data.tar.gz: 8a9322a0e19c16168c642cc3f1d1eef35d66c98d2a802cc9692201c71bba8a7ca2f14d6d7424bd23eab35f06b23e4f294a2f355f07a0b64707d312f30a2e88b3
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<% end %>
|
25
25
|
</div>
|
26
26
|
<% else %>
|
27
|
-
<div class="author__avatar"><%= image_tag
|
27
|
+
<div class="author__avatar"><%= image_tag asset_pack_path("media/images/default-avatar.svg"), alt: "member-avatar" %></div>
|
28
28
|
<div>
|
29
29
|
<div class="author__name--container">
|
30
30
|
<div class="author__name">
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="column">
|
9
9
|
<%= link_to decidim_assemblies.assembly_path(assembly), class: "card card--assembly card--mini" do %>
|
10
10
|
<div aria-hidden="true" class="card__image-top"
|
11
|
-
style="background-image:url(<%= assembly.hero_image.
|
11
|
+
style="background-image:url(<%= assembly.attached_uploader(:hero_image).path %>)"></div>
|
12
12
|
<div class="card__content">
|
13
13
|
<span class="card__title card__link"><%= translated_attribute assembly.title %></span>
|
14
14
|
</div>
|
@@ -26,6 +26,7 @@ module Decidim
|
|
26
26
|
|
27
27
|
Assembly.transaction do
|
28
28
|
copy_assembly
|
29
|
+
copy_assembly_attachments
|
29
30
|
copy_assembly_categories if @form.copy_categories?
|
30
31
|
copy_assembly_components if @form.copy_components?
|
31
32
|
end
|
@@ -46,8 +47,6 @@ module Decidim
|
|
46
47
|
hashtag: @assembly.hashtag,
|
47
48
|
description: @assembly.description,
|
48
49
|
short_description: @assembly.short_description,
|
49
|
-
hero_image: @assembly.hero_image,
|
50
|
-
banner_image: @assembly.banner_image,
|
51
50
|
promoted: @assembly.promoted,
|
52
51
|
scope: @assembly.scope,
|
53
52
|
parent: @assembly.parent,
|
@@ -57,10 +56,19 @@ module Decidim
|
|
57
56
|
target: @assembly.target,
|
58
57
|
participatory_scope: @assembly.participatory_scope,
|
59
58
|
participatory_structure: @assembly.participatory_structure,
|
60
|
-
meta_scope: @assembly.meta_scope
|
59
|
+
meta_scope: @assembly.meta_scope,
|
60
|
+
announcement: @assembly.announcement
|
61
61
|
)
|
62
62
|
end
|
63
63
|
|
64
|
+
def copy_assembly_attachments
|
65
|
+
[:hero_image, :banner_image].each do |attribute|
|
66
|
+
next unless @assembly.attached_uploader(attribute).attached?
|
67
|
+
|
68
|
+
@copied_assembly.send(attribute).attach(@assembly.send(attribute).blob)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
64
72
|
def copy_assembly_categories
|
65
73
|
@assembly.categories.each do |category|
|
66
74
|
Category.create!(
|
@@ -82,7 +82,8 @@ module Decidim
|
|
82
82
|
facebook_handler: form.facebook_handler,
|
83
83
|
instagram_handler: form.instagram_handler,
|
84
84
|
youtube_handler: form.youtube_handler,
|
85
|
-
github_handler: form.github_handler
|
85
|
+
github_handler: form.github_handler,
|
86
|
+
announcement: form.announcement
|
86
87
|
)
|
87
88
|
end
|
88
89
|
|
@@ -67,12 +67,16 @@ module Decidim
|
|
67
67
|
)
|
68
68
|
end
|
69
69
|
|
70
|
+
def followers
|
71
|
+
form.user.is_a?(Decidim::UserGroup) ? form.user.users : [form.user]
|
72
|
+
end
|
73
|
+
|
70
74
|
def notify_assembly_member_about_new_membership
|
71
75
|
data = {
|
72
76
|
event: "decidim.events.assemblies.create_assembly_member",
|
73
77
|
event_class: Decidim::Assemblies::CreateAssemblyMemberEvent,
|
74
78
|
resource: assembly,
|
75
|
-
followers:
|
79
|
+
followers: followers
|
76
80
|
}
|
77
81
|
Decidim::EventsManager.publish(data)
|
78
82
|
end
|
@@ -6,6 +6,8 @@ module Decidim
|
|
6
6
|
# A command with all the business logic when creating a new participatory
|
7
7
|
# assembly in the system.
|
8
8
|
class UpdateAssembly < Rectify::Command
|
9
|
+
include ::Decidim::AttachmentAttributesMethods
|
10
|
+
|
9
11
|
# Public: Initializes the command.
|
10
12
|
#
|
11
13
|
# assembly - the Assembly to update
|
@@ -95,17 +97,11 @@ module Decidim
|
|
95
97
|
instagram_handler: form.instagram_handler,
|
96
98
|
youtube_handler: form.youtube_handler,
|
97
99
|
github_handler: form.github_handler,
|
98
|
-
weight: form.weight
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
{
|
104
|
-
hero_image: form.hero_image,
|
105
|
-
remove_hero_image: form.remove_hero_image,
|
106
|
-
banner_image: form.banner_image,
|
107
|
-
remove_banner_image: form.remove_banner_image
|
108
|
-
}.delete_if { |_k, val| val.is_a?(Decidim::ApplicationUploader) }
|
100
|
+
weight: form.weight,
|
101
|
+
announcement: form.announcement
|
102
|
+
}.merge(
|
103
|
+
attachment_attributes(:hero_image, :banner_image)
|
104
|
+
)
|
109
105
|
end
|
110
106
|
|
111
107
|
def participatory_processes(assembly)
|
@@ -87,11 +87,7 @@ module Decidim
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def assembly_params
|
90
|
-
{
|
91
|
-
id: params[:slug],
|
92
|
-
hero_image: current_assembly.hero_image,
|
93
|
-
banner_image: current_assembly.banner_image
|
94
|
-
}.merge(params[:assembly].to_unsafe_h)
|
90
|
+
{ id: params[:slug] }.merge(params[:assembly].to_unsafe_h)
|
95
91
|
end
|
96
92
|
end
|
97
93
|
end
|
@@ -30,6 +30,7 @@ module Decidim
|
|
30
30
|
translatable_attribute :subtitle, String
|
31
31
|
translatable_attribute :target, String
|
32
32
|
translatable_attribute :title, String
|
33
|
+
translatable_attribute :announcement, String
|
33
34
|
|
34
35
|
attribute :created_by, String
|
35
36
|
attribute :facebook_handler, String
|
@@ -60,8 +61,8 @@ module Decidim
|
|
60
61
|
|
61
62
|
attribute :banner_image
|
62
63
|
attribute :hero_image
|
63
|
-
attribute :remove_banner_image
|
64
|
-
attribute :remove_hero_image
|
64
|
+
attribute :remove_banner_image, Boolean, default: false
|
65
|
+
attribute :remove_hero_image, Boolean, default: false
|
65
66
|
|
66
67
|
validates :area, presence: true, if: proc { |object| object.area_id.present? }
|
67
68
|
|
@@ -40,7 +40,7 @@ module Decidim
|
|
40
40
|
|
41
41
|
translatable_fields :title, :subtitle, :short_description, :description, :developer_group, :meta_scope, :local_area,
|
42
42
|
:target, :participatory_scope, :participatory_structure, :purpose_of_action, :composition, :created_by_other,
|
43
|
-
:closing_date_reason, :internal_organisation, :special_features
|
43
|
+
:closing_date_reason, :internal_organisation, :special_features, :announcement
|
44
44
|
|
45
45
|
belongs_to :organization,
|
46
46
|
foreign_key: "decidim_organization_id",
|
@@ -69,11 +69,11 @@ module Decidim
|
|
69
69
|
has_many :children, foreign_key: "parent_id", class_name: "Decidim::Assembly", inverse_of: :parent, dependent: :destroy
|
70
70
|
belongs_to :parent, class_name: "Decidim::Assembly", inverse_of: :children, optional: true, counter_cache: :children_count
|
71
71
|
|
72
|
-
|
73
|
-
|
72
|
+
has_one_attached :hero_image
|
73
|
+
validates_upload :hero_image, uploader: Decidim::HeroImageUploader
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
has_one_attached :banner_image
|
76
|
+
validates_upload :banner_image, uploader: Decidim::BannerImageUploader
|
77
77
|
|
78
78
|
validates :slug, uniqueness: { scope: :organization }
|
79
79
|
validates :slug, presence: true, format: { with: Decidim::Assembly.slug_format }
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
|
10
10
|
POSITIONS = %w(president vice_president secretary other).freeze
|
11
11
|
|
12
|
-
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::
|
12
|
+
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::UserBaseEntity", optional: true
|
13
13
|
belongs_to :assembly, foreign_key: "decidim_assembly_id", class_name: "Decidim::Assembly"
|
14
14
|
alias participatory_space assembly
|
15
15
|
|
File without changes
|
@@ -0,0 +1,63 @@
|
|
1
|
+
$(() => {
|
2
|
+
const $assemblyScopeEnabled = $("#assembly_scopes_enabled");
|
3
|
+
const $assemblyScopeId = $("#assembly_scope_id");
|
4
|
+
|
5
|
+
if ($(".edit_assembly, .new_assembly").length > 0) {
|
6
|
+
$assemblyScopeEnabled.on("change", (event) => {
|
7
|
+
const checked = event.target.checked;
|
8
|
+
window.theDataPicker.enabled($assemblyScopeId, checked);
|
9
|
+
})
|
10
|
+
window.theDataPicker.enabled($assemblyScopeId, $assemblyScopeEnabled.prop("checked"));
|
11
|
+
}
|
12
|
+
|
13
|
+
const $form = $(".assembly_form_admin");
|
14
|
+
|
15
|
+
if ($form.length > 0) {
|
16
|
+
|
17
|
+
const $privateSpace = $form.find("#private_space");
|
18
|
+
const $isTransparent = $form.find("#is_transparent");
|
19
|
+
const $specialFeatures = $form.find("#special_features");
|
20
|
+
|
21
|
+
|
22
|
+
const toggleDisabledHiddenFields = () => {
|
23
|
+
const enabledPrivateSpace = $privateSpace.find("input[type='checkbox']").prop("checked");
|
24
|
+
$isTransparent.find("input[type='checkbox']").attr("disabled", "disabled");
|
25
|
+
$specialFeatures.hide();
|
26
|
+
|
27
|
+
if (enabledPrivateSpace) {
|
28
|
+
$isTransparent.find("input[type='checkbox']").attr("disabled", !enabledPrivateSpace);
|
29
|
+
$specialFeatures.show();
|
30
|
+
}
|
31
|
+
};
|
32
|
+
|
33
|
+
$privateSpace.on("change", toggleDisabledHiddenFields);
|
34
|
+
toggleDisabledHiddenFields();
|
35
|
+
|
36
|
+
const $assemblyType = $form.find("#assembly_assembly_type");
|
37
|
+
const $assemblyTypeOther = $form.find("#assembly_type_other");
|
38
|
+
|
39
|
+
const $assemblyCreatedBy = $form.find("#assembly_created_by");
|
40
|
+
const $assemblyCreatedByOther = $form.find("#created_by_other");
|
41
|
+
|
42
|
+
const toggleDependsOnSelect = ($target, $showDiv) => {
|
43
|
+
const value = $target.val();
|
44
|
+
$showDiv.hide();
|
45
|
+
if (value === "others") {
|
46
|
+
$showDiv.show();
|
47
|
+
}
|
48
|
+
};
|
49
|
+
|
50
|
+
$assemblyType.on("change", (ev) => {
|
51
|
+
const $target = $(ev.target);
|
52
|
+
toggleDependsOnSelect($target, $assemblyTypeOther);
|
53
|
+
});
|
54
|
+
|
55
|
+
$assemblyCreatedBy.on("change", (ev) => {
|
56
|
+
const $target = $(ev.target);
|
57
|
+
toggleDependsOnSelect($target, $assemblyCreatedByOther);
|
58
|
+
});
|
59
|
+
|
60
|
+
toggleDependsOnSelect($assemblyType, $assemblyTypeOther);
|
61
|
+
toggleDependsOnSelect($assemblyCreatedBy, $assemblyCreatedByOther);
|
62
|
+
}
|
63
|
+
});
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
const { createFieldDependentInputs } = exports.DecidimAdmin;
|
1
|
+
import createFieldDependentInputs from "src/decidim/admin/field_dependent_inputs.component"
|
3
2
|
|
3
|
+
$(() => {
|
4
4
|
const $assemblyMemberType = $("#assembly_member_existing_user");
|
5
5
|
|
6
6
|
createFieldDependentInputs({
|
@@ -34,4 +34,4 @@
|
|
34
34
|
return $field.val() === "other"
|
35
35
|
}
|
36
36
|
});
|
37
|
-
})
|
37
|
+
})
|
@@ -0,0 +1,14 @@
|
|
1
|
+
$(() => {
|
2
|
+
$(".show-more").on("click", function() {
|
3
|
+
/* eslint-disable no-invalid-this */
|
4
|
+
$(this).hide();
|
5
|
+
$(".show-more-panel").removeClass("hide");
|
6
|
+
$(".hide-more").show();
|
7
|
+
});
|
8
|
+
|
9
|
+
$(".hide-more").on("click", function() {
|
10
|
+
$(this).hide();
|
11
|
+
$(".show-more-panel").addClass("hide");
|
12
|
+
$(".show-more").show();
|
13
|
+
});
|
14
|
+
})
|