decidim-core 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/decidim/extras/_callout.scss +5 -0
  3. data/app/assets/stylesheets/decidim/extras/_collection-sort-controls.scss +5 -0
  4. data/app/assets/stylesheets/decidim/extras/_results-per-page.scss +66 -0
  5. data/app/assets/stylesheets/decidim/extras/_status-labels.scss +3 -0
  6. data/app/commands/decidim/invite_user.rb +4 -4
  7. data/app/commands/decidim/{remove_user_role.rb → remove_admin.rb} +5 -7
  8. data/app/controllers/concerns/decidim/needs_authorization.rb +2 -1
  9. data/app/controllers/concerns/decidim/paginable.rb +24 -0
  10. data/app/controllers/decidim/devise/sessions_controller.rb +1 -1
  11. data/app/forms/decidim/{invite_admin_form.rb → invite_user_form.rb} +4 -4
  12. data/app/models/decidim/abilities/{everyone.rb → everyone_ability.rb} +1 -1
  13. data/app/models/decidim/organization.rb +1 -1
  14. data/app/models/decidim/participatory_process_user_role.rb +13 -0
  15. data/app/models/decidim/user.rb +1 -17
  16. data/app/queries/decidim/participatory_processes_with_user_role.rb +46 -0
  17. data/app/views/decidim/shared/_orders.html.erb +1 -1
  18. data/app/views/decidim/shared/_results_per_page.html.erb +18 -0
  19. data/config/locales/ca.yml +4 -2
  20. data/config/locales/en.yml +2 -0
  21. data/config/locales/es.yml +2 -0
  22. data/config/locales/it.yml +32 -46
  23. data/db/migrate/20170713131206_add_admin_to_users.rb +8 -0
  24. data/db/migrate/20170713131308_migrate_user_roles_to_participatory_process_roles.rb +17 -0
  25. data/db/seeds.rb +19 -15
  26. data/lib/decidim/abilities.rb +11 -0
  27. data/lib/decidim/abilities/admin_ability.rb +28 -0
  28. data/lib/decidim/abilities/participatory_process_admin_ability.rb +24 -0
  29. data/lib/decidim/abilities/participatory_process_collaborator_ability.rb +24 -0
  30. data/lib/decidim/abilities/participatory_process_moderator_ability.rb +15 -0
  31. data/lib/decidim/abilities/participatory_process_role_ability.rb +59 -0
  32. data/lib/decidim/core.rb +2 -1
  33. data/lib/decidim/core/engine.rb +5 -1
  34. data/lib/decidim/core/test.rb +1 -0
  35. data/lib/decidim/core/test/factories.rb +20 -9
  36. data/lib/decidim/core/test/shared_examples/has_reference.rb +0 -4
  37. data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +26 -0
  38. data/lib/decidim/core/version.rb +1 -1
  39. data/vendor/assets/javascripts/quill.min.js +2 -8
  40. data/vendor/assets/javascripts/quill.min.js.map +1 -1
  41. data/vendor/assets/stylesheets/quill.bubble.css +29 -5
  42. data/vendor/assets/stylesheets/quill.core.css +11 -5
  43. data/vendor/assets/stylesheets/quill.snow.css +29 -5
  44. metadata +32 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f13f38a692e1e440b837466cfef145041b4731a
4
- data.tar.gz: 23544d83481adcedf009ee8696d6d3369b900fd3
3
+ metadata.gz: 7aef118b45544583ccef9e497e131abd9ebf17d3
4
+ data.tar.gz: 709860181e8c9d539a57b926e227a0f0724f0ef7
5
5
  SHA512:
6
- metadata.gz: 6dcf4943c0d07fd5293b1b3a2114b98bfcda43ac5980b9904f26050310d2a2ae9b673ba20cb07ac33696fcdabce843d6b0b0b51bcb9e952078ae716ff88748ff
7
- data.tar.gz: 47108ee568bbdd48e9a7d2f1ea6f0161edb7c5d76d27d20faa02166ca5dbcdad3036b1f96d7b549de9b9a0171132bce460f2452898d252228685ba9b8e22fc3b
6
+ metadata.gz: ccd59cd78c452237c4c5108ff4244dcc083a9fb0e819ed11862bc99f7d1da495ec348df9210d8f25537504cb3bc9d2ce3121a09081f018dc44730457ac327b08
7
+ data.tar.gz: 3bfaa063bd3e73479f5acbdd7abc44538a0b318a84aed2282dd3ce2baa490e08e218c4413ff16d96c49911e0fec960a07cbecfe65e89113ce467dff24b48f690
@@ -0,0 +1,5 @@
1
+ main {
2
+ .callout {
3
+ margin: 0;
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ .collection-sort-controls {
2
+ .column {
3
+ margin-bottom: 0;
4
+ }
5
+ }
@@ -0,0 +1,66 @@
1
+ //Variables
2
+ $order-border: $border;
3
+
4
+ /*Results per page styles*/
5
+ .results-per-page{
6
+ margin-bottom: 1rem;
7
+ display: flex;
8
+ align-items: baseline;
9
+ flex-wrap: wrap;
10
+ }
11
+
12
+ .results-per-page__dropdown{
13
+ display: flex;
14
+ flex-wrap: wrap;
15
+ .menu{
16
+ .is-dropdown-submenu-parent > a{
17
+ padding: 0;
18
+ margin-left: .5rem;
19
+ margin-top: .25rem;
20
+ }
21
+ }
22
+ }
23
+
24
+ .results-per-page__dropdown--right{
25
+ margin-left: auto;
26
+ }
27
+
28
+ .results-per-page__action{
29
+ margin-left: auto;
30
+ justify-content: flex-end;
31
+ .button{
32
+ margin-bottom: 0;
33
+ }
34
+ }
35
+
36
+ /*.results-per-page__text{
37
+ @include breakpoint(medium down){
38
+ font-size: 18px;
39
+ }
40
+ }*/
41
+
42
+ .results-per-page__tabs{
43
+ display: inline-block;
44
+ }
45
+
46
+ .results-per-page__tab{
47
+ color: $muted;
48
+ &:after{
49
+ content: "";
50
+ display: inline-block;
51
+ height: .75em;
52
+ border-left: $border;
53
+ margin: 0 .2em 0 .5em;
54
+ vertical-align: middle;
55
+ }
56
+ &.is-active{
57
+ color: $anchor-color;
58
+ }
59
+ &:first-of-type{
60
+ padding-left: 0;
61
+ }
62
+ &:last-of-type:after{
63
+ border-left: none;
64
+ }
65
+ }
66
+
@@ -0,0 +1,3 @@
1
+ .proposal-status.label.secondary{
2
+ color: #fff;
3
+ }
@@ -14,7 +14,7 @@ module Decidim
14
14
  return broadcast(:invalid) if form.invalid?
15
15
 
16
16
  if user.present?
17
- set_user_roles
17
+ update_user
18
18
  else
19
19
  invite_user
20
20
  end
@@ -30,8 +30,8 @@ module Decidim
30
30
  @user ||= Decidim::User.where(organization: form.organization).where(email: form.email.downcase).first
31
31
  end
32
32
 
33
- def set_user_roles
34
- user.roles += form.roles
33
+ def update_user
34
+ user.admin = form.admin
35
35
  user.save!
36
36
  end
37
37
 
@@ -40,7 +40,7 @@ module Decidim
40
40
  name: form.name,
41
41
  email: form.email.downcase,
42
42
  organization: form.organization,
43
- roles: form.roles,
43
+ admin: form.admin,
44
44
  comments_notifications: true,
45
45
  replies_notifications: true
46
46
  )
@@ -1,27 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
- # A command to remove a role from a given User.
5
- class RemoveUserRole < Rectify::Command
4
+ # A command to remove the admin privilege to an user.
5
+ class RemoveAdmin < Rectify::Command
6
6
  # Public: Initializes the command.
7
7
  #
8
8
  # form - A form object with the params.
9
- def initialize(user, role)
9
+ def initialize(user)
10
10
  @user = user
11
- @role = role
12
11
  end
13
12
 
14
13
  def call
15
14
  return broadcast(:invalid) unless user
16
15
 
17
- user.roles.delete(role.to_s)
18
- user.save!
16
+ user.update_attributes!(admin: false)
19
17
 
20
18
  broadcast(:ok)
21
19
  end
22
20
 
23
21
  private
24
22
 
25
- attr_reader :user, :role
23
+ attr_reader :user
26
24
  end
27
25
  end
@@ -30,7 +30,8 @@ module Decidim
30
30
  current_settings: try(:current_settings),
31
31
  feature_settings: try(:feature_settings),
32
32
  current_organization: try(:current_organization),
33
- current_feature: try(:current_feature)
33
+ current_feature: try(:current_feature),
34
+ current_participatory_process: try(:current_participatory_process)
34
35
  }
35
36
  end
36
37
 
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Decidim
6
+ # Common logic to paginate resources
7
+ module Paginable
8
+ extend ActiveSupport::Concern
9
+
10
+ OPTIONS = [20, 50, 100].freeze
11
+
12
+ included do
13
+ helper_method :per_page
14
+
15
+ def paginate(resources)
16
+ resources.page(params[:page]).per(per_page)
17
+ end
18
+
19
+ def per_page
20
+ params[:per_page] || OPTIONS.first
21
+ end
22
+ end
23
+ end
24
+ end
@@ -8,7 +8,7 @@ module Decidim
8
8
 
9
9
  def after_sign_in_path_for(user)
10
10
  return first_login_authorizations_path if first_login_and_not_authorized?(user) &&
11
- !user.role?("admin")
11
+ !user.admin?
12
12
  super
13
13
  end
14
14
 
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
- # A form object used to invite admins to an organization.
4
+ # A form object used to invite users to an organization.
5
5
  #
6
- class InviteAdminForm < Form
6
+ class InviteUserForm < Form
7
7
  mimic :user
8
8
 
9
9
  attribute :email, String
10
10
  attribute :name, String
11
11
  attribute :invitation_instructions, String
12
- attribute :roles, Array[String]
13
12
  attribute :organization, Decidim::Organization
14
13
  attribute :invited_by, Decidim::User
14
+ attribute :admin, Boolean
15
15
 
16
- validates :email, :name, :organization, :invitation_instructions, :roles, presence: true
16
+ validates :email, :name, :organization, :invitation_instructions, presence: true
17
17
  validate :admin_uniqueness
18
18
 
19
19
  def email
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Abilities
5
5
  # Defines the base abilities for any user. Guest users will use these too.
6
6
  # Intended to be used with `cancancan`.
7
- class Everyone
7
+ class EveryoneAbility
8
8
  include CanCan::Ability
9
9
 
10
10
  def initialize(user, _context)
@@ -11,7 +11,7 @@ module Decidim
11
11
  has_many :participatory_processes, foreign_key: "decidim_organization_id", class_name: "Decidim::ParticipatoryProcess", inverse_of: :organization
12
12
  has_many :static_pages, foreign_key: "decidim_organization_id", class_name: "Decidim::StaticPage", inverse_of: :organization
13
13
  has_many :scopes, -> { order(name: :asc) }, foreign_key: "decidim_organization_id", class_name: "Decidim::Scope", inverse_of: :organization
14
- has_many :admins, -> { where("roles @> ?", "{admin}") }, foreign_key: "decidim_organization_id", class_name: "Decidim::User"
14
+ has_many :admins, -> { where(admin: true) }, foreign_key: "decidim_organization_id", class_name: "Decidim::User"
15
15
  has_many :users, foreign_key: "decidim_organization_id", class_name: "Decidim::User"
16
16
 
17
17
  validates :name, :host, uniqueness: true
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # Defines a relation between a user and a participatory process, and what
5
+ # kind of relation does the user has.
6
+ class ParticipatoryProcessUserRole < ApplicationRecord
7
+ belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
8
+ belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: "Decidim::ParticipatoryProcess", optional: true
9
+
10
+ ROLES = %w(admin collaborator moderator).freeze
11
+ validates :role, inclusion: { in: ROLES }, uniqueness: { scope: [:user, :participatory_process] }
12
+ end
13
+ end
@@ -18,14 +18,11 @@ module Decidim
18
18
  has_many :memberships, class_name: "Decidim::UserGroupMembership", foreign_key: :decidim_user_id
19
19
  has_many :user_groups, through: :memberships, class_name: "Decidim::UserGroup", foreign_key: :decidim_user_group_id
20
20
 
21
- ROLES = %w(admin moderator collaborator official).freeze
22
-
23
21
  validates :name, presence: true, unless: -> { deleted? }
24
22
  validates :locale, inclusion: { in: I18n.available_locales.map(&:to_s) }, allow_blank: true
25
23
  validates :tos_agreement, acceptance: true, allow_nil: false, on: :create
26
24
  validates :avatar, file_size: { less_than_or_equal_to: MAXIMUM_AVATAR_FILE_SIZE }
27
25
  validates :email, uniqueness: { scope: :organization }, unless: -> { deleted? }
28
- validate :all_roles_are_valid
29
26
  mount_uploader :avatar, Decidim::AvatarUploader
30
27
 
31
28
  scope :not_deleted, -> { where(deleted_at: nil) }
@@ -43,16 +40,7 @@ module Decidim
43
40
  @ability ||= Ability.new(self)
44
41
  end
45
42
 
46
- # Checks if the user has the given `role` or not.
47
- #
48
- # role - a String or a Symbol that represents the role that is being
49
- # checked
50
- #
51
- # Returns a boolean.
52
- def role?(role)
53
- roles.include?(role.to_s)
54
- end
55
-
43
+ # Public: returns the user's name or the default one
56
44
  def name
57
45
  super || I18n.t("decidim.anonymous_user")
58
46
  end
@@ -86,10 +74,6 @@ module Decidim
86
74
 
87
75
  private
88
76
 
89
- def all_roles_are_valid
90
- errors.add(:roles, :invalid) unless roles.all? { |role| ROLES.include?(role) }
91
- end
92
-
93
77
  # Changes default Devise behaviour to use ActiveJob to send async emails.
94
78
  def send_devise_notification(notification, *args)
95
79
  devise_mailer.send(notification, self, *args).deliver_later
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # A class used to find the ParticipatoryProcesses that the given user has
5
+ # the specific role privilege.
6
+ class ParticipatoryProcessesWithUserRole < Rectify::Query
7
+ # Syntactic sugar to initialize the class and return the queried objects.
8
+ #
9
+ # user - a User that needs to find which processes can manage
10
+ # role - (optional) a Symbol to specify the role privilege
11
+ def self.for(user, role = :any)
12
+ new(user, role).query
13
+ end
14
+
15
+ # Initializes the class.
16
+ #
17
+ # user - a User that needs to find which processes can manage
18
+ # role - (optional) a Symbol to specify the role privilege
19
+ def initialize(user, role = :any)
20
+ @user = user
21
+ @role = role
22
+ end
23
+
24
+ # Finds the ParticipatoryProcesses that the given user has role privileges.
25
+ # If the special role ':any' is provided it returns all processes where
26
+ # the user has some kind of role privilege.
27
+ #
28
+ # Returns an ActiveRecord::Relation.
29
+ def query
30
+ # Admin users have all role privileges for all organization processes
31
+ return user.organization.participatory_processes if user.admin?
32
+
33
+ ParticipatoryProcess.where(id: process_ids)
34
+ end
35
+
36
+ private
37
+
38
+ attr_reader :user, :role
39
+
40
+ def process_ids
41
+ user_roles = ParticipatoryProcessUserRole.where(user: user) if role == :any
42
+ user_roles = ParticipatoryProcessUserRole.where(user: user, role: role) if role != :any
43
+ user_roles.pluck(:decidim_participatory_process_id)
44
+ end
45
+ end
46
+ end
@@ -1,4 +1,4 @@
1
- <div class="row collapse order-by">
1
+ <div class="order-by">
2
2
  <div class="order-by__dropdown">
3
3
  <span class="order-by__text"><%= t("#{i18n_scope}.label") %></span>
4
4
  <ul class="dropdown menu" data-dropdown-menu>
@@ -0,0 +1,18 @@
1
+ <div class="results-per-page">
2
+ <div class="results-per-page__dropdown">
3
+ <span class="results-per-page__text"><%= t(".label") %></span>
4
+ <ul class="dropdown menu" data-dropdown-menu>
5
+ <li class="is-dropdown-submenu-parent">
6
+ <a><%= per_page %></a>
7
+
8
+ <ul class="menu">
9
+ <% Decidim::Paginable::OPTIONS.each do |per_page_option| %>
10
+ <li>
11
+ <%= link_to per_page_option, url_for(params.to_unsafe_h.merge(page: nil, per_page: per_page_option)), data: { per_page_option: per_page_option } %>
12
+ </li>
13
+ <% end %>
14
+ </ul>
15
+ </li>
16
+ </ul>
17
+ </div>
18
+ </div>
@@ -39,7 +39,7 @@ ca:
39
39
  confirm:
40
40
  close: Tanca la finestra
41
41
  ok: Sí, vull eliminar el meu compte
42
- question: Estàs segur que vols eliminar el teu compte?
42
+ question: Segur que vols eliminar el teu compte?
43
43
  title: Eliminar el meu compte
44
44
  explanation: Si us plau, omple la raó per la qual vols eliminar el teu compte (opcional).
45
45
  destroy:
@@ -254,6 +254,8 @@ ca:
254
254
  sign_up: Donar-se d'alta
255
255
  reference:
256
256
  reference: 'Referència: %{reference}'
257
+ results_per_page:
258
+ label: 'Resultats per pàgina:'
257
259
  share_modal:
258
260
  close_window: Tanca la finestra
259
261
  share: Compartir
@@ -370,7 +372,7 @@ ca:
370
372
  proposals_explanation: Espai obert de propostes dels ciutadans sobre quin tipus de ciutat volem viure.
371
373
  footer_sub_hero:
372
374
  footer_sub_hero_body: Construïm una societat més oberta, transparent i col·laborativa.<br />Uneix-te, participa i decideix.
373
- footer_sub_hero_headline: Bienvenida y bienvenido a la plataforma participativa %{organization}.
375
+ footer_sub_hero_headline: Benvinguda i benvingut a la plataforma participativa %{organization}.
374
376
  register: Registra't
375
377
  hero:
376
378
  participate: Participa
@@ -255,6 +255,8 @@ en:
255
255
  sign_up: Sign up
256
256
  reference:
257
257
  reference: 'Reference: %{reference}'
258
+ results_per_page:
259
+ label: 'Results per page:'
258
260
  share_modal:
259
261
  close_window: Close window
260
262
  share: Share
@@ -254,6 +254,8 @@ es:
254
254
  sign_up: Regístrate
255
255
  reference:
256
256
  reference: 'Referencia: %{reference}'
257
+ results_per_page:
258
+ label: 'Resultados por página:'
257
259
  share_modal:
258
260
  close_window: Cerrar ventana
259
261
  share: Compartir
@@ -2,38 +2,34 @@ it:
2
2
  activemodel:
3
3
  attributes:
4
4
  report:
5
- details: Commenti aggiuntivi
5
+ details: Ulteriori commenti
6
6
  user:
7
7
  email: La tua email
8
8
  name: Il tuo nome
9
9
  password: Nuova password
10
- password_confirmation: Conferma la nuova password
11
- user_group_document_number: Numero del documento dell'organizzazione
10
+ password_confirmation: Conferma la tua nuova password
11
+ user_group_document_number: Codice fiscale dell'organizzazione
12
12
  user_group_name: Nome dell'organizzazione
13
- user_group_phone: Numero di telefono dell'organizzazione
13
+ user_group_phone: Telefono dell'organizzazione
14
14
  activerecord:
15
15
  attributes:
16
16
  decidim/user:
17
17
  current_password: Password attuale
18
18
  name: Nome Utente
19
- password_confirmation: Conferma della password
20
- remember_me: Ricordami (rimani collegato)
21
- user_group_document_number: Numero del documento dell'organizzazione
19
+ password_confirmation: Conferma password
20
+ remember_me: Ricordami su questo computer (rimani collegato)
21
+ user_group_document_number: Codice fiscale dell'organizzazione
22
22
  user_group_name: Nome dell'organizzazione
23
- user_group_phone: Numero di telefono dell'organizzazione
24
23
  booleans:
25
24
  'true': 'Si'
26
- carrierwave:
27
- errors:
28
- image_too_big: La dimensione dell'immagine è troppo grande
29
25
  decidim:
30
26
  account:
31
27
  show:
32
- change_password: Cambio della password
33
- update_account: Aggiorna l'account
28
+ change_password: Cambia password
29
+ update_account: Aggiorna Account
34
30
  update:
35
31
  error: Si è verificato un errore durante l'aggiornamento del tuo account.
36
- success: OK, il tuo account è stato aggiornato.
32
+ success: Il tuo account è stato aggiornato correttamente.
37
33
  application:
38
34
  documents:
39
35
  related_documents: Documenti correlati
@@ -42,20 +38,20 @@ it:
42
38
  authorization_handlers:
43
39
  decidim/dummy_authorization_handler:
44
40
  fields:
45
- document_number: Documento n.
41
+ document_number: Numero di documento
46
42
  postal_code: C.A.P.
47
43
  name: Esempio di autorizzazione
48
44
  errors:
49
- duplicate_authorization: Esiste già un utente autorizzato con questi dati.
45
+ duplicate_authorization: Esiste già un utente registrato con gli stessi dati.
50
46
  authorizations:
51
47
  create:
52
- error: Siè verificato un errore durante la fase di creazione dell'autenticazione.
53
- success: OK, la fase di autorizzazione si è conclusa positivamente.
54
- current_participatory_processes: Guarda il processo corrente.
48
+ error: Si è verificato un errore nella creazione dell'autorizzazione.
49
+ success: Sei stato autorizzato con successo.
50
+ current_participatory_processes: dai un'occhiata ai processi attuali
55
51
  first_login:
56
52
  actions:
57
- decidim/dummy_authorization_handler: Verifica rispetto all'autorizzazione blanda
58
- title: Verifica della tua identità
53
+ decidim/dummy_authorization_handler: Verifica rispetto all'autorizzazione esempio
54
+ title: Verifica la tua identità
59
55
  verify_with_these_options: 'Opzioni per la verifica dell''autorizzazione:'
60
56
  new:
61
57
  authorize: Invia
@@ -63,59 +59,49 @@ it:
63
59
  skip_verification: Se preferisci puoi saltare questa verifica per il momento e %{link}
64
60
  core:
65
61
  actions:
66
- unauthorized: Non hai permessi sufficienti per effetuare questa azione
62
+ unauthorized: Non sei autorizzato a eseguire questa azione
67
63
  devise:
68
64
  omniauth_registrations:
69
- create:
70
- email_already_exists: Questo indirizzo email è già utilizzato per un altro account
71
65
  new:
72
66
  complete_profile: Completa il profilo
73
- sign_up: Per cortesia completa il tuo profilo utente
74
- subtitle: Per cortesia riempi i campi del seguente modulo al fine di completare la registrazione
75
- username_help: Nome "pubblico" che comparirà per i tuoi post. Usa un nome di fantasia se vuoi garantirti un certo grado di anonimato.
67
+ sign_up: Per favore, completa il tuo profilo
68
+ subtitle: Per favore, compila il seguente modulo per completare la registrazione
76
69
  registrations:
77
70
  new:
78
71
  already_have_an_account?: Hai già un account?
79
- newsletter_notifications: Ricevi informazioni su attività rilevanti effettuate con il tuo account
72
+ newsletter_notifications: Ricevi informazioni sulle attività rilevanti
80
73
  sign_up: Registrazione
81
74
  sign_up_as:
82
75
  legend: Registrati come
83
76
  user: Individuo
84
- user_group: Organizzazione/Gruppo di persone
85
- subtitle: Registrati per partecipare alle discussioni e per votare le proposte.
77
+ subtitle: Registrati per partecipare alle discussioni e sostenere le proposte.
86
78
  terms: Termini e condizioni di utilizzo del servizio
87
79
  tos_agreement: Effettuando la registrazione automaticamente accetti le seguenti condizioni %{link}.
88
- username_help: Nome "pubblico" che comparirà per i tuoi post. Usa un nome di fantasia se vuoi garantirti un certo grado di anonimato.
89
80
  sessions:
90
81
  new:
91
- are_you_new?: Non conosci bene questa piattaforma? Sei un neofita?
82
+ are_you_new?: Sei nuovo nella piattaforma?
92
83
  register: Crea un account
93
- shared:
94
- omniauth_buttons:
95
- or: oppure
96
84
  export_mailer:
97
85
  export:
98
- ready: Trovi in allegato una versione compressa (ZIP) dei dati esportati .
99
- subject: Ecco i dati che hai chiesto di esportare per "%{name}"
86
+ ready: In allegato una versione zippata (Zip) dei dati esportati.
100
87
  features:
101
88
  dummy:
102
- name: Funzionalità fittizia
89
+ name: Funzionalità di prova
103
90
  settings:
104
91
  global:
105
92
  comments_enabled: Commenti abilitati
106
- dummy_global_attribute_1: Attributo fittizio 1
107
- dummy_global_attribute_2: Attributo fittizio 2
93
+ dummy_global_attribute_1: Attributo di prova 1
94
+ dummy_global_attribute_2: Attributo di prova 2
108
95
  step:
109
96
  comments_blocked: Commenti bloccati
110
- dummy_step_attribute_1: Attributo 1 della fase fittizia
111
- dummy_step_attribute_2: Attributo 2 della fase fittizia
97
+ dummy_step_attribute_1: Attributo 1 della fase di prova
98
+ dummy_step_attribute_2: Attributo 2 della fase di prova
112
99
  filters:
113
100
  linked_classes:
114
101
  all: Tutto
115
102
  meeting: Incontri
116
103
  project: Progetti
117
104
  proposal: Proposte
118
- result: Votazioni
119
105
  forms:
120
106
  errors:
121
107
  error: Si è verificato un errore in questo campo.
@@ -124,16 +110,15 @@ it:
124
110
  processes: Processi
125
111
  newsletter_mailer:
126
112
  newsletter:
127
- note: Hai ricevuto questa email perché ti sei iscritto alla newsletter su %{organization_name}. Puoi modificare le impostazioni di ricezione delle notifiche sulla tua <a href="%{link}">pagina delle notifiche</a>.
113
+ note: Hai ricevuto questa email perché ti sei iscritto alla newsletter su %{organization_name}. Puoi modificare le impostazioni sulla tua <a href="%{link}">pagina di notifiche</a>.
128
114
  notifications_settings:
129
115
  show:
130
116
  comments_notifications: Desidero ricevere un'email di notifica quando qualcuno mi scrive un commento.
131
117
  newsletter_notifications: Desidero ricevere informazioni sulle attività rilevanti.
132
- replies_notifications: Desidero ricevere notifiche tramite email quando qualcuno risponde ai miei commenti.
118
+ replies_notifications: Desidero ricevere un'email di notifica quando qualcuno risponde i miei commenti.
133
119
  update_notifications_settings: Salva le modifiche
134
120
  update:
135
121
  error: Si è verificato un errore durante l'aggiornamento delle impostazioni di notifica.
136
- success: OK, le impostazioni per le notifiche sono state modificate.
137
122
  own_user_groups:
138
123
  index:
139
124
  verified: Verificato
@@ -165,6 +150,7 @@ it:
165
150
  reported_mailer:
166
151
  hide:
167
152
  hello: Ciao %{name},
153
+ report_html: <p>Il seguente <a href="%{url}">contenuto</a> è stato nascosto automaticamente.</p>
168
154
  subject: Una risorsa è stata cancellata automaticamente
169
155
  report:
170
156
  hello: Ciao %{name},