Merge branch 'master' into translations_en-yml--master_de_DE

This commit is contained in:
Jesus Federico 2019-05-09 18:29:24 -04:00 committed by GitHub
commit 2d03054e46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 305 additions and 116 deletions

View File

@ -17,7 +17,7 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
class AccountActivationsController < ApplicationController
include Verifier
include Emailer
before_action :ensure_unauthenticated
before_action :find_user
@ -46,7 +46,7 @@ class AccountActivationsController < ApplicationController
flash[:alert] = I18n.t("verify.already_verified")
else
begin
@user.send_activation_email(user_verification_link)
send_activation_email(@user)
rescue => e
logger.error "Error in email delivery: #{e}"
flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))

View File

@ -16,11 +16,27 @@
# You should have received a copy of the GNU Lesser General Public License along
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
module Verifier
module Emailer
extend ActiveSupport::Concern
# Sends account activation email.
def send_activation_email(user)
@user = user
UserMailer.verify_email(@user, user_verification_link, logo_image, user_color).deliver
end
# Sends password reset email.
def send_password_reset_email(user)
@user = user
UserMailer.password_reset(@user, reset_link, logo_image, user_color).deliver_now
end
# Returns the link the user needs to click to verify their account
def user_verification_link
request.base_url + edit_account_activation_path(token: @user.activation_token, email: @user.email)
end
def reset_link
request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
end
end

View File

@ -17,6 +17,8 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
class PasswordResetsController < ApplicationController
include Emailer
before_action :disable_password_reset, unless: -> { Rails.configuration.enable_email_verification }
before_action :find_user, only: [:edit, :update]
before_action :valid_user, only: [:edit, :update]
@ -29,7 +31,7 @@ class PasswordResetsController < ApplicationController
@user = User.find_by(email: params[:password_reset][:email].downcase)
if @user
@user.create_reset_digest
@user.send_password_reset_email(reset_link)
send_password_reset_email(@user)
flash[:success] = I18n.t("email_sent", email_type: t("reset_password.subtitle"))
redirect_to root_path
else
@ -78,10 +80,6 @@ class PasswordResetsController < ApplicationController
redirect_to new_password_reset_url, alert: I18n.t("expired_reset_token") if current_user.password_reset_expired?
end
def reset_link
request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
end
# Confirms a valid user.
def valid_user
unless current_user.authenticated?(:reset, params[:id])

View File

@ -26,6 +26,7 @@ class RoomsController < ApplicationController
before_action :verify_room_ownership, except: [:create, :show, :join, :logout]
before_action :verify_room_owner_verified, only: [:show, :join],
unless: -> { !Rails.configuration.enable_email_verification }
before_action :verify_user_not_admin, only: [:show]
# POST /
def create
@ -244,11 +245,15 @@ class RoomsController < ApplicationController
unless @room.owner.activated?
flash[:alert] = t("room.unavailable")
if current_user
if current_user && !@room.owned_by?(current_user)
redirect_to current_user.main_room
else
redirect_to root_path
end
end
end
def verify_user_not_admin
redirect_to admins_path if current_user && current_user&.has_role?(:super_admin)
end
end

View File

@ -18,7 +18,7 @@
class UsersController < ApplicationController
include RecordingsHelper
include Verifier
include Emailer
before_action :find_user, only: [:edit, :update, :destroy]
before_action :ensure_unauthenticated, only: [:new, :create]
@ -46,7 +46,7 @@ class UsersController < ApplicationController
# Start email verification and redirect to root.
begin
@user.send_activation_email(user_verification_link)
send_activation_email(@user)
rescue => e
logger.error "Error in email delivery: #{e}"
flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))

View File

@ -19,15 +19,19 @@
class UserMailer < ApplicationMailer
default from: Rails.configuration.smtp_sender
def verify_email(user, url)
def verify_email(user, url, image, color)
@user = user
@url = url
@image = image
@color = color
mail(to: @user.email, subject: t('landing.welcome'))
end
def password_reset(user, url)
def password_reset(user, url, image, color)
@user = user
@url = url
@image = image
@color = color
mail to: user.email, subject: t('reset_password.subtitle')
end
end

View File

@ -103,8 +103,16 @@ class User < ApplicationRecord
end
def self.admins_search(string)
active_database = Rails.configuration.database_configuration[Rails.env]["adapter"]
# Postgres requires created_at to be cast to a string
created_at_query = if active_database == "postgresql"
"created_at::text"
else
"created_at"
end
search_query = "name LIKE :search OR email LIKE :search OR username LIKE :search" \
" OR created_at LIKE :search OR provider LIKE :search"
" OR #{created_at_query} LIKE :search OR provider LIKE :search"
search_param = "%#{string}%"
where(search_query, search: search_param)
end
@ -149,10 +157,6 @@ class User < ApplicationRecord
email_verified
end
def send_activation_email(url)
UserMailer.verify_email(self, url).deliver
end
# Sets the password reset attributes.
def create_reset_digest
self.reset_token = User.new_token
@ -160,11 +164,6 @@ class User < ApplicationRecord
update_attribute(:reset_sent_at, Time.zone.now)
end
# Sends password reset email.
def send_password_reset_email(url)
UserMailer.password_reset(self, url).deliver_now
end
# Returns true if the given token matches the digest.
def authenticated?(attribute, token)
digest = send("#{attribute}_digest")

View File

@ -68,15 +68,16 @@
<td><%= user.email && user.email != "" ? user.email : user.username%></td>
<td><%= user.provider %></td>
<td class="text-center">
<% if user.has_role? :denied %>
<% roles = user.roles().pluck(:name) %>
<% if roles.include?("denied")%>
<div class="user-role btn btn-sm btn-gray-dark">
<%= t("roles.banned") %>
</div>
<% elsif user.has_role? :super_admin %>
<% elsif roles.include?("super_admin") %>
<div class="user-role btn btn-sm btn-red">
<%= t("roles.super_admin") %>
</div>
<% elsif user.has_role? :admin %>
<% elsif roles.include?("admin") %>
<div class="user-role btn btn-sm btn-yellow">
<%= t("roles.administrator") %>
</div>
@ -87,13 +88,13 @@
<% end %>
</td>
<td>
<% unless user.has_role? :super_admin %>
<% unless roles.include?("super_admin") %>
<div class="item-action dropdown">
<a href="javascript:void(0)" data-toggle="dropdown" class="icon">
<i class="fas fa-ellipsis-v px-4"></i>
</a>
<div class="dropdown-menu dropdown-menu">
<% if user.has_role? :denied %>
<% if roles.include?("denied") %>
<%= button_to admin_unban_path(user_uid: user.uid), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-lock-open"></i> <%= t("administrator.users.settings.unban") %>
<% end %>
@ -105,11 +106,11 @@
<i class="dropdown-icon fas fa-user-minus"></i> <%= t("administrator.users.settings.delete") %>
</button>
<% if user.has_role? :admin %>
<% if roles.include?("admin") %>
<%= button_to admin_demote_path(user_uid: user.uid), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-level-down-alt"></i> <%= t("administrator.users.settings.demote") %>
<% end %>
<% elsif user.has_role? :user %>
<% elsif roles.include?("user") %>
<%= button_to admin_promote_path(user_uid: user.uid), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-level-up-alt"></i> <%= t("administrator.users.settings.promote") %>
<% end %>

View File

@ -50,7 +50,7 @@
<% end %>
<% if Rails.configuration.room_features.include? "mute-on-join" %>
<label class="custom-switch mt-3 mb-3 w-100 text-left d-inline-block">
<label class="custom-switch pl-0 mt-3 mb-3 w-100 text-left d-inline-block">
<span class="custom-switch-description"><%= t("modal.room_settings.mute")%></span>
<%= f.check_box :mute_on_join, class: "custom-switch-input", checked: false %>
<span class="custom-switch-indicator float-right"></span>

View File

@ -17,7 +17,7 @@
%>
<div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
<div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px">
<%= image_tag(logo_image, height: '70')%>
<%= image_tag(@image, height: '70')%>
<h1 style="margin-bottom:30px">
<%= t('mailer.user.password_reset.title') %>
@ -32,7 +32,7 @@
</p>
<a
style="background: <%= user_color %>;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;"
style="background: <%= @color %>;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;"
href="<%= @url %>">
<%= t('mailer.user.password_reset.reset_link') %>
</a>

View File

@ -18,7 +18,7 @@
<div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
<div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px">
<%= image_tag(logo_image, height: '70') %>
<%= image_tag(@image, height: '70') %>
<h1 style="margin-bottom:30px">
<%= t('mailer.user.verify_email.welcome', name: @user[:name]) %>
@ -36,7 +36,7 @@
<%= t('mailer.user.verify_email.verify') %>
</p>
<a style="background: <%= user_color %>;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;" href="<%= @url %>">
<a style="background: <%= @color %>;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;" href="<%= @url %>">
<%= t('mailer.user.verify_email.verify_link') %>
</a>

View File

@ -173,7 +173,7 @@ en:
max_concurrent: The maximum number of concurrent sessions allowed has been reached!
modal:
create_room:
auto_join: Automatically join me into the room.
auto_join: Automatically join me into the room
create: Create Room
free_delete: You will be free to delete this room at any time.
name_placeholder: Enter a room name...

View File

@ -21,36 +21,89 @@ es:
attributes:
user:
accepted_terms: "Términos y condiciones"
administrator:
site_settings:
branding:
change: Cambiar imagen
info: Cambiar la imagen personalizada que aparece en la esquina superior izquierda
placeholder: Enlace de la imagen...
title: Imagen personalizada
color:
info: Cambiar el color principal utilizado en todo el sitio web
title: Color principal
subtitle: Personalizar Greenlight
title: Configuración del sitio web
flash:
banned: El usuario ha sido bloqueado.
unbanned: El usuario ha sido desbloqueado.
delete: El usuario ha sido eliminado.
delete_fail: El usuario no pudo ser eliminado.
demoted: El usuario ha sido degradado.
promoted: El usuario ha sido promovido.
unauthorized: No estas autorizado para ejecutar operaciones en este usuario.
title: Configuración de organización
users:
edit:
title: Editar detalles de usuario
settings:
ban: Bloquear usuario
delete: Eliminar
demote: Degradar usuario
edit: Editar
promote: Promover a administrador
unban: Desbloquear usuario
table:
authenticator: Autenificador
created: Creado
name: Nombre
not_found: No se encontraron usuarios con ese criterio
no_users: No se encontraron usuarios
role: Rol
uid: Identificador de usuario
username: Nombre de usuario
title: Administrar usuarios
bigbluebutton: BigBlueButton
bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión
bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión.
cancel: Cancelar
cookies:
cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
cookie_button: Acepto
copy: Copiar
default_admin: "Estas usilizando la contraseña por omisión para esta cuenta de usuario. Haz click <a href=\"%{edit_link}\">aquí </a> para cambiarla"
delete: Eliminar
delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
docs: Documentación
email: Cuenta de correo
email_sent: El mensaje fue enviado! (Verifica tu carpeta de Spam sí no lo haz recibido)
email_sent: "Tu email de %{email_type} ha sido enviado. (Revisa tu carpeta de Spam sí no lo has recibido)"
enter_your_name: Introduce tu nombre
errors:
internal:
message: Oh no! Parece que algo falló de tu lado.
help: "El error ha sido registrado, vamos a revisarlo."
migration_error:
contact_admin: "Sí tu no eres administrador, contacta a uno."
contact_admin: "Sí no eres administrador, contacta a uno."
continue: Me gustaría seguir utilizando la versión 1.0
notice: >
Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
upgrade: Muestrame como actualizar a la verisión 2.0
version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
messages:
blank: el valor no puede estar vacío
too_short: es demasiado corta
invalid: es invalida
taken: ya existe
accepted: debe ser aceptado
confirmation: "no conicide %{attribute}"
inclusion: no está incluido en la lista
not_found:
message: Ups! parece que no podemos encontrarle
message: Oh no! parece que no podemos encontrarle.
help: "¿Puede ser que haya sido eliminada?"
title: Errores
unauthorized:
message: No tienes acceso a ésta aplicación
help: "Sí tu crees que este es un error, contacta al administrador del sistema"
unprocessable:
message: "Ups!, La acción no puede ser procesada"
message: "Oh no!, La acción no puede ser procesada."
help: Desafortunadamente esta no es una acción valida
expired_reset_token: El enlace para reiniciar la contraseña ha expirado
features:
@ -68,11 +121,12 @@ es:
go_back: Atrás
greenlight: Greenlight
header:
create_room: Crear sala
all_recordings: Todas las grabaciones
dropdown:
account_settings: Organización
help: "¿Necesitas ayuda?"
home: Sala principal
settings: Configuración
home: Inicio
settings: Perfil de usuario
signout: Salir
home_room: Sala principal
info_update_success: La información ha sido actualizada exitósamente
@ -93,10 +147,11 @@ es:
video: Ve nuestro tutorial de como utilizar Greenlight
upgrade: Muestrame como actualizar a versión 2.0
version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
language_name: Español
language_name: Español (México)
language_default: Por omisión (idioma del navegador)
ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
login: Ingresar
login_title: Ingresar a tu cuenta
mailer:
user:
password_reset:
@ -107,8 +162,9 @@ es:
expire: Este enlace expira en dos horas
ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
verify_email:
welcome: "Bienvenido a %{bigbluebutton}, %{name}!"
success: "El registro de tu cuenta %{bigbluebutton} ha sido exitoso. Tu nombre de usuario es %{email}."
welcome: "Bienvenido a tu espacio personal %{name}"
success: "Haciendo uso de %{bigbluebutton}, puedes crear tus propias salas para sostener reuniones y colaborar con otros."
username: "Tu nombre de usuario es %{email}"
verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
verify_link: Verificar la cuenta de usuario
@ -117,20 +173,21 @@ es:
modal:
create_room:
auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
create: Crear sala
free_delete: Podrás eliminar la sala en el momento que quieras
name_placeholder: Introduce un nombre para la sala
not_blank: El nombre de la sala no puede estar vacío
title: Crear una sala nueva
delete_account:
confirm: "¿Estás seguro de querer eliminar tu cuenta?"
delete: "Estoy seguro, elimina mi cuenta"
confirm: "¿Estas seguro de querer eliminar esta cuenta de usuario?"
delete: Estoy seguro de eliminar ésta cuenta
keep: "De hecho, la conserbaré"
warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
delete_room:
confirm: "¿Estás seguro de querer eliminar %{room}?"
delete: "Estoy seguro, elimina esta sala"
keep: "Cambie de opinión, la conservaré"
warning: <b>No</b> podrás recuperar la sala ni las grabaciones asociadas
warning: "La recuperación de la sala o grabaciones asociadas a %{recordings_num} <b>no</b> sera posible."
login:
or: o
with: "Ingresar con %{provider}"
@ -150,6 +207,11 @@ es:
name_update_success: El nombre de la sala ha sido actualizado exitósamente
no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
pagy:
nav:
prev: "&lsaquo; Anterior"
next: "Siguiente &rsaquo;"
gap: "&hellip;"
password: Contraseña
password_empty_notice: La contraseña no puede estar vacía
password_reset_success: La contraseña ha sido cambiada
@ -158,7 +220,12 @@ es:
google: Google
microsoft_office365: Office 365
twitter: Twitter
recaptcha:
errors:
recaptcha_unreachable: Oh no! La respuesta de tu reCAPTCHA falló. Intentalo de nuevo.
verification_failed: "La verificación reCAPTCHA ha falado, intentalo nuevamente."
recording:
all_recordings: Todas las grabaciones
email: Enviar correo electrónico con la grabación
no_recordings: "Esta sala no tiene grabaciones %{inject}"
no_user_recordings: No tienes grabaciones
@ -182,7 +249,13 @@ es:
password: Nueva contraseña
confirm: Confirmación de nueva contraseña
update: Actualizar contraseña
roles:
administrator: Administrador
banned: Bloqueado
super_admin: Super Administrador
user: Usuario
room:
create_room: Crear una sala
create_room_error: Ocurrió un error al crear la sala
create_room_success: La sala fue creada exitósamente
invited: Hás sido invitado a ingresar
@ -191,7 +264,7 @@ es:
last_session: "Última sesión en %{session}"
owner: Dueño
no_sessions: Esta sala todavía no tiene sesiones
recordings: Grabaciones
recordings: Grabaciones de sala
sessions: Sesiones
settings: Configuración de sala
start: Iniciar
@ -199,7 +272,7 @@ es:
update_settings_error: Ocurrió un error al actualizar la configuración de la sala
update_settings_success: La configuración de la sala fue actualizada exitósamente
wait:
message: Ups! L sesión todavía no dado inicio
message: Oh no! La sesión todavía no ha comenzado.
auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
settings:
account:
@ -215,17 +288,14 @@ es:
disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
subtitle: Eliminar la cuenta de forma permanente
title: Eliminar cuenta
design:
not_supported: Personalización no es soportada actualmente
subtitle: Personalizar Greenlight
title: Diseño
password:
confirmation: Confirmación de contraseña nueva
new: Contraseña nueva
old: Contraseña anterior
subtitle: Cambiar tu contraseña
title: Contraseña
title: Configuración
title: Perfil de usuario
search: Buscar
signup:
password_confirm: Confirmación de contraseña
subtitle: Crear una cuenta
@ -247,3 +317,4 @@ es:
resend: Reenviar enlace para verificación de cuenta de correo
signin: "Ingresa para tener acceso a la información de tu cuenta "
title: Verificar tu cuenta de correo
verification: Verificación

View File

@ -21,36 +21,89 @@ es_MX:
attributes:
user:
accepted_terms: "Términos y condiciones"
administrator:
site_settings:
branding:
change: Cambiar imagen
info: Cambiar la imagen personalizada que aparece en la esquina superior izquierda
placeholder: Enlace de la imagen...
title: Imagen personalizada
color:
info: Cambiar el color principal utilizado en todo el sitio web
title: Color principal
subtitle: Personalizar Greenlight
title: Configuración del sitio web
flash:
banned: El usuario ha sido bloqueado.
unbanned: El usuario ha sido desbloqueado.
delete: El usuario ha sido eliminado.
delete_fail: El usuario no pudo ser eliminado.
demoted: El usuario ha sido degradado.
promoted: El usuario ha sido promovido.
unauthorized: No estas autorizado para ejecutar operaciones en este usuario.
title: Configuración de organización
users:
edit:
title: Editar detalles de usuario
settings:
ban: Bloquear usuario
delete: Eliminar
demote: Degradar usuario
edit: Editar
promote: Promover a administrador
unban: Desbloquear usuario
table:
authenticator: Autenificador
created: Creado
name: Nombre
not_found: No se encontraron usuarios con ese criterio
no_users: No se encontraron usuarios
role: Rol
uid: Identificador de usuario
username: Nombre de usuario
title: Administrar usuarios
bigbluebutton: BigBlueButton
bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión
bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión.
cancel: Cancelar
cookies:
cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
cookie_button: Acepto
copy: Copiar
default_admin: "Estas usilizando la contraseña por omisión para esta cuenta de usuario. Haz click <a href=\"%{edit_link}\">aquí </a> para cambiarla"
delete: Eliminar
delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
docs: Documentación
email: Cuenta de correo
email_sent: El mensaje fue enviado! (Verifica tu carpeta de Spam sí no lo haz recibido)
email_sent: "Tu email de %{email_type} ha sido enviado. (Revisa tu carpeta de Spam sí no lo has recibido)"
enter_your_name: Introduce tu nombre
errors:
internal:
message: Oh no! Parece que algo falló de tu lado.
help: "El error ha sido registrado, vamos a revisarlo."
migration_error:
contact_admin: "Sí tu no eres administrador, contacta a uno."
contact_admin: "Sí no eres administrador, contacta a uno."
continue: Me gustaría seguir utilizando la versión 1.0
notice: >
Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
upgrade: Muestrame como actualizar a la verisión 2.0
version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
messages:
blank: el valor no puede estar vacío
too_short: es demasiado corta
invalid: es invalida
taken: ya existe
accepted: debe ser aceptado
confirmation: "no conicide %{attribute}"
inclusion: no está incluido en la lista
not_found:
message: Ups! parece que no podemos encontrarle
message: Oh no! parece que no podemos encontrarle.
help: "¿Puede ser que haya sido eliminada?"
title: Errores
unauthorized:
message: No tienes acceso a ésta aplicación
help: "Sí tu crees que este es un error, contacta al administrador del sistema"
unprocessable:
message: "Ups!, La acción no puede ser procesada"
message: "Oh no!, La acción no puede ser procesada."
help: Desafortunadamente esta no es una acción valida
expired_reset_token: El enlace para reiniciar la contraseña ha expirado
features:
@ -68,11 +121,12 @@ es_MX:
go_back: Atrás
greenlight: Greenlight
header:
create_room: Crear sala
all_recordings: Todas las grabaciones
dropdown:
account_settings: Organización
help: "¿Necesitas ayuda?"
home: Sala principal
settings: Configuración
home: Inicio
settings: Perfil de usuario
signout: Salir
home_room: Sala principal
info_update_success: La información ha sido actualizada exitósamente
@ -97,6 +151,7 @@ es_MX:
language_default: Por omisión (idioma del navegador)
ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
login: Ingresar
login_title: Ingresar a tu cuenta
mailer:
user:
password_reset:
@ -107,8 +162,9 @@ es_MX:
expire: Este enlace expira en dos horas
ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
verify_email:
welcome: "Bienvenido a %{bigbluebutton}, %{name}!"
success: "El registro de tu cuenta %{bigbluebutton} ha sido exitoso. Tu nombre de usuario es %{email}."
welcome: "Bienvenido a tu espacio personal %{name}"
success: "Haciendo uso de %{bigbluebutton}, puedes crear tus propias salas para sostener reuniones y colaborar con otros."
username: "Tu nombre de usuario es %{email}"
verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
verify_link: Verificar la cuenta de usuario
@ -117,20 +173,21 @@ es_MX:
modal:
create_room:
auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
create: Crear sala
free_delete: Podrás eliminar la sala en el momento que quieras
name_placeholder: Introduce un nombre para la sala
not_blank: El nombre de la sala no puede estar vacío
title: Crear una sala nueva
delete_account:
confirm: "¿Estás seguro de querer eliminar tu cuenta?"
delete: "Estoy seguro, elimina mi cuenta"
confirm: "¿Estas seguro de querer eliminar esta cuenta de usuario?"
delete: Estoy seguro de eliminar ésta cuenta
keep: "De hecho, la conserbaré"
warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
delete_room:
confirm: "¿Estás seguro de querer eliminar %{room}?"
delete: "Estoy seguro, elimina esta sala"
keep: "Cambie de opinión, la conservaré"
warning: <b>No</b> podrás recuperar la sala ni las grabaciones asociadas
warning: "La recuperación de la sala o grabaciones asociadas a %{recordings_num} <b>no</b> sera posible."
login:
or: o
with: "Ingresar con %{provider}"
@ -150,6 +207,11 @@ es_MX:
name_update_success: El nombre de la sala ha sido actualizado exitósamente
no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
pagy:
nav:
prev: "&lsaquo; Anterior"
next: "Siguiente &rsaquo;"
gap: "&hellip;"
password: Contraseña
password_empty_notice: La contraseña no puede estar vacía
password_reset_success: La contraseña ha sido cambiada
@ -158,7 +220,12 @@ es_MX:
google: Google
microsoft_office365: Office 365
twitter: Twitter
recaptcha:
errors:
recaptcha_unreachable: Oh no! La respuesta de tu reCAPTCHA falló. Intentalo de nuevo.
verification_failed: "La verificación reCAPTCHA ha falado, intentalo nuevamente."
recording:
all_recordings: Todas las grabaciones
email: Enviar correo electrónico con la grabación
no_recordings: "Esta sala no tiene grabaciones %{inject}"
no_user_recordings: No tienes grabaciones
@ -182,7 +249,13 @@ es_MX:
password: Nueva contraseña
confirm: Confirmación de nueva contraseña
update: Actualizar contraseña
roles:
administrator: Administrador
banned: Bloqueado
super_admin: Super Administrador
user: Usuario
room:
create_room: Crear una sala
create_room_error: Ocurrió un error al crear la sala
create_room_success: La sala fue creada exitósamente
invited: Hás sido invitado a ingresar
@ -191,7 +264,7 @@ es_MX:
last_session: "Última sesión en %{session}"
owner: Dueño
no_sessions: Esta sala todavía no tiene sesiones
recordings: Grabaciones
recordings: Grabaciones de sala
sessions: Sesiones
settings: Configuración de sala
start: Iniciar
@ -199,7 +272,7 @@ es_MX:
update_settings_error: Ocurrió un error al actualizar la configuración de la sala
update_settings_success: La configuración de la sala fue actualizada exitósamente
wait:
message: Ups! L sesión todavía no dado inicio
message: Oh no! La sesión todavía no ha comenzado.
auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
settings:
account:
@ -215,17 +288,14 @@ es_MX:
disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
subtitle: Eliminar la cuenta de forma permanente
title: Eliminar cuenta
design:
not_supported: Personalización no es soportada actualmente
subtitle: Personalizar Greenlight
title: Diseño
password:
confirmation: Confirmación de contraseña nueva
new: Contraseña nueva
old: Contraseña anterior
subtitle: Cambiar tu contraseña
title: Contraseña
title: Configuración
title: Perfil de usuario
search: Buscar
signup:
password_confirm: Confirmación de contraseña
subtitle: Crear una cuenta
@ -247,3 +317,4 @@ es_MX:
resend: Reenviar enlace para verificación de cuenta de correo
signin: "Ingresa para tener acceso a la información de tu cuenta "
title: Verificar tu cuenta de correo
verification: Verificación

View File

@ -32,7 +32,7 @@ zh_CN:
info: 更改整个网站使用的主颜色
title: 主颜色
subtitle: 自定义Greenlight
title: 设置
title: 站设置
flash:
banned: 已成功禁止用户。
unbanned: 已成功取消对用户的禁止。
@ -41,7 +41,7 @@ zh_CN:
demoted: 用户已成功降级
promoted: 用户已成功升级
unauthorized: 您无权对此用户执行操作
title: 组织设置
title: 全局设置
users:
edit:
title: 编辑用户详细信息
@ -53,7 +53,7 @@ zh_CN:
promote: 提升为管理员
unban: 取消禁止用户
table:
authenticator: Authenticator
authenticator: 认证方式
created: Created
name: 名字
not_found: 没有与您的搜索匹配的用户
@ -89,6 +89,12 @@ zh_CN:
version: 我们已经发布了新版Greenlight但您的数据库不兼容。
messages:
blank: 不能是空白的
too_short: 太短了
invalid: 无效
taken: 已经有人用了
accepted: 必须同意
confirmation: "不匹配%{attribute}"
inclusion: 列表中不存在
not_found:
message: 哎哟!看来我们找不到它了。
help: 它有可能被移除了吗?
@ -102,7 +108,7 @@ zh_CN:
expired_reset_token: 密码重置链接已过期!
features:
title: 功能
rooms: 个人房间
rooms: 个人会议室
recordings: 录像管理
designs: 定制设计
authentication: 用户认证
@ -117,12 +123,12 @@ zh_CN:
header:
all_recordings: 所有录像
dropdown:
account_settings: 组织
account_settings: 全局设置
help: 帮助
home: 大厅
settings: Profile
home: 首页
settings: 个人设置
signout: 退出
home_room: 大厅
home_room: 首页会议室
info_update_success: 信息更新成功。
invalid_user: 由于找不到用户,登录失败。您确定电子邮件帐户是正确的吗?
invalid_credentials: 登录失败。输入有误?
@ -136,7 +142,7 @@ zh_CN:
autogenerated: '此电子邮件由BigBlueButton自动生成。'
footer: 'BigBlueButton是一个开源的Web会议系统。有关BigBlueButton的更多信息请参阅https://bigBlueButton.org/。'
landing:
about: "%{href} 是开源Web会议服务器BigBluebutton的简易前端。我们可以创建个人房间并主持会议,或通过链接加入其他会议。"
about: "%{href} 是开源Web会议服务器BigBluebutton的简易前端。我们可以创建并主持会议,或通过链接加入其他会议。"
welcome: 欢迎使用BigBlueButton
video: 请看使用说明
upgrade: 告诉我怎么升级到 2.0!
@ -157,7 +163,7 @@ zh_CN:
ignore: 如果您没有请求密码重置,安全的做法是忽略此电子邮件。
verify_email:
welcome: "欢迎来到您的个人空间,%{name}"
success: "使用%{bigbluebutton},您可以创建自己的会议室来主持会议并与其他人协作。"
success: "使用%{bigbluebutton},您可以创建私有会议室来主持会议并与其他人协作。"
username: "您的用户名是%{email}。"
verify: 要验证您的帐户,只需单击下面的按钮。
verify_text: '要验证您的帐户,只需点击以下链接:%{url}'
@ -166,12 +172,12 @@ zh_CN:
max_concurrent: 已达到允许的最大并发会话数!
modal:
create_room:
auto_join: 自动加入此房间
create: 创建房间
free_delete: 任何时候都可以删除这个房间
name_placeholder: 这里请输入房间名...
not_blank: 房间名不能为空
title: 创建新的房间
auto_join: 自动加入此会议室
create: 创建会议室
free_delete: 任何时候都可以删除这个会议室
name_placeholder: 这里请输入会议室名称...
not_blank: 会议室名称不能为空
title: 创建新的会议室
delete_account:
confirm: 确实要删除此帐户吗?
delete: 我确定要删除这个帐户。
@ -179,28 +185,33 @@ zh_CN:
warning: 这是最终决定,您将<b>无法</b>恢复相关数据。
delete_room:
confirm: "确定要删除%{room}吗?"
delete: 我确定删除这个房间
delete: 我确定删除这个会议室
keep: 我还是留着它吧
warning: 您将<b>无法</b>恢复这个房间和它相关的所有录像
warning: "您将 <b>不能</b> 恢复这个会议室或任何跟 %{recordings_num} 相关的录像。"
login:
or:
with: "通过 %{provider}登录"
forgot_password: 忘记密码?
rename_recording:
room_settings:
title: 房间设置
update: 更新房间
title: 会议室设置
update: 修改会议室
client: 选择客户端类型
mute: 用户加入时静音
default: 默认
html: HTML5
flash: Flash
footer_text: 您可以随时调整房间
footer_text: 您可以随时调整会议室
rename_room:
name_placeholder: 这里请输入新房间名称…
name_update_success: 房间名修改成功!
name_placeholder: 这里请输入新会议室名称…
name_update_success: 会议室名称修改成功!
no_user_email_exists: 没有指定电子邮件的现有用户。请确保输入正确。
omniauth_error: 与omniauth进行身份验证时出错。请再试一次或与管理员联系
pagy:
nav:
prev: "&lsaquo; 上一页"
next: "下一页 &rsaquo;"
gap: "&hellip;"
password: 密码
password_empty_notice: 密码不能为空。
password_reset_success: 密码已重置。
@ -209,10 +220,14 @@ zh_CN:
google: Google
microsoft_office365: Office 365
twitter: Twitter
recaptcha:
errors:
recaptcha_unreachable: 哎呀我们未能验证您的reCAPTCHA 响应。请再试一次。
verification_failed: reCAPTCHA 验证失败,请再试一次。
recording:
all_recordings: 所有录像
email: 通过Email发送录像
no_recordings: "这个房间没有%{inject}录像"
no_recordings: "这个会议室没有%{inject}录像"
no_user_recordings: 您当前没有录像。
no_matched_recordings: "没有搜索到 %{inject} 录像"
recorded_on: "录制于%{date}"
@ -232,7 +247,7 @@ zh_CN:
reset_password:
subtitle: 重置密码
password: 新密码
confirm: 重复输入新密码
confirm: 再次输入新密码
update: 更新密码
roles:
administrator: 管理员
@ -240,22 +255,22 @@ zh_CN:
super_admin: 超级管理员
user: 用户
room:
create_room: 创建房间
create_room_error: 创建房间出错
create_room_success: 房间创建成功
create_room: 创建会议室
create_room_error: 创建会议室出错
create_room_success: 会议室创建成功
invited: 您已被邀请加入
invite_participants: 邀请参与者的链接
join: 加入
last_session: "上一次会议%{session}"
owner: 主持人
no_sessions: 房间从未使用!
recordings: 房间录像
no_sessions: 会议室从未使用!
recordings: 会议录像
sessions: 会议
settings: 房间设置
settings: 会议室设置
start: 开始
unavailable: 由于未验证所有者的电子邮件,此房间当前不可用。
update_settings_error: 更新房间设置出错
update_settings_success: 房间设置更新成功
unavailable: 由于未验证所有者的电子邮件,此会议室当前不可用。
update_settings_error: 修改会议室设置出错
update_settings_success: 会议室设置修改成功
wait:
message: 哎呀!会议还没开始呢。
auto: 会议开始后您将自动进入
@ -265,21 +280,21 @@ zh_CN:
language: 语言
provider: 应用平台
image: 头像
image_url: 头像URL
subtitle: 更新您的帐户信息
image_url: 个人头像URL
subtitle: 更新帐户信息
title: 帐户信息
delete:
button: 我确定要删除我的帐户
disclaimer: 删除帐户后<b>无法</b>恢复。帐户所有相关信息都会被移除,包括设置、房间和录像。
disclaimer: 删除帐户后<b>无法</b>恢复。帐户所有相关信息都会被移除,包括设置、会议室和录像。
subtitle: 永久删除您的帐户
title: 删除帐户
password:
confirmation: 重复输入新密码
confirmation: 再次输入新密码
new: 新密码
old: 旧密码
subtitle: 修改密码
title: 密码
title: Profile
title: 个人设置
search: 搜索
signup:
password_confirm: 重复输入新密码

View File

@ -97,6 +97,15 @@ describe RoomsController, type: :controller do
expect(assigns(:name)).to eql("")
end
it "redirects to admin if user is a super_admin" do
@request.session[:user_id] = @owner.id
@owner.add_role :super_admin
get :show, params: { room_uid: @owner.main_room, search: :none }
expect(response).to redirect_to(admins_path)
end
end
describe "POST #create" do