decidim-system 0.20.1 → 0.23.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-system might be problematic. Click here for more details.

Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/decidim/system/application.js.es6 +2 -0
  3. data/app/assets/stylesheets/decidim/system/_forms.scss +36 -0
  4. data/app/assets/stylesheets/decidim/system/_foundation_and_overrides.scss +1 -0
  5. data/app/assets/stylesheets/decidim/system/_sidebar.scss +0 -2
  6. data/app/assets/stylesheets/decidim/system/application.scss +1 -0
  7. data/app/commands/decidim/system/create_default_content_blocks.rb +1 -1
  8. data/app/commands/decidim/system/create_oauth_application.rb +37 -0
  9. data/app/commands/decidim/system/destroy_oauth_application.rb +39 -0
  10. data/app/commands/decidim/system/register_organization.rb +3 -1
  11. data/app/commands/decidim/system/update_oauth_application.rb +39 -0
  12. data/app/commands/decidim/system/update_organization.rb +5 -0
  13. data/app/controllers/decidim/system/oauth_applications_controller.rb +84 -0
  14. data/app/controllers/decidim/system/organizations_controller.rb +9 -1
  15. data/app/forms/decidim/system/file_upload_settings_form.rb +70 -0
  16. data/app/forms/decidim/system/oauth_application_form.rb +35 -0
  17. data/app/forms/decidim/system/update_organization_form.rb +33 -0
  18. data/app/views/decidim/system/devise/shared/_links.html.erb +1 -1
  19. data/app/views/decidim/system/oauth_applications/_form.html.erb +26 -0
  20. data/app/views/decidim/system/oauth_applications/edit.html.erb +13 -0
  21. data/app/views/decidim/system/oauth_applications/index.html.erb +41 -0
  22. data/app/views/decidim/system/oauth_applications/new.html.erb +13 -0
  23. data/app/views/decidim/system/oauth_applications/show.html.erb +27 -0
  24. data/app/views/decidim/system/organizations/_file_upload_settings.erb +56 -0
  25. data/app/views/decidim/system/organizations/_omniauth_provider.html.erb +23 -0
  26. data/app/views/decidim/system/organizations/_omniauth_settings.html.erb +11 -0
  27. data/app/views/decidim/system/organizations/_smtp_settings.html.erb +5 -1
  28. data/app/views/decidim/system/organizations/edit.html.erb +2 -0
  29. data/app/views/decidim/system/organizations/new.html.erb +2 -0
  30. data/app/views/layouts/decidim/system/_header.html.erb +1 -0
  31. data/app/views/layouts/decidim/system/_js_configuration.html.erb +9 -0
  32. data/app/views/layouts/decidim/system/application.html.erb +2 -0
  33. data/config/locales/am-ET.yml +1 -0
  34. data/config/locales/ar.yml +11 -0
  35. data/config/locales/bg-BG.yml +8 -0
  36. data/config/locales/bg.yml +8 -0
  37. data/config/locales/ca.yml +97 -0
  38. data/config/locales/cs.yml +98 -1
  39. data/config/locales/da-DK.yml +1 -0
  40. data/config/locales/da.yml +1 -0
  41. data/config/locales/de.yml +52 -0
  42. data/config/locales/el.yml +98 -0
  43. data/config/locales/en.yml +97 -0
  44. data/config/locales/eo.yml +1 -0
  45. data/config/locales/es-MX.yml +97 -0
  46. data/config/locales/es-PY.yml +97 -0
  47. data/config/locales/es.yml +97 -0
  48. data/config/locales/et-EE.yml +1 -0
  49. data/config/locales/et.yml +1 -0
  50. data/config/locales/fi-plain.yml +97 -0
  51. data/config/locales/fi.yml +97 -0
  52. data/config/locales/fr-CA.yml +173 -0
  53. data/config/locales/fr.yml +97 -0
  54. data/config/locales/ga-IE.yml +1 -0
  55. data/config/locales/hr-HR.yml +1 -0
  56. data/config/locales/hr.yml +1 -0
  57. data/config/locales/hu.yml +18 -0
  58. data/config/locales/is.yml +55 -0
  59. data/config/locales/it.yml +23 -1
  60. data/config/locales/ja-JP.yml +101 -0
  61. data/config/locales/ja.yml +173 -0
  62. data/config/locales/ko-KR.yml +1 -0
  63. data/config/locales/ko.yml +1 -0
  64. data/config/locales/lt-LT.yml +1 -0
  65. data/config/locales/lt.yml +1 -0
  66. data/config/locales/lv.yml +98 -0
  67. data/config/locales/mt-MT.yml +1 -0
  68. data/config/locales/mt.yml +1 -0
  69. data/config/locales/nl.yml +22 -0
  70. data/config/locales/no.yml +15 -1
  71. data/config/locales/om-ET.yml +1 -0
  72. data/config/locales/pl.yml +86 -21
  73. data/config/locales/pt-BR.yml +1 -1
  74. data/config/locales/pt.yml +47 -24
  75. data/config/locales/ro-RO.yml +98 -0
  76. data/config/locales/sk-SK.yml +90 -0
  77. data/config/locales/sk.yml +95 -0
  78. data/config/locales/sl.yml +51 -0
  79. data/config/locales/so-SO.yml +1 -0
  80. data/config/locales/sr-CS.yml +26 -0
  81. data/config/locales/sv.yml +64 -0
  82. data/config/locales/ti-ER.yml +1 -0
  83. data/config/locales/vi-VN.yml +1 -0
  84. data/config/locales/vi.yml +1 -0
  85. data/config/locales/zh-CN.yml +173 -0
  86. data/config/locales/zh-TW.yml +1 -0
  87. data/config/routes.rb +2 -0
  88. data/lib/decidim/system/engine.rb +5 -0
  89. data/lib/decidim/system/test/factories.rb +11 -0
  90. data/lib/decidim/system/version.rb +1 -1
  91. metadata +64 -18
@@ -20,6 +20,8 @@ module Decidim
20
20
  attribute :users_registration_mode, String
21
21
  jsonb_attribute :smtp_settings, [
22
22
  [:from, String],
23
+ [:from_email, String],
24
+ [:from_label, String],
23
25
  [:user_name, String],
24
26
  [:encrypted_password, String],
25
27
  [:address, String],
@@ -27,6 +29,19 @@ module Decidim
27
29
  [:authentication, String],
28
30
  [:enable_starttls_auto, Boolean]
29
31
  ]
32
+ attribute :file_upload_settings, FileUploadSettingsForm
33
+
34
+ OMNIATH_PROVIDERS_ATTRIBUTES = Decidim::OmniauthProvider.available.keys.map do |provider|
35
+ Rails.application.secrets.dig(:omniauth, provider).keys.map do |setting|
36
+ if setting == :enabled
37
+ ["omniauth_settings_#{provider}_enabled".to_sym, Boolean]
38
+ else
39
+ ["omniauth_settings_#{provider}_#{setting}".to_sym, String]
40
+ end
41
+ end
42
+ end.flatten(1)
43
+
44
+ jsonb_attribute :omniauth_settings, OMNIATH_PROVIDERS_ATTRIBUTES
30
45
 
31
46
  attr_writer :password
32
47
 
@@ -36,6 +51,10 @@ module Decidim
36
51
 
37
52
  def map_model(model)
38
53
  self.secondary_hosts = model.secondary_hosts.join("\n")
54
+ self.omniauth_settings = Hash[(model.omniauth_settings || []).map do |k, v|
55
+ [k, Decidim::OmniauthProvider.value_defined?(v) ? Decidim::AttributeEncryptor.decrypt(v) : v]
56
+ end]
57
+ self.file_upload_settings = FileUploadSettingsForm.from_model(model.file_upload_settings)
39
58
  end
40
59
 
41
60
  def clean_secondary_hosts
@@ -55,9 +74,23 @@ module Decidim
55
74
  end
56
75
 
57
76
  def encrypted_smtp_settings
77
+ smtp_settings["from"] = set_from
78
+
58
79
  smtp_settings.merge(encrypted_password: Decidim::AttributeEncryptor.encrypt(@password))
59
80
  end
60
81
 
82
+ def set_from
83
+ return smtp_settings["from_email"] if smtp_settings["from_label"].blank?
84
+
85
+ "#{smtp_settings["from_label"]} <#{smtp_settings["from_email"]}>"
86
+ end
87
+
88
+ def encrypted_omniauth_settings
89
+ Hash[omniauth_settings.map do |k, v|
90
+ [k, Decidim::OmniauthProvider.value_defined?(v) ? Decidim::AttributeEncryptor.encrypt(v) : v]
91
+ end]
92
+ end
93
+
61
94
  private
62
95
 
63
96
  def validate_organization_uniqueness
@@ -19,7 +19,7 @@
19
19
  <% end -%>
20
20
 
21
21
  <%- if devise_mapping.omniauthable? %>
22
- <%- resource_class.omniauth_providers.each do |provider| %>
22
+ <%- current_organization.enabled_omniauth_providers.keys.each do |provider| %>
23
23
  <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br>
24
24
  <% end -%>
25
25
  <% end -%>
@@ -0,0 +1,26 @@
1
+ <div class="row column">
2
+ <%= form.text_field :name %>
3
+ </div>
4
+
5
+ <div class="row column">
6
+ <%= form.text_field :redirect_uri %>
7
+ </div>
8
+
9
+ <div class="row column">
10
+ <%= form.select :decidim_organization_id,
11
+ Decidim::Organization.pluck(:name, :id),
12
+ { include_blank: t(".select_organization") },
13
+ { multiple: false } %>
14
+ </div>
15
+
16
+ <div class="row column">
17
+ <%= form.text_field :organization_name %>
18
+ </div>
19
+
20
+ <div class="row column">
21
+ <%= form.text_field :organization_url %>
22
+ </div>
23
+
24
+ <div class="row column">
25
+ <%= form.upload :organization_logo %>
26
+ </div>
@@ -0,0 +1,13 @@
1
+ <%= decidim_form_for(@form, html: { class: "form edit_oauth_application" }) do |f| %>
2
+ <div class="card">
3
+ <div class="card-divider">
4
+ <h2 class="card-title"><%= t ".title" %></h2>
5
+ </div>
6
+ <div class="card-section">
7
+ <%= render partial: "form", object: f %>
8
+ </div>
9
+ </div>
10
+ <div class="button--double form-general-submit">
11
+ <%= f.submit t(".save") %>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,41 @@
1
+ <% provide :title do %>
2
+ <h2><%= t ".title" %></h2>
3
+ <% end %>
4
+
5
+ <div class="actions title">
6
+ <%= link_to t("actions.new", scope: "decidim.system", name: t("models.oauth_application.name", scope: "decidim.system")), ["new", "oauth_application"], class: "new" %>
7
+ </div>
8
+
9
+ <table class="stack">
10
+ <thead>
11
+ <tr>
12
+ <th></th>
13
+ <th><%= t("models.oauth_application.fields.name", scope: "decidim.system") %></th>
14
+ <th><%= t("models.oauth_application.fields.organization_name", scope: "decidim.system") %></th>
15
+ <th><%= t("models.oauth_application.fields.created_at", scope: "decidim.system") %></th>
16
+ <th class="actions"><%= t("actions.title", scope: "decidim.system") %></th>
17
+ </tr>
18
+ </thead>
19
+ <tbody>
20
+ <% @oauth_applications.each do |oauth_application| %>
21
+ <tr>
22
+ <td>
23
+ <%= image_tag oauth_application.organization_logo.url %>
24
+ </td>
25
+ <td>
26
+ <%= link_to oauth_application.name, oauth_application %><br>
27
+ </td>
28
+ <td>
29
+ <%= link_to oauth_application.organization_name, oauth_application.organization %><br>
30
+ </td>
31
+ <td>
32
+ <%= l oauth_application.created_at, format: :short %>
33
+ </td>
34
+ <td class="actions">
35
+ <%= link_to t("actions.edit", scope: "decidim.system"), ["edit", oauth_application] %>
36
+ <%= link_to t("actions.destroy", scope: "decidim.system"), oauth_application, method: :delete, class: "small alert button", data: { confirm: t(".confirm_delete") } %>
37
+ </td>
38
+ </tr>
39
+ <% end %>
40
+ </tbody>
41
+ </table>
@@ -0,0 +1,13 @@
1
+ <%= decidim_form_for(@form, html: { class: "form new_oauth_application" }) do |f| %>
2
+ <div class="card">
3
+ <div class="card-divider">
4
+ <h2 class="card-title"><%= t ".title" %></h2>
5
+ </div>
6
+ <div class="card-section">
7
+ <%= render partial: "form", object: f %>
8
+ </div>
9
+ </div>
10
+ <div class="button--double form-general-submit">
11
+ <%= f.submit t(".save") %>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= @oauth_application.name %></h2>
4
+ </div>
5
+ <div class="card-section">
6
+ <dl>
7
+ <%= display_for @oauth_application,
8
+ { uid: :client_id },
9
+ { secret: :client_secret },
10
+ :organization_name,
11
+ :organization_url,
12
+ :redirect_uri %>
13
+
14
+ <dt><%= display_label(@oauth_application, :authorize_url) %></dt>
15
+ <dd><%= decidim.oauth_authorization_url(host: @oauth_application.owner.host) %></dd>
16
+
17
+ <dt><%= display_label(@oauth_application, :site) %></dt>
18
+ <dd><%= decidim.root_url(host: @oauth_application.owner.host) %></dd>
19
+
20
+ <dt><%= display_label(@oauth_application, :authorized_tokens) %></dt>
21
+ <dd><%= @oauth_application.authorized_tokens.count %></dd>
22
+
23
+ <dt><%= display_label(@oauth_application, :authorization_url) %></dt>
24
+ <dd><%= decidim.oauth_authorization_url(host: @oauth_application.owner.host, client_id: @oauth_application.uid, redirect_uri: @oauth_application.redirect_uri, response_type: "code") %></dd>
25
+ </dl>
26
+ </div>
27
+ </div>
@@ -0,0 +1,56 @@
1
+ <div class="fieldset">
2
+ <h4><%= t("decidim.system.models.organization.fields.file_upload_settings") %></h4>
3
+ <p><%= t(".intro") %></p>
4
+
5
+ <%= f.fields_for :file_upload_settings, f.object.file_upload_settings do |settings_form| %>
6
+ <%= settings_form.fields_for :allowed_file_extensions, OpenStruct.new(settings_form.object.allowed_file_extensions) do |extensions_form| %>
7
+ <% i18n_scope = "#{f.object.class.i18n_scope}.attributes.#{settings_form.object.model_name.i18n_key}.allowed_file_extensions" %>
8
+
9
+ <h5><%= t(".file_extensions.title") %></h5>
10
+
11
+ <div class="field">
12
+ <%= extensions_form.text_field :default, class: "js-tags-container", label: t("default", scope: i18n_scope) %>
13
+ <p class="help-text"><%= t(".file_extensions.default_hint") %></p>
14
+ </div>
15
+ <div class="field">
16
+ <%= extensions_form.text_field :image, class: "js-tags-container", label: t("image", scope: i18n_scope) %>
17
+ <p class="help-text"><%= t(".file_extensions.image_hint") %></p>
18
+ </div>
19
+ <div class="field">
20
+ <%= extensions_form.text_field :admin, class: "js-tags-container", label: t("admin", scope: i18n_scope) %>
21
+ <p class="help-text"><%= t(".file_extensions.admin_hint") %></p>
22
+ </div>
23
+ <% end %>
24
+
25
+ <%= settings_form.fields_for :allowed_content_types, OpenStruct.new(settings_form.object.allowed_content_types) do |extensions_form| %>
26
+ <% i18n_scope = "#{f.object.class.i18n_scope}.attributes.#{settings_form.object.model_name.i18n_key}.allowed_content_types" %>
27
+
28
+ <h5><%= t(".content_types.title") %></h5>
29
+ <p><%= t(".content_types.intro_html") %></p>
30
+
31
+ <div class="field">
32
+ <%= extensions_form.text_field :default, class: "js-tags-container", label: t("default", scope: i18n_scope) %>
33
+ <p class="help-text"><%= t(".content_types.default_hint") %></p>
34
+ </div>
35
+ <div class="field">
36
+ <%= extensions_form.text_field :admin, class: "js-tags-container", label: t("admin", scope: i18n_scope) %>
37
+ <p class="help-text"><%= t(".content_types.admin_hint") %></p>
38
+ </div>
39
+ <% end %>
40
+
41
+ <%= settings_form.fields_for :maximum_file_size, OpenStruct.new(settings_form.object.maximum_file_size) do |extensions_form| %>
42
+ <% i18n_scope = "#{f.object.class.i18n_scope}.attributes.#{settings_form.object.model_name.i18n_key}.maximum_file_size" %>
43
+
44
+ <h5><%= t(".file_sizes.title") %></h5>
45
+
46
+ <div class="field">
47
+ <%= extensions_form.number_field :default, step: 0.1, min: 0, label: t("default", scope: i18n_scope) %>
48
+ <p class="help-text"><%= t(".file_sizes.default_hint") %></p>
49
+ </div>
50
+ <div class="field">
51
+ <%= extensions_form.number_field :avatar, step: 0.1, min: 0, label: t("avatar", scope: i18n_scope) %>
52
+ <p class="help-text"><%= t(".file_sizes.avatar_hint") %></p>
53
+ </div>
54
+ <% end %>
55
+ <% end %>
56
+ </div>
@@ -0,0 +1,23 @@
1
+ <% i18n_scope = "decidim.system.organizations.omniauth_settings" %>
2
+
3
+ <div class="card">
4
+ <h5><%= provider_name(provider) %></h5>
5
+
6
+ <% if provider_enabled?(provider) %>
7
+ <p class="help-text"><%= t("enabled_by_default", scope: i18n_scope) %></p>
8
+ <% end %>
9
+
10
+ <div class="card-section">
11
+ <%= f.check_box(
12
+ "omniauth_settings_#{provider}_enabled",
13
+ label: t("enabled", scope: i18n_scope)
14
+ ) %>
15
+
16
+ <% Rails.application.secrets.dig(:omniauth, provider.to_sym).keys.select { |k| k != :enabled }.each do |setting| %>
17
+ <%= f.text_field("omniauth_settings_#{provider}_#{setting}", label: I18n.t(
18
+ ".#{setting}",
19
+ scope: [:icon, :icon_path].include?(setting) ? i18n_scope : "#{i18n_scope}.#{provider}"
20
+ )) %>
21
+ <% end %>
22
+ </div>
23
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="fieldset">
2
+ <h4><%= t("decidim.system.models.organization.fields.omniauth_settings") %></h4>
3
+
4
+ <%= f.fields_for :omniauth_settings do %>
5
+ <% providers = Decidim::OmniauthProvider.available.keys %>
6
+
7
+ <% providers.each do |provider| %>
8
+ <%= render partial: "omniauth_provider", locals: { f: f, provider: provider } %>
9
+ <% end %>
10
+ <% end %>
11
+ </div>
@@ -2,7 +2,11 @@
2
2
  <h4><%= t("decidim.system.models.organization.fields.smtp_settings") %></h4>
3
3
  <%= f.fields_for :smtp_settings do %>
4
4
  <div class="field">
5
- <%= f.email_field :from %>
5
+ <%= f.email_field :from_email, placeholder: t(".placeholder.from_email") %>
6
+ </div>
7
+ <div class="field">
8
+ <%= f.email_field :from_label, placeholder: t(".placeholder.from_label") %>
9
+ <p><%= t(".instructions.from_label") %></p>
6
10
  </div>
7
11
  <div class="field">
8
12
  <%= f.text_field :user_name %>
@@ -31,6 +31,8 @@
31
31
  </div>
32
32
 
33
33
  <%= render partial: "smtp_settings", locals: { f: f } %>
34
+ <%= render partial: "omniauth_settings", locals: { f: f } %>
35
+ <%= render partial: "file_upload_settings", locals: { f: f } %>
34
36
 
35
37
  <div class="actions">
36
38
  <%= f.submit t("decidim.system.actions.save") %>
@@ -72,6 +72,8 @@
72
72
  </div>
73
73
 
74
74
  <%= render partial: "smtp_settings", locals: { f: f } %>
75
+ <%= render partial: "omniauth_settings", locals: { f: f } %>
76
+ <%= render partial: "file_upload_settings", locals: { f: f } %>
75
77
 
76
78
  <div class="actions">
77
79
  <%= f.submit t("decidim.system.models.organization.actions.save_and_invite") %>
@@ -1,4 +1,5 @@
1
1
  <meta name="viewport" content="width=device-width, initial-scale=1">
2
2
  <%= csrf_meta_tags %>
3
3
  <%= stylesheet_link_tag "decidim/system/application", media: "all" %>
4
+ <%= javascript_include_tag "decidim/confirm" %>
4
5
  <%= javascript_include_tag "decidim/system/application" %>
@@ -0,0 +1,9 @@
1
+ <%
2
+ js_configs = {
3
+ icons_path: image_path("decidim/icons.svg")
4
+ }
5
+ %>
6
+
7
+ <script>
8
+ Decidim.config.set(<%== js_configs.to_json %>);
9
+ </script>
@@ -36,5 +36,7 @@
36
36
  </div>
37
37
  </div>
38
38
  </div>
39
+ <%= render partial: "decidim/shared/confirm_modal" %>
40
+ <%= render partial: "layouts/decidim/system/js_configuration" %>
39
41
  </body>
40
42
  </html>
@@ -0,0 +1 @@
1
+ am:
@@ -61,6 +61,17 @@ ar:
61
61
  reference_prefix_hint: يتم استخدام بادئة المرجع لتعريف الموارد بشكل فريد في كل المؤسسة
62
62
  secondary_hosts_hint: أدخل كل واحد منهم في سطر جديد
63
63
  title: منظمة جديدة
64
+ omniauth_settings:
65
+ facebook:
66
+ app_secret: سر التطبيق
67
+ google_oauth2:
68
+ client_id: معرف العميل ID
69
+ client_secret: الرمز السري للعميل
70
+ icon: الأيقونة
71
+ icon_path: مسار الأيقونة
72
+ twitter:
73
+ api_key: مفتاح API
74
+ api_secret: سر API
64
75
  update:
65
76
  error: حدثت مشكلة أثناء تحديث هذه المؤسسة.
66
77
  success: تم تحديث المنظمة بنجاح.
@@ -0,0 +1,8 @@
1
+ bg:
2
+ decidim:
3
+ system:
4
+ actions:
5
+ confirm_destroy: Сигурни ли сте, че желаете да изтриете това?
6
+ destroy: Изтрий
7
+ edit: Редактирай
8
+ new: Нов
@@ -0,0 +1,8 @@
1
+ bg:
2
+ decidim:
3
+ system:
4
+ actions:
5
+ confirm_destroy: Сигурни ли сте, че желаете да изтриете това?
6
+ destroy: Изтрий
7
+ edit: Редактирай
8
+ new: Нов
@@ -1,4 +1,29 @@
1
1
  ca:
2
+ activemodel:
3
+ attributes:
4
+ oauth_application:
5
+ name: Nom de l'aplicació OAuth
6
+ organization_logo: Logo de l'organització (quadrat)
7
+ organization_name: Organització
8
+ organization_url: URL de l'organització
9
+ redirect_uri: URI de redirecció
10
+ organization_file_uploads:
11
+ allowed_content_types:
12
+ admin: Tipus MIME del panell de administració
13
+ default: Tipus MIME per defecte
14
+ allowed_file_extensions:
15
+ admin: Extensions d'arxiu del panell d'administració
16
+ default: Extensions d'arxiu per defecte
17
+ image: Extensions d'arxiu d'imatge
18
+ maximum_file_size:
19
+ avatar: Mida d'imatge de l'avatar
20
+ default: Mida d'arxiu per defecte
21
+ errors:
22
+ models:
23
+ oauth_application:
24
+ attributes:
25
+ redirect_uri:
26
+ must_be_ssl: L'URI de redirecció ha de ser una URI SSL
2
27
  decidim:
3
28
  system:
4
29
  actions:
@@ -32,6 +57,7 @@ ca:
32
57
  menu:
33
58
  admins: Administradores
34
59
  dashboard: Tauler d'administració
60
+ oauth_applications: Aplicacions OAuth
35
61
  organizations: Organitzacions
36
62
  models:
37
63
  admin:
@@ -41,26 +67,97 @@ ca:
41
67
  name: Administradora
42
68
  validations:
43
69
  email_uniqueness: ja existeix una altra administradora amb aquest correu electrònic
70
+ oauth_application:
71
+ fields:
72
+ created_at: Creat el
73
+ name: Nom de l'aplicació OAuth
74
+ organization_name: Organització
75
+ name: Aplicació OAuth
44
76
  organization:
45
77
  actions:
46
78
  save_and_invite: Crear organització i convidar l'administradora
47
79
  fields:
48
80
  created_at: Data de creació
81
+ file_upload_settings: Configuració de pujada d'arxius
49
82
  name: Nom
83
+ omniauth_settings: Configuració de l'Omniauth
50
84
  smtp_settings: Configuració d'SMTP
51
85
  name: Organització
86
+ oauth_applications:
87
+ create:
88
+ error: S'ha produït un error en crear aquesta aplicació.
89
+ success: L'aplicació s'ha creat correctament.
90
+ destroy:
91
+ error: S'ha produït un error en eliminar aquesta aplicació.
92
+ success: S'ha eliminat l'aplicació correctament.
93
+ edit:
94
+ save: Guardar
95
+ title: Editar aplicació
96
+ form:
97
+ select_organization: Seleccionar una organització
98
+ index:
99
+ confirm_delete: Segur que vols eliminar aquesta aplicació?
100
+ title: Aplicacions OAuth
101
+ new:
102
+ save: Guardar
103
+ title: Nova aplicació
104
+ update:
105
+ error: S'ha produït un error en actualitzar aquesta aplicació.
106
+ success: S'ha actualitzat l'aplicació correctament.
52
107
  organizations:
53
108
  create:
54
109
  error: S'ha produït un error en crear una nova organització.
55
110
  success: L'organització s'ha creat correctament.
56
111
  edit:
57
112
  secondary_hosts_hint: Introdueix cada un d'ells en una nova línia
113
+ file_upload_settings:
114
+ content_types:
115
+ admin_hint: Aquests tipus MIME estan permesos per a pujar-se des del panell d'administració. Les persones administradores han de ser conscients dels riscos en pujar alguns formats de documents, per la qual cosa cal esperar que siguin més cauteloses amb les pujades d'arxius.
116
+ default_hint: Aquests tipus MIME estan permesos per defecte per a totes les usuàries.
117
+ intro_html: Pots afegir comodins amb el caràcter asterisc per als tipus MIME, per exemple, <code>image/*</code>.
118
+ title: Tipus MIME permesos
119
+ file_extensions:
120
+ admin_hint: Aquestes extensions d'arxiu estan permeses per pujades des del panell d'administració. Les persones administradores han de ser conscients dels riscos en pujar alguns formats de documents, per la qual cosa cal esperar que siguin més cauteloses amb les pujades d'arxius.
121
+ default_hint: Aquestes extensions d'arxiu estan permeses per defecte per a totes les usuàries.
122
+ image_hint: Aquestes extensions d'arxiu estan permeses per a qualsevol pujada d'imatges.
123
+ title: Extensions d'arxiu permeses
124
+ file_sizes:
125
+ avatar_hint: Megabytes (MB). Aquest límit de mida d'arxiu s'utilitza per pujar imatges d'avatar.
126
+ default_hint: Megabytes (MB). Aquest límit de mida d'arxiu és el predeterminat que s'utilitza per a totes les pujades d'arxius tret que s'especifiqui el contrari.
127
+ title: Mida màxima d'arxius
128
+ intro: |
129
+ Si us plau, vés en compte en considerar canviar aquests ajustos. Com menys opcions permetis, millor.
130
+ Permetre extensions d'arxius específiques o tipus MIME pot exposar a les usuàries del sistema a riscos de seguretat i també pot afectar l'accessibilitat del lloc web.
58
131
  index:
59
132
  title: Organitzacions
60
133
  new:
61
134
  reference_prefix_hint: El prefix de la referència s'utilitza per identificar de forma única els recursos de tota la organització
62
135
  secondary_hosts_hint: Introdueix cada un d'ells en una nova línia
63
136
  title: Nova organització
137
+ omniauth_settings:
138
+ decidim:
139
+ client_id: ID del client
140
+ client_secret: Secret del client
141
+ site_url: URL del lloc web
142
+ enabled: Habilitat
143
+ enabled_by_default: Aquest proveïdor està habilitat per defecte. Es pot editar però no es pot desactivar.
144
+ facebook:
145
+ app_id: App ID
146
+ app_secret: App secret
147
+ google_oauth2:
148
+ client_id: ID del Client
149
+ client_secret: Client secret
150
+ icon: Icona
151
+ icon_path: Ruta de la icona
152
+ twitter:
153
+ api_key: Clau de l'API
154
+ api_secret: Clau secreta de l'API
155
+ smtp_settings:
156
+ instructions:
157
+ from_label: 'El remitent de correu electrònic serà: "la-teva-organitzacio <your-organization@example.org>". Deixa-ho en blanc per a usar el ''from_email'' com a etiqueta'
158
+ placeholder:
159
+ from_email: la-teva-organitzacio@example.org
160
+ from_label: el-nom-de-la-vostra-organitzacio
64
161
  update:
65
162
  error: S'ha produït un error en actualitzar aquesta organització.
66
163
  success: L'organització s'ha actualitzat correctament.