decidim-admin 0.28.1 → 0.28.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -13
  3. data/app/commands/decidim/admin/destroy_component.rb +1 -0
  4. data/app/controllers/concerns/decidim/admin/filterable.rb +1 -1
  5. data/app/controllers/concerns/decidim/admin/verification_conflicts/filterable.rb +31 -0
  6. data/app/controllers/decidim/admin/application_controller.rb +1 -1
  7. data/app/controllers/decidim/admin/authorization_workflows_controller.rb +3 -1
  8. data/app/controllers/decidim/admin/conflicts_controller.rb +13 -5
  9. data/app/controllers/decidim/admin/organization_controller.rb +7 -4
  10. data/app/helpers/decidim/admin/application_helper.rb +13 -0
  11. data/app/packs/src/decidim/admin/application.js +6 -1
  12. data/app/packs/src/decidim/admin/choose_language.js +2 -0
  13. data/app/packs/src/decidim/admin/dynamic_fields.component.js +2 -1
  14. data/app/views/decidim/admin/block_user/new.html.erb +1 -1
  15. data/app/views/decidim/admin/components/index.html.erb +5 -1
  16. data/app/views/decidim/admin/conflicts/index.html.erb +29 -6
  17. data/app/views/decidim/admin/exports/_dropdown.html.erb +5 -5
  18. data/app/views/decidim/admin/imports/_dropdown.html.erb +6 -4
  19. data/app/views/decidim/admin/imports/new.html.erb +5 -4
  20. data/app/views/decidim/admin/organization_appearance/form/_minimap.html.erb +3 -3
  21. data/app/views/decidim/admin/shared/_js-callout.html.erb +2 -2
  22. data/app/views/layouts/decidim/admin/_application.html.erb +1 -1
  23. data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +2 -2
  24. data/config/locales/ar.yml +1 -0
  25. data/config/locales/bg.yml +1000 -3
  26. data/config/locales/ca.yml +6 -2
  27. data/config/locales/cs.yml +9 -0
  28. data/config/locales/de.yml +12 -8
  29. data/config/locales/el.yml +1 -0
  30. data/config/locales/en.yml +4 -0
  31. data/config/locales/es-MX.yml +11 -7
  32. data/config/locales/es-PY.yml +11 -7
  33. data/config/locales/es.yml +22 -18
  34. data/config/locales/eu.yml +4 -0
  35. data/config/locales/fi-plain.yml +5 -1
  36. data/config/locales/fi.yml +9 -5
  37. data/config/locales/fr-CA.yml +4 -0
  38. data/config/locales/fr.yml +4 -0
  39. data/config/locales/ga-IE.yml +1 -0
  40. data/config/locales/gl.yml +1 -0
  41. data/config/locales/hu.yml +1 -0
  42. data/config/locales/id-ID.yml +1 -0
  43. data/config/locales/is-IS.yml +1 -0
  44. data/config/locales/it.yml +2 -0
  45. data/config/locales/ja.yml +4 -0
  46. data/config/locales/lb.yml +1 -0
  47. data/config/locales/lt.yml +2 -0
  48. data/config/locales/lv.yml +1 -0
  49. data/config/locales/nl.yml +1 -0
  50. data/config/locales/no.yml +1 -0
  51. data/config/locales/pl.yml +3 -0
  52. data/config/locales/pt-BR.yml +1 -0
  53. data/config/locales/pt.yml +1 -0
  54. data/config/locales/ro-RO.yml +10 -3
  55. data/config/locales/ru.yml +1 -0
  56. data/config/locales/sk.yml +1 -0
  57. data/config/locales/sl.yml +1 -0
  58. data/config/locales/sq-AL.yml +413 -0
  59. data/config/locales/sr-CS.yml +1 -0
  60. data/config/locales/sv.yml +303 -162
  61. data/config/locales/th-TH.yml +101 -0
  62. data/config/locales/tr-TR.yml +1 -0
  63. data/config/locales/uk.yml +1 -0
  64. data/config/locales/zh-CN.yml +1 -0
  65. data/config/locales/zh-TW.yml +2 -0
  66. data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +27 -0
  67. data/lib/decidim/admin/test/invite_participatory_space_admins_shared_examples.rb +180 -0
  68. data/lib/decidim/admin/test/invite_participatory_space_collaborators_shared_examples.rb +67 -0
  69. data/lib/decidim/admin/test/invite_participatory_space_moderators_shared_examples.rb +77 -0
  70. data/lib/decidim/admin/test/invite_participatory_space_users_shared_context.rb +34 -0
  71. data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +12 -11
  72. data/lib/decidim/admin/test/manage_attachments_examples.rb +13 -1
  73. data/lib/decidim/admin/test/manage_categories_examples.rb +11 -8
  74. data/lib/decidim/admin/test/manage_hide_content_examples.rb +4 -0
  75. data/lib/decidim/admin/test/manage_paginated_collection_examples.rb +4 -4
  76. data/lib/decidim/admin/test.rb +1 -0
  77. data/lib/decidim/admin/version.rb +1 -1
  78. data/lib/decidim/admin.rb +0 -15
  79. metadata +17 -15
  80. data/app/controllers/concerns/decidim/admin/paginable.rb +0 -20
  81. data/app/helpers/decidim/admin/paginable/per_page_helper.rb +0 -22
  82. data/app/mailers/decidim/admin/application_mailer.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cf03aeb983e0ddb8c344dbe1f8b8d21f7fbdfbd2a0f0c75f2ca76010320dd77
4
- data.tar.gz: 91db438a29f5e05315b436f3b1cf96d0d0b2ad6fa03f4ec5955f30605fd99f12
3
+ metadata.gz: 1b4c55445cbf1d61f5aabef092569d33d79906e1de58106cab2d0650cf4046b5
4
+ data.tar.gz: 508c3c95f08c68df503df0b9bd9bb752a9d8c999f048421133da80190a876add
5
5
  SHA512:
6
- metadata.gz: 8fa198551d57ea25461ecd2e86a0f7aae31f4b3e67151ed8e952ed4e91bcfb088c460ebde206520b83c7d13e5ab478b510d5eb6b9fe8e870ef1df2fe92f14cb4
7
- data.tar.gz: cb21f050e6fa924f96579bd440058c7290d2ca29a6a4501e22a3b10c6b5199aa39b686e153e03a32aef78c80cc4c0d9c07746d00bc67656aeb56ba862e3a29c7
6
+ metadata.gz: 5cfe3db6149075c9308985f333d7f9cbd03e7f6878f34545c40c67c40378466e105ec82fe960c1a1625d75f1b8a31870aedc17647d7e7c72677c2cc424f1bd76
7
+ data.tar.gz: 4bd3495d6613ee0619dba4825ad378eba623983bb1f7074649039ab4a7381f07edc4bb6c641722779c8ac57d7057421145049c7a7574ce1b430a1b4f88c5606d
data/README.md CHANGED
@@ -42,19 +42,6 @@ There are some pages that exist by default and cannot be deleted since there
42
42
  are links to them inside the Decidim framework, see `Decidim::StaticPage` for
43
43
  the default list.
44
44
 
45
- ### Pager Configuration
46
-
47
- The number of results shown per page and per page range can be configured in the app `decidim.rb` initializer as follows:
48
-
49
- ```ruby
50
- Decidim::Admin.configure do |config|
51
- config.per_page_range = [15, 50, 100]
52
- end
53
- ```
54
-
55
- * `Decidim::Admin.per_page_range.first` sets the `default_per_page` value for `Decidim::Admin` (in Kaminari)
56
- * `Decidim::Admin.per_page_range.last` sets the `max_per_page` value for `Decidim::Admin` (in Kaminari)
57
-
58
45
  ## Contributing
59
46
 
60
47
  See [Decidim](https://github.com/decidim/decidim).
@@ -44,6 +44,7 @@ module Decidim
44
44
  end
45
45
 
46
46
  def run_before_hooks
47
+ Decidim::Reminder.where(component: @component).destroy_all
47
48
  @component.manifest.run_hooks(:before_destroy, @component)
48
49
  end
49
50
 
@@ -9,7 +9,7 @@ module Decidim
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  included do
12
- include Decidim::Admin::Paginable
12
+ include Decidim::Paginable
13
13
  include Decidim::TranslatableAttributes
14
14
 
15
15
  helper Decidim::Admin::FilterableHelper
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Decidim
6
+ module Admin
7
+ module VerificationConflicts
8
+ module Filterable
9
+ extend ActiveSupport::Concern
10
+
11
+ included do
12
+ include Decidim::Admin::Filterable
13
+
14
+ private
15
+
16
+ def base_query
17
+ collection
18
+ end
19
+
20
+ def search_field_predicate
21
+ :current_user_name_or_current_user_nickname_or_current_user_email_cont
22
+ end
23
+
24
+ def filters
25
+ []
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -17,6 +17,7 @@ module Decidim
17
17
  include Headers::ContentSecurityPolicy
18
18
  include DisableRedirectionToExternalHost
19
19
  include Decidim::Admin::Concerns::HasBreadcrumbItems
20
+ include ActiveStorage::SetCurrent
20
21
 
21
22
  helper Decidim::Admin::ApplicationHelper
22
23
  helper Decidim::Admin::AttributesDisplayHelper
@@ -25,7 +26,6 @@ module Decidim
25
26
  helper Decidim::Admin::IconWithTooltipHelper
26
27
  helper Decidim::Admin::MenuHelper
27
28
  helper Decidim::Admin::ScopesHelper
28
- helper Decidim::Admin::Paginable::PerPageHelper
29
29
  helper Decidim::DecidimFormHelper
30
30
  helper Decidim::ReplaceButtonsHelper
31
31
  helper Decidim::ScopesHelper
@@ -10,7 +10,9 @@ module Decidim
10
10
  def index
11
11
  enforce_permission_to :index, :authorization_workflow
12
12
 
13
- @workflows = Decidim::Verifications.admin_workflows
13
+ @workflows = Decidim::Verifications.admin_workflows.select do |manifest|
14
+ current_organization.available_authorizations.include?(manifest.name.to_s)
15
+ end
14
16
 
15
17
  # Decidim::Verifications::Authorizations Query
16
18
  @authorizations = Decidim::Verifications::Authorizations.new(
@@ -3,18 +3,16 @@
3
3
  module Decidim
4
4
  module Admin
5
5
  class ConflictsController < Decidim::Admin::ApplicationController
6
+ include Decidim::Admin::VerificationConflicts::Filterable
7
+
6
8
  layout "decidim/admin/users"
7
9
 
8
- helper_method :context_breadcrumb_items
10
+ helper_method :context_breadcrumb_items, :conflicts
9
11
 
10
12
  add_breadcrumb_item_from_menu :impersonate_menu
11
13
 
12
14
  def index
13
15
  enforce_permission_to :index, :impersonatable_user
14
-
15
- @conflicts = Decidim::Verifications::Conflict.joins(:current_user).where(
16
- decidim_users: { decidim_organization_id: current_organization.id }
17
- )
18
16
  end
19
17
 
20
18
  def edit
@@ -66,6 +64,16 @@ module Decidim
66
64
  url: decidim_admin.impersonatable_users_path
67
65
  }
68
66
  end
67
+
68
+ def collection
69
+ @collection ||= Decidim::Verifications::Conflict.joins(:current_user).where(
70
+ decidim_users: { decidim_organization_id: current_organization.id }
71
+ )
72
+ end
73
+
74
+ def conflicts
75
+ @conflicts ||= filtered_collection.order(created_at: :desc)
76
+ end
69
77
  end
70
78
  end
71
79
  end
@@ -46,13 +46,16 @@ module Decidim
46
46
  respond_to do |format|
47
47
  format.json do
48
48
  if (term = params[:term].to_s).present?
49
- query = relation.order(name: :asc)
50
49
  query = if term.start_with?("@")
51
- query.where("nickname ILIKE ?", "#{term.delete("@")}%")
50
+ nickname = term.delete("@")
51
+ relation.where("nickname ILIKE ?", "#{nickname}%")
52
+ .order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("similarity(nickname, '#{nickname}') DESC")))
52
53
  else
53
- query.where("name ILIKE ?", "%#{term}%").or(
54
- query.where("email ILIKE ?", "%#{term}%")
54
+ relation.where("name ILIKE ?", "%#{term}%").or(
55
+ relation.where("email ILIKE ?", "%#{term}%")
55
56
  )
57
+ .order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("GREATEST(similarity(name, '#{term}'), similarity(email, '#{term}')) DESC")))
58
+ .order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("(similarity(name, '#{term}') + similarity(email, '#{term}')) / 2 DESC")))
56
59
  end
57
60
  render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname})" } }
58
61
  else
@@ -16,6 +16,19 @@ module Decidim
16
16
  include Decidim::Admin::ResourceScopeHelper
17
17
  include Decidim::Admin::SearchFormHelper
18
18
 
19
+ # Public: Overwrites the `cell` helper method to automatically set some
20
+ # common context.
21
+ #
22
+ # name - the name of the cell to render
23
+ # model - the cell model
24
+ # options - a Hash with options
25
+ #
26
+ # Renders the cell contents.
27
+ def cell(name, model, options = {}, &)
28
+ options = { context: { view_context: self, current_user: } }.deep_merge(options)
29
+ super
30
+ end
31
+
19
32
  def participatory_space_active_link?(component)
20
33
  endpoints = component.manifest.admin_engine.try(:participatory_space_endpoints)
21
34
  endpoints && is_active_link?(decidim_admin_participatory_processes.components_path(current_participatory_space), %r{/\d+/manage/(#{endpoints.join("|")})\b})
@@ -12,8 +12,13 @@ window.Decidim.managedUsersForm = managedUsersForm
12
12
  window.Decidim.config = new Configuration()
13
13
  window.Decidim.InputCharacterCounter = InputCharacterCounter;
14
14
 
15
+ // REDESIGN_PENDING: deprecated
16
+ window.initFoundation = (element) => {
17
+ $(element).foundation();
18
+ };
19
+
15
20
  $(() => {
16
- $(document).foundation();
21
+ window.initFoundation(document);
17
22
 
18
23
  $(document).on("show.zf.dropdownMenu", function(event, $element) {
19
24
  $element.attr("aria-hidden", "false");
@@ -7,7 +7,9 @@ export default function initLanguageChangeSelect(elements) {
7
7
  let targetTabPaneSelector = select.value;
8
8
  let tabsContent = select.parentElement.parentElement.nextElementSibling;
9
9
 
10
+ tabsContent.querySelector(".is-active").ariaHidden = "true";
10
11
  tabsContent.querySelector(".is-active").classList.remove("is-active");
12
+ tabsContent.querySelector(targetTabPaneSelector).ariaHidden = "false";
11
13
  tabsContent.querySelector(targetTabPaneSelector).classList.add("is-active");
12
14
  })
13
15
  });
@@ -159,7 +159,8 @@ class DynamicFieldsComponent {
159
159
  $newField.appendTo($container);
160
160
  }
161
161
 
162
- $newField.foundation();
162
+ // REDESIGN_PENDING: deprecated
163
+ window.initFoundation($newField);
163
164
 
164
165
  if (this.onAddField) {
165
166
  this.onAddField($newField);
@@ -19,7 +19,7 @@
19
19
  <%= cell("decidim/announcement", t(".already_reported_html"), callout_class: "alert" ) %>
20
20
  <% end %>
21
21
 
22
- <% if defined?(Decidim::Templates) %>
22
+ <% if Decidim.module_installed?(:templates) %>
23
23
  <%= render "decidim/templates/admin/block_user_templates/template_chooser", form: f %>
24
24
  <% end %>
25
25
 
@@ -14,8 +14,12 @@
14
14
  <div class="dropdown-pane" id="add-component-dropdown" data-dropdown data-auto-focus="true" data-close-on-click="true">
15
15
  <ul class="vertical menu add-components font-normal">
16
16
  <% @manifests.each do |manifest| %>
17
- <li><%= link_to t("#{manifest.name}.name", scope: "decidim.components"), new_component_path(type: manifest.name), class: manifest.name %></li>
17
+ <%= link_to new_component_path(type: manifest.name), class: manifest.name do %>
18
+ <li>
19
+ <%= t("#{manifest.name}.name", scope: "decidim.components") %>
20
+ </li>
18
21
  <% end %>
22
+ <% end %>
19
23
  </ul>
20
24
  </div>
21
25
  </div>
@@ -1,10 +1,32 @@
1
1
  <% add_decidim_page_title(t("title", scope: "decidim.admin.conflicts")) %>
2
- <div class="card">
3
- <div class="item_show__header">
4
- <h1 class="item_show__header-title">
5
- <%= t("title", scope: "decidim.admin.conflicts") %>
6
- </h1>
2
+ <div class="item_show__header">
3
+ <h1 class="item_show__header-title">
4
+ <%= t("title", scope: "decidim.admin.conflicts") %>
5
+ </h1>
6
+ </div>
7
+
8
+ <div class="filters__section">
9
+ <div class="fcell search">
10
+ <%= search_form_for(query, url: url_for) do |form| %>
11
+ <%= applied_filters_hidden_field_tags %>
12
+ <div class="input-group">
13
+ <%= form.search_field(
14
+ search_field_predicate,
15
+ class: "input-group-field",
16
+ label: false,
17
+ placeholder: t(".text")
18
+ ) %>
19
+ <div class="input-group-button">
20
+ <button type="submit" class="text-secondary" aria-label="<%= t("decidim.search.term_input_placeholder") %>">
21
+ <%= icon "search-line", class: "fill-secondary w-4 h-4" %>
22
+ </button>
23
+ </div>
24
+ </div>
25
+ <% end %>
7
26
  </div>
27
+ </div>
28
+
29
+ <div class="card">
8
30
  <div class="table-scroll">
9
31
  <table class="table-list">
10
32
  <thead>
@@ -17,7 +39,7 @@
17
39
  </tr>
18
40
  </thead>
19
41
  <tbody>
20
- <% @conflicts.each do |conflict| %>
42
+ <% conflicts.each do |conflict| %>
21
43
  <tr>
22
44
  <td><%= conflict.current_user.name %></td>
23
45
  <td><%= conflict.managed_user.name %></td>
@@ -30,3 +52,4 @@
30
52
  </table>
31
53
  </div>
32
54
  </div>
55
+ <%= decidim_paginate conflicts %>
@@ -10,11 +10,11 @@
10
10
  <ul class="vertical menu add-components">
11
11
  <% component.manifest.export_manifests.each do |manifest| %>
12
12
  <% manifest.formats.each do |format| %>
13
- <li class="exports--format--<%= format.downcase %> exports--<%= manifest.name %>">
14
- <%= link_to t("decidim.admin.exports.export_as", name: t("decidim.#{component.manifest.name}.admin.exports.#{manifest.name}"), export_format: t("decidim.admin.exports.formats.#{format}")),
15
- exports_path(component, id: manifest.name, format:, resource_id:, filters:),
16
- method: :post %>
17
- </li>
13
+ <%= link_to exports_path(component, id: manifest.name, format:, resource_id:, filters:), method: :post do %>
14
+ <li class="exports--format--<%= format.downcase %> exports--<%= manifest.name %>">
15
+ <%= t("decidim.admin.exports.export_as", name: t("decidim.#{component.manifest.name}.admin.exports.#{manifest.name}"), export_format: t("decidim.admin.exports.formats.#{format}")) %>
16
+ </li>
17
+ <% end %>
18
18
  <% end %>
19
19
  <% end %>
20
20
  </ul>
@@ -7,10 +7,12 @@
7
7
  <% if custom %>
8
8
  <%= yield %>
9
9
  <% else %>
10
- <% component.manifest.import_manifests.each do |import_manifest| %>
11
- <li class="imports--file imports--<%= import_manifest.name %>">
12
- <%= link_to import_manifest.message(:label, self), admin_imports_path(component, resource_id:, name: import_manifest.name) %>
13
- </li>
10
+ <% component.manifest.import_manifests.each do |import_manifest| %>
11
+ <%= link_to admin_imports_path(component, resource_id:, name: import_manifest.name) do %>
12
+ <li class="imports--file imports--<%= import_manifest.name %>">
13
+ <%= import_manifest.message(:label, self) %>
14
+ </li>
15
+ <% end %>
14
16
  <% end %>
15
17
  <% end %>
16
18
  </ul>
@@ -12,10 +12,11 @@
12
12
  <div class="dropdown-pane" id="example-dropdown" data-dropdown data-position=bottom data-alignment=right data-auto-focus="true" data-close-on-click="true">
13
13
  <ul class="vertical menu add-components">
14
14
  <% mime_types.each do |format, name| %>
15
- <li class="examples--format--<%= format.downcase %> examples--<%= import_manifest.name %>">
16
- <%= link_to t(".download_example_format", name:),
17
- admin_imports_example_path(@current_component, name: import_manifest.name, format:) %>
18
- </li>
15
+ <%= link_to admin_imports_example_path(@current_component, name: import_manifest.name, format:) do %>
16
+ <li class="examples--format--<%= format.downcase %> examples--<%= import_manifest.name %>">
17
+ <%= t(".download_example_format", name:) %>
18
+ </li>
19
+ <% end %>
19
20
  <% end %>
20
21
  </ul>
21
22
  </div>
@@ -3,7 +3,7 @@
3
3
  <div id="minimap" class="grid grid-cols-1 md:grid-cols-2">
4
4
  <div class="minimap-tab">
5
5
  <% if current_organization.favicon.attached? %>
6
- <%= image_tag current_organization.attached_uploader(:favicon).path, class: "minimap-favicon" %>
6
+ <%= image_tag current_organization.attached_uploader(:favicon).url, class: "minimap-favicon" %>
7
7
  <% else %>
8
8
  <%= content_tag :div, nil, { class: "minimap-favicon placeholder", style: "width: #{image_width(current_organization, :favicon) * size_factor}px; height: #{image_height(current_organization, :favicon) * size_factor}px;" } do %>
9
9
  <span><%= t("favicon", scope: "activemodel.attributes.organization") %></span>
@@ -13,7 +13,7 @@
13
13
 
14
14
  <div class="minimap-header">
15
15
  <% if current_organization.logo.present? %>
16
- <%= image_tag current_organization.attached_uploader(:logo).path, class: "minimap-logo" %>
16
+ <%= image_tag current_organization.attached_uploader(:logo).url, class: "minimap-logo" %>
17
17
  <% else %>
18
18
  <%= content_tag :div, nil, { class: "minimap-logo placeholder", style: "width: #{image_width(current_organization, :logo) * size_factor}px; height: #{image_height(current_organization, :logo) * size_factor}px;" } do %>
19
19
  <span><%= t("logo", scope: "activemodel.attributes.organization") %></span>
@@ -26,7 +26,7 @@
26
26
 
27
27
  <div class="minimap-footer">
28
28
  <% if current_organization.official_img_footer.attached? %>
29
- <%= image_tag current_organization.attached_uploader(:official_img_footer).path, class: "minimap-official_img_footer" %>
29
+ <%= image_tag current_organization.attached_uploader(:official_img_footer).url, class: "minimap-official_img_footer" %>
30
30
  <% else %>
31
31
  <%= content_tag :div, nil, { class: "minimap-official_img_footer placeholder", style: "width: #{image_width(current_organization, :official_img_footer) * size_factor}px; height: #{image_height(current_organization, :official_img_footer) * size_factor}px;" } do %>
32
32
  <span><%= t("official_img_footer", scope: "activemodel.attributes.organization") %></span>
@@ -1,7 +1,7 @@
1
1
  <div class="flash <%= css %>" data-closable>
2
- <span class="flash__message">
2
+ <div class="flash__message">
3
3
  <%= text %>
4
- </span>
4
+ </div>
5
5
  <button class="close-button" type="button" data-close="">
6
6
  <span aria-hidden="true">×</span>
7
7
  </button>
@@ -23,7 +23,7 @@
23
23
  <div class="layout-nav">
24
24
  <%= link_to decidim_admin.root_path, class: "logo hidden md:block", data: { "external-link": false }, aria: { label: t("decidim.accessibility.logo", organization: current_organization.name) } do %>
25
25
  <% if current_organization.logo.present? %>
26
- <%= image_tag current_organization.attached_uploader(:logo).path, alt: current_organization.name %>
26
+ <%= image_tag current_organization.attached_uploader(:logo).url, alt: current_organization.name %>
27
27
  <% else %>
28
28
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 134 109">
29
29
  <g fill="#fff">
@@ -5,13 +5,13 @@
5
5
  <div class="hidden md:block">
6
6
  <%= sidebar_menu(secondary_root_menu).render %>
7
7
  </div>
8
- <button data-component="dropdown" data-target="dropdown-menu-sidebar" data-auto-close="true" data-disabled-md="true" data-scroll-to-menu="true">
8
+ <button data-component="dropdown" data-target="dropdown-menu-sidebar" data-auto-close="true" data-scroll-to-menu="true">
9
9
  <span><%= t("menu", scope: "decidim.admin.titles") %></span>
10
10
  <%= icon "arrow-down-s-line" %>
11
11
  <%= icon "arrow-up-s-line" %>
12
12
  </button>
13
13
 
14
- <ul id="dropdown-menu-sidebar" class="md:hidden">
14
+ <ul id="dropdown-menu-sidebar" class="md:hidden" aria-hidden="true">
15
15
  <%= sidebar_menu(secondary_root_menu).render %>
16
16
  </ul>
17
17
  </div>
@@ -150,6 +150,7 @@ ar:
150
150
  new: فئة جديدة
151
151
  export: تصدير الكل
152
152
  import: استيراد
153
+ manage: تدبير
153
154
  newsletter:
154
155
  new: رسالة إخبارية جديدة
155
156
  per_page: في كل صفحة