diff --git a/app/controllers/conferences_controller.rb b/app/controllers/conferences_controller.rb index 9bd020b..780100f 100644 --- a/app/controllers/conferences_controller.rb +++ b/app/controllers/conferences_controller.rb @@ -760,6 +760,46 @@ class ConferencesController < ApplicationController @page_title = 'articles.conference_registration.headings.Administration' case @admin_step.to_sym + when :organizations + @organizations = Organization.all + + if request.format.xlsx? + logger.info "Generating stats.xls" + @excel_data = { + columns: [:name, :street_address, :city, :subregion, :country, :postal_code, :email, :phone, :status], + keys: { + name: 'forms.labels.generic.name', + street_address: 'forms.labels.generic.street_address', + city: 'forms.labels.generic.city', + subregion: 'forms.labels.generic.subregion', + country: 'forms.labels.generic.country', + postal_code: 'forms.labels.generic.postal_code', + email: 'forms.labels.generic.email', + phone: 'forms.labels.generic.phone', + status: 'forms.labels.generic.status' + }, + data: [], + } + @organizations.each do | org | + if org.present? + address = org.locations.first + @excel_data[:data] << { + name: org.name, + street_address: address.present? ? address.street : nil, + city: address.present? ? address.city : nil, + subregion: address.present? ? I18n.t("geography.subregions.#{address.country}.#{address.territory}") : nil, + country: address.present? ? I18n.t("geography.countries.#{address.country}") : nil, + postal_code: address.present? ? address.postal_code : nil, + email: org.email_address, + phone: org.phone, + status: org.status + } + end + end + return respond_to do | format | + format.xlsx { render xlsx: :stats, filename: "organizations" } + end + end when :stats @registrations = ConferenceRegistration.where(:conference_id => @this_conference.id) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 007fa71..5984a14 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -951,7 +951,7 @@ module ApplicationHelper end def valid_admin_steps - admin_steps + [:broadcast_sent] + admin_steps + [:broadcast_sent, :organizations] end def admin_menu diff --git a/app/views/conferences/admin/_stats.html.haml b/app/views/conferences/admin/_stats.html.haml index e0f9209..14e29c7 100644 --- a/app/views/conferences/admin/_stats.html.haml +++ b/app/views/conferences/admin/_stats.html.haml @@ -15,3 +15,4 @@ = "$#{@donations || 0.00}" .actions = link_to (_'links.download.Excel'), administration_step_path(@this_conference.slug, :stats, :format => :xlsx), class: [:button, :download] + = link_to (_'links.download.Organizations_Excel'), administration_step_path(@this_conference.slug, :organizations, :format => :xlsx), class: [:button, :download, :subdued] diff --git a/app/views/conferences/stats.xlsx.haml b/app/views/conferences/stats.xlsx.haml index 39a1f16..a92ca09 100644 --- a/app/views/conferences/stats.xlsx.haml +++ b/app/views/conferences/stats.xlsx.haml @@ -8,7 +8,9 @@ - @excel_data[:data].each do |row| %tr - @excel_data[:columns].each do |column| - %td{class: @excel_data[:column_types][column].present? ? @excel_data[:column_types][column].to_s : nil}=_!row[column] + %td{class: (@excel_data[:column_types].present? && @excel_data[:column_types][column].present?) ? @excel_data[:column_types][column].to_s : nil} + - if row[column].present? + =_!row[column] - format_xls 'table' do - workbook use_autowidth: true diff --git a/config/locales/en.yml b/config/locales/en.yml index 2c4d7cb..fdfc686 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -5704,6 +5704,12 @@ en: length: Length workshop_block: Block send_to: Send To + street_address: Street Address + city: City + subregion: State / Province + country: Country + postal_code: Postal Code + status: Status actions: generic: login: Sign In @@ -5805,6 +5811,7 @@ en: Help_contribute: Help contribute download: Excel: Download Data in Excel Format + Organizations_Excel: Download Organization Data page_descriptions: home: Bike!Bike! A conference for bike collectives, co-ops, non-profit DIY bike shops