Make open source

This commit is contained in:
John Lees-Miller
2018-10-27 16:46:26 +01:00
commit 6e82ba528b
163 changed files with 3912 additions and 0 deletions

View File

@ -0,0 +1,9 @@
<div class="form-group row">
<div class="col-md-3">
<%= form.label :diet, 'Dietary Preferences', class: 'col-form-label' %>
</div>
<div class="col-md-9">
<%= form.text_area :diet, id: "#{id_stem}_diet", class: 'form-control' %>
<small class="form-text text-muted">For example, vegan, vegetarian, gluten free, and any allergies or intolerances.</small>
</div>
</div>

View File

@ -0,0 +1,5 @@
<div id="guests-leader" class="jumbotron text-center">
<div class="container">
<h1>RSVP</h1>
</div>
</div>

View File

@ -0,0 +1,19 @@
<div class="form-group row">
<div class="col-md-3">
<%= form.label :first_name, 'First Name', class: 'col-form-label' %>
<span class="wedding-required">*</span>
</div>
<div class="col-md-9">
<%= form.text_field :first_name, id: "#{id_stem}_first_name", class: 'form-control', autofocus: true, required: true %>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<%= form.label :last_name, 'Last Name', class: 'col-form-label' %>
<span class="wedding-required">*</span>
</div>
<div class="col-md-9">
<%= form.text_field :last_name, id: "#{id_stem}_last_name", class: 'form-control', required: true %>
</div>
</div>

View File

@ -0,0 +1,21 @@
<nav class="guests-rsvp-nav">
<ul class="nav nav-pills nav-fill">
<li class="nav-item">
<%= link_to '1. About You', guest_path(@guest), class: ['nav-link', active == 1 ? 'active' : ''] %>
</li>
<li class="nav-item">
<% if active >= 2 %>
<%= link_to '2. Plus Ones', guest_plus_ones_path(@guest), class: ['nav-link', active == 2 ? 'active' : ''] %>
<% else %>
<a class="nav-link <%= active == 2 ? 'active' : '' %>">2. Plus Ones</a>
<% end %>
</li>
<li class="nav-item">
<% if active >= 3 %>
<%= link_to '3. Confirm', confirm_guest_path(@guest), class: ['nav-link', active == 3 ? 'active' : ''] %>
<% else %>
<a class="nav-link <%= active == 3 ? 'active' : '' %>">3. Confirm</a>
<% end %>
</li>
</ul>
</nav>

View File

@ -0,0 +1,12 @@
<div class="container">
<div class="row">
<div class="offset-lg-2 col-lg-8">
<%= render partial: 'leader' %>
<h2>Thanks!</h2>
<p>We've sent an email confirmation to <tt><%= @guest.email %></tt>.</p>
<p>If you don't receive the email within a few minutes, please check your spam folder, and if it's not there <%= mail_to ENV['CONTACT_EMAIL'], 'contact us' %>.</p>
<p>The email contains a link that you can use to update your RSVP later if you need to.</p>
<p><%= link_to 'Back to the Home Page', root_path %></p>
</div>
</div>
</div>

View File

@ -0,0 +1,98 @@
<div class="container">
<div class="row">
<div class="offset-lg-2 col-lg-8">
<%= render partial: 'leader' %>
<%= render partial: 'rsvp_nav', locals: { active: 3 } %>
<h2>Confirm</h2>
<%= form_with(model: @guest, url: complete_guest_path(@guest), local: true) do |form| %>
<div class="row">
<div class="col-md-12">
<%= errors_for(@guest) %>
</div>
</div>
<% if @guest.attending? %>
<h3>Your Details</h3>
<div class="card mb-3">
<h5 class="card-header"><%= @guest.name %></h5>
<div class="card-body">
<div class="row">
<div class="col-md-4">
Email
</div>
<div class="col-md-8">
<p><tt><%= @guest.email %></tt></p>
</div>
</div>
<div class="row">
<div class="col-md-4">
Dietary Preferences
</div>
<div class="col-md-8">
<% if @guest.diet.present? %>
<pre><%= @guest.diet %></pre>
<% else %>
<p>(None)</p>
<% end %>
</div>
</div>
<div class="row">
<div class="col-md-4">
Song Suggestions
</div>
<div class="col-md-8">
<% if @guest.songs.present? %>
<pre><%= @guest.songs %></pre>
<% else %>
<p>(None)</p>
<% end %>
</div>
</div>
<div class="row">
<div class="col-md-12 text-right">
<%= link_to 'Edit', guest_path(@guest), class: 'card-link', data: { disable_with: 'Loading...' } %>
</div>
</div>
</div>
</div>
<h3>Plus Ones</h3>
<% if @guest.plus_ones.any? %>
<%= render @guest.plus_ones %>
<% else %>
<p>(None &mdash; just you.)</p>
<% end %>
<% else %>
<p>Sorry to hear you won't be joining us!</p>
<h3>Your Details</h3>
<div class="card mb-3">
<h5 class="card-header"><%= @guest.name %></h5>
<div class="card-body">
<div class="row">
<div class="col-md-4">
Email
</div>
<div class="col-md-8">
<p><tt><%= @guest.email %></tt></p>
</div>
</div>
</div>
</div>
<% end %>
<h3>Other Comments?</h3>
<%= form.text_area :notes, class: 'form-control' %>
<small class="form-text text-muted">Anything else you'd like to let us know?</small>
<div class="row guests-buttons">
<div class="offset-md-3 col-md-6 text-center">
<%= form.submit 'Complete RSVP', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
</div>
</div>
<% end %>
</div>
</div>
</div>

View File

@ -0,0 +1,30 @@
<div class="container">
<div class="row">
<div class="offset-lg-2 col-lg-8">
<%= render partial: 'leader' %>
<p>Please enter your email address to begin. We'll send you an email with important information once you have RSVP'd.</p>
<%= form_with scope: :guest, url: guests_path, local: true do |form| %>
<div class="row">
<div class="col-md-12">
<%= errors_for(@guest) %>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<%= form.label :email, class: 'col-form-label' %>
</div>
<div class="col-md-9">
<%= form.email_field :email, id: 'guest_email', class: 'form-control', autofocus: true, required: true %>
</div>
</div>
<div class="row guests-buttons">
<div class="offset-md-3 col-md-6 text-center">
<%= invisible_recaptcha_tags text: 'Continue', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
</div>
</div>
<% end %>
</div>
</div>
</div>

View File

@ -0,0 +1,11 @@
<div class="container">
<div class="row">
<div class="offset-lg-2 col-lg-8">
<%= render partial: 'leader' %>
<h2>Welcome Back</h2>
<p>It looks like you've already registered your RSVP, so we've sent you an email with a link that you can use to update it.</p>
<p>Please check your <tt><%= @guest.email %></tt> email including spam folders!</p>
<p>If you don't receive the email, please <%= mail_to ENV['CONTACT_EMAIL'], 'contact us' %>.</p>
</div>
</div>
</div>

View File

@ -0,0 +1,67 @@
<div class="container">
<div class="row">
<div class="offset-lg-2 col-lg-8">
<%= render partial: 'leader' %>
<%= render partial: 'rsvp_nav', locals: { active: 1 } %>
<h2>About You</h2>
<%= form_with(model: @guest, method: :patch, local: true, id: 'guest-edit-form') do |form| %>
<div class="row">
<div class="col-md-12">
<%= errors_for(@guest) %>
</div>
</div>
<div class="form-group row">
<div class="col-md-3">
<%= form.label :email, class: 'col-form-label' %>
<span class="wedding-required">*</span>
</div>
<div class="col-md-9">
<%= form.email_field :email, id: 'guest_email', class: 'form-control', required: true %>
</div>
</div>
<%= render partial: 'name', locals: { form: form, id_stem: 'guest' } %>
<div class="form-group row">
<div class="offset-md-3 col-md-9">
<p><strong>Will you be joining us?</strong></p>
<div class="form-check form-check-inline">
<%= form.radio_button :attending, 'true', checked: true, id: 'guest_attending_true', class: 'form-check-input' %>
<%= form.label :attending, 'Yes', value: 'true', class: 'form-check-label' %>
</div>
<div class="form-check form-check-inline">
<%= form.radio_button :attending, 'false', id: 'guest_attending_false', class: 'form-check-input' %>
<%= form.label :attending, 'No', value: 'false', class: 'form-check-label' %>
</div>
</div>
</div>
<div class="guest-attending-only">
<%= render partial: 'dietary_preferences', locals: { form: form, id_stem: 'guest' } %>
<div class="form-group row">
<div class="col-md-3">
<%= form.label :songs, 'Song Suggestions', class: 'col-form-label' %>
</div>
<div class="col-md-9">
<%= form.text_area :songs, id: 'guest_songs', class: 'form-control' %>
<small class="form-text text-muted">We're crowd sourcing our playlist! Choose some songs you'd like to hear.</small>
</div>
</div>
</div>
<div class="row guests-buttons">
<div class="col-md-3">
<span class="wedding-required">* Required</span>
</div>
<div class="col-md-6 text-center">
<%= form.submit 'Continue', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
</div>
</div>
<% end %>
</div>
</div>
</div>