merges with master and fixes conflicts

This commit is contained in:
kikito
2015-10-31 17:09:52 +01:00
87 changed files with 1747 additions and 1343 deletions

View File

@@ -49,6 +49,7 @@ gem 'daemons'
gem 'devise-async'
gem 'newrelic_rpm', '~> 3.14'
gem 'whenever', require: false
gem 'pg_search'
gem 'ahoy_matey', '~> 1.2.1'
gem 'groupdate' # group temporary data

View File

@@ -263,6 +263,10 @@ GEM
paranoia (2.1.3)
activerecord (~> 4.0)
pg (0.18.3)
pg_search (1.0.5)
activerecord (>= 3.1)
activesupport (>= 3.1)
arel
poltergeist (1.7.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
@@ -455,6 +459,7 @@ DEPENDENCIES
omniauth-twitter
paranoia
pg
pg_search
poltergeist
quiet_assets
rails (= 4.2.4)

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -92,6 +92,10 @@ body.admin {
}
}
.for-print-only {
display: none;
}
// 02. Sidebar
// - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@@ -687,6 +687,7 @@ header {
line-height: $line-height*3;
margin-left: rem-calc(12);
margin-right: rem-calc(36);
margin-right: 12px\9;
}
&:after {
@@ -898,6 +899,13 @@ form.locale-form {
select {
background-image: image-url("language_select.png");
option {
background: white;
color: $text;
border: 0;
outline: none;
}
&.locale-switcher {
background-color: transparent;
border: 0;
@@ -916,6 +924,19 @@ form {
line-height: $line-height;
}
input, textarea {
height: 48px\9;
line-height: 48px\9;
margin-bottom: 24px\9;
width: 100%\9;
}
input[type="checkbox"] {
height: auto\9;
line-height: inherit\9;
width: auto\9;
}
input[type]:not([type=submit]):not([type=file]):not([type=checkbox]) {
background: $input-bg;
height: rem-calc(48);

View File

@@ -2,6 +2,8 @@
/* Print proposals */
.admin-content { margin-top: 0 !important; }
.tags a { display: none !important; }
.supports { display: none !important; }
@@ -24,7 +26,7 @@ img.left { display: none !important; }
.captcha { display: none !important; }
li.name span { display: none !important; }
li.name { display: none !important; }
p.proposal-info span:nth-child(3) { display: none !important; }
@@ -36,11 +38,22 @@ p.proposal-info span:nth-child(3) { display: none !important; }
input[type="submit"] { display: none !important; }
.filters h2 { margin: 0 !important; font-size: 20px !important; line-height: 20px !important; width: auto !important; }
.search-results h2 { margin: 0 !important; font-size: 20px !important; line-height: 20px !important; }
.admin h2 { font-size: 20px !important; line-height: 20px !important; }
.select-order {
border: 0;
font-size: 24px;
font-weight: bold;
margin-left: -6px;
border: 0 !important;
font-size: 20px !important;
font-weight: bold !important;
line-height: 20px !important;
margin-left: 10px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
margin-right: 0 !important;
padding: 0 !important;
}
p.proposal-info { margin-left: -6px; }
@@ -49,16 +62,26 @@ a { text-decoration: none !important; }
a:after { content: none !important; }
.proposal .panel { min-height: auto !important; }
.proposal .panel { min-height: auto !important; margin: 0 !important; padding-bottom: 0 !important; padding-left: 0 !important; }
.proposal .panel .proposal-content { min-height: auto !important; }
.proposal .panel h3 { min-height: auto !important; }
.proposal .panel h3 { min-height: auto !important; font-size: 16px !important; }
.proposal .panel .proposal-description { height: auto; }
.proposal .panel .proposal-description { height: auto !important; margin-bottom: 0 !important; }
.proposal .panel {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
}
.for-print-only { display: block !important; }
.for-print-only p { font-size: 14px !important; line-height: 24px !important; }
.not-print { display: none !important; }
.date-for-print { font-size: 14px !important; line-height: 20px !important; }
.filters { height: 48px !important;}

View File

@@ -6,8 +6,6 @@ class ApplicationController < ActionController::Base
include HasOrders
before_action :authenticate_http_basic, if: :http_basic_auth_site?
before_action :authenticate_user!, unless: :devise_controller?, if: :beta_site?
before_action :authenticate_beta_tester!, unless: :devise_controller?, if: :beta_site?
before_action :ensure_signup_complete
before_action :set_locale
@@ -33,21 +31,6 @@ class ApplicationController < ActionController::Base
end
end
def authenticate_beta_tester!
unless signed_in? && beta_testers.include?(current_user.email)
sign_out(current_user)
redirect_to new_user_session_path, alert: t('application.alert.only_beta_testers')
end
end
def beta_testers
File.readlines('config/beta-testers.txt').map {|email| email.strip }
end
def beta_site?
Rails.application.secrets.beta_site
end
def http_basic_auth_site?
Rails.application.secrets.http_basic_auth
end

View File

@@ -13,7 +13,7 @@ class ProposalsController < ApplicationController
respond_to :html, :js
def index_customization
@featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if @search_terms.blank?
@featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if (@search_terms.blank? && @tag_filter.blank?)
if @featured_proposals.present?
set_featured_proposal_votes(@featured_proposals)
@resources = @resources.where('proposals.id NOT IN (?)', @featured_proposals.map(&:id))

View File

@@ -5,6 +5,7 @@ class Debate < ActiveRecord::Base
include Conflictable
include Measurable
include Sanitizable
include PgSearch
apply_simple_captcha
acts_as_votable
@@ -36,6 +37,22 @@ class Debate < ActiveRecord::Base
# Ahoy setup
visitable # Ahoy will automatically assign visit_id on create
pg_search_scope :pg_search, {
against: {
title: 'A',
description: 'B'
},
associated_against: {
tags: :name
},
using: {
tsearch: { dictionary: "spanish" },
trigram: { threshold: 0.1 },
},
ranked_by: '(:tsearch + debates.cached_votes_up)',
order_within_rank: "debates.created_at DESC"
}
def description
super.try :html_safe
end

View File

@@ -4,6 +4,7 @@ class Proposal < ActiveRecord::Base
include Conflictable
include Measurable
include Sanitizable
include PgSearch
apply_simple_captcha
acts_as_votable
@@ -38,12 +39,30 @@ class Proposal < ActiveRecord::Base
scope :sort_by_random, -> { order("RANDOM()") }
scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) }
pg_search_scope :pg_search, {
against: {
title: 'A',
question: 'B',
summary: 'C',
description: 'D'
},
associated_against: {
tags: :name
},
using: {
tsearch: { dictionary: "spanish" },
trigram: { threshold: 0.1 },
},
ranked_by: '(:tsearch + proposals.cached_votes_up)',
order_within_rank: "proposals.created_at DESC"
}
def description
super.try :html_safe
end
def total_votes
cached_votes_up
cached_votes_up + physical_votes
end
def editable?
@@ -74,14 +93,13 @@ class Proposal < ActiveRecord::Base
def calculate_hot_score
self.hot_score = ScoreCalculator.hot_score(created_at,
cached_votes_up,
cached_votes_up,
total_votes,
total_votes,
comments_count)
end
def calculate_confidence_score
self.confidence_score = ScoreCalculator.confidence_score(cached_votes_up,
cached_votes_up)
self.confidence_score = ScoreCalculator.confidence_score(total_votes, total_votes)
end
def after_hide
@@ -93,7 +111,7 @@ class Proposal < ActiveRecord::Base
end
def self.search(terms)
terms.present? ? where("title ILIKE ? OR description ILIKE ? OR question ILIKE ?", "%#{terms}%", "%#{terms}%", "%#{terms}%") : none
self.pg_search(terms)
end
def self.votes_needed_for_success

View File

@@ -60,7 +60,6 @@
<div class="row-full subnavigation-container">
<section class="subnavigation row">
<div class="small-12 medium-8 column">
<%= link_to t("layouts.header.highlights"), highlights_path, class: ("active" if current_page? highlights_path) %>
<%= link_to t("layouts.header.debates"), debates_path, class: ("active" if current_page?(controller: "/debates")) %>
<%= link_to t("layouts.header.proposals"), proposals_path, class: ("active" if current_page?(controller: "/proposals")) %>
<%= link_to t("layouts.header.more_information"), "/more_information", class: ("active" if current_page?("/more_information")) %>

View File

@@ -5,14 +5,24 @@
<%= t('management.proposals.print.print_button') %>
</a>
<%= image_tag "header_print_proposals.jpg", class: "for-print-only" %>
<div class="filters">
<span class="for-print-only date-for-print"><%= l Date.today, format: :long %></span>
<h2 class="inline-block">
<%= t("proposals.index.select_order_long") %>
<span class="not-print"><%= t("proposals.index.select_order_long") %></span>
<span class="for-print-only"><%= t("management.print.proposals_title") %></span>
</h2>
<%= render 'shared/order_selector', i18n_namespace: "proposals.index" %>
</div>
<%= render @proposals %>
<div class="for-print-only">
<p><strong><%= t("management.print.info") %></strong><br>
<%= t("management.print.note") %></p>
</div>
</div>
</div>
</section>

View File

@@ -57,7 +57,6 @@ namespace :deploy do
# Custom compile and rsync of assets - works, but it is very slow
#after 'deploy:symlink:shared', 'deploy:compile_assets_locally'
after :finishing, 'deploy:beta_testers'
after :finishing, 'deploy:cleanup'
# Restart unicorn
after 'deploy:publishing', 'deploy:restart'

View File

@@ -2,17 +2,17 @@ en:
activemodel:
models:
verification:
residence: Residence
sms: SMS
residence: "Residence"
sms: "SMS"
attributes:
verification:
residence:
document_type: Document type
document_number: Document number(including letter)
date_of_birth: Date of birth
postal_code: Postal code
document_type: "Document type"
document_number: "Document number (including letters)"
date_of_birth: "Date of birth"
postal_code: "Postcode"
sms:
phone: 'Phone'
confirmation_code: 'Confirmation code'
phone: "Telephone"
confirmation_code: "Confirmation code"
email:
recipient: 'Email'
recipient: "Email"

View File

@@ -2,17 +2,17 @@ es:
activemodel:
models:
verification:
residence: Residencia
sms: SMS
residence: "Residencia"
sms: "SMS"
attributes:
verification:
residence:
document_type: Tipo documento
document_number: Numero de documento (incluida letra)
date_of_birth: Fecha de nacimiento
postal_code: 'Código postal'
document_type: "Tipo documento"
document_number: "Numero de documento (incluida letra)"
date_of_birth: "Fecha de nacimiento"
postal_code: "Código postal"
sms:
phone: 'Teléfono'
confirmation_code: 'Código de confirmación'
phone: "Teléfono"
confirmation_code: "Código de confirmación"
email:
recipient: 'Email'
recipient: "Email"

View File

@@ -7,46 +7,68 @@ en:
email:
password_already_set: "This user already has a password"
models:
activity: Activity
comment: Comment
debate: Debate
proposal: Proposal
tag: Topic
user: User
vote: Vote
organization: Organization
activity:
one: "activity"
other: "activities"
comment:
one: "Comment"
other: "Comments"
debate:
one: "Debate"
other: "Debates"
tag:
one: "Tag"
other: "Tags"
user:
one: "User"
other: "Users"
moderator:
one: "Moderator"
other: "Moderators"
administrator:
one: "Administrator"
other: "Administrators"
vote:
one: "Vote"
other: "Votes"
organization:
one: "Organisation"
other: "Organisations"
proposal:
one: "Citizen proposal"
other: "Citizen proposals"
attributes:
comment:
body: Comment
user: User
body: "Comment"
user: "User"
debate:
author: Author
description: Opinion
terms_of_service: Terms of service
title: Title
author: "Author"
description: "Opinion"
terms_of_service: "Terms of service"
title: "Title"
proposal:
author: Author
title: Title
question: Question
description: Description
terms_of_service: Terms of service
author: "Author"
title: "Title"
question: "Question"
description: "Description"
terms_of_service: "Terms of service"
user:
email: Email
username: Username
password: Password
phone_number: Phone number
official_position: Official position
official_level: Official level
email: "Email"
username: "Username"
password: "Password"
phone_number: "Phone number"
official_position: "Official position"
official_level: "Official level"
organization:
name: Organization name
responsible_name: Person in charge
name: "Name of organisation"
responsible_name: "Person responsible for the group"
errors:
models:
debate:
attributes:
tag_list:
less_than_or_equal_to: tags must be less than or equal to %{count}
less_than_or_equal_to: "tags must be less than or equal to %{count}"
proposal:
attributes:
tag_list:
less_than_or_equal_to: tags must be less than or equal to %{count}
less_than_or_equal_to: "tags must be less than or equal to %{count}"

View File

@@ -8,67 +8,67 @@ es:
password_already_set: "Este usuario ya tiene una clave asociada"
models:
activity:
one: actividad
other: actividades
one: "actividad"
other: "actividades"
comment:
one: Comentario
other: Comentarios
one: "Comentario"
other: "Comentarios"
debate:
one: Debate
other: Debates
one: "Debate"
other: "Debates"
tag:
one: Tema
other: Temas
one: "Tema"
other: "Temas"
user:
one: Usuario
other: Usuarios
one: "Usuario"
other: "Usuarios"
moderator:
one: Moderador
other: Moderadores
one: "Moderador"
other: "Moderadores"
administrator:
one: Administrador
other: Administradores
one: "Administrador"
other: "Administradores"
vote:
one: Voto
other: Voto
one: "Voto"
other: "Votos"
organization:
one: Organización
other: Organizaciones
one: "Organización"
other: "Organizaciones"
proposal:
one: Propuesta ciudadana
other: Propuestas ciudadanas
one: "Propuesta ciudadana"
other: "Propuestas ciudadanas"
attributes:
comment:
body: Comentario
user: Usuario
body: "Comentario"
user: "Usuario"
debate:
author: Autor
description: Opinión
terms_of_service: Términos de servicio
title: Título
author: "Autor"
description: "Opinión"
terms_of_service: "Términos de servicio"
title: "Título"
proposal:
author: Autor
title: Título
question: Pregunta
description: Descripción
terms_of_service: Términos de servicio
author: "Autor"
title: "Título"
question: "Pregunta"
description: "Descripción"
terms_of_service: "Términos de servicio"
user:
email: Correo electrónico
username: Nombre de usuario
password: Contraseña
phone_number: Teléfono
official_position: Cargo público
official_level: Nivel del cargo
email: "Correo electrónico"
username: "Nombre de usuario"
password: "Contraseña"
phone_number: "Teléfono"
official_position: "Cargo público"
official_level: "Nivel del cargo"
organization:
name: Nombre de organización
responsible_name: Persona responsable del colectivo
name: "Nombre de organización"
responsible_name: "Persona responsable del colectivo"
errors:
models:
debate:
attributes:
tag_list:
less_than_or_equal_to: los temas deben ser menor o igual que %{count}
less_than_or_equal_to: "los temas deben ser menor o igual que %{count}"
proposal:
attributes:
tag_list:
less_than_or_equal_to: los temas deben ser menor o igual que %{count}
less_than_or_equal_to: "los temas deben ser menor o igual que %{count}"

244
config/locales/admin.en.yml Normal file → Executable file
View File

@@ -2,177 +2,177 @@ en:
admin:
settings:
index:
title: Global settings
update_setting: Update
title: "General settings"
update_setting: "Update"
flash:
updated: 'Setting updated!'
updated: "Value updated"
dashboard:
index:
title: Administration
title: "Administration"
menu:
settings: Global settings
debate_topics: Debate topics
hidden_proposals: Hidden proposals
hidden_debates: Hidden debates
hidden_comments: Hidden comments
hidden_users: Blocked users
incomplete_verifications: Incomplete verifications
organizations: Organizations
officials: Officials
moderators: Moderators
stats: Statistics
activity: Moderation Activity
settings: "General settings"
debate_topics: "Debate topics"
hidden_proposals: "Hidden proposals"
hidden_debates: "Hidden debates"
hidden_comments: "Hidden comments"
hidden_users: "Hidden users"
incomplete_verifications: "Incomplete verifications"
organizations: "Organisations"
officials: "Officials"
moderators: "Moderators"
stats: "Statistics"
activity: "Moderator activity"
shared:
user_search:
placeholder: 'Search user by name or email'
button: 'Search'
placeholder: "Search user by name or email'"
button: "Search"
proposal_search:
placeholder: 'Search proposals by title, description or question'
button: 'Search'
placeholder: "Search proposals by title, description or question"
button: "Search"
organizations:
index:
title: Organizations
search_placeholder: "Name, email or phone"
search: Search
verify: Verify
reject: Reject
verified: Verified
rejected: Rejected
filter: Filter
title: "Organisations"
search_placeholder: "Name, email or phone number"
search: "Search"
verify: "Verify"
reject: "Reject"
verified: "Verified"
rejected: "Rejected"
filter: "Filter"
filters:
all: All
pending: Pending
verified: Verified
rejected: Rejected
all: "All"
pending: "Pending"
verified: "Verified"
rejected: "Rejected"
hidden_count:
one: "There is %{count} organization without user or with the user banned"
other: "There is %{count} organizations without user or with the user banned"
one: "There is also one organisation with no users or with a hidden user"
other: "There are %{count} organisations with no users or with a hidden user"
search:
title: "Search Organizations"
title: "Search Organisations"
actions:
hide: Hide
hide_author: Ban author
restore: Restore
confirm: 'Are you sure?'
confirm_hide: Confirm
hide: "Hide"
hide_author: "Hide author"
restore: "Restore"
confirm: "Are you sure?"
confirm_hide: "Confirm"
tags:
index:
title: 'Debate topics'
add_tag: 'Add a new debate topic'
mark_as_featured: 'Propose topic to create debate'
title: "Debate topics"
add_tag: "Add a new debate topic"
mark_as_featured: "Propose topic upon creating debate"
name:
placeholder: 'Write a topic'
create: Create Topic
update: Update Topic
destroy: Delete Topic
placeholder: "Type the name of the topic"
create: "Create Topic"
update: "Update Topic"
destroy: "Destroy Topic"
comments:
index:
title: Hidden comments
title: "Hidden comments"
hidden_proposal: "Hidden proposal"
hidden_debate: "Hidden debate"
filter: Filter
filter: "Filter"
filters:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
all: "All"
with_confirmed_hide: "Confirmed"
without_confirmed_hide: "Pending"
debates:
index:
title: Hidden debates
filter: Filter
title: "Hidden debates"
filter: "Filter"
filters:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
all: "All"
with_confirmed_hide: "Confirmed"
without_confirmed_hide: "Pending"
proposals:
index:
title: Hidden proposals
filter: Filter
title: "Hidden proposals"
filter: "Filter"
filters:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
all: "All"
with_confirmed_hide: "Confirmed"
without_confirmed_hide: "Pending"
users:
index:
title: Banned users
filter: Filter
title: "Hidden users"
filter: "Filter"
filters:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
all: "All"
with_confirmed_hide: "Confirmed"
without_confirmed_hide: "Pending"
show:
title: "User activity from %{user}"
back: Back
title: "Activity of user %{user}"
back: "Back"
email: "Email:"
registered_at: "Registered at:"
hidden_at: "Hidden at:"
verifications:
index:
title: Incomplete verifications
phone_not_given: 'Phone not given'
sms_code_not_confirmed: 'Has not confirmed the sms code'
title: "Incomplete verifications"
phone_not_given: "Phone not given"
sms_code_not_confirmed: "Has not confirmed the sms code"
officials:
level_0: Not an official
level_1: Level 1
level_2: Level 2
level_3: Level 3
level_4: Level 4
level_5: Level 5
level_0: "Not official"
level_1: "Level 1"
level_2: "Level 2"
level_3: "Level 3"
level_4: "Level 4"
level_5: "Level 5"
index:
title: Officials
title: "Officials"
search:
title: 'Officials: Search users'
edit_official: Edit official
make_official: Make this user an official
title: "Official positions: User search"
edit_official: "Edit official"
make_official: "Make official"
edit:
title: 'Officials: edit user'
destroy: "Remove 'Official' condition"
back: Back
title: "Officials: Edit user"
destroy: "Remove 'Official' status"
back: "Back"
flash:
official_updated: 'Official position saved!'
official_destroyed: 'User is not an official anymore'
official_updated: "Details of official saved"
official_destroyed: "Details saved: the user is no longer an official"
moderators:
index:
title: Moderators
title: "Moderators"
search:
email_placeholder: 'Search user by email'
search: Search
user_not_found: 'User not found'
email_placeholder: "Search user by email"
search: "Search"
user_not_found: "User not found"
moderator:
delete: Delete
add: Add
delete: "Delete"
add: "Add"
activity:
show:
title: Activity of Moderators
action: Action
by: Moderated by
type: Type
filter: Show
title: "Moderator activity"
action: "Action"
by: "Moderated by"
type: "Type"
filter: "Show"
filters:
all: All
on_proposals: On Proposals
on_debates: On Debates
on_comments: On Comments
on_users: On Users
all: "All"
on_proposals: "Proposals"
on_debates: "Debates"
on_comments: "Comments"
on_users: "Users"
actions:
hide: Hidden
restore: Restored
block: Blocked
hide: "Hidden"
restore: "Restored"
block: "Blocked"
stats:
show:
stats_title: Stats
visits_title: Visits
combined_title: Combined
stats_title: "Stats"
visits_title: "Visits"
combined_title: "Combined"
summary:
visits: Visits
debates: Debates
proposals: Proposals
comments: Comments
debate_votes: Debate votes
proposal_votes: Proposal votes
comment_votes: Comment votes
votes: Total votes
user_level_three: Level three users
user_level_two: Level two users
unverified_users: Unverified users
verified_users: Verified users
users: Total users
visits: "Visits"
debates: "Debates"
proposals: "Proposals"
comments: "Comments"
debate_votes: "Debate votes"
proposal_votes: "Proposal votes"
comment_votes: "Comment votes"
votes: "Total votes"
user_level_three: "Level three users"
user_level_two: "Level two users"
unverified_users: "Unverified users"
verified_users: "Verified users"
users: "Total users"

View File

@@ -2,177 +2,177 @@ es:
admin:
settings:
index:
title: Configuración global
update_setting: Actualizar
title: "Configuración global"
update_setting: "Actualizar"
flash:
updated: 'Valor actualizado'
updated: "Valor actualizado"
dashboard:
index:
title: Administración
title: "Administración"
menu:
settings: Configuración global
debate_topics: Temas de debate
hidden_proposals: Propuestas ocultas
hidden_debates: Debates ocultos
hidden_comments: Comentarios ocultos
hidden_users: Usuarios bloqueados
incomplete_verifications: Verificaciones incompletas
organizations: Organizaciones
officials: Cargos públicos
moderators: Moderadores
stats: Estadísticas
activity: Actividad de moderadores
settings: "Configuración global"
debate_topics: "Temas de debate"
hidden_proposals: "Propuestas ocultas"
hidden_debates: "Debates ocultos"
hidden_comments: "Comentarios ocultos"
hidden_users: "Usuarios bloqueados"
incomplete_verifications: "Verificaciones incompletas"
organizations: "Organizaciones"
officials: "Cargos públicos"
moderators: "Moderadores"
stats: "Estadísticas"
activity: "Actividad de moderadores"
shared:
user_search:
placeholder: 'Buscar usuario por nombre o email'
button: 'Buscar'
placeholder: "Buscar usuario por nombre o email"
button: "Buscar"
proposal_search:
placeholder: 'Buscar propuestas por título, descripción o pregunta'
button: 'Buscar'
placeholder: "Buscar propuestas por título, descripción o pregunta"
button: "Buscar"
organizations:
index:
title: Organizaciones
title: "Organizaciones"
search_placeholder: "Nombre, email o teléfono"
search: Buscar
verify: Verificar
reject: Rechazar
verified: Verificada
rejected: Rechazada
filter: Filtro
search: "Buscar"
verify: "Verificar"
reject: "Rechazar"
verified: "Verificada"
rejected: "Rechazada"
filter: "Filtro"
filters:
all: Todas
pending: Pendientes
verified: Verificadas
rejected: Rechazadas
all: "Todas"
pending: "Pendientes"
verified: "Verificadas"
rejected: "Rechazadas"
hidden_count:
one: "Hay además una organización sin usuario o con el usuario bloqueado"
other: "Hay %{count} organizaciones sin usuario o con el usuario bloqueado"
search:
title: "Buscar Organizaciones"
actions:
hide: Ocultar
hide_author: Bloquear al autor
restore: Volver a mostrar
confirm: '¿Estás seguro?'
confirm_hide: Confirmar
hide: "Ocultar"
hide_author: "Bloquear al autor"
restore: "Volver a mostrar"
confirm: "¿Estás seguro?"
confirm_hide: "Confirmar"
tags:
index:
title: 'Temas de debate'
add_tag: 'Añade un nuevo tema de debate'
mark_as_featured: 'Proponer tema al crear debate'
title: "Temas de debate"
add_tag: "Añade un nuevo tema de debate"
mark_as_featured: "Proponer tema al crear debate"
name:
placeholder: 'Escribe el nombre del tema'
create: Crear Tema
update: Actualizar Tema
destroy: Eliminar Tema
placeholder: "Escribe el nombre del tema"
create: "Crear Tema"
update: "Actualizar Tema"
destroy: "Eliminar Tema"
comments:
index:
title: Comentarios ocultos
title: "Comentarios ocultos"
hidden_proposal: "Propuesta oculta"
hidden_debate: "Debate oculto"
filter: Filtro
filter: "Filtro"
filters:
all: Todos
with_confirmed_hide: Confirmados
without_confirmed_hide: Pendientes
all: "Todos"
with_confirmed_hide: "Confirmados"
without_confirmed_hide: "Pendientes"
debates:
index:
title: Debates ocultos
filter: Filtro
title: "Debates ocultos"
filter: "Filtro"
filters:
all: Todos
with_confirmed_hide: Confirmados
without_confirmed_hide: Pendientes
all: "Todos"
with_confirmed_hide: "Confirmados"
without_confirmed_hide: "Pendientes"
proposals:
index:
title: Propuestas ocultos
filter: Filtro
title: "Propuestas ocultos"
filter: "Filtro"
filters:
all: Todas
with_confirmed_hide: Confirmadas
without_confirmed_hide: Pendientes
all: "Todas"
with_confirmed_hide: "Confirmadas"
without_confirmed_hide: "Pendientes"
users:
index:
title: Usuarios bloqueados
filter: Filtro
title: "Usuarios bloqueados"
filter: "Filtro"
filters:
all: Todos
with_confirmed_hide: Confirmados
without_confirmed_hide: Pendientes
all: "Todos"
with_confirmed_hide: "Confirmados"
without_confirmed_hide: "Pendientes"
show:
title: "Actividad del usuario %{user}"
back: Volver
back: "Volver"
email: "Email:"
registered_at: "Fecha de alta:"
hidden_at: "Bloqueado:"
verifications:
index:
title: Verificaciones incompletas
phone_not_given: 'No ha dado su teléfono'
sms_code_not_confirmed: 'No ha introducido su código de seguridad'
title: "Verificaciones incompletas"
phone_not_given: "No ha dado su teléfono"
sms_code_not_confirmed: "No ha introducido su código de seguridad"
officials:
level_0: "No es cargo público"
level_1: Nivel 1
level_2: Nivel 2
level_3: Nivel 3
level_4: Nivel 4
level_5: Nivel 5
level_1: "Nivel 1"
level_2: "Nivel 2"
level_3: "Nivel 3"
level_4: "Nivel 4"
level_5: "Nivel 5"
index:
title: Cargos Públicos
title: "Cargos Públicos"
search:
title: 'Cargos Públicos: Búsqueda de usuarios'
edit_official: Editar cargo público
make_official: Convertir en cargo público
title: "Cargos Públicos: Búsqueda de usuarios"
edit_official: "Editar cargo público"
make_official: "Convertir en cargo público"
edit:
title: 'Cargos Públicos: Editar usuario'
title: "Cargos Públicos: Editar usuario"
destroy: "Eliminar condición de 'Cargo Público'"
back: Volver
back: "Volver"
flash:
official_updated: 'Datos del cargo público guardados'
official_destroyed: 'Datos guardados: el usuario ya no es cargo público'
official_updated: "Datos del cargo público guardados"
official_destroyed: "Datos guardados: el usuario ya no es cargo público"
moderators:
index:
title: Moderadores
title: "Moderadores"
search:
email_placeholder: 'Buscar usuario por email'
search: Buscar
user_not_found: 'Usuario no encontrado'
email_placeholder: "Buscar usuario por email"
search: "Buscar"
user_not_found: "Usuario no encontrado"
moderator:
delete: Borrar
add: Añadir
delete: "Borrar"
add: "Añadir"
activity:
show:
title: Actividad de los Moderadores
action: 'Acción'
by: Moderado por
type: Tipo
filter: Mostrar
title: "Actividad de los Moderadores"
action: "Acción"
by: "Moderado por"
type: "Tipo"
filter: "Mostrar"
filters:
all: Todo
on_proposals: Propuestas
on_debates: Debates
on_comments: Comentarios
on_users: Usuarios
all: "Todo"
on_proposals: "Propuestas"
on_debates: "Debates"
on_comments: "Comentarios"
on_users: "Usuarios"
actions:
hide: Ocultado
restore: Restaurado
block: Bloqueado
hide: "Ocultado"
restore: "Restaurado"
block: "Bloqueado"
stats:
show:
stats_title: Estadísticas
visits_title: Visitas
combined_title: Combinado
stats_title: "Estadísticas"
visits_title: "Visitas"
combined_title: "Combinado"
summary:
visits: Visitas
debates: Debates
proposals: Propuestas
comments: Comentarios
debate_votes: Votos en debates
proposal_votes: Votos en propuestas
comment_votes: Votos en comentarios
votes: Votos
user_level_three: Usuarios de nivel tres
user_level_two: Usuarios de nivel dos
unverified_users: Usuarios sin verificar
verified_users: Usuarios verificados
users: Usuarios
visits: "Visitas"
debates: "Debates"
proposals: "Propuestas"
comments: "Comentarios"
debate_votes: "Votos en debates"
proposal_votes: "Votos en propuestas"
comment_votes: "Votos en comentarios"
votes: "Votos"
user_level_three: "Usuarios de nivel tres"
user_level_two: "Usuarios de nivel dos"
unverified_users: "Usuarios sin verificar"
verified_users: "Usuarios verificados"
users: "Usuarios"

76
config/locales/devise.en.yml Normal file → Executable file
View File

@@ -3,58 +3,62 @@
en:
devise:
confirmations:
confirmed: "Your email address has been successfully confirmed."
send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
confirmed: "Your account has been confirmed."
send_instructions: "In a few minutes you will receive an email containing instructions on how to reset your password."
send_paranoid_instructions: "If your email address is in our database, in a few minutes you will receive an email containing instructions on how to reset your password."
failure:
already_authenticated: "You are already signed in."
inactive: "Your account is not activated yet."
inactive: "Your account has not yet been activated."
invalid: "Invalid %{authentication_keys} or password."
locked: "Your account is locked."
last_attempt: "You have one more attempt before your account is locked."
locked: "Your account has been locked."
last_attempt: "You have one more attempt remaining before your account is blocked."
not_found_in_database: "Invalid %{authentication_keys} or password."
timeout: "Your session expired. Please sign in again to continue."
unauthenticated: "You need to sign in or sign up before continuing."
unconfirmed: "You have to confirm your email address before continuing."
timeout: "Your session has expired. Please sign in again to continue."
unauthenticated: "You must sign in or register to continue."
unconfirmed: "You must confirm your account to continue."
mailer:
confirmation_instructions:
subject: "Confirmation instructions"
reset_password_instructions:
subject: "Reset password instructions"
subject: "Instructions for resetting your password"
unlock_instructions:
subject: "Unlock instructions"
subject: "Unlocking instructions"
omniauth_callbacks:
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
success: "Successfully authenticated from %{kind} account."
failure: "It has not been possible to authorise you as %{kind} because \"%{reason}\"."
success: "Successfully identified as %{kind}."
passwords:
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
updated: "Your password has been changed successfully. You are now signed in."
no_token: "You cannot access this page except through a password reset link. If you have accessed it through a password reset link, please check that the URL is complete."
send_instructions: "In a few minutes, you will receive an email containing instructions on resetting your password."
send_paranoid_instructions: "If your email address is in our database, in a few minutes you will receive a link to use to reset your password."
updated: "Your password has been changed successfully. Authentication successful."
updated_not_active: "Your password has been changed successfully."
registrations:
destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
signed_up: "Welcome! You have signed up successfully."
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
destroyed:
"Goodbye! Your account has been cancelled. We hope to see you again soon. In accordance with your request, personal data registered as
a user of the site decide.madrid.es and form part of the file 'Gestión de procesos participativos' under the responsibility of the
Dirección General de Participación Ciudadana, they have been canceled under the terms of the provisions of Article 16 of the
Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal and Article 31 of its Reglamento de desarrollo (RD 1720/2007)."
signed_up: "Welcome! You have been authenticated."
signed_up_but_inactive: "Your registration was successful, but you could not be signed in because your account has not been activated."
signed_up_but_locked: "Your registration was successful, but you could not be signed in because your account is locked."
signed_up_but_unconfirmed: "You have been sent a message containing a verification link. Please click on this link to activate your account."
update_needs_confirmation: "Your account has been updated successfully; however, we need to verify your new email address. Please check your email and click on the link to complete the confirmation of your new email address."
updated: "Your account has been updated successfully."
sessions:
signed_in: "Signed in successfully."
signed_out: "Signed out successfully."
already_signed_out: "Signed out successfully."
signed_in: "You have been signed in successfully."
signed_out: "You have been signed out successfully."
already_signed_out: "You have been signed out successfully."
unlocks:
send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
send_instructions: "In a few minutes, you will receive an email containing instructions on unlocking your account."
send_paranoid_instructions: "If you have an account, in a few minutes you will receive an email containing instructions on unlocking your account."
unlocked: "Your account has been unlocked. Please sign in to continue."
errors:
messages:
already_confirmed: "was already confirmed, please try signing in"
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
expired: "has expired, please request a new one"
not_found: "not found"
not_locked: "was not locked"
already_confirmed: "You have already been verified; please attempt to sign in."
confirmation_period_expired: "You need to be verified within %{period}; please make a repeat request."
expired: "has expired; please make a repeat request."
not_found: "not found."
not_locked: "was not locked."
not_saved:
one: "1 error prohibited this %{resource} from being saved:"
other: "%{count} errors prohibited this %{resource} from being saved:"
one: "1 error prevented this %{resource} from being saved:"
other: "%{count} errors prevented this %{resource} from being saved:"

View File

@@ -31,7 +31,11 @@ es:
updated: "Tu contraseña ha cambiado correctamente. Has sido identificado correctamente."
updated_not_active: "Tu contraseña se ha cambiado correctamente."
registrations:
destroyed: "¡Adiós! Tu cuenta ha sido cancelada. Esperamos volver a verte pronto."
destroyed:
"¡Adiós! Tu cuenta ha sido cancelada. Esperamos volver a verte pronto. Le informamos que de conformidad con su petición,
sus datos personales registrados como usuario de la Web decide.madrid.es y que forman parte del fichero 'Gestión de procesos participativos'
cuyo responsable es la Dirección General de Participación Ciudadana, han sido cancelados en los términos de lo previsto en el artículo 16 de la
Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal y del artículo 31 de su Reglamento de desarrollo (RD 1720/2007)."
signed_up: "¡Bienvenido! Has sido identificado."
signed_up_but_inactive: "Te has registrado correctamente, pero no has podido iniciar sesión porque tu cuenta no ha sido activada."
signed_up_but_locked: "Te has registrado correctamente, pero no has podido iniciar sesión porque tu cuenta está bloqueada."

101
config/locales/devise_views.en.yml Normal file → Executable file
View File

@@ -2,9 +2,9 @@ en:
devise_views:
confirmations:
new:
title: "Resend confirmation instructions"
email_label: Email
submit: "Resend confirmation"
title: "Re-send confirmation instructions"
email_label: "Email"
submit: "Re-send instructions"
show:
title: "Confirm my account"
instructions_html: "Confirming the account with email %{email}"
@@ -14,28 +14,28 @@ en:
submit: "Confirm"
mailer:
confirmation_instructions:
title: "Welcome to open government portal"
title: "Welcome to the Open Government Portal of the Madrid City Council"
welcome: "Welcome"
text: "You can confirm your account email through the link below:"
text: "You can confirm your email account at the following link:"
confirm_link: "Confirm my account"
reset_password_instructions:
hello: "Hello"
title: Change your password
text: "Someone has requested to change your password. You can do this through the link below:"
title: "Change your password"
text: "We have received a request to change your password. You can do this at the following link:"
change_link: "Change my password"
ignore_text: "If you didn't request this, please ignore this email."
info_text: "Your password won't change until you access the link above and create a new one."
ignore_text: "If you did not request a password change, you can ignore this email."
info_text: "Your password will not be changed unless you access the link and edit it."
unlock_instructions:
hello: "Hello"
title: Your account has been locked
info_text: "Your account has been locked due to an excessive number of unsuccessful sign in attempts."
instructions_text: "Click the link below to unlock your account:"
title: "Your account has been locked"
info_text: "Your account has been blocked due to an excessive number of failed sign-in attempts."
instructions_text: "Please click on this link to unlock your account:"
unlock_link: "Unlock my account"
menu:
login_items:
logout: "Logout"
signup: "Sign up"
login: "Log in"
logout: "Sign out"
signup: "Register"
login: "Sign in"
passwords:
edit:
title: "Change your password"
@@ -43,40 +43,40 @@ en:
password_confirmation_label: "Confirm new password"
change_submit: "Change my password"
new:
title: "Forgot your password?"
title: "Forgotten password?"
email_label: "Email"
send_submit: "Send me reset password"
send_submit: "Send instructions"
users:
registrations:
edit:
edit: "Edit"
email_label: "Email"
waiting_for: "Currently waiting confirmation for:"
leave_blank: "Leave blank if you don't want to change it"
waiting_for: "Awaiting confirmation of:"
leave_blank: "Leave blank if you do not wish to modify"
password_label: "New password"
password_confirmation_label: "Confirm new password"
current_password_label: "Current password"
need_current: "We need your current password to confirm your changes"
need_current: "We need your current password to confirm the changes"
update_submit: "Update"
back_link: "Back"
new:
title: "Sign up"
title: "Register"
username_label: "Username"
username_note: "Username which will appear in your publications"
username_note: "Name that appears next to your posts"
email_label: "Email"
password_label: "Password"
password_confirmation_label: "Confirm password"
submit: "Sign up"
organization_signup: "Do you represent an organization / group? %{signup_link}"
submit: "Register"
organization_signup: "Do you represent an organisation or collective? %{signup_link}"
organization_signup_link: "Sign up here"
terms: "To sign up in this site your accept the %{terms}"
terms_link: "terms of use"
terms: "By registering you accept the %{terms}"
terms_link: "terms and conditions of use"
success:
title: "Review your email inbox"
thank_you_html: "Thank you for registering. Now you must <b>confirm your email account</b>."
instructions_1_html: "Please <b>review your email inbox</b> - we have sent you a <b>link to confirm your account</b>."
instructions_2_html: "Once you click that link, you will be able to start participating"
back_to_index: "Understood, take me back to the home page"
title: "Modify your email"
thank_you_html: "Thank you for registering for the website. You must now <b>confirm your email address</b>."
instructions_1_html: "Please <b>check your email</b> - we have sent you a <b>link to confirm your account</b>."
instructions_2_html: "Once confirmed, you may begin participation."
back_to_index: "I understand; go back to main page"
delete_form:
title: "Erase account"
info: "This action can not be undone. Please make sure this is what you want."
@@ -86,41 +86,40 @@ en:
organizations:
registrations:
new:
title: "Sign up as organization / collective"
organization_name_label: "Organization name"
responsible_name_label: "Name and surname of the person in charge"
responsible_name_note: "The responsible representative of the organization"
title: "Register as an organisation or collective"
organization_name_label: "Name of organisation"
responsible_name_label: "Full name of the person responsible for the collective"
responsible_name_note: "This would be the person representing the association/collective in whose name the proposals are presented"
email_label: "Email"
password_label: "Password"
phone_number_label: "Phone number"
password_confirmation_label: "Confirm password"
submit: "Sign up"
submit: "Register"
success:
title: "Registration of organization / collective"
thank_you_html: "Thank you for registering your organization or collective in the website. Now is <b>pending verification</b>."
instructions_1_html: "We will <b>contact you soon</b> in order to verify that you represent your collective."
instructions_2_html: "Meanwhile, <b>review your email</b>. We have sent you a <b>confirmation link to activate your account</b>."
instructions_3_html: "When you confirm your account will then be able to participate as a non-verified organization."
back_to_index: "Understood, take me back to the home page"
title: "Registration of organisation / collective"
thank_you_html: "Thank you for registering your collective on the website. It is now <b>pending verification</b>."
instructions_1_html: "<b>We will contact you soon</b> to verify that you do in fact represent this collective."
instructions_2_html: "While your <b>email is reviewed</b>, we have sent you a <b>link to confirm your account</b>."
instructions_3_html: "Once confirmed, you may begin to participate as an unverified collective."
back_to_index: "I understand; go back to main page"
sessions:
new:
title: "Log in"
title: "Sign in"
email_label: "Email"
password_label: "Password"
remember_me: "Remember me"
submit: "Log in"
submit: "Enter"
unlocks:
new:
title: "Resend unlock instructions"
title: "Re-sent unlocking instructions"
email_label: "Email"
submit: "Resend unlock instructions"
submit: "Re-send unlocking instructions"
shared:
links:
login: "Log in"
login: "Enter"
signup: "Don't have an account? %{signup_link}"
signup_link: "Sign up"
#organization_signup: "Sign up as an organization / collective"
signin_with_provider: "Sign in with %{provider}"
new_password: "Forgot your password?"
new_confirmation: "Didn't receive confirmation instructions?"
new_unlock: "Didn't receive unlock instructions?"
new_password: "Forgotten your password?"
new_confirmation: "Haven't received instructions to activate your account?"
new_unlock: "Haven't received unlocking instructions?"

View File

@@ -3,7 +3,7 @@ es:
confirmations:
new:
title: "Reenviar instrucciones de confirmación"
email_label: Email
email_label: "Email"
submit: "Reenviar instrucciones"
show:
title: "Confirmar mi cuenta"
@@ -27,7 +27,7 @@ es:
info_text: "Tu contraseña no cambiará hasta que no accedas al enlace y la modifiques."
unlock_instructions:
hello: "Hola"
title: Tu cuenta ha sido bloqueada
title: "Tu cuenta ha sido bloqueada"
info_text: "Tu cuenta ha sido bloqueada debido a un excesivo número de intentos fallidos de alta."
instructions_text: "Sigue el siguiente enlace para desbloquear tu cuenta:"
unlock_link: "Desbloquear mi cuenta"
@@ -119,7 +119,6 @@ es:
login: "Entrar"
signup: "¿No tienes una cuenta? %{signup_link}"
signup_link: "Regístrate"
#organization_signup: "Registro para organizaciones / colectivos"
signin_with_provider: "Entrar con %{provider}"
new_password: "¿Olvidaste tu contraseña?"
new_confirmation: "¿No has recibido instrucciones para confirmar tu cuenta?"

428
config/locales/en.yml Normal file → Executable file
View File

@@ -1,58 +1,58 @@
en:
locale: English
locale: "English"
errors:
messages:
user_not_found: "User not found"
layouts:
header:
logo: "Madrid"
external_link_transparency: Transparency
external_link_transparency: "Transparency"
external_link_transparency_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Transparencia?vgnextfmt=default&vgnextchannel=20fd850769797310VgnVCM2000000c205a0aRCRD"
external_link_opendata: Open data
external_link_opendata: "Open data"
external_link_opendata_url: "http://datos.madrid.es"
external_link_blog: Blog
external_link_blog: "Blog"
external_link_blog_url: "/blog"
open_gov: "%{open} government"
open: "Open"
open: "open"
participation: "Participation"
transparency: "Transparency"
open_data: "Open data"
open_city_title: "The city you want, it will be the city you want."
open_city_title: "Love the city, and it will become a city you love."
open_city_slogan_html:
"Start listening to Madrid.
For that we open this digital Puerta del Sol, where all the locals can meet to discuss and share everything we want."
"There are cities that are governed directly by their inhabitants, who <b>discuss</b> the topics they are concerned about, <b>propose</b> ideas to improve
their lives and <b>decide</b> among themselves which ones will be carried out. Madrid is already one of these cities."
see_all: "See proposals"
my_account_link: My account
my_account_link: "My account"
locale: "Language:"
administration: Administration
moderation: Moderation
highlights: "Highlights"
administration: "Administration"
moderation: "Moderation"
# highlights: "Highlights"
more_information: "More information"
debates: Debates
proposals: Proposals
debates: "Debates"
proposals: "Citizen proposals"
footer:
description: "This portal use %{consul}, is %{open_source}. Madrid, for the whole world."
open_source: "software libre"
description: "This portal uses the %{consul} which is %{open_source}. From Madrid out into the world."
open_source: "open-source software"
open_source_url: "http://www.gnu.org/licenses/agpl-3.0.html"
consul: "Consul application"
consul_url: "https://github.com/ayuntamientomadrid"
copyright: "Ayuntamiento de Madrid, %{year}"
participation_title: "Participation"
participation_text: Decide what should be the city of Madrid you want.
transparency_title: Transparency
transparency_text: Get any information on the City of Madrid.
open_data_title: Open Data
open_data_text: "All City Council data are yours."
contact_us: "For technical support contact us"
participation_text: "Decide how to shape the Madrid you want to live in."
transparency_title: "Transparency"
transparency_text: "Find out anything about the Madrid City Council."
open_data_title: "Open data"
open_data_text: "Every detail about the City Council is yours to access."
contact_us: "Contact us at"
privacy: "Privacy Policy"
conditions: "Terms of use"
conditions: "Terms and conditions of use"
more_info: "More information"
accessibility: "Accessibility"
application:
ie_title: "This site is not optimized for your browser"
ie_title: "This website is not optimised for your browser"
ie:
"You are using Internet Explorer.
For a better experience we recommend use %{chrome} or %{firefox}."
"We have detected that you are browsing with Internet Explorer.
For an enhanced experience, we recommend using %{chrome} or %{firefox}."
chrome: "Google Chrome"
firefox: "Firefox"
social:
@@ -61,89 +61,86 @@ en:
blog: "Blog"
youtube: "YouTube"
form:
error: error
errors: errors
not_saved: "prohibited this %{resource} from being saved:"
accept_terms: "I accept the %{policy} and the %{conditions}"
policy: "Privacy policy"
conditions: "Terms of use"
user: account
debate: debate
proposal: proposal
verification::sms: phone
verification::letter: verification
error: "error"
errors: "errors"
not_saved: "prevented this %{resource} from being saved:"
accept_terms: "I agree to the %{policy} and the %{conditions}"
policy: "Privacy Policy"
conditions: "Terms and conditions of use"
user: "Account"
debate: "Debate"
proposal: "Proposal"
verification::sms: "Telephone"
verification::letter: "the verification"
application:
alert:
only_beta_testers: "Sorry only Beta Testers are allowed access at the moment"
close: "Close"
menu: "Menu"
debates:
index:
title: Debates
start_debate: Start a debate
select_order: Order by
select_order_long: Order debates by
title: "Debates"
start_debate: "Start a debate"
select_order: "Order by"
select_order_long: "You are viewing debates according to:"
orders:
confidence_score: best rated
hot_score: most active
created_at: newest
most_commented: most commented
random: random
confidence_score: "highest rated"
hot_score: "most active"
created_at: "newest"
most_commented: "most commented"
random: "random"
filter_topic:
one: " with the topic '%{topic}'"
other: " with the topic '%{topic}'"
one: " with topic '%{topic}'"
other: " with topic '%{topic}'"
search_form:
title: Search
button: Search
title: "Search"
button: "Search"
placeholder: "Search debates..."
search_results:
one: " containing '%{search_term}'"
other: " containing '%{search_term}'"
one: " containing the term '%{search_term}'"
other: " containing the term '%{search_term}'"
debate:
debate: Debate
debate: "Debate"
comments:
zero: No comments
one: 1 Comment
other: "%{count} Comments"
zero: "No comments"
one: "1 comment"
other: "%{count} comments"
votes:
zero: No votes
one: 1 vote
zero: "No votes"
one: "1 vote"
other: "%{count} votes"
form:
debate_title: Debate title
debate_text: Initial text for debate
tags_label: Topics
tags_instructions: >
Tag this debate. You can choose among our proposals on the list or add any other topic you want.
tags_placeholder: "Add topics writing them separated by ','"
debate_title: "Debate title"
debate_text: "Initial debate text"
tags_label: "Topics"
tags_instructions: "Tag this debate. You can choose from our suggestions or enter your own."
tags_placeholder: "Enter the tags you would like to use, separated by commas (',')"
show:
back_link: Back
author_deleted: Deleted user
comments_title: Comments
back_link: "Go back"
author_deleted: "User deleted"
comments_title: "Comments"
comments:
zero: No comments
one: 1 Comment
other: "%{count} Comments"
login_to_comment: "You need to %{signin} or %{signup} to comment."
edit_debate_link: "Edit debate"
share: Share
flag: "This debate has been flag as innapropiate for some users."
zero: "No comments"
one: "1 comment"
other: "%{count} comments"
login_to_comment: "You must %{signin} or %{signup} to leave a comment."
edit_debate_link: "Edit"
share: "Share"
flag: "This debate has been flagged as inappropriate by several users."
edit:
editing: Edit debate
show_link: Show debate
back_link: Back
editing: "Edit debate"
show_link: "View debate"
back_link: "Go back"
form:
submit_button: "Save changes"
new:
start_new: Start a debate
info: "A debate is a discussion forum, not a proposal. And soon... we opened the section of citizen proposals."
more_info: "More info"
back_link: Back
recommendations_title: Tips for creating a debate
recommendation_one: "Do not write the title of the debate or whole sentences in capital. On the Internet this is considered shouting. And nobody likes to scream."
recommendation_two: "Any discussion or comment that involves an illegal act will be eliminated, also intending to sabotage the debate spaces, everything else is permitted."
recommendation_three: "The harsh criticism are very welcome. This is a space of thought but we recommend preserving the elegance and intelligence. The world is better with them present."
recommendation_four: "Enjoy this space, voices that fill it, it is yours too."
start_new: "Start a debate"
info: "A debate is a discussion forum, not a citizen proposal. Very soon we will be opening the citizen proposal section, where anyone will be able to present a proposal which, if they receive support, will be implemented by the City Council."
more_info: "More information"
back_link: "Go back"
recommendations_title: "Recommendations for creating a debate"
recommendation_one: "Do not use capital letters for the debate title or for whole sentences. On the internet, this is considered shouting. And nobody likes being shouted at."
recommendation_two: "Any debate or comment suggesting illegal action will be deleted, as well as those intending to sabotage the debate spaces. Anything else is allowed."
recommendation_three: "Ruthless criticism is very welcome. This is a space for reflection. But we recommend that you stick to elegance and intelligence. The world is a better place with these virtues in it."
recommendation_four: "Enjoy this space and the voices that fill it. It belongs to you too."
form:
submit_button: "Start a debate"
create:
@@ -154,91 +151,90 @@ en:
submit_button: "Save changes"
proposals:
index:
title: Proposals
title: "Proposals"
featured_proposals_html: "Featured<br>proposals"
start_proposal: Start a proposal
select_order: Order by
select_order_long: Order proposals by
start_proposal: "Create a proposal"
select_order: "Order by"
select_order_long: "You are viewing proposals according to:"
orders:
confidence_score: "most supported"
hot_score: "most active today"
created_at: newest
most_commented: most commented
random: random
confidence_score: "highest rated"
hot_score: "most active"
created_at: "newest"
most_commented: "most commented"
random: "random"
filter_topic:
one: " with the topic '%{topic}'"
other: " with the topic '%{topic}'"
one: " with topic '%{topic}'"
other: " with topic '%{topic}'"
search_form:
title: Search
button: Search
placeholder: "Search proposals..."
title: "Search"
button: "Search"
placeholder: "Search citizen proposals..."
search_results:
one: " containing '%{search_term}'"
other: " containing '%{search_term}'"
one: " containing the term '%{search_term}'"
other: " containing the term '%{search_term}'"
proposal:
proposal: Proposal
proposal: "Proposal"
support: "Support"
support_title: "Support this proposal"
comments:
zero: No comments
one: 1 Comment
other: "%{count} Comments"
zero: "No comments"
one: "1 comment"
other: "%{count} comments"
supports:
zero: No supports
one: 1 support
zero: "No supports"
one: "1 support"
other: "%{count} supports"
supports_necessary: "53.726 necessary supports"
census_percent: "2% of census"
supports_necessary: "53,726 supports needed"
census_percent: "2% of Census"
total_percent: "100%"
already_supported: "You already supported this proposal, share it!"
already_supported: "You have already supported this proposal. Share it!"
form:
proposal_title: Proposal title
proposal_question: Proposal question
proposal_question_example_html: "Debe ser resumida en una pregunta cuya respuesta sea Sí o No. <em>Ej. '¿Está usted de acuerdo en peatonalizar la calle Mayor?'</em>"
proposal_text: Initial text for proposal
proposal_external_url: Link to additional documentation
proposal_video_url: "Enlace a vídeo externo"
proposal_video_url_note: "Puedes añadir un enlace a YouTube o Vimeo"
proposal_title: "Proposal title"
proposal_question: "Proposal question"
proposal_question_example_html: "Must be summarised in one question with a Yes or No answer. <em>E.g. 'Do you agree with the pedestrianisation of Calle Mayor?'</em>"
proposal_summary: "Proposal summary"
proposal_summary_note: "200 chars. maximum"
proposal_responsible_name: "First and last name of the person making this proposal"
proposal_responsible_name_note: "(individualmente o como representante de un colectivo; no se mostrará públicamente)"
tags_label: Topics
tags_instructions: >
Tag this proposal. You can choose among our proposals on the list or add any other topic you want.
tags_placeholder: "Add topics writing them separated by ','"
proposal_summary_note: "(maximum 200 characters)"
proposal_text: "Proposal text"
proposal_external_url: "Link to additional documentation"
proposal_video_url: "Link to external video"
proposal_video_url_note: "You may add a link to YouTube or Vimeo"
proposal_responsible_name: "Full name of the person submitting the proposal"
proposal_responsible_name_note: "(individually or as representative of a collective; will not be displayed publically)"
tags_label: "Tags"
tags_instructions: "Tag this proposal. You can choose from our tags or add your own."
tags_placeholder: "Enter the tags you would like to use, separated by commas (',')"
show:
back_link: Back
author_deleted: Deleted user
back_link: "Go back"
author_deleted: "User deleted"
code: "Proposal code:"
comments_title: Comments
comments_title: "Comments"
comments:
zero: No comments
one: 1 Comment
other: "%{count} Comments"
login_to_comment: "You need to %{signin} or %{signup} to comment."
edit_proposal_link: "Edit proposal"
share: Share
flag: "This proposal has been flag as innapropiate for some users."
zero: "No comments"
one: "1 comment"
other: "%{count} comments"
login_to_comment: "You must %{signin} or %{signup} to leave a comment."
edit_proposal_link: "Edit"
share: "Share"
flag: "This proposal has been flagged as inappropriate by several users."
edit:
editing: Edit proposal
show_link: Show proposal
back_link: Back
editing: "Edit proposal"
show_link: "View proposal"
back_link: "Go back"
form:
submit_button: "Save changes"
new:
start_new: Start a proposal
more_info: "¿Cómo funcionan las propuestas ciudadanas?"
back_link: Back
recommendations_title: Tips for creating a proposal
recommendation_one: "Do not write the title of the proposal or whole sentences in capital. On the Internet this is considered shouting. And nobody likes to scream."
recommendation_two: "Any discussion or comment that involves an illegal act will be eliminated, also intending to sabotage the proposal spaces, everything else is permitted."
recommendation_three: "Enjoy this space, voices that fill it, it is yours too."
start_new: "Create new proposal"
more_info: "How do citizen proposals work?"
back_link: "Go back"
recommendations_title: "Recommendations for creating a proposal"
recommendation_one: "Do not use capital letters for the proposal title or for whole sentences. On the internet, this is considered shouting. And nobody likes being shouted at."
recommendation_two: "Any proposal or comment suggesting illegal action will be deleted, as well as those intending to sabotage the debate spaces. Anything else is allowed."
recommendation_three: "Enjoy this space and the voices that fill it. It belongs to you too."
form:
submit_button: "Start a proposal"
submit_button: "Create proposal"
create:
form:
submit_button: "Start a proposal"
submit_button: "Create proposal"
update:
form:
submit_button: "Save changes"
@@ -248,56 +244,56 @@ en:
confidence_score: "Most voted"
created_at: "Newest"
form:
leave_comment: Write a comment
comment_as_moderator: Comment as moderator
comment_as_admin: Comment as administrator
leave_comment: "Leave your comment"
comment_as_moderator: "Comment as moderator"
comment_as_admin: "Comment as admin"
comment:
author: Author
moderator: Moderator
admin: Administrator
deleted: This comment has been deleted
user_deleted: Deleted user
author: "Author"
moderator: "Moderator"
admin: "Administrator"
deleted: "This comment has been deleted"
user_deleted: "User deleted"
responses:
zero: No Responses
one: 1 Response
other: "%{count} Responses"
zero: "No responses"
one: "1 response"
other: "%{count} responses"
votes:
zero: No votes
one: 1 vote
zero: "No votes"
one: "1 vote"
other: "%{count} votes"
comments_helper:
comment_link: Comment
comment_button: Publish comment
reply_link: Reply
reply_button: Publish reply
comment_link: "Comment"
comment_button: "Publish comment"
reply_link: "Reply"
reply_button: "Publish reply"
votes:
agree: I agree
disagree: I disagree
supports: Supports
unauthenticated: "You need to %{signin} or %{signup} before continuing."
signin: sign in
signup: sign up
anonymous: "Too many anonymous votes, %{verify_account} to vote."
verified_only: "Proposals can only be voted by verified users, %{verify_account}."
verify_account: verify your account
organizations: Organizations can not vote
agree: "I agree"
disagree: "I disagree"
supports: "Supports"
unauthenticated: "You must %{signin} or %{signup} to continue."
signin: "Sign in"
signup: "Sign up"
anonymous: "Too many anonymous votes to admit vote %{verify_account}."
verified_only: "Only verified users can vote on proposals; %{verify_account}."
verify_account: "verify your account"
organizations: "Organisations are not permitted to vote"
account:
show:
title: "My account"
save_changes_submit: "Save changes"
change_credentials_link: "Change my credentials"
email_on_comment_label: "Receive email when someone comments on my debates or proposals"
email_on_comment_reply_label: "Receive email when someone replies to my comments"
email_on_comment_label: "Notify me by email when someone comments on my proposals or debates"
email_on_comment_reply_label: "Notify me by email when someone replies to my comments"
erase_account_link: "Erase my account"
personal: "Personal data"
personal: "Personal details"
username_label: "Username"
phone_number_label: "Phone number"
organization_name_label: "Organization name"
organization_responsible_name_placeholder: "The responsible representative of the organization"
notifications: Notifications
finish_verification: "Finish verification"
verified_account: Verified account
verify_my_account: Verify my account
organization_name_label: "Name of organisation"
organization_responsible_name_placeholder: "Representative of the organisation/collective"
notifications: "Notifications"
finish_verification: "Complete verification"
verified_account: "Account verified"
verify_my_account: "Verify my account"
user_permission_title: "Participation"
user_permission_info: "With your account you can..."
user_permission_debates: "Participate on debates"
@@ -307,45 +303,45 @@ en:
user_permission_verify: "To perform all the actions verify your account."
user_permission_verify_info: "* Only for users on Madrid City Census."
simple_captcha:
placeholder: "Enter the image value"
label: "Enter the image value in the next form"
placeholder: "Enter the text from the image"
label: "Enter the text from the image in the box below"
refresh_button_text: "Refresh"
message:
user: "secret code did not match with the image"
debate: "secret code did not match with the image"
proposal: "secret code did not match with the image"
user: "the secret code does not match the image"
debate: "the secret code does not match the image"
proposal: "the secret code does not match the image"
shared:
author_info:
author_deleted: Deleted user
author_deleted: "User deleted"
tags_cloud:
tags: Trend
tags: "Trending"
print:
print_button: "Print this info"
flag: Flag as inappropriate
unflag: Undo flag
collective: Collective
check: Select
check_all: All
check_none: None
flag: "Flag as inappropriate"
unflag: "Unflag"
collective: "Collective"
check: "Select"
check_all: "All"
check_none: "None"
unauthorized:
default: "You are not authorized to access this page."
default: "You do not have permission to access this page."
manage:
all: "You are not authorized to %{action} %{subject}."
all: "You do not have permission to carry out the action '%{action}' on %{subject}."
welcome:
highlights: "Highlights: "
signed_in_home_title: Recent activity
signed_in_home_title: "Recent activity"
debates:
title: "Debate"
description: "Meet, discuss and share what we think is important in our city."
title: "Debates"
description: "For meeting, discussing and sharing the things that matter to us in our city."
proposal:
title: "You propose"
description: "Open to citizens proposals on the kind of city we want to live."
description: "Open space for citizen proposals about the kind of city we want to live in."
decide:
title: "You decide"
description: "Citizenship decide whether to accept or reject the most supported proposals."
description: "The public decides if it accepts or rejects the most supported proposals."
do:
title: "It does"
description: "If the proposal is accepted mostly, the City Council makes his own and done."
title: "It gets done"
description: "If the proposal is accepted by the majority, the City Council accepts it as its own and it gets done."
welcome:
title: "Participate"
go_to_index: "See proposals and debates"
@@ -353,19 +349,19 @@ en:
user_permission_debates: "Participate on debates"
user_permission_proposal: "Create new proposals"
user_permission_support_proposal: "Support proposals*"
user_permission_votes: "Participate on final voting*"
user_permission_votes: "Participate on final voting"
user_permission_verify: "To perform all the actions %{verify}."
user_permission_verify_url: "verify your account"
user_permission_verify_info: "* Only for users on Madrid City Census."
user_permission_verify_info: "* Only for users on Madrid Census."
omniauth:
finish_signup:
title: Add Email
title: "Add your email address"
twitter:
sign_in: Sign in with Twitter
sign_up: Sign up with Twitter
sign_in: "Sign in with Twitter"
sign_up: "Sign up with Twitter"
facebook:
sign_in: Sign in with Facebook
sign_up: Sign up with Facebook
sign_in: "Sign in with Facebook"
sign_up: "Sign up with Facebook"
google_oauth2:
sign_in: Sign in with Google
sign_up: Sign up with Google
sign_in: "Sign in with Google"
sign_up: "Sign up with Google"

View File

@@ -6,11 +6,11 @@ es:
layouts:
header:
logo: "Madrid"
external_link_transparency: Transparencia
external_link_transparency: "Transparencia"
external_link_transparency_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Transparencia?vgnextfmt=default&vgnextchannel=20fd850769797310VgnVCM2000000c205a0aRCRD"
external_link_opendata: Datos abiertos
external_link_opendata: "Datos abiertos"
external_link_opendata_url: "http://datos.madrid.es"
external_link_blog: Blog
external_link_blog: "Blog"
external_link_blog_url: "/blog"
open_gov: "Gobierno %{open}"
open: "abierto"
@@ -22,14 +22,14 @@ es:
"Existen ciudades gobernadas directamente por sus habitantes, que <b>debaten</b> sobre temas que les preocupan, <b>proponen</b> ideas para mejorar
sus vidas y <b>deciden</b> entre todas y todos las que se llevan a cabo. Madrid ya es una de ellas."
see_all: "Ver propuestas"
my_account_link: Mi cuenta
my_account_link: "Mi cuenta"
locale: "Idioma:"
administration: Administrar
moderation: Moderar
highlights: "Portada"
administration: "Administrar"
moderation: "Moderar"
# highlights: "Portada"
more_information: "Más información"
debates: Debates
proposals: Propuestas ciudadanas
debates: "Debates"
proposals: "Propuestas ciudadanas"
footer:
description: "Este portal usa la %{consul} que es %{open_source}. De Madrid, para el mundo entero."
open_source: "software libre"
@@ -39,9 +39,9 @@ es:
copyright: "Ayuntamiento de Madrid, %{year}"
participation_title: "Participación"
participation_text: "Decide cómo debe ser la ciudad de Madrid que quieres."
transparency_title: Transparencia
transparency_title: "Transparencia"
transparency_text: "Obtén cualquier información sobre el Ayuntamiento de Madrid."
open_data_title: Datos Abiertos
open_data_title: "Datos Abiertos"
open_data_text: "Todos los datos del Ayuntamiento son tuyos."
contact_us: "Para asistencia técnica contáctenos en"
privacy: "Política de privacidad"
@@ -61,28 +61,26 @@ es:
blog: "Blog"
youtube: "YouTube"
form:
error: error
errors: errores
error: "error"
errors: "errores"
not_saved: "impidieron guardar %{resource}:"
accept_terms: "Acepto la %{policy} y las %{conditions}"
policy: "Política de privacidad"
conditions: "Condiciones de uso"
user: la cuenta
debate: el debate
proposal: la propuesta
verification::sms: el teléfono
verification::letter: la verificación
user: "la cuenta"
debate: "el debate"
proposal: "la propuesta"
verification::sms: "el teléfono"
verification::letter: "la verificación"
application:
alert:
only_beta_testers: "Lo sentimos sólo los usuarios de pruebas tienen acceso de momento"
close: "Cerrar"
menu: "Menú"
debates:
index:
title: Debates
start_debate: Empieza un debate
select_order: Ordenar por
select_order_long: Estás viendo los debates
title: "Debates"
start_debate: "Empieza un debate"
select_order: "Ordenar por"
select_order_long: "Estás viendo los debates"
orders:
confidence_score: "mejor valorados"
hot_score: "más activos"
@@ -93,53 +91,52 @@ es:
one: " con el tema '%{topic}'"
other: " con el tema '%{topic}'"
search_form:
title: Buscar
button: Buscar
title: "Buscar"
button: "Buscar"
placeholder: "Buscar debates..."
search_results:
one: " que contiene '%{search_term}'"
other: " que contienen '%{search_term}'"
debate:
debate: Debate
debate: "Debate"
comments:
zero: Sin comentarios
one: 1 Comentario
zero: "Sin comentarios"
one: "1 Comentario"
other: "%{count} Comentarios"
votes:
zero: Sin votos
one: 1 voto
zero: "Sin votos"
one: "1 voto"
other: "%{count} votos"
form:
debate_title: Título del debate
debate_text: Texto inicial del debate
tags_label: Temas
tags_instructions: >
Etiqueta este debate. Puedes elegir entre nuestras propuestas o introducir las que desees.
debate_title: "Título del debate"
debate_text: "Texto inicial del debate"
tags_label: "Temas"
tags_instructions: "Etiqueta este debate. Puedes elegir entre nuestras propuestas o introducir las que desees."
tags_placeholder: "Escribe las etiquetas que desees separadas por coma (',')"
show:
back_link: Volver
author_deleted: Usuario eliminado
comments_title: Comentarios
back_link: "Volver"
author_deleted: "Usuario eliminado"
comments_title: "Comentarios"
comments:
zero: Sin comentarios
one: 1 Comentario
zero: "Sin comentarios"
one: "1 Comentario"
other: "%{count} Comentarios"
login_to_comment: "Necesitas %{signin} o %{signup} para comentar."
edit_debate_link: "Editar debate"
share: Compartir
share: "Compartir"
flag: "Este debate ha sido marcado como inapropiado por varios usuarios."
edit:
editing: Editar debate
show_link: Ver debate
back_link: Volver
editing: "Editar debate"
show_link: "Ver debate"
back_link: "Volver"
form:
submit_button: "Guardar cambios"
new:
start_new: Empezar un debate
start_new: "Empezar un debate"
info: "Un debate es un foro de discusión, no una propuesta ciudadana. Muy pronto abriremos la sección de propuestas ciudadanas, donde cualquiera podrá presentar propuestas y, si reciben apoyo, serán puestas en marcha por el Ayuntamiento."
more_info: "Más información"
back_link: Volver
recommendations_title: Recomendaciones para crear un debate
back_link: "Volver"
recommendations_title: "Recomendaciones para crear un debate"
recommendation_one: "No escribas el título del debate o frases enteras en mayúsculas. En internet eso se considera gritar. Y a nadie le gusta que le griten."
recommendation_two: "Cualquier debate o comentario que implique una acción ilegal será eliminado, también los que tengan la intención de sabotear los espacios de debate, todo lo demás está permitido."
recommendation_three: "Las críticas despiadadas son muy bienvenidas. Este es un espacio de pensamiento. Pero te recomendamos conservar la elegancia y la inteligencia. El mundo es mejor con ellas presentes."
@@ -154,11 +151,11 @@ es:
submit_button: "Guardar cambios"
proposals:
index:
title: Propuestas ciudadanas
title: "Propuestas ciudadanas"
featured_proposals_html: "Propuestas<br>destacadas"
start_proposal: Crea una propuesta
select_order: Ordenar por
select_order_long: Estás viendo las propuestas
start_proposal: "Crea una propuesta"
select_order: "Ordenar por"
select_order_long: "Estás viendo las propuestas"
orders:
confidence_score: "más apoyadas"
hot_score: "más activas hoy"
@@ -169,68 +166,67 @@ es:
one: " con el tema '%{topic}'"
other: " con el tema '%{topic}'"
search_form:
title: Search
button: Search
title: "Buscar"
button: "Buscar"
placeholder: "Buscar propuestas ciudadanas..."
search_results:
one: " que contiene '%{search_term}'"
other: " que contienen '%{search_term}'"
proposal:
proposal: Propuesta
proposal: "Propuesta"
support: "Apoyar"
support_title: "Apoyar esta propuesta"
comments:
zero: Sin comentarios
one: 1 Comentario
zero: "Sin comentarios"
one: "1 Comentario"
other: "%{count} Comentarios"
supports:
zero: Sin apoyos
one: 1 apoyo
zero: "Sin apoyos"
one: "1 apoyo"
other: "%{count} apoyos"
supports_necessary: "53.726 apoyos necesarios"
census_percent: "2% del Censo"
total_percent: "100%"
already_supported: "¡Ya has apoyado esta propuesta, compártela!"
form:
proposal_title: Título de la propuesta
proposal_question: Pregunta de la propuesta
proposal_title: "Título de la propuesta"
proposal_question: "Pregunta de la propuesta"
proposal_question_example_html: "Debe ser resumida en una pregunta cuya respuesta sea Sí o No. <em>Ej. '¿Está usted de acuerdo en peatonalizar la calle Mayor?'</em>"
proposal_summary: "Resumen de la propuesta"
proposal_summary_note: "(máximo 200 caracteres)"
proposal_text: Texto desarrollado de la propuesta
proposal_external_url: Enlace a documentación adicional
proposal_text: "Texto desarrollado de la propuesta"
proposal_external_url: "Enlace a documentación adicional"
proposal_video_url: "Enlace a vídeo externo"
proposal_video_url_note: "Puedes añadir un enlace a YouTube o Vimeo"
proposal_responsible_name: "Nombre y apellidos de la persona que hace esta propuesta"
proposal_responsible_name_note: "(individualmente o como representante de un colectivo; no se mostrará públicamente)"
tags_label: Temas
tags_instructions: >
Etiqueta esta propuesta. Puedes elegir entre nuestras propuestas o introducir las que desees.
tags_label: "Temas"
tags_instructions: "Etiqueta esta propuesta. Puedes elegir entre nuestras propuestas o introducir las que desees."
tags_placeholder: "Escribe las etiquetas que desees separadas por una coma (',')"
show:
back_link: Volver
author_deleted: Usuario eliminado
back_link: "Volver"
author_deleted: "Usuario eliminado"
code: "Código de la propuesta:"
comments_title: Comentarios
comments_title: "Comentarios"
comments:
zero: Sin comentarios
one: 1 Comentario
zero: "Sin comentarios"
one: "1 Comentario"
other: "%{count} Comentarios"
login_to_comment: "Necesitas %{signin} o %{signup} para comentar."
edit_proposal_link: "Editar propuesta"
share: Compartir
share: "Compartir"
flag: "Esta propuesta ha sido marcada como inapropiada por varios usuarios."
edit:
editing: Editar propuesta
show_link: Ver propuesta
back_link: Volver
editing: "Editar propuesta"
show_link: "Ver propuesta"
back_link: "Volver"
form:
submit_button: "Guardar cambios"
new:
start_new: Crear una propuesta
start_new: "Crear una propuesta"
more_info: "¿Cómo funcionan las propuestas ciudadanas?"
back_link: Volver
recommendations_title: Recomendaciones para crear una propuesta
back_link: "Volver"
recommendations_title: "Recomendaciones para crear una propuesta"
recommendation_one: "No escribas el título de la propuesta o frases enteras en mayúsculas. En internet eso se considera gritar. Y a nadie le gusta que le griten."
recommendation_two: "Cualquier propuesta o comentario que implique una acción ilegal será eliminada, también las que tengan la intención de sabotear los espacios de propuesta, todo lo demás está permitido."
recommendation_three: "Disfruta de este espacio, de las voces que lo llenan, también es tuyo."
@@ -248,39 +244,39 @@ es:
confidence_score: "Más votados"
created_at: "Más nuevos"
form:
leave_comment: Deja tu comentario
comment_as_moderator: Comentar como moderador
comment_as_admin: Comentar como administrador
leave_comment: "Deja tu comentario"
comment_as_moderator: "Comentar como moderador"
comment_as_admin: "Comentar como administrador"
comment:
author: Autor
moderator: Moderador
admin: Administrador
deleted: Este comentario ha sido eliminado
user_deleted: Usuario eliminado
author: "Autor"
moderator: "Moderador"
admin: "Administrador"
deleted: "Este comentario ha sido eliminado"
user_deleted: "Usuario eliminado"
responses:
zero: Sin respuestas
one: 1 Respuesta
zero: "Sin respuestas"
one: "1 Respuesta"
other: "%{count} Respuestas"
votes:
zero: Sin votos
one: 1 voto
zero: "Sin votos"
one: "1 voto"
other: "%{count} votos"
comments_helper:
comment_link: Comentar
comment_button: Publicar comentario
reply_link: Responder
reply_button: Publicar respuesta
comment_link: "Comentar"
comment_button: "Publicar comentario"
reply_link: "Responder"
reply_button: "Publicar respuesta"
votes:
agree: Estoy de acuerdo
disagree: No estoy de acuerdo
supports: Apoyos
agree: "Estoy de acuerdo"
disagree: "No estoy de acuerdo"
supports: "Apoyos"
unauthenticated: "Necesitas %{signin} o %{signup} para continuar."
signin: iniciar sesión
signup: registrarte
signin: "iniciar sesión"
signup: "registrarte"
anonymous: "Demasiados votos anónimos, para poder votar %{verify_account}."
verified_only: "Las propuestas sólo pueden ser votadas por usuarios verificados, %{verify_account}."
verify_account: verifica tu cuenta
organizations: Las organizaciones no pueden votar
verify_account: "verifica tu cuenta"
organizations: "Las organizaciones no pueden votar"
account:
show:
title: "Mi cuenta"
@@ -294,10 +290,10 @@ es:
phone_number_label: "Teléfono"
organization_name_label: "Nombre de la organización"
organization_responsible_name_placeholder: "Representante de la asociación/colectivo"
notifications: Notificaciones
notifications: "Notificaciones"
finish_verification: "Finalizar verificación"
verified_account: Cuenta verificada
verify_my_account: Verificar mi cuenta
verified_account: "Cuenta verificada"
verify_my_account: "Verificar mi cuenta"
user_permission_title: "Participación"
user_permission_info: "Con tu cuenta ya puedes..."
user_permission_debates: "Participar en debates"
@@ -318,22 +314,22 @@ es:
author_info:
author_deleted: Usuario eliminado
tags_cloud:
tags: Tendencias
tags: "Tendencias"
print:
print_button: "Imprimir esta información"
flag: Denunciar como inapropiado
unflag: Deshacer denuncia
collective: Colectivo
check: Seleccionar
check_all: Todos
check_none: Ninguno
flag: "Denunciar como inapropiado"
unflag: "Deshacer denuncia"
collective: "Colectivo"
check: "Seleccionar"
check_all: "Todos"
check_none: "Ninguno"
unauthorized:
default: "No tienes permiso para acceder a esta página."
manage:
all: "No tienes permiso para realizar la acción '%{action}' sobre %{subject}."
welcome:
highlights: "Portada: "
signed_in_home_title: Actividad reciente
signed_in_home_title: "Actividad reciente"
debates:
title: "Debates"
description: "Encontrarnos, debatir y compartir lo que nos parece importante en nuestra ciudad."
@@ -359,13 +355,13 @@ es:
user_permission_verify_info: "* Sólo usuarios empadronados en el municipio de Madrid."
omniauth:
finish_signup:
title: Añade tu email
title: "Añade tu email"
twitter:
sign_in: Entra con Twitter
sign_up: Regístrate con Twitter
sign_in: "Entra con Twitter"
sign_up: "Regístrate con Twitter"
facebook:
sign_in: Entra con Facebook
sign_up: Regístrate con Facebook
sign_in: "Entra con Facebook"
sign_up: "Regístrate con Facebook"
google_oauth2:
sign_in: Entra con Google
sign_up: Regístrate con Google
sign_in: "Entra con Google"
sign_up: "Regístrate con Google"

16
config/locales/kaminari.en.yml Normal file → Executable file
View File

@@ -3,19 +3,19 @@ en:
pagination:
first: "&laquo; First"
last: "Last &raquo;"
previous: "&lsaquo; Prev"
previous: "&lsaquo; Previous"
next: "Next &rsaquo;"
truncate: "&hellip;"
helpers:
page_entries_info:
entry:
zero: "entries"
one: "entry"
other: "entries"
zero: "Entries"
one: "Entry"
other: "Entries"
one_page:
display_entries:
zero: "No %{entry_name} found"
one: "Displaying <b>1</b> %{entry_name}"
other: "Displaying <b>all %{count}</b> %{entry_name}"
zero: "%{entry_name} cannot be found"
one: "There is <b>1</b> %{entry_name}"
other: "There are <b> %{count}</b> %{entry_name}"
more_pages:
display_entries: "Displaying %{entry_name} <b>%{first}&nbsp;-&nbsp;%{last}</b> of <b>%{total}</b> in total"
display_entries: "Displaying <b>%{first}&nbsp;-&nbsp;%{last}</b> of <b>%{total}</b> %{entry_name}"

25
config/locales/mailers.en.yml Normal file → Executable file
View File

@@ -2,19 +2,18 @@ en:
mailers:
comment:
subject: "Someone has commented on your %{commentable}"
hi: Hello
title: New comment
new_comment_by_html: "There is a new comment by <b>%{commenter}</b> on"
hi: "Hi"
title: "New comment"
new_comment_by_html: "There is a new comment from <b>%{commenter}</b>"
reply:
subject: Someone has replied to your comment
hi: Hello
title: New reply on your comment
new_reply_by_html: "There'is a new reply by <b>%{commenter}</b> to your comment on"
subject: "Someone has responded to your comment"
hi: "Hi"
title: "New response to your comment"
new_reply_by_html: "There is a new response from <b>%{commenter}</b> to your comment on"
email_verification:
subject: Verify your email
title: Please verify yourself
instructions_html: "We need to verify you using this email, which we got from the Census. %{verification_link}"
click_here_to_verify: "Please click here to verify yourself"
subject: "Confirm your email"
title: "Confirm your account using the following link"
instructions_html: "To complete the verification of your user account in the Open Government Portal of the Madrid City Council, you must click %{verification_link}."
click_here_to_verify: "this link"
instructions_2_html: "This email will verify your account with <b>%{document_type} %{document_number}</b>. If these don't belong to you, please don't click on the previous link and ignore this email."
thanks: "Thanks"
thanks: "Thank you very much."

View File

@@ -2,17 +2,17 @@ es:
mailers:
comment:
subject: "Alguien ha comentado en tu %{commentable}"
hi: Hola
title: Nuevo comentario
hi: "Hola"
title: "Nuevo comentario"
new_comment_by_html: "Hay un nuevo comentario de <b>%{commenter}</b> en"
reply:
subject: Alguien ha respondido a tu comentario
hi: Hola
title: Nueva respuesta a tu comentario
subject: "Alguien ha respondido a tu comentario"
hi: "Hola"
title: "Nueva respuesta a tu comentario"
new_reply_by_html: "Hay una nueva respuesta de <b>%{commenter}</b> a tu comentario en"
email_verification:
subject: Verifica tu email
title: Verifica tu cuenta con el siguiente enlace
subject: "Verifica tu email"
title: "Verifica tu cuenta con el siguiente enlace"
instructions_html: "Para terminar de verificar tu cuenta de usuario en el Portal de Gobierno Abierto del Ayuntamiento de Madrid, necesitamos que pulses %{verification_link}."
click_here_to_verify: "en este enlace"
instructions_2_html: "Este email es para verificar tu cuenta con <b>%{document_type} %{document_number}</b>. Si esos no son tus datos, por favor no pulses el enlace anterior e ignora este email."

View File

@@ -28,9 +28,9 @@ en:
proposals:
create_proposal: "Create proposal"
print:
print_button: Print
print_button: "Print"
alert:
unverified_user: User is not verified
unverified_user: "User is not verified"
permissions:
debates: "Engage in debates"
create_proposals: "Create proposals"
@@ -65,3 +65,7 @@ en:
"We have sent an email to the email address <b>%{email}</b> in order to verify that it belongs to this user.
It contains a link they have to click. Then they will have to set their access password before being able
to log in to the website"
print:
proposals_title: "Proposals:"
info: "Create yor proposal on http://decide.madrid.es"
note: "The proposals more supported will be voted. If are accepted by a majority, the city Council shall be carried out."

View File

@@ -28,9 +28,9 @@ es:
proposals:
create_proposal: "Crear propuesta"
print:
print_button: Imprimir
print_button: "Imprimir"
alert:
unverified_user: Este usuario no está verificado
unverified_user: "Este usuario no está verificado"
permissions:
debates: "Participar en debates"
create_proposals: "Crear nuevas propuestas"
@@ -65,3 +65,7 @@ es:
"Hemos enviado un correo electrónico a <b>%{email}</b> para verificar que es suya.
El correo enviado contiene un link que el usuario deberá pulsar. Entonces podrá seleccionar
una clave de acceso, y entrar en la web de participación."
print:
proposals_title: "Propuestas:"
info: "Haz tu propuesta en http://decide.madrid.es"
note: "Las propuestas más apoyadas serán llevadas a votación. Y si las acepta una mayoría, el Ayuntamiento las llevará a cabo."

106
config/locales/moderation.en.yml Normal file → Executable file
View File

@@ -1,75 +1,75 @@
en:
moderation:
menu:
proposals: Proposals
flagged_debates: Debates
flagged_comments: Comments
users: Ban users
proposals: "Proposals"
flagged_debates: "Debates"
flagged_comments: "Comments"
users: "Block users"
dashboard:
index:
title: Moderation
title: "Moderation"
comments:
index:
hide_comments: Hide comments
block_authors: Block authors
ignore_flags: Ignore flags
title: Comments
hide_comments: "Hide comments"
block_authors: "Block authors"
ignore_flags: "Mark as viewed"
title: "Comments"
headers:
comment: Comment
moderate: Moderate
filter: Filter
comment: "Comment"
moderate: "Moderate"
filter: "Filter"
filters:
all: All
pending_flag_review: Pending
with_ignored_flag: Ignored
order: Order
all: "All"
pending_flag_review: "Pending"
with_ignored_flag: "Marked as viewed"
order: "Order"
orders:
created_at: Newest
flags: Most flagged
confirm: Are you sure?
created_at: "Newest"
flags: "Most flagged"
confirm: "Are you sure?"
debates:
index:
hide_debates: Hide debates
block_authors: Block authors
ignore_flags: Ignore flags
title: Debates
hide_debates: "Hide debates"
block_authors: "Block authors"
ignore_flags: "Mark as viewed"
title: "Debates"
headers:
debate: Debate
moderate: Moderate
filter: Filter
debate: "Debate"
moderate: "Moderate"
filter: "Filter"
filters:
all: All
pending_flag_review: Pending
with_ignored_flag: Ignored
order: Order
all: "All"
pending_flag_review: "Pending"
with_ignored_flag: "Marked as viewed"
order: "Order"
orders:
created_at: Newest
flags: Most flagged
confirm: Are you sure?
created_at: "Newest"
flags: "Most flagged"
confirm: "Are you sure?"
proposals:
index:
hide_proposals: Hide proposals
block_authors: Block authors
ignore_flags: Ignore flags
title: Proposals
hide_proposals: "Hide proposals"
block_authors: "Block authors"
ignore_flags: "Mark as viewed"
title: "Proposals"
headers:
proposal: Proposal
moderate: Moderate
filter: Filter
proposal: "Proposal"
moderate: "Moderate"
filter: "Filter"
filters:
all: All
pending_flag_review: Pending
with_ignored_flag: Ignored
order: Order
all: "All"
pending_flag_review: "Pending review"
with_ignored_flag: "Mark as viewed"
order: "Order by"
orders:
created_at: Newest
flags: Most flagged
confirm: Are you sure?
created_at: "Most recent"
flags: "Most flagged"
confirm: "Are you sure?"
users:
notice_hide: User banned.
notice_hide: "User blocked. All of this user's debates and comments have been hidden."
index:
title: User search and banning
search_placeholder: email or username
search: Search
hide: Ban
hidden: Banned
title: "Block users"
search_placeholder: "email or name of user"
search: "Search"
hide: "Block"
hidden: "Blocked"

View File

@@ -1,75 +1,75 @@
es:
moderation:
menu:
proposals: Propuestas
flagged_debates: Debates
flagged_comments: Comentarios
users: Bloquear usuarios
proposals: "Propuestas"
flagged_debates: "Debates"
flagged_comments: "Comentarios"
users: "Bloquear usuarios"
dashboard:
index:
title: Moderación
title: "Moderación"
comments:
index:
hide_comments: Ocultar comentarios
block_authors: Bloquear autores
ignore_flags: Marcar como revisados
title: Comentarios
hide_comments: "Ocultar comentarios"
block_authors: "Bloquear autores"
ignore_flags: "Marcar como revisados"
title: "Comentarios"
headers:
comment: Comentario
moderate: Moderar
filter: Filtrar
comment: "Comentario"
moderate: "Moderar"
filter: "Filtrar"
filters:
all: Todos
pending_flag_review: Pendientes
with_ignored_flag: Marcados como revisados
order: Orden
all: "Todos"
pending_flag_review: "Pendientes"
with_ignored_flag: "Marcados como revisados"
order: "Orden"
orders:
created_at: Más nuevos
flags: Más denunciados
confirm: ¿Estás seguro?
created_at: "Más nuevos"
flags: "Más denunciados"
confirm: "¿Estás seguro?"
debates:
index:
hide_debates: Ocultar debates
block_authors: Bloquear autores
ignore_flags: Marcar como revisados
title: Debates
hide_debates: "Ocultar debates"
block_authors: "Bloquear autores"
ignore_flags: "Marcar como revisados"
title: "Debates"
headers:
debate: Debate
moderate: Moderar
filter: Filtrar
debate: "Debate"
moderate: "Moderar"
filter: "Filtrar"
filters:
all: Todos
pending_flag_review: Pendientes
with_ignored_flag: Marcados como revisados
order: Orden
all: "Todos"
pending_flag_review: "Pendientes"
with_ignored_flag: "Marcados como revisados"
order: "Orden"
orders:
created_at: Más nuevos
flags: Más denunciados
confirm: ¿Estás seguro?
created_at: "Más nuevos"
flags: "Más denunciados"
confirm: "¿Estás seguro?"
proposals:
index:
hide_proposals: Ocultar Propuestas
block_authors: Bloquear autores
ignore_flags: Marcar como revisadas
title: Propuestas
hide_proposals: "Ocultar Propuestas"
block_authors: "Bloquear autores"
ignore_flags: "Marcar como revisadas"
title: "Propuestas"
headers:
proposal: Propuesta
moderate: Moderar
filter: Filtro
proposal: "Propuesta"
moderate: "Moderar"
filter: "Filtro"
filters:
all: Todas
pending_flag_review: Pendientes de revisión
with_ignored_flag: Marcadas como revisadas
order: Ordenar por
all: "Todas"
pending_flag_review: "Pendientes de revisión"
with_ignored_flag: "Marcadas como revisadas"
order: "Ordenar por"
orders:
created_at: Más recientes
flags: Más denunciadas
confirm: ¿Estás seguro?
created_at: "Más recientes"
flags: "Más denunciadas"
confirm: "¿Estás seguro?"
users:
notice_hide: Usuario bloqueado. Se han ocultado todos sus debates y comentarios.
notice_hide: "Usuario bloqueado. Se han ocultado todos sus debates y comentarios."
index:
title: Bloquear usuarios
search_placeholder: email o nombre de usuario
search: Buscar
hide: Bloquear
hidden: Bloqueado
title: "Bloquear usuarios"
search_placeholder: "email o nombre de usuario"
search: "Buscar"
hide: "Bloquear"
hidden: "Bloqueado"

9
config/locales/pages.en.yml Normal file → Executable file
View File

@@ -8,17 +8,18 @@ en:
conditions: "Terms of use"
accessibility: "Accessibility"
conditions:
"Terms of use"
"Terms and conditions of use"
privacy:
"Privacy Policy"
general_terms:
"Terms and Conditions"
census_terms:
"Census Terms"
"To confirm the account, you must be 16 or older and be registered as resident in Madrid, having provided the information requested previously, which the Directorate-General of Civil Participation will verify against the files 'Municipal Census of Inhabitants', for which the Directorate-General for Statistics is responsible, and the 'Citizen Support Services', for which the Directorate-General for Quality and Citizen Services is responsible.
By accepting the verification process, you also consent to the verification of this information, as well as the contact methods featuring in said files.
The data provided will be acquired and processed by the Directorate-General for Civil Participation in the file 'Management of Participatory Activities' mentioned previously in the terms and conditions of use for the Portal."
transparency:
"Transparency"
opendata:
"Open Data"
opendata: "Open Data"
verify:
title: "Verify your account"
info: "For verufy your account introduce your access data:"

12
config/locales/responders.en.yml Normal file → Executable file
View File

@@ -2,13 +2,11 @@ en:
flash:
actions:
create:
notice: '%{resource_name} was successfully created.'
# alert: '%{resource_name} could not be created.'
notice: "%{resource_name} created successfully."
update:
notice: '%{resource_name} was successfully updated.'
# alert: '%{resource_name} could not be updated.'
notice: "%{resource_name} updated successfully."
# destroy:
# notice: '%{resource_name} was successfully destroyed.'
# alert: '%{resource_name} could not be destroyed.'
# notice: "%{resource_name} destroyed successfully."
# alert: "%{resource_name} could not be destroyed."
save_changes:
notice: "Saved"
notice: "Changes saved"

20
config/locales/settings.en.yml Normal file → Executable file
View File

@@ -1,12 +1,12 @@
en:
settings:
official_level_1_name: "Level 1 official positions"
official_level_2_name: "Level 2 official positions"
official_level_3_name: "Level 3 official positions"
official_level_4_name: "Level 4 official positions"
official_level_5_name: "Level 5 official positions"
max_ratio_anon_votes_on_debates: "Max allowed percentage of anonymous votes per Debate"
max_votes_for_proposal_edit: "Number of votes where a Proposal is not editable anymore"
max_votes_for_debate_edit: "Number of votes where a Debate is not editable anymore"
proposal_code_prefix: "Prefix for Proposals codes"
votes_for_proposal_success: "Number of votes needed for Proposal approval"
official_level_1_name: "Level 1 public official"
official_level_2_name: "Level 2 public official"
official_level_3_name: "Level 3 public official"
official_level_4_name: "Level 4 public official"
official_level_5_name: "Level 5 public official"
max_ratio_anon_votes_on_debates: "Maximum ratio of anonymous votes per Debate"
max_votes_for_proposal_edit: "Number of votes from which a Proposal can no longer be edited"
max_votes_for_debate_edit: "Number of votes from which a Debate can no longer be edited"
proposal_code_prefix: "Prefix for Proposal codes"
votes_for_proposal_success: "Number of votes necessary for approval of a Proposal"

View File

@@ -1,19 +1,19 @@
en:
social_share_button:
share_to: Share to %{name}
weibo: Sina Weibo
twitter: Twitter
facebook: Facebook
douban: Douban
qq: Qzone
tqq: Tqq
delicious: Delicious
baidu: Baidu.com
kaixin001: Kaixin001.com
renren: Renren.com
google_plus: Google+
google_bookmark: Google Bookmark
tumblr: Tumblr
plurk: Plurk
pinterest: Pinterest
email: Email
share_to: "Share to %{name}"
weibo: "Sina Weibo"
twitter: "Twitter"
facebook: "Facebook"
douban: "Douban"
qq: "Qzone"
tqq: "Tqq"
delicious: "Delicious"
baidu: "Baidu.com"
kaixin001: "Kaixin001.com"
renren: "Renren.com"
google_plus: "Google+"
google_bookmark: "Google Bookmark"
tumblr: "Tumblr"
plurk: "Plurk"
pinterest: "Pinterest"
email: "Email"

View File

@@ -1,19 +1,19 @@
es:
social_share_button:
share_to: Compartir en %{name}
weibo: Sina Weibo
twitter: Twitter
facebook: Facebook
douban: Douban
qq: Qzone
tqq: Tqq
delicious: Delicious
baidu: Baidu.com
kaixin001: Kaixin001.com
renren: Renren.com
google_plus: Google+
google_bookmark: Google Bookmark
tumblr: Tumblr
plurk: Plurk
pinterest: Pinterest
email: Correo electrónico
share_to: "Compartir en %{name}"
weibo: "Sina Weibo"
twitter: "Twitter"
facebook: "Facebook"
douban: "Douban"
qq: "Qzone"
tqq: "Tqq"
delicious: "Delicious"
baidu: "Baidu.com"
kaixin001: "Kaixin001.com"
renren: "Renren.com"
google_plus: "Google+"
google_bookmark: "Google Bookmark"
tumblr: "Tumblr"
plurk: "Plurk"
pinterest: "Pinterest"
email: "Correo electrónico"

84
config/locales/verification.en.yml Normal file → Executable file
View File

@@ -1,108 +1,108 @@
en:
verification:
back: "Back to my account"
back: "Return to my account"
step_1: "Residence"
step_2: "SMS confirmation"
step_2: "Confirmation code"
step_3: "Final verification"
alert:
lock: "You have reached the maximum number of verification tries. Please try again later."
lock: "You have reached the maximum number of attempts. Please try again later."
user_permission_info: "Verifing your information you'll be able to..."
user_permission_debates: "Participar en debates"
user_permission_proposal: "Crear nuevas propuestas"
user_permission_support_proposal: "Apoyar propuestas*"
user_permission_votes: "Participar en las votaciones finales*"
user_permission_debates: "Participate on debates"
user_permission_proposal: "Create new proposals"
user_permission_support_proposal: "Support proposals*"
user_permission_votes: "Participate on final voting*"
residence:
new:
title: "Verify residence"
document_type_label: "Document type"
document_type:
spanish_id: "Spanish ID"
spanish_id: "DNI"
passport: "Passport"
residence_card: "Residence card"
document_number: "Document number"
date_of_birth: "Date of birth"
postal_code: "Postal code"
postal_code: "Postcode"
postal_code_note: "To verify your account you must be on Madrid city Census"
accept_terms_text: "I accept %{terms_url} to access the city Census"
terms: "the terms"
accept_terms_text: "I accept %{terms_url} of the Census"
terms: "the terms and conditions of access"
verify_residence: "Verify residence"
form_errors: "prevented your residence verification"
error_verifying_census: "The census of the city of Madrid could not verify your information. Pero revise de information and try again or get in touch with us calling to 010 (or 915298210) or visit any of %{offices}."
form_errors: "prevented the verification of your residence"
error_verifying_census: "The Madrid Census was unable to verify your information. Please confirm that your census details are correct by calling 010 (or 915298210) or visit any of %{offices}."
error_verifying_census_offices: "26 Office of Citizen"
error_not_allowed_age: "You need yo be at least 16 years old"
error_not_allowed_postal_code: "To verify your account you need to be in the census of the Madrid town."
error_not_allowed_age: "You must be at least 16 years old"
error_not_allowed_postal_code: "In order to be verified, you must be registered in the municipality of Madrid."
create:
flash:
success: "Residence verified"
alert:
unconfirmed_residency: "You have not yet confirmed your residence"
unconfirmed_residency: "You have not yet confirmed your residency"
sms:
new:
title: "Phone verification"
phone: "Enter your phone for recive the code"
title: "Send confirmation code"
phone: "Enter your mobile phone number to receive the code"
phone_note: "We only user your phone for send to you a code, we never contact to you."
submit_button: "Send"
create:
flash:
success: "Enter the confirmation code we have sent your phone"
success: "Enter the confirmation code sent to you by text message"
edit:
title: "Phone confirmation"
confirmation_code: "Code confirmation"
resend_sms_text: "You have not received the confirmation code in your phone?"
resend_sms_link: "Request a new code"
title: "Security code confirmation"
confirmation_code: "Enter the code you received on your mobile"
resend_sms_text: "Didn't get a text with your confirmation code?"
resend_sms_link: "Click here to send it again"
submit_button: "Send"
update:
error: "Incorrect confirmation code"
flash:
level_three:
success: "Correct code. Your account is verified"
success: "Code correct. Your account is now verified"
level_two:
success: "Correct code"
success: "Code correct"
email:
show:
flash:
success: "You are now a verified user"
success: "You are a verified user"
alert:
failure: "Incorrect verification code"
failure: "Verification code incorrect"
create:
flash:
success: "We have send you a confirmation email to your email account: %{email}"
success: "We have sent a confirmation email to your account: %{email}"
alert:
failure: "There was a problem sending you an email to your account"
failure: "There was a problem with sending an email to your account"
letter:
new:
title: "Final Verification"
title: "Congratulations!"
user_permission_info: "With your account you can..."
explanation: "For participate on final voting you can:"
office: "Verify in any %{office}"
offices: "Office of Citizen"
offices: "Citizen Support Offices"
offices_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
send_letter: "Request a letter"
send_letter: "Send me a letter with the code"
go_to_index: "See proposals"
create:
flash:
success_html: "Before voting you'll receive a letter whith the instructions for verify your account.<br> Remember you can verify your information in any %{offices}."
offices: "Office of Citizen"
success_html: "Thank you for requesting your <b>maximum security code (only required for the final votes)</b>. In a few days we will send it to the address featuring in the data we have on file. Please remember that, if you prefer, you can collect your code from any of the %{offices}."
offices: "Citizen Support Offices"
offices_url: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
edit:
title: "Letter requested"
see_all: "See proposals"
update:
flash:
success: "Your account has been verified"
success: "Code correct. Your account is now verified"
alert:
unconfirmed_code: "You have not yet enter the confirmation code"
unconfirmed_code: "You have not yet entered the confirmation code"
errors:
incorrect_code: "Incorrect confirmation code"
incorrect_code: "Verification code incorrect"
verified_user:
show:
title: "Available information"
explanation: "We currently have the following data in the Census, choose where you want to send the confirmation code."
explanation: "We currently hold the following details on the Register; please select a method for your confirmation code to be sent."
email_title: "Emails"
phone_title: "Phones"
use_another_phone: "Use another phone"
phone_title: "Phone numbers"
use_another_phone: "Use other phone"
form:
submit_button: "Send code"
redirect_notices:
email_already_sent: "We already sent you a confirmation email, if you have not received it you can try resend it here"
already_verified: "You are a verified user!"
email_already_sent: "We have already sent an email with a confirmation link. If you cannot locate the email, you can request a reissue here"
already_verified: "Your account is already verified"

View File

@@ -0,0 +1,5 @@
class AddUnaccentExtension < ActiveRecord::Migration
def change
execute "create extension if not exists unaccent"
end
end

View File

@@ -0,0 +1,5 @@
class AddPgTrgmExtension < ActiveRecord::Migration
def change
execute "create extension if not exists pg_trgm"
end
end

View File

@@ -0,0 +1,5 @@
class AddPhysicalVotesToProposals < ActiveRecord::Migration
def change
add_column :proposals, :physical_votes, :integer, default: 0
end
end

View File

@@ -11,10 +11,12 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20151028145921) do
ActiveRecord::Schema.define(version: 20151030182217) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
enable_extension "unaccent"
enable_extension "pg_trgm"
create_table "activities", force: :cascade do |t|
t.integer "user_id"
@@ -211,6 +213,7 @@ ActiveRecord::Schema.define(version: 20151028145921) do
t.string "responsible_name", limit: 60
t.text "summary"
t.string "video_url"
t.integer "physical_votes", default: 0
end
add_index "proposals", ["author_id", "hidden_at"], name: "index_proposals_on_author_id_and_hidden_at", using: :btree

View File

@@ -1,12 +0,0 @@
namespace :deploy do
desc "compiles assets locally then rsyncs"
task :beta_testers do
on roles(:app) do |role|
run_locally do
execute"rsync -av ./config/beta-testers.txt #{role.user}@#{role.hostname}:#{shared_path}/config/beta-testers.txt;"
end
"chmod -R 755 #{shared_path}/config/beta-testers.txt"
execute "ln -nfs #{shared_path}/config/beta-testers.txt #{current_path}/config/beta-testers.txt"
end
end
end

View File

@@ -37,7 +37,7 @@ feature 'Account' do
check 'account_email_on_comment_reply'
click_button 'Save changes'
expect(page).to have_content "Saved"
expect(page).to have_content "Changes saved"
visit account_path
@@ -55,7 +55,7 @@ feature 'Account' do
check 'account_email_on_comment_reply'
click_button 'Save changes'
expect(page).to have_content "Saved"
expect(page).to have_content "Changes saved"
visit account_path
@@ -91,7 +91,7 @@ feature 'Account' do
click_button 'Erase my account'
expect(page).to have_content "Your account has been successfully cancelled"
expect(page).to have_content "Goodbye! Your account has been cancelled. We hope to see you again soon."
login_through_form_as(@user)

View File

@@ -201,7 +201,7 @@ feature 'Admin activity' do
visit proposal_path(proposal)
within("#proposal_#{proposal.id}") do
click_link 'Ban author'
click_link 'Hide author'
end
visit admin_activity_path
@@ -221,7 +221,7 @@ feature 'Admin activity' do
visit moderation_users_path(name_or_email: user.username)
within(".admin-list") do
click_link 'Ban'
click_link 'Block'
end
visit admin_activity_path

View File

@@ -18,7 +18,7 @@ feature 'Admin comments' do
visit proposal_path(proposal)
within("#proposal_#{proposal.id}") do
click_link 'Ban author'
click_link 'Hide author'
end
visit admin_comments_path

View File

@@ -32,7 +32,7 @@ feature 'Admin officials' do
select '3', from: 'user_official_level', exact: false
click_button 'Update User'
expect(page).to have_content 'Official position saved!'
expect(page).to have_content 'Details of official saved'
visit admin_officials_path
@@ -55,7 +55,7 @@ feature 'Admin officials' do
select '4', from: 'user_official_level', exact: false
click_button 'Update User'
expect(page).to have_content 'Official position saved!'
expect(page).to have_content 'Details of official saved'
visit admin_officials_path
@@ -68,9 +68,9 @@ feature 'Admin officials' do
scenario 'Destroy' do
visit edit_admin_official_path(@official)
click_link "Remove 'Official' condition"
click_link "Remove 'Official' status"
expect(page).to have_content 'User is not an official anymore'
expect(page).to have_content 'Details saved: the user is no longer an official'
expect(current_path).to eq(admin_officials_path)
expect(page).to_not have_content @citizen.name
expect(page).to_not have_content @official.name

View File

@@ -22,7 +22,7 @@ feature 'Admin::Organizations' do
expect(page).to have_content(org.user.email)
expect(page).to_not have_content("Greentroll")
expect(page).to_not have_content("trol@troller.com")
expect(page).to have_content("There is 1 organization without user or with the user banned")
expect(page).to have_content("There is also one organisation with no users or with a hidden user")
end
end

View File

@@ -25,6 +25,6 @@ feature 'Admin settings' do
click_button 'Update'
end
expect(page).to have_content 'Setting updated!'
expect(page).to have_content 'Value updated'
end
end

View File

@@ -54,7 +54,7 @@ feature 'Admin tags' do
expect(page).to have_content tag2.name
within("#edit_tag_#{tag2.id}") do
click_link 'Delete Topic'
click_link 'Destroy Topic'
end
visit admin_tags_path
@@ -73,7 +73,7 @@ feature 'Admin tags' do
expect(page).to have_content tag2.name
within("#edit_tag_#{tag2.id}") do
click_link 'Delete Topic'
click_link 'Destroy Topic'
end
visit admin_tags_path

View File

@@ -43,7 +43,7 @@ feature 'Incomplete verifications' do
visit admin_verifications_path
within "#user_#{incompletely_verified_user.id}" do
expect(page).to have_content "Spanish ID"
expect(page).to have_content "DNI"
expect(page).to have_content incompletely_verified_user.document_number
expect(page).to have_content Date.new(1900, 1, 1)
expect(page).to have_content "28000"

View File

@@ -17,7 +17,7 @@ feature 'Admin' do
expect(current_path).not_to eq(admin_root_path)
expect(current_path).to eq(proposals_path)
expect(page).to have_content "not authorized"
expect(page).to have_content "You do not have permission to access this page"
end
scenario 'Access as a moderator is not authorized' do
@@ -26,7 +26,7 @@ feature 'Admin' do
expect(current_path).not_to eq(admin_root_path)
expect(current_path).to eq(proposals_path)
expect(page).to have_content "not authorized"
expect(page).to have_content "You do not have permission to access this page"
end
scenario 'Access as an administrator is authorized' do
@@ -34,7 +34,7 @@ feature 'Admin' do
visit admin_root_path
expect(current_path).to eq(admin_root_path)
expect(page).to_not have_content "not authorized"
expect(page).to_not have_content "You do not have permission to access this page"
end
scenario "Admin access links" do
@@ -99,7 +99,7 @@ feature 'Admin' do
expect(page).to have_content 'Mi barrio'
click_link 'Delete Topic'
click_link 'Destroy Topic'
expect(page).not_to have_content 'Mi barrio'
end

View File

@@ -1,44 +0,0 @@
require 'rails_helper'
feature 'Beta testers' do
background do
allow_any_instance_of(ApplicationController).
to receive(:beta_site?).and_return(true)
allow_any_instance_of(ApplicationController).
to receive(:beta_testers).and_return(['isabel@example.com'])
end
scenario 'Beta testers should have access' do
visit root_path
sign_up('isabel@example.com', 'secretpassword')
confirm_email
fill_in 'user_email', with: 'isabel@example.com'
fill_in 'user_password', with: 'secretpassword'
click_button 'Log in'
expect(page).to have_content "Signed in successfully."
end
scenario 'Non beta testers should not have access' do
visit root_path
sign_up('other@example.com', 'secretpassword')
confirm_email
fill_in 'user_email', with: 'other@example.com'
fill_in 'user_password', with: 'secretpassword'
click_button 'Log in'
expect(page).to have_content "Sorry only Beta Testers are allowed access at the moment"
end
scenario "Trying to access site without being logged in" do
visit debates_path
expect(page).to have_content "Sorry only Beta Testers are allowed access at the moment"
expect(current_path).to eq(new_user_session_path)
end
end

View File

@@ -100,7 +100,7 @@ feature 'Commenting debates' do
create(:comment, commentable: debate)
visit debate_path(debate)
expect(page).to have_content 'You need to sign in or sign up to comment'
expect(page).to have_content 'You must Sign in or Sign up to leave a comment'
within('#comments') do
expect(page).to_not have_content 'Write a comment'
expect(page).to_not have_content 'Reply'
@@ -233,7 +233,7 @@ feature 'Commenting debates' do
visit debate_path(debate)
within "#comment_#{comment.id}" do
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
expect(page).to have_content('this should be visible')
end
end

View File

@@ -100,7 +100,7 @@ feature 'Commenting proposals' do
create(:comment, commentable: proposal)
visit proposal_path(proposal)
expect(page).to have_content 'You need to sign in or sign up to comment'
expect(page).to have_content 'You must Sign in or Sign up to leave a comment'
within('#comments') do
expect(page).to_not have_content 'Write a comment'
expect(page).to_not have_content 'Reply'
@@ -233,7 +233,7 @@ feature 'Commenting proposals' do
visit proposal_path(proposal)
within "#comment_#{comment.id}" do
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
expect(page).to have_content('this should be visible')
end
end

View File

@@ -56,7 +56,7 @@ feature 'Debates' do
visit debates_path(order: :hot_score, page: 1)
first(:link, debate.title).click
link_text = find_link('Back')[:href]
link_text = find_link('Go back')[:href]
expect(link_text).to include(debates_path order: :hot_score, page: 1)
end
@@ -74,7 +74,7 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'A title for a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'This is very important because...'
expect(page).to have_content author.name
expect(page).to have_content I18n.l(Debate.last.created_at.to_date)
@@ -91,13 +91,13 @@ feature 'Debates' do
click_button "Start a debate"
expect(page).to_not have_content "Debate was successfully created."
expect(page).to_not have_content "Debate created successfully."
expect(page).to have_content "1 error"
fill_in 'debate_captcha', with: correct_captcha_text
click_button "Start a debate"
expect(page).to have_content "Debate was successfully created."
expect(page).to have_content "Debate created successfully."
end
scenario 'Failed creation goes back to new showing featured tags' do
@@ -113,7 +113,7 @@ feature 'Debates' do
click_button "Start a debate"
expect(page).to_not have_content "Debate was successfully created."
expect(page).to_not have_content "Debate created successfully."
expect(page).to have_content "error"
within(".tags") do
expect(page).to have_content featured_tag.name
@@ -142,7 +142,7 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'Testing an attack'
expect(page.html).to include '<p>This is alert("an attack");</p>'
expect(page.html).to_not include '<script>alert("an attack");</script>'
@@ -161,7 +161,7 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'Testing auto link'
expect(page).to have_link('www.example.org', href: 'http://www.example.org')
end
@@ -178,13 +178,13 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'Testing auto link'
expect(page).to have_link('http://example.org', href: 'http://example.org')
expect(page).not_to have_link('click me')
expect(page.html).to_not include "<script>alert('hey')</script>"
click_link 'Edit debate'
click_link 'Edit'
expect(current_path).to eq edit_debate_path(Debate.last)
expect(page).not_to have_link('click me')
@@ -216,7 +216,7 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
['Medio Ambiente', 'Ciencia'].each do |tag_name|
expect(page).to have_content tag_name
end
@@ -234,7 +234,7 @@ feature 'Debates' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'user_id1'
expect(page).to have_content 'a3'
expect(page).to have_content 'scriptalert("hey");script'
@@ -250,7 +250,7 @@ feature 'Debates' do
visit edit_debate_path(debate)
expect(current_path).not_to eq(edit_debate_path(debate))
expect(current_path).to eq(proposals_path)
expect(page).to have_content 'not authorized'
expect(page).to have_content "You do not have permission to carry out the action 'edit' on debate."
end
scenario 'Update should not be posible if debate is not editable' do
@@ -265,7 +265,7 @@ feature 'Debates' do
expect(current_path).not_to eq(edit_debate_path(debate))
expect(current_path).to eq(proposals_path)
expect(page).to have_content 'not authorized'
expect(page).to have_content 'You do not have permission to'
end
scenario 'Update should be posible for the author of an editable debate' do
@@ -281,7 +281,7 @@ feature 'Debates' do
click_button "Save changes"
expect(page).to have_content "Debate was successfully updated."
expect(page).to have_content "Debate updated successfully."
expect(page).to have_content "End child poverty"
expect(page).to have_content "Let's do something to end child poverty"
end
@@ -308,13 +308,13 @@ feature 'Debates' do
fill_in 'debate_captcha', with: "wrong!"
click_button "Save changes"
expect(page).to_not have_content "Debate was successfully updated."
expect(page).to_not have_content "Debate updated successfully."
expect(page).to have_content "error"
fill_in 'debate_captcha', with: correct_captcha_text
click_button "Save changes"
expect(page).to have_content "Debate was successfully updated."
expect(page).to have_content "Debate updated successfully."
end
scenario 'Failed update goes back to edit showing featured tags' do
@@ -330,7 +330,7 @@ feature 'Debates' do
fill_in 'debate_captcha', with: correct_captcha_text
click_button "Save changes"
expect(page).to_not have_content "Debate was successfully updated."
expect(page).to_not have_content "Debate updated successfully."
expect(page).to have_content "error"
within(".tags") do
expect(page).to have_content featured_tag.name
@@ -419,7 +419,7 @@ feature 'Debates' do
create(:debate, title: 'Medium').update_column(:confidence_score, 5)
visit debates_path
select 'best rated', from: 'order-selector'
select 'highest rated', from: 'order-selector'
expect(page).to have_selector('.js-order-selector[data-order="confidence_score"]')
@@ -504,10 +504,12 @@ feature 'Debates' do
within("#debates") do
expect(page).to have_css('.debate', count: 4)
expect(page).to have_content(debate2.title)
expect(page).to have_content(debate4.title)
expect(page).to have_content(debate5.title)
expect(page).to have_content(debate6.title)
expect(page).to_not have_content(debate1.title)
expect(page).to_not have_content(debate3.title)
end
@@ -518,10 +520,10 @@ feature 'Debates' do
conflictive_debate = create(:debate, :conflictive)
visit debate_path(conflictive_debate)
expect(page).to have_content "This debate has been flag as innapropiate for some users."
expect(page).to have_content "This debate has been flagged as inappropriate by several users."
visit debate_path(good_debate)
expect(page).to_not have_content "This debate has been flag as innapropiate for some users."
expect(page).to_not have_content "This debate has been flagged as inappropriate by several users."
end
scenario 'Erased author' do
@@ -530,9 +532,9 @@ feature 'Debates' do
user.erase
visit debates_path
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
visit debate_path(debate)
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
end
end

View File

@@ -19,7 +19,7 @@ feature 'Emails' do
reset_password
email = open_last_email
expect(email).to have_subject('Reset password instructions')
expect(email).to have_subject('Instructions for resetting your password')
expect(email).to deliver_to('manuela@madrid.es')
expect(email).to have_body_text(edit_user_password_path)
end
@@ -31,7 +31,7 @@ feature 'Emails' do
comment_on(proposal)
email = open_last_email
expect(email).to have_subject('Someone has commented on your proposal')
expect(email).to have_subject('Someone has commented on your citizen proposal')
expect(email).to deliver_to(proposal.author)
expect(email).to have_body_text(proposal_path(proposal))
end
@@ -88,7 +88,7 @@ feature 'Emails' do
reply_to(user)
email = open_last_email
expect(email).to have_subject('Someone has replied to your comment')
expect(email).to have_subject('Someone has responded to your comment')
expect(email).to deliver_to(user)
expect(email).to have_body_text(debate_path(Comment.first.commentable))
end

View File

@@ -27,7 +27,7 @@ feature "Highlights" do
visit highlights_path
expect(page).to have_link("Start a proposal")
expect(page).to have_link("Create a proposal")
expect(page).to have_link("Start a debate")
end

View File

@@ -6,7 +6,7 @@ feature "Home" do
scenario 'Welcome message' do
visit root_path
expect(page).to have_content "we open this digital Puerta del Sol"
expect(page).to have_content "Love the city, and it will become a city you love"
end
end

View File

@@ -25,10 +25,10 @@ feature 'EmailVerifications' do
sent_token = /.*email_verification_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit email_path(email_verification_token: sent_token)
expect(page).to have_content "You are now a verified user"
expect(page).to have_content "You are a verified user"
expect(page).to_not have_link "Verify my account"
expect(page).to have_content "Verified account"
expect(page).to have_content "Account verified"
expect(user.reload.document_number).to eq('1234')
expect(user).to be_level_three_verified

View File

@@ -30,9 +30,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'Help refugees'
expect(page).to have_content '¿Would you like to give assistance to war refugees?'
@@ -120,7 +120,7 @@ feature 'Proposals' do
find('.in-favor a').click
expect(page).to have_content "1 support"
expect(page).to have_content "You already supported this proposal"
expect(page).to have_content "You have already supported this proposal. Share it!"
end
expect(current_path).to eq(management_proposals_path)
end
@@ -139,7 +139,7 @@ feature 'Proposals' do
find('.in-favor a').click
expect(page).to have_content "1 support"
expect(page).to have_content "You already supported this proposal"
expect(page).to have_content "You have already supported this proposal. Share it!"
expect(current_path).to eq(management_proposal_path(proposal))
end

View File

@@ -39,7 +39,7 @@ feature 'users' do
expect(user.reload).to be_confirmed
expect(page).to have_content "Your email address has been successfully confirmed."
expect(page).to have_content "Your account has been confirmed."
end
end

View File

@@ -75,7 +75,7 @@ feature 'Moderate comments' do
end
scenario 'Ignore the comment' do
click_on "Ignore flags"
click_on "Mark as viewed"
expect(page).to_not have_css("comment_#{@comment.id}")
expect(@comment.reload).to be_ignored_flag
expect(@comment.reload).to_not be_hidden
@@ -106,7 +106,7 @@ feature 'Moderate comments' do
visit moderation_comments_path(filter: 'all', page: '2', order: 'created_at')
click_on "Ignore flags"
click_on "Mark as viewed"
expect(page).to have_selector('.js-order-selector[data-order="created_at"]')
@@ -120,27 +120,27 @@ feature 'Moderate comments' do
visit moderation_comments_path
expect(page).to_not have_link('Pending')
expect(page).to have_link('All')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
visit moderation_comments_path(filter: 'all')
within('.sub-nav') do
expect(page).to_not have_link('All')
expect(page).to have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
end
visit moderation_comments_path(filter: 'pending_flag_review')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to_not have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
end
visit moderation_comments_path(filter: 'with_ignored_flag')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to have_link('Pending')
expect(page).to_not have_link('Ignored')
expect(page).to_not have_link('Marked as viewed')
end
end

View File

@@ -74,7 +74,7 @@ feature 'Moderate debates' do
end
scenario 'Ignore the debate' do
click_on "Ignore flags"
click_on "Mark as viewed"
expect(page).to_not have_css("debate_#{@debate.id}")
expect(@debate.reload).to be_ignored_flag
expect(@debate.reload).to_not be_hidden
@@ -105,7 +105,7 @@ feature 'Moderate debates' do
visit moderation_debates_path(filter: 'all', page: '2', order: 'created_at')
click_on "Ignore flags"
click_on "Mark as viewed"
expect(page).to have_selector('.js-order-selector[data-order="created_at"]')
@@ -119,27 +119,27 @@ feature 'Moderate debates' do
visit moderation_debates_path
expect(page).to_not have_link('Pending')
expect(page).to have_link('All')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
visit moderation_debates_path(filter: 'all')
within('.sub-nav') do
expect(page).to_not have_link('All')
expect(page).to have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
end
visit moderation_debates_path(filter: 'pending_flag_review')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to_not have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Marked as viewed')
end
visit moderation_debates_path(filter: 'with_ignored_flag')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to have_link('Pending')
expect(page).to_not have_link('Ignored')
expect(page).to_not have_link('Marked as viewed')
end
end

View File

@@ -74,7 +74,7 @@ feature 'Moderate proposals' do
end
scenario 'Ignore the proposal' do
click_on "Ignore flags"
click_button "Mark as viewed"
expect(page).to_not have_css("proposal_#{@proposal.id}")
expect(@proposal.reload).to be_ignored_flag
expect(@proposal.reload).to_not be_hidden
@@ -105,7 +105,7 @@ feature 'Moderate proposals' do
visit moderation_proposals_path(filter: 'all', page: '2', order: 'created_at')
click_on "Ignore flags"
click_button "Mark as viewed"
expect(page).to have_selector('.js-order-selector[data-order="created_at"]')
@@ -119,27 +119,27 @@ feature 'Moderate proposals' do
visit moderation_proposals_path
expect(page).to_not have_link('Pending')
expect(page).to have_link('All')
expect(page).to have_link('Ignored')
expect(page).to have_link('Mark as viewed')
visit moderation_proposals_path(filter: 'all')
within('.sub-nav') do
expect(page).to_not have_link('All')
expect(page).to have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Pending review')
expect(page).to have_link('Mark as viewed')
end
visit moderation_proposals_path(filter: 'pending_flag_review')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to_not have_link('Pending')
expect(page).to have_link('Ignored')
expect(page).to have_link('Mark as viewed')
end
visit moderation_proposals_path(filter: 'with_ignored_flag')
within('.sub-nav') do
expect(page).to have_link('All')
expect(page).to have_link('Pending')
expect(page).to_not have_link('Ignored')
expect(page).to have_link('Pending review')
expect(page).to_not have_link('Marked as viewed')
end
end

View File

@@ -25,7 +25,7 @@ feature 'Moderate users' do
visit debate_path(debate1)
within("#debate_#{debate1.id}") do
click_link 'Ban author'
click_link 'Hide author'
end
expect(current_path).to eq(debates_path)
@@ -37,12 +37,12 @@ feature 'Moderate users' do
expect(page).to_not have_content(comment3.body)
click_link("Logout")
click_link("Sign out")
click_link 'Log in'
click_link 'Sign in'
fill_in 'user_email', with: citizen.email
fill_in 'user_password', with: citizen.password
click_button 'Log in'
click_button 'Enter'
expect(page).to have_content 'Invalid email or password'
expect(current_path).to eq(new_user_session_path)
@@ -62,13 +62,13 @@ feature 'Moderate users' do
within(".admin-list") do
expect(page).to have_content citizen.name
expect(page).not_to have_content "Banned"
click_link 'Ban'
expect(page).not_to have_content "Blocked"
click_link 'Block'
end
within(".admin-list") do
expect(page).to have_content citizen.name
expect(page).to have_content "Banned"
expect(page).to have_content "Blocked"
end
end

View File

@@ -12,7 +12,7 @@ feature 'Admin' do
expect(current_path).not_to eq(moderation_root_path)
expect(current_path).to eq(proposals_path)
expect(page).to have_content "not authorized"
expect(page).to have_content "You do not have permission to access this page"
end
scenario 'Access as a moderator is authorized' do
@@ -25,7 +25,7 @@ feature 'Admin' do
click_on "Moderation"
expect(current_path).to eq(moderation_root_path)
expect(page).to_not have_content "not authorized"
expect(page).to_not have_content "You do not have permission to access this page"
end
scenario 'Access as an administrator is authorized' do
@@ -38,7 +38,7 @@ feature 'Admin' do
click_on "Moderation"
expect(current_path).to eq(moderation_root_path)
expect(page).to_not have_content "not authorized"
expect(page).to_not have_content "You do not have permission to access this page"
end
end

View File

@@ -16,7 +16,7 @@ feature 'Organizations' do
fill_in 'user_captcha', with: correct_captcha_text
check 'user_terms_of_service'
click_button 'Sign up'
click_button 'Register'
user = User.organizations.where(email: 'green@peace.com').first
expect(user).to be
@@ -27,7 +27,7 @@ feature 'Organizations' do
scenario 'Errors on create' do
visit new_organization_registration_path
click_button 'Sign up'
click_button 'Register'
expect(page).to have_content error_message
end

View File

@@ -87,9 +87,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'Help refugees'
expect(page).to have_content '¿Would you like to give assistance to war refugees?'
expect(page).to have_content 'In summary, what we want is...'
@@ -115,9 +115,9 @@ feature 'Proposals' do
fill_in 'proposal_responsible_name', with: 'Isabel Garcia'
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(Proposal.last.responsible_name).to eq('Isabel Garcia')
end
@@ -136,9 +136,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
end
scenario 'Captcha is required for proposal creation' do
@@ -154,15 +154,15 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: "wrongText!"
check 'proposal_terms_of_service'
click_button "Start a proposal"
click_button "Create proposal"
expect(page).to_not have_content "Proposal was successfully created."
expect(page).to_not have_content "Proposal created successfully."
expect(page).to have_content "1 error"
fill_in 'proposal_captcha', with: correct_captcha_text
click_button "Start a proposal"
click_button "Create proposal"
expect(page).to have_content "Proposal was successfully created."
expect(page).to have_content "Proposal created successfully."
end
scenario 'Failed creation goes back to new showing featured tags' do
@@ -180,9 +180,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button "Start a proposal"
click_button "Create proposal"
expect(page).to_not have_content "Proposal was successfully created."
expect(page).to_not have_content "Proposal created successfully."
expect(page).to have_content "error"
within(".tags") do
expect(page).to have_content featured_tag.name
@@ -195,7 +195,7 @@ feature 'Proposals' do
login_as(author)
visit new_proposal_path
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content error_message
end
@@ -213,9 +213,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'Testing an attack'
expect(page.html).to include '<p>This is alert("an attack");</p>'
expect(page.html).to_not include '<script>alert("an attack");</script>'
@@ -235,9 +235,9 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'Testing auto link'
expect(page).to have_link('www.example.org', href: 'http://www.example.org')
end
@@ -255,15 +255,15 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
check 'proposal_terms_of_service'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'Testing auto link'
expect(page).to have_link('http://example.org', href: 'http://example.org')
expect(page).not_to have_link('click me')
expect(page.html).to_not include "<script>alert('hey')</script>"
click_link 'Edit proposal'
click_link 'Edit'
expect(current_path).to eq edit_proposal_path(Proposal.last)
expect(page).not_to have_link('click me')
@@ -297,9 +297,9 @@ feature 'Proposals' do
find('.js-add-tag-link', text: tag_name).click
end
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
['Medio Ambiente', 'Ciencia'].each do |tag_name|
expect(page).to have_content tag_name
end
@@ -319,9 +319,9 @@ feature 'Proposals' do
fill_in 'proposal_tag_list', with: 'user_id=1, &a=3, <script>alert("hey");</script>'
click_button 'Start a proposal'
click_button 'Create proposal'
expect(page).to have_content 'Proposal was successfully created.'
expect(page).to have_content 'Proposal created successfully.'
expect(page).to have_content 'user_id1'
expect(page).to have_content 'a3'
expect(page).to have_content 'scriptalert("hey");script'
@@ -337,7 +337,7 @@ feature 'Proposals' do
visit edit_proposal_path(proposal)
expect(current_path).not_to eq(edit_proposal_path(proposal))
expect(current_path).to eq(proposals_path)
expect(page).to have_content 'not authorized'
expect(page).to have_content 'You do not have permission'
end
scenario 'Update should not be posible if proposal is not editable' do
@@ -352,7 +352,7 @@ feature 'Proposals' do
expect(current_path).not_to eq(edit_proposal_path(proposal))
expect(current_path).to eq(proposals_path)
expect(page).to have_content 'not authorized'
expect(page).to have_content 'You do not have permission'
end
scenario 'Update should be posible for the author of an editable proposal' do
@@ -372,7 +372,7 @@ feature 'Proposals' do
click_button "Save changes"
expect(page).to have_content "Proposal was successfully updated."
expect(page).to have_content "Proposal updated successfully."
expect(page).to have_content "Basically..."
expect(page).to have_content "End child poverty"
expect(page).to have_content "Let's do something to end child poverty"
@@ -400,13 +400,13 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: "wrong!"
click_button "Save changes"
expect(page).to_not have_content "Proposal was successfully updated."
expect(page).to_not have_content "Proposal updated successfully."
expect(page).to have_content "error"
fill_in 'proposal_captcha', with: correct_captcha_text
click_button "Save changes"
expect(page).to have_content "Proposal was successfully updated."
expect(page).to have_content "Proposal updated successfully."
end
scenario 'Failed update goes back to edit showing featured tags' do
@@ -422,7 +422,7 @@ feature 'Proposals' do
fill_in 'proposal_captcha', with: correct_captcha_text
click_button "Save changes"
expect(page).to_not have_content "Proposal was successfully updated."
expect(page).to_not have_content "Proposal updated successfully."
expect(page).to have_content "error"
within(".tags") do
expect(page).to have_content featured_tag.name
@@ -482,7 +482,7 @@ feature 'Proposals' do
create(:proposal, title: 'Medium proposal').update_column(:confidence_score, 5)
visit proposals_path
select 'most supported', from: 'order-selector'
select 'highest rated', from: 'order-selector'
expect(page).to have_selector('.js-order-selector[data-order="confidence_score"]')
@@ -559,7 +559,7 @@ feature 'Proposals' do
end
end
scenario 'proposal index search' do
scenario 'Proposal index search' do
proposal1 = create(:proposal, title: "Show me what you got")
proposal2 = create(:proposal, title: "Get Schwifty")
proposal3 = create(:proposal)
@@ -574,23 +574,47 @@ feature 'Proposals' do
within("#proposals") do
expect(page).to have_css('.proposal', count: 3)
expect(page).to have_content(proposal2.title)
expect(page).to have_content(proposal4.title)
expect(page).to have_content(proposal5.title)
expect(page).to_not have_content(proposal1.title)
expect(page).to_not have_content(proposal3.title)
end
end
scenario 'Index search does not show featured proposals' do
featured_proposals = create_featured_proposals
proposal = create(:proposal, title: "Abcdefghi")
visit proposals_path
fill_in "search", with: proposal.title
click_button "Search"
expect(page).to_not have_selector('#proposals .proposal-featured')
expect(page).to_not have_selector('#featured-proposals')
end
scenario 'Tag index tag does not show featured proposals' do
featured_proposals = create_featured_proposals
proposal = create(:proposal, tag_list: "123")
visit proposals_path(tag: "123")
expect(page).to_not have_selector('#proposals .proposal-featured')
expect(page).to_not have_selector('#featured-proposals')
end
scenario 'Conflictive' do
good_proposal = create(:proposal)
conflictive_proposal = create(:proposal, :conflictive)
visit proposal_path(conflictive_proposal)
expect(page).to have_content "This proposal has been flag as innapropiate for some users."
expect(page).to have_content "This proposal has been flagged as inappropriate by several users."
visit proposal_path(good_proposal)
expect(page).to_not have_content "This proposal has been flag as innapropiate for some users."
expect(page).to_not have_content "This proposal has been flagged as inappropriate by several users."
end
scenario "Flagging", :js do
@@ -634,14 +658,14 @@ feature 'Proposals' do
user.erase
visit proposals_path
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
visit proposal_path(proposal)
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
create_featured_proposals
visit proposals_path
expect(page).to have_content('Deleted user')
expect(page).to have_content('User deleted')
end
end

View File

@@ -84,7 +84,7 @@ feature 'Tags' do
click_button 'Start a debate'
expect(page).to have_content 'Debate was successfully created.'
expect(page).to have_content 'Debate created successfully.'
expect(page).to have_content 'Economía'
expect(page).to have_content 'Hacienda'
expect(page).to have_content 'Impuestos'
@@ -104,7 +104,7 @@ feature 'Tags' do
click_button 'Start a debate'
expect(page).to have_content '1 error prohibited this debate from being saved:'
expect(page).to have_content error_message
expect(page).to have_content 'tags must be less than or equal to 6'
end
@@ -120,7 +120,7 @@ feature 'Tags' do
fill_in 'debate_captcha', with: correct_captcha_text
click_button 'Save changes'
expect(page).to have_content 'Debate was successfully updated.'
expect(page).to have_content 'Debate updated successfully.'
within('.tags') do
expect(page).to have_css('a', text: 'Economía')
expect(page).to have_css('a', text: 'Hacienda')
@@ -137,7 +137,7 @@ feature 'Tags' do
fill_in 'debate_captcha', with: correct_captcha_text
click_button 'Save changes'
expect(page).to have_content 'Debate was successfully updated.'
expect(page).to have_content 'Debate updated successfully.'
expect(page).to_not have_content 'Economía'
end

View File

@@ -5,7 +5,7 @@ feature 'Users' do
context 'Regular authentication' do
scenario 'Sign up' do
visit '/'
click_link 'Sign up'
click_link 'Register'
fill_in 'user_username', with: 'Manuela Carmena'
fill_in 'user_email', with: 'manuela@madrid.es'
@@ -14,20 +14,20 @@ feature 'Users' do
fill_in 'user_captcha', with: correct_captcha_text
check 'user_terms_of_service'
click_button 'Sign up'
click_button 'Register'
expect(page).to have_content "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
expect(page).to have_content "You have been sent a message containing a verification link. Please click on this link to activate your account."
sent_token = /.*confirmation_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit user_confirmation_path(confirmation_token: sent_token)
expect(page).to have_content "Your email address has been successfully confirmed"
expect(page).to have_content "Your account has been confirmed."
end
scenario 'Errors on sign up' do
visit '/'
click_link 'Sign up'
click_button 'Sign up'
click_link 'Register'
click_button 'Register'
expect(page).to have_content error_message
end
@@ -36,12 +36,12 @@ feature 'Users' do
create(:user, email: 'manuela@madrid.es', password: 'judgementday')
visit '/'
click_link 'Log in'
click_link 'Sign in'
fill_in 'user_email', with: 'manuela@madrid.es'
fill_in 'user_password', with: 'judgementday'
click_button 'Log in'
click_button 'Enter'
expect(page).to have_content 'Signed in successfully.'
expect(page).to have_content 'You have been signed in successfully.'
end
end
@@ -70,7 +70,7 @@ feature 'Users' do
OmniAuth.config.add_mock(:twitter, omniauth_twitter_hash)
visit '/'
click_link 'Sign up'
click_link 'Register'
expect do
expect do
@@ -105,7 +105,7 @@ feature 'Users' do
OmniAuth.config.add_mock(:twitter, omniauth_twitter_hash)
visit '/'
click_link 'Sign up'
click_link 'Register'
expect do
expect do
@@ -122,7 +122,7 @@ feature 'Users' do
expect(user.email).to eq("omniauth@participacion-12345-twitter.com")
fill_in 'user_email', with: 'manueladelascarmenas@example.com'
click_button 'Sign up'
click_button 'Register'
sent_token = /.*confirmation_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit user_confirmation_path(confirmation_token: sent_token)
@@ -145,7 +145,7 @@ feature 'Users' do
OmniAuth.config.add_mock(:twitter, omniauth_twitter_hash)
visit '/'
click_link 'Log in'
click_link 'Sign in'
expect do
expect do
@@ -163,22 +163,22 @@ feature 'Users' do
login_as(user)
visit "/"
click_link 'Logout'
click_link 'Sign out'
expect(page).to have_content 'Signed out successfully.'
expect(page).to have_content 'You have been signed out successfully.'
end
scenario 'Reset password' do
create(:user, email: 'manuela@madrid.es')
visit '/'
click_link 'Log in'
click_link 'Forgot your password?'
click_link 'Sign in'
click_link 'Forgotten your password?'
fill_in 'user_email', with: 'manuela@madrid.es'
click_button 'Send me reset password'
click_button 'Send instructions'
expect(page).to have_content "You will receive an email with instructions on how to reset your password in a few minutes."
expect(page).to have_content "In a few minutes, you will receive an email containing instructions on resetting your password."
sent_token = /.*reset_password_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit edit_user_password_path(reset_password_token: sent_token)
@@ -187,6 +187,6 @@ feature 'Users' do
fill_in 'user_password_confirmation', with: 'new password'
click_button 'Change my password'
expect(page).to have_content "Your password has been changed successfully. You are now signed in."
expect(page).to have_content "Your password has been changed successfully."
end
end

View File

@@ -22,15 +22,15 @@ feature 'Verify email' do
click_button "Send code"
end
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
expect(page).to have_content 'We have sent a confirmation email to your account: rock@example.com'
sent_token = /.*email_verification_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit email_path(email_verification_token: sent_token)
expect(page).to have_content "You are now a verified user"
expect(page).to have_content "You are a verified user"
expect(page).to_not have_link "Verify my account"
expect(page).to have_content "Verified account"
expect(page).to have_content "Account verified"
end
scenario "Errors on token verification" do
@@ -39,7 +39,7 @@ feature 'Verify email' do
login_as(user)
visit email_path(email_verification_token: "1234")
expect(page).to have_content "Incorrect verification code"
expect(page).to have_content "Verification code incorrect"
end
scenario "Errors on sending confirmation email" do
@@ -60,6 +60,6 @@ feature 'Verify email' do
verified_user.destroy
click_button "Send code"
expect(page).to have_content "There was a problem sending you an email to your account"
expect(page).to have_content "There was a problem with sending an email to your account"
end
end

View File

@@ -9,9 +9,9 @@ feature 'Verify Letter' do
login_as(user)
visit new_letter_path
click_link "Request a letter"
click_link "Send me a letter with the code"
expect(page).to have_content "Before voting you'll receive a letter whith the instructions for verify your account."
expect(page).to have_content "Thank you for requesting your maximum security code (only required for the final votes). In a few days we will send it to the address featuring in the data we have on file."
user.reload
@@ -26,7 +26,7 @@ feature 'Verify Letter' do
login_as(user)
visit new_letter_path
expect(page).to have_link "Office of Citizen", href: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
expect(page).to have_link "Citizen Support Offices", href: "http://www.madrid.es/portales/munimadrid/es/Inicio/El-Ayuntamiento/Atencion-al-ciudadano/Oficinas-de-Atencion-al-Ciudadano?vgnextfmt=default&vgnextchannel=5b99cde2e09a4310VgnVCM1000000b205a0aRCRD"
end
scenario "Deny access unless verified residence" do
@@ -35,7 +35,7 @@ feature 'Verify Letter' do
login_as(user)
visit new_letter_path
expect(page).to have_content 'You have not yet confirmed your residence'
expect(page).to have_content 'You have not yet confirmed your residency'
expect(current_path).to eq(new_residence_path)
end
@@ -45,7 +45,7 @@ feature 'Verify Letter' do
login_as(user)
visit new_letter_path
expect(page).to have_content 'You have not yet enter the confirmation code'
expect(page).to have_content 'You have not yet entered the confirmation code'
expect(current_path).to eq(new_sms_path)
end
@@ -64,7 +64,7 @@ feature 'Verify Letter' do
fill_in "verification_letter_verification_code", with: user.letter_verification_code
click_button "Verify my account"
expect(page).to have_content "Your account has been verified"
expect(page).to have_content "Code correct. Your account is now verified"
expect(current_path).to eq(account_path)
end
@@ -81,7 +81,7 @@ feature 'Verify Letter' do
fill_in "verification_letter_verification_code", with: "12345"
click_button "Verify my account"
expect(page).to have_content "Your account has been verified"
expect(page).to have_content "Account verified"
expect(current_path).to eq(account_path)
end
@@ -97,7 +97,7 @@ feature 'Verify Letter' do
fill_in "verification_letter_verification_code", with: user.letter_verification_code
click_button "Verify my account"
expect(page).to have_content "Your account has been verified"
expect(page).to have_content "Code correct. Your account is now verified"
expect(current_path).to eq(account_path)
end
@@ -135,7 +135,7 @@ feature 'Verify Letter' do
click_button "Verify my account"
end
expect(page).to have_content "You have reached the maximum number of verification tries. Please try again later."
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(current_path).to eq(account_path)
end

View File

@@ -20,16 +20,16 @@ feature 'Level three verification' do
click_button "Send code"
end
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Security code confirmation'
user = user.reload
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
click_button 'Send'
expect(page).to have_content "Correct code. Your account is verified"
expect(page).to have_content "Code correct. Your account is now verified"
expect(page).to_not have_link "Verify my account"
expect(page).to have_content "Verified account"
expect(page).to have_content "Account verified"
end
scenario 'Verification with residency and verified email' do
@@ -51,15 +51,15 @@ feature 'Level three verification' do
click_button "Send code"
end
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
expect(page).to have_content 'We have sent a confirmation email to your account: rock@example.com'
sent_token = /.*email_verification_token=(.*)".*/.match(ActionMailer::Base.deliveries.last.body.to_s)[1]
visit email_path(email_verification_token: sent_token)
expect(page).to have_content "You are now a verified user"
expect(page).to have_content "You are a verified user"
expect(page).to_not have_link "Verify my account"
expect(page).to have_content "Verified account"
expect(page).to have_content "Account verified"
end
scenario 'Verification with residency and sms and letter' do
@@ -75,16 +75,16 @@ feature 'Level three verification' do
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Security code confirmation'
user = user.reload
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
click_button 'Send'
expect(page).to have_content 'Correct code'
expect(page).to have_content 'Code correct'
click_link "Request a letter"
click_link "Send me a letter with the code"
expect(page).to have_content "Before voting you'll receive a letter whith the instructions for verify your account."
expect(page).to have_content "Thank you for requesting your maximum security code (only required for the final votes). In a few days we will send it to the address featuring in the data we have on file."
end
end

View File

@@ -14,13 +14,13 @@ feature 'Level two verification' do
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Security code confirmation'
user = user.reload
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
click_button 'Send'
expect(page).to have_content 'Correct code'
expect(page).to have_content 'Code correct'
end
end

View File

@@ -10,7 +10,7 @@ feature 'Residence' do
click_link 'Verify my account'
fill_in 'residence_document_number', with: "12345678Z"
select 'Spanish ID', from: 'residence_document_type'
select 'DNI', from: 'residence_document_type'
select_date '31-December-1980', from: 'residence_date_of_birth'
fill_in 'residence_postal_code', with: '28013'
check 'residence_terms_of_service'
@@ -29,7 +29,7 @@ feature 'Residence' do
click_button 'Verify residence'
expect(page).to have_content /\d errors? prevented your residence verification/
expect(page).to have_content /\d errors? prevented the verification of your residence/
end
scenario 'Error on postal code not in Madrid census' do
@@ -40,7 +40,7 @@ feature 'Residence' do
click_link 'Verify my account'
fill_in 'residence_document_number', with: "12345678Z"
select 'Spanish ID', from: 'residence_document_type'
select 'DNI', from: 'residence_document_type'
select '1997', from: 'residence_date_of_birth_1i'
select 'January', from: 'residence_date_of_birth_2i'
select '1', from: 'residence_date_of_birth_3i'
@@ -49,7 +49,7 @@ feature 'Residence' do
click_button 'Verify residence'
expect(page).to have_content 'To verify your account you need to be in the census of the Madrid town.'
expect(page).to have_content 'In order to be verified, you must be registered in the municipality of Madrid'
end
scenario 'Error on Madrid census' do
@@ -60,7 +60,7 @@ feature 'Residence' do
click_link 'Verify my account'
fill_in 'residence_document_number', with: "12345678Z"
select 'Spanish ID', from: 'residence_document_type'
select 'DNI', from: 'residence_document_type'
select '1997', from: 'residence_date_of_birth_1i'
select 'January', from: 'residence_date_of_birth_2i'
select '1', from: 'residence_date_of_birth_3i'
@@ -69,7 +69,7 @@ feature 'Residence' do
click_button 'Verify residence'
expect(page).to have_content 'The census of the city of Madrid could not verify your information'
expect(page).to have_content 'The Madrid Census was unable to verify your information'
end
scenario '5 tries allowed' do
@@ -81,7 +81,7 @@ feature 'Residence' do
5.times do
fill_in 'residence_document_number', with: "12345678Z"
select 'Spanish ID', from: 'residence_document_type'
select 'DNI', from: 'residence_document_type'
select '1997', from: 'residence_date_of_birth_1i'
select 'January', from: 'residence_date_of_birth_2i'
select '1', from: 'residence_date_of_birth_3i'
@@ -89,15 +89,15 @@ feature 'Residence' do
check 'residence_terms_of_service'
click_button 'Verify residence'
expect(page).to have_content 'The census of the city of Madrid could not verify your information'
expect(page).to have_content 'The Madrid Census was unable to verify your information'
end
click_button 'Verify residence'
expect(page).to have_content "You have reached the maximum number of verification tries. Please try again later."
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(current_path).to eq(account_path)
visit new_residence_path
expect(page).to have_content "You have reached the maximum number of verification tries. Please try again later."
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(current_path).to eq(account_path)
end
end

View File

@@ -11,13 +11,13 @@ feature 'SMS Verification' do
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Security code confirmation'
user = user.reload
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
click_button 'Send'
expect(page).to have_content 'Correct code'
expect(page).to have_content 'Code correct'
end
scenario 'Errors on phone number' do
@@ -40,7 +40,7 @@ feature 'SMS Verification' do
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Security code confirmation'
click_button 'Send'
@@ -53,7 +53,7 @@ feature 'SMS Verification' do
visit new_sms_path
expect(page).to have_content 'You have not yet confirmed your residence'
expect(page).to have_content 'You have not yet confirmed your residency'
expect(current_path).to eq(new_residence_path)
end
@@ -66,14 +66,14 @@ feature 'SMS Verification' do
5.times do
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
click_link 'Request a new code'
click_link 'Click here to send it again'
end
expect(page).to have_content "You have reached the maximum number of verification tries. Please try again later."
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(current_path).to eq(account_path)
visit new_sms_path
expect(page).to have_content "You have reached the maximum number of verification tries. Please try again later."
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(current_path).to eq(account_path)
end

View File

@@ -19,7 +19,7 @@ feature 'Verification path' do
visit verification_path
expect(current_path).to eq account_path
expect(page).to have_content 'You are a verified user!'
expect(page).to have_content 'Your account is already verified'
end
scenario "User requested a letter" do
@@ -95,7 +95,7 @@ feature 'Verification path' do
visit step_path
expect(current_path).to eq account_path
expect(page).to have_content 'You are a verified user!'
expect(page).to have_content 'Your account is already verified'
end
end
end

View File

@@ -86,7 +86,7 @@ feature 'Verified users' do
click_button "Send code"
end
expect(page).to have_content 'We have send you a confirmation email to your email account: rock@example.com'
expect(page).to have_content 'We have sent a confirmation email to your account: rock@example.com'
expect(current_path).to eq(account_path)
end
@@ -121,7 +121,7 @@ feature 'Verified users' do
login_as(user)
visit verified_user_path
click_link "Use another phone"
click_link "Use other phone"
expect(current_path).to eq(new_sms_path)
end

View File

@@ -177,8 +177,6 @@ feature 'Votes' do
expect(current_path).to eq(debates_path)
end
end
end
feature 'Proposals' do
@@ -194,15 +192,15 @@ feature 'Votes' do
within("#proposals") do
within("#proposal_#{proposal1.id}_votes") do
expect(page).to have_content "You already supported this proposal, share it!"
expect(page).to have_content "You have already supported this proposal. Share it!"
end
within("#proposal_#{proposal2.id}_votes") do
expect(page).to_not have_content "You already supported this proposal, share it!"
expect(page).to_not have_content "You have already supported this proposal. Share it!"
end
within("#proposal_#{proposal3.id}_votes") do
expect(page).to_not have_content "You already supported this proposal, share it!"
expect(page).to_not have_content "You have already supported this proposal. Share it!"
end
end
end
@@ -246,7 +244,7 @@ feature 'Votes' do
find('.in-favor a').click
expect(page).to have_content "1 support"
expect(page).to have_content "You already supported this proposal, share it!"
expect(page).to have_content "You have already supported this proposal. Share it!"
end
end
@@ -258,7 +256,7 @@ feature 'Votes' do
find('.in-favor a').click
expect(page).to have_content "1 support"
expect(page).to have_content "You already supported this proposal, share it!"
expect(page).to have_content "You have already supported this proposal. Share it!"
end
expect(current_path).to eq(proposals_path)
end
@@ -269,7 +267,7 @@ feature 'Votes' do
within("#proposal_#{@proposal.id}") do
find('.in-favor a').click
expect(page).to have_content "You already supported this proposal, share it!"
expect(page).to have_content "You have already supported this proposal. Share it!"
end
expect(current_path).to eq(proposals_path)
end
@@ -284,12 +282,6 @@ feature 'Votes' do
find("div.votes").hover
expect_message_you_need_to_sign_in
end
visit debate_path(debate)
within("#debate_#{debate.id}") do
find("div.votes").hover
expect_message_you_need_to_sign_in
end
end
scenario 'Not logged user trying to vote proposals', :js do

View File

@@ -21,9 +21,9 @@ feature "Welcome screen" do
fill_in 'user_email', with: user.email
fill_in 'user_password', with: user.password
click_button 'Log in'
click_button 'Enter'
expect(page).to have_content("You are now a verified user")
expect(page).to have_content("You are a verified user")
expect(current_path).to eq(account_path)
end

View File

@@ -4,7 +4,7 @@ describe UserHelper do
describe '#humanize_document_type' do
it "should return a humanized document type" do
expect(humanize_document_type("1")).to eq "Spanish ID"
expect(humanize_document_type("1")).to eq "DNI"
expect(humanize_document_type("2")).to eq "Passport"
expect(humanize_document_type("3")).to eq "Residence card"
end

View File

@@ -318,35 +318,6 @@ describe Debate do
end
describe "self.search" do
it "find debates by title" do
debate1 = create(:debate, title: "Karpov vs Kasparov")
create(:debate, title: "Bird vs Magic")
search = Debate.search("Kasparov")
expect(search.size).to eq(1)
expect(search.first).to eq(debate1)
end
it "find debates by description" do
debate1 = create(:debate, description: "...chess masters...")
create(:debate, description: "...basket masters...")
search = Debate.search("chess")
expect(search.size).to eq(1)
expect(search.first).to eq(debate1)
end
it "find debates by title and description" do
create(:debate, title: "Karpov vs Kasparov", description: "...played like Gauss...")
create(:debate, title: "Euler vs Gauss", description: "...math masters...")
search = Debate.search("Gauss")
expect(search.size).to eq(2)
end
it "returns no results if no search term provided" do
expect(Debate.search(" ").size).to eq(0)
end
end
describe "cache" do
let(:debate) { create(:debate) }
@@ -457,4 +428,169 @@ describe Debate do
end
describe "search" do
context "attributes" do
xit "searches by title" do
debate = create(:debate, title: 'save the world')
results = Debate.search('save the world')
expect(results).to eq([debate])
end
xit "searches by description" do
debate = create(:debate, description: 'in order to save the world one must think about...')
results = Debate.search('one must think')
expect(results).to eq([debate])
end
end
context "stemming" do
xit "searches word stems" do
debate = create(:debate, title: 'limpiar')
results = Debate.search('limpiará')
expect(results).to eq([debate])
results = Debate.search('limpiémos')
expect(results).to eq([debate])
results = Debate.search('limpió')
expect(results).to eq([debate])
end
end
context "accents" do
xit "searches with accents" do
debate = create(:debate, title: 'difusión')
results = Debate.search('difusion')
expect(results).to eq([debate])
debate2 = create(:debate, title: 'estadisticas')
results = Debate.search('estadísticas')
expect(results).to eq([debate2])
end
end
context "case" do
xit "searches case insensite" do
debate = create(:debate, title: 'SHOUT')
results = Debate.search('shout')
expect(results).to eq([debate])
debate2 = create(:debate, title: "scream")
results = Debate.search("SCREAM")
expect(results).to eq([debate2])
end
end
context "typos" do
xit "searches with typos" do
debate = create(:debate, title: 'difusión')
results = Debate.search('difuon')
expect(results).to eq([debate])
debate2 = create(:debate, title: 'desarrollo')
results = Debate.search('desarolo')
expect(results).to eq([debate2])
end
end
context "order" do
xit "orders by weight" do
debate_description = create(:debate, description: 'stop corruption')
debate_title = create(:debate, title: 'stop corruption')
results = Debate.search('stop corruption')
expect(results.first).to eq(debate_title)
expect(results.second).to eq(debate_description)
end
xit "orders by weight and then votes" do
title_some_votes = create(:debate, title: 'stop corruption', cached_votes_up: 5)
title_least_voted = create(:debate, title: 'stop corruption', cached_votes_up: 2)
title_most_voted = create(:debate, title: 'stop corruption', cached_votes_up: 10)
description_most_voted = create(:debate, description: 'stop corruption', cached_votes_up: 10)
results = Debate.search('stop corruption')
expect(results.first).to eq(title_most_voted)
expect(results.second).to eq(description_most_voted)
expect(results.third).to eq(title_some_votes)
expect(results.fourth).to eq(title_least_voted)
end
xit "orders by weight and then votes and then created_at" do
newest = create(:debate, title: 'stop corruption', cached_votes_up: 5, created_at: Time.now)
oldest = create(:debate, title: 'stop corruption', cached_votes_up: 5, created_at: 1.month.ago)
old = create(:debate, title: 'stop corruption', cached_votes_up: 5, created_at: 1.week.ago)
results = Debate.search('stop corruption')
expect(results.first).to eq(newest)
expect(results.second).to eq(old)
expect(results.third).to eq(oldest)
end
end
context "tags" do
xit "searches by tags" do
debate = create(:debate, tag_list: 'Latina')
results = Debate.search('Latina')
expect(results.first).to eq(debate)
end
end
context "no results" do
xit "no words match" do
debate = create(:debate, title: 'save world')
results = Debate.search('destroy planet')
expect(results).to eq([])
end
xit "too many typos" do
debate = create(:debate, title: 'fantastic')
results = Debate.search('frantac')
expect(results).to eq([])
end
xit "too much stemming" do
debate = create(:debate, title: 'reloj')
results = Debate.search('superrelojimetro')
expect(results).to eq([])
end
xit "empty" do
debate = create(:debate, title: 'great')
results = Debate.search('')
expect(results).to eq([])
end
end
end
end

View File

@@ -38,7 +38,7 @@ describe 'Verification::Letter' do
letter.verification_code = "5555"
expect(letter.valid?).to eq(false)
expect(letter.errors[:verification_code].first).to eq("Incorrect confirmation code")
expect(letter.errors[:verification_code].first).to eq("Verification code incorrect")
end
it "correct code" do

View File

@@ -355,4 +355,185 @@ describe Proposal do
end
end
describe "search" do
context "attributes" do
it "searches by title" do
proposal = create(:proposal, title: 'save the world')
results = Proposal.search('save the world')
expect(results).to eq([proposal])
end
it "searches by summary" do
proposal = create(:proposal, summary: 'basically...')
results = Proposal.search('basically')
expect(results).to eq([proposal])
end
it "searches by description" do
proposal = create(:proposal, description: 'in order to save the world one must think about...')
results = Proposal.search('one must think')
expect(results).to eq([proposal])
end
it "searches by question" do
proposal = create(:proposal, question: 'to be or not to be')
results = Proposal.search('to be or not to be')
expect(results).to eq([proposal])
end
end
context "stemming" do
it "searches word stems" do
proposal = create(:proposal, summary: 'limpiar')
results = Proposal.search('limpiará')
expect(results).to eq([proposal])
results = Proposal.search('limpiémos')
expect(results).to eq([proposal])
results = Proposal.search('limpió')
expect(results).to eq([proposal])
end
end
context "accents" do
it "searches with accents" do
proposal = create(:proposal, summary: 'difusión')
results = Proposal.search('difusion')
expect(results).to eq([proposal])
proposal2 = create(:proposal, summary: 'estadisticas')
results = Proposal.search('estadísticas')
expect(results).to eq([proposal2])
end
end
context "case" do
it "searches case insensite" do
proposal = create(:proposal, title: 'SHOUT')
results = Proposal.search('shout')
expect(results).to eq([proposal])
proposal2 = create(:proposal, title: "scream")
results = Proposal.search("SCREAM")
expect(results).to eq([proposal2])
end
end
context "typos" do
it "searches with typos" do
proposal = create(:proposal, summary: 'difusión')
results = Proposal.search('difuon')
expect(results).to eq([proposal])
proposal2 = create(:proposal, summary: 'desarrollo')
results = Proposal.search('desarolo')
expect(results).to eq([proposal2])
end
end
context "order" do
it "orders by weight" do
proposal_question = create(:proposal, question: 'stop corruption')
proposal_title = create(:proposal, title: 'stop corruption')
proposal_description = create(:proposal, description: 'stop corruption')
proposal_summary = create(:proposal, summary: 'stop corruption')
results = Proposal.search('stop corruption')
expect(results.first).to eq(proposal_title)
expect(results.second).to eq(proposal_question)
expect(results.third).to eq(proposal_summary)
expect(results.fourth).to eq(proposal_description)
end
it "orders by weight and then votes" do
title_some_votes = create(:proposal, title: 'stop corruption', cached_votes_up: 5)
title_least_voted = create(:proposal, title: 'stop corruption', cached_votes_up: 2)
title_most_voted = create(:proposal, title: 'stop corruption', cached_votes_up: 10)
summary_most_voted = create(:proposal, summary: 'stop corruption', cached_votes_up: 10)
results = Proposal.search('stop corruption')
expect(results.first).to eq(title_most_voted)
expect(results.second).to eq(summary_most_voted)
expect(results.third).to eq(title_some_votes)
expect(results.fourth).to eq(title_least_voted)
end
it "orders by weight and then votes and then created_at" do
newest = create(:proposal, title: 'stop corruption', cached_votes_up: 5, created_at: Time.now)
oldest = create(:proposal, title: 'stop corruption', cached_votes_up: 5, created_at: 1.month.ago)
old = create(:proposal, title: 'stop corruption', cached_votes_up: 5, created_at: 1.week.ago)
results = Proposal.search('stop corruption')
expect(results.first).to eq(newest)
expect(results.second).to eq(old)
expect(results.third).to eq(oldest)
end
end
context "tags" do
it "searches by tags" do
proposal = create(:proposal, tag_list: 'Latina')
results = Proposal.search('Latina')
expect(results.first).to eq(proposal)
end
end
context "no results" do
it "no words match" do
proposal = create(:proposal, title: 'save world')
results = Proposal.search('destroy planet')
expect(results).to eq([])
end
it "too many typos" do
proposal = create(:proposal, title: 'fantastic')
results = Proposal.search('frantac')
expect(results).to eq([])
end
it "too much stemming" do
proposal = create(:proposal, title: 'reloj')
results = Proposal.search('superrelojimetro')
expect(results).to eq([])
end
it "empty" do
proposal = create(:proposal, title: 'great')
results = Proposal.search('')
expect(results).to eq([])
end
end
end
end

View File

@@ -26,7 +26,7 @@ describe Verification::Residence do
it "should validate user has allowed age" do
residence = Verification::Residence.new({"date_of_birth(3i)"=>"1", "date_of_birth(2i)"=>"1", "date_of_birth(1i)"=>"#{5.year.ago.year}"})
expect(residence).to_not be_valid
expect(residence.errors[:date_of_birth]).to include("You need yo be at least 16 years old")
expect(residence.errors[:date_of_birth]).to include("You must be at least 16 years old")
end
describe "postal code" do
@@ -48,7 +48,7 @@ describe Verification::Residence do
residence.postal_code = "13280"
residence.valid?
expect(residence.errors[:postal_code].size).to eq(1)
expect(residence.errors[:postal_code]).to include("To verify your account you need to be in the census of the Madrid town.")
expect(residence.errors[:postal_code]).to include("In order to be verified, you must be registered in the municipality of Madrid.")
end
end

View File

@@ -2,7 +2,8 @@ module CommonActions
def sign_up(email='manuela@madrid.es', password='judgementday')
visit '/'
click_link 'Sign up'
click_link 'Register'
fill_in 'user_username', with: "Manuela Carmena #{rand(99999)}"
fill_in 'user_email', with: email
@@ -11,17 +12,17 @@ module CommonActions
fill_in 'user_captcha', with: correct_captcha_text
check 'user_terms_of_service'
click_button 'Sign up'
click_button 'Register'
end
def login_through_form_as(user)
visit root_path
click_link 'Log in'
click_link 'Sign in'
fill_in 'user_email', with: user.email
fill_in 'user_password', with: user.password
click_button 'Log in'
click_button 'Enter'
end
def login_as_manager
@@ -47,11 +48,11 @@ module CommonActions
create(:user, email: 'manuela@madrid.es')
visit '/'
click_link 'Log in'
click_link 'Forgot your password?'
click_link 'Sign in'
click_link 'Forgotten your password?'
fill_in 'user_email', with: 'manuela@madrid.es'
click_button 'Send me reset password'
click_button 'Send instructions'
end
def comment_on(commentable, user = nil)
@@ -107,7 +108,7 @@ module CommonActions
end
def error_message
/\d errors? prohibited this (.*) from being saved:/
/\d errors? prevented this (.*) from being saved:/
end
def expect_to_be_signed_in
@@ -123,7 +124,7 @@ module CommonActions
end
def verify_residence
select 'Spanish ID', from: 'residence_document_type'
select 'DNI', from: 'residence_document_type'
fill_in 'residence_document_number', with: "12345678Z"
select_date '31-December-1980', from: 'residence_date_of_birth'
fill_in 'residence_postal_code', with: '28013'
@@ -137,27 +138,27 @@ module CommonActions
fill_in 'sms_phone', with: "611111111"
click_button 'Send'
expect(page).to have_content 'Phone confirmation'
expect(page).to have_content 'Enter the confirmation code sent to you by text message'
user = User.last.reload
fill_in 'sms_confirmation_code', with: user.sms_confirmation_code
click_button 'Send'
expect(page).to have_content 'Correct code'
expect(page).to have_content 'Code correct'
end
def expect_message_you_need_to_sign_in
expect(page).to have_content 'You need to sign in or sign up before continuing'
expect(page).to have_content 'You must Sign in or Sign up to continue'
expect(page).to have_selector('.in-favor a', visible: false)
end
def expect_message_to_many_anonymous_votes
expect(page).to have_content 'Too many anonymous votes, verify your account to vote.'
expect(page).to have_content 'Too many anonymous votes to admit vote'
expect(page).to have_selector('.in-favor a', visible: false)
end
def expect_message_only_verified_can_vote_proposals
expect(page).to have_content 'Proposals can only be voted by verified users, verify your account.'
expect(page).to have_content 'Only verified users can vote on proposals'
expect(page).to have_selector('.in-favor a', visible: false)
end