13
Gemfile
13
Gemfile
@ -48,22 +48,23 @@ group :development do
|
||||
gem 'airbrussh', require: false
|
||||
gem 'localeapp', '2.1.1', require: false
|
||||
gem 'letter_opener', '1.4.1'
|
||||
gem 'dotenv-rails', '2.5.0'
|
||||
gem 'dotenv-rails', '~> 2.7.1'
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
gem "rspec-rails", '~> 3.7.2'
|
||||
gem "byebug"
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem "rspec-rails", '~> 3.8.2'
|
||||
gem "database_cleaner", '1.6.2'
|
||||
gem 'shoulda-matchers', '~> 3.1.2'
|
||||
gem 'fabrication'
|
||||
gem 'faker'
|
||||
gem 'capybara', '~> 2.7'
|
||||
gem 'capybara-selenium', '~> 0.0.6'
|
||||
gem 'chromedriver-helper', '~> 1.0'
|
||||
gem 'faker', '~> 1.9'
|
||||
gem 'capybara', '~> 3.13'
|
||||
gem 'selenium-webdriver', '~> 3.141'
|
||||
gem 'chromedriver-helper', '~> 2.1'
|
||||
gem 'simplecov', '~> 0.16.1', require: false
|
||||
end
|
||||
|
||||
group :production do
|
||||
|
||||
80
Gemfile.lock
80
Gemfile.lock
@ -86,19 +86,17 @@ GEM
|
||||
capistrano-rbenv (2.1.3)
|
||||
capistrano (~> 3.1)
|
||||
sshkit (~> 1.3)
|
||||
capybara (2.18.0)
|
||||
capybara (3.13.2)
|
||||
addressable
|
||||
mini_mime (>= 0.1.3)
|
||||
nokogiri (>= 1.3.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
xpath (>= 2.0, < 4.0)
|
||||
capybara-selenium (0.0.6)
|
||||
capybara
|
||||
selenium-webdriver
|
||||
nokogiri (~> 1.8)
|
||||
rack (>= 1.6.0)
|
||||
rack-test (>= 0.6.3)
|
||||
regexp_parser (~> 1.2)
|
||||
xpath (~> 3.2)
|
||||
childprocess (0.9.0)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
chromedriver-helper (1.2.0)
|
||||
chromedriver-helper (2.1.0)
|
||||
archive-zip (~> 0.10)
|
||||
nokogiri (~> 1.8)
|
||||
chronic (0.10.2)
|
||||
@ -124,12 +122,13 @@ GEM
|
||||
responders
|
||||
warden (~> 1.2.3)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.1)
|
||||
domain_name (0.5.20170223)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.5.0)
|
||||
dotenv-rails (2.5.0)
|
||||
dotenv (= 2.5.0)
|
||||
railties (>= 3.2, < 6.0)
|
||||
dotenv (2.7.1)
|
||||
dotenv-rails (2.7.1)
|
||||
dotenv (= 2.7.1)
|
||||
railties (>= 3.2, < 6.1)
|
||||
elasticsearch (1.0.8)
|
||||
elasticsearch-api (= 1.0.7)
|
||||
elasticsearch-transport (= 1.0.7)
|
||||
@ -149,11 +148,11 @@ GEM
|
||||
tzinfo
|
||||
execjs (2.6.0)
|
||||
fabrication (2.11.3)
|
||||
faker (1.4.3)
|
||||
i18n (~> 0.5)
|
||||
faker (1.9.3)
|
||||
i18n (>= 0.7)
|
||||
faraday (0.9.1)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.25)
|
||||
ffi (1.10.0)
|
||||
formtastic (3.1.5)
|
||||
actionpack (>= 3.2.13)
|
||||
formtastic_i18n (0.6.0)
|
||||
@ -288,6 +287,7 @@ GEM
|
||||
polyamorous (~> 1.3.2)
|
||||
rdiscount (2.1.7.1)
|
||||
redis (4.0.1)
|
||||
regexp_parser (1.3.0)
|
||||
responders (2.4.0)
|
||||
actionpack (>= 4.2.0, < 5.3)
|
||||
railties (>= 4.2.0, < 5.3)
|
||||
@ -297,23 +297,23 @@ GEM
|
||||
netrc (~> 0.8)
|
||||
rollbar (2.8.3)
|
||||
multi_json
|
||||
rspec-core (3.7.1)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-expectations (3.7.0)
|
||||
rspec-core (3.8.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-expectations (3.8.2)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-mocks (3.7.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-mocks (3.8.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-rails (3.7.2)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-rails (3.8.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.7.0)
|
||||
rspec-expectations (~> 3.7.0)
|
||||
rspec-mocks (~> 3.7.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-support (3.7.0)
|
||||
rspec-core (~> 3.8.0)
|
||||
rspec-expectations (~> 3.8.0)
|
||||
rspec-mocks (~> 3.8.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-support (3.8.0)
|
||||
rubocop (0.52.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.4.0.2, < 3.0)
|
||||
@ -334,9 +334,9 @@ GEM
|
||||
tilt (>= 1.1, < 3)
|
||||
select2-rails (4.0.1)
|
||||
thor (~> 0.14)
|
||||
selenium-webdriver (3.11.0)
|
||||
selenium-webdriver (3.141.0)
|
||||
childprocess (~> 0.5)
|
||||
rubyzip (~> 1.2)
|
||||
rubyzip (~> 1.2, >= 1.2.2)
|
||||
shoulda-matchers (3.1.2)
|
||||
activesupport (>= 4.0.0)
|
||||
sidekiq (5.1.3)
|
||||
@ -350,6 +350,11 @@ GEM
|
||||
simple_form (3.1.0)
|
||||
actionpack (~> 4.0)
|
||||
activemodel (~> 4.0)
|
||||
simplecov (0.16.1)
|
||||
docile (~> 1.1)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.2)
|
||||
skylight (2.0.1)
|
||||
skylight-core (= 2.0.1)
|
||||
skylight-core (2.0.1)
|
||||
@ -390,7 +395,7 @@ GEM
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
whenever (0.9.4)
|
||||
chronic (>= 0.6.3)
|
||||
xpath (3.0.0)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
|
||||
PLATFORMS
|
||||
@ -406,18 +411,17 @@ DEPENDENCIES
|
||||
capistrano (~> 3.1)
|
||||
capistrano-rails (~> 1.1)
|
||||
capistrano-rbenv (~> 2.1)
|
||||
capybara (~> 2.7)
|
||||
capybara-selenium (~> 0.0.6)
|
||||
chromedriver-helper (~> 1.0)
|
||||
capybara (~> 3.13)
|
||||
chromedriver-helper (~> 2.1)
|
||||
coffee-rails
|
||||
dalli
|
||||
database_cleaner (= 1.6.2)
|
||||
devise (~> 4.5.0)
|
||||
dotenv-rails (= 2.5.0)
|
||||
dotenv-rails (~> 2.7.1)
|
||||
elasticsearch-model
|
||||
elasticsearch-rails
|
||||
fabrication
|
||||
faker
|
||||
faker (~> 1.9)
|
||||
has_scope
|
||||
hstore_translate
|
||||
http_accept_language (~> 2.1.1)
|
||||
@ -434,15 +438,17 @@ DEPENDENCIES
|
||||
rails_12factor (= 0.0.3)
|
||||
rdiscount
|
||||
rollbar (= 2.8.3)
|
||||
rspec-rails (~> 3.7.2)
|
||||
rspec-rails (~> 3.8.2)
|
||||
rubocop (~> 0.52.1)
|
||||
rufus-scheduler (~> 3.4.2)
|
||||
sass-rails (~> 5.0.7)
|
||||
select2-rails
|
||||
selenium-webdriver (~> 3.141)
|
||||
shoulda-matchers (~> 3.1.2)
|
||||
sidekiq (= 5.1.3)
|
||||
sidekiq-cron (= 0.6.3)
|
||||
simple_form (>= 3.0.0)
|
||||
simplecov (~> 0.16.1)
|
||||
skylight
|
||||
uglifier (= 2.7.2)
|
||||
unicorn
|
||||
|
||||
BIN
app/assets/images/redeira.png
Normal file
BIN
app/assets/images/redeira.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@ -10,7 +10,6 @@ class ApplicationController < ActionController::Base
|
||||
before_filter :configure_permitted_parameters, if: :devise_controller?
|
||||
before_filter :set_locale
|
||||
before_filter :set_current_organization
|
||||
after_filter :store_location
|
||||
|
||||
rescue_from MissingTOSAcceptance, OutadedTOSAcceptance do
|
||||
redirect_to terms_path
|
||||
@ -21,7 +20,11 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
helper_method :current_organization, :admin?, :superadmin?
|
||||
|
||||
protected
|
||||
def switch_lang
|
||||
redirect_to :back
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def configure_permitted_parameters
|
||||
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
|
||||
@ -35,17 +38,6 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
end
|
||||
|
||||
def store_location
|
||||
# store last url - this is needed for post-login redirect to whatever the
|
||||
# user last visited.
|
||||
return unless request.get?
|
||||
paths = ["/", "/users/sign_in", "/users/sign_up", "/users/password/new",
|
||||
"/users/password/edit", "/users/confirmation", "/users/sign_out"]
|
||||
if !paths.include?(request.path) && !request.xhr?
|
||||
session[:previous_url] = request.fullpath
|
||||
end
|
||||
end
|
||||
|
||||
def after_sign_in_path_for(user)
|
||||
if user.members.present?
|
||||
users_path
|
||||
@ -54,8 +46,6 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_for_terms_acceptance!
|
||||
if user_signed_in?
|
||||
accepted = current_user.terms_accepted_at
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
class GlobalController < ApplicationController
|
||||
def switch_lang
|
||||
redirect_to :back
|
||||
end
|
||||
end
|
||||
17
app/helpers/brand_logo_helper.rb
Normal file
17
app/helpers/brand_logo_helper.rb
Normal file
@ -0,0 +1,17 @@
|
||||
module BrandLogoHelper
|
||||
def render_brand_logo
|
||||
return unless should_render_logo?
|
||||
render 'application/brand_logo'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def should_render_logo?
|
||||
return false unless current_user
|
||||
current_organization&.id == branded_organization_id
|
||||
end
|
||||
|
||||
def branded_organization_id
|
||||
Rails.application.config.branded_organization_id
|
||||
end
|
||||
end
|
||||
3
app/views/application/_brand_logo.html.erb
Normal file
3
app/views/application/_brand_logo.html.erb
Normal file
@ -0,0 +1,3 @@
|
||||
<div class="container" style="margin-bottom: 30px">
|
||||
<%= image_tag("redeira.png", class: 'organization-brand-logo img-responsive center-block') %>
|
||||
</div>
|
||||
@ -26,6 +26,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= render_brand_logo %>
|
||||
<%= render 'application/footer' %>
|
||||
|
||||
<div class="back-overlay"></div>
|
||||
|
||||
@ -20,7 +20,7 @@ module Timeoverflow
|
||||
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
||||
# config.i18n.default_locale = :de
|
||||
config.i18n.default_locale = :es
|
||||
config.i18n.available_locales = [:es, :ca, :eu, :en, :'pt-BR']
|
||||
config.i18n.available_locales = [:es, :ca, :eu, :gl, :en, :'pt-BR']
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Do not swallow errors in after_commit/after_rollback callbacks.
|
||||
|
||||
7
config/initializers/branded_organization.rb
Normal file
7
config/initializers/branded_organization.rb
Normal file
@ -0,0 +1,7 @@
|
||||
DEFAULT_BRANDED_ORG_ID = 246
|
||||
|
||||
Rails.application.config.branded_organization_id = nil
|
||||
|
||||
unless Rails.env.test?
|
||||
Rails.application.config.branded_organization_id = (Redis.current.get('branded_organization_id') || DEFAULT_BRANDED_ORG_ID).to_i
|
||||
end
|
||||
557
config/locales/gl.yml
Normal file
557
config/locales/gl.yml
Normal file
@ -0,0 +1,557 @@
|
||||
gl:
|
||||
active_admin:
|
||||
comments:
|
||||
author_type: Tipo de autor/a
|
||||
resource_type: Tipo de recurso
|
||||
users:
|
||||
organization: Banco de tempo
|
||||
upload_csv: Ficheiro
|
||||
upload_from_csv: Importar CSV
|
||||
activerecord:
|
||||
attributes:
|
||||
account:
|
||||
balance: Balance
|
||||
organization: Organización
|
||||
category:
|
||||
created_at: Creado
|
||||
name: Nome
|
||||
name_translations: Nome (traducións)
|
||||
parent: Categoría pai
|
||||
updated_at: Actualizado
|
||||
common:
|
||||
created_at: Creado
|
||||
updated_at: Actualizado
|
||||
organization:
|
||||
address: Dirección
|
||||
city: Cidade
|
||||
created_at: Creado
|
||||
description: Descrición
|
||||
email: Correo
|
||||
name: Nome
|
||||
neighborhood: Barrio
|
||||
phone: Teléfono
|
||||
public_opening_times: Horario de atención ao público
|
||||
reg_number_seq: Número de secuencia de persoa usuaria
|
||||
theme: Tema visual
|
||||
updated_at: Actualizado
|
||||
post:
|
||||
category: Categoría
|
||||
created_at: Creado
|
||||
description: Descrición
|
||||
end_on: Termina en
|
||||
joinable: Poden unirse outros
|
||||
permanent: Permanente
|
||||
start_on: Comezar
|
||||
tag_list: Etiquetas
|
||||
title: Título
|
||||
updated_at: Actualizado
|
||||
transfer:
|
||||
amount: Cantidade
|
||||
created_at: Creado
|
||||
hours: Horas
|
||||
minutes: Minutos
|
||||
post: Enviar
|
||||
reason: Comentarios
|
||||
source: Fonte
|
||||
updated_at: Actualizacións
|
||||
user:
|
||||
admin: 'Persoa administradora da organización '
|
||||
alt_phone: Teléfono alternativo
|
||||
created_at: Creado
|
||||
date_of_birth: Data de nacemento
|
||||
description: Descrición
|
||||
email: Correo electrónico
|
||||
gender: Xénero
|
||||
identity_document: Documento de identidade
|
||||
last_sign_in_at: Último inicio de sesión
|
||||
notifications: Recibir notificacións por correo electrónico
|
||||
organization: Organización
|
||||
phone: Teléfono
|
||||
push_notifications: Recibir notificacións móbiles
|
||||
registration_date: Data de rexistro
|
||||
registration_number: Código de persoa usuaria
|
||||
superadmin: Persoa dministradora do sistema
|
||||
unconfirmed_email: Correo electrónico non confirmado
|
||||
updated_at: Actualizado
|
||||
username: Nome
|
||||
errors:
|
||||
models:
|
||||
organization:
|
||||
attributes:
|
||||
web:
|
||||
url_format_invalid: Formato de URL non válido
|
||||
transfer:
|
||||
attributes:
|
||||
base:
|
||||
same_account: Non se pode realizar unha transferencia á mesma conta
|
||||
user:
|
||||
attributes:
|
||||
email:
|
||||
invalid: Non válido
|
||||
models:
|
||||
category:
|
||||
one: Categoría
|
||||
other: Categorías
|
||||
comment:
|
||||
one: Comentario
|
||||
other: Comentarios
|
||||
inquiry:
|
||||
one: Enquisa
|
||||
other: Enquisas
|
||||
offer:
|
||||
one: Oferta
|
||||
other: Ofertas
|
||||
organization:
|
||||
one: Banco de Tempo
|
||||
other: Bancos de Tempo
|
||||
post:
|
||||
one: Publicación
|
||||
other: Publicacións
|
||||
transfer:
|
||||
one: Transferencia
|
||||
other: Transferencias
|
||||
user:
|
||||
one: Persoa usuaria
|
||||
other: Persoas usuarias
|
||||
application:
|
||||
landing:
|
||||
button: Entrar
|
||||
slogan: Permite valorar o noso tempo
|
||||
sub_slogan: Hai un banco de tempo preto de ti
|
||||
login_form:
|
||||
button: Entrar
|
||||
email: 'Correo electrónico '
|
||||
password: Contrasinal
|
||||
remember_check: Lémbrame
|
||||
menu:
|
||||
sign_in: Acceder
|
||||
sing_out: Saír
|
||||
menus:
|
||||
offers_by_tag_link:
|
||||
tags: Etiquetas
|
||||
navbar:
|
||||
admin: Xestionar
|
||||
administration: Administración
|
||||
adminshort: Persona administradora
|
||||
categories: Servizos
|
||||
demographics: Datos demográficos
|
||||
global_activity: Actividade global
|
||||
inactive_users: Persoas suarias inactivas
|
||||
inquiry_public_link: Consultas de enlace público
|
||||
last_login: Último inicio de sesión
|
||||
offer_public_link: Ofrece unha conexión pública
|
||||
organizations: Organizacións
|
||||
reports: Informes
|
||||
sign_out: Saír
|
||||
statistics: Estatísticas
|
||||
statistics_all_transfers: Todas as transferencias
|
||||
stats: Estatísticas
|
||||
tags: Etiquetas
|
||||
type_of_swaps: Tipo de transaccións
|
||||
users: Persoas usuarias
|
||||
without_offers: Sen ofertas
|
||||
organization_list:
|
||||
address: Enderezo
|
||||
city: Cidade
|
||||
description: Descrición
|
||||
email: Correo electrónico
|
||||
neighborhood: Barrio
|
||||
not_member: Neste momento non pertence a ningún banco de tempo, para poder utilizar esta plataforma debes estar en contacto cun dos bancos que teñen a plataforma
|
||||
phone: Teléfono
|
||||
public_opening_times: Horario de funcionamento
|
||||
time_bank: Banco de tempo
|
||||
welcome: Benvidos/as a Timeoverflow %{user}.
|
||||
terms_conditions: Condicións de servizo
|
||||
tips:
|
||||
entertag: Insira etiquetas separadas por comas
|
||||
user_not_found: Persoa suaria non atopada
|
||||
categories:
|
||||
index:
|
||||
add: Engadir servizo
|
||||
all: Todo
|
||||
global: Global
|
||||
local: Local
|
||||
tree: Principal
|
||||
devise:
|
||||
confirmations:
|
||||
confirmed: A túa conta confirmouse con éxito.
|
||||
confirmed_and_signed_in: A túa conta confirmouse con éxito. Agora iniciaches sesión.
|
||||
new:
|
||||
resend_instructions: Reenvía as instrucións de confirmación
|
||||
resend_instructions_button: Reenviar
|
||||
resend_instructions_description: Se cambiou o teu correo electrónico, debes realizar este paso para que o cambio sexa efectivo
|
||||
send_instructions: Recibirás un correo electrónico con instrucións sobre como confirmar a túa conta en poucos minutos.
|
||||
send_paranoid_instructions: Se o enderezo de correo electrónico existe na nosa base de datos, recibirás un correo electrónico con instrucións sobre como confirmar a túa conta en poucos minutos.
|
||||
failure:
|
||||
already_authenticated: Xa estás conectado/a.
|
||||
inactive: A túa conta aínda non está activada.
|
||||
invalid: Correo ou contrasinal non válidos.
|
||||
invalid_token: Token de autenticación non válido.
|
||||
locked: A túa conta está bloqueada.
|
||||
not_found_in_database: Correo ou contrasinal non válidos.
|
||||
timeout: A túa sesión caducou. Inicia sesión de novo para continuar.
|
||||
unauthenticated: Necesitas iniciar sesión ou rexistrarte antes de continuar.
|
||||
unconfirmed: Tes que confirmar a túa conta antes de continuar.
|
||||
user:
|
||||
last_attempt: Atención, tes un intento antes de que a túa conta estea bloqueada
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
subject: Instrucións de confirmación
|
||||
reset_password_instructions:
|
||||
subject: Restablecer as instrucións do contrasinal
|
||||
unlock_instructions:
|
||||
subject: Instrucións de desbloqueo
|
||||
omniauth_callbacks:
|
||||
failure: Non puiden autenticarte de %{kind} porque "%{reason}".
|
||||
success: Autenticado/a con éxito a partir da conta de %{kind}.
|
||||
passwords:
|
||||
edit:
|
||||
change_password: Cambiar o meu contrasinal
|
||||
confirm_password: Confirma o teu novo contrasinal
|
||||
new_password: Novo contrasinal
|
||||
passwords_not_match: Os contrasinais non coinciden
|
||||
new:
|
||||
forgot_question: Crea un novo contrasinal
|
||||
forgot_question_description: Introduce o enderezo asociado coa túa conta e enviarémosche un correo electrónico coa ligazón para crear un novo contrasinal.
|
||||
send_instructions: Enviar enlace
|
||||
no_token: Non podes acceder a esta páxina sen proceder dun correo electrónico de restablecemento de contrasinal. Se provés dun correo electrónico de restablecemento de contrasinal, asegúrate de utilizar a URL completa proporcionada.
|
||||
send_instructions: Recibirás un correo electrónico con instrucións sobre como restablecer o teu contrasinal en poucos minutos.
|
||||
send_paranoid_instructions: Se o teu enderezo de correo electrónico existe na nosa base de datos, recibirás unha ligazón de recuperación de contrasinal no teu enderezo de correo electrónico en poucos minutos.
|
||||
updated: O contrasinal cambiou correctamente. Agora iniciaches sesión.
|
||||
updated_not_active: O contrasinal cambiou correctamente.
|
||||
registrations:
|
||||
destroyed: Adeus! Cancelouse correctamente a túa conta. Agardamos verte pronto.
|
||||
edit:
|
||||
cancel_account: Cancelar a conta.
|
||||
current_password: Contrasinal actual
|
||||
edit_user: Editar persoa usuaria
|
||||
help_current_password: Axuda o contrasinal actual
|
||||
help_password: Contrasinal de axuda
|
||||
password: Contrasinal
|
||||
password_confirmation: Confirmación por contrasinal
|
||||
unhappy: Infeliz
|
||||
update: Actualización
|
||||
new:
|
||||
password: Contrasinal
|
||||
password_confirmation: Confirmación por contrasinal
|
||||
sign_me_up: Rexístrate
|
||||
sign_up: Incribirse
|
||||
signed_up: Benvido/a! Rexistrácheste con éxito.
|
||||
signed_up_but_inactive: Rexistrácheste con éxito. Non obstante, non podemos rexistrarte porque a túa conta aínda non está activada.
|
||||
signed_up_but_locked: Rexistrácheste con éxito. Non obstante, non podemos rexistrarte porque a túa conta está bloqueada.
|
||||
signed_up_but_unconfirmed: Enviouse a mensaxe cunha ligazón de confirmación ao teu enderezo de correo electrónico. Abre a ligazón para activar a túa conta.
|
||||
update_needs_confirmation: Actualizaches a túa conta con éxito, pero necesitamos verificar o teu novo enderezo de correo electrónico. Comproba o teu correo electrónico e fai clic na ligazón de confirmación para confirmar a confirmación do teu novo enderezo de correo electrónico.
|
||||
updated: Actualizaches a túa conta correctamente.
|
||||
sessions:
|
||||
new:
|
||||
remember_me: Lémbrame
|
||||
sign_in: Iniciar sesión
|
||||
user:
|
||||
signed_in: Registrado/a
|
||||
signed_out: Pechou a sesión
|
||||
shared:
|
||||
links:
|
||||
didnt_receive_confirmation_instructions: Reenviar correo de confirmación
|
||||
didnt_receive_unlock_instructions: Recibir instrucións de desbloqueo
|
||||
forgot_your_password: Non lembro o meu contrasinal
|
||||
sign_in: Acceder
|
||||
sign_in_with: Iniciar sesión con %{provider}
|
||||
sign_up: Rexistrarse
|
||||
unlocks:
|
||||
new:
|
||||
resend_instructions: Reenviar instrucións de desbloqueo
|
||||
resend_instructions_button: Reenviar
|
||||
resend_instructions_description: Se te rexistraches erroneamente máis de cinco veces tes que facer este paso para desbloquear a túa conta
|
||||
send_instructions: Recibirás un correo electrónico con instrucións sobre como desbloquear a túa conta en poucos minutos.
|
||||
send_paranoid_instructions: Se a túa conta existe, recibirás un correo electrónico con instrucións sobre como desbloqueala en poucos minutos.
|
||||
unlocked: A túa conta foi desbloqueada con éxito. Inicia sesión para continuar.
|
||||
errors:
|
||||
internal_server_error:
|
||||
description: Sentímolo, parece haber un erro con esta solicitude. Enviouse unha notificación de forma automática e resolverémolo o máis axiña posible.
|
||||
title: Error interno do servidor
|
||||
messages:
|
||||
already_confirmed: Xa se confirmou, intenta iniciar sesión
|
||||
confirmation_period_expired: Debe ser confirmado dentro de %{period}, solicite un novo
|
||||
expired: Caducou, por favor solicita un novo
|
||||
not_found: Non atopado
|
||||
not_locked: Non estaba bloqueado
|
||||
not_saved:
|
||||
one: '1 erro prohibiuse que este %{resource} se gardase:'
|
||||
other: "%{count} os erros prohibiron que este %{resource} se garde:"
|
||||
not_found:
|
||||
description: A páxina que estabas a buscar non existe. É posible que teñas mal escrita a dirección ou a páxina mudou.
|
||||
title: Non atopado
|
||||
global:
|
||||
add_new: Crear novo
|
||||
all: Todo
|
||||
amount: Cantidade
|
||||
announcements: Publicar
|
||||
back: De volta
|
||||
balance: 'Balance:'
|
||||
cancel_membership: Borrado permanente
|
||||
contact_details: Datos de contacto
|
||||
date: Datos
|
||||
delete: Eliminar
|
||||
demote: Degradar a usuario/a normal
|
||||
edit: Actualización
|
||||
filter: Filtro
|
||||
give_time: Transferencia de tempo
|
||||
home: Inicio
|
||||
information: Información
|
||||
locales_header: cambiar o idioma
|
||||
member_count: 'Número de persoas usuarias:'
|
||||
more: Máis
|
||||
movements: Transaccións
|
||||
promote: Promover á persoa administradora
|
||||
reason: Razón
|
||||
required_field: "* Campo obrigatorio"
|
||||
save: Gardar
|
||||
search: Busca
|
||||
show: Amosar
|
||||
source_destination: Dende/ata
|
||||
statistics: Estatísticas
|
||||
table:
|
||||
actions: Accións
|
||||
inquiries:
|
||||
edit:
|
||||
submit: Cambiar consulta
|
||||
index:
|
||||
new_inquiry: Nova consulta
|
||||
new:
|
||||
submit: Crear consulta
|
||||
layouts:
|
||||
application:
|
||||
about: Sobre TimeOverflow
|
||||
edit_org: Actualización %{organization}
|
||||
edit_profile: Actualiza o meu perfil
|
||||
help: Axuda
|
||||
login: Acceder
|
||||
report:
|
||||
report_title: INFORME
|
||||
locales:
|
||||
ar: Árabe
|
||||
ca: Catalán
|
||||
en: Inglés
|
||||
es: Español
|
||||
eu: Vasco
|
||||
fr: Francés
|
||||
gl: Galego
|
||||
pt: Portugués
|
||||
pt-BR: Portugués (Brasil)
|
||||
mailers_globals:
|
||||
footer:
|
||||
text: "%{organization_name} de"
|
||||
text_donation: A asociación ADBdT ofrece TimeOverflow gratuitamente aos bancos de tempo. Cunha doazón de %{href} podes axudar a manter e mellorar a plataforma.
|
||||
text_donation_link: 1€ ao mes
|
||||
offers:
|
||||
edit:
|
||||
submit: Cambiar oferta
|
||||
index:
|
||||
by_category: Por categoría
|
||||
by_tag: Por etiqueta
|
||||
filter: Filtrar
|
||||
new_offer: Nova oferta
|
||||
offered_by: Ofrecido por %{size} persoas
|
||||
new:
|
||||
submit: Crear oferta
|
||||
show:
|
||||
give_time_for: Transferencia de tempo para esta oferta
|
||||
offered_by: Ofrecido por
|
||||
organization_notifier:
|
||||
recent_posts:
|
||||
subject: Boletín informativo
|
||||
text1: 'Últimas ofertas publicadas:'
|
||||
text2: 'Publicacións máis recentes:'
|
||||
organizations:
|
||||
give_time:
|
||||
give_time: Dele tempo
|
||||
index:
|
||||
member_count: Número de persoas usuarias
|
||||
new:
|
||||
new: Novo banco
|
||||
show:
|
||||
contact_information: Información de contacto
|
||||
pages:
|
||||
about:
|
||||
app-mobile: Aplicación móbil
|
||||
app-mobile-text: Está dispoñible a aplicación TimeOverflow para móbiles. <br /> Esta aplicación foi posible grazas á colaboración do municipio de Barcelona, o programa %{impulsem_link} (Barcelona Activa) 2017-2018
|
||||
banner-button: Solicitar acceso a TimeOverflow
|
||||
banner-subtitle: Contamos contigo para poñelo en marcha ou para facerche unha demostración
|
||||
banner-title: Es ti un Banco de Tempo?
|
||||
donate-link: Doe 1 € ao mes
|
||||
donate-text: Para soportar moitas comunidades, a asociación ADBdT ofrece a plataforma TimeOverflow a todos os bancos de tempo. %{donate_link} para contribuír aos custos de mantemento e innovación.
|
||||
donate-title: Participa cunha doazón
|
||||
empower-adbdt: ADBdT
|
||||
empower-adbdt-title: Asociación para o Desenvolvemento de Bancos de Tempo
|
||||
empower-coopdevs: CoopDevs
|
||||
empower-coopdevs-title: CoopDevs
|
||||
empower-github: Github
|
||||
empower-github-title: Github
|
||||
empower-showmap: ver o mapa
|
||||
empower-showmap-title: Bancos de Tempo
|
||||
empower-text-1: TimeOveflow está especialmente deseñado para e por Bancos de Tempo que existen físicamente — %{showmap_link}, eo seu propósito é impulsalos grazas a Internet.
|
||||
empower-text-2: Grazas ao traballo conxunto de %{coopdevs_link} e %{abdt_link}, hoxe podemos ofrecer o software TimeOverflow a todos os bancos de tempo que o queiran, abertos e gratuitos.
|
||||
empower-text-3: O código fonte de TimeOverflow está dispoñible en base a unha licenza de código aberto e pode descargala en %{github_link}
|
||||
empower-title: Empoderando os bancos de tempo
|
||||
feature-group-1: Xestión de Banco de tempo con funcións de administración
|
||||
feature-group-2: Rede social e banca en liña accesibles polas persoas membros
|
||||
feature-text-1: Creación / eliminación / actualizacións das persoas membros do banco
|
||||
feature-text-2: Publicación de ofertas e consultas
|
||||
feature-text-3: Inclúe controis e xestión da contabilidade
|
||||
feature-text-4: As persoas membros dun Banco de Tempo poden acceder ao sistema e conectarse con outras persoas membros
|
||||
feature-text-5: Publicación de ofertas e consultas
|
||||
feature-text-6: Pague horas a outras persoas membros
|
||||
impulsem-link: Aumenta o que fas
|
||||
subtitle: TimeOverflow é de código aberto, gratuíto e colaborativo
|
||||
title: O software deseñado por e para
|
||||
title2: Bancos de tempo
|
||||
posts:
|
||||
show:
|
||||
info: Este %{type} pertence a %{organization}.
|
||||
reports:
|
||||
cat_with_users:
|
||||
title: Servizos ofrecidos
|
||||
download: Descarga
|
||||
user_list:
|
||||
title: Lista de persoas usuarias
|
||||
shared:
|
||||
movements:
|
||||
delete_reason: Estás seguro/a de borrar este comentario?
|
||||
movements: Movementos
|
||||
post_form:
|
||||
you_can_use: Podes usar
|
||||
simple_form:
|
||||
error_notification:
|
||||
default_message: 'Revisa os problemas a continuación:'
|
||||
'no': Non
|
||||
options:
|
||||
user:
|
||||
gender:
|
||||
female: Muller
|
||||
male: Home
|
||||
required:
|
||||
mark: "*"
|
||||
text: esixido
|
||||
'yes': Si
|
||||
statistics:
|
||||
statistics_all_transfers:
|
||||
date: Data
|
||||
delete_reason: Estás seguro/a de borrar este comentario?
|
||||
from: De
|
||||
post: Publicar
|
||||
quantity: Cantidade
|
||||
reason: Razón
|
||||
to: Para
|
||||
transfers: Todas as transferencias
|
||||
statistics_demographics:
|
||||
by_ages: Por idades
|
||||
by_gender: Por sexo
|
||||
demographics: Datos demográficos
|
||||
female: Muller
|
||||
male: Home
|
||||
num_people: "# de persoas"
|
||||
unknown: Descoñecido
|
||||
statistics_global_activity:
|
||||
bank_activity: Actividade bancaria
|
||||
end_date: final mm/aaaa
|
||||
global_activity: Actividade global
|
||||
ini_date: ini mm/aaaa
|
||||
num_swaps: Transaccións
|
||||
per_month: Por mes
|
||||
show: Amosar
|
||||
total_hours: Horas transferidas
|
||||
users_reg: Persoas usuarias rexistradas
|
||||
statistics_inactive_users:
|
||||
days_without_swaps: Días sen transaccións
|
||||
inactive_users: Persoas usuarias inactivas
|
||||
last_movement: Última transacción
|
||||
no_movements: Sen transaccións
|
||||
statistics_last_login:
|
||||
last_login: Último inicio de sesión
|
||||
never_login: Nunca iniciou sesión
|
||||
statistics_type_swaps:
|
||||
type_of_swaps: Tipo de transaccións
|
||||
without_category: Sen categoría
|
||||
without_tags: Sen etiquetas
|
||||
statistics_without_offers:
|
||||
without_offers: Sen ofertas
|
||||
stats:
|
||||
min_balance:
|
||||
title: Saldo mínimo das persoas usuarias
|
||||
tags:
|
||||
alpha_grouped_index:
|
||||
maintitle: Etiquetas dispoñibles
|
||||
terms:
|
||||
accept: Aceptar
|
||||
show:
|
||||
accept: Aceptar
|
||||
transfers:
|
||||
computation:
|
||||
hour:
|
||||
one: "%{count} hora"
|
||||
other: "%{count} horas"
|
||||
joiner: e
|
||||
minute:
|
||||
one: "%{count} minuto"
|
||||
other: "%{count} minutos"
|
||||
new:
|
||||
error_amount: O tempo debe ser superior a 0
|
||||
users:
|
||||
edit:
|
||||
edit_user: Actualizar persoa usuaria
|
||||
form:
|
||||
notifications: Notificacións
|
||||
give_time:
|
||||
give_time: Dálle tempo
|
||||
index:
|
||||
actions: Accións
|
||||
active_warning: Vas cambiar o estado da conta de usuario/a %{username}
|
||||
active_warning_angular: Vas cambiar o estado da conta de usuario/a para {{username}}
|
||||
cancel_warning: Vas borrar a conta do Banco de tempo para o usuario/a %{username}
|
||||
cancel_warning_angular: Vas borrar a conta do Banco de tempo para o usuario/a {{username}}
|
||||
create: Crea unha nova persoa usuaria
|
||||
manage_warning: Vas cambiar privilexios para o usuario/a %{username}
|
||||
manage_warning_angular: Vas cambiar privilexios para o usuario/a {{username}}
|
||||
members: Persoas membros
|
||||
user_created: O usuario/a %{uid} %{name} gardouse
|
||||
member_card:
|
||||
active_ago: Tempo activo %{time}
|
||||
no_activity: Non hai actividade
|
||||
new:
|
||||
cancel: Cancelar
|
||||
create_more_users_button: Crea e engade outra persoa usuaria
|
||||
new_user: Nova persoa usuaria
|
||||
user_created_add: A persoa usuaria %{uid} %{name} gardada, agora crea o seguinte
|
||||
show:
|
||||
account: Últimas transaccións
|
||||
accounts: Contas
|
||||
balance: 'Balance:'
|
||||
categories: Servizos ofrecidos
|
||||
change_your_image: Cambia a túa imaxe
|
||||
created_at: 'Rexistrado/a:'
|
||||
data: Datos da persoa usuaria
|
||||
date: Data
|
||||
deleted_user: A persoa usuaria xa non existe
|
||||
from_to: De / Para
|
||||
inactive: "(Inactivo/a)"
|
||||
inactive_user: A persoa usuaria non está activa
|
||||
phone:
|
||||
one: Teléfono
|
||||
other: Teléfonos
|
||||
post: Publicar
|
||||
quantity: Cantidade
|
||||
reason: Razón
|
||||
user_no: 'Usuario/a #:'
|
||||
user_rows:
|
||||
activate: Activar
|
||||
active_warning: Vas cambiar o estado da conta de usuario/a para %{user}
|
||||
cancel_warning: Vas borrar a conta do Banco de tempo para o usuario/a %{user}
|
||||
deactivate: Desactivar
|
||||
manage_warning: Vas cambiar privilexios para o usuario/a %{user}
|
||||
views:
|
||||
pagination:
|
||||
first: Primeira
|
||||
last: Última
|
||||
next: Seguinte
|
||||
previous: Anterior
|
||||
truncate: Truncar
|
||||
@ -16,7 +16,7 @@ Rails.application.routes.draw do
|
||||
|
||||
ActiveAdmin.routes(self)
|
||||
|
||||
get "global/switch_lang", as: :switch_lang
|
||||
get :switch_lang, to: 'application#switch_lang'
|
||||
|
||||
get "/pages/:page" => "pages#show", as: :page
|
||||
|
||||
|
||||
25
spec/controllers/application_controller_spec.rb
Normal file
25
spec/controllers/application_controller_spec.rb
Normal file
@ -0,0 +1,25 @@
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe ApplicationController do
|
||||
describe '#switch_lang' do
|
||||
let(:original_locale) { I18n.locale }
|
||||
|
||||
before do
|
||||
request.env["HTTP_REFERER"] = root_path
|
||||
end
|
||||
|
||||
after do
|
||||
I18n.locale = original_locale
|
||||
end
|
||||
|
||||
it 'switches locale to passed language via params' do
|
||||
new_locale = (I18n.available_locales - [original_locale]).sample
|
||||
|
||||
expect do
|
||||
get :switch_lang, locale: new_locale
|
||||
end.to change(I18n, :locale).from(original_locale).to(new_locale)
|
||||
|
||||
expect(response).to redirect_to(root_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
41
spec/features/brand_logo_spec.rb
Normal file
41
spec/features/brand_logo_spec.rb
Normal file
@ -0,0 +1,41 @@
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.feature 'sign in' do
|
||||
let(:user) do
|
||||
user = Fabricate(
|
||||
:user,
|
||||
email: 'user@timeoverflow.org',
|
||||
password: 'papapa22',
|
||||
terms_accepted_at: 1.day.from_now
|
||||
)
|
||||
|
||||
user.add_to_organization(organization)
|
||||
|
||||
user
|
||||
end
|
||||
|
||||
let(:organization) { Fabricate(:organization) }
|
||||
|
||||
context 'with a branded org id' do
|
||||
before do
|
||||
allow(Rails.application.config).to receive(:branded_organization_id).and_return(organization.id)
|
||||
sign_in_with(user.email, user.password)
|
||||
end
|
||||
|
||||
it 'renders the logo' do
|
||||
expect(page).to have_css('.organization-brand-logo')
|
||||
end
|
||||
end
|
||||
|
||||
context 'without a branded org id' do
|
||||
before do
|
||||
allow(Rails.application.config).to receive(:branded_organization_id).and_return(1234)
|
||||
sign_in_with(user.email, user.password)
|
||||
end
|
||||
|
||||
it 'does not render the logo' do
|
||||
expect(page).to have_no_css('.organization-brand-logo')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -31,8 +31,6 @@ RSpec.feature 'create offer' do
|
||||
|
||||
# TODO there are two i18n keys for getting "Crear oferta" copy ( one returns 'Crear oferta' and the other 'Crear Oferta' )
|
||||
click_on I18n.t('offers.new.submit', model: I18n.t('activerecord.models.offer.one'))
|
||||
|
||||
page.save_screenshot('create-offer-yolo.png')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
require 'simplecov'
|
||||
SimpleCov.start 'rails'
|
||||
|
||||
ENV["RAILS_ENV"] ||= 'test'
|
||||
ENV["ADMINS"] = "admin@timeoverflow.org"
|
||||
|
||||
@ -8,30 +10,25 @@ require 'capybara/rails'
|
||||
require 'capybara/rspec'
|
||||
require 'database_cleaner'
|
||||
require 'fabrication'
|
||||
require 'chromedriver-helper'
|
||||
require 'selenium/webdriver'
|
||||
require 'faker'
|
||||
require 'shoulda/matchers'
|
||||
|
||||
I18n.reload!
|
||||
|
||||
Capybara.register_driver :chrome do |app|
|
||||
Capybara::Selenium::Driver.new(app, browser: :chrome)
|
||||
end
|
||||
|
||||
Capybara.server = :webrick
|
||||
Capybara.register_driver :headless_chrome do |app|
|
||||
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
|
||||
chromeOptions: { args: %w(headless disable-gpu) }
|
||||
browser_options = Selenium::WebDriver::Chrome::Options.new(
|
||||
args: %w(headless disable-gpu no-sandbox)
|
||||
)
|
||||
|
||||
Capybara::Selenium::Driver.new(
|
||||
app,
|
||||
browser: :chrome,
|
||||
desired_capabilities: capabilities
|
||||
options: browser_options
|
||||
)
|
||||
end
|
||||
|
||||
Capybara.javascript_driver = :headless_chrome
|
||||
Capybara.default_driver = :headless_chrome
|
||||
Capybara.javascript_driver = Capybara.default_driver
|
||||
|
||||
# Requires supporting ruby files with custom matchers and macros, etc,
|
||||
# in spec/support/ and its subdirectories.
|
||||
|
||||
Reference in New Issue
Block a user