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.
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
+ })