decidim-decidim_awesome 0.11.2 → 0.11.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +54 -2
- data/app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb +5 -3
- data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +0 -4
- data/app/cells/decidim/decidim_awesome/voting/proposal_metadata_cell.rb +18 -3
- data/app/commands/concerns/decidim/decidim_awesome/proposals/create_proposal_override.rb +2 -2
- data/app/commands/concerns/decidim/decidim_awesome/system/register_organization_override.rb +29 -0
- data/app/commands/concerns/decidim/decidim_awesome/system/update_organization_override.rb +35 -0
- data/app/commands/concerns/decidim/decidim_awesome/update_account_override.rb +30 -0
- data/app/commands/decidim/decidim_awesome/admin/create_scoped_style.rb +3 -2
- data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +6 -4
- data/app/controllers/concerns/decidim/decidim_awesome/check_login_authorizations.rb +60 -0
- data/app/controllers/concerns/decidim/decidim_awesome/needs_awesome_config.rb +0 -2
- data/app/controllers/concerns/decidim/decidim_awesome/proposals/memoize_extra_fields.rb +23 -0
- data/app/controllers/concerns/decidim/decidim_awesome/use_user_time_zone.rb +32 -0
- data/app/controllers/decidim/decidim_awesome/admin/admin_authorizations_controller.rb +122 -0
- data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +1 -1
- data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +7 -1
- data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +5 -1
- data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +12 -4
- data/app/controllers/decidim/decidim_awesome/required_authorizations_controller.rb +58 -0
- data/app/forms/concerns/decidim/decidim_awesome/account_form_override.rb +25 -0
- data/app/forms/concerns/decidim/decidim_awesome/system/organization_form_override.rb +34 -0
- data/app/forms/decidim/decidim_awesome/admin/config_form.rb +41 -8
- data/app/helpers/decidim/decidim_awesome/map_helper.rb +28 -26
- data/app/overrides/decidim/account/show/add_timezone_select.html.erb.deface +3 -0
- data/app/overrides/decidim/admin/officializations/index/add_modal.html.erb.deface +3 -0
- data/app/overrides/decidim/admin/officializations/index/add_td.html.erb.deface +5 -0
- data/app/overrides/decidim/admin/officializations/index/add_th.html.erb.deface +5 -0
- data/app/overrides/decidim/system/organizations/_advanced_settings/add_awesome_config.html.erb.deface +9 -0
- data/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface +1 -1
- data/app/overrides/layouts/decidim/admin/_header/add_awesome_custom_styles.html.erb.deface +3 -0
- data/app/overrides/layouts/decidim/admin/_header/add_awesome_tags.html.erb.deface +1 -0
- data/app/packs/src/decidim/decidim_awesome/admin/proposal_sortings.js +0 -5
- data/app/packs/src/decidim/decidim_awesome/admin/verification_selects.js +21 -0
- data/app/packs/src/decidim/decidim_awesome/admin/verifications.js +43 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +1 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_admin_global.js +1 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/verifications.scss +99 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin_global.scss +1 -0
- data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +42 -11
- data/app/permissions/decidim/decidim_awesome/permissions.rb +7 -0
- data/app/presenters/decidim/decidim_awesome/admin_log/component_presenter_override.rb +3 -5
- data/app/presenters/decidim/decidim_awesome/admin_log/user_presenter_override.rb +46 -0
- data/app/views/decidim/decidim_awesome/account/_timezone_select.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/authorization.html.erb +20 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/callout.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/conflict.html.erb +5 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/edit.html.erb +41 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_scoped_admin_styles.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_scoped_styles.html.erb +48 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb +8 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_verifications.html.erb +15 -0
- data/app/views/decidim/decidim_awesome/admin/constraints/no_permissions.html.erb +6 -0
- data/app/views/decidim/decidim_awesome/admin/officializations/_participants_td.html.erb +25 -0
- data/app/views/decidim/decidim_awesome/admin/officializations/_participants_th.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/officializations/_verification_modal.html.erb +9 -0
- data/app/views/decidim/decidim_awesome/required_authorizations/index.html.erb +66 -0
- data/app/views/decidim/decidim_awesome/system/organizations/_admin_allowed_authorizations.html.erb +5 -0
- data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
- data/app/views/layouts/decidim/decidim_awesome/admin/_custom_styles.html.erb +3 -0
- data/app/views/layouts/decidim/decidim_awesome/admin/admin_authorizations.html.erb +7 -0
- data/config/i18n-tasks.yml +6 -0
- data/config/locales/ca.yml +91 -5
- data/config/locales/cs.yml +86 -0
- data/config/locales/de.yml +52 -0
- data/config/locales/en.yml +115 -1
- data/config/locales/es.yml +89 -3
- data/config/locales/eu.yml +607 -26
- data/config/locales/fr.yml +37 -1
- data/config/locales/it.yml +0 -1
- data/config/locales/ja.yml +86 -0
- data/config/locales/nl.yml +0 -1
- data/config/locales/pt-BR.yml +0 -1
- data/lib/decidim/decidim_awesome/admin_engine.rb +2 -0
- data/lib/decidim/decidim_awesome/authorizator.rb +34 -0
- data/lib/decidim/decidim_awesome/awesome.rb +54 -1
- data/lib/decidim/decidim_awesome/awesome_helpers.rb +48 -19
- data/lib/decidim/decidim_awesome/checksums.yml +9 -0
- data/lib/decidim/decidim_awesome/engine.rb +20 -4
- data/lib/decidim/decidim_awesome/menu.rb +45 -9
- data/lib/decidim/decidim_awesome/request_memoizer.rb +16 -0
- data/lib/decidim/decidim_awesome/test/factories.rb +0 -4
- data/lib/decidim/decidim_awesome/test/initializer.rb +4 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +1 -1
- data/lib/decidim/decidim_awesome/test/shared_examples/custom_styles_examples.rb +156 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +26 -10
- data/lib/decidim/decidim_awesome/version.rb +1 -1
- data/package.json +6 -5
- metadata +42 -7
- data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +0 -30
@@ -9,6 +9,7 @@ module Decidim
|
|
9
9
|
return Decidim::DecidimAwesome::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
|
10
10
|
|
11
11
|
editor_image_action?
|
12
|
+
required_authorizations_action?
|
12
13
|
|
13
14
|
permission_action
|
14
15
|
end
|
@@ -23,6 +24,12 @@ module Decidim
|
|
23
24
|
return allow! if config[:allow_images_in_editors]
|
24
25
|
return allow! if config[:allow_videos_in_editors]
|
25
26
|
end
|
27
|
+
|
28
|
+
def required_authorizations_action?
|
29
|
+
return false unless permission_action.subject == :required_authorizations
|
30
|
+
|
31
|
+
return allow! unless context[:user_is_authorized]
|
32
|
+
end
|
26
33
|
end
|
27
34
|
end
|
28
35
|
end
|
@@ -17,11 +17,9 @@ module Decidim
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def i18n_params
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
decidim_original_i18n_params
|
24
|
-
end
|
20
|
+
return decidim_original_i18n_params unless action == "destroy_private_data"
|
21
|
+
|
22
|
+
decidim_original_i18n_params.merge({ count: action_log.extra["count"] })
|
25
23
|
end
|
26
24
|
end
|
27
25
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module DecidimAwesome
|
5
|
+
module AdminLog
|
6
|
+
module UserPresenterOverride
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
alias_method :decidim_original_action_string, :action_string
|
11
|
+
alias_method :decidim_original_i18n_params, :i18n_params
|
12
|
+
alias_method :decidim_original_resource_presenter, :resource_presenter
|
13
|
+
|
14
|
+
def action_string
|
15
|
+
return "decidim.decidim_awesome.admin_log.user.#{action}" if authorization_action?
|
16
|
+
|
17
|
+
decidim_original_action_string
|
18
|
+
end
|
19
|
+
|
20
|
+
def i18n_params
|
21
|
+
return decidim_original_i18n_params unless authorization_action?
|
22
|
+
|
23
|
+
decidim_original_i18n_params.merge({
|
24
|
+
handler_name: h.content_tag(:span, action_log.extra["handler_name"], class: "logs__log__resource"),
|
25
|
+
reason: h.content_tag(:em, action_log.extra["reason"])
|
26
|
+
})
|
27
|
+
end
|
28
|
+
|
29
|
+
def resource_presenter
|
30
|
+
return decidim_original_resource_presenter unless authorization_action? && authorization_user
|
31
|
+
|
32
|
+
@resource_presenter ||= Decidim::Log::UserPresenter.new(authorization_user, h, { "name" => authorization_user.name, "nickname" => authorization_user.nickname })
|
33
|
+
end
|
34
|
+
|
35
|
+
def authorization_user
|
36
|
+
@authorization_user ||= Decidim::User.find_by(id: action_log.extra["user_id"])
|
37
|
+
end
|
38
|
+
|
39
|
+
def authorization_action?
|
40
|
+
action.in?(%w(admin_creates_authorization admin_forces_authorization admin_destroys_authorization))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h4><%= t("decidim.decidim_awesome.required_authorizations.index.granted_title") %></h4>
|
2
|
+
|
3
|
+
<div class="verification__container">
|
4
|
+
<div class="verification">
|
5
|
+
<%= icon "checkbox-circle-line", class: "verification__icon is-granted self-start" %>
|
6
|
+
|
7
|
+
<div class="verification__text">
|
8
|
+
<h2 class="h5 text-secondary"><%= workflow.fullname %></h2>
|
9
|
+
<p><%= t(".granted_at", date: l(authorization.granted_at), format: :decidim_short) %></p>
|
10
|
+
<p><%= t(".metadata", metadata: content_tag("strong", t("booleans.#{authorization.metadata.present?}"))).html_safe %></p>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="verification__actions">
|
14
|
+
<%= link_to decidim_admin_decidim_awesome.admin_authorization_path(id: user.id, handler: authorization.name), method: :delete, remote: true, class: "button button__lg button__primary", data: { confirm: t(".confirm_destroy") } do %>
|
15
|
+
<%= icon "delete-bin-line", class: "icon" %>
|
16
|
+
<%= t(".destroy") %>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= cell("decidim/announcement", {
|
2
|
+
title: t("decidim.decidim_awesome.admin.admin_authorizations.conflict"),
|
3
|
+
body: t("decidim.decidim_awesome.admin.admin_authorizations.conflict_help_html", user: link_to(conflict.user.name, decidim_admin.officializations_path(q: { name_or_nickname_or_email_cont: conflict.user.email })))
|
4
|
+
},
|
5
|
+
callout_class: "alert") %>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<div class="form-defaults">
|
2
|
+
<%= decidim_form_for(handler,
|
3
|
+
builder: Decidim::AuthorizationFormBuilder,
|
4
|
+
as: "authorization_handler",
|
5
|
+
url: decidim_admin_decidim_awesome.admin_authorization_path(id: user.id, handler: params[:handler]),
|
6
|
+
method: :patch,
|
7
|
+
remote: true) do |form| %>
|
8
|
+
<% if lookup_context.exists?(handler.to_partial_path, [], true) %>
|
9
|
+
<%= render partial: handler.to_partial_path, locals: { handler:, form: } %>
|
10
|
+
<% else %>
|
11
|
+
<div class="form__wrapper">
|
12
|
+
<%= form.all_fields %>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
<% if defined?(with_override) %>
|
17
|
+
<div class="form__wrapper flash alert">
|
18
|
+
<label class="flex-col">
|
19
|
+
<div class="flash__title">
|
20
|
+
<%= check_box_tag "force_verification_check", true %>
|
21
|
+
<%= t(".force_verification") %>
|
22
|
+
</div>
|
23
|
+
<p class="help-text"><%= t(".force_verification_help") %></p>
|
24
|
+
</label>
|
25
|
+
<label>
|
26
|
+
<%= t(".force_verification_reason") %>
|
27
|
+
<%= text_area_tag "force_verification", nil, disabled: true %>
|
28
|
+
</label>
|
29
|
+
</div>
|
30
|
+
<% else %>
|
31
|
+
<%= cell("decidim/announcement", { title: t(".warning"), body: t(".do_it_if_sure") }, callout_class: "warning") %>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<div class="text-center mt-8">
|
35
|
+
<button type="submit" class="button button__lg button__primary">
|
36
|
+
<%= icon "alert-line", class: "fill-current" %>
|
37
|
+
<span><%= t(".authorize", name: workflow.fullname, user: user.name) %></span>
|
38
|
+
</button>
|
39
|
+
</div>
|
40
|
+
<% end %>
|
41
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render "form_scoped_styles", **local_assigns %>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
<%
|
2
|
+
admin_styles = (config_var == "scoped_admin_styles")
|
3
|
+
style = admin_styles ? "scoped_admin_style" : "scoped_style"
|
4
|
+
%>
|
5
|
+
<div class="form__wrapper row column decidim_awesome-form">
|
6
|
+
<% if config_enabled? config_var %>
|
7
|
+
<% if admin_styles %>
|
8
|
+
<div class="colors-help">
|
9
|
+
<p><%= t("help.scoped_admin_styles_warning", scope: "decidim.decidim_awesome.admin.config.form").html_safe %></p>
|
10
|
+
<p><%= t("help.scoped_admin_styles", scope: "decidim.decidim_awesome.admin.config.form") %>
|
11
|
+
<%= t("help.scoped_admin_styles_variables", scope: "decidim.decidim_awesome.admin.config.form") %>
|
12
|
+
</p>
|
13
|
+
<p class="colors">
|
14
|
+
<% ["primary", "secondary", "tertiary", "success", "warning", "alert"].each do |color| %>
|
15
|
+
<span class="color-box <%= color %>" style="background-color: <%= current_organization.colors[color] %>"></span>
|
16
|
+
<code>var(--<%= color %>)</code>
|
17
|
+
<% end %>
|
18
|
+
</p>
|
19
|
+
</div>
|
20
|
+
<% else %>
|
21
|
+
<div class="colors-help">
|
22
|
+
<p><%= t("help.scoped_styles", scope: "decidim.decidim_awesome.admin.config.form") %>
|
23
|
+
<%= t("help.scoped_styles_variables", scope: "decidim.decidim_awesome.admin.config.form") %>
|
24
|
+
</p>
|
25
|
+
<p class="colors">
|
26
|
+
<% ["primary", "secondary", "tertiary", "success", "warning", "alert"].each do |color| %>
|
27
|
+
<span class="color-box <%= color %>" style="background-color: <%= current_organization.colors[color] %>"></span>
|
28
|
+
<code>var(--<%= color %>)</code>
|
29
|
+
<% end %>
|
30
|
+
</p>
|
31
|
+
</div>
|
32
|
+
<% end %>
|
33
|
+
<% form.object.send(config_var)&.each do |key, value| %>
|
34
|
+
<div class="card p-4 scoped_styles_container<%= " private" if admin_styles %> js-box-container" data-key="<%= key %>" data-var="<%= config_var %>">
|
35
|
+
<%= render("decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key: key, scope: "#{style}_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_style_path(key: key, admin_panel: admin_styles)) %>
|
36
|
+
<p class="form-error is-visible" id="custom-style-error-<%= key %>"><%= errors[key.to_sym].join("<br>") if errors %></p>
|
37
|
+
<%= text_area_tag key, value, name: "config[#{config_var}][#{key}]", rows: 5 %>
|
38
|
+
<%= render("decidim/decidim_awesome/admin/config/constraints", key: "#{style}_#{key}", constraints: constraints_for("#{style}_#{key}")) %>
|
39
|
+
</div>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<%= link_to decidim_admin_decidim_awesome.scoped_styles_path(admin_panel: admin_styles), method: :post, class: "button button__sm button__text-secondary mr-auto" do %>
|
43
|
+
<%= icon("add-box-line") %>
|
44
|
+
<%= t("new", scope: "decidim.decidim_awesome.admin.config.form_#{config_var}") %>
|
45
|
+
<% end %>
|
46
|
+
|
47
|
+
<% end %>
|
48
|
+
</div>
|
@@ -8,4 +8,12 @@
|
|
8
8
|
<%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :auto_save_forms, constraints: constraints_for(:auto_save_forms) }) %>
|
9
9
|
</div>
|
10
10
|
<% end %>
|
11
|
+
<% if config_enabled? :user_timezone %>
|
12
|
+
<div class="row column">
|
13
|
+
<%= form.check_box :user_timezone %>
|
14
|
+
<span class="help-text mb-4" style="margin-top: -1rem;">
|
15
|
+
<%= t("help.user_timezone", scope: "decidim.decidim_awesome.admin.config.form") %>
|
16
|
+
</span>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
11
19
|
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="form__wrapper row column decidim_awesome-form">
|
2
|
+
<div class="callout warning"><%= t("help.verifications_html", scope: "decidim.decidim_awesome.admin.config.form") %></div>
|
3
|
+
|
4
|
+
<% if config_enabled? :force_authorization_after_login %>
|
5
|
+
<div>
|
6
|
+
<%= form.select :force_authorization_after_login, available_authorizations.map {|workflow| [workflow.fullname, workflow.name]}, { include_blank: false }, { multiple: true } %>
|
7
|
+
<p class="help-text"><%= t("help.force_authorization_after_login", scope: "decidim.decidim_awesome.admin.config.form") %></p>
|
8
|
+
|
9
|
+
<%= form.check_box :force_authorization_with_any_method %>
|
10
|
+
|
11
|
+
<%= form.translated :editor, :force_authorization_help_text, lines: 10, aria: { label: :force_authorization_help_text } %>
|
12
|
+
<p class="help-text"><%= t("help.force_authorization_help_text", scope: "decidim.decidim_awesome.admin.config.form") %></p>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
</div>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<td class="awesome_participants-td">
|
2
|
+
<% awesome_authorizations_for(user).authorizations.each do |auth| %>
|
3
|
+
<%
|
4
|
+
data = {
|
5
|
+
verification_user: user.name,
|
6
|
+
verification_user_id: user.id,
|
7
|
+
verification_handler: auth[:name],
|
8
|
+
verification_url: decidim_admin_decidim_awesome.edit_admin_authorization_path(id: user.id, handler: auth[:name])
|
9
|
+
}
|
10
|
+
classes = []
|
11
|
+
classes << "granted" if auth[:granted]
|
12
|
+
classes << "pending" if auth[:pending]
|
13
|
+
if auth[:managed]
|
14
|
+
classes << "managed"
|
15
|
+
data[:dialog_open] = "awesome-verification-modal"
|
16
|
+
end
|
17
|
+
%>
|
18
|
+
<%= content_tag(auth[:managed] ? "a" : "div", href: "#", class: classes, data:) do %>
|
19
|
+
<%= icon "check-line", class: "checked" %>
|
20
|
+
<%= icon "time-line", class: "undeterminated" %>
|
21
|
+
<%= icon "close-line", class: "unchecked" %>
|
22
|
+
<%= auth[:fullname] %>
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
25
|
+
</td>
|
@@ -0,0 +1 @@
|
|
1
|
+
<th class="awesome_participants-th"><%= t("decidim.decidim_awesome.admin.officializations.authorizations") %></th>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%= decidim_modal id: "awesome-verification-modal", class:"reveal awesome_participants-modal" do %>
|
2
|
+
<div data-dialog-container>
|
3
|
+
</div>
|
4
|
+
<div data-dialog-actions>
|
5
|
+
<button data-dialog-close="awesome-verification-modal" class="button button__lg button__transparent-secondary">
|
6
|
+
<%= t(".close") %>
|
7
|
+
</button>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<div class="text-center py-10">
|
2
|
+
<h1 class="title-decorator inline-block text-left mb-12">
|
3
|
+
<%= t(".title") %>
|
4
|
+
</h1>
|
5
|
+
<p class="text-lg text-gray-2 text-left">
|
6
|
+
<%= t(awesome_config[:force_authorization_with_any_method] ? ".verify_with_any_of_these_options" : ".verify_with_all_these_options") %>
|
7
|
+
</p>
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="space-y-8">
|
11
|
+
<% if granted_authorizations.any? %>
|
12
|
+
<div class="verification__container-title"><%= t(".granted_title") %></div>
|
13
|
+
<div class="verification__container">
|
14
|
+
<% granted_authorizations.each do |method| %>
|
15
|
+
<div class="verification verification__no_clickable">
|
16
|
+
<%= icon "checkbox-circle-line", class: "verification__icon is-granted" %>
|
17
|
+
<div class="verification__text">
|
18
|
+
<h2 class="h5 text-secondary">
|
19
|
+
<%= method.fullname %>
|
20
|
+
</h2>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<% if pending_authorizations.any? %>
|
28
|
+
<div class="verification__container-title"><%= t(".resume_title") %></div>
|
29
|
+
<div class="verification__container">
|
30
|
+
<% pending_authorizations.each do |method| %>
|
31
|
+
<%= link_to method.resume_authorization_path(redirect_url:), class: "verification" do %>
|
32
|
+
<%= icon "time-line", class: "verification__icon" %>
|
33
|
+
<div class="verification__text">
|
34
|
+
<h2 class="h5 text-secondary">
|
35
|
+
<%= t(".resume_with_method", name: method.fullname) %>
|
36
|
+
</h2>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
<% end %>
|
40
|
+
</div>
|
41
|
+
<% end %>
|
42
|
+
|
43
|
+
<% if missing_authorizations.any? %>
|
44
|
+
<div class="verification__container-title"><%= t(".missing_title") %></div>
|
45
|
+
<div class="verification__container">
|
46
|
+
<% missing_authorizations.each do |method| %>
|
47
|
+
<%= link_to method.root_path(redirect_url:), class: "verification" do %>
|
48
|
+
<%= icon(method.icon || "login-circle-line", class: "verification__icon") %>
|
49
|
+
<div class="verification__text">
|
50
|
+
<h2 class="h5 text-secondary">
|
51
|
+
<%= t(".verify_with_method", name: method.fullname) %>
|
52
|
+
</h2>
|
53
|
+
</div>
|
54
|
+
<% end %>
|
55
|
+
<% end %>
|
56
|
+
</div>
|
57
|
+
<% end %>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div class="space-y-8 prose-a:text-secondary mt-8">
|
61
|
+
<%= translated_attribute(awesome_config[:force_authorization_help_text]).html_safe %>
|
62
|
+
|
63
|
+
<p class="prose-a:text-secondary italic">
|
64
|
+
<%= t(".cancel", link: link_to("#{icon("logout-box-r-line", class: "inline-block").html_safe} #{t(".logout")}".html_safe, decidim.destroy_user_session_path(redirect_url:), method: :delete).html_safe).html_safe %>
|
65
|
+
</p>
|
66
|
+
</div>
|
data/app/views/decidim/decidim_awesome/system/organizations/_admin_allowed_authorizations.html.erb
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= field_set_tag f.label(:awesome_admins_available_authorizations, nil, for: nil), class: "border-2 border-background p-4" do %>
|
2
|
+
<%= f.collection_check_boxes :awesome_admins_available_authorizations, Decidim.authorization_handlers, :name, :description, help_text: t("decidim.decidim_awesome.system.organizations.admin_allowed_authoritzations_help_html") do |builder|
|
3
|
+
builder.label(for: nil, class: "form__wrapper-checkbox-label") { builder.check_box(id: nil) + builder.text }
|
4
|
+
end %>
|
5
|
+
<% end %>
|
data/config/i18n-tasks.yml
CHANGED
@@ -17,6 +17,8 @@ ignore_unused:
|
|
17
17
|
- "decidim.admin.filters.search_placeholder.*"
|
18
18
|
- "activemodel.attributes.constraint.*"
|
19
19
|
- "activemodel.attributes.custom_redirect.*"
|
20
|
+
- "activemodel.attributes.user.*"
|
21
|
+
- activemodel.attributes.organization.awesome_admins_available_authorizations
|
20
22
|
- "decidim.components.decidim_awesome.name"
|
21
23
|
- "decidim.components.awesome_iframe.settings.*"
|
22
24
|
- "decidim.components.awesome_map.settings.*"
|
@@ -24,6 +26,8 @@ ignore_unused:
|
|
24
26
|
- "decidim.components.proposals.settings.step.*"
|
25
27
|
- "decidim.decidim_awesome.admin.config.*"
|
26
28
|
- "decidim.decidim_awesome.admin.admin_accountability.*"
|
29
|
+
- "decidim.decidim_awesome.admin.scoped_admin_styles.*"
|
30
|
+
- "decidim.decidim_awesome.admin.scoped_styles.*"
|
27
31
|
- "decidim.decidim_awesome.admin.menu.*"
|
28
32
|
- "decidim.decidim_awesome.admin.menu_hacks.*"
|
29
33
|
- "decidim.decidim_awesome.admin.proposal_custom_fields.*"
|
@@ -32,6 +36,8 @@ ignore_unused:
|
|
32
36
|
- "decidim.decidim_awesome.voting.voting_cards.*"
|
33
37
|
- "decidim.decidim_awesome.content_blocks.*"
|
34
38
|
- "decidim.decidim_awesome.admin_log.*"
|
39
|
+
- "decidim.decidim_awesome.required_authorizations.index.verify_with_all_these_options"
|
40
|
+
- "decidim.decidim_awesome.required_authorizations.index.verify_with_any_of_these_options"
|
35
41
|
- "layouts.decidim.decidim_awesome.admin.maintenance.titles.*"
|
36
42
|
- "decidim.proposals.*"
|
37
43
|
- "decidim.meetings.*"
|
data/config/locales/ca.yml
CHANGED
@@ -2,11 +2,14 @@ ca:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
config:
|
5
|
-
additional_proposal_sortings:
|
5
|
+
additional_proposal_sortings: Activar opcions d'ordenació addicionals
|
6
6
|
allow_images_in_editors: Permet imatges a l'editor HTML
|
7
7
|
allow_images_in_proposals: Permet imatges a l'editor de propostes
|
8
8
|
allow_videos_in_editors: Permet vídeos a l'editor HTML
|
9
9
|
auto_save_forms: Desa automàticament els formularis a l'emmagatzematge local
|
10
|
+
force_authorization_after_login: Forçar autorització després d'iniciat sessió/registre
|
11
|
+
force_authorization_help_text: Text d'ajuda per la pàgina d'autorització
|
12
|
+
force_authorization_with_any_method: Permetre l'accés si es concedeix alguna de les autoritzacions (per defecte, totes són necessàries)
|
10
13
|
intergram_auto_no_response: Un missatge que s'envia un minut després que la usuària hagi enviat el seu primer missatge i no s'hagi rebut cap resposta
|
11
14
|
intergram_auto_response: Un missatge que s'envia immediatament després que la usuària enviï el seu primer missatge
|
12
15
|
intergram_chat_id: ID de xat
|
@@ -17,10 +20,12 @@ ca:
|
|
17
20
|
intergram_title_closed: Títol del xat quan està tancat
|
18
21
|
intergram_title_open: Títol del xat quan està obert
|
19
22
|
intergram_use_floating_button: Si està marcat, el xat tancat és sempre un botó en lloc d'un text
|
20
|
-
proposal_custom_fields:
|
21
|
-
proposal_private_custom_fields:
|
22
|
-
|
23
|
-
|
23
|
+
proposal_custom_fields: Camps personalitzats %{id}
|
24
|
+
proposal_private_custom_fields: Camps personalitzats %{id}
|
25
|
+
scoped_admin_styles: Personalització d'estils %{id}
|
26
|
+
scoped_admins: Grup d'administradores acotades %{id}
|
27
|
+
scoped_styles: Personalització d'estils %{id}
|
28
|
+
user_timezone: Permet als usuaris definir la seva zona horària en el seu perfil
|
24
29
|
validate_body_max_caps_percent: Percentatge màxim de majúscules en el cos de la proposta
|
25
30
|
validate_body_max_marks_together: Nombre màxim de símbols consecutius permesos al cos de la proposta
|
26
31
|
validate_body_min_length: Nombre de caràcters mínims requerits pel cos de la proposta
|
@@ -46,6 +51,10 @@ ca:
|
|
46
51
|
target: Obre a
|
47
52
|
url: URL
|
48
53
|
visibility: Visibilitat
|
54
|
+
organization:
|
55
|
+
awesome_admins_available_authorizations: Permet a les administradores verificar manualment a les participants amb aquests verificadors
|
56
|
+
user:
|
57
|
+
user_time_zone: Zona horària personal
|
49
58
|
decidim:
|
50
59
|
admin:
|
51
60
|
actions:
|
@@ -132,6 +141,9 @@ ca:
|
|
132
141
|
supported_last: Votades últimes per mi
|
133
142
|
za: Z-A (ordre alfabètic invers)
|
134
143
|
decidim_awesome:
|
144
|
+
account:
|
145
|
+
timezone_select:
|
146
|
+
time_zone_helper: Fes servir la teva zona horària personal per mostrar les dates d'acord amb la teva localització quan hagis iniciat sessió.
|
135
147
|
admin:
|
136
148
|
actions: Accions
|
137
149
|
admin_accountability:
|
@@ -170,6 +182,26 @@ ca:
|
|
170
182
|
collaborator: Col·laboradora
|
171
183
|
moderator: Moderadora
|
172
184
|
valuator: Avaluadora
|
185
|
+
admin_authorizations:
|
186
|
+
authorization:
|
187
|
+
confirm_destroy: Estàs segur que vols eliminar aquesta verificació? Aquesta actuació pot afectar a l'accés de la participant en la plataforma.
|
188
|
+
destroy: Eliminar
|
189
|
+
granted_at: Concedit a %{date}
|
190
|
+
metadata: Conté metadades? %{metadata}
|
191
|
+
authorization_destroyed: L'autorització s'ha eliminat correctament.
|
192
|
+
authorization_not_destroyed: La verificació no s'ha pogut eliminar!
|
193
|
+
authorization_transferred: 'Avís: hi ha hagut un conflicte de verificació i la verificació s''ha transferit a %{user}'
|
194
|
+
conflict: Hi ha un conflicte amb una autorització existent
|
195
|
+
conflict_help_html: "Heu de resoldre el conflicte amb la participant %{user} abans de poder autoritzar la participant amb aquesta autorització.\n<br><br>\nEs produeix un conflicte de verificació quan un altre usuari té les mateixes dades que la participant que esteu intentant autoritzar.\nPodeu resoldre aquest conflicte eliminant l'autorització conflictiva de l'altre participant o utilitzant dades diferents per a aquest participant.\n"
|
196
|
+
edit:
|
197
|
+
authorize: Autoritza %{user} amb %{name}
|
198
|
+
do_it_if_sure: Feu-ho només si esteu segur que la participant té aquesta autorització.
|
199
|
+
force_verification: Força la verificació amb les dades actuals
|
200
|
+
force_verification_help: La verificació ha fallat, però podeu forçar-la si esteu segur que la participant té aquesta autorització.
|
201
|
+
force_verification_reason: 'Doneu un motiu per forçar la verificació:'
|
202
|
+
warning: 'Avís: en forçar aquesta autorització, esteu forçant l''estat d''autorització actual del participant.'
|
203
|
+
user_authorized: "%{user} s'ha autoritzat correctament amb %{name}"
|
204
|
+
user_not_authorized: "%{user} no s'ha pogut autoritzar amb %{name}"
|
173
205
|
checks:
|
174
206
|
index:
|
175
207
|
admin_head_tags: Etiquetes Awesome incloses a la capçalera de l'aplicació d'administració
|
@@ -230,6 +262,8 @@ ca:
|
|
230
262
|
allow_videos_in_editors: Això afegirà una icona per enllaçar vídeos a l'editor HTML
|
231
263
|
auto_save_forms: Això farà servir l'emmagatzematge local del navegador per desar automàticament les dades introduïdes pels usuaris a les enquestes i altres formularis mentre les omplen. Les dades es restauraran en una futura visita amb el mateix navegador en cas que no s'enviï el formulari. Si s’envia el formulari, s’eliminaran les dades locals. Si els usuaris eliminen les seves dades del navegador, tampoc es restauraran.
|
232
264
|
drag_and_drop_supported: Quan es pugin imatges, es pot fer a través del mètode de "arrossegar i deixar anar". Les imatges seran pujades al servidor i inserides com recursos externs (no es fa servir codificació en línia base64).
|
265
|
+
force_authorization_after_login: 'Si està habilitat, les usuàries seran redireccionades a la pàgina d''autorització després de l''inici de sessió o registre si algunes de les autoritzacions especificades no són concedides. Això és útil si voleu forçar les usuàries a que es verifiquin a través d''una autorització específica abans que puguin iniciar sessió en qualsevol moment (per exemple: per prevenir spam).'
|
266
|
+
force_authorization_help_text: Afegeix un text personalitzat per explicar per què cal l'autorització. Assegureu-vos també d'afegir un mode de contacte en cas que les usuàries necessitin ajuda.
|
233
267
|
intergram_about: Intergram utilitza el Telegram Messenger per gestionar un widget de xat en viu de suport incrustat a la part inferior de la pàgina.
|
234
268
|
intergram_config: 'Convida a la <a href="https://web.telegram.org/#/im?p=@IntergramBot">@Intergram bot</a> al teu grup o comença un xat amb ella directament. <a href="https://github.com/idoco/intergram#embed-intergram-in-your-website-with-these-2-simple-steps">+ info</a>'
|
235
269
|
original_editor_override: Desde la versió 0.26, és possible (per administradors només) pujar imatges als editors de text enriquit. Per tant, les opcions d'imatges disponibles en aquesta pàgina només afecten a la part pública de la web (les administradores sempre ho tenen activat).
|
@@ -242,15 +276,23 @@ ca:
|
|
242
276
|
%{warning}
|
243
277
|
Aquest text es pot personalitzar amb una traducció personalitzada utilitzant la clau:
|
244
278
|
%{key}
|
279
|
+
scoped_admin_styles: Tingues en compte que amagar contingut aquí pot deixar l'administrador inservible. Si us plau, actueu amb cautela.
|
280
|
+
scoped_admin_styles_variables: 'Pots fer servir les següents variables CSS pels colors personalitzats de l''organització:'
|
281
|
+
scoped_admin_styles_warning: "<strong>Atenció</strong>: Aquí podeu afegir CSS que s'aplica només en aquest administrador."
|
245
282
|
scoped_admins: Promou usuaries normals a administradores amb accés limitat a certes parts de la web pública (feu servir l'editor de restriccions per això). Noteu que afegir usuaries que ja tenen permisos d'administració no té cap efecte.
|
246
283
|
scoped_styles: Crea CSS personalitzats que només s'apliquin a determinades parts de la web pública (per fer-ho, utilitza l'editor de restriccions)
|
247
284
|
scoped_styles_variables: 'Pots fer servir les següents variables CSS pels colors personalitzats de l''organització:'
|
285
|
+
user_timezone: Això afegirà un selector al perfil d'usuari per permetre establir la zona horària. Això farà que l'usuari vegi les dates i hores segons la seva configuració local.
|
248
286
|
validate_body_max_caps_percent: Zero no permetrà cap majúscula, 100 obligarà a escriure-ho tot en majúscules
|
249
287
|
validate_body_max_marks_together: 'Limiteu el nombre de signes d''interrogació i d''exclamació que es poden escriure junts. És a dir: si és 2, aleshores ''!!!'' no es permetrà al text'
|
250
288
|
validate_body_min_length: Aquest nombre pot ser zero, això farà que aquest camp no sigui obligatori
|
251
289
|
validate_title_max_caps_percent: Zero no permetrà cap majúscula, 100 obligarà a escriure-ho tot en majúscules
|
252
290
|
validate_title_max_marks_together: 'Limiteu el nombre de signes d''interrogació i d''exclamació que es poden escriure junts. És a dir: si és 2, aleshores ''!!!'' no es permetrà al text'
|
253
291
|
validate_title_min_length: El títol sempre és obligatori i aquest número no pot ser zero
|
292
|
+
verifications_html: |
|
293
|
+
Aquí pots fer alguns ajustaments en el procés de verificació.<br>
|
294
|
+
<b>NOTA:</b> Tingues en compte que canviar aquests paràmetres pot impedir que algunes usuàries accedeixin a la plataforma. Fes-ho servir amb precaució!<br><br>
|
295
|
+
Tingues en compte també, que aquests paràmetres s'apliquen a totes les usuàries. Les administradores sempre tindran accés al tauler dadministració.
|
254
296
|
validators:
|
255
297
|
body: Validacions d'entrada per l'usuari en el camp cos de la proposta
|
256
298
|
title: Validacions d'entrada per l'usuari en el camp títol de la proposta
|
@@ -264,6 +306,11 @@ ca:
|
|
264
306
|
new: Afegiu una nova caixa de "camps personalitzats privats"
|
265
307
|
remove: Elimina aquesta caixa de "camps personalitzats"
|
266
308
|
sure_to_remove: Segur que vols eliminar aquesta caixa de camps personalitzats?
|
309
|
+
form_scoped_admin_styles:
|
310
|
+
delete: Esborra
|
311
|
+
new: Afegeix una nova caixa CSS
|
312
|
+
remove: Elimina aquesta caixa CSS
|
313
|
+
sure_to_remove: Segur que vols eliminar aquesta caixa de camps personalitzats?
|
267
314
|
form_scoped_admins:
|
268
315
|
delete: Esborra
|
269
316
|
new: Afegir un nou grup "d'Administradores acotades"
|
@@ -287,8 +334,11 @@ ca:
|
|
287
334
|
proposal_custom_fields: 'Camps personalitzats per propostes: Camps públics'
|
288
335
|
proposal_private_custom_fields: 'Camps personalitzats per propostes: Camps privats'
|
289
336
|
proposals: Modificacions a propostes
|
337
|
+
scoped_admin_styles: 'Estils personalitzats: Panell d''administració'
|
338
|
+
scoped_styles: 'Estils personalitzats: Interfície pública'
|
290
339
|
styles: Estils personalitzats
|
291
340
|
surveys: Formularis i enquestes
|
341
|
+
verifications: Verificacions / Hacks d'autorització
|
292
342
|
update:
|
293
343
|
error: Error actualitzant la configuració! %{error}
|
294
344
|
success: Configuració actualitzada correctament
|
@@ -393,6 +443,7 @@ ca:
|
|
393
443
|
proposals: Modificacions a propostes
|
394
444
|
styles: Estils personalitzats
|
395
445
|
surveys: Formularis i enquestes
|
446
|
+
verifications: Verificacions
|
396
447
|
menu_hacks:
|
397
448
|
create:
|
398
449
|
error: 'Error en crear un nou ítem de menú: %{error}'
|
@@ -431,6 +482,11 @@ ca:
|
|
431
482
|
error: 'Error en actualitzar l''ítem de menú: %{error}'
|
432
483
|
success: Ítem de menú actualitzat correctament
|
433
484
|
url_exists: Aquesta URL ha estat configurada en un altre ítem de menú, si us plau edita'l en comptes de crear-ne un de nou.
|
485
|
+
officializations:
|
486
|
+
authorizations: Autoritzacions
|
487
|
+
verification_modal:
|
488
|
+
authorizations_for: Autoritzacions per a %{user}
|
489
|
+
close: Tanca
|
434
490
|
proposal_custom_fields:
|
435
491
|
menu:
|
436
492
|
title: Camps públics
|
@@ -439,9 +495,19 @@ ca:
|
|
439
495
|
private_data_last_update: Aquestes dades es van actualitzar per última vegada fa %{time_ago}.
|
440
496
|
proposal_private_custom_fields: Camps privats
|
441
497
|
remove_private_data: "👉 És possible que vulgueu eliminar-lo"
|
498
|
+
scoped_admin_styles:
|
499
|
+
menu:
|
500
|
+
title: Panell admin
|
501
|
+
scoped_styles:
|
502
|
+
menu:
|
503
|
+
title: Interfície pública
|
442
504
|
admin_log:
|
443
505
|
component:
|
444
506
|
destroy_private_data: "%{user_name} ha destruït %{count} elements de dades privades per a %{resource_name} a %{space_name}"
|
507
|
+
user:
|
508
|
+
admin_creates_authorization: "%{user_name} s'ha verificat %{resource_name} amb %{handler_name}"
|
509
|
+
admin_destroys_authorization: "%{user_name} ha destruït la verificació %{handler_name} a %{resource_name}"
|
510
|
+
admin_forces_authorization: "%{user_name} ha forçat la verificació %{handler_name} a %{resource_name}. Motiu: %{reason}"
|
445
511
|
amendments:
|
446
512
|
modal:
|
447
513
|
amendment_exists: Una esmena ja existeix
|
@@ -506,6 +572,26 @@ ca:
|
|
506
572
|
view_meeting: Veure trobada
|
507
573
|
view_proposal: Veure proposta
|
508
574
|
proposal_private_custom_fields_disclosure: Aquesta informació no es publicarà
|
575
|
+
required_authorizations:
|
576
|
+
index:
|
577
|
+
cancel: Això ho faré en un altre moment, %{link}.
|
578
|
+
granted_title: Verificacions concedides
|
579
|
+
logout: deixa'm tancar la sessió
|
580
|
+
missing_title: No verificada encara
|
581
|
+
resume_title: Verificacions pendents
|
582
|
+
resume_with_method: Reprendre la verificació amb %{name}
|
583
|
+
title: Verifica la teva identitat
|
584
|
+
verify_with_all_these_options: 'Si us plau, verifica''t amb tots aquests mètodes abans de poder accedir a la plataforma:'
|
585
|
+
verify_with_any_of_these_options: 'Si us plau, verifica''t com a mínim amb un d''aquests mètodes abans de poder accedir a la plataforma:'
|
586
|
+
verify_with_method: Verificar amb %{name}
|
587
|
+
session:
|
588
|
+
authorization_is_required: Per participar en aquesta plataforma, cal que autoritzeu el vostre compte amb una autorització vàlida (%{authorizations}).
|
589
|
+
system:
|
590
|
+
organizations:
|
591
|
+
admin_allowed_authoritzations_help_html: |
|
592
|
+
Les administradores podran verificar manualment els participants amb aquests verificadors.
|
593
|
+
<br>Utilitzeu aquesta funció amb precaució, ja que pot provocar problemes de seguretat.
|
594
|
+
awesome_tweaks: Configuracions del Decidim Awesome
|
509
595
|
validators:
|
510
596
|
too_much_caps: Fa servir massa lletres majúscules (més %{percent}% del text)
|
511
597
|
voting:
|