1<!DOCTYPE html> 2<html dir="ltr" lang="de"> 3<head> 4 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 8 <meta name="robots" content="index,follow" /> 9 <meta name="language" content="de" /> 10 <meta name="author" content="Querfeld's Wiener Kaffeehaus GesmbH" /> 11 <meta name="publisher" content="Querfeld's Wiener Kaffeehaus GesmbH" /> 12 <meta name="company" content="Querfeld's Wiener Kaffeehaus GesmbH" /> 13 <meta name="page-topic" content="Gutscheine Querfeld's Wiener Kaffeehaus" /> 14 <meta name="reply-to" content="" /> 15 <meta name="distribution" content="global" /> 16 <meta name="revisit-after" content="5" /> 17<link rel="apple-touch-icon" sizes="57x57" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-57x57.png"> 18<link rel="apple-touch-icon" sizes="60x60" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-60x60.png"> 19<link rel="apple-touch-icon" sizes="72x72" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-72x72.png"> 20<link rel="apple-touch-icon" sizes="76x76" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-76x76.png"> 21<link rel="apple-touch-icon" sizes="114x114" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-114x114.png"> 22<link rel="apple-touch-icon" sizes="120x120" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-120x120.png"> 23<link rel="apple-touch-icon" sizes="144x144" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-144x144.png"> 24<link rel="apple-touch-icon" sizes="152x152" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-152x152.png"> 25<link rel="apple-touch-icon" sizes="180x180" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/apple-icon-180x180.png"> 26<link rel="icon" type="image/png" sizes="16x16" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-16x16.png"> 27<link rel="icon" type="image/png" sizes="32x32" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-32x32.png"> 28<link rel="icon" type="image/png" sizes="96x96" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/favicon-96x96.png"> 29<link rel="icon" type="image/png" sizes="192x192" href="https://gutscheine.cafe-wien.at/templates/qwk/favicon/android-icon-192x192.png"> 30<meta name="msapplication-TitleImage" content="https://gutscheine.cafe-wien.at/templates/qwk/favicon/ms-icon-144x144.png"> 31<link rel="alternate" hreflang="de" href="https://gutscheine.cafe-wien.at/wert-abfragen" /> 32<link rel="alternate" hreflang="en" href="https://gutscheine.cafe-wien.at/en/value-check" /> 33<link rel="alternate" hreflang="x-default" href="https://gutscheine.cafe-wien.at/en/value-check" /> 34 <meta name="description" content="Schenken Sie Ihren Liebsten unvergessliche Genussmomente mit unseren exklusiven Gutscheinen. Ob für einen gemütlichen Brunch oder einen schnellen Kaffee zum Mitnehmen â bei uns finden Sie das perfekte Geschenk für jeden Anlass. Bestellen Sie jetzt online und lassen Sie sich von unserem schnellen und zuverlässigen Service begeistern. Besuchen Sie uns noch heute und erleben Sie die Magie des Kaffeegenusses in unseren Kaffeehäusern!" /> 35 <meta name="keywords" content="Gutscheine Gutscheinpakete Gutscheine Schenken Freude Urlaub Kaffee Geschenk Wien" /> 36 <title>Gutscheine Querfeld's Wiener Kaffeehaus</title> 37 <link rel="canonical" href="https://gutscheine.cafe-wien.at/wert-abfragen" /> 38 39<!-- icon template -->
40<script type="text/html" id="manage-consent-template"> 41 <svg width="40" height="40" version="1.1" viewBox="0 0 23.138 27.429" xmlns="http://www.w3.org/2000/svg"> 42 <g transform="translate(.24982 .72053)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8521"> 43 <path d="m11.479 17.811c0.69344 3.9193 3.6964 7.0479 6.5726 7.2872"/> 44 <path d="m12.771 25.774c-10.207-8.2456 0.09164-17.214 1.9773-8.0642 1.5655 7.8623 8.9959 1.0835 6.208-4.4861-7.0193-13.782-25.331-3.8717-16.481 12.134"/> 45 <path d="m8.0864 25.566c-8.8039-10.91 5.8265-23.049 10.189-8.5278"/> 46 <path d="m21.953 8.9673c-7.2914-8.3059-16.657-6.975-21.271 1.964"/> 47 <path d="m20.404 3.6563c-7.5124-5.3367-13.285-4.0659-19.069 0.95229"/> 48 </g> 49 </svg> 50</script>
vendor: 1 bytes, line 50
50
51<script type="text/css" id="klaro-css-override"> 52/* 53 * Custom CSS override for Klaro ConsentManager 54 */ 55 56/* overlay transparent background */ 57.klaro .cookie-modal .cm-bg { 58 background-color: rgba(0,0,0,0.5); 59} 60 61/* modal */ 62.klaro .cookie-modal .cm-modal.cm-klaro, .klaro .cookie-notice:not(.cookie-modal-notice) { 63 background-color: rgb(255, 255, 255); 64} 65 66/* keywords */ 67.klaro .cookie-notice strong { 68 color: rgb(153, 123, 46); 69} 70 71/* heading */ 72.klaro .cookie-modal h1 { 73 color: rgb(153, 123, 46); 74} 75 76/* text color */ 77.klaro .cookie-modal p, .klaro .cookie-modal strong, .klaro .cookie-modal h1, .klaro .cookie-modal h2, .klaro .cookie-modal ul, .klaro .cookie-modal li, .klaro .cookie-notice p, .klaro .cookie-notice strong, .klaro .cookie-notice h1, .klaro .cookie-notice h2, .klaro .cookie-notice ul, .klaro .cookie-notice li { 78 color: rgb(56, 56, 56); 79} 80 81/* text color dark */ 82.klaro .cookie-modal .cm-list-description, .klaro .cookie-notice .cm-list-description { 83 color: rgb(56, 56, 56); 84} 85 86/* header (general description) */ 87.klaro .cookie-modal .cm-modal .cm-header { 88 border-bottom: 1px solid rgb(56, 56, 56); 89} 90 91/* footer (save-buttons) */ 92.klaro .cookie-modal .cm-modal .cm-footer { 93 border-top: 1px solid rgb(56, 56, 56); 94} 95 96/* link color */ 97.klaro .cookie-modal a, .klaro .cookie-notice a { 98 color: rgb(80, 80, 80); 99} 100 101/* toggle input */ 102.klaro .cookie-modal .cm-list-label .slider, .klaro .cookie-notice .cm-list-label .slider { 103 background-color: rgb(56, 56, 56); 104} 105 106/* input checked */ 107.klaro .cookie-modal .cm-list-input:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input:checked+.cm-list-label .slider { 108 background-color: rgb(153, 123, 46); 109} 110 111/* input locked */ 112.klaro .cookie-modal .cm-list-input.required:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.required:checked+.cm-list-label .slider { 113 background-color: rgb(153, 123, 46); 114} 115 116/* input half locked */ 117 .klaro .cookie-modal .cm-list-input.only-required+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.only-required+.cm-list-label .slider 118, .klaro .cookie-modal .cm-list-input.half-checked:checked+.cm-list-label .slider, .klaro .cookie-notice .cm-list-input.half-checked:checked+.cm-list-label .slider { 119 background-color: rgb(153, 123, 46); 120} 121 122/*close button*/ 123.klaro .cookie-modal .cm-modal .hide svg { 124 stroke: rgb(153, 123, 46); 125} 126 127/* button */ 128.klaro .cookie-modal .cm-btn, .klaro .cookie-notice .cm-btn { 129 background-color: rgb(56, 56, 56); 130 color: #ffffff; 131} 132 133/* button success */ 134.klaro .cookie-modal .cm-btn.cm-btn-info, .klaro .cookie-notice .cm-btn.cm-btn-info 135, .klaro .cookie-modal .cm-btn.cm-btn-success, .klaro .cookie-notice .cm-btn.cm-btn-success 136{ 137 background-color: rgb(153, 123, 46); 138 color: #ffffff; 139} 140 141/* fingerprint icon */ 142#klaro-edit-btn { 143 stroke: #2B3435; 144 stroke: rgb(80, 80, 80); 145} 146 147/* position fix for purpose item list */ 148#klaro label, #klaro div.label { 149 position: unset !important; 150} 151 152.klaro .cookie-modal .cm-btn, .klaro .cookie-notice .cm-btn { 153 padding: 0.6em; 154} 155 156.klaro #id-cookie-title { 157 font-size: 20px; 158} 159 160</script>
vendor: 1 bytes, line 160
160
161<script type="text/javascript"> 162 163!function (w, d) { 164 165 let configWithCallback = {"acceptAll":true,"mustConsent":null,"showNoticeTitle":true,"services":[{"name":"Session","default":null,"purposes":["functional"],"cookies":[["\/^XTCsid\\d*$\/"],["\/^XTCsid\\d*$\/","\/",".cafe-wien.at"],["\/^XTCsid\\d*$\/","\/","cafe-wien.at"],["\/^XTCsid\\d*$\/","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Warenkorb","default":null,"purposes":["functional"],"cookies":[["cart_id"],["cart_id","\/",".cafe-wien.at"],["cart_id","\/","cafe-wien.at"],["cart_id","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Land","default":null,"purposes":["functional"],"cookies":[["inc_visitor_country_iso2"],["inc_visitor_country_iso2","\/",".cafe-wien.at"],["inc_visitor_country_iso2","\/","cafe-wien.at"],["inc_visitor_country_iso2","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Referenz URL","default":null,"purposes":["functional"],"cookies":[["referrer_url"],["referrer_url","\/",".cafe-wien.at"],["referrer_url","\/","cafe-wien.at"],["referrer_url","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"Safari Drittanbieter Cookie Check","default":null,"purposes":["functional"],"cookies":[["safari_third_cookie"],["safari_third_cookie","\/",".cafe-wien.at"],["safari_third_cookie","\/","cafe-wien.at"],["safari_third_cookie","\/","gutscheine.cafe-wien.at"]],"required":true},{"name":"FacebookPixel","default":null,"purposes":["marketing"],"cookies":[["^_fbp"],["^_fbp","\/",".cafe-wien.at"],["^_fbp","\/","cafe-wien.at"],["^_fbp","\/","gutscheine.cafe-wien.at"]],"required":false}],"translations":{"de":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Warenkorb","description":""},"Land":{"title":"Land","description":""},"Referenz URL":{"title":"Referenz URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari Drittanbieter Cookie Check","description":""},"FacebookPixel":{"title":"FacebookPixel","description":""},"purposes":{"advertisement":{"title":"Anzeigen","description":"Diese Dienste verarbeiten pers\u00f6nliche Daten, um Ihnen personalisierte oder interessenbezogene Werbung zu zeigen."},"functional":{"title":"Essenziell","description":"Essenzielle Cookies erm\u00f6glichen grundlegende Funktionen und sind f\u00fcr die einwandfreie Funktion der Website erforderlich."},"marketing":{"title":"Marketing","description":"Marketing Cookies werden von Drittanbietern oder Publishern verwendet, um personalisierte Werbung anzuzeigen. Sie tun dies, indem sie Besucher \u00fcber Websites hinweg verfolgen."},"performance":{"title":"Optimierung der Leistung","description":"Diese Dienste verarbeiten personenbezogene Daten, um den von dieser Website angebotenen Service zu optimieren."}},"consentModal":{"title":"Wir sch\u00e4tzen Ihre Privatsph\u00e4re","description":"Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, w\u00e4hrend andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.\r\nHier k\u00f6nnen Sie verschiedene auf dieser Website verwendete Tags \/ Tracker \/ Analyse-Tools ausw\u00e4hlen und deaktivieren."},"consentNotice":{"description":"Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, w\u00e4hrend andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.","learnMore":"Erweiterte Einstellungen "}},"en":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Shopping Cart","description":""},"Land":{"title":"Country","description":""},"Referenz URL":{"title":"referrer url","description":""},"Safari Drittanbieter Cookie Check":{"title":"safari third party check","description":""},"FacebookPixel":{"title":"FacebookPixel","description":""},"purposes":{"advertisement":{"title":"Advertisements","description":"These services process personal information to sho"},"functional":{"title":"Essential","description":"Essential cookies enable fundamental functionaliti"},"marketing":{"title":"Marketing","description":"Marketing cookies are used by third parties or pub"},"performance":{"title":"Performance Optimization","description":"The
165se services process personal information to opt"}},"consentModal":{"title":"We value your privacy","description":"We use cookies on our website. Some of them are essential, while others help us to improve this website and your experience.\r\nHere you can choose or deactivate different tags \/ tracker \/ analytic-tools used on this website."},"consentNotice":{"description":"We use cookies on our website. Some of them are essential, while others help us to improve this website and your experience.","learnMore":"advanced settings "}},"it":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"carrello della spesa","description":""},"Land":{"title":"nazione","description":""},"Referenz URL":{"title":"URL di riferimento","description":""},"Safari Drittanbieter Cookie Check":{"title":"cookie di terze parti safari","description":""},"consentNotice":{"learnMore":"impostazioni avanzate "}},"fr":{"Session":{"title":"Session","description":""},"Warenkorb":{"title":"Panier","description":""},"Land":{"title":"Pays","description":""},"Referenz URL":{"title":"URL de r\u00e9f\u00e9rence","description":""}
165,"Safari Drittanbieter Cookie Check":{"title":"cookie tiers safari","description":""},"consentNotice":{"learnMore":"r\u00e9glages avanc\u00e9s "}},"sl":{"Warenkorb":{"title":"Ko\u0161arica","description":""},"Land":{"title":"Dr\u017eava","description":""},"Referenz URL":{"title":"Napotitveni URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari preverjanje tretje osebe","description":""},"consentModal":{"privacyPolicy":{"text":" "}},"app":{"required":{"title":"obvezno"},"purpose":"Namen"},"purposeItem":{"app":"Namen","apps":"Nameni"},"decline":"Zavrni","ok":"V redu","acceptSelected":"Sprejmi izbrano","acceptAll":"Sprejmi vse","poweredBy":"Klaro!"},"hr":{"Warenkorb":{"title":"Ko\u0161arica","description":""},"Land":{"title":"Dr\u017eava","description":""},"Referenz URL":{"title":"Referentni URL","description":""},"Safari Drittanbieter Cookie Check":{"title":"Safari provjera tre\u0107e strane","description":""},"consentNotice":{"learnMore":"Saznajte vi\u0161e "},"purposeItem":{"app":"Svrha","apps":"Svrhe"},"acceptSelected":"Prihvati odabrano","acceptAll":"Prihvati sve"}}}; 166 for (let a of configWithCallback.services) { 167 a.callback = function (s, o) { 168 //callback for specific service 169 } 170 } 171 172 configWithCallback.callback = function (s, o) { 173 //callback for every service 174 if (0) { 175 window.dataLayer = window.dataLayer || [] 176 dataLayer.push({event: "consentManagerChange", service_name: o.name, service_value: s}); 177 } 178 } 179 180 var 181 // script element 182 klaroScript = d.createElement("SCRIPT") 183 184 // Klaro source - current version: 0.7.22 185 , klaroSrc = "https://gutscheine.cafe-wien.at/includes/javascript/klaro/klaro.js" 186 187 // load indicator 188 , klaroLoaded = false 189 190 , klaroCssOverride = d.querySelector("#klaro-css-override") 191 192 // main function 193 , callback = function () { 194 var consentConfig = (configWithCallback); 195 var i, x, cookies, rgx, editBtn, style; 196 197 window.consentConfig = consentConfig; 198 199 // turn cookie regex strings to actual regex 200 for(i = 0; i < consentConfig.services.length; i++) { 201 cookies = consentConfig.services[i].cookies; 202 for(x = 0; x < cookies.length; x++) { 203 204 if(cookies[x][0].match(/^\/?\^|\$$/)) { 205 rgx = new RegExp(cookies[x][0].replace(/^\/|\/$/g, "")); 206 consentConfig.services[i].cookies[x][0] = rgx; 207 } 208 } 209 } 210 211 // append klaroManager to global scope 212 window.klaroManager = klaro.getManager(consentConfig); 213 214 // dynamically append style element after Klaro was loaded 215 // to make sure styles are overridden 216 style = d.createElement("STYLE"); 217 style.innerHTML = klaroCssOverride.innerHTML; 218 d.head.appendChild(style); 219 220 // note: after confirmation, Kalro can't be displayed as notice 221 if(!klaroManager.confirmed) { 222 klaro.show(consentConfig); 223 } 224 225 // add edit button (fingerprint icon) 226 editBtn = d.createElement("a"); 227 editBtn.href = "#"; 228 editBtn.title = "Cookies bearbeiten "; 229 editBtn.innerHTML = d.querySelector("#manage-consent-template").innerHTML; 230 editBtn.id = "klaro-edit-btn"; 231 editBtn.style = "position:fixed; bottom:20px; right:20px; font-size:10px;"; 232 editBtn.addEventListener("click", function(event) { 233 event.preventDefault(); 234 klaro.show(consentConfig); 235 return false; 236 }); 237 d.body.appendChild(editBtn); 238 } 239 240 241 // load trigger for main function 242 , loadCallback = function() { 243 // check if Klaro was loaded and document is ready 244 if(klaroLoaded === false || ["interactive", "complete"].indexOf(d.readyState) === -1) { 245 return; 246 } 247 248 callback(); 249 250 d.removeEventListener("readystatechange", loadCallback); 251 klaroScript.removeEventListener("load", loadCallback); 252 } 253 254 ; 255 256 257 d.addEventListener("readystatechange", loadCallback); 258 259 // append script element to load Klaro.js 260 klaroScript.src = klaroSrc;
261 klaroScript.addEventListener("load", function() { 262 klaroLoaded = true; 263 loadCallback(); 264 }); 265 d.head.appendChild(klaroScript); 266 267 loadCallback(); 268} (window, document); 269 270</script>
270 271<!-- Google Tag Manager -->
272<script>
vendor: 341 bytes, lines 272-276
272 273 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); 274 var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; 275 j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); }) 276 (window,document,'script','dataLayer','
276GTM-KRB2DS3
vendor: 4 bytes, line 276
276');
277</script>
vendor: 68 bytes, lines 277-278
277 278<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
278GTM-KRB2DS3
vendor: 83 bytes, line 278
278" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
279<!-- End Google Tag Manager -->
280<script> 281 function waitForGTM(callback) { 282 const timeout = 5000; 283 const start = Date.now(); 284 (function isLoaded() { 285 if (checkGTMs()) { 286 callback(); 287 } else if (Date.now() - start < timeout) { 288 setTimeout(isLoaded, 50); 289 } else { 290 console.log('GTM not loaded in time'); 291 } 292 })(); 293 294 function checkGTMs() { 295 296 297 298 if (!window.google_tag_manager) { 299 return false; 300 } 301 302 303 if (!window.google_tag_manager['GTM-KRB2DS3']) { 304 return false; 305 } 306 307 308 return true; 309 } 310 } 311</script>
311 312 313
314<script data-type="text/javascript" data-name="FacebookPixel" type="text/plain">
vendor: 439 bytes, lines 314-320
314 315 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? 316 n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; 317 n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; 318 t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, 319 document,'script','https://connect.facebook.net/en_US/fbevents.js'); 320 fbq('init', '
320586203133161955
vendor: 39 bytes, lines 320-322
320'); 321 322 fbq('track', 'PageView');
323</script>
323 324 325<!-- Copyright (c) 2000-2020 etracker GmbH. All rights reserved. --> 326<!-- This material may not be reproduced, displayed, modified or distributed --> 327<!-- without the express prior written permission of the copyright holder. --> 328<!-- etracker tracklet 5.0 -->
329<script> 330 331 var et_seg1 = "qwk"; 332 var et_seg2 = "ecom"; 333</script>
vendor: 1 bytes, line 333
333
334<script id="_etLoader" data-block-cookies="true" data-respect-dnt="true" data-secure-code="OXELj9" src="//code.etracker.com/code/e.js" async></script>
334 335<!-- etracker tracklet 5.0 end --> 336 337 <base href="https://gutscheine.cafe-wien.at/" /> 338 339 <link rel="stylesheet" type="text/css" href="templates/qwk/t1/stylesheet.css?v=2157"/> 340 341
341<script> 342 343// init CookieHandler in global namespace 344var CookieHandler; 345 346 347!function (w, d) { 348 349 "use strict"; 350 351 352 /** {Object} */ 353 var COOKIE_SUPPORT = {"device":null,"version":"","isSafari":false,"isMobile":false,"browser":null,"sameSiteSupport":true,"isFbAppBrowser":false}, 354 355 356 /** 357 * 358 * @param v 359 * @returns {boolean} 360 * @private 361 */ 362 _bool = function (v) { 363 if(typeof v === "string" && v.toUpperCase() === "FALSE") { 364 return false; 365 } 366 return !!v; 367 } 368 /** 369 * 370 * @param v 371 * @returns {boolean} 372 * @private 373 */ 374 , _defined = function (v) { 375 return typeof v !== "undefined"; 376 } 377 ; 378 379 /** 380 * 381 * @type {{get: CookieHandler.get, set: CookieHandler.set, remove: CookieHandler.remove}} 382 */ 383 CookieHandler = { 384 /** 385 * get all cookies or cookie value by name 386 * @param name {string} 387 * @returns {*} 388 */ 389 get : function (name) { 390 var cookies = document.cookie.split(/\s*;\s*/) // array with cookie strings (name=value) 391 , i // iterator number 392 , t // temporary array containing name and value ([name, value]) 393 , r = {} // result object 394 ; 395 for(i = 0; i < cookies.length; i++) { 396 t = cookies[i].split("="); 397 t[0] = decodeURIComponent(t[0]); 398 t[1] = decodeURIComponent(t[1]); 399 r[t[0]] = t[1]; 400 if(name && t[0] === name) { 401 return t[1]; 402 } 403 } 404 return r; 405 }, 406 /** 407 * sets cookie and adds default flags if not given 408 * @param name {string} 409 * @param value {string} 410 * @param s {object} 411 * object containing the settings i.e. 412 * { 413 * path : "/", 414 * domain : "example.com", 415 * expires : 86400, // seconds till expiration date (will be converted to date string) 416 * SameSite: "none", 417 * secure : true 418 * } 419 * @returns {string|boolean} 420 */ 421 set : function (name, value, s) { 422 var parts, 423 i, 424 cookieStr, 425 remove = false; 426 427 // prepare value and name 428 // .get() will always return a string 429 value = value.toString(); 430 name = name.toString(); 431 s = s || {}; 432 433 parts = [encodeURIComponent(name) + "=" + encodeURIComponent(value)]; 434 435 if(!_defined(s.SameSite) && document.location.protocol === 'https:') { 436 // Safari turns any SameSite flag into strict => solution: do not add it 437 if(COOKIE_SUPPORT.sameSiteSupport === true) { 438 s.SameSite = "none"; 439 } 440 if(!_defined(s.secure)) { 441 s.secure = true; 442 } 443 } 444 445 for(i in s) { 446 switch(i) { 447 case "expires": 448 if(s[i] < 0) { 449 remove = true; 450 } 451 s[i] = (new Date(Date.now()+(s[i] * 1000))).toGMTString(); 452 break; 453 case "secure": 454 if(_bool(s[i])) { 455 s[i] = ""; 456 } else { 457 delete s[i]; 458 } 459 break; 460 case "path": 461 case "domain": 462 case "SameSite": 463 default: 464 break; 465 } 466 if(_defined(s[i])) { 467 parts.push(i + (s[i] ? "=" + s[i] : "")); 468 } 469 } 470 cookieStr = parts.join("; "); 471 document.cookie = cookieStr; 472 473 if(remove === false && this.get(name) !== value) { 474 console.error("Cookiehandler.set() failed to set cookie with string \"" + cookieStr + "\""); 475 return false;
476 } 477 478 console.info("CookieHandler.set() set cookie with string %c\"" + cookieStr + "\"", "color: #50B000; text-decoration: underline;"); 479 return cookieStr; 480 }, 481 /** 482 * remove cookie by name (sets expiration date 1 minute in the past) 483 * @param name 484 * @returns {*} 485 */ 486 remove : function (name) { 487 return this.set(name, "", {expires : -60}); 488 }, 489 490 /** 491 * prints help to console 492 */ 493 help : function () { 494 var nl = "\n", 495 tb = "\t", 496 lines = [ 497 "CookieHandler.get([name]) {...}" 498 , tb + "Returns cookie value by name." 499 , tb + "Returns object with key => values if no name given." 500 , "" 501 , "CookieHandler.set(name, value[, s]) {...}" 502 , tb + "Sets the cookie with name and value." 503 , tb + "The third parameter s(ettings) is optional." 504 , tb + "Returns false on error." 505 , tb + "Some settings may be applied by default (SameSite=none; secure)" 506 , tb + "example:" 507 , tb + "{" 508 , tb + " path : \"/\"," 509 , tb + " domain : \"example.com\"," 510 , tb + " expires : 86400, // seconds till expiration date (will be converted to date string)" 511 , tb + " SameSite: \"none\"," 512 , tb + " secure : true" 513 , tb + "}" 514 , "" 515 , "CookieHandler.remove(name) {...}" 516 , tb + "Removes cookie by setting its expiration date 1 minute into the past." 517 , "" 518 , "CookieHandler.help() {...}" 519 , tb + "Prints help to console." 520 ]; 521 522 console.info("%c" + lines.join(nl), "color: #888888;"); 523 } 524 }; 525 526 527} (window, document); 528 </script>
528 529 530
530<script> 531 var selected; 532 var submitter = null; 533 534 function submitFunction() { 535 submitter = 1; 536 } 537 function popupWindow(url) { 538 window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150') 539 } 540 541 function selectRowEffect(object, buttonSelect) { 542 if (!selected) { 543 if (document.getElementById) { 544 selected = document.getElementById('defaultSelected'); 545 } else { 546 selected = document.all['defaultSelected']; 547 } 548 } 549 550 if (selected) selected.className = 'moduleRow'; 551 object.className = 'moduleRowSelected'; 552 selected = object; 553 } 554 555 function rowOverEffect(object) { 556 if (object.className == 'moduleRow') object.className = 'moduleRowOver'; 557 } 558 559 function rowOutEffect(object) { 560 if (object.className == 'moduleRowOver') object.className = 'moduleRow'; 561 } 562 563 564 // Für Checkout Prozess 565 566 function selectRowEffectCheckoutP(object, buttonSelect) { 567 568 if (selected) selected.className = 'moduleRowCheckout'; 569 object.className = 'moduleRowSelectedCheckout'; 570 selected = object; 571 572 } 573 574 function selectRowEffectCheckout(object, buttonSelect) { 575 576 if (!selected) { 577 if (document.getElementById) { 578 selected = document.getElementById('defaultSelected'); 579 } else { 580 selected = document.all['defaultSelected']; 581 } 582 } 583 584 if (selected) { 585 selected.className = 'moduleRowCheckout'; 586 var oldPayment = $(selected).find(":radio").attr("value"); 587 if(selected !== object) { 588 $("#subDiv_"+oldPayment).slideUp(function() { 589 crossDomainIframeResize(false); 590 }); 591 } 592 } 593 object.className = 'moduleRowSelectedCheckout'; 594 selected = object; 595 596 $(object).find(":radio").attr("checked", "checked"); 597 var payment = $(object).find(":radio").attr("value"); 598 $("#subDiv_"+payment).slideDown(function() { 599 crossDomainIframeResize(false); 600 }); 601 602 //remove subselection 603 if (typeof subSelected !== "undefined" && subSelected) { 604 subSelected.className = 'moduleSubRowCheckout'; 605 } 606 } 607 608 function rowOverEffectCheckout(object) { 609 if (object.className == 'moduleRowCheckout') object.className = 'moduleRowOverCheckout'; 610 } 611 612 function rowOutEffectCheckout(object) { 613 if (object.className == 'moduleRowOverCheckout') object.className = 'moduleRowCheckout'; 614 } 615 616 // ENDE 617 618 // Für Checkout Prozess im Administrationsbereich (ROX) 619 620 function selectRowEffectCheckoutROX(object, buttonSelect) { 621 if (!selected) { 622 if (document.getElementById) { 623 selected = document.getElementById('defaultSelected'); 624 } else { 625 selected = document.all['defaultSelected']; 626 } 627 } 628 629 if (selected) 630 selected.className = 'moduleRowCheckout_rox'; 631 object.className = 'moduleRowSelectedCheckout_rox'; 632 selected = object; 633 634 } 635 636 function rowOverEffectCheckoutROX(object) { 637 if (object.className == 'moduleRowCheckout_rox') object.className = 'moduleRowOverCheckout_rox'; 638 } 639 640 function rowOutEffectCheckoutROX(object) { 641 if (object.className == 'moduleRowOverCheckout_rox') object.className = 'moduleRowCheckout_rox'; 642 } 643 644 // ENDE 645 646 function optimizeSizeSelectbox() 647 { 648 var inputSize = $(":text").eq(-1).outerWidth(); 649 var webbrowser = jQuery.browser; 650 var sizeEdit = 0; 651 chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 652 653 if(inputSize > 20) 654 { 655 $("select").css("width", inputSize + sizeEdit); 656 } 657 } 658 // ENDE 659 660 function popupImageWindow(url) { 661 window.open(url,'popupImageWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150') 662 } 663 </script>
663 664
664<script> 665 if (top === self && "" != ''){ 666 function iCheckWebsiteRedirect() 667 { 668 window.location = ""; 669 } 670 671 if(typeof jQuery == "undefined" || false === false) 672 { 673 iCheckWebsiteRedirect(); 674 } 675 else 676 { 677 jQuery.ajax({ 678 url: "logoff.php?action=ajax", 679 success: function() { 680 iCheckWebsiteRedirect(); 681 }, 682 error: function() { 683 iCheckWebsiteRedirect(); 684 }, 685 async: false 686 }); 687 } 688 } 689 </script>
689 690
691<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/jquery/jquery.js"></script>
vendor: 1 bytes, line 691
691
692<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/jquery-ui/jquery-ui.js"></script>
692 693
694<script type="text/javascript" > 695 696 function strpos (haystack, needle, offset) { 697 // Finds position of first occurrence of a string within another 698 var i = (haystack+'').indexOf(needle, (offset ? offset : 0)); 699 return i === -1 ? false : i; 700 } 701 702 var prevHeight = 0, alreadyJumped = false; 703 function crossDomainIframeResize(jumpToNavtrailAnchor, jumpOffset) { 704 705 var iframe = document.getElementById( 'inneriframe' ); 706 707 if (typeof jumpOffset == "undefined") jumpOffset = 0; 708 709 // webkit browsers (safari,chrome) provide wrong scrollHeight so get only offsetHeight ### 10_215 ### 710 711 var height = $("#navtrail_anchor").height(); 712 //var height = document.body.offsetHeight; 713 if (height != prevHeight || jumpToNavtrailAnchor) { 714 prevHeight = height; 715 716 if(height == 0) { 717 height = 1800; 718 } 719 720 if (window.parent != window) { 721 try { 722 if(window.parent.updateIFrame) 723 window.parent.updateIFrame(height,''); 724 725 } catch (e) { 726 //console.warn("not embedded in start.php"); 727 } 728 729 try { 730 731 var navtrailJumpOffset 732 = parseInt(window.getComputedStyle(document.getElementById("navtrail_anchor")).marginTop) 733 + jumpOffset; 734 735 if (typeof console !== "undefined") { 736 console.warn("ResizeIframe url is not configured. Fallback to postMessge-API."); 737 if (!alreadyJumped || jumpToNavtrailAnchor) { 738 window.top.postMessage(["Inc.updateIFrame", height, true, navtrailJumpOffset], "*"); 739 alreadyJumped = true; 740 } else { 741 window.top.postMessage(["Inc.updateIFrame", height], "*"); 742 } 743 } 744 } catch (e) { 745 console.error(e); 746 } 747 } else { 748 $("body").addClass("standalone"); 749 } 750 } 751 } 752 753 $().ready(function() { 754 crossDomainIframeResize(true); 755 }); 756 757 $(window).on("load", function() { 758 setTimeout(function() {crossDomainIframeResize(true) }, 300); 759 crossDomainIframeResize(true); 760 $(window).resize(function() { 761 if (crossDomainResizeHandler) clearTimeout(crossDomainResizeHandler); 762 crossDomainResizeHandler = setTimeout(function() {crossDomainIframeResize(false) }, 300); 763 }); 764 }); 765 766</script>
766 767<!-- xtc_get_shop_analytics_code -->
767<script> 768 // Input Replacement 769 function textReplacement(input){ 770 var originalvalue = input.val(); 771 input.focus( function(){ 772 if( $.trim(input.val()) == originalvalue ){ input.val(''); } 773 }); 774 input.blur( function(){ 775 if( $.trim(input.val()) == '' ){ input.val(originalvalue); } 776 }); 777 } 778 779 // FIX SAFARI THIRD PARTY COOKIE PROBLEM 780 if (window.top != window) { // wenn in iframe 781 if (navigator.userAgent.indexOf("Safari") >= 0 && navigator.userAgent.indexOf("Chrome") == -1) { // und der Browser ist safari 782 783 var safariCookieFirstPartySaved = false; 784 785 var safariPopupFunc = function (event) { 786 var target; 787 if (document.cookie.indexOf("safari_third_cookie=1") == -1 && (!localStorage || (localStorage && localStorage.getItem("safari_third_cookie") !== "1"))) { // only ONCE 788 789 // find target of click event 790 target = event.target || event.srcElement; 791 if(target.nodeType === 3) { 792 target = target.parentNode; 793 } 794 795 CookieHandler.set("safari_third_cookie", "1"); 796 try { 797 localStorage.setItem("safari_third_cookie", "1"); 798 } catch(e) { 799 console.log("localStorage could not be written"); 800 } 801 802 if (!safariCookieFirstPartySaved) { 803 var safariCookieUrl = "https://gutscheine.cafe-wien.at/safari_third_party.php"; 804 var safariPopup = window.open(safariCookieUrl); 805 if (safariPopup) { 806 safariPopup.blur(); 807 window.focus(); 808 } else { 809 if (console) console.log("Safari Third Party Fix probably blocked by popup blocker."); 810 } 811 safariCookieFirstPartySaved = true; 812 } 813 814 // check for file input and 815 // use preventDefault to stop file dialog in Safari 816 if(target && target.nodeName === 'INPUT' && target.type === 'file') { 817 event.preventDefault(); 818 return false; 819 } 820 } 821 window.removeEventListener('click', safariPopupFunc); 822 }; 823 824 window.addEventListener('click', safariPopupFunc); 825 // $(window).one('click', safariPopupFunc); 826 827 } 828 } 829 </script>
829 830
831<script> 832 document.addEventListener("DOMContentLoaded", function() { 833 var html = '<div class="cookie-msg">' + 834 'Diese Internetseite verwendet Cookies, um die Nutzererfahrung zu verbessern und den Benutzern bestimmte Dienste und Funktionen bereitzustellen. ' + 835 '<a href="https://gutscheine.cafe-wien.at/datenschutz" target="_blank" rel="noopener" class="cookie-details">Details anzeigen</a> ' + 836 '<div class="button">' + 837 '<a id="cookie-btn" class="buttonLink">OK</a>' + 838 '</div>' + 839 '</div>'; 840 var div = document.createElement("div"); 841 div.innerHTML = html; 842 div.id = "cookie-bar"; 843 div.style.display = 'none'; 844 845 if (localStorage && localStorage.getItem("cookiesallowed") !== "1") { 846 div.style.display = 'block'; 847 } 848 document.body.appendChild(div); 849 document.getElementById("cookie-btn").addEventListener("click", function() { 850 if (localStorage) { 851 localStorage.setItem("cookiesallowed", "1"); 852 div.style.display = 'none'; 853 } 854 }); 855 }); 856</script>
856 857<style> 858 #cookie-bar { 859 z-index: 1000; 860 position: fixed; 861 bottom: 0; 862 left: 0; 863 right: 0; 864 background:white; 865 } 866 .cookie-msg { 867 padding:1em; 868 text-align: center; 869 } 870 .cookie-msg .button, .cookie-msg .button .buttonLink { 871 display: inline-block; 872 vertical-align: middle; 873 } 874</style> 875 876
877<script type="text/javascript"> 878 !function(w, d) { 879 880 "use strict"; 881 882 /** 883 * @type Array 884 */ 885 var localStorageWhitelist = []; 886 887 /** 888 * 889 * @param name 890 * @param whitelist 891 * @param getResult 892 * @returns {boolean} 893 */ 894 var whitelistCheck = function (name, whitelist, getResult) { 895 if(whitelist.indexOf(name) === -1) { 896 if(getResult) { 897 return false; 898 } 899 throw "\"" + name + "\" not whitelisted! whitelist: " + whitelist.join(", "); 900 } 901 return true; 902 }; 903 904 /** 905 * 906 * @type {} 907 * object containing functions that can be called from outside 908 */ 909 var Inc = { 910 911 setLocalStorage : function (name, value) { 912 whitelistCheck(name, localStorageWhitelist); 913 localStorage.setItem(name, value); 914 } 915 , removeLocalStorage : function (name) { 916 whitelistCheck(name, localStorageWhitelist); 917 localStorage.removeItem(name); 918 } 919 920 921 , consentManager : { 922 /** 923 * accept/reject single service and it's cookies 924 * @param name 925 * @param value 926 */ 927 set : function (name, value) { 928 if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); 929 klaroManager.updateConsent(name, !!value); 930 klaroManager.saveAndApplyConsents(); 931 } 932 933 /** 934 * reset service to default 935 * @param name 936 */ 937 , reset : function (name) { 938 if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); 939 if(name) { 940 this.set(klaroManager.getDefaultConsent(name)); 941 return; 942 } 943 klaroManager.resetConsents(); 944 klaroManager.saveAndApplyConsents(); 945 } 946 947 /** 948 * accept/reject all services and their cookies that match given purpose 949 * @param purpose 950 * @param value 951 */ 952 , setByPurpose : function (purpose, value) { 953 if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); 954 var services = klaroManager.config.services, i; 955 for(i = 0; i < services.length; i++) { 956 if(services[i].purposes.indexOf(purpose) !== -1) { 957 this.set(services[i].name, value); 958 } 959 } 960 klaroManager.saveAndApplyConsents(); 961 } 962 963 /** 964 * accept/reject all services and their cookies that are optional 965 * @param value 966 */ 967 , setByOptional : function ( value ) { 968 if(typeof klaroManager === "undefined") return console.error("klaroManager undefined!"); 969 var services = klaroManager.config.services, i; 970 for(i = 0; i < services.length; i++) { 971 if(services[i].required === false) { 972 this.set(services[i].name, value); 973 } 974 } 975 klaroManager.saveAndApplyConsents(); 976 977 } 978 979 /** 980 * alias for this.setByOptional() 981 * @param value 982 * @returns {void | undefined} 983 */ 984 , setAll : function ( value ) { 985 return this.setByOptional ( value ); 986 } 987 } 988 989 }; 990 991 w.incTest = Inc; 992 993 // listen for postMessage event 994 w.addEventListener("message", function (event) { 995 996 var funcName, args, rawName, returnValue, funcArr, tempFunc, i; 997 998 // check data-type 999 switch(({}).toString.call(event.data).replace(/^\[\w+ |\]$/g,"").toUpperCase()) { 1000 // array 1001 case "ARRAY": 1002 args = event.data; 1003 rawName = args.shift(); 1004 funcName = rawName.replace(/^inc(ert)?\./i, ""); 1005 funcArr = funcName.split("."); 1006 1007 // check if function name is prefixed with Inc. or Incert. 1008 if(funcName === rawName) { 1009 return; 1010 } 1011 1012 tempFunc = Inc; 1013 1014 // search in IncertClass instance 1015 for( i = 0; i < funcArr.length; i++) { 1016 if(!tempFunc[funcArr[i]]) { 1017 break; 1018 } 1019 if(i === (funcArr.length -1)) { 1020 // apply args to function with appropriate context 1021 returnValue = tempFunc[funcArr[i]].apply(tempFunc, args); 1022 console.info("\"" + rawName + "\" called successfully!; arguments:", args, "; returnValue:", returnValue); 1023 return; 1024 } 1025 tempFunc = tempFunc[funcArr[i]]; 1026 } 1027 1028 throw "\"" + rawName + "\" is not defined"; 1029 1030 break; 1031 default: 1032 break; 1033 } 1034 }); 1035 } (window, document); 1036</script>
1036 1037 1038</head> 1039<body class="body" onload="crossDomainIframeResize();"> 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
1061<script> 1062 var oneColumnWindowWidth = parseInt("600") || 400, 1063 twoColumnWindowWidth = parseInt("1200") || 640, 1064 respDropSidebarWindowWidth = parseInt("800") || 800, 1065 voucherSliderItemMargin = ((parseInt("20") || 20) / 2), 1066 listingSpecialCountdownFormat = "" | "%DT %Hh %Mm %Ss"; 1067 1068 //Thumbs Voucher Slider Settings (see slick-init.js) 1069 var voucherSliderShowArrows = ("" == "1") || false, 1070 voucherSliderShowDots = ("1" == "1") || false, 1071 voucherSliderCenterMode = ("" == "1") || false, 1072 vSliderMinItems = parseInt("1") || 1, 1073 vSliderMaxItems = parseInt("2") || 3, 1074 cSliderMinItems = parseInt("1") || 1, 1075 cSliderMaxItems = parseInt("3") || 1, 1076 voucherSliderItemsToShowMobile = parseInt("3") || 1, 1077 voucherSliderItemsToShowTablet = parseInt("5") || 3, 1078 voucherSliderItemsToShowDesktop = parseInt("5") || 5; 1079 1080 var currentCurrencySymbol = "\u20ac"; 1081</script>
1081 1082 1083
1084<script> 1085 const subShopId = -1; 1086</script>
1086 1087
1088<script type="text/javascript" 1089 src="./templates/qwk/t1/javascript/live.min.js?v=2157"></script>
1089 1090 1091<div class="body-inc " id="navtrail_anchor"> 1092 <!--Header --> 1093 <header class="inc-header sticky"> 1094 <a href="#inc-body" class="sr-only">Zum Hauptinhalt</a> 1095 <div class="inc-header-inner"> 1096 1097 <div class="inc-navigation-container "> 1098 1099 1100 1101 1102<ul class="inc-page-navigation" role="navigation" id="inc-page-navigation-container"> 1103 <li> 1104 <a href="https://www.cafe-wien.at/de/die-cafes/standorte.html"> 1105 Unsere Cafes & Restaurants 1106 </a> 1107 </li> 1108 <li class="language-switch-burger hidden-navi-sm-md-lg"> 1109 1110 </li> 1111 </ul> 1112
1113<script> 1114 let id = 0; 1115 let currentId = 0; 1116</script>
1116 1117 1118 1119 1120 <ul class="inc-shop-navi"> 1121 <li class="inc-nav-item"> 1122 <a class="inc-nav-link inc-nav-value-check-page" href="https://gutscheine.cafe-wien.at/wert-abfragen" title="Wertabfrage" aria-label="Wertabfrage"> 1123 <i class="im icon-card" aria-hidden="true"></i> 1124 <span class="inc-nav-link-caption">Wertabfrage</span> 1125 </a> 1126 </li> 1127 1128 <!-- 1129 <li class="inc-nav-item"> 1130 <a class="inc-nav-link inc-nav-account" href="https://gutscheine.cafe-wien.at/wert-abfragen" title="Konto" aria-label="Konto"> 1131 <i class="im icon-card" aria-hidden="true"></i> 1132 <span class="inc-nav-link-caption">Wertabfrage</span> 1133 </a> 1134 </li> 1135 --> 1136 1137 <li class="inc-nav-item "> 1138 <a class="inc-nav-link inc-nav-cart inc-modal-control" 1139 href="https://gutscheine.cafe-wien.at/warenkorb" data-toggle="modal-cart"> 1140 <div class="inc-nav-cart-inner"> 1141 <i class="im icon-shopping-cart" aria-hidden="true"></i> 1142 <span class="inc-nav-link-caption"> Warenkorb</span> 1143 <span id="inc-cartItemCount" 1144 class="empty">0</span> 1145 </div> 1146 </a> 1147 <div class="inc-modal-menu inc-nav-cart " id="modal-cart"> 1148 <div class="inc-modal-menu-inner"> 1149 1150 </div> 1151 </div> 1152 </li> 1153 1154 <div class="hidden-navi-xs"> 1155 1156 </div> 1157 </ul> 1158 1159 1160<button type="button" id="navigation-toggle-responsive" aria-expanded="false" aria-controls="inc-page-navigation-container"> 1161 <span class="sr-only"> 1162 <span class="navigation-toggle-responsive-open">Navigation öffnen</span> 1163 <span class="navigation-toggle-responsive-close" style="display: none">Navigation schlieÃen</span> 1164 </span> 1165 <div class="navigation-toggle-responsive-burger" aria-hidden="true"> 1166 <span></span> 1167 <span></span> 1168 <span></span> 1169 </div> 1170</button>
1171<script src="./templates/qwk/t1/javascript/header-mobile.js"></script>
1171 </div> 1172 </div> 1173 </header> 1174 1175 <noscript> 1176 <div class="inc-error-box center" role="alert"> 1177 Bitte <b>aktivieren Sie JavaScript</b> in Ihrem Browser! Andernfalls kann es zu Problemen bei der Anzeige der Produkte, bzw. bei der Durchführung Ihrer Bestellung kommen. 1178 </div> 1179 </noscript> 1180 1181 <!--Sidebar --> 1182 1183 <!--Content --> 1184 <div class="content-inc " id="inc-body" role="main"> 1185 <!-- Breadcrumbs / Navtrail and Wizard --> 1186 <div class="navtrail"> 1187 <div class="inc-content-container cc-reset-padding-top-bottom"> 1188 <a href="https://gutscheine.cafe-wien.at/" class="headerNavigation">Shop</a> 1189 </div> 1190 </div> 1191 1192 1193 <!-- DISPLAY_CATEGORIES_WITH_PRODUCTS --> 1194 1195 1196 1197 1198 1199 1200<!-- cross selling data --> 1201 1202 1203 1204
1205<script type="text/html" id="inc-lightbox-overlay-quickbuy"> 1206 <div class="inc-ticket-quickbuy-overlay"> 1207 <div class="inc-ticket-overlay-inner"> 1208 <div class="inc-ticket-overlay-left inc-ticket-quickbuy-img"></div> 1209 <div class="inc-ticket-overlay-right inc-ticket-quickbuy-content"> 1210 <h2></h2> 1211 <div class="inc-ticket-quickbuy-data"> 1212 <div class="inc-form-group"> 1213 <label class="inc-nofloat" for="inc-ticket-quickbuy-variant">Wählen Sie Ihr Package</label> 1214 <select type="text" name="productVariant" id="inc-ticket-quickbuy-variant" onchange="fetchEventDates(this.value, true)"></select> 1215 </div> 1216 <div class="inc-ticket-quickbuy-eventdate inc-form-group-row"> 1217 <div class="inc-form-group inc-ticket-quickbuy-eventdate-date"> 1218 <label for="inc-ticket-quickbuy-date">Datum</label> 1219 <input type="text" name="date" id="inc-ticket-quickbuy-date" onchange="updateEventDates(false, true, this.value)"> 1220 </div> 1221 <div class="inc-form-group inc-form-group-time"> 1222 <label class="inc-nofloat" for="inc-ticket-quickbuy-time">Zeit</label> 1223 <select type="text" name="time" id="inc-ticket-quickbuy-time" onchange="checkTime(this.value, true)"></select> 1224 </div> 1225 <div class="inc-form-group inc-form-group-no-grow"> 1226 <label class="inc-nofloat" for="inc-ticket-quickbuy-qty">Anzahl</label> 1227 <div class="inc-quantity-toggle"> 1228 <button type="button" class="inc-quantity-button-dec inc-quantity-button">−</button> 1229 <input type="number" class="inc-quantity-input" maxlength="2" size="2" min="1" max="99" name="quickbuy-qty-overlay" value="1"/> 1230 <button type="button" class="inc-quantity-button-inc inc-quantity-button">+</button> 1231</div> </div> 1232 </div> 1233 </div> 1234 <div class="inc-ticket-quickbuy-control"> 1235 <div class="inc-ticket-quickbuy-price"> 1236 <span class="inc-ticket-quickbuy-price-val"></span> 1237 <span class="inc-ticket-quickbuy-price-info"></span> 1238 <span class="inc-ticket-quickbuy-price-vat">inkl. 20% Mwst.</span> 1239 </div> 1240 <div class="button-row"> 1241 <button data-href="#" class="call-to-action" id="inc-ticket-quickbuy-button-buy" onclick="buyTicket(this, true)">jetzt buchen</button> 1242 <a href="#" class="default-button" id="inc-ticket-quickbuy-button-detail">mehr Info</a> 1243 </div> 1244 </div> 1245 </div> 1246 </div> 1247 </div> 1248</script>
1248<script> 1249 const shoppingCart = "https://gutscheine.cafe-wien.at/warenkorb"; 1250 1251 const calendar_legend_available = ""; 1252 const calendar_legend_narrow = ""; 1253 const calendar_legend_full = ""; 1254 const calendar_legend_presale = ""; 1255 const calendar_legend_nosale = ""; 1256 const calendar_legend_waitinglist = ""; 1257 const calendar_legend_cancelled = ""; 1258 const calendar_legend_elapsed = ""; 1259 const calendar_legend_soldout = ""; 1260 1261 const currency_left = "â¬"; 1262 const currency_right = ""; 1263 1264</script>
vendor: 1 bytes, line 1264
1264
1265<script type="text/javascript" src="./templates/qwk/t1/javascript/ticketsystem/ticket-getdata.js"></script>
vendor: 1 bytes, line 1265
1265
1266<script type="text/javascript" src="./templates/qwk/t1/javascript/ticketsystem/ticket-quickbuy.js"></script>
1266 1267 1268<!-- Implement Slick Slider -->
1269<script type="text/javascript" src="./templates/qwk/t1/javascript/libs/slick/slick.js"></script>
1269 1270<link rel="stylesheet" href="./templates/qwk/t1/javascript/libs/slick/slick.css" />
1270<script type="text/javascript" src="./templates/qwk/t1/javascript/content-render/product-list-item.js"></script>
vendor: 1 bytes, line 1270
1270
1271<script type="text/javascript" src="./templates/qwk/t1/javascript/content-render/cross-selling.js"></script>
vendor: 1 bytes, line 1271
1271
1272<script> 1273 let cross_selling_data = null; 1274 const products_badge_new = "neu"; 1275 const products_badge_bestseller = "Bestseller"; 1276 const products_badge_special_offer = "Aktion"; 1277 const manufacturer = "Betrieb: "; 1278 const pli_min_price_label = ""; 1279 const products_out_of_stock = "ausverkauft"; 1280 const products_stock_available = "verfügbar"; 1281 const sold_out = "Ausverkauft"; 1282 const more_info = ""; 1283 1284 const listingQuantityInfoLimit = parseInt("10", 10); 1285 1286 const quickbuy_sr_label = "Produkt direkt kaufen"; 1287 const current_template = "qwk/t1"; 1288 const style_product_buy_button = ""; 1289 const show_product_buy_button = "1"; 1290 const showPrices = "1"; 1291 1292 const button_directbuy_details = "Details"; 1293 const button_in_cart = "bestellen"; 1294 const button_buy_product = "zum Produkt"; 1295 const button_buy_item = "zum Artikel"; 1296 const button_buy_ticket = "zum Ticket"; 1297 const button_buy_now = "zum Gutschein"; 1298 1299 const tpl_path = "templates/qwk/t1/"; 1300 1301 const plDirectbuy = false; 1302 let productsId = ''; 1303</script>
1303 1304 1305<!-- end cross selling data --> 1306 1307 1308<div class="inc-value-check-page"> 1309 <div class="inc-content-container"> 1310 <h1> 1311 Wertabfrage & Digitale Ablage 1312 </h1> 1313 </div> 1314 1315 1316
1317<script src="./templates/qwk/t1/javascript/libs/vue/vue.js"></script>
vendor: 1 bytes, line 1317
1317
1318<script src="./templates/qwk/t1/javascript/libs/qrcodejs/qrcodejs.js"></script>
vendor: 1 bytes, line 1318
1318
1319<script type="text/javascript" src="./templates/qwk/t1/javascript/getCaptcha.js"></script>
1319 1320
1321<script> 1322 const currentRequestCount = 0; 1323 const maxRequestCount = 3; 1324</script>
1324 1325 <div id="inc-value-check"> 1326 <div class="inc-voucher-lookup-container"> 1327 <div class="inc-value-check-form"> 1328 <div class="inc-content-container"> 1329 <p> 1330 Barcode / QR-Code eingeben, Wert abfragen und im Wallet am Smartphone speichern. 1331 </p> 1332 <message 1333 v-bind:status="status" 1334 ></message> 1335 <check-form 1336 v-on:set-status="setStatus" 1337 v-on:set-success-message="setSuccessMessage" 1338 ></check-form> 1339 </div> 1340 </div> 1341 <div class="inc-value-check-result " v-if="success.show"> 1342 <div class="inc-content-container"> 1343 <booking 1344 v-bind:status="status" 1345 v-bind:success="success"> 1346 </booking> 1347 <div class="inc-value-check-result-inner "> 1348 <status 1349 v-bind:status="status" 1350 v-bind:success="success" 1351 ></status> 1352 <qrcode 1353 v-bind:status="status" 1354 v-bind:success="success" 1355 ></qrcode> 1356 </div> 1357 </div> 1358 </div> 1359 </div> 1360 </div> 1361 1362
1363<script type="text/x-template" id="message"> 1364 <div v-if="!status.state && status.msg" class="inc-error-box">{{ status.msg }}</div> 1365</script>
vendor: 1 bytes, line 1365
1365
1366<script type="text/x-template" id="status"> 1367 <div id="inc-value-check-response-details" class="inc-value-check-result-item" v-if="success.show"> 1368 <h3>{{response.name}}</h3> 1369 <span class="voucher-price"> 1370 <span class="currency-left">â¬</span> 1371 {{ response.currentValue }} 1372 <span class="currency-left"></span> 1373 </span> 1374 1375 <p>{{response.shortDescription}}</p> 1376 1377 <p class="voucher-redeem-date-info"> 1378 <span><b>Ausstellungsdatum:</b> <span>{{response.issueDate}}</span></span><br/> 1379 <span><b>Gültig bis:</b> <span>{{response.validUntil}}</span></span> 1380 </p> 1381 1382 1383 </div> 1384</script>
1384 1385
1386<script type="text/x-template" id="qrcode"> 1387 <div id="inc-value-check-qr-code" class="inc-value-check-result-item" v-if="success.show"> 1388 <h3>Download und im Wallet speichern</h3> 1389 <p></p> 1390 <div id="qr-code-outlet"></div> 1391 <a href="" id="qr-code-link" class="inc-download-link default-button"><span class="icon-download"></span>Download</a> 1392 </div> 1393</script>
1393 1394
1395<script type="text/x-template" id="booking"> 1396 <div id="inc-value-check-info-booking" v-if="success.show" class="inc-value-check-result-item"> 1397 {{response.code}} 1398 Code ist gültig. 1399 <template v-if="response.master"> 1400 Sie können den Artikel einlösen: 1401 <a v-bind:href="response.variantTicketMaster.link">{{ response.variantTicketMaster.name }}</a> 1402 <button class="call-to-action" onclick="fetchProductVariants(openQuickbuy, response.master, true, '', true)"> Jetzt buchen </button> 1403 </template> 1404 <template v-else> 1405 Sie können den Artikel nun einlösen. 1406 </template> 1407 <form id="applyVoucherForm" class="hidden" action="https://gutscheine.cafe-wien.at/warenkorb?action=check_gift" method="post"> 1408 <input type="text" name="gv_redeem_code" v-bind:value="response.code"/> 1409 </form> 1410 </div> 1411</script>
1411 1412
1413<script type="text/x-template" id="recharge-value-card"> 1414 <div id="inc-value-check-recharge" class="inc-value-check-result-item" v-if="success.show && success.chargeLimits"> 1415 <div class="inc-value-recharge-form" > 1416 <h3>Wertkarte beladen</h3> 1417 1418 <p>Bitte tragen Sie den Wert ein, den Sie auf die Karte laden möchten. Sie werden dann in den Warenkorb weitergeleitet.</p> 1419 1420 <form v-on:submit="validate" class="inc-form-inner "> 1421 <div class="inc-value-recharge-form-inner"> 1422 <div class="form-field"> 1423 <span class="currency-left">â¬</span> 1424 <input type="text" v-model="updateValue.value" :class="(updateValue.value ? 'not-empty' : '') + (updateValue.hasError ? ' invalid' : '')" 1425 placeholder="Wert eingeben" required/> 1426 <span class="currency-right"></span> 1427 </div> 1428 <button class="button call-to-action" type="submit">Beladen</button> 1429 </div> 1430 <span class="error" v-if="updateValue.hasMinError"> 1431 Der Mindestbetrag beträgt â¬{{success.chargeLimits.min}} 1432 </span> 1433 <span class="error" v-if="updateValue.hasMaxError"> 1434 Der Maximalbetrag beträgt â¬{{success.chargeLimits.min}} 1435 </span> 1436 </form> 1437 </div> 1438 </div> 1439 1440</script>
1440 1441
1442<script type="text/x-template" id="check-form"> 1443 <form v-on:submit="validate" class="inc-form-inner inc-value-check-form"> 1444 <div class="inc-value-check-form-inner"> 1445 <div class="form-field"> 1446 <input type="text" v-model="voucher.value" :class="(voucher.value ? 'not-empty' : '') + (voucher.hasError ? ' invalid' : '')" 1447 placeholder="Code eingeben" required/> 1448 </div> 1449 <button class="button call-to-action" type="submit">Code überprüfen</button> 1450 </div> 1451 <div ref="captcha"></div> 1452 </form> 1453</script>
1453 1454
1455<script> 1456 window.addEventListener('DOMContentLoaded', function() { 1457 1458 Vue.component("status", 1459 { 1460 template: "#status", 1461 props: ["status", "success"], 1462 methods: { 1463 applyVoucher: function(){ 1464 $('#applyVoucherForm').submit(); 1465 } 1466 } 1467 }); 1468 Vue.component("booking", 1469 { 1470 template: "#booking", 1471 props: ["status", "success"] 1472 }); 1473 1474 Vue.component("qrcode", 1475 { 1476 template: "#qrcode", 1477 props: ["status", "success"] 1478 }); 1479 1480 Vue.component("message", 1481 { 1482 template: "#message", 1483 props: ["status", "success"] 1484 }); 1485 1486 Vue.component("recharge-value-card", 1487 { 1488 template: "#recharge-value-card", 1489 props: ["status", "success"], 1490 data: function () { 1491 let getParams = new URLSearchParams(location.search); 1492 let rechargeValue = ''; 1493 if(getParams.has('code')){ 1494 rechargeValue = getParams.get('code'); 1495 } 1496 return { 1497 updateValue: 1498 { 1499 value: rechargeValue, 1500 hasError: false, 1501 hasMinError: false, 1502 hasMaxError: false 1503 } 1504 } 1505 }, 1506 methods: 1507 { 1508 validate: function (e) { 1509 if(e) e.preventDefault(); 1510 this._data.updateValue.hasError = false; 1511 let value = parseFloat(this._data.updateValue.value); 1512 if (!this._data.updateValue.value || this._data.updateValue.value.trim() == "") { 1513 this._data.updateValue.hasError = true; 1514 return; 1515 } 1516 else { 1517 if(value < voucherValueCheck.success.chargeLimits.min) { 1518 this._data.updateValue.hasMinError = true; 1519 this._data.updateValue.hasError = true; 1520 return; 1521 } 1522 else if(value > voucherValueCheck.success.chargeLimits.max) { 1523 this._data.updateValue.hasMaxError = true; 1524 this._data.updateValue.hasError = true; 1525 return; 1526 } 1527 var _this = this; 1528 _this.submitRequest(null); 1529 } 1530 }, 1531 submitRequest() { 1532 var _this = this; 1533 fetch("/api/frontend/shoppingCart/addCardRecharge", { 1534 method: "POST", 1535 body: JSON.stringify({ 1536 cardCode: voucherValueCheck.success.code, 1537 rechargeAmount: parseFloat(this.updateValue.value) 1538 }) 1539 }) 1540 .then(async response => { 1541 const data = await response.json(); 1542 if(response.status == 200) { 1543 location.href= data; //link to shoppingcart 1544 } 1545 }) 1546 .catch((err) => { 1547 console.error(err); 1548 }); 1549 } 1550 } 1551 }); 1552 Vue.component("check-form", 1553 { 1554 template: "#check-form", 1555 props: [], 1556 data: function () { 1557 let getParams = new URLSearchParams(location.search); 1558 let code = ''; 1559 if(getParams.has('code')){ 1560 code = getParams.get('code'); 1561 } 1562 return { 1563 attempt: { 1564 current: currentRequestCount, 1565 tracked: 0, 1566 max: maxRequestCount 1567 }, 1568 voucher: 1569 { 1570 value: code, 1571 hasError: false 1572 }, 1573 success: false, 1574 captcha: { 1575 instance: null 1576 } 1577 } 1578 }, 1579 mounted: function(){ 1580 if(this.voucher.value != '') 1581 this.validate(null, true); 1582 }, 1583 methods: 1584 { 1585 renderQRCode: function (token) { 1586 setTimeout(function () { 1587 let url = window.location.origin + "/download_passbook.php?token=" + token; 1588 1589 // QRCode can't handle strings in the length range of 192 - 220 1590 // https://stackoverflow.com/questions/30796584/qrcode-js-error-code-length-overflow-17161056/73544657#comment123108831_34890253 1591 if (url.length >= 192) { 1592 url = url.padEnd(220); 1593 } 1594 1595 $('#qr-code-outlet').html(''); 1596 new QRCode( 1597 document.getElementById("qr-code-outlet"), 1598 url); 1599 document.getElementById("qr-code-link").setAttribute("href", url); 1600 }, 200) 1601 }, 1602 setStatus: function (msg, state) { 1603 this.$emit( 1604 'set-status', 1605 { 1606 msg: msg, 1607 status: state 1608 } 1609 ); 1610 }, 1611 setSuccessMessage: function (response) { 1612 if (typeof response !== "undefined") { 1613 this.$emit( 1614 'set-success-message', 1615 { 1616 initialValue: response.initialValue, 1617 currentValue: response.currentValue, 1618 orderId: response.orderId, 1619 code: response.code, 1620 chargeLimits: response.chargeLimits, 1621 show: true 1622 } 1623 ); 1624 } else { 1625 this.$emit( 1626 'set-success-message', 1627 false 1628 ); 1629 } 1630 }, 1631 requiresCaptcha: function () 1632 { 1633 return this._data.captcha.instance || (this._data.attempt.tracked + this._data.attempt.current >= this._data.attempt.max); 1634 }, 1635 validate: function (e) { 1636 if(e) e.preventDefault(); 1637 this._data.voucher.hasError = false;
1638 this.setStatus("", false); 1639 this.setSuccessMessage(); 1640 if (!this._data.voucher.value || this._data.voucher.value.trim() == "") { 1641 this._data.voucher.hasError = true; 1642 this.setStatus("Bitte geben Sie einen Code ein.", false); 1643 } 1644 else if(this.requiresCaptcha() && !this._data.captcha.instance.validate()) 1645 { 1646 this.setStatus("", false); 1647 } 1648 else { 1649 var _this = this; 1650 if (this.requiresCaptcha()) { 1651 this._data.captcha.instance.submit().then(function (captchaData) { 1652 _this.submitRequest(captchaData); 1653 }); 1654 } 1655 else { 1656 _this.submitRequest(null); 1657 } 1658 } 1659 }, 1660 submitRequest(captchaData) { 1661 var _this = this; 1662 const captchaParams = captchaData ? '?' + new URLSearchParams(captchaData).toString() : ''; 1663 1664 let voucherValue = _this._data.voucher.value.replaceAll("=", "%3D").replaceAll("&", "%26").replaceAll("?", "%3F").replaceAll("/", "%E2"); 1665 fetch("api/redeemapp/voucher/valueCheck/" + voucherValue + captchaParams) 1666 .then(function (res) { return res.json(); }) 1667 .then(function (res) { 1668 response = res; 1669 try { 1670 if (parseInt(response.status) === -1) { 1671 _this.setStatus("Bitte überprüfen Sie die Captcha Eingabe.", false); 1672 // _this.increaseAttempt(); 1673 _this.renderCaptcha(); 1674 } 1675 else if (!response.status) { 1676 _this._data.voucher.hasError = true; 1677 _this.setStatus("Ungültiger Code.", false); 1678 _this.increaseAttempt(); 1679 } else { 1680 if(response.variantTicketMaster) { 1681 response.master = { 1682 VARIANT_PRODUCT_IDS: response.variantTicketMaster.variants, 1683 PRODUCTS_IMAGE_POPUP: response.variantTicketMaster.image, 1684 PRODUCTS_LINK: response.variantTicketMaster.link, 1685 PRODUCTS_ID: response.variantTicketMaster.id, 1686 PRODUCTS_NAME: response.variantTicketMaster.name, 1687 PRODUCTS_IMAGE_ALT_TEXT: response.variantTicketMaster.imageAltText 1688 }; 1689 presetVariant = response.assignedVariantTicketId; 1690 } 1691 _this.setSuccessMessage(response); 1692 if(response.pkpassToken) _this.renderQRCode(response.pkpassToken); 1693 $('#applyVoucherForm input[name=gv_redeem_code]').val(response.code); 1694 productsId = response.variantTicketMaster ? response.variantTicketMaster.id : ''; 1695 1696 1697 1698 } 1699 if (typeof crossDomainIframeResize === "function") setTimeout(function(){crossDomainIframeResize(false);}, 0); 1700 } catch (exception) { 1701 if (exception instanceof SyntaxError) { 1702 _this.setStatus("Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut.", false); 1703 _this.increaseAttempt(); 1704 } 1705 else { 1706 console.error(exception); 1707 } 1708 } 1709 }).catch(function (err) { 1710 if (err.response && err.response.data.code == "ERR_VOUCHER_CANCELED") 1711 { 1712 _this.setStatus("Dieser Artikel wurde storniert und kann nicht mehr eingelöst werden.", false); 1713 } 1714 else 1715 { 1716 _this.increaseAttempt(); 1717 } 1718 }); 1719 }, 1720 increaseAttempt: function () { 1721 this._data.attempt.tracked++; 1722 1723 if (this._data.captcha.instance) { 1724 this._data.captcha.instance.refresh(); 1725 } 1726 else if (this.requiresCaptcha()) { 1727 this.renderCaptcha(); 1728 } 1729 }, 1730 renderCaptcha: function () { 1731 var _this = this; 1732 getCaptcha().then(function () { 1733 _this._data.captcha.instance = IncCaptcha.render(_this.$refs.captcha); 1734 _this.$refs.captcha.classList.add('captcha-container'); 1735 }); 1736 } 1737 }, 1738 mounted: function () { 1739 if (this.requiresCaptcha()) { 1740 this.renderCaptcha(); 1741 } 1742 } 1743 }); 1744 1745 Vue.config.ignoredElements = ['d']; 1746 1747 var voucherValueCheck = new Vue( 1748 { 1749 el: "#inc-value-check", 1750 data: 1751 { 1752 status: 1753 { 1754 state: "", 1755 msg: "" 1756 }, 1757 success: 1758 { 1759 initialValue: "", 1760 currentValue: "", 1761 orderId: "", 1762 show: false, 1763 code: "", 1764 chargeLimits: { 1765 min: null, 1766 max: null 1767 }, 1768 }, 1769 downloadUrl: "" 1770 }, 1771 methods: 1772 { 1773 setStatus: function (status) { 1774 this.status.state = status.state; 1775 this.status.msg = status.msg; 1776 }, 1777 setSuccessMessage: function (response) { 1778 if (response) { 1779 this.success.show = true; 1780 this.success.initialValue = response.initialValue; 1781 this.success.currentValue = response.currentValue; 1782 this.success.orderId = response.orderId; 1783 this.success.code = response.code; 1784 this.success.chargeLimits = response.chargeLimits; 1785 } else { 1786 this.success.show = false;
1787 } 1788 } 1789 } 1790 } 1791 ); 1792 }); 1793</script>
1793 1794 1795 1796 1797 <div class="inc-content-container"> 1798 <div class="button-row"> 1799 <div></div> 1800 <div> 1801 <a class="default-button" href="/">Schritt zurück</a> 1802 </div> 1803 </div> 1804 1805 1806 1807 <div class="inc-cross-selling"> 1808 <div class="inc-content-container"> 1809 <h2>Weitere Empfehlungen</h2> 1810 </div> 1811 <div class="inc-cross-selling-inner"></div> 1812 </div> 1813 1814 <div class="inc-content-text-container inc-content-container-reset-background"> 1815 <div class="inc-content-container"> 1816 1817<div class="infobox-voucher-check-content nbg"> 1818 <h2></h2> 1819 <div class="infobox-voucher-check-content-inner"> 1820 1821 </div> 1822</div> 1823 </div> 1824 </div> 1825 1826 <div class="inc-content-container"> 1827 1828<div id="inc-faq-container"> 1829 <div class="inc-content-container"> 1830 <h2 class="contentsTopicsStartpage">FAQ</h2> 1831 <div id="inc-faq-accordion" class="accordion faq"></div> 1832 </div> 1833</div> 1834
1835<script> 1836 let filterSection = "voucher_lookup"; 1837 let filterProduct = ""; 1838 let filterCategory = ""; 1839 1840 let filterParentProduct = ""; 1841</script>
1841 1842
1843<script> 1844 let faqUrl= "api/frontend/faq"; 1845 1846 if(filterSection !== '') faqUrl += "/" + filterSection; 1847 1848 if(filterParentProduct !== '') faqUrl += "?product=" + filterParentProduct; 1849 else if(filterProduct !== '') faqUrl += "?product=" + filterProduct; 1850 1851 if(filterCategory !== '' && filterProduct == '') faqUrl += "?category=" + filterCategory; 1852 else if(filterCategory !== '') faqUrl += "&category=" + filterCategory; 1853 1854 $().ready(function() { 1855 getFaqData(); 1856 }); 1857 async function getFaqData() { 1858 await $.ajax({ 1859 url: appendSubShopId(faqUrl), 1860 async: true, 1861 success: (data) => { 1862 if(data.length > 0) { 1863 //FAQ SCHEMA (SEO) 1864 const script = document.createElement('script'); 1865 script.setAttribute('type', 'application/ld+json'); 1866 var schemaData = { 1867 "@context":"https://schema.org", 1868 "@type":"FAQPage", 1869 "mainEntity":[] 1870 }; 1871 1872 //All Questions and answers 1873 for (let i = 0; i < data.length; i++) { 1874 let accordionRowButton = `<button type="button" aria-expanded="false" class="accordion-button" 1875 aria-controls="sect${i}" id="accordion-sect-${i}">${data[i].question}</button>`; 1876 1877 let accordionRowInner = `<div id="sect${i}" role="region" aria-labelledby="accordion-sect-${i}" 1878 class="accordion-content" style="height:0;"><div class="accordion-content-inner">${data[i].answer}</div></div>`; 1879 $('#inc-faq-accordion').append($('<div class="accordion-section"></div>').append(accordionRowButton).append(accordionRowInner)); 1880 1881 1882 //FAQ schema (SEO)s 1883 schemaData.mainEntity.push({ 1884 "@type":"Question", 1885 "name":data[i].question, 1886 "acceptedAnswer": { 1887 "@type": "Answer", 1888 "text":data[i].answer 1889 } 1890 }); 1891 } 1892 1893 //FAQ schema (SEO) 1894 script.textContent = JSON.stringify(schemaData); 1895 document.head.appendChild(script); 1896 } else { 1897 $('#inc-faq-container').hide(); 1898 } 1899 }, 1900 error: () => { 1901 console.log('error getting faq'); 1902 1903 $('#inc-faq-container').hide(); 1904 } 1905 }); 1906 } 1907</script>
1907 1908 </div> 1909 </div> 1910 1911 1912
1912<script> 1913 window.addEventListener('DOMContentLoaded', function() { 1914 $('.inc-cross-selling-inner').empty(); 1915 $('.inc-cross-selling-inner').append('<div id="dynamic-cross-selling"></div>'); 1916 let d = new Date(); 1917 d = (d.getDate() < 10 ? '0' : '') + d.getDate() + '.' + ((d.getMonth() + 1) < 10 ? '0' : '') + (d.getMonth() + 1) + '.' + d.getFullYear(); 1918 if (Array.isArray(cross_selling_data)) { 1919 for (let i of cross_selling_data) { 1920 eval('object' + i.PRODUCTS_ID + '=undefined;'); 1921 eval('delete(object' + i.PRODUCTS_ID + ');'); 1922 renderProductListItem($('#dynamic-cross-selling'), i, true, d); 1923 } 1924 } 1925 if (!$('#dynamic-cross-selling') || $('#dynamic-cross-selling').is(':empty')) { 1926 $('.inc-cross-selling').hide(); 1927 } else { 1928 $('.inc-cross-selling').show(); 1929 $('#dynamic-cross-selling').slick({ 1930 infinite: false, 1931 slidesToShow: 4, 1932 slidesToScroll: 1, 1933 rows: 1, 1934 dots: false, 1935 responsive: [ 1936 { 1937 breakpoint: twoColumnWindowWidth, 1938 settings: { 1939 slidesToShow: 2, 1940 slidesToScroll: 2 1941 } 1942 }, 1943 { 1944 breakpoint: oneColumnWindowWidth, 1945 settings: { 1946 slidesToShow: 1, 1947 slidesToScroll: 1 1948 } 1949 } 1950 ] 1951 }); 1952 } 1953 }); 1954 </script>
1954 1955 1956 1957 1958 1959 1960 1961 <section class="inc-section-value-check"> 1962 1963 </section> 1964 </div> 1965 1966 <!--Footer --> 1967 <footer> 1968 <div class="footer-main-bar"> 1969 <div class="inner-footer-main-bar inc-content-container cc-clear-padding-top-bottom"> 1970 <div class="footer-content-links footer-column"> 1971 1972 </div> 1973 <div class="footer-column footer-column-incert-logo"> 1974 <!-- Incert Logo --> 1975 <div class="incert-logo" role="contentinfo" aria-label="author of the website"> 1976 <span class="incert-logo-info ">eCommerce-System by</span> 1977 <a target="_blank" href="https://www.incert.at" class="incert-logo-link"> 1978 <img class="regular-incert-logo" src="./images/incert-logo.png" alt="INCERT eTourismus GmbH" /> 1979 <img class="hover-incert-logo" src="./images/incert-logo-green.png" alt="INCERT eTourismus GmbH hover" aria-hidden="true" /> 1980 </a> 1981 </div> </div> 1982 </div> 1983 </div> 1984 1985 </footer> 1986 </div> 1987
1988<script type="text/javascript" src="./templates/qwk/t1/javascript/localization/datepicker-de.js"></script>
vendor: 1 bytes, line 1988
1988
1989<script> 1990 let lightboxImages = []; 1991 let lightboxContent = []; 1992</script>
1992 1993<div id="inc-lightbox" class="inc-lightbox-overlay inc-lightbox-close"> 1994 1995 <div class="inc-lightbox-inner"> 1996 <button class="inc-lightbox-switch inc-prev" disabled></button> 1997 <button class="inc-lightbox-close"></button> 1998 <h3 class="inc-lightbox-header"></h3> 1999 <div class="inc-lightbox-content"></div> 2000 2001 <div class="inc-cart-info"> 2002 <p class="inc-lightbox-message"></p> 2003 <div class="inc-lightbox-buttons"> 2004 <button class="inc-lightbox-close">weitere Artikel</button> 2005 <div><a role="button" href="https://gutscheine.cafe-wien.at/warenkorb">zur Kasse</a></div> 2006 </div> 2007 </div> 2008 2009 <button class="inc-lightbox-switch inc-next" disabled></button> 2010 </div> 2011</div> 2012
2013<script type="text/html" id="inc-lightbox-reference"> 2014 <div class="inc-lightbox-overlay inc-lightbox-close"></div> 2015 <div class="inc-lightbox-inner"> 2016 <button class="inc-lightbox-close"></button> 2017 <div class="inc-cart-info"> 2018 <p class="inc-lightbox-message">Message</p> 2019 <div class="inc-lightbox-buttons"> 2020 <button class="inc-lightbox-close">weitere Artikel</button> 2021 <div><a role="button" href="https://gutscheine.cafe-wien.at/warenkorb">zur Kasse</a></div> 2022 </div> 2023 </div> 2024 </div> 2025</script>
2025 2026 2027
2027<script>var CURRENT_TEMPLATE = "qwk/t1";</script>
2027 2028
2028<script> 2029 var $meta = $("<meta>").attr("name", "viewport").attr("content", "width=device-width"); 2030 $("head").append($meta); 2031 </script>
2031 2032 2033
2033<script> 2034 //Systeme die in FB integriert sind und wenn man dort im Warenkorb auf "Bestellen" klickt, 2035 //dass man weitergeleitet wird in ein neues Fenster und nicht in FB 2036 if (window.parent.testFacebook && window.parent.testFacebook() == "true") { 2037 $().ready(function () { 2038 $("body").addClass("facebook"); 2039 $(".total_sum_buttons div.button a.buttonLink").click(function () { 2040 2041 window.open("?gotocat=checkout", "_blank"); 2042 window.location.href = "index.php"; 2043 2044 return false; 2045 }); 2046 }); 2047 } 2048 </script>
2048 2049
2049<script> 2050 (function() 2051 { 2052 var div = document.createElement('DIV'); 2053 div.setAttribute('style', 'display:none;'); 2054 div.innerHTML = '<iframe id="inneriframe" width="1" height="1"></iframe>'; 2055 document.body.appendChild(div); 2056 })(); 2057 </script>
2057 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.