Development (#250)
* Fixed fonts * Fixed assets * Fixed logo in emails * Switched to immediate email delivery * Fixed prod emails and added deployment tasks * Fixed deployments * Updated README * Added Bike Collectives Core to README * Fixed issue with map loading * Fixed issue with map loading * Added map JSON data to assets precompilation * Fixed error sending to conference administrators * Let error report signature wrap * Fixed backtrace in error reports * Fixed backtrace in error reports * Moved pronoun heading to make it more obvoius I moved the "Pronoun" heading directly above the input field. It turned out that a lot of users were entering "He or "She" in the name field, I believe that was because of the placement of the "Pronoun" heading. I also needed to remove the optional warning but I'm hoping that won't cause problems. * Added an error message when no email address is used on login * Fixed select guest table * Added house rules to housing admin and review * Edit workshop locale warning
This commit is contained in:
parent
4054f450fc
commit
f54c09f248
@ -123,6 +123,7 @@ table, .table {
|
||||
td, .table-td {
|
||||
&.inner-table {
|
||||
padding: 0.5em;
|
||||
vertical-align: top;
|
||||
|
||||
table {
|
||||
margin: 0;
|
||||
@ -133,6 +134,10 @@ table, .table {
|
||||
&.bold {
|
||||
@include font-family(secondary);
|
||||
}
|
||||
|
||||
.rules {
|
||||
font-size: 0.75em;
|
||||
}
|
||||
}
|
||||
|
||||
tbody th {
|
||||
@ -859,7 +864,7 @@ nav.sub-menu {
|
||||
min-width: 15em;
|
||||
}
|
||||
|
||||
.host-notes {
|
||||
.host-notes, .house-rules {
|
||||
@include font-family(primary);
|
||||
font-size: 0.85em;
|
||||
border: 0.1em solid $light-gray;
|
||||
@ -876,6 +881,11 @@ nav.sub-menu {
|
||||
}
|
||||
}
|
||||
|
||||
.house-rules {
|
||||
max-height: 30em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.guest-notes {
|
||||
position: relative;
|
||||
float: left;
|
||||
|
@ -153,43 +153,6 @@ table, .table {
|
||||
}
|
||||
}
|
||||
|
||||
// td, .table-td {
|
||||
// &.inner-table {
|
||||
// padding: 0;
|
||||
|
||||
// table {
|
||||
// margin: 0;
|
||||
// width: 100%;
|
||||
// }
|
||||
|
||||
// tr:first-child {
|
||||
// td, th {
|
||||
// border-top: 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
// tr:last-child {
|
||||
// td, th {
|
||||
// border-bottom: 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
// td, th {
|
||||
// &:first-child {
|
||||
// border-left: 0
|
||||
// }
|
||||
|
||||
// &:last-child {
|
||||
// border-right: 0
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// &.bold {
|
||||
// @include font-family(secondary);
|
||||
// }
|
||||
// }
|
||||
|
||||
tbody th {
|
||||
width: 0.1rem;
|
||||
}
|
||||
@ -1760,6 +1723,10 @@ ul.warnings {
|
||||
.text-field & {
|
||||
margin: 0 0 1em 0;
|
||||
}
|
||||
|
||||
&.top-message {
|
||||
margin-top: 2em;
|
||||
}
|
||||
}
|
||||
|
||||
.success-info {
|
||||
|
@ -479,8 +479,10 @@ class ConferenceAdministrationController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@excel_data[:data] << host_data
|
||||
end
|
||||
|
||||
return respond_to do |format|
|
||||
format.xlsx { render xlsx: '../conferences/stats', filename: "housing" }
|
||||
end
|
||||
|
@ -67,8 +67,8 @@ class WorkshopsController < ApplicationController
|
||||
else
|
||||
return do_403 unless @can_edit
|
||||
|
||||
@title = @workshop.title
|
||||
@info = @workshop.info
|
||||
@title = @workshop.title!
|
||||
@info = @workshop.info!
|
||||
end
|
||||
|
||||
@needs = JSON.parse(@workshop.needs || '[]').map &:to_sym
|
||||
|
@ -112,7 +112,7 @@ module AdminHelper
|
||||
end
|
||||
|
||||
def get_housing_match(host, guest, space)
|
||||
housing_data = guest.housing_data || []
|
||||
housing_data = guest.housing_data || {}
|
||||
|
||||
if housing_data['host'].present?
|
||||
if housing_data['host'] == host.id
|
||||
|
@ -137,7 +137,8 @@ module FormHelper
|
||||
|
||||
if options[:warning].present?
|
||||
description_id ||= "#{id}-desc"
|
||||
html += content_tag(:div, _(options[:warning], :s, 2), id: description_id, class: 'warning-info')
|
||||
# html += content_tag(:div, _(options[:warning], :s, 2), id: description_id, class: 'warning-info')
|
||||
html += status_bubble(_(options[:warning], :s, 2), :warning, id: description_id)
|
||||
end
|
||||
|
||||
aria = {}
|
||||
|
@ -85,8 +85,14 @@ module GeocoderHelper
|
||||
end
|
||||
|
||||
def location_link(location)
|
||||
return '' unless location.present? && location.address.present?
|
||||
content_tag(:a, (_!location.address), href: "http://www.google.com/maps/place/#{location.latitude},#{location.longitude}")
|
||||
return '' unless location.present?
|
||||
address = if location.is_a?(Location)
|
||||
location.street
|
||||
else
|
||||
location.address
|
||||
end
|
||||
return '' unless address.present?
|
||||
content_tag(:a, (_!address), href: "http://www.google.com/maps/place/#{location.latitude},#{location.longitude}")
|
||||
end
|
||||
|
||||
def same_city?(location1, location2)
|
||||
|
@ -112,20 +112,20 @@ module WidgetsHelper
|
||||
@housing_data[id][:guest_data][guest_id][:errors].each do |error, value|
|
||||
if value.is_a?(Array)
|
||||
value.each do |v|
|
||||
status_html += content_tag(:li, _("errors.messages.housing.space.#{error.to_s}", vars: v))
|
||||
status_html += content_tag(:li, _("errors.messages.housing.space.#{error.to_s}", vars: v).html_safe)
|
||||
end
|
||||
else
|
||||
status_html += content_tag(:li, _("errors.messages.housing.space.#{error.to_s}", vars: value))
|
||||
status_html += content_tag(:li, _("errors.messages.housing.space.#{error.to_s}", vars: value).html_safe)
|
||||
end
|
||||
end
|
||||
|
||||
@housing_data[id][:guest_data][guest_id][:warnings].each do |error, value|
|
||||
if value.is_a?(Array)
|
||||
value.each do |v|
|
||||
status_html += content_tag(:li, _("warnings.messages.housing.space.#{error.to_s}", v))
|
||||
status_html += content_tag(:li, _("warnings.messages.housing.space.#{error.to_s}", v).html_safe)
|
||||
end
|
||||
else
|
||||
status_html += content_tag(:li, _("warnings.messages.housing.space.#{error.to_s}", vars: value))
|
||||
status_html += content_tag(:li, _("warnings.messages.housing.space.#{error.to_s}", vars: value).html_safe)
|
||||
end
|
||||
end
|
||||
|
||||
@ -326,4 +326,23 @@ module WidgetsHelper
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def strong(text)
|
||||
content_tag(:strong, text)
|
||||
end
|
||||
|
||||
def phone_link(number)
|
||||
content_tag(:a, number, href: "tel:#{number}")
|
||||
end
|
||||
|
||||
def email_link(email)
|
||||
content_tag(:a, email, href: "mailto:#{email}")
|
||||
end
|
||||
|
||||
def status_bubble(text, status, attributes = {})
|
||||
attributes[:class] ||= []
|
||||
attributes[:class] = [attributes[:class]] unless attributes[:class].is_a?(Array)
|
||||
attributes[:class] << "#{status}-info"
|
||||
content_tag(:div, text.html_safe, attributes)
|
||||
end
|
||||
end
|
||||
|
@ -8,15 +8,22 @@
|
||||
|
||||
- first_row = true
|
||||
%table.hosts.admin-edit
|
||||
- @hosts.each do |id, registration|
|
||||
- unless first_row
|
||||
%tr.spacer
|
||||
%td
|
||||
%tr.host
|
||||
%th
|
||||
.name=registration.user.name
|
||||
.address=registration.housing_data['address']
|
||||
- if registration.housing_data['notes'].present?
|
||||
.host-notes=paragraph(registration.housing_data['notes'])
|
||||
%td.inner-table{colspan: 2}=host_guests_table(registration)
|
||||
- first_row = false
|
||||
- @hosts.sort_by{ |id, registration| registration.user.name }.each do |id, registration|
|
||||
- if @housing_data[id][:space].map { |k,v| v }.sum > 0
|
||||
- unless first_row
|
||||
%tr.spacer
|
||||
%td
|
||||
%tr.host
|
||||
%th
|
||||
.name=registration.user.name
|
||||
.address=location_link(Location.find_location(registration.housing_data['address'], @this_conference.city))
|
||||
- if registration.housing_data['notes'].present?
|
||||
.host-notes=paragraph(registration.housing_data['notes'])
|
||||
- if registration.housing_data['info'].present?
|
||||
%div=_'articles.conference_registration.headings.housing.Rules', :t
|
||||
.house-rules
|
||||
=richtext(registration.housing_data['info'], 4)
|
||||
|
||||
%td.inner-table{colspan: 2}
|
||||
=host_guests_table(registration)
|
||||
- first_row = false
|
||||
|
@ -39,6 +39,16 @@
|
||||
- if @allow_reopen_attendance
|
||||
.actions.centered
|
||||
= button :reopen_registration, value: :reopen_registration
|
||||
- if @host
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h3=_'articles.conferences.headings.housing_info', :t
|
||||
%p=(_'articles.conference_registration.paragraphs.Housing', :p, vars: { name: strong(@host.user.name), address: location_link(Location.find_location(@host.housing_data['address'], @this_conference.city)), phone: phone_link(@host.housing_data['phone']), email: email_link(@host.user.email) }).html_safe
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h4=_'articles.conference_registration.headings.hosting_info', :t
|
||||
= richtext @host.housing_data['info']
|
||||
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h3=_'articles.workshops.headings.Workshops', :t
|
||||
|
@ -20,6 +20,6 @@
|
||||
- locale_translation = language_name(locale, true)
|
||||
- translation_text = (_'translate.content.change_locale', "Read in #{locale_translation}", vars: {language: locale_translation}, locale: locale)
|
||||
%a{href: url, lang: locale, title: translation_text}
|
||||
%span{aria: {hidden: true}}=_!locale
|
||||
%span{aria: {hidden: :true}}=_!locale
|
||||
= off_screen translation_text
|
||||
|
@ -13,7 +13,7 @@
|
||||
- if preview.blank? && translations_available_for_editing
|
||||
.actions.center
|
||||
- translations_available_for_editing.each do |locale|
|
||||
= link_to (_'actions.workshops.Translate', "Translate into #{language_name(locale)}", :vars => {:language => language_name(locale)}), translate_workshop_url(workshop.conference.slug, workshop.id, locale), :class => [:button, :translate]
|
||||
= link_to (_'actions.workshops.Translate', "Translate into #{language_name(locale)}", vars: {language: language_name(locale)}), translate_workshop_url(workshop.conference.slug, workshop.id, locale), class: [:button, :translate]
|
||||
- if logged_in?
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.workshops.headings.facilitators'
|
||||
@ -30,19 +30,19 @@
|
||||
.details
|
||||
.email=_!u.email
|
||||
- if f.role.to_sym == :requested
|
||||
=(link_to (_'actions.workshops.Approve'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'approve'), :class => [:button, :modify])
|
||||
=(link_to (_'actions.workshops.Deny'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'deny'), :class => [:button, :delete])
|
||||
=(link_to (_'actions.workshops.Approve'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'approve'), class: [:button, :modify])
|
||||
=(link_to (_'actions.workshops.Deny'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'deny'), class: [:button, :delete])
|
||||
- elsif workshop.can_remove?(current_user, u)
|
||||
=(link_with_confirmation (_'actions.workshops.Make_Owner'), (_'modals.workshops.facilitators.confirm_transfer_ownership', vars: { user_name: u.name}),approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'switch_ownership'), :class => [:button, :modify]) unless f.role.to_sym == :creator || !workshop.creator?(current_user)
|
||||
=(link_with_confirmation (_"actions.workshops.#{is_this_user ? 'Leave' : 'Remove'}"), (_"modals.workshops.facilitators.confirm_remove#{is_this_user ? '_self' : ''}", vars: { user_name: u.name}), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'remove'), :class => [:button, :delete])
|
||||
=(link_with_confirmation (_'actions.workshops.Make_Owner'), (_'modals.workshops.facilitators.confirm_transfer_ownership', vars: { user_name: u.name}),approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'switch_ownership'), class: [:button, :modify]) unless f.role.to_sym == :creator || !workshop.creator?(current_user)
|
||||
=(link_with_confirmation (_"actions.workshops.#{is_this_user ? 'Leave' : 'Remove'}"), (_"modals.workshops.facilitators.confirm_remove#{is_this_user ? '_self' : ''}", vars: { user_name: u.name}), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'remove'), class: [:button, :delete])
|
||||
- if is_this_user && workshop.requested_collaborator?(current_user)
|
||||
.details
|
||||
=(link_with_confirmation (_'actions.workshops.Cancel_Request'), (_'modals.workshops.facilitators.confirm_cancel_request'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'remove'), :class => [:button, :delete])
|
||||
=(link_with_confirmation (_'actions.workshops.Cancel_Request'), (_'modals.workshops.facilitators.confirm_cancel_request'), approve_facilitate_workshop_request_path(workshop.conference.slug, workshop.id, f.user_id, 'remove'), class: [:button, :delete])
|
||||
- unless preview.present?
|
||||
=(link_to (_'actions.workshops.Facilitate'), facilitate_workshop_path(workshop.conference.slug, workshop.id), :class => [:button, workshop.needs_facilitators ? :accented : :subdued]) unless workshop.facilitator?(current_user)
|
||||
=(link_to (_'actions.workshops.Facilitate'), facilitate_workshop_path(workshop.conference.slug, workshop.id), class: [:button, workshop.needs_facilitators ? :accented : :subdued]) unless workshop.facilitator?(current_user)
|
||||
- if is_facilitator
|
||||
%h4=_'articles.workshops.headings.add_facilitator','Add a facilitator'
|
||||
= form_tag workshop_add_facilitator_path(workshop.conference.slug, workshop.id), :class => 'add-facilitator mini-flex-form' do
|
||||
= form_tag workshop_add_facilitator_path(workshop.conference.slug, workshop.id), class: 'add-facilitator mini-flex-form' do
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
|
@ -11,6 +11,8 @@
|
||||
= hidden_field_tag :translation, @translation
|
||||
- else
|
||||
%h2=_@page_title, :t
|
||||
- unless @is_translating || @workshop.locale.to_s == I18n.locale.to_s
|
||||
= status_bubble(_('articles.workshops.paragraphs.not_original_locale', vars: { original_locale: language_name(@workshop.locale), this_locale: language_name(I18n.locale), link: translate_workshop_url(@workshop.conference.slug, @workshop.id, I18n.locale) }), :warning, class: 'top-message')
|
||||
- else
|
||||
%h2=_@page_title, :t
|
||||
|
||||
|
@ -1833,7 +1833,11 @@ en:
|
||||
volunteering_info: Volunteering info
|
||||
additional_details: Additional details
|
||||
companion: Companion
|
||||
Housing: Housing
|
||||
housing:
|
||||
Rules: House Rules
|
||||
paragraphs:
|
||||
Housing: You are staying at %{address}, your host's name is %{name}. You can contact them by email %{email} or by phone at %{phone}. Please take some time to read their house rules below.
|
||||
pronoun: It is important that communications with you and about you are as
|
||||
respectful as possible. If you do not provide a pronoun organizers may assume
|
||||
he, she, or they based on your name or visual identity.
|
||||
@ -2242,6 +2246,7 @@ en:
|
||||
we want to hear about everyone’s experience within the many configurations
|
||||
of community shops we’re coming from.
|
||||
notes: Notes are only viewable by conference hosts and workshop facilitators
|
||||
not_original_locale: You are editing a %{original_locale} workshop, <a href="%{link}">edit the %{this_locale} translation instead</a>
|
||||
facilitate_request: Please tell the current workshop facilitators who you
|
||||
are, why you want to help facilitate the workshop, and how you think you
|
||||
will help make the workshop better. All of the current facilitators will
|
||||
|
@ -1333,6 +1333,7 @@ fr:
|
||||
d’avis à nouveau,veuillez cliquer sur le boutonci-dessous,maissouvenez-vousquesi
|
||||
vous attendez trop longtemps,votre hébergement et votre bicyclette pourraient
|
||||
être attribués à quelqu’un d’autre.
|
||||
Housing: Vous restez à %{address}, le nom de votre hôte est %{name}. Vous pouvez les contacter par email %{email} ou par téléphone à %{phone}. Prenez le temps de lire les règles de leur maison ci-dessous.
|
||||
pronoun_optional: Il n’y a aucune obligation de choisir un pronom.
|
||||
pronoun: Il importe que lorsqu'on communique avec vous ou au sujet de vous,
|
||||
ce soit avec respect. Si vous ne précisez pas votre pronom, les organisateurs
|
||||
@ -1617,6 +1618,7 @@ fr:
|
||||
facilitate_request_sent: Votre demande a été envoyée. Vous recevrez un courriel
|
||||
une fois qu’elle aura été approuvée ou rejetée, ou si l’un des animateurs
|
||||
ou l’une des animatrices a des questions.
|
||||
not_original_locale: Vous éditez un atelier %{original_locale}, <a href="%{link}">éditez la traduction %{this_locale} à la place</a>
|
||||
notes: Les remarques ne peuvent être vues que par organisateurs et les organisatrices
|
||||
ainsi que par les personnes qui animent les présentations.
|
||||
needs: Si vous avez besoin du matériel qui suit, les organisateurs et les
|
||||
|
Loading…
x
Reference in New Issue
Block a user