Compare commits
61 Commits
461cb62f81
...
master
Author | SHA1 | Date | |
---|---|---|---|
3f958bade1 | |||
589a22e5fe | |||
8d0409a7ea | |||
81731c3a14 | |||
e3e5329937 | |||
742c37f8e1 | |||
b8b3384e67 | |||
74aae300d8 | |||
47e475e65b | |||
d72d5fb898 | |||
2c3d5aeec9 | |||
08ccd3b87e | |||
6824989721 | |||
ef22d345db | |||
4c8e48d6e3 | |||
1fbac428a5 | |||
66b3f14998 | |||
1f26e1819e | |||
0a56d72b1b | |||
dae44c1392 | |||
0376564792 | |||
572413596f | |||
5b40146592 | |||
4ae1d9d987 | |||
712f764e0f | |||
b659ea9956 | |||
4ec4a3ddd6 | |||
b301438c09 | |||
9ee5212534 | |||
cb7a3a9fed | |||
e95729daa5 | |||
1d92dbd91d | |||
881b15c490 | |||
6bad0ff852 | |||
70c350eb64 | |||
1945c45a41 | |||
b2f2f032a4 | |||
e6378060e2 | |||
56f2a090c6 | |||
a69ba25df7 | |||
a23f5d39e7 | |||
83e2424744 | |||
57c0a7597d | |||
2de9c36040 | |||
700c81bd38 | |||
0266883474 | |||
cc494a048f | |||
7a9b2818d6 | |||
dcc401e79b | |||
ee2463e685 | |||
7bd5436ba4 | |||
8a14419628 | |||
87fb00da53 | |||
2d8e3a3b94 | |||
3d2d70f4f5 | |||
41debe6baf | |||
730cc9d95a | |||
7ce16f0602 | |||
43a2549e51 | |||
3d8842ec47 | |||
0d2e3c4dae |
@ -1,7 +1,9 @@
|
|||||||
FROM ruby:2.7.1
|
FROM ruby:2.7.8
|
||||||
|
|
||||||
|
# Point to Debian archive repos instead of the dead ones
|
||||||
|
|
||||||
RUN apt-get update -qq && \
|
RUN apt-get update -qq && \
|
||||||
curl -sL https://deb.nodesource.com/setup_10.x | bash - &&\
|
curl -sL https://deb.nodesource.com/setup_16.x | bash - && \
|
||||||
apt-get install -y build-essential libpq-dev nodejs && \
|
apt-get install -y build-essential libpq-dev nodejs && \
|
||||||
useradd --user-group --create-home --shell /bin/false app
|
useradd --user-group --create-home --shell /bin/false app
|
||||||
|
|
||||||
|
2
Gemfile
@ -12,7 +12,7 @@ gem 'rails', '~> 5.2.4.3'
|
|||||||
# Use postgresql as the database for Active Record
|
# Use postgresql as the database for Active Record
|
||||||
gem 'pg', '>= 0.18', '< 2.0'
|
gem 'pg', '>= 0.18', '< 2.0'
|
||||||
# Use Puma as the app server
|
# Use Puma as the app server
|
||||||
gem 'puma', '~> 3.12'
|
gem 'puma', '~> 4.3'
|
||||||
# Use SCSS for stylesheets
|
# Use SCSS for stylesheets
|
||||||
gem 'sass-rails', '~> 5.0'
|
gem 'sass-rails', '~> 5.0'
|
||||||
# Use Uglifier as compressor for JavaScript assets
|
# Use Uglifier as compressor for JavaScript assets
|
||||||
|
21
Gemfile.lock
@ -53,8 +53,8 @@ GEM
|
|||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
addressable (2.5.2)
|
addressable (2.8.0)
|
||||||
public_suffix (>= 2.0.2, < 4.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
arbre (1.2.1)
|
arbre (1.2.1)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
arel (9.0.0)
|
arel (9.0.0)
|
||||||
@ -142,12 +142,13 @@ GEM
|
|||||||
nokogiri (~> 1)
|
nokogiri (~> 1)
|
||||||
rake
|
rake
|
||||||
mini_mime (1.0.2)
|
mini_mime (1.0.2)
|
||||||
mini_portile2 (2.4.0)
|
mini_portile2 (2.8.0)
|
||||||
minitest (5.14.1)
|
minitest (5.14.1)
|
||||||
multi_json (1.13.1)
|
multi_json (1.13.1)
|
||||||
nio4r (2.5.2)
|
nio4r (2.5.8)
|
||||||
nokogiri (1.10.9)
|
nokogiri (1.13.4)
|
||||||
mini_portile2 (~> 2.4.0)
|
mini_portile2 (~> 2.8.0)
|
||||||
|
racc (~> 1.4)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
parallel (1.19.1)
|
parallel (1.19.1)
|
||||||
parser (2.7.1.3)
|
parser (2.7.1.3)
|
||||||
@ -156,8 +157,10 @@ GEM
|
|||||||
polyamorous (2.3.2)
|
polyamorous (2.3.2)
|
||||||
activerecord (>= 5.2.1)
|
activerecord (>= 5.2.1)
|
||||||
popper_js (1.14.5)
|
popper_js (1.14.5)
|
||||||
public_suffix (3.0.2)
|
public_suffix (4.0.6)
|
||||||
puma (3.12.6)
|
puma (4.3.12)
|
||||||
|
nio4r (~> 2.0)
|
||||||
|
racc (1.6.0)
|
||||||
rack (2.2.3)
|
rack (2.2.3)
|
||||||
rack-canonical-host (0.2.3)
|
rack-canonical-host (0.2.3)
|
||||||
addressable (> 0, < 3)
|
addressable (> 0, < 3)
|
||||||
@ -290,7 +293,7 @@ DEPENDENCIES
|
|||||||
jquery-rails
|
jquery-rails
|
||||||
listen (>= 3.0.5, < 3.2)
|
listen (>= 3.0.5, < 3.2)
|
||||||
pg (>= 0.18, < 2.0)
|
pg (>= 0.18, < 2.0)
|
||||||
puma (~> 3.12)
|
puma (~> 4.3)
|
||||||
rack-canonical-host
|
rack-canonical-host
|
||||||
rails (~> 5.2.4.3)
|
rails (~> 5.2.4.3)
|
||||||
recaptcha
|
recaptcha
|
||||||
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 2.1 MiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 475 KiB |
@ -38,6 +38,8 @@ h1 {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
letter-spacing: 0.0833333em;
|
letter-spacing: 0.0833333em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
white-space: normal; /* Standard‑Umbruch aktivieren */
|
||||||
|
overflow-wrap: break-word; /* Für lange Wörter (z. B. URLs) */
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class WelcomeController < ApplicationController
|
class WelcomeController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@google_maps_url = 'https://goo.gl/maps/nBAxNAsmPSS2'
|
@google_maps_url = 'https://maps.app.goo.gl/stmZjHRQd6vScfeb9'
|
||||||
@cool_earth_url = 'https://www.coolearth.org/'
|
@cool_earth_url = 'https://www.coolearth.org/'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ class GuestMailer < ApplicationMailer
|
|||||||
@guest = guest
|
@guest = guest
|
||||||
mail(
|
mail(
|
||||||
to: guest.name_with_email,
|
to: guest.name_with_email,
|
||||||
subject: "#{I18n.t(:wedding_name)}: RSVP Confirmation"
|
subject: "#{I18n.t(:wedding_name)}: Zusage/Absage"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ class GuestMailer < ApplicationMailer
|
|||||||
@guest = guest
|
@guest = guest
|
||||||
mail(
|
mail(
|
||||||
to: guest.name_with_email,
|
to: guest.name_with_email,
|
||||||
subject: "#{I18n.t(:wedding_name)}: Your RSVP"
|
subject: "#{I18n.t(:wedding_name)}: Deine Zusage/Absage"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -26,10 +26,10 @@ class Guest < ApplicationRecord
|
|||||||
|
|
||||||
# Don't allow long or odd names in emails; may be spam.
|
# Don't allow long or odd names in emails; may be spam.
|
||||||
def email_safe_salutation
|
def email_safe_salutation
|
||||||
return 'Hello,' if
|
return 'Hallo,' if
|
||||||
first_name.blank? || first_name !~ /\A[\p{Word}\s'-]{1,30}\z/i
|
first_name.blank? || first_name !~ /\A[\p{Word}\s'-]{1,30}\z/i
|
||||||
|
|
||||||
"Dear #{first_name},"
|
"Liebe/Lieber #{first_name},"
|
||||||
end
|
end
|
||||||
|
|
||||||
validates :diet, length: { maximum: 8192 }
|
validates :diet, length: { maximum: 8192 }
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
<strong>Alert</strong><br>
|
<strong>Knusthöhe 65</strong><br>
|
||||||
Qikiqtaaluk Region, Nunavut<br>
|
42897 Remscheid<br>
|
||||||
Canada<br>
|
Deutschland<br>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
<strong>Halley Research Station</strong><br>
|
<strong>Klostergasse 8</strong><br>
|
||||||
Brunt Ice Shelf<br>
|
42897 Remscheid<br>
|
||||||
Antarctica
|
Deutschland
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
<p><%= @guest.email_safe_salutation %></p>
|
<p><%= @guest.email_safe_salutation %></p>
|
||||||
|
|
||||||
<% if @guest.attending %>
|
<% if @guest.attending %>
|
||||||
<p>We look forward to seeing you!</p>
|
<p>Wir freuen uns darauf, dich zu sehen!</p>
|
||||||
<p>The address is:</p>
|
|
||||||
|
<p>Die Adresse lautet:</p>
|
||||||
<address><%= render partial: 'application/wedding_address' %></address>
|
<address><%= render partial: 'application/wedding_address' %></address>
|
||||||
|
|
||||||
<h3>Your RSVP</h3>
|
<h3>Deine Zusage/Absage</h3>
|
||||||
<p>If you would like to view or update your RSVP, you can use the following link to get back to it:</p>
|
<p>Wenn du deine Zusage/Absage einsehen oder ändern möchtest, kannst du über den folgenden Link zurückkehren:</p>
|
||||||
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
||||||
|
|
||||||
<h3>Sending a Card?</h3>
|
<h3>Karte senden?</h3>
|
||||||
<p>If you need it, our mailing address is:</p>
|
<p>Falls du eine Karte schicken willst, lautet unsere Postanschrift:</p>
|
||||||
<address><%= render partial: 'application/mailing_address' %></address>
|
<address><%= render partial: 'application/mailing_address' %></address>
|
||||||
|
|
||||||
<h3>Questions and answers</h3>
|
<h3>Fragen & Antworten</h3>
|
||||||
<p>Please check <%= link_to 'our wedding website', root_url %> for more information, or you can reply to this email.</p>
|
<p>Weitere Informationen findest du auf <%= link_to 'unserer Hochzeits-Website', root_url %>, oder du antwortest einfach auf diese E‑Mail.</p>
|
||||||
|
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>We're sorry to hear you can't make it. If you change your mind, you can update your RSVP with the link below:</p>
|
<p>Es tut uns leid zu hören, dass du nicht teilnehmen kannst. Falls du deine Meinung änderst, kannst du deine Zusage/Absage mit dem folgenden Link aktualisieren:</p>
|
||||||
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
||||||
<p>We hope to see you another time!</p>
|
<p>Wir hoffen, dich bei einem anderen Anlass wiederzusehen!</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p> </p>
|
<p> </p>
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
<p><%= @guest.email_safe_salutation %></p>
|
<p><%= @guest.email_safe_salutation %></p>
|
||||||
|
|
||||||
<p>You recently entered your email address to RSVP on <%= ENV['CANONICAL_HOST'] %>.</p>
|
<p>Du hast vor Kurzem deine E‑Mail-Adresse bei <%= ENV['CANONICAL_HOST'] %> zur Zusage/Absage eingegeben.</p>
|
||||||
|
<p>Wenn du deine Zusage/Absage einsehen oder ändern möchtest, kannst du über den folgenden Link zurückkehren:</p>
|
||||||
<p>If you would like to view or update your RSVP, you can use the following link to get back to it:</p>
|
|
||||||
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
<p><%= link_to guest_url(@guest), guest_url(@guest) %></p>
|
||||||
|
<p>Falls du Fragen hast, antworte einfach auf diese E‑Mail.</p>
|
||||||
<p>If you have any questions, you can ask us by reply.</p>
|
|
||||||
|
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p><%= t :wedding_couple_names %></p>
|
<p><%= t :wedding_couple_names %></p>
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<%= form.label :diet, 'Dietary Preferences', class: 'col-form-label' %>
|
<%= form.label :diet, 'Ernährungspräferenzen', class: 'col-form-label' %>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<%= form.text_area :diet, id: "#{id_stem}_diet", class: 'form-control' %>
|
<%= 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>
|
<small class="form-text text-muted">
|
||||||
|
Zum Beispiel: Vegan, vegetarisch, glutenfrei oder andere Allergien/Unverträglichkeiten.
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div id="guests-leader" class="jumbotron text-center">
|
<div id="guests-leader" class="jumbotron text-center">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>RSVP</h1>
|
<h1>Zusage/Absage</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<%= form.label :first_name, 'First Name', class: 'col-form-label' %>
|
<%= form.label :first_name, 'Vorname', class: 'col-form-label' %>
|
||||||
<span class="wedding-required">*</span>
|
<span class="wedding-required">*</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<%= form.label :last_name, 'Last Name', class: 'col-form-label' %>
|
<%= form.label :last_name, 'Nachname', class: 'col-form-label' %>
|
||||||
<span class="wedding-required">*</span>
|
<span class="wedding-required">*</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
<nav class="guests-rsvp-nav">
|
<nav class="guests-rsvp-nav">
|
||||||
<ul class="nav nav-pills nav-fill">
|
<ul class="nav nav-pills nav-fill">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<%= link_to '1. About You', guest_path(@guest), class: ['nav-link', active == 1 ? 'active' : ''] %>
|
<%= link_to '1. Über dich', guest_path(@guest), class: ['nav-link', active == 1 ? 'active' : ''] %>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<% if active >= 2 %>
|
<% if active >= 2 %>
|
||||||
<%= link_to '2. Plus Ones', guest_plus_ones_path(@guest), class: ['nav-link', active == 2 ? 'active' : ''] %>
|
<%= link_to '2. Begleitung', guest_plus_ones_path(@guest), class: ['nav-link', active == 2 ? 'active' : ''] %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a class="nav-link <%= active == 2 ? 'active' : '' %>">2. Plus Ones</a>
|
<a class="nav-link <%= active == 2 ? 'active' : '' %>">2. Begleitung</a>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<% if active >= 3 %>
|
<% if active >= 3 %>
|
||||||
<%= link_to '3. Confirm', confirm_guest_path(@guest), class: ['nav-link', active == 3 ? 'active' : ''] %>
|
<%= link_to '3. Bestätigung', confirm_guest_path(@guest), class: ['nav-link', active == 3 ? 'active' : ''] %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a class="nav-link <%= active == 3 ? 'active' : '' %>">3. Confirm</a>
|
<a class="nav-link <%= active == 3 ? 'active' : '' %>">3. Bestätigung</a>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="offset-lg-2 col-lg-8">
|
<div class="offset-lg-2 col-lg-8">
|
||||||
<%= render partial: 'leader' %>
|
<%= render partial: 'leader' %>
|
||||||
<h2>Thanks!</h2>
|
<h2>Danke!</h2>
|
||||||
<p>We've sent an email confirmation to <tt><%= @guest.email %></tt>.</p>
|
<p>Wir haben eine Bestätigungs‑E‑Mail an <tt><%= @guest.email %></tt> gesendet.</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>Falls du die E‑Mail innerhalb weniger Minuten nicht erhältst, prüfe bitte deinen Spam‑Ordner. Und wenn sie dort auch nicht auftaucht, <%= mail_to ENV['CONTACT_EMAIL'], 'kontaktiere uns' %>.</p>
|
||||||
<p>The email contains a link that you can use to update your RSVP later if you need to.</p>
|
<p>In der Mail befindet sich ein Link, den du später benutzen kannst, um deine RSVP zu ändern.</p>
|
||||||
<p><%= link_to 'Back to the Home Page', root_path %></p>
|
<p><%= link_to 'Zurück zur Startseite', root_path %></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<%= render partial: 'leader' %>
|
<%= render partial: 'leader' %>
|
||||||
<%= render partial: 'rsvp_nav', locals: { active: 3 } %>
|
<%= render partial: 'rsvp_nav', locals: { active: 3 } %>
|
||||||
|
|
||||||
<h2>Confirm</h2>
|
<h2>Bestätigung</h2>
|
||||||
|
|
||||||
<%= form_with(model: @guest, url: complete_guest_path(@guest), local: true) do |form| %>
|
<%= form_with(model: @guest, url: complete_guest_path(@guest), local: true) do |form| %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -14,13 +14,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if @guest.attending? %>
|
<% if @guest.attending? %>
|
||||||
<h3>Your Details</h3>
|
<h3>Deine Angaben</h3>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header"><%= @guest.name %></h5>
|
<h5 class="card-header"><%= @guest.name %></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Email
|
E-Mail
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<p><tt><%= @guest.email %></tt></p>
|
<p><tt><%= @guest.email %></tt></p>
|
||||||
@ -28,51 +28,51 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Dietary Preferences
|
Ernährungspräferenzen
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<% if @guest.diet.present? %>
|
<% if @guest.diet.present? %>
|
||||||
<pre><%= @guest.diet %></pre>
|
<pre><%= @guest.diet %></pre>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>(None)</p>
|
<p>(Keine)</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Song Suggestions
|
Song‑Vorschläge
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<% if @guest.songs.present? %>
|
<% if @guest.songs.present? %>
|
||||||
<pre><%= @guest.songs %></pre>
|
<pre><%= @guest.songs %></pre>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>(None)</p>
|
<p>(Keine)</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-right">
|
<div class="col-md-12 text-right">
|
||||||
<%= link_to 'Edit', guest_path(@guest), class: 'card-link', data: { disable_with: 'Loading...' } %>
|
<%= link_to 'Bearbeiten', guest_path(@guest), class: 'card-link', data: { disable_with: 'Loading...' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Plus Ones</h3>
|
<h3>Begleitung</h3>
|
||||||
<% if @guest.plus_ones.any? %>
|
<% if @guest.plus_ones.any? %>
|
||||||
<%= render @guest.plus_ones %>
|
<%= render @guest.plus_ones %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>(None — just you.)</p>
|
<p>(Keiner — nur du.)</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>Sorry to hear you won't be joining us!</p>
|
<p>Schade, dass du nicht teilnehmen kannst.</p>
|
||||||
<h3>Your Details</h3>
|
<h3>Deine Angaben</h3>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header"><%= @guest.name %></h5>
|
<h5 class="card-header"><%= @guest.name %></h5>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Email
|
E-Mail
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<p><tt><%= @guest.email %></tt></p>
|
<p><tt><%= @guest.email %></tt></p>
|
||||||
@ -82,14 +82,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<h3>Other Comments?</h3>
|
<h3>Sonstige Kommentare?</h3>
|
||||||
|
|
||||||
<%= form.text_area :notes, class: 'form-control' %>
|
<%= form.text_area :notes, class: 'form-control' %>
|
||||||
<small class="form-text text-muted">Anything else you'd like to let us know?</small>
|
<small class="form-text text-muted">Hast du noch etwas, das wir wissen sollten?</small>
|
||||||
|
|
||||||
<div class="row guests-buttons">
|
<div class="row guests-buttons">
|
||||||
<div class="offset-md-3 col-md-6 text-center">
|
<div class="offset-md-3 col-md-6 text-center">
|
||||||
<%= form.submit 'Complete RSVP', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
<%= form.submit 'Final bestätigen', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="offset-lg-2 col-lg-8">
|
<div class="offset-lg-2 col-lg-8">
|
||||||
<%= render partial: 'leader' %>
|
<%= 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>
|
<p>Bitte gib deine E‑Mail-Adresse ein, um loszulegen. Sobald du dich registriert hast, senden wir dir eine E‑Mail mit wichtigen Informationen.</p>
|
||||||
<%= form_with scope: :guest, url: guests_path, local: true do |form| %>
|
<%= form_with scope: :guest, url: guests_path, local: true do |form| %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
@ -22,9 +22,9 @@
|
|||||||
<div class="row guests-buttons">
|
<div class="row guests-buttons">
|
||||||
<div class="offset-md-3 col-md-6 text-center">
|
<div class="offset-md-3 col-md-6 text-center">
|
||||||
<%- if ENV['RECAPTCHA_SECRET_KEY'].blank? -%>
|
<%- if ENV['RECAPTCHA_SECRET_KEY'].blank? -%>
|
||||||
<%= form.submit 'Continue', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
<%= form.submit 'Weiter', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
||||||
<%- else -%>
|
<%- else -%>
|
||||||
<%= invisible_recaptcha_tags text: 'Continue', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
<%= invisible_recaptcha_tags text: 'Weiter', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="offset-lg-2 col-lg-8">
|
<div class="offset-lg-2 col-lg-8">
|
||||||
<%= render partial: 'leader' %>
|
<%= render partial: 'leader' %>
|
||||||
<h2>Welcome Back</h2>
|
<h2>Willkommen Zurück</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>Es sieht so aus, als hättest du bereits deine Zusage/Absage registriert; deshalb haben wir dir eine E‑Mail mit einem Link geschickt, über den du sie aktualisieren kannst.</p>
|
||||||
<p>Please check your <tt><%= @guest.email %></tt> email including spam folders!</p>
|
<p>Bitte prüfe dein E‑Mail-Konto unter <tt><%= @guest.email %></tt>, inklusive Spam‑Ordner!</p>
|
||||||
<p>If you don't receive the email, please <%= mail_to ENV['CONTACT_EMAIL'], 'contact us' %>.</p>
|
<p>Wenn du die E‑Mail nicht erhältst, kontaktiere uns bitte über <%= mail_to ENV['CONTACT_EMAIL'], 'uns' %>.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<%= render partial: 'leader' %>
|
<%= render partial: 'leader' %>
|
||||||
<%= render partial: 'rsvp_nav', locals: { active: 1 } %>
|
<%= render partial: 'rsvp_nav', locals: { active: 1 } %>
|
||||||
|
|
||||||
<h2>About You</h2>
|
<h2>Über dich</h2>
|
||||||
|
|
||||||
<%= form_with(model: @guest, method: :patch, local: true, id: 'guest-edit-form') do |form| %>
|
<%= form_with(model: @guest, method: :patch, local: true, id: 'guest-edit-form') do |form| %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -27,14 +27,14 @@
|
|||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="offset-md-3 col-md-9">
|
<div class="offset-md-3 col-md-9">
|
||||||
<p><strong>Will you be joining us?</strong></p>
|
<p><strong>Bist du dabei?</strong></p>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<%= form.radio_button :attending, 'true', checked: true, id: 'guest_attending_true', class: 'form-check-input' %>
|
<%= 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' %>
|
<%= form.label :attending, 'Ja', value: 'true', class: 'form-check-label' %>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<%= form.radio_button :attending, 'false', id: 'guest_attending_false', class: 'form-check-input' %>
|
<%= form.radio_button :attending, 'false', id: 'guest_attending_false', class: 'form-check-input' %>
|
||||||
<%= form.label :attending, 'No', value: 'false', class: 'form-check-label' %>
|
<%= form.label :attending, 'Nein', value: 'false', class: 'form-check-label' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -44,21 +44,23 @@
|
|||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<%= form.label :songs, 'Song Suggestions', class: 'col-form-label' %>
|
<%= form.label :songs, 'Song-Vorschläge', class: 'col-form-label' %>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<%= form.text_area :songs, id: 'guest_songs', class: 'form-control' %>
|
<%= 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>
|
<small class="form-text text-muted">
|
||||||
|
Wir erstellen unsere Playlist gemeinsam mit euch! Schreibt uns ein paar Songs, die ihr hören möchtet.
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row guests-buttons">
|
<div class="row guests-buttons">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<span class="wedding-required">* Required</span>
|
<span class="wedding-required">* Erforderlich</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 text-center">
|
<div class="col-md-6 text-center">
|
||||||
<%= form.submit 'Continue', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
<%= form.submit 'Weiter', class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -13,20 +13,20 @@
|
|||||||
<div class="offset-md-3 col-md-9">
|
<div class="offset-md-3 col-md-9">
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
<%= form.check_box :child, id: 'plus_one_child', class: 'form-check-input' %>
|
<%= form.check_box :child, id: 'plus_one_child', class: 'form-check-input' %>
|
||||||
<%= form.label :child, 'Child (12 or under)', class: 'form-check-label' %>
|
<%= form.label :child, 'Kind (12 oder jünger)', class: 'form-check-label' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row guests-buttons">
|
<div class="row guests-buttons">
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<span class="wedding-required">* Required</span>
|
<span class="wedding-required">* Erforderlich</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 text-center">
|
<div class="col-md-6 text-center">
|
||||||
<%= form.submit submit_action, class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
<%= form.submit submit_action, class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 text-right">
|
<div class="col-md-3 text-right">
|
||||||
<%= link_to 'Cancel', guest_plus_ones_path(@guest), class: 'btn btn-secondary' %>
|
<%= link_to 'Abbrechen', guest_plus_ones_path(@guest), class: 'btn btn-secondary' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -3,28 +3,28 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Dietary Preferences
|
Ernährungspräferenzen
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<% if plus_one.diet.present? %>
|
<% if plus_one.diet.present? %>
|
||||||
<pre><%= plus_one.diet %></pre>
|
<pre><%= plus_one.diet %></pre>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>(None)</p>
|
<p>(Keine)</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
Child
|
Kind
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<p><%= plus_one.child ? 'Yes' : 'No' %></p>
|
<p><%= plus_one.child ? 'Ja' : 'Nein' %></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-right">
|
<div class="col-md-12 text-right">
|
||||||
<%= link_to 'Edit', edit_guest_plus_one_path(plus_one.guest, plus_one), class: 'card-link', data: { disable_with: 'Loading...' } %>
|
<%= link_to 'Bearbeiten', edit_guest_plus_one_path(plus_one.guest, plus_one), class: 'card-link', data: { disable_with: 'Lädt...' } %>
|
||||||
<%= link_to 'Remove', guest_plus_one_path(plus_one.guest, plus_one), method: :delete, class: 'card-link', data: { disable_with: 'Removing...', confirm: 'Are you sure?' } %>
|
<%= link_to 'Entfernen', guest_plus_one_path(plus_one.guest, plus_one), method: :delete, class: 'card-link', data: { disable_with: 'Entferne...', confirm: 'Bist du sicher?' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<%= render partial: 'guests/leader' %>
|
<%= render partial: 'guests/leader' %>
|
||||||
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
||||||
|
|
||||||
<h2>Edit Plus One</h2>
|
<h2>Plus‑One bearbeiten</h2>
|
||||||
<%= render partial: 'form', locals: { submit_action: 'Save Plus One' } %>
|
<%= render partial: 'form', locals: { submit_action: 'Save Plus One' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,22 +4,22 @@
|
|||||||
<%= render partial: 'guests/leader' %>
|
<%= render partial: 'guests/leader' %>
|
||||||
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
||||||
|
|
||||||
<h2>Plus Ones</h2>
|
<h2>Deine Begleitung</h2>
|
||||||
<p>Please let us know below if you're bringing someone else to the wedding. Children are also very welcome.
|
<p>Bitte gib unten an, ob du jemanden zu deiner Begleitung mitbringst. Kinder sind ebenfalls herzlich willkommen.</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
|
|
||||||
<% if @plus_ones.any? %>
|
<% if @plus_ones.any? %>
|
||||||
<%= render @plus_ones %>
|
<%= render @plus_ones %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p>No plus ones added yet. Flying solo.</p>
|
<p>Keine Begleitung hinzugefügt. Du reist allein an.</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<p>
|
<p>
|
||||||
<%= link_to 'Add Plus One', new_guest_plus_one_path(@guest), class: 'btn btn-primary', data: { disable_with: 'Loading...' } %>
|
<%= link_to 'Begleitung hinzufügen', new_guest_plus_one_path(@guest), class: 'btn btn-primary', data: { disable_with: 'Lädt...' } %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p class="guests-buttons">
|
<p class="guests-buttons">
|
||||||
<%= link_to 'Continue', confirm_guest_path(@guest), class: 'btn btn-primary' %>
|
<%= link_to 'Weiter', confirm_guest_path(@guest), class: 'btn btn-primary' %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
<%= render partial: 'guests/leader' %>
|
<%= render partial: 'guests/leader' %>
|
||||||
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
|
||||||
|
|
||||||
<h2>Add Plus One</h2>
|
<h2>Begleitung hinzufügen</h2>
|
||||||
<%= render partial: 'form', locals: { submit_action: 'Add Plus One' } %>
|
<%= render partial: 'form', locals: { submit_action: 'Begleitung hinzufügen' } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div id="welcome-index-footer-cta" class="col-md-12 text-center">
|
<div id="welcome-index-footer-cta" class="col-md-12 text-center">
|
||||||
<%= link_to 'RSVP TODAY!', new_guest_path, class: 'btn btn-primary wedding-cta-btn' %>
|
<%= link_to 'JETZT ANTWORTEN!', new_guest_path, class: 'btn btn-primary wedding-cta-btn' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<%= t :wedding_date %>, <%= t :wedding_location %>
|
<%= t :wedding_date %>, <%= t :wedding_location %>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<%= link_to 'RSVP TODAY!', new_guest_path, class: 'btn btn-primary wedding-cta-btn' %>
|
<%= link_to 'JETZT ANTWORTEN!', new_guest_path, class: 'btn btn-primary wedding-cta-btn' %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<section id="welcome-index-wedding-plan-leader" class="jumbotron text-center">
|
<section id="welcome-index-wedding-plan-leader" class="jumbotron text-center">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>The Plan</h1>
|
<h1>Der Plan</h1>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section id="welcome-index-wedding-plan">
|
<section id="welcome-index-wedding-plan">
|
||||||
@ -8,7 +8,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="offset-md-3 col-md-6">
|
<div class="offset-md-3 col-md-6">
|
||||||
<h2>Order of the Day</h2>
|
<h2>Order of the Day</h2>
|
||||||
<p><strong>12:30pm</strong> — Guests arrive</p>
|
<p><strong>16:00</strong> — Guests arrive</p>
|
||||||
<p><strong>1pm</strong> — Wedding service</p>
|
<p><strong>1pm</strong> — Wedding service</p>
|
||||||
<p><strong>1:30pm</strong> — Cocktails, photos, confetti and canapes</p>
|
<p><strong>1:30pm</strong> — Cocktails, photos, confetti and canapes</p>
|
||||||
<p><strong>3pm-6pm</strong> — Food and drink</p>
|
<p><strong>3pm-6pm</strong> — Food and drink</p>
|
||||||
@ -18,7 +18,6 @@
|
|||||||
<p><strong>Dress code</strong> is warm.</p>
|
<p><strong>Dress code</strong> is warm.</p>
|
||||||
<h2>Gifts & Cards</h2>
|
<h2>Gifts & Cards</h2>
|
||||||
<p>We'd be pleased if you made a donation to charity rather than bringing a gift. Our goal is to raise £1,000 for <%= link_to 'Cool Earth', @cool_earth_url %>, the non-profit that works alongside rainforest communities to halt deforestation and climate change.</p>
|
<p>We'd be pleased if you made a donation to charity rather than bringing a gift. Our goal is to raise £1,000 for <%= link_to 'Cool Earth', @cool_earth_url %>, the non-profit that works alongside rainforest communities to halt deforestation and climate change.</p>
|
||||||
<p class="text-center"><%= link_to 'Donate to Cool Earth', @cool_earth_url, class: 'btn btn-primary wedding-cta-btn' %></p>
|
|
||||||
<p>If you'd like to send us a card, we'll send you our mailing address by email once you RSVP.</p>
|
<p>If you'd like to send us a card, we'll send you our mailing address by email once you RSVP.</p>
|
||||||
<h2>Menu</h2>
|
<h2>Menu</h2>
|
||||||
<p><strong>Starter</strong> — Home Cured Salmon Gravadlax with Horseradish Cream & Beetroot Tart <sup>*</sup> †</p>
|
<p><strong>Starter</strong> — Home Cured Salmon Gravadlax with Horseradish Cream & Beetroot Tart <sup>*</sup> †</p>
|
||||||
@ -32,8 +31,8 @@
|
|||||||
<li><small><sup>§</sup> Vegan, gluten free & dairy free dessert: Fruit platter</small></li>
|
<li><small><sup>§</sup> Vegan, gluten free & dairy free dessert: Fruit platter</small></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>The venue is making every effort to cater for vegan, vegetarian, gluten free, allergies and other dietary preferences, as indicated in your RSVPs.</p>
|
<p>The venue is making every effort to cater for vegan, vegetarian, gluten free, allergies and other dietary preferences, as indicated in your RSVPs.</p>
|
||||||
<h2>RSVPs</h2>
|
<h2>Zusage/Absage</h2>
|
||||||
<p>Please RSVP as soon as possible, so we know who is coming and can make sure we keep a seat and a piece of cake for you if you can come! If it turns out you can’t make it, please let us know as soon as you can.</p>
|
<p>Bitte gib deine Zusage/Absage so bald wie möglich ab, damit wir wissen, wer kommt und einen Platz sowie ein Stück Kuchen für dich reservieren können – falls du kommen kannst! Falls sich herausstellt, dass du nicht teilnehmen kannst, informiere uns bitte ebenfalls so früh wie möglich.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
<section id="welcome-index-venue-leader" class="jumbotron text-center">
|
<section id="welcome-index-venue-leader" class="jumbotron text-center">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>The Venue</h1>
|
<h1>Der Veranstaltungsort</h1>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section id="welcome-index-venue">
|
<section id="welcome-index-venue">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="offset-md-3 col-md-6">
|
<div class="offset-md-3 col-md-6">
|
||||||
<h2>How do I get there?</h2>
|
<h2>Wie komme ich dort hin?</h2>
|
||||||
<p>Ships sail regularly from Ushuaia, Argentina. Allow two days.</p>
|
<p>Im Herzen der Lenneper Altstadt findest du die Klösterkirche.</p>
|
||||||
<p>There is ample snow mobile parking. Watch out for penguins.</p>
|
<p>Vom Röntgenmuseum folge der linken Straße nach unten und gehe einfach die Klostergasse gegenüber der Röntgen Apotheke entlang.</p>
|
||||||
<h2>Coming from out of town?</h2>
|
<h2>Kommst du von außerhalb?</h2>
|
||||||
<p>The station has a number of rooms that you can get at the <strong>discounted wedding rate</strong>.</p>
|
<p>Das Parkhaus Altstadt Lennep kann über die Addresse Hardtstraße 17, 42897 Remscheid angefahren werden.</strong></p>
|
||||||
<p>Check in is from 3pm, so you may not be able to get ready in your room if you book it just for the night of the wedding.</p>
|
<p>Wir raten dazu einfach in der Hardstraße, Mühlenstraße, Albret-Thaer-Straße oder am Thüringsberg einen Parkplatz außerhalb der Altstadt zu suchen.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 text-center">
|
<div class="col-md-12 text-center">
|
||||||
<h1>When & Where</h1>
|
<h1>Wann? & Wo?</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -11,11 +11,11 @@
|
|||||||
<%= render partial: 'calendar_svg' %>
|
<%= render partial: 'calendar_svg' %>
|
||||||
<%- end %></h2>
|
<%- end %></h2>
|
||||||
<p>
|
<p>
|
||||||
<strong>12:30pm – late</strong><br>
|
<strong>16:00 – 23:30</strong><br>
|
||||||
<%= t :wedding_date %><br>
|
<%= t :wedding_date %><br>
|
||||||
<br>
|
<br>
|
||||||
</p>
|
</p>
|
||||||
<p><%= link_to 'Add to Calendar', 'wedding.ics' %></p>
|
<p><%= link_to 'Zum Kalender hinzufügen', 'wedding.ics' %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 text-center">
|
<div class="col-md-6 text-center">
|
||||||
<h2><%= link_to @google_maps_url do -%>
|
<h2><%= link_to @google_maps_url do -%>
|
||||||
|
@ -8,6 +8,21 @@ Rails.application.configure do
|
|||||||
# since you don't have to restart the web server when you make code changes.
|
# since you don't have to restart the web server when you make code changes.
|
||||||
config.cache_classes = false
|
config.cache_classes = false
|
||||||
|
|
||||||
|
Rails.application.routes.default_url_options[:host] = ENV.fetch("APP_HOST", "0.0.0.0")
|
||||||
|
#Rails.application.routes.default_url_options[:port] = ENV.fetch("APP_PORT", 3000)
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
#Rails.application.routes.default_url_options = {
|
||||||
|
# host: ENV.fetch("APP_HOST", "beere5"),
|
||||||
|
# port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
Rails.application.routes.default_url_options = {
|
||||||
|
host: ENV.fetch("APP_HOST", "wedding.linepe.de"),
|
||||||
|
#port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
}
|
||||||
|
|
||||||
# Do not eager load code on boot.
|
# Do not eager load code on boot.
|
||||||
config.eager_load = false
|
config.eager_load = false
|
||||||
|
|
||||||
@ -29,6 +44,33 @@ Rails.application.configure do
|
|||||||
config.cache_store = :null_store
|
config.cache_store = :null_store
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Use a real queuing backend for Active Job (and separate queues per environment)
|
||||||
|
# config.active_job.queue_adapter = :resque
|
||||||
|
# config.active_job.queue_name_prefix = "wedding_#{Rails.env}"
|
||||||
|
config.read_encrypted_secrets = true
|
||||||
|
config.action_mailer.perform_deliveries = true
|
||||||
|
config.action_mailer.delivery_method = :smtp
|
||||||
|
config.action_mailer.perform_caching = false
|
||||||
|
|
||||||
|
# Ignore bad email addresses and do not raise email delivery errors.
|
||||||
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||||
|
config.action_mailer.raise_delivery_errors = true
|
||||||
|
|
||||||
|
config.action_mailer.default_url_options = {
|
||||||
|
host: ENV['CANONICAL_HOST'],
|
||||||
|
protocol: ENV['CANONICAL_HOST_PROTOCOL'] || 'https'
|
||||||
|
}
|
||||||
|
|
||||||
|
config.action_mailer.smtp_settings = {
|
||||||
|
address: ENV['SMTP_ADDRESS'],
|
||||||
|
port: (ENV['SMTP_PORT'] || 587).to_i,
|
||||||
|
domain: ENV['SMTP_DOMAIN'],
|
||||||
|
user_name: ENV['SMTP_USER_NAME'],
|
||||||
|
password: ENV['SMTP_PASSWORD'],
|
||||||
|
authentication: 'plain',
|
||||||
|
enable_starttls_auto: true
|
||||||
|
}
|
||||||
|
|
||||||
# Store uploaded files on the local file system (see config/storage.yml for options)
|
# Store uploaded files on the local file system (see config/storage.yml for options)
|
||||||
config.active_storage.service = :local
|
config.active_storage.service = :local
|
||||||
|
|
||||||
@ -62,6 +104,7 @@ Rails.application.configure do
|
|||||||
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||||
|
|
||||||
config.action_mailer.default_url_options = {
|
config.action_mailer.default_url_options = {
|
||||||
host: ENV['CANONICAL_HOST'], port: 3000
|
# host: ENV['CANONICAL_HOST'], port: 3000
|
||||||
|
host: ENV['CANONICAL_HOST']
|
||||||
}
|
}
|
||||||
end
|
end
|
82
config/environments/development.rb_old
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
Rails.application.configure do
|
||||||
|
# Settings specified here will take precedence over those in config/application.rb.
|
||||||
|
|
||||||
|
# In the development environment your application's code is reloaded on
|
||||||
|
# every request. This slows down response time but is perfect for development
|
||||||
|
# since you don't have to restart the web server when you make code changes.
|
||||||
|
config.cache_classes = false
|
||||||
|
|
||||||
|
Rails.application.routes.default_url_options[:host] = ENV.fetch("APP_HOST", "0.0.0.0")
|
||||||
|
Rails.application.routes.default_url_options[:port] = ENV.fetch("APP_PORT", 3000)
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
Rails.application.routes.default_url_options = {
|
||||||
|
host: ENV.fetch("APP_HOST", "beere5"),
|
||||||
|
port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
Rails.application.routes.default_url_options = {
|
||||||
|
host: ENV.fetch("APP_HOST", "wedding.linepe.de"),
|
||||||
|
port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Do not eager load code on boot.
|
||||||
|
config.eager_load = false
|
||||||
|
|
||||||
|
# Show full error reports.
|
||||||
|
config.consider_all_requests_local = true
|
||||||
|
|
||||||
|
# Enable/disable caching. By default caching is disabled.
|
||||||
|
# Run rails dev:cache to toggle caching.
|
||||||
|
if Rails.root.join('tmp', 'caching-dev.txt').exist?
|
||||||
|
config.action_controller.perform_caching = true
|
||||||
|
|
||||||
|
config.cache_store = :memory_store
|
||||||
|
config.public_file_server.headers = {
|
||||||
|
'Cache-Control' => "public, max-age=#{2.days.to_i}"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
config.action_controller.perform_caching = false
|
||||||
|
|
||||||
|
config.cache_store = :null_store
|
||||||
|
end
|
||||||
|
|
||||||
|
# Store uploaded files on the local file system (see config/storage.yml for options)
|
||||||
|
config.active_storage.service = :local
|
||||||
|
|
||||||
|
# Don't care if the mailer can't send.
|
||||||
|
config.action_mailer.raise_delivery_errors = false
|
||||||
|
|
||||||
|
config.action_mailer.perform_caching = false
|
||||||
|
|
||||||
|
# Print deprecation notices to the Rails logger.
|
||||||
|
config.active_support.deprecation = :log
|
||||||
|
|
||||||
|
# Raise an error on page load if there are pending migrations.
|
||||||
|
config.active_record.migration_error = :page_load
|
||||||
|
|
||||||
|
# Highlight code that triggered database queries in logs.
|
||||||
|
config.active_record.verbose_query_logs = true
|
||||||
|
|
||||||
|
# Debug mode disables concatenation and preprocessing of assets.
|
||||||
|
# This option may cause significant delays in view rendering with a large
|
||||||
|
# number of complex assets.
|
||||||
|
config.assets.debug = true
|
||||||
|
|
||||||
|
# Suppress logger output for asset requests.
|
||||||
|
config.assets.quiet = true
|
||||||
|
|
||||||
|
# Raises error for missing translations
|
||||||
|
# config.action_view.raise_on_missing_translations = true
|
||||||
|
|
||||||
|
# Use an evented file watcher to asynchronously detect changes in source code,
|
||||||
|
# routes, locales, etc. This feature depends on the listen gem.
|
||||||
|
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||||
|
|
||||||
|
config.action_mailer.default_url_options = {
|
||||||
|
host: ENV['CANONICAL_HOST'], port: 3000
|
||||||
|
}
|
||||||
|
end
|
@ -6,6 +6,16 @@ Rails.application.configure do
|
|||||||
# Code is not reloaded between requests.
|
# Code is not reloaded between requests.
|
||||||
config.cache_classes = true
|
config.cache_classes = true
|
||||||
|
|
||||||
|
#Rails.application.routes.default_url_options[:host] = ENV.fetch("APP_HOST", "0.0.0.0")
|
||||||
|
#Rails.application.routes.default_url_options[:port] = ENV.fetch("APP_PORT", 3000)
|
||||||
|
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
#Rails.application.routes.default_url_options = {
|
||||||
|
# host: ENV.fetch("APP_HOST", ENV['CANONICAL_HOST'],
|
||||||
|
# port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
#}
|
||||||
|
|
||||||
# Eager load code on boot. This eager loads most of Rails and
|
# Eager load code on boot. This eager loads most of Rails and
|
||||||
# your application in memory, allowing both threaded web servers
|
# your application in memory, allowing both threaded web servers
|
||||||
# and those relying on copy on write to perform better.
|
# and those relying on copy on write to perform better.
|
||||||
@ -59,12 +69,14 @@ Rails.application.configure do
|
|||||||
# Use a real queuing backend for Active Job (and separate queues per environment)
|
# Use a real queuing backend for Active Job (and separate queues per environment)
|
||||||
# config.active_job.queue_adapter = :resque
|
# config.active_job.queue_adapter = :resque
|
||||||
# config.active_job.queue_name_prefix = "wedding_#{Rails.env}"
|
# config.active_job.queue_name_prefix = "wedding_#{Rails.env}"
|
||||||
|
config.read_encrypted_secrets = true
|
||||||
|
config.action_mailer.perform_deliveries = true
|
||||||
|
config.action_mailer.delivery_method = :smtp
|
||||||
config.action_mailer.perform_caching = false
|
config.action_mailer.perform_caching = false
|
||||||
|
|
||||||
# Ignore bad email addresses and do not raise email delivery errors.
|
# Ignore bad email addresses and do not raise email delivery errors.
|
||||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||||
# config.action_mailer.raise_delivery_errors = false
|
config.action_mailer.raise_delivery_errors = true
|
||||||
|
|
||||||
config.action_mailer.default_url_options = {
|
config.action_mailer.default_url_options = {
|
||||||
host: ENV['CANONICAL_HOST'],
|
host: ENV['CANONICAL_HOST'],
|
||||||
@ -77,8 +89,8 @@ Rails.application.configure do
|
|||||||
domain: ENV['SMTP_DOMAIN'],
|
domain: ENV['SMTP_DOMAIN'],
|
||||||
user_name: ENV['SMTP_USER_NAME'],
|
user_name: ENV['SMTP_USER_NAME'],
|
||||||
password: ENV['SMTP_PASSWORD'],
|
password: ENV['SMTP_PASSWORD'],
|
||||||
authentication: ENV['SMTP_AUTHENTICATION'] || 'plain',
|
authentication: 'plain',
|
||||||
enable_starttls_auto: ENV['SMTP_ENABLE_STARTTLS_AUTO'] || 'true'
|
enable_starttls_auto: true
|
||||||
}
|
}
|
||||||
|
|
||||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||||
|
@ -8,6 +8,20 @@ Rails.application.configure do
|
|||||||
# your test database is "scratch space" for the test suite and is wiped
|
# your test database is "scratch space" for the test suite and is wiped
|
||||||
# and recreated between test runs. Don't rely on the data there!
|
# and recreated between test runs. Don't rely on the data there!
|
||||||
config.cache_classes = true
|
config.cache_classes = true
|
||||||
|
Rails.application.routes.default_url_options[:host] = ENV.fetch("APP_HOST", "0.0.0.0")
|
||||||
|
Rails.application.routes.default_url_options[:port] = ENV.fetch("APP_PORT", 3000)
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
Rails.application.routes.default_url_options = {
|
||||||
|
host: ENV.fetch("APP_HOST", "beere5"),
|
||||||
|
port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Force Rails to generate URLs with your hostname instead of localhost
|
||||||
|
Rails.application.routes.default_url_options = {
|
||||||
|
host: ENV.fetch("APP_HOST", "wedding.linepe.de"),
|
||||||
|
port: ENV.fetch("APP_PORT", 3000)
|
||||||
|
}
|
||||||
|
|
||||||
# Do not eager load code on boot. This avoids loading your whole application
|
# Do not eager load code on boot. This avoids loading your whole application
|
||||||
# just for the purpose of running a single test. If you are using a tool that
|
# just for the purpose of running a single test. If you are using a tool that
|
||||||
|
@ -30,8 +30,8 @@
|
|||||||
# available at http://guides.rubyonrails.org/i18n.html.
|
# available at http://guides.rubyonrails.org/i18n.html.
|
||||||
|
|
||||||
en:
|
en:
|
||||||
wedding_name: "Jack & Jill's Wedding"
|
wedding_name: "Caro & Rene's freie Trauung"
|
||||||
wedding_couple_names: 'Jack & Jill'
|
wedding_couple_names: 'Caro & Rene'
|
||||||
wedding_date: 'Saturday, 1 January 2000'
|
wedding_date: 'Samstag, 25 April 2026'
|
||||||
wedding_location: 'South Pole'
|
wedding_location: 'Klosterkirche, Remscheid'
|
||||||
photo_credits: 'Photo Credits: Pexels'
|
photo_credits: 'Photo Credits: Rene'
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20180804103058) do
|
ActiveRecord::Schema.define(version: 2018_08_04_103058) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
|
||||||
enable_extension "citext"
|
enable_extension "citext"
|
||||||
|
enable_extension "plpgsql"
|
||||||
|
|
||||||
create_table "active_admin_comments", force: :cascade do |t|
|
create_table "active_admin_comments", force: :cascade do |t|
|
||||||
t.string "namespace"
|
t.string "namespace"
|
||||||
|
@ -9,8 +9,10 @@ services:
|
|||||||
- '5432:5432'
|
- '5432:5432'
|
||||||
|
|
||||||
web:
|
web:
|
||||||
|
environment:
|
||||||
|
CANONICAL_URL: beere5:3033, wedding.linepe.de
|
||||||
build: .
|
build: .
|
||||||
ports:
|
ports:
|
||||||
- '3000:3000'
|
- '3033:3000'
|
||||||
links:
|
links:
|
||||||
- db
|
- db
|
||||||
|
@ -1,32 +1,36 @@
|
|||||||
BEGIN:VCALENDAR
|
BEGIN:VCALENDAR
|
||||||
|
METHOD:REQUEST
|
||||||
|
PRODID:Microsoft Exchange Server 2010
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
CALSCALE:GREGORIAN
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:W. Europe Standard Time
|
||||||
|
BEGIN:STANDARD
|
||||||
|
DTSTART:16010101T030000
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
|
||||||
|
END:STANDARD
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
DTSTART:16010101T020000
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
|
||||||
|
END:DAYLIGHT
|
||||||
|
END:VTIMEZONE
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
SUMMARY:Access-A-Ride Pickup
|
ORGANIZER;CN="Kasseboehmer, Rene":mailto:renek@gmail.com
|
||||||
DTSTART;TZID=America/New_York:20130802T103400
|
DESCRIPTION;LANGUAGE=de-DE:
|
||||||
DTEND;TZID=America/New_York:20130802T110400
|
UID:040000008200E00074C5B7101A82E00800000000C763A9231826DC01000000000000000
|
||||||
LOCATION:1000 Broadway Ave.\, Brooklyn
|
010000000324119CE5EEF5A44B6AB75CC06641357
|
||||||
DESCRIPTION: Access-A-Ride trip to 900 Jay St.\, Brooklyn
|
SUMMARY;LANGUAGE=de-DE:Freie Trauung von Caro & Rene
|
||||||
|
DTSTART;TZID=W. Europe Standard Time:20260425T160000
|
||||||
|
DTEND;TZID=W. Europe Standard Time:20260425T235000
|
||||||
|
CLASS:PUBLIC
|
||||||
|
PRIORITY:5
|
||||||
|
DTSTAMP:20250915T081214Z
|
||||||
|
TRANSP:OPAQUE
|
||||||
STATUS:CONFIRMED
|
STATUS:CONFIRMED
|
||||||
SEQUENCE:3
|
SEQUENCE:0
|
||||||
BEGIN:VALARM
|
LOCATION;LANGUAGE=de-DE:Klostergasse 8, 42897 Remscheid, Deutschland
|
||||||
TRIGGER:-PT10M
|
|
||||||
DESCRIPTION:Pickup Reminder
|
|
||||||
ACTION:DISPLAY
|
|
||||||
END:VALARM
|
|
||||||
END:VEVENT
|
|
||||||
BEGIN:VEVENT
|
|
||||||
SUMMARY:Access-A-Ride Pickup
|
|
||||||
DTSTART;TZID=America/New_York:20130802T200000
|
|
||||||
DTEND;TZID=America/New_York:20130802T203000
|
|
||||||
LOCATION:900 Jay St.\, Brooklyn
|
|
||||||
DESCRIPTION: Access-A-Ride trip to 1000 Broadway Ave.\, Brooklyn
|
|
||||||
STATUS:CONFIRMED
|
|
||||||
SEQUENCE:3
|
|
||||||
BEGIN:VALARM
|
|
||||||
TRIGGER:-PT10M
|
|
||||||
DESCRIPTION:Pickup Reminder
|
|
||||||
ACTION:DISPLAY
|
|
||||||
END:VALARM
|
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
|
32
public/wedding.ics_old
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
BEGIN:VCALENDAR
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
SUMMARY:Access-A-Ride Pickup
|
||||||
|
DTSTART;TZID=America/New_York:20130802T103400
|
||||||
|
DTEND;TZID=America/New_York:20130802T110400
|
||||||
|
LOCATION:1000 Broadway Ave.\, Brooklyn
|
||||||
|
DESCRIPTION: Access-A-Ride trip to 900 Jay St.\, Brooklyn
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SEQUENCE:3
|
||||||
|
BEGIN:VALARM
|
||||||
|
TRIGGER:-PT10M
|
||||||
|
DESCRIPTION:Pickup Reminder
|
||||||
|
ACTION:DISPLAY
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
SUMMARY:Access-A-Ride Pickup
|
||||||
|
DTSTART;TZID=America/New_York:20130802T200000
|
||||||
|
DTEND;TZID=America/New_York:20130802T203000
|
||||||
|
LOCATION:900 Jay St.\, Brooklyn
|
||||||
|
DESCRIPTION: Access-A-Ride trip to 1000 Broadway Ave.\, Brooklyn
|
||||||
|
STATUS:CONFIRMED
|
||||||
|
SEQUENCE:3
|
||||||
|
BEGIN:VALARM
|
||||||
|
TRIGGER:-PT10M
|
||||||
|
DESCRIPTION:Pickup Reminder
|
||||||
|
ACTION:DISPLAY
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|