Compare commits

..

43 Commits

Author SHA1 Message Date
742c37f8e1 dev env 2025-09-18 22:10:03 +02:00
dae44c1392 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-18 16:33:59 +02:00
0376564792 fixes test
Some checks failed
CI / build (push) Has been cancelled
2025-09-18 16:16:30 +02:00
572413596f test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:53:54 +02:00
5b40146592 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:46:54 +02:00
4ae1d9d987 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:42:18 +02:00
712f764e0f test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:33:52 +02:00
b659ea9956 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:29:20 +02:00
4ec4a3ddd6 mail
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:21:41 +02:00
b301438c09 mail
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 21:19:02 +02:00
9ee5212534 test umbruch
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:12:39 +02:00
cb7a3a9fed year
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:09:50 +02:00
e95729daa5 ics fix
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:08:43 +02:00
1d92dbd91d calendar entry
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:06:08 +02:00
881b15c490 test11
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:03:34 +02:00
6bad0ff852 test8
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 20:00:25 +02:00
70c350eb64 test7
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:56:13 +02:00
1945c45a41 test6
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:55:15 +02:00
b2f2f032a4 test6
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:54:21 +02:00
e6378060e2 teste5
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:48:43 +02:00
56f2a090c6 test3
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:41:24 +02:00
a69ba25df7 test2
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:37:36 +02:00
a23f5d39e7 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:35:09 +02:00
83e2424744 test
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:32:32 +02:00
57c0a7597d Zum Beispiel: Vega 2025-09-16 19:28:31 +02:00
2de9c36040 translation 1
Some checks failed
CI / build (push) Has been cancelled
2025-09-16 19:25:44 +02:00
700c81bd38 translations
Some checks failed
CI / build (push) Has been cancelled
2025-09-14 11:40:01 +02:00
0266883474 maps correction
Some checks failed
CI / build (push) Has been cancelled
2025-09-14 11:06:01 +02:00
cc494a048f maps address and donate button removal
Some checks failed
CI / build (push) Has been cancelled
2025-09-14 11:03:33 +02:00
7a9b2818d6 pictrures
Some checks failed
CI / build (push) Has been cancelled
2025-09-13 21:22:32 +02:00
dcc401e79b asd
Some checks failed
CI / build (push) Has been cancelled
2025-09-13 21:01:38 +02:00
ee2463e685 pciture
Some checks failed
CI / build (push) Has been cancelled
2025-09-13 21:00:03 +02:00
7bd5436ba4 functional first commit
Some checks failed
CI / build (push) Has been cancelled
2025-09-13 18:53:43 +01:00
8a14419628 Merge pull request #28 from jdleesmiller/dependabot/bundler/puma-4.3.12
Some checks failed
CI / build (push) Has been cancelled
Bump puma from 4.3.8 to 4.3.12
2022-05-01 09:59:13 +01:00
87fb00da53 Bump puma from 4.3.8 to 4.3.12
Bumps [puma](https://github.com/puma/puma) from 4.3.8 to 4.3.12.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v4.3.8...v4.3.12)

---
updated-dependencies:
- dependency-name: puma
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-30 20:13:19 +00:00
2d8e3a3b94 Merge pull request #29 from jdleesmiller/dependabot/bundler/nokogiri-1.13.4
Bump nokogiri from 1.11.5 to 1.13.4
2022-04-30 21:13:01 +01:00
3d2d70f4f5 Merge pull request #21 from jdleesmiller/dependabot/bundler/addressable-2.8.0
Bump addressable from 2.5.2 to 2.8.0
2022-04-30 21:11:58 +01:00
41debe6baf Bump nokogiri from 1.11.5 to 1.13.4
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.5 to 1.13.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.4/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.5...v1.13.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-12 01:01:32 +00:00
730cc9d95a Bump addressable from 2.5.2 to 2.8.0
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.5.2 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.5.2...addressable-2.8.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 00:46:37 +00:00
7ce16f0602 Merge pull request #20 from jdleesmiller/dependabot/bundler/nokogiri-1.11.5
Bump nokogiri from 1.10.9 to 1.11.5
2021-05-20 20:44:19 +01:00
43a2549e51 Bump nokogiri from 1.10.9 to 1.11.5
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.9 to 1.11.5.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.9...v1.11.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-20 14:19:15 +00:00
3d8842ec47 Merge pull request #18 from jdleesmiller/dependabot/bundler/puma-4.3.8
Bump puma from 3.12.6 to 4.3.8
2021-05-20 15:18:29 +01:00
0d2e3c4dae Bump puma from 3.12.6 to 4.3.8
Bumps [puma](https://github.com/puma/puma) from 3.12.6 to 4.3.8.
- [Release notes](https://github.com/puma/puma/releases)
- [Changelog](https://github.com/puma/puma/blob/master/History.md)
- [Commits](https://github.com/puma/puma/compare/v3.12.6...v4.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 00:48:20 +00:00
39 changed files with 269 additions and 153 deletions

View File

@ -1,9 +1,11 @@
FROM ruby:2.7.1
FROM ruby:2.7.8
RUN apt-get update -qq &&\
curl -sL https://deb.nodesource.com/setup_10.x | bash - &&\
apt-get install -y build-essential libpq-dev nodejs &&\
useradd --user-group --create-home --shell /bin/false app
# Point to Debian archive repos instead of the dead ones
RUN apt-get update -qq && \
curl -sL https://deb.nodesource.com/setup_16.x | bash - && \
apt-get install -y build-essential libpq-dev nodejs && \
useradd --user-group --create-home --shell /bin/false app
ENV HOME=/home/app
USER app

View File

@ -12,7 +12,7 @@ gem 'rails', '~> 5.2.4.3'
# Use postgresql as the database for Active Record
gem 'pg', '>= 0.18', '< 2.0'
# Use Puma as the app server
gem 'puma', '~> 3.12'
gem 'puma', '~> 4.3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets

View File

@ -53,8 +53,8 @@ GEM
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
arbre (1.2.1)
activesupport (>= 3.0.0)
arel (9.0.0)
@ -142,12 +142,13 @@ GEM
nokogiri (~> 1)
rake
mini_mime (1.0.2)
mini_portile2 (2.4.0)
mini_portile2 (2.8.0)
minitest (5.14.1)
multi_json (1.13.1)
nio4r (2.5.2)
nokogiri (1.10.9)
mini_portile2 (~> 2.4.0)
nio4r (2.5.8)
nokogiri (1.13.4)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
orm_adapter (0.5.0)
parallel (1.19.1)
parser (2.7.1.3)
@ -156,8 +157,10 @@ GEM
polyamorous (2.3.2)
activerecord (>= 5.2.1)
popper_js (1.14.5)
public_suffix (3.0.2)
puma (3.12.6)
public_suffix (4.0.6)
puma (4.3.12)
nio4r (~> 2.0)
racc (1.6.0)
rack (2.2.3)
rack-canonical-host (0.2.3)
addressable (> 0, < 3)
@ -290,7 +293,7 @@ DEPENDENCIES
jquery-rails
listen (>= 3.0.5, < 3.2)
pg (>= 0.18, < 2.0)
puma (~> 3.12)
puma (~> 4.3)
rack-canonical-host
rails (~> 5.2.4.3)
recaptcha

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 KiB

After

Width:  |  Height:  |  Size: 475 KiB

View File

@ -38,6 +38,8 @@ h1 {
font-weight: 700;
letter-spacing: 0.0833333em;
text-transform: uppercase;
white-space: normal; /* StandardUmbruch aktivieren */
overflow-wrap: break-word; /* Für lange Wörter (z.B. URLs) */
}
h2 {

View File

@ -2,7 +2,7 @@
class WelcomeController < ApplicationController
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/'
end
end

View File

@ -1,3 +1,3 @@
<strong>Halley Research Station</strong><br>
Brunt Ice Shelf<br>
Antarctica
<strong>Klostergasse 8</strong><br>
42897 Remscheid<br>
Deutschland

View File

@ -1,24 +1,26 @@
<p><%= @guest.email_safe_salutation %></p>
<% if @guest.attending %>
<p>We look forward to seeing you!</p>
<p>The address is:</p>
<p>Wir freuen uns darauf, dich zu sehen!</p>
<p>Die Adresse lautet:</p>
<address><%= render partial: 'application/wedding_address' %></address>
<h3>Your RSVP</h3>
<p>If you would like to view or update your RSVP, you can use the following link to get back to it:</p>
<h3>Deine Zusage/Absage</h3>
<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>
<h3>Sending a Card?</h3>
<p>If you need it, our mailing address is:</p>
<h3>Karte senden?</h3>
<p>Falls du eine Karte schicken willst, lautet unsere Postanschrift:</p>
<address><%= render partial: 'application/mailing_address' %></address>
<h3>Questions and answers</h3>
<p>Please check <%= link_to 'our wedding website', root_url %> for more information, or you can reply to this email.</p>
<h3>Fragen & Antworten</h3>
<p>Weitere Informationen findest du auf <%= link_to 'unserer Hochzeits-Website', root_url %>, oder du antwortest einfach auf diese EMail.</p>
<% 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>We hope to see you another time!</p>
<p>Wir hoffen, dich bei einem anderen Anlass wiederzusehen!</p>
<% end %>
<p>&nbsp;</p>

View File

@ -1,11 +1,9 @@
<p><%= @guest.email_safe_salutation %></p>
<p>You recently entered your email address to RSVP on <%= ENV['CANONICAL_HOST'] %>.</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>Du hast vor Kurzem deine EMail-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><%= link_to guest_url(@guest), guest_url(@guest) %></p>
<p>If you have any questions, you can ask us by reply.</p>
<p>Falls du Fragen hast, antworte einfach auf diese EMail.</p>
<p>&nbsp;</p>
<p><%= t :wedding_couple_names %></p>

View File

@ -1,9 +1,11 @@
<div class="form-group row">
<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 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>
<small class="form-text text-muted">
Zum Beispiel: Vegan, vegetarisch, glutenfrei oder andere Allergien/Unverträglichkeiten.
</small>
</div>
</div>

View File

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

View File

@ -1,6 +1,6 @@
<div class="form-group row">
<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>
</div>
<div class="col-md-9">
@ -10,7 +10,7 @@
<div class="form-group row">
<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>
</div>
<div class="col-md-9">

View File

@ -1,20 +1,20 @@
<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' : ''] %>
<%= link_to '1. Über dich', 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' : ''] %>
<%= link_to '2. Begleitung', guest_plus_ones_path(@guest), class: ['nav-link', active == 2 ? 'active' : ''] %>
<% else %>
<a class="nav-link <%= active == 2 ? 'active' : '' %>">2. Plus Ones</a>
<a class="nav-link <%= active == 2 ? 'active' : '' %>">2. Begleitung</a>
<% end %>
</li>
<li class="nav-item">
<% 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 %>
<a class="nav-link <%= active == 3 ? 'active' : '' %>">3. Confirm</a>
<a class="nav-link <%= active == 3 ? 'active' : '' %>">3. Bestätigung</a>
<% end %>
</li>
</ul>

View File

@ -2,11 +2,11 @@
<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>
<h2>Danke!</h2>
<p>Wir haben eine BestätigungsEMail an <tt><%= @guest.email %></tt> gesendet.</p>
<p>Falls du die EMail innerhalb weniger Minuten nicht erhältst, prüfe bitte deinen SpamOrdner. Und wenn sie dort auch nicht auftaucht, <%= mail_to ENV['CONTACT_EMAIL'], 'kontaktiere uns' %>.</p>
<p>In der Mail befindet sich ein Link, den du später benutzen kannst, um deine RSVP zu ändern.</p>
<p><%= link_to 'Zurück zur Startseite', root_path %></p>
</div>
</div>
</div>

View File

@ -4,7 +4,7 @@
<%= render partial: 'leader' %>
<%= 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| %>
<div class="row">
@ -14,13 +14,13 @@
</div>
<% if @guest.attending? %>
<h3>Your Details</h3>
<h3>Deine Angaben</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
E-Mail
</div>
<div class="col-md-8">
<p><tt><%= @guest.email %></tt></p>
@ -28,51 +28,51 @@
</div>
<div class="row">
<div class="col-md-4">
Dietary Preferences
Ernährungspräferenzen
</div>
<div class="col-md-8">
<% if @guest.diet.present? %>
<pre><%= @guest.diet %></pre>
<% else %>
<p>(None)</p>
<p>(Keine)</p>
<% end %>
</div>
</div>
<div class="row">
<div class="col-md-4">
Song Suggestions
SongVorschläge
</div>
<div class="col-md-8">
<% if @guest.songs.present? %>
<pre><%= @guest.songs %></pre>
<% else %>
<p>(None)</p>
<p>(Keine)</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...' } %>
<%= link_to 'Bearbeiten', guest_path(@guest), class: 'card-link', data: { disable_with: 'Loading...' } %>
</div>
</div>
</div>
</div>
<h3>Plus Ones</h3>
<h3>Begleitung</h3>
<% if @guest.plus_ones.any? %>
<%= render @guest.plus_ones %>
<% else %>
<p>(None &mdash; just you.)</p>
<p>(Keiner &mdash; nur du.)</p>
<% end %>
<% else %>
<p>Sorry to hear you won't be joining us!</p>
<h3>Your Details</h3>
<p>Schade, dass du nicht teilnehmen kannst.</p>
<h3>Deine Angaben</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
E-Mail
</div>
<div class="col-md-8">
<p><tt><%= @guest.email %></tt></p>
@ -82,14 +82,14 @@
</div>
<% end %>
<h3>Other Comments?</h3>
<h3>Sonstige Kommentare?</h3>
<%= 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="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>
<% end %>

View File

@ -2,7 +2,7 @@
<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>
<p>Bitte gib deine EMail-Adresse ein, um loszulegen. Sobald du dich registriert hast, senden wir dir eine EMail mit wichtigen Informationen.</p>
<%= form_with scope: :guest, url: guests_path, local: true do |form| %>
<div class="row">
<div class="col-md-12">
@ -22,9 +22,9 @@
<div class="row guests-buttons">
<div class="offset-md-3 col-md-6 text-center">
<%- 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 -%>
<%= 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 -%>
</div>
</div>

View File

@ -2,10 +2,10 @@
<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>
<h2>Willkommen Zurück</h2>
<p>Es sieht so aus, als hättest du bereits deine Zusage/Absage registriert; deshalb haben wir dir eine EMail mit einem Link geschickt, über den du sie aktualisieren kannst.</p>
<p>Bitte prüfe dein EMail-Konto unter <tt><%= @guest.email %></tt>, inklusive SpamOrdner!</p>
<p>Wenn du die EMail nicht erhältst, kontaktiere uns bitte über <%= mail_to ENV['CONTACT_EMAIL'], 'uns' %>.</p>
</div>
</div>
</div>

View File

@ -4,7 +4,7 @@
<%= render partial: 'leader' %>
<%= 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| %>
<div class="row">
@ -27,14 +27,14 @@
<div class="form-group row">
<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">
<%= 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 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' %>
<%= form.label :attending, 'Nein', value: 'false', class: 'form-check-label' %>
</div>
</div>
</div>
@ -44,21 +44,23 @@
<div class="form-group row">
<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 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>
<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 class="row guests-buttons">
<div class="col-md-3">
<span class="wedding-required">* Required</span>
<span class="wedding-required">* Erforderlich</span>
</div>
<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>
<% end %>

View File

@ -13,20 +13,20 @@
<div class="offset-md-3 col-md-9">
<div class="form-check form-check-inline">
<%= 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 class="row guests-buttons">
<div class="col-md-3">
<span class="wedding-required">* Required</span>
<span class="wedding-required">* Erforderlich</span>
</div>
<div class="col-md-6 text-center">
<%= form.submit submit_action, class: 'btn btn-primary', data: { disable_with: 'Sending...' } %>
</div>
<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>
<% end %>

View File

@ -3,28 +3,28 @@
<div class="card-body">
<div class="row">
<div class="col-md-4">
Dietary Preferences
Ernährungspräferenzen
</div>
<div class="col-md-8">
<% if plus_one.diet.present? %>
<pre><%= plus_one.diet %></pre>
<% else %>
<p>(None)</p>
<p>(Keine)</p>
<% end %>
</div>
</div>
<div class="row">
<div class="col-md-4">
Child
Kind
</div>
<div class="col-md-8">
<p><%= plus_one.child ? 'Yes' : 'No' %></p>
<p><%= plus_one.child ? 'Ja' : 'Nein' %></p>
</div>
</div>
<div class="row">
<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 '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 'Bearbeiten', edit_guest_plus_one_path(plus_one.guest, plus_one), class: 'card-link', data: { disable_with: 'Lädt...' } %>
<%= 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>

View File

@ -4,7 +4,7 @@
<%= render partial: 'guests/leader' %>
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
<h2>Edit Plus One</h2>
<h2>PlusOne bearbeiten</h2>
<%= render partial: 'form', locals: { submit_action: 'Save Plus One' } %>
</div>
</div>

View File

@ -4,22 +4,22 @@
<%= render partial: 'guests/leader' %>
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
<h2>Plus Ones</h2>
<p>Please let us know below if you're bringing someone else to the wedding. Children are also very welcome.
<h2>Deine Begleitung</h2>
<p>Bitte gib unten an, ob du jemanden zu deiner Begleitung mitbringst. Kinder sind ebenfalls herzlich willkommen.</p>
<p>&nbsp;</p>
<% if @plus_ones.any? %>
<%= render @plus_ones %>
<% else %>
<p>No plus ones added yet. Flying solo.</p>
<p>Keine Begleitung hinzugefügt. Du reist allein an.</p>
<% end %>
<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>&nbsp;</p>
<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>
</div>
</div>

View File

@ -4,8 +4,8 @@
<%= render partial: 'guests/leader' %>
<%= render partial: 'guests/rsvp_nav', locals: { active: 2 } %>
<h2>Add Plus One</h2>
<%= render partial: 'form', locals: { submit_action: 'Add Plus One' } %>
<h2>Begleitung hinzufügen</h2>
<%= render partial: 'form', locals: { submit_action: 'Begleitung hinzufügen' } %>
</div>
</div>
</div>

View File

@ -2,7 +2,7 @@
<div class="container-fluid">
<div class="row">
<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 class="row">

View File

@ -5,7 +5,7 @@
<%= t :wedding_date %>, <%= t :wedding_location %>
</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>
</div>
</section>

View File

@ -1,6 +1,6 @@
<section id="welcome-index-wedding-plan-leader" class="jumbotron text-center">
<div class="container">
<h1>The Plan</h1>
<h1>Der Plan</h1>
</div>
</section>
<section id="welcome-index-wedding-plan">
@ -8,7 +8,7 @@
<div class="row">
<div class="offset-md-3 col-md-6">
<h2>Order of the Day</h2>
<p><strong>12:30pm</strong> &mdash; Guests arrive</p>
<p><strong>16:00</strong> &mdash; Guests arrive</p>
<p><strong>1pm</strong> &mdash; Wedding service</p>
<p><strong>1:30pm</strong> &mdash; Cocktails, photos, confetti and canapes</p>
<p><strong>3pm-6pm</strong> &mdash; Food and drink</p>
@ -18,7 +18,6 @@
<p><strong>Dress code</strong> is warm.</p>
<h2>Gifts &amp; 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 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>
<h2>Menu</h2>
<p><strong>Starter</strong> &mdash; Home Cured Salmon Gravadlax with Horseradish Cream &amp; Beetroot Tart <sup>*</sup> &dagger;</p>
@ -32,8 +31,8 @@
<li><small><sup>&sect;</sup> Vegan, gluten free &amp; dairy free dessert: Fruit platter</small></li>
</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>
<h2>RSVPs</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 cant make it, please let us know as soon as you can.</p>
<h2>Zusage/Absage</h2>
<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>

View File

@ -1,18 +1,18 @@
<section id="welcome-index-venue-leader" class="jumbotron text-center">
<div class="container">
<h1>The Venue</h1>
<h1>Der Veranstaltungsort</h1>
</div>
</section>
<section id="welcome-index-venue">
<div class="container">
<div class="row">
<div class="offset-md-3 col-md-6">
<h2>How do I get there?</h2>
<p>Ships sail regularly from Ushuaia, Argentina. Allow two days.</p>
<p>There is ample snow mobile parking. Watch out for penguins.</p>
<h2>Coming from out of town?</h2>
<p>The station has a number of rooms that you can get at the <strong>discounted wedding rate</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>
<h2>Wie komme ich dort hin?</h2>
<p>Im Herzen der Lenneper Altstadt findest du die Klösterkirche.</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>Kommst du von außerhalb?</h2>
<p>Das Parkhaus Altstadt Lennep kann über die Addresse Hardtstraße 17, 42897 Remscheid angefahren werden.</strong></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>

View File

@ -2,7 +2,7 @@
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<h1>When &amp; Where</h1>
<h1>Wann&quest; &amp; Wo&quest;</h1>
</div>
</div>
<div class="row">
@ -11,11 +11,11 @@
<%= render partial: 'calendar_svg' %>
<%- end %></h2>
<p>
<strong>12:30pm &ndash; late</strong><br>
<strong>16:00 &ndash; 23:30</strong><br>
<%= t :wedding_date %><br>
&nbsp;<br>
</p>
<p><%= link_to 'Add to Calendar', 'wedding.ics' %></p>
<p><%= link_to 'Zum Kalender hinzufügen', 'wedding.ics' %></p>
</div>
<div class="col-md-6 text-center">
<h2><%= link_to @google_maps_url do -%>

View File

@ -8,6 +8,21 @@ Rails.application.configure do
# 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
@ -29,6 +44,33 @@ Rails.application.configure do
config.cache_store = :null_store
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)
config.active_storage.service = :local
@ -64,4 +106,4 @@ Rails.application.configure do
config.action_mailer.default_url_options = {
host: ENV['CANONICAL_HOST'], port: 3000
}
end
end

View File

@ -6,6 +6,16 @@ Rails.application.configure do
# Code is not reloaded between requests.
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
# your application in memory, allowing both threaded web servers
# 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)
# 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 = false
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = {
host: ENV['CANONICAL_HOST'],
@ -77,8 +89,8 @@ Rails.application.configure do
domain: ENV['SMTP_DOMAIN'],
user_name: ENV['SMTP_USER_NAME'],
password: ENV['SMTP_PASSWORD'],
authentication: ENV['SMTP_AUTHENTICATION'] || 'plain',
enable_starttls_auto: ENV['SMTP_ENABLE_STARTTLS_AUTO'] || 'true'
authentication: 'plain',
enable_starttls_auto: true
}
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to

View File

@ -8,6 +8,20 @@ Rails.application.configure do
# 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!
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
# just for the purpose of running a single test. If you are using a tool that

View File

@ -30,8 +30,8 @@
# available at http://guides.rubyonrails.org/i18n.html.
en:
wedding_name: "Jack & Jill's Wedding"
wedding_couple_names: 'Jack & Jill'
wedding_date: 'Saturday, 1 January 2000'
wedding_location: 'South Pole'
photo_credits: 'Photo Credits: Pexels'
wedding_name: "Caro & Rene's freie Trauung"
wedding_couple_names: 'Caro & Rene'
wedding_date: 'Samstag, 25 April 2026'
wedding_location: 'Klosterkirche, Remscheid'
photo_credits: 'Photo Credits: Rene'

View File

@ -10,11 +10,11 @@
#
# 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
enable_extension "plpgsql"
enable_extension "citext"
enable_extension "plpgsql"
create_table "active_admin_comments", force: :cascade do |t|
t.string "namespace"

View File

@ -9,8 +9,10 @@ services:
- '5432:5432'
web:
environment:
CANONICAL_URL: beere5:3033, wedding.linepe.de
build: .
ports:
- '3000:3000'
- '3033:3000'
links:
- db

View File

@ -1,32 +1,36 @@
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
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
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
ORGANIZER;CN="Kasseboehmer, Rene":mailto:renek@gmail.com
DESCRIPTION;LANGUAGE=de-DE:
UID:040000008200E00074C5B7101A82E00800000000C763A9231826DC01000000000000000
010000000324119CE5EEF5A44B6AB75CC06641357
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
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
SEQUENCE:0
LOCATION;LANGUAGE=de-DE:Klostergasse 8, 42897 Remscheid, Deutschland
END:VEVENT
END:VCALENDAR

32
public/wedding.ics_old Normal file
View 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