diff --git a/app/assets/images/logo_gegenrecht.svg b/app/assets/images/logo_gegenrecht.svg
new file mode 100644
index 000000000..6776a7660
--- /dev/null
+++ b/app/assets/images/logo_gegenrecht.svg
@@ -0,0 +1,107 @@
+
+
+
+
diff --git a/app/assets/images/membership_verify_partner_ad.jpg b/app/assets/images/membership_verify_partner_ad.jpg
new file mode 100644
index 000000000..4c2b17a60
Binary files /dev/null and b/app/assets/images/membership_verify_partner_ad.jpg differ
diff --git a/app/assets/images/sac_logo_de.svg b/app/assets/images/sac_logo_de.svg
new file mode 100644
index 000000000..0546feb23
--- /dev/null
+++ b/app/assets/images/sac_logo_de.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/sac_logo_fr.svg b/app/assets/images/sac_logo_fr.svg
new file mode 100644
index 000000000..57056e62d
--- /dev/null
+++ b/app/assets/images/sac_logo_fr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/sac_logo_it.svg b/app/assets/images/sac_logo_it.svg
new file mode 100644
index 000000000..df0f0a2a2
--- /dev/null
+++ b/app/assets/images/sac_logo_it.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/stylesheets/hitobito/customizable/_wagon.scss b/app/assets/stylesheets/hitobito/customizable/_wagon.scss
index 5e573b6b7..92ce587dc 100644
--- a/app/assets/stylesheets/hitobito/customizable/_wagon.scss
+++ b/app/assets/stylesheets/hitobito/customizable/_wagon.scss
@@ -14,14 +14,51 @@
#membership-verify {
header {
+ justify-content: end;
#logo {
img {
width: 100%;
}
}
}
+
+ #details {
+ #member-info {
+ dl {
+ display: flex;
+ flex-direction: column;
+
+ div {
+ display: flex;
+ justify-content: center;
+ }
+ }
+ }
+
+ .alert-success {
+ background-color: rgb(128, 255, 0); // cmyk(50, 0, 100, 0)
+ color: black;
+ }
+
+ .alert-danger {
+ background-color: rgb(255, 179, 128); // cmyk(50, 0, 100, 0)
+ color: black;
+ }
+
+ #logo-reciprocate {
+ height: 4em;
+ display: flex;
+ justify-content: center;
+ }
+ }
+ #footer {
+ margin: 0;
+ img {
+ width: 100%;
+ }
+ }
}
.turbo-progress-bar {
background-color: $link-color !important;
-}
\ No newline at end of file
+}
diff --git a/app/helpers/membership_verify_helper.rb b/app/helpers/membership_verify_helper.rb
new file mode 100644
index 000000000..086fd1def
--- /dev/null
+++ b/app/helpers/membership_verify_helper.rb
@@ -0,0 +1,16 @@
+
+module MembershipVerifyHelper
+
+ def localized_logo_path
+ "sac_logo_#{I18n.locale.downcase}.svg"
+ end
+
+ def localized_sac_sponsors_url
+ {
+ de: 'https://www.sac-cas.ch/de/der-sac/unsere-partner/',
+ fr: 'https://www.sac-cas.ch/fr/le-cas/nos-partenaires/',
+ it: 'https://www.sac-cas.ch/it/il-cas/i-nostri-partner/'
+ }[I18n.locale]
+ end
+
+end
diff --git a/app/models/sac_cas/person.rb b/app/models/sac_cas/person.rb
index b0ba00c13..e4e2818c4 100644
--- a/app/models/sac_cas/person.rb
+++ b/app/models/sac_cas/person.rb
@@ -18,6 +18,8 @@ module SacCas::Person
Person.used_attributes.delete(:nickname)
+ reflect_on_attachment(:picture).variant(:profile, resize_to_fill: [200, 200])
+
has_many :external_trainings
has_many :roles_with_deleted, -> { with_deleted }, class_name: 'Role', foreign_key: 'person_id'
diff --git a/app/views/people/membership/verify/show.html.haml b/app/views/people/membership/verify/show.html.haml
new file mode 100644
index 000000000..4ecd595ab
--- /dev/null
+++ b/app/views/people/membership/verify/show.html.haml
@@ -0,0 +1,64 @@
+- title = t('verify_membership.title')
+
+%html{lang: I18n.locale}
+ %head
+ %meta{charset: 'utf-8'}
+ %title= "#{Settings.application.name} - #{title}"
+ %meta{name: 'viewport', content: 'width=device-width, initial-scale=1.0'}
+ = stylesheet_pack_tag 'application'
+ = javascript_pack_tag 'membership_verify'
+ %body
+ #membership-verify
+ %header
+ %div#logo
+ - logo = Settings.application.membership_verify_logo
+ - if logo
+ = wagon_image_pack_tag(logo.image, alt: Settings.application.name)
+ - else
+ = image_pack_tag(localized_logo_path, alt: 'define logo in wagon settings (membership_verify_logo)')
+ #details
+ - if person
+ #member-img
+ = image_tag(upload_url(person, :picture))
+ #member-name
+ = person.full_name
+ #member-info
+ %dl.dl-horizontal
+ %div
+ %strong=t('.membership_number', membership_number: person.membership_number)
+ %div
+ - membership_years = Person.where(id: person.id).with_membership_years.first.membership_years
+ %strong=t('.membership_years', membership_years: membership_years)
+ - if member?
+ %div.alert.alert-success
+ %span.fas.fa-check
+ = t('verify_membership.status_valid')
+ - else
+ %div.alert.alert-danger
+ %span.fas.fa-times-circle
+ = t('verify_membership.status_invalid')
+
+ #sections.mb-5
+ - main_section_role = person.roles.find_by(type: Group::SektionsMitglieder::Mitglied.sti_name)
+ - if main_section_role.present?
+ %div
+ %div
+ %strong= main_section_role.to_s
+ %div
+ %strong= main_section_role.group.layer_group.to_s
+ - person.roles.where(type: Group::SektionsMitglieder::MitgliedZusatzsektion.sti_name).each do |secondary_role|
+ %div
+ %div= secondary_role.to_s
+ %div= secondary_role.group.layer_group.to_s
+
+ #logo-reciprocate
+ = image_pack_tag('logo_gegenrecht.svg', alt: 'define logo in wagon settings (membership_verify_logo)')
+
+ - else
+ %div.alert.alert-danger
+ %span.fas.fa-times-circle
+ = t('verify_membership.not_found')
+ #footer
+ %a{href: localized_sac_sponsors_url, target: '_blank'}
+ = image_pack_tag('membership_verify_partner_ad.jpg', alt: 'define logo in wagon settings (membership_verify_logo)')
+
diff --git a/config/locales/wagon.de.yml b/config/locales/wagon.de.yml
index 377b91703..4a7a867fa 100644
--- a/config/locales/wagon.de.yml
+++ b/config/locales/wagon.de.yml
@@ -630,6 +630,11 @@ de:
https://www.sac-cas.ch/de/der-sac/sektionen'
people:
+ membership:
+ verify:
+ show:
+ membership_number: 'Mitglied: %{membership_number}'
+ membership_years: 'Anzahl Mitgliedsjahre: %{membership_years}'
neuanmeldungen:
multiselect_actions:
accept: Übernehmen
@@ -798,7 +803,7 @@ de:
title: Verifizierung SAC CAS Mitgliedschaft
not_found: Ungültiger Verifikationscode
status_valid: Mitgliedschaft gültig
- status_invalid: Keine gültige Mitgliedschaft
+ status_invalid: Mitgliedschaft ungültig
passes:
membership:
diff --git a/lib/hitobito_sac_cas/wagon.rb b/lib/hitobito_sac_cas/wagon.rb
index 5c4cdb011..430a737f6 100644
--- a/lib/hitobito_sac_cas/wagon.rb
+++ b/lib/hitobito_sac_cas/wagon.rb
@@ -131,6 +131,8 @@ class Wagon < Rails::Engine
SubscriptionsController.prepend SacCas::SubscriptionsController
+ People::Membership::VerifyController.include Localizable
+
## Jobs
Export::PeopleExportJob.prepend SacCas::Export::PeopleExportJob
Export::SubscriptionsJob.prepend SacCas::Export::SubscriptionsJob
diff --git a/spec/features/membership_verification_spec.rb b/spec/features/membership_verification_spec.rb
index f0f5b321e..d648bcb2a 100644
--- a/spec/features/membership_verification_spec.rb
+++ b/spec/features/membership_verification_spec.rb
@@ -22,7 +22,7 @@
person.roles.destroy_all
visit "/verify_membership/#{token}"
- expect(page).to have_css('.alert-danger', text: 'Keine gültige Mitgliedschaft')
+ expect(page).to have_css('.alert-danger', text: 'Mitgliedschaft ungültig')
end
it 'shows valid membership information' do