decidim-assemblies 0.24.3 → 0.25.0.rc4

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assembly_m_cell.rb +1 -1
  3. data/app/cells/decidim/assemblies/assembly_member/show.erb +1 -1
  4. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies/show.erb +1 -1
  5. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +11 -3
  6. data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -1
  7. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +5 -1
  8. data/app/commands/decidim/assemblies/admin/update_assembly.rb +7 -11
  9. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +1 -5
  10. data/app/forms/decidim/assemblies/admin/assembly_form.rb +3 -2
  11. data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +1 -0
  12. data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +1 -1
  13. data/app/helpers/decidim/assemblies/admin/assemblies_admin_menu_helper.rb +0 -5
  14. data/app/models/decidim/assembly.rb +5 -5
  15. data/app/models/decidim/assembly_member.rb +1 -1
  16. data/app/packs/entrypoints/decidim_assemblies.js +5 -0
  17. data/app/packs/entrypoints/decidim_assemblies_admin.js +3 -0
  18. data/app/{assets/images/decidim/assemblies/assembly.svg → packs/images/decidim/assemblies/decidim_assemblies.svg} +0 -0
  19. data/app/packs/src/decidim/assemblies/admin/assemblies.js +63 -0
  20. data/app/{assets/javascripts/decidim/assemblies/admin/assembly_members.js.es6 → packs/src/decidim/assemblies/admin/assembly_members.js} +3 -3
  21. data/app/packs/src/decidim/assemblies/assemblies.js +14 -0
  22. data/app/packs/src/decidim/assemblies/orgchart.js +695 -0
  23. data/app/presenters/decidim/assemblies/assembly_presenter.rb +2 -12
  24. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +3 -13
  25. data/app/queries/decidim/assemblies/admin/admin_users.rb +24 -11
  26. data/app/serializers/decidim/assemblies/assembly_importer.rb +3 -2
  27. data/app/serializers/decidim/assemblies/assembly_serializer.rb +4 -2
  28. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +6 -3
  29. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +1 -1
  30. data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +1 -1
  31. data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +2 -2
  32. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +1 -1
  33. data/app/views/decidim/assemblies/assemblies/index.html.erb +2 -2
  34. data/app/views/decidim/assemblies/assemblies/show.html.erb +6 -4
  35. data/app/views/layouts/decidim/_assembly_header.html.erb +1 -1
  36. data/app/views/layouts/decidim/admin/assemblies.html.erb +1 -1
  37. data/app/views/layouts/decidim/admin/assembly.html.erb +4 -73
  38. data/app/views/layouts/decidim/assembly.html.erb +2 -2
  39. data/config/assets.rb +9 -0
  40. data/config/locales/ar.yml +0 -17
  41. data/config/locales/ca.yml +4 -38
  42. data/config/locales/cs.yml +4 -38
  43. data/config/locales/de.yml +4 -38
  44. data/config/locales/el.yml +0 -31
  45. data/config/locales/en.yml +5 -39
  46. data/config/locales/es-MX.yml +4 -38
  47. data/config/locales/es-PY.yml +4 -38
  48. data/config/locales/es.yml +4 -38
  49. data/config/locales/eu.yml +0 -17
  50. data/config/locales/fi-plain.yml +5 -39
  51. data/config/locales/fi.yml +5 -39
  52. data/config/locales/fr-CA.yml +1 -39
  53. data/config/locales/fr-LU.yml +449 -0
  54. data/config/locales/fr.yml +0 -38
  55. data/config/locales/gl.yml +4 -38
  56. data/config/locales/hu.yml +0 -31
  57. data/config/locales/id-ID.yml +0 -17
  58. data/config/locales/is-IS.yml +0 -14
  59. data/config/locales/it.yml +6 -39
  60. data/config/locales/ja.yml +4 -33
  61. data/config/locales/lb-LU.yml +1 -0
  62. data/config/locales/lv.yml +0 -30
  63. data/config/locales/nl.yml +5 -39
  64. data/config/locales/no.yml +0 -38
  65. data/config/locales/pl.yml +4 -41
  66. data/config/locales/pt-BR.yml +82 -17
  67. data/config/locales/pt.yml +0 -31
  68. data/config/locales/ro-RO.yml +5 -36
  69. data/config/locales/ru.yml +0 -17
  70. data/config/locales/sk.yml +0 -16
  71. data/config/locales/sl.yml +0 -17
  72. data/config/locales/sr-CS.yml +0 -16
  73. data/config/locales/sv.yml +3 -36
  74. data/config/locales/tr-TR.yml +0 -31
  75. data/config/locales/uk.yml +0 -17
  76. data/config/locales/zh-CN.yml +0 -31
  77. data/db/migrate/20210507063604_add_announcement_to_assemblies.rb +7 -0
  78. data/lib/decidim/api/assembly_type.rb +10 -1
  79. data/lib/decidim/assemblies/admin_engine.rb +122 -30
  80. data/lib/decidim/assemblies/engine.rb +6 -9
  81. data/lib/decidim/assemblies/participatory_space.rb +46 -8
  82. data/lib/decidim/assemblies/test/factories.rb +1 -0
  83. data/lib/decidim/assemblies/version.rb +1 -1
  84. metadata +21 -22
  85. data/app/assets/config/admin/decidim_assemblies_manifest.js +0 -2
  86. data/app/assets/config/decidim_assemblies_manifest.js +0 -2
  87. data/app/assets/javascripts/decidim/assemblies/admin/assemblies.js.es6 +0 -67
  88. data/app/assets/javascripts/decidim/assemblies/assemblies.js.es6 +0 -18
  89. data/app/assets/javascripts/decidim/assemblies/orgchart.js.es6 +0 -698
  90. data/app/cells/decidim/assemblies/statistic/show.erb +0 -9
  91. data/app/cells/decidim/assemblies/statistic_cell.rb +0 -20
  92. data/app/cells/decidim/assemblies/statistics/show.erb +0 -17
  93. data/app/cells/decidim/assemblies/statistics_cell.rb +0 -18
  94. data/config/locales/ja-JP.yml +0 -471
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7780d892e6468fdd163051447390c4edbb84d9cb4f2e38e6a634e30fc987961f
4
- data.tar.gz: d48fc9be1cf5acae50f06da3aad41b52333964efa0dfe3e85a1301c7dad11fca
3
+ metadata.gz: cbc9994a18eae0c7d1f625e52537e7fbfb780c5988218fa02cfefbabcc84ca4d
4
+ data.tar.gz: 3733bbac11e1e743b257606c725fe6404d7f1ca82963f7c3fcc36a86f2bf12b7
5
5
  SHA512:
6
- metadata.gz: ea12b06eadcdbfb3ac279f061ec8b6d0c5226391bae29347c3b0810b7b658df808451ec794a2f3c5269786244f566fb2215bf27bf7db2967b4f9bc7d923c6cdc
7
- data.tar.gz: e368d64d4232e808fe80646ee00f7df8719d54379dacbe89da6c79d446a7567390b43f0ff7358580f7179085a2bab039124e0f339ee020e078900d9959ecb674
6
+ metadata.gz: 110784b0bbdeca53efb6a6a316c58aaa6ecf06c5a515a964eeb187d9215eaa346083a9416e7df4f9d3cc2145a56a845f67808afcc35d1dc98ad6b92dae604af8
7
+ data.tar.gz: 8a9322a0e19c16168c642cc3f1d1eef35d66c98d2a802cc9692201c71bba8a7ca2f14d6d7424bd23eab35f06b23e4f294a2f355f07a0b64707d312f30a2e88b3
@@ -27,7 +27,7 @@ module Decidim
27
27
  end
28
28
 
29
29
  def resource_image_path
30
- model.hero_image.url
30
+ model.attached_uploader(:hero_image).path
31
31
  end
32
32
 
33
33
  def statuses
@@ -24,7 +24,7 @@
24
24
  <% end %>
25
25
  </div>
26
26
  <% else %>
27
- <div class="author__avatar"><%= image_tag asset_path("decidim/default-avatar.svg"), alt: "member-avatar" %></div>
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.url %>)"></div>
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: [form.user]
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
- }.merge(uploader_attributes)
100
- end
101
-
102
- def uploader_attributes
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
 
@@ -8,6 +8,7 @@ module Decidim
8
8
  #
9
9
  class AssemblyImportForm < Form
10
10
  include TranslatableAttributes
11
+ include Decidim::HasUploadValidations
11
12
 
12
13
  JSON_MIME_TYPE = "application/json"
13
14
  # Accepted mime types
@@ -34,7 +34,7 @@ module Decidim
34
34
  end
35
35
 
36
36
  def user
37
- @user ||= current_organization.users.find_by(id: user_id)
37
+ @user ||= current_organization.user_entities.find_by(id: user_id)
38
38
  end
39
39
 
40
40
  def positions_for_select
@@ -4,11 +4,6 @@ module Decidim
4
4
  module Assemblies
5
5
  module Admin
6
6
  module AssembliesAdminMenuHelper
7
- include Decidim::Admin::SidebarMenuHelper
8
-
9
- def admin_assemblies_menu
10
- @admin_assemblies_menu ||= sidebar_menu(:admin_assemblies_menu)
11
- end
12
7
  end
13
8
  end
14
9
  end
@@ -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
- validates_upload :hero_image
73
- mount_uploader :hero_image, Decidim::HeroImageUploader
72
+ has_one_attached :hero_image
73
+ validates_upload :hero_image, uploader: Decidim::HeroImageUploader
74
74
 
75
- validates_upload :banner_image
76
- mount_uploader :banner_image, Decidim::BannerImageUploader
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::User", optional: true
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
 
@@ -0,0 +1,5 @@
1
+ import "src/decidim/assemblies/assemblies"
2
+ import "src/decidim/assemblies/orgchart"
3
+
4
+ // Images
5
+ require.context("../images", true)
@@ -0,0 +1,3 @@
1
+ import "src/decidim/assemblies/admin/assemblies"
2
+ import "src/decidim/assemblies/admin/assembly_members"
3
+ import "src/decidim/slug_form"
@@ -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
- ((exports) => {
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
- })(window);
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
+ })