diff --git a/pass/app/Key.js b/pass/app/Key.js index 59a9042c1354e4b31be36f481f5e261d928767db..f4743bfcb55830516ec230db4e6dc34c5ec77dc1 100644 --- a/pass/app/Key.js +++ b/pass/app/Key.js @@ -62,6 +62,21 @@ class Key { }); } + static async GET_EXPIRATION(key) { + let dayjs = require("dayjs"); + let redis_client = Key.REDIS_CLIENT; + return redis_client + .expiretime(Key.DATABASE_PREFIX + key) + .then((key_ttl) => { + if (key_ttl <= 0) { + key_ttl = dayjs().add(Key.EXPIRATION_AFTER_CHARGE_DAYS, "day"); + } else { + key_ttl = dayjs.unix(key_ttl); + } + return key_ttl; + }); + } + static async CHARGE_KEY(key, amount) { let redis_client = Key.REDIS_CLIENT; let expiration = require("dayjs")().add( diff --git a/pass/public/styles/base.less b/pass/public/styles/base.less index e33c56adaa5013ad3f935ad6f48eef9b3c53036d..113eff7e0b4b326bea220785f6c9c424a41eee2b 100644 --- a/pass/public/styles/base.less +++ b/pass/public/styles/base.less @@ -120,7 +120,7 @@ button { } } -nav { +nav#primary-nav { @logo-break-point: 720px; // Breakpoint when nav items won't fit besides logo @nav-items-break-point: 560px; // Breakpoint when nav items won't fit into their own row diff --git a/pass/public/styles/key/key.css b/pass/public/styles/key/key.css index 80412e4dde0997a25983709dda80b44b6d47eec8..d8a243156e151b62c07bb77cc43e9a7821f39ebd 100644 --- a/pass/public/styles/key/key.css +++ b/pass/public/styles/key/key.css @@ -1 +1 @@ -#checkout-amount-template{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#checkout-amount-template>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#checkout-amount-template>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#checkout-amount-template>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}#checkout #checkout-amount{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;justify-items:center;align-items:center}#checkout #checkout-amount.single{grid-template-columns:1fr}#checkout #checkout-amount>a{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#checkout #checkout-amount>a>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#checkout #checkout-amount>a>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#checkout #checkout-amount>a>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}@media (max-width:800px){#checkout #checkout-amount{grid-template-columns:1fr 1fr}#checkout #checkout-amount.single{grid-template-columns:1fr}}@media (max-width:470px){#checkout #checkout-amount{grid-template-columns:1fr}#checkout #checkout-amount>a{width:100%;grid-template-columns:1fr 3em}}#payment{margin-bottom:1rem}#payment>h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#payment>label[for="payment-group-paypal"]{border:1px solid #777;display:block;padding:.5rem;border-top-left-radius:5px;border-top-right-radius:5px;background-color:#f0f0f0;border-bottom-color:#ff7f00;border-bottom-width:2px}#payment>#payment-group-paypal{display:none}#payment>.payment-group{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;justify-items:center;gap:1rem;border:1px solid #777;padding:1rem;border-top:0;place-items:stretch}#payment>.payment-group>div{width:14em}@media (max-width:930px){#payment>.payment-group{grid-template-columns:1fr 1fr}}@media (max-width:470px){#payment>.payment-group{grid-template-columns:1fr}}#payment>.payment-group>div{min-width:10em}#payment>.payment-group#paypal-payments>.funding_source{display:flex;border:1px solid #777;padding:1rem;align-items:center;justify-content:center;height:2em;border-radius:5px;gap:.5rem;color:inherit;text-decoration:none}#payment>.payment-group#paypal-payments>.funding_source img{max-width:100%;max-height:100%}#paypal-checkout>h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#paypal-checkout>#loading_paypal_funding_source{display:flex;align-items:center;justify-content:center;gap:1rem;color:#777;padding:2rem 0}#paypal-checkout>#loading_paypal_funding_source img{width:2rem}#paypal-checkout #paypal-payment-card #paypal-card-form{display:grid;grid-template-columns:1fr 5em;grid-template-rows:1fr auto auto;place-items:stretch;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>div{display:flex;flex-direction:column;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label{font-weight:bold;font-size:.8rem;white-space:nowrap}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label.error{color:red;line-height:1}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label.error::before{font-size:initial}#paypal-checkout #paypal-payment-card #paypal-card-form>div>div{height:2.3rem;border:1px solid #777;border-radius:5px}#paypal-checkout #paypal-payment-card #paypal-card-form>div.card-holder-name{grid-column:span 2}#paypal-checkout #paypal-payment-card #paypal-card-form>div.card-holder-name input{padding:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card{grid-column:span 2;padding:.5rem;justify-self:center;display:flex;white-space:nowrap;align-items:center;line-height:1;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card>img{display:none}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card.loading>img{display:block}@media (max-width:920px){#paypal-checkout #paypal-payment-card #paypal-card-form{grid-template-columns:1fr}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card{grid-column:auto}}main{max-width:980px;margin:0 auto;display:grid;row-gap:1rem;padding-right:1rem;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto auto;grid-template-areas:"qr key " "qr setting-url" "qr buttons" "amount content"}main>#qr{grid-area:qr;justify-self:center}main #key{grid-area:key;font-size:clamp(.9rem, 4.8vw, 1.5rem);font-weight:bold;width:max-content;margin-top:11px;margin-right:1rem}main #setting-url{grid-area:setting-url;align-self:start;display:flex;padding:.5rem 1rem;border-radius:5px}main #setting-url>input{line-height:1.5;padding:.1rem .5rem;border-radius:5px;flex-grow:1}main>#buttons{grid-area:buttons;display:flex;gap:1rem;margin-bottom:17px;justify-content:flex-end}@media (max-width:450px){main>#buttons{display:grid;grid-template-columns:1fr}main>#buttons .button{width:auto}}main>#amount{grid-area:amount;max-width:200px;justify-self:center;display:flex;flex-direction:column;align-items:center}main>#amount>h3{font-size:1.5rem;margin:0}main>#amount>div.amount{font-size:3rem}main>#charge{grid-area:content}main>#charge>#store>p{line-height:1.5}@media (max-width:770px){main{padding:0 1rem;grid-template-rows:auto auto auto auto auto;grid-template-columns:auto auto;grid-template-areas:"amount qr " "key key" "setting-url setting-url" "buttons buttons " "content content "}main>#key{margin:0;justify-self:center}main>#setting-url{text-align:center}main>#buttons{justify-content:center;margin-bottom:0}main>#amount{align-self:center}main>#charge>#store{display:flex;flex-direction:column;align-items:center}}@media (max-width:430px){main{grid-template-rows:auto auto auto auto auto auto;grid-template-columns:auto;grid-template-areas:"qr" "key" "setting-url" "buttons" "amount" "content"}}h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#summary{display:flex;align-items:center;gap:1rem;justify-content:center;margin-bottom:3rem}#summary>.checkout-amount{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#summary>.checkout-amount>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#summary>.checkout-amount>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#summary>.checkout-amount>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}#summary>.funding_source{height:4.5rem;width:11rem;display:grid;place-content:center;place-items:center;border:1px solid #777;border-radius:10px;color:inherit;text-decoration:none;gap:.5rem}#summary>.funding_source img{max-width:70%;max-height:100%}@media (max-width:430px){#summary{flex-direction:column}} \ No newline at end of file +#checkout-amount-template{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#checkout-amount-template>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#checkout-amount-template>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#checkout-amount-template>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}#checkout #checkout-amount{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem;justify-items:center;align-items:center}#checkout #checkout-amount.single{grid-template-columns:1fr}#checkout #checkout-amount>a{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#checkout #checkout-amount>a>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#checkout #checkout-amount>a>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#checkout #checkout-amount>a>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}@media (max-width:800px){#checkout #checkout-amount{grid-template-columns:1fr 1fr}#checkout #checkout-amount.single{grid-template-columns:1fr}}@media (max-width:470px){#checkout #checkout-amount{grid-template-columns:1fr}#checkout #checkout-amount>a{width:100%;grid-template-columns:1fr 3em}}#payment{margin-bottom:1rem}#payment>h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#payment>label[for="payment-group-paypal"]{border:1px solid #777;display:block;padding:.5rem;border-top-left-radius:5px;border-top-right-radius:5px;background-color:#f0f0f0;border-bottom-color:#ff7f00;border-bottom-width:2px}#payment>#payment-group-paypal{display:none}#payment>.payment-group{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;justify-items:center;gap:1rem;border:1px solid #777;padding:1rem;border-top:0;place-items:stretch}#payment>.payment-group>div{width:14em}@media (max-width:930px){#payment>.payment-group{grid-template-columns:1fr 1fr}}@media (max-width:470px){#payment>.payment-group{grid-template-columns:1fr}}#payment>.payment-group>div{min-width:10em}#payment>.payment-group#paypal-payments>.funding_source{display:flex;border:1px solid #777;padding:1rem;align-items:center;justify-content:center;height:2em;border-radius:5px;gap:.5rem;color:inherit;text-decoration:none}#payment>.payment-group#paypal-payments>.funding_source img{max-width:100%;max-height:100%}#paypal-checkout>h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#paypal-checkout>#loading_paypal_funding_source{display:flex;align-items:center;justify-content:center;gap:1rem;color:#777;padding:2rem 0}#paypal-checkout>#loading_paypal_funding_source img{width:2rem}#paypal-checkout #paypal-payment-card #paypal-card-form{display:grid;grid-template-columns:1fr 5em;grid-template-rows:1fr auto auto;place-items:stretch;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>div{display:flex;flex-direction:column;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label{font-weight:bold;font-size:.8rem;white-space:nowrap}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label.error{color:red;line-height:1}#paypal-checkout #paypal-payment-card #paypal-card-form>div>label.error::before{font-size:initial}#paypal-checkout #paypal-payment-card #paypal-card-form>div>div{height:2.3rem;border:1px solid #777;border-radius:5px}#paypal-checkout #paypal-payment-card #paypal-card-form>div.card-holder-name{grid-column:span 2}#paypal-checkout #paypal-payment-card #paypal-card-form>div.card-holder-name input{padding:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card{grid-column:span 2;padding:.5rem;justify-self:center;display:flex;white-space:nowrap;align-items:center;line-height:1;gap:.5rem}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card>img{display:none}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card.loading>img{display:block}@media (max-width:920px){#paypal-checkout #paypal-payment-card #paypal-card-form{grid-template-columns:1fr}#paypal-checkout #paypal-payment-card #paypal-card-form>button#submit-credit-card{grid-column:auto}}main{max-width:980px;margin:0 auto;display:grid;row-gap:1rem;padding-right:1rem;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr auto auto auto;grid-template-areas:"qr key " "qr setting-url" "qr buttons" "amount second-nav" "amount content"}main>#qr{grid-area:qr;justify-self:center}main #key{grid-area:key;font-size:clamp(.9rem, 4.8vw, 1.5rem);font-weight:bold;width:max-content;margin-top:11px;margin-right:1rem}main #setting-url{grid-area:setting-url;align-self:start;display:flex;padding:.5rem 1rem;border-radius:5px}main #setting-url>input{line-height:1.5;padding:.1rem .5rem;border-radius:5px;flex-grow:1}main>#buttons{grid-area:buttons;display:flex;gap:1rem;margin-bottom:17px;justify-content:flex-end}@media (max-width:450px){main>#buttons{display:grid;grid-template-columns:1fr}main>#buttons .button{width:auto}}main>#amount{grid-area:amount;max-width:200px;justify-self:center;display:flex;flex-direction:column;align-items:center}main>#amount>h3{font-size:1.5rem;margin:0}main>#amount>div.amount{font-size:3rem}main>#charge{grid-area:content}main>#charge>#store>p{line-height:1.5}@media (max-width:770px){main{padding:0 1rem;grid-template-rows:auto auto auto auto auto auto;grid-template-columns:auto auto;grid-template-areas:"amount qr " "key key" "setting-url setting-url" "buttons buttons " "second-nav second-nav" "content content "}main>#key{margin:0;justify-self:center}main>#setting-url{text-align:center}main>#buttons{justify-content:center;margin-bottom:0}main>#amount{align-self:center}main>#charge>#store{display:flex;flex-direction:column;align-items:center}}@media (max-width:430px){main{grid-template-rows:auto auto auto auto auto auto auto;grid-template-columns:auto;grid-template-areas:"qr" "key" "setting-url" "buttons" "amount" "second-nav" "content"}}h2{margin:0 0 1rem;text-align:center;border-bottom:1px solid #ff7f00}#summary{display:flex;align-items:center;gap:1rem;justify-content:center;margin-bottom:3rem}#summary>.checkout-amount{text-decoration:none;color:inherit;display:grid;grid-template-columns:7em 3.5em;grid-template-rows:2.5em 2em;place-items:stretch}#summary>.checkout-amount>.checkout-amount{font-size:2rem;font-weight:bold;line-height:1;display:flex;align-items:center;justify-content:center;border-top-left-radius:10px;border:1px solid #ff7f00;border-bottom:0;border-right:0}#summary>.checkout-amount>.checkout-duration{border-bottom-left-radius:10px;display:flex;align-items:center;justify-content:center;border:1px solid #ff7f00;border-top:0;border-right:0}#summary>.checkout-amount>.checkout-cost{grid-row:span 2;justify-content:center;background-color:#ff7f00;color:white;font-size:1.7rem;align-items:center;border-top-right-radius:10px;border-bottom-right-radius:10px;border:1px solid #ff7f00;border-left:0;display:flex}#summary>.funding_source{height:4.5rem;width:11rem;display:grid;place-content:center;place-items:center;border:1px solid #777;border-radius:10px;color:inherit;text-decoration:none;gap:.5rem}#summary>.funding_source img{max-width:70%;max-height:100%}@media (max-width:430px){#summary{flex-direction:column}}#second-nav{grid-area:second-nav;display:grid;align-content:center;justify-content:center;text-align:center;gap:.5rem;grid-template-columns:1fr 1fr}#second-nav a{width:auto;padding:.5rem;background-color:#fff;color:inherit;border-color:#ff7f00;border-width:2px;border-left:0;border-right:0;border-top:0;border-radius:10px;white-space:nowrap}#second-nav a:not(.active){border:0} \ No newline at end of file diff --git a/pass/public/styles/key/key.less b/pass/public/styles/key/key.less index 21895c4c1f1c1573f610bcf588ccec10a802c5fc..781ccadc90abefbfcdeae67d10bb1d85607e4b4e 100644 --- a/pass/public/styles/key/key.less +++ b/pass/public/styles/key/key.less @@ -13,8 +13,8 @@ main { row-gap: 1rem; padding-right: 1rem; grid-template-columns: auto 1fr; - grid-template-rows: auto 1fr auto auto; - grid-template-areas: "qr key " "qr setting-url" "qr buttons" "amount content"; + grid-template-rows: auto 1fr auto auto auto; + grid-template-areas: "qr key " "qr setting-url" "qr buttons" "amount second-nav" "amount content"; > #qr { grid-area: qr; @@ -92,9 +92,9 @@ main { @media (max-width: @key-breakpoint-1) { padding: 0 1rem; - grid-template-rows: auto auto auto auto auto; + grid-template-rows: auto auto auto auto auto auto; grid-template-columns: auto auto; - grid-template-areas: "amount qr " "key key" "setting-url setting-url" "buttons buttons " "content content "; + grid-template-areas: "amount qr " "key key" "setting-url setting-url" "buttons buttons " "second-nav second-nav" "content content "; > #key { margin: 0; @@ -124,9 +124,9 @@ main { } @media (max-width: @key-breakpoint-2) { - grid-template-rows: auto auto auto auto auto auto; + grid-template-rows: auto auto auto auto auto auto auto; grid-template-columns: auto; - grid-template-areas: "qr" "key" "setting-url" "buttons" "amount" "content"; + grid-template-areas: "qr" "key" "setting-url" "buttons" "amount" "second-nav" "content"; } } @@ -166,3 +166,33 @@ h2 { flex-direction: column; } } + +#second-nav { + grid-area: second-nav; + display: grid; + align-content: center; + justify-content: center; + text-align: center; + gap: 0.5rem; + grid-template-columns: 1fr 1fr; + + a { + width: auto; + padding: 0.5rem; + background-color: #fff; + color: inherit; + border-color: rgb(255, 127, 0); + border-width: 2px; + border-left: 0; + border-right: 0; + border-top: 0; + border-radius: 10px; + white-space: nowrap; + &:not(.active) { + border: 0; + } + } + + @media (max-width: @key-breakpoint-1) { + } +} diff --git a/pass/routes/key.js b/pass/routes/key.js index 281423d0e039c91d088878341e709402f39862bc..328bfae0c50e066e4d73198b2fdef4d97173b52a 100644 --- a/pass/routes/key.js +++ b/pass/routes/key.js @@ -33,6 +33,7 @@ router.use("/:key", param("key").isUUID(4), async (req, res, next) => { key: { key: req.params.key, charge: await Key.GET_KEY_CHARGE(req.params.key), + expiration: await Key.GET_EXPIRATION(req.params.key), settings_url: metager_url, qr: qr_data_uri, }, diff --git a/pass/views/key.ejs b/pass/views/key.ejs index 1e3c462315a6338bb71886551570cb3afa4a6ab5..0c880c8313fdc0c91383989b077985b1416a983d 100644 --- a/pass/views/key.ejs +++ b/pass/views/key.ejs @@ -1,5 +1,4 @@ <%- include('templates/page_header', {css: css, js: js}); %> - <img id="qr" src="<%= key.qr %> "></img> <div id="key"> <%= key.key %> @@ -23,7 +22,12 @@ <h3>Gültig für</h3> <div class="amount"><%= key.charge %></div> <div>Suchanfragen</div> + <div>bis <span><%= key.expiration.format("DD.MM.YYYY") %></span></div> </div> + <nav id="second-nav"> + <a class="button active" href="#">Suchanfragen auffüllen</a> + <a class="button" href="#">Bestellungen</a> + </nav> <%_ if (created_new) { _%> <div id="store"> <h2>So gehts weiter:</h2> @@ -39,7 +43,6 @@ <%- include('./orders/order', {}); %> <%_ } else { _%> <div id="charge"> - <h2>Suchanfragen auffüllen</h2> <%_ if (typeof checkout !== "undefined" && typeof checkout.amount !== "undefined") { _%> <div id="summary"> <a href="<%= change_url.amount %>" class="checkout-amount" title="Menge ändern"> @@ -60,36 +63,37 @@ <%_ } _%> <div id="checkout"> <%_ if (typeof checkout === "undefined" || typeof checkout.amount === "undefined") { _%> + <p>Wählen Sie aus, wie viele Suchanfragen Sie kaufen möchten.</p> <div id="checkout-amount"> <a href="/key/<%= key.key %>/checkout/300#payment"> <span class="checkout-amount">300</span> <span class="checkout-cost">5€</span> - <span class="checkout-duration">~1 Monat*</span> + <span class="checkout-duration">>1 Monat*</span> </a> <a href="/key/<%= key.key %>/checkout/600#payment"> <span class="checkout-amount">600</span> <span class="checkout-cost">10€</span> - <span class="checkout-duration">~2 Monate*</span> + <span class="checkout-duration">>2 Monate*</span> </a> <a href="/key/<%= key.key %>/checkout/900#payment"> <span class="checkout-amount">900</span> <span class="checkout-cost">15€</span> - <span class="checkout-duration">~3 Monate*</span> + <span class="checkout-duration">>3 Monate*</span> </a> <a href="/key/<%= key.key %>/checkout/1200#payment"> <span class="checkout-amount">1200</span> <span class="checkout-cost">20€</span> - <span class="checkout-duration">~4 Monate*</span> + <span class="checkout-duration">>4 Monate*</span> </a> <a href="/key/<%= key.key %>/checkout/1800#payment"> <span class="checkout-amount">1800</span> <span class="checkout-cost">30€</span> - <span class="checkout-duration">~6 Monate*</span> + <span class="checkout-duration">>6 Monate*</span> </a> <a href="/key/<%= key.key %>/checkout/3600#payment"> <span class="checkout-amount">3600</span> <span class="checkout-cost">60€</span> - <span class="checkout-duration">~1 Jahr*</span> + <span class="checkout-duration">>1 Jahr*</span> </a> </div> <p>* Die angegebenen Zeiträume sind Schätzungen, die auf unseren Erfahrungswerten basieren und sollen einen Anhaltspunkt geben, wie viele Suchanfragen benötigt werden.</p> diff --git a/pass/views/templates/page_header.ejs b/pass/views/templates/page_header.ejs index a3562d0ee5be3ac74f5b29ae6c019e03741d7efa..9792503cac0c7a996c1e23fe9a5d6a003d67b2e9 100644 --- a/pass/views/templates/page_header.ejs +++ b/pass/views/templates/page_header.ejs @@ -19,7 +19,7 @@ </head> <body> - <nav> + <nav id="primary-nav"> <div id="page-logo"> <a href="#"> <img src="/images/metager-schloss-orange.svg" alt="MetaGer Schloss">