Translated emails and added time ago JS method
This commit is contained in:
parent
f6299e8d99
commit
973ca46c08
44
app/assets/javascripts/time.js
Normal file
44
app/assets/javascripts/time.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
(function() {
|
||||||
|
function updateTimes() {
|
||||||
|
var updateIn = 0;
|
||||||
|
forEachElement('time', function(time) {
|
||||||
|
var date = new Date(time.getAttribute('datetime'));
|
||||||
|
var timeAgo = ((new Date()) - date) / (1000);
|
||||||
|
var unit = "seconds";
|
||||||
|
var updateTime = 0;
|
||||||
|
|
||||||
|
if (timeAgo >= 31536000) {
|
||||||
|
timeAgo /= 31536000;
|
||||||
|
unit = "over_x_years";
|
||||||
|
} else if (timeAgo >= 172800) {
|
||||||
|
timeAgo /= 172800;
|
||||||
|
unit = "x_days";
|
||||||
|
} else if (timeAgo >= 3600) {
|
||||||
|
timeAgo /= 3600;
|
||||||
|
unit = "x_hours";
|
||||||
|
updateTime = 3600;
|
||||||
|
} else if (timeAgo >= 60) {
|
||||||
|
timeAgo /= 60;
|
||||||
|
unit = "x_minutes"
|
||||||
|
updateTime = 60;
|
||||||
|
} else {
|
||||||
|
timeAgo = 1;
|
||||||
|
unit = "less_than_x_minutes";
|
||||||
|
updateTime = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (updateTime > 0 && (updateIn < 1 || updateTime < updateIn)) {
|
||||||
|
updateIn = updateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
time.setAttribute("title", date);
|
||||||
|
time.innerHTML = I18n.t('datetime.distance_in_words.time_ago', {time: I18n.t('datetime.distance_in_words.' + unit, {count: Math.floor(timeAgo)})});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (updateIn > 0) {
|
||||||
|
window.setTimeout(updateTimes, updateIn + 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", updateTimes, false);
|
||||||
|
})();
|
@ -241,6 +241,11 @@ class ApplicationController < LinguaFrancaApplicationController
|
|||||||
expiry ||= (Time.now + 12.hours)
|
expiry ||= (Time.now + 12.hours)
|
||||||
session[:confirm_uid] = user.id
|
session[:confirm_uid] = user.id
|
||||||
|
|
||||||
|
unless user.locale.present?
|
||||||
|
user.locale = I18n.locale
|
||||||
|
user.save
|
||||||
|
end
|
||||||
|
|
||||||
# send the confirmation email and make sure it get sent as quickly as possible
|
# send the confirmation email and make sure it get sent as quickly as possible
|
||||||
UserMailer.send_mail :email_confirmation do
|
UserMailer.send_mail :email_confirmation do
|
||||||
EmailConfirmation.create(user_id: user.id, expiry: expiry, url: url)
|
EmailConfirmation.create(user_id: user.id, expiry: expiry, url: url)
|
||||||
@ -324,12 +329,8 @@ class ApplicationController < LinguaFrancaApplicationController
|
|||||||
end
|
end
|
||||||
user = User.find_by_email(params[:email])
|
user = User.find_by_email(params[:email])
|
||||||
|
|
||||||
unless user
|
unless user.present?
|
||||||
# not really a good UX so we should fix this later
|
user = User.create(:email => params[:email], locale: I18n.locale)
|
||||||
#do_404
|
|
||||||
#return
|
|
||||||
user = User.new(:email => params[:email])
|
|
||||||
user.save!
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# generate the confirmation, send the email and show the 403
|
# generate the confirmation, send the email and show the 403
|
||||||
|
@ -1361,6 +1361,9 @@ module ApplicationHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def comment(comment)
|
def comment(comment)
|
||||||
|
add_inline_script :time
|
||||||
|
add_js_translation('datetime.distance_in_words')
|
||||||
|
|
||||||
content_tag(:div, class: 'comment-body') do
|
content_tag(:div, class: 'comment-body') do
|
||||||
content_tag(:h4, comment.user.name, class: 'comment-title') +
|
content_tag(:h4, comment.user.name, class: 'comment-title') +
|
||||||
content_tag(:time, time(comment.created_at, :default), datetime: comment.created_at.to_s) +
|
content_tag(:time, time(comment.created_at, :default), datetime: comment.created_at.to_s) +
|
||||||
|
@ -10,6 +10,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
|
|
||||||
def email_confirmation(confirmation)
|
def email_confirmation(confirmation)
|
||||||
@confirmation = EmailConfirmation.find(confirmation) if confirmation.present?
|
@confirmation = EmailConfirmation.find(confirmation) if confirmation.present?
|
||||||
|
I18n.locale = @confirmation.user.locale if @confirmation.user.locale.present?
|
||||||
@subject = _'email.subject.confirm_email','Please confirm your email address'
|
@subject = _'email.subject.confirm_email','Please confirm your email address'
|
||||||
mail to: @confirmation.user.named_email, subject: @subject
|
mail to: @confirmation.user.named_email, subject: @subject
|
||||||
end
|
end
|
||||||
@ -18,6 +19,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@registration = ConferenceRegistration.find(registration) if registration.present?
|
@registration = ConferenceRegistration.find(registration) if registration.present?
|
||||||
@conference = @registration.conference
|
@conference = @registration.conference
|
||||||
@user = @registration.user
|
@user = @registration.user
|
||||||
|
I18n.locale = @user.locale if @user.locale.present?
|
||||||
@subject = @conference.registration_status.to_sym == :pre ?
|
@subject = @conference.registration_status.to_sym == :pre ?
|
||||||
_(
|
_(
|
||||||
'email.subject.pre_registration_confirmed',
|
'email.subject.pre_registration_confirmed',
|
||||||
@ -47,6 +49,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@workshop = Workshop.find(workshop) if workshop.present?
|
@workshop = Workshop.find(workshop) if workshop.present?
|
||||||
@requester = User.find(requester) if requester.present?
|
@requester = User.find(requester) if requester.present?
|
||||||
addresses = []
|
addresses = []
|
||||||
|
I18n.locale = @workshop.active_facilitators.first.locale if @workshop.active_facilitators.first.locale.present?
|
||||||
@workshop.active_facilitators.each do |f|
|
@workshop.active_facilitators.each do |f|
|
||||||
addresses << f.named_email
|
addresses << f.named_email
|
||||||
end
|
end
|
||||||
@ -62,6 +65,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@workshop = Workshop.find(workshop) if workshop.present?
|
@workshop = Workshop.find(workshop) if workshop.present?
|
||||||
@conference = Conference.find(@workshop.conference_id)
|
@conference = Conference.find(@workshop.conference_id)
|
||||||
@user = User.find(user) if user.present?
|
@user = User.find(user) if user.present?
|
||||||
|
I18n.locale = @user.locale if @user.locale.present?
|
||||||
@subject = (_'email.subject.workshop_request_approved',
|
@subject = (_'email.subject.workshop_request_approved',
|
||||||
"You have been added as a facilitator of #{@workshop.title}",
|
"You have been added as a facilitator of #{@workshop.title}",
|
||||||
:vars => {:workshop_title => @workshop.title})
|
:vars => {:workshop_title => @workshop.title})
|
||||||
@ -72,6 +76,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@workshop = Workshop.find(workshop) if workshop.present?
|
@workshop = Workshop.find(workshop) if workshop.present?
|
||||||
@conference = @workshop.conference
|
@conference = @workshop.conference
|
||||||
@user = User.find(user) if user.present?
|
@user = User.find(user) if user.present?
|
||||||
|
I18n.locale = @user.locale if @user.present? && @user.locale.present?
|
||||||
@subject = (_'email.subject.workshop_request_denied',
|
@subject = (_'email.subject.workshop_request_denied',
|
||||||
"Your request to facilitate #{@workshop.title} has been denied",
|
"Your request to facilitate #{@workshop.title} has been denied",
|
||||||
:vars => {:workshop_title => @workshop.title})
|
:vars => {:workshop_title => @workshop.title})
|
||||||
@ -84,6 +89,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@locale = locale
|
@locale = locale
|
||||||
@locale_name = language_name(locale)
|
@locale_name = language_name(locale)
|
||||||
@user = User.find(user) if user.present?
|
@user = User.find(user) if user.present?
|
||||||
|
I18n.locale = @user.locale if @user.present? && @user.locale.present?
|
||||||
@translator = User.find(translator) if translator.present?
|
@translator = User.find(translator) if translator.present?
|
||||||
@subject = (_'email.subject.workshop_translated',
|
@subject = (_'email.subject.workshop_translated',
|
||||||
"The #{@locale_name} translation for #{@workshop.title} has been modified",
|
"The #{@locale_name} translation for #{@workshop.title} has been modified",
|
||||||
@ -98,6 +104,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@workshop = Workshop.find(workshop) if workshop.present?
|
@workshop = Workshop.find(workshop) if workshop.present?
|
||||||
@data = data
|
@data = data
|
||||||
@user = User.find(user) if user.present?
|
@user = User.find(user) if user.present?
|
||||||
|
I18n.locale = @user.locale if @user.present? && @user.locale.present?
|
||||||
@translator = User.find(translator) if translator.present?
|
@translator = User.find(translator) if translator.present?
|
||||||
@subject = (_'email.subject.workshop_original_content_changed',
|
@subject = (_'email.subject.workshop_original_content_changed',
|
||||||
"Original content for #{@workshop.title} has been modified",
|
"Original content for #{@workshop.title} has been modified",
|
||||||
@ -119,6 +126,7 @@ class UserMailer < ActionMailer::Base
|
|||||||
@workshop = Workshop.find(workshop) if workshop.present?
|
@workshop = Workshop.find(workshop) if workshop.present?
|
||||||
@comment = Comment.find(comment) if comment.present?
|
@comment = Comment.find(comment) if comment.present?
|
||||||
@user = User.find(user) if user.present?
|
@user = User.find(user) if user.present?
|
||||||
|
I18n.locale = @user.locale if @user.present? && @user.locale.present?
|
||||||
|
|
||||||
if @comment.reply?
|
if @comment.reply?
|
||||||
@subject = (_'email.subject.workshop_comment.reply', vars: { user_name: @comment.user.name })
|
@subject = (_'email.subject.workshop_comment.reply', vars: { user_name: @comment.user.name })
|
||||||
|
@ -82,3 +82,4 @@
|
|||||||
%button.close-btn.subdued=_'forms.actions.generic.close'
|
%button.close-btn.subdued=_'forms.actions.generic.close'
|
||||||
= yield :footer_scripts if content_for?(:footer_scripts)
|
= yield :footer_scripts if content_for?(:footer_scripts)
|
||||||
= inline_scripts
|
= inline_scripts
|
||||||
|
= emit_js_translations
|
||||||
|
@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
|
|||||||
|
|
||||||
# Precompile additional assets.
|
# Precompile additional assets.
|
||||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||||
Rails.application.config.assets.precompile += %w( user-mailer.css map.js pen.js editor.js markdown.js html2canvas.js main.js housing.js schedule.js favicon.ico )
|
Rails.application.config.assets.precompile += %w( user-mailer.css map.js pen.js time.js editor.js markdown.js html2canvas.js main.js housing.js schedule.js favicon.ico )
|
||||||
|
@ -1009,7 +1009,7 @@ es:
|
|||||||
actions:
|
actions:
|
||||||
generic:
|
generic:
|
||||||
add_comment: Añadir comentario
|
add_comment: Añadir comentario
|
||||||
agree: Estoy en acuerdo.
|
agree: Estoy en acuerdo
|
||||||
register: Registrarse
|
register: Registrarse
|
||||||
edit_registration: Cambiar mi registracion
|
edit_registration: Cambiar mi registracion
|
||||||
custom_amount: Cantidad diferente
|
custom_amount: Cantidad diferente
|
||||||
|
Loading…
x
Reference in New Issue
Block a user