Browse Source

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
development
Godwin 7 years ago
committed by GitHub
parent
commit
f54c09f248
  1. 12
      app/assets/stylesheets/_admin.scss
  2. 41
      app/assets/stylesheets/_application.scss
  3. 2
      app/controllers/conference_administration_controller.rb
  4. 4
      app/controllers/workshops_controller.rb
  5. 2
      app/helpers/admin_helper.rb
  6. 3
      app/helpers/form_helper.rb
  7. 10
      app/helpers/geocoder_helper.rb
  8. 27
      app/helpers/widgets_helper.rb
  9. 31
      app/views/conference_administration/_hosts_table.html.haml
  10. 10
      app/views/registration_steps/_review.html.haml
  11. 2
      app/views/shared/_navbar.html.haml
  12. 16
      app/views/workshops/_show.html.haml
  13. 2
      app/views/workshops/new.html.haml
  14. 5
      config/locales/en.yml
  15. 2
      config/locales/fr.yml

12
app/assets/stylesheets/_admin.scss

@ -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;

41
app/assets/stylesheets/_application.scss

@ -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 {

2
app/controllers/conference_administration_controller.rb

@ -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

4
app/controllers/workshops_controller.rb

@ -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

2
app/helpers/admin_helper.rb

@ -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

3
app/helpers/form_helper.rb

@ -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 = {}

10
app/helpers/geocoder_helper.rb

@ -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)

27
app/helpers/widgets_helper.rb

@ -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

31
app/views/conference_administration/_hosts_table.html.haml

@ -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

10
app/views/registration_steps/_review.html.haml

@ -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

2
app/views/shared/_navbar.html.haml

@ -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

16
app/views/workshops/_show.html.haml

@ -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

2
app/views/workshops/new.html.haml

@ -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

5
config/locales/en.yml

@ -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

2
config/locales/fr.yml

@ -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…
Cancel
Save