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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/decidim/extras/_callout.scss +5 -0
- data/app/assets/stylesheets/decidim/extras/_collection-sort-controls.scss +5 -0
- data/app/assets/stylesheets/decidim/extras/_results-per-page.scss +66 -0
- data/app/assets/stylesheets/decidim/extras/_status-labels.scss +3 -0
- data/app/commands/decidim/invite_user.rb +4 -4
- data/app/commands/decidim/{remove_user_role.rb → remove_admin.rb} +5 -7
- data/app/controllers/concerns/decidim/needs_authorization.rb +2 -1
- data/app/controllers/concerns/decidim/paginable.rb +24 -0
- data/app/controllers/decidim/devise/sessions_controller.rb +1 -1
- data/app/forms/decidim/{invite_admin_form.rb → invite_user_form.rb} +4 -4
- data/app/models/decidim/abilities/{everyone.rb → everyone_ability.rb} +1 -1
- data/app/models/decidim/organization.rb +1 -1
- data/app/models/decidim/participatory_process_user_role.rb +13 -0
- data/app/models/decidim/user.rb +1 -17
- data/app/queries/decidim/participatory_processes_with_user_role.rb +46 -0
- data/app/views/decidim/shared/_orders.html.erb +1 -1
- data/app/views/decidim/shared/_results_per_page.html.erb +18 -0
- data/config/locales/ca.yml +4 -2
- data/config/locales/en.yml +2 -0
- data/config/locales/es.yml +2 -0
- data/config/locales/it.yml +32 -46
- data/db/migrate/20170713131206_add_admin_to_users.rb +8 -0
- data/db/migrate/20170713131308_migrate_user_roles_to_participatory_process_roles.rb +17 -0
- data/db/seeds.rb +19 -15
- data/lib/decidim/abilities.rb +11 -0
- data/lib/decidim/abilities/admin_ability.rb +28 -0
- data/lib/decidim/abilities/participatory_process_admin_ability.rb +24 -0
- data/lib/decidim/abilities/participatory_process_collaborator_ability.rb +24 -0
- data/lib/decidim/abilities/participatory_process_moderator_ability.rb +15 -0
- data/lib/decidim/abilities/participatory_process_role_ability.rb +59 -0
- data/lib/decidim/core.rb +2 -1
- data/lib/decidim/core/engine.rb +5 -1
- data/lib/decidim/core/test.rb +1 -0
- data/lib/decidim/core/test/factories.rb +20 -9
- data/lib/decidim/core/test/shared_examples/has_reference.rb +0 -4
- data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +26 -0
- data/lib/decidim/core/version.rb +1 -1
- data/vendor/assets/javascripts/quill.min.js +2 -8
- data/vendor/assets/javascripts/quill.min.js.map +1 -1
- data/vendor/assets/stylesheets/quill.bubble.css +29 -5
- data/vendor/assets/stylesheets/quill.core.css +11 -5
- data/vendor/assets/stylesheets/quill.snow.css +29 -5
- metadata +32 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7aef118b45544583ccef9e497e131abd9ebf17d3
|
4
|
+
data.tar.gz: 709860181e8c9d539a57b926e227a0f0724f0ef7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccd59cd78c452237c4c5108ff4244dcc083a9fb0e819ed11862bc99f7d1da495ec348df9210d8f25537504cb3bc9d2ce3121a09081f018dc44730457ac327b08
|
7
|
+
data.tar.gz: 3bfaa063bd3e73479f5acbdd7abc44538a0b318a84aed2282dd3ce2baa490e08e218c4413ff16d96c49911e0fec960a07cbecfe65e89113ce467dff24b48f690
|
@@ -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
|
+
|
@@ -14,7 +14,7 @@ module Decidim
|
|
14
14
|
return broadcast(:invalid) if form.invalid?
|
15
15
|
|
16
16
|
if user.present?
|
17
|
-
|
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
|
34
|
-
user.
|
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
|
-
|
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
|
5
|
-
class
|
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
|
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.
|
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
|
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
|
@@ -1,19 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Decidim
|
4
|
-
# A form object used to invite
|
4
|
+
# A form object used to invite users to an organization.
|
5
5
|
#
|
6
|
-
class
|
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,
|
16
|
+
validates :email, :name, :organization, :invitation_instructions, presence: true
|
17
17
|
validate :admin_uniqueness
|
18
18
|
|
19
19
|
def email
|
@@ -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(
|
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
|
data/app/models/decidim/user.rb
CHANGED
@@ -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
|
-
#
|
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
|
@@ -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>
|
data/config/locales/ca.yml
CHANGED
@@ -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:
|
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:
|
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
|
data/config/locales/en.yml
CHANGED
data/config/locales/es.yml
CHANGED
data/config/locales/it.yml
CHANGED
@@ -2,38 +2,34 @@ it:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
report:
|
5
|
-
details:
|
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:
|
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:
|
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
|
20
|
-
remember_me: Ricordami (rimani collegato)
|
21
|
-
user_group_document_number:
|
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:
|
33
|
-
update_account: Aggiorna
|
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:
|
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:
|
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
|
45
|
+
duplicate_authorization: Esiste già un utente registrato con gli stessi dati.
|
50
46
|
authorizations:
|
51
47
|
create:
|
52
|
-
error:
|
53
|
-
success:
|
54
|
-
current_participatory_processes:
|
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
|
58
|
-
title: Verifica
|
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
|
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
|
74
|
-
subtitle: Per
|
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
|
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
|
-
|
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?:
|
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:
|
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à
|
89
|
+
name: Funzionalità di prova
|
103
90
|
settings:
|
104
91
|
global:
|
105
92
|
comments_enabled: Commenti abilitati
|
106
|
-
dummy_global_attribute_1: Attributo
|
107
|
-
dummy_global_attribute_2: Attributo
|
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
|
111
|
-
dummy_step_attribute_2: Attributo 2 della fase
|
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
|
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
|
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},
|