decidim-core 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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},