· 6 years ago · Dec 17, 2019, 09:08 AM
1<!-- FONTS -->
2<script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
3<!-- default fonts used with google fonts -->
4<script type="text/javascript">
5 var defaultFonts = [
6 {
7 family: 'Arial, sans-serif',
8 name: 'Arial'
9 },
10 {
11 family: 'Arial Black, sans-serif',
12 name: 'Arial Black'
13 },
14 {
15 family: 'Tahoma, sans-serif',
16 name: 'Tahoma'
17 },
18 {
19 family: 'Verdana, sans-serif',
20 name: 'Verdana'
21 },
22 {
23 family: 'Trebuchet MS, sans-serif',
24 name: 'Trebuchet MS'
25 },
26 {
27 family: 'Helvetica, sans-serif',
28 name: 'Helvetica'
29 },
30 {
31 family: 'Courier, serif',
32 name: 'Courier'
33 },
34 {
35 family: 'Courier New, serif',
36 name: 'Courier New'
37 },
38 {
39 family: 'Georgia, serif',
40 name: 'Georgia'
41 },
42 {
43 family: 'Times, serif',
44 name: 'Times'
45 },
46 {
47 family: 'Times New Roman, serif',
48 name: 'Times New Roman'
49 },
50 {
51 family: 'Minion Pro, serif',
52 name: 'Minion Pro'
53 },
54 {
55 family: 'Myriad Pro, sans-serif',
56 name: 'Myriad Pro'
57 }
58];
59
60// this method prevent from loading default fonts
61var _loadGoogleFonts = function(fonts) {
62
63 var removeDuplicates = function(array) {
64 var unique = [];
65 for (var i = 0; i < array.length; i++) {
66 var current = array[i];
67 if (unique.indexOf(current) < 0) unique.push(current);
68 }
69 return unique;
70 };
71
72
73 var fontsToLoad = [];
74 for(f in fonts) {
75 var load = true;
76 for(df in defaultFonts) {
77
78 if(fonts[f] == '' || fonts[f] == defaultFonts[df].family) {
79 load = false;
80 }
81 }
82 if(load) fontsToLoad.push(fonts[f]+':regular,100,200,300,400,500,600,700,800,900:latin,latin-ext');
83 }
84
85 // removes duplicates
86 fontsToLoad = removeDuplicates(fontsToLoad);
87
88 if(fontsToLoad.length == 0) return;
89 WebFont.load({
90 google: {
91 families: fontsToLoad
92 }
93 });
94};
95_loadGoogleFonts(['{{theme_settings.header_text_font}}', '{{theme_settings.text_font}}', '{{theme_settings.text_header_font}}', '{{theme_settings.nav_link_text_font}}']);
96</script>
97<!-- FONTS -->
98
99<!-- CSS LIBS -->
100{{#ifequal environment "dev"}}
101 <link href='{{static_url}}/jquery-ui-1.10.4.custom/css/ui-lightness/jquery-ui-1.10.4.custom.css' rel='stylesheet' type='text/css' />
102
103 <link href='{{static_url}}/jquery-miniColors/jquery.minicolors.css' rel='stylesheet' media='screen' />
104 <link href='{{static_url}}/jquery-scrollup-1.1/css/themes/image.css' rel='stylesheet' media='screen' />
105 {{#if site.cookieLawContent}}
106 <link href='{{static_url}}/jquery.cookiebar/jquery.cookiebar.css' rel='stylesheet' media='screen' />
107 {{/if}}
108
109 <link rel="stylesheet" type="text/css" href="{{static_url}}/fancybox-2.1.5/jquery.fancybox.css" media="screen" />
110
111 <link rel="stylesheet" href="{{static_url}}/jQuery-File-Upload-9.8.0/css/jquery.fileupload.css" type="text/css" />
112
113 <link rel="stylesheet" href="{{static_url}}/eternicode-bootstrap-datepicker/datepicker3.css" type="text/css" />
114 <link rel="stylesheet" href="{{static_url}}/css/jquery-ui-timepicker-addon.css" type="text/css" />
115 <link rel="stylesheet" href="{{static_url}}/flipclock/flipclock.custom.css" type="text/css" />
116
117 <link rel="stylesheet" href="{{static_url}}/owl.carousel.2.0.0-beta.2.4/assets/owl.carousel.css" type="text/css" />
118 <link rel="stylesheet" href="{{static_url}}/owl.carousel.2.0.0-beta.2.4/assets/owl.theme.default.min.css" type="text/css" />
119
120 <!-- Leaflet -->
121 <link rel="stylesheet" href="{{static_url}}/admin2/leafletMap/leaflet-1.3.1.css"/>
122 <link rel="stylesheet" href="{{static_url}}/admin2/leafletMap/plugins/draw/leaflet-draw-1.0.2.css"/>
123
124 <link rel="stylesheet" href="{{static_url}}/intl-tel-input-15.0.0/css/intlTelInput.css" />
125
126 <link rel="stylesheet" href="{{static_url}}/jquery.smartbanner/jquery.smartbanner.css"/>
127 <link rel="stylesheet" href="{{static_url}}/font-awesome-4.7.0/css/font-awesome.min.css">
128{{else}}
129 <link href='{{static_url}}/bottomAll.css' rel='stylesheet' type='text/css'/>
130{{/ifequal}}
131
132
133<!-- CSS LIBS -->
134
135<!-- JS LIBS -->
136<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>
137
138{{#if stripePublicKey}}
139 <script src="https://js.stripe.com/v3/"></script>
140{{/if}}
141
142{{#ifequal environment "dev"}}
143 <script type='text/javascript' src='{{static_url}}/twitter-bootstrap-3.2.0/js/bootstrap.min.js'></script>
144
145 <script type='text/javascript' src='{{static_url}}/eternicode-bootstrap-datepicker/bootstrap-datepicker.js'></script>
146
147 <script type='text/javascript' src='{{static_url}}/eternicode-bootstrap-datepicker/bootstrap-datepicker-custom-fix.js'></script>
148
149 <script type='text/javascript' src='{{static_url}}/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js'></script>
150
151 <script type='text/javascript' src='{{static_url}}/js/jquery.cookie.js'></script>
152 <script type='text/javascript' src='{{static_url}}/js/jquery-ui-timepicker-addon.js'></script>
153 <script type='text/javascript' src='{{static_url}}/jquery.livequery-1.1.1/jquery.livequery.min.js' type='text/javascript'></script>
154 <script type='text/javascript' src='{{static_url}}/jquery-raty/jquery.raty.min.js'></script>
155
156 <script type='text/javascript' src='{{static_url}}/js/sugar-1.2.4.min.js'></script>
157
158
159 <script type='text/javascript' src='{{static_url}}/jquery-miniColors/jquery.minicolors.js'></script>
160 <script type='text/javascript' src='{{static_url}}/jquery-validation-1.11.1/jquery.validate.min.js'></script>
161 <script type='text/javascript' src='{{static_url}}/jquery-scrollup-1.1/js/jquery.scrollUp.min.js'></script>
162
163 <script type="text/javascript" src="{{static_url}}/fancybox-2.1.5/jquery.fancybox.pack.js"></script>
164 <script type='text/javascript' src='{{static_url}}/handlebars/handlebars-latest.js'></script>
165 <script type='text/javascript' src='{{static_url}}/handlebars/handlebars-helpers.js'></script>
166
167 <script type='text/javascript' src='{{static_url}}/jquery.noty.2.2.0/jquery.noty.packaged.min.js'></script>
168 <script type='text/javascript' src='{{static_url}}/jquery.noty.2.2.0/bottom.js'></script>
169 <script type='text/javascript' src='{{static_url}}/jquery.noty.2.2.0/theme.upmenu.js'></script>
170
171 <script type="text/javascript" src="{{static_url}}/jQuery-File-Upload-9.8.0/js/vendor/jquery.ui.widget.js"></script>
172 <script type="text/javascript" src="{{static_url}}/jQuery-File-Upload-9.8.0/js/jquery.iframe-transport.js"></script>
173 <script type="text/javascript" src="{{static_url}}/jQuery-File-Upload-9.8.0/js/jquery.fileupload.js"></script>
174
175 <script type='text/javascript' src='{{static_url}}/js/jquery.matchHeight.js'></script>
176
177
178 <script type="text/javascript" src="{{static_url}}/i18n/i18n.js"></script>
179 <script type='text/javascript' src='{{static_url}}/jquery.cookiebar/jquery.cookiebar.js'></script>
180
181 <script type='text/javascript' src='{{static_url}}/twitter-bootstrap-hover-dropdown/twitter-bootstrap-hover-dropdown-modified.js'></script>
182
183 <script type='text/javascript' src='{{static_url}}/flipclock/flipclock.min.js'></script>
184
185 <script type='text/javascript' src='{{static_url}}/jquery.oauthpopup/jquery.oauthpopup.js'></script>
186
187 <script type='text/javascript' src='{{static_url}}/owl.carousel.2.0.0-beta.2.4/owl.carousel.min.js'></script>
188
189 <script src="{{static_url}}/admin2/leafletMap/leaflet-1.3.1.js"></script>
190 <script src="{{static_url}}/admin2/leafletMap/plugins/draw/leaflet-draw-1.0.2.js"></script>
191
192 <script src="{{static_url}}/intl-tel-input-15.0.0/js/intlTelInput.js" ></script>
193 <script id="intl-util" src="{{static_url}}/intl-tel-input-15.0.0/js/utils.js" ></script>
194
195 <script src="{{static_url}}/jquery.smartbanner/jquery.smartbanner.js"></script>
196
197 <script src="{{static_url}}/jquery.lazy.1.7.9/jquery.lazy.js"></script>
198 <script src="{{static_url}}/jquery.lazy.1.7.9/jquery.lazy.plugins.js"></script>
199
200{{else}}
201 <script type='text/javascript' src='{{static_url}}/all.js'></script>
202{{/ifequal}}
203<!-- JS LIBS -->
204
205{{i18nJsMessageSource site.language}}
206
207<script type='text/javascript'>
208 I18n.locale = "{{site.language}}";
209
210 $.noty.defaults.layout = 'bottom';
211 $.noty.defaults.force = true;
212 $.noty.defaults.timeout = 3000;
213 $.noty.defaults.theme = 'upmenuTheme';
214 $.noty.defaults.maxVisible = 2;
215</script>
216
217<script type='text/javascript' src='{{static_url}}/api3/js/cms-rest-api.js'></script>
218<script type='text/javascript'>
219 var com = com || {};
220 com.upmenu = com.upmenu || function() {};
221
222 com.upmenu.orderSource = '{{#if orderSource}}{{orderSource}}{{else}}WWW{{/if}}';
223 com.upmenu.deviceType = '{{deviceType}}';
224 com.upmenu.staticPath = '{{static_url}}';
225 //com.upmenu.customer = {id: '{{user.id}}', city: '{{user.city}}', street: '{{user.street}}', streetNumber: '{{user.streetNumber}}', apartmentNumber: '{{user.apartmentNumber}}', floorNumber: '{{user.floorNumber}}', firstName: '{{user.firstName}}', lastName: '{{user.lastName}}', phone: '{{user.phone}}', email: '{{user.email}}', companyName: '{{user.companyName}}', comment: '{{user.comment}}', latitude: '{{user.latitude}}', longitude: '{{user.longitude}}' };
226 com.upmenu.socialLoginGoogleClientId = '{{socialLoginGoogleClientId}}';
227 com.upmenu.socialLoginDomain = '{{socialLoginDomain}}';
228 com.upmenu.siteId = '{{siteId}}';
229 com.upmenu.siteLanguageId = '{{siteLanguageId}}';
230 com.upmenu.pageId = '{{pageId}}';
231 com.upmenu.pageTranslationId = '{{pageTranslationId}}';
232 com.upmenu.restaurantId = '{{restaurantId}}';
233 com.upmenu.language = '{{site.language}}';
234 com.upmenu.paypalEnv = '{{#if production}}production{{else}}sandbox{{/if}}';
235 com.upmenu.findRestaurantsByDistance = '{{findRestaurantsByDistance}}';
236 // more advanced settings
237 com.upmenu.newsletterSubscribePopup = '{{newsletterSubscribePopup}}'; // newsletter popup should be shown on page visit
238 // com.upmenu.disableAddons = false; // disable addons popup
239
240 {{#if restaurant}}
241 com.upmenu.Stripe = {key: '{{stripePublicKey}}'};
242 com.upmenu.restaurant = {{json restaurant}};
243
244 {{/if}}
245 {{#if restaurants}}
246 com.upmenu.restaurants = {{json restaurants}};
247 {{/if}}
248 {{#if site}}
249 com.upmenu.site = {{json site}};
250 {{/if}}
251 {{#if customer}}
252 com.upmenu.customer = {{json customer}};
253 {{else}}
254 com.upmenu.customer = {};
255 {{/if}}
256 {{#if theme_settings}}
257 com.upmenu.theme_settings = {{json theme_settings}};
258 {{/if}}
259 {{#if theme_settings}}
260 com.upmenu.deliverySettings = {{json deliverySettings}};
261 {{/if}}
262</script>
263<script type='text/javascript' src='{{static_url}}/api3/js/cms-api-utils.js'></script>
264<script type='text/javascript' src='{{static_url}}/js/utils.js'></script>
265
266{{#if restaurant}}
267 {{#if paypalAvailable}}
268 <script src="https://www.paypalobjects.com/api/checkout.js"/>
269 {{/if}}
270{{/if}}
271
272
273<script>
274 var api = new com.upmenu();
275 com.upmenu.reservation = false;
276 var reservation = api._getParameterByName('reservation');
277 if(reservation == 'true') {
278 com.upmenu.reservation = true;
279 }
280</script>
281
282<!-- REACT -->
283<!-- IMPORTANT NOTE: Have to be under com.upmenu declaration and initialization !!! -->
284{{#unless disableReact}}
285 {{#ifequal environment "dev"}}
286 <script src="{{static_url}}/react/dev/react.development.js"></script>
287 <script src="{{static_url}}/react/dev/react-dom.development.js"></script>
288 {{else}}
289 <script src="{{static_url}}/react/react.production.min.js"></script>
290 <script src="{{static_url}}/react/react-dom.production.min.js"></script>
291 {{/ifequal}}
292
293 <script src="{{static_url}}/app/cms/index.bundle.js"></script>
294{{/unless}}
295<!-- END: REACT -->
296
297{{#ifequal environment "dev"}}
298 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-cookies.js'></script>
299 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-templates.js'></script>
300 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-pageviews.js'></script>
301 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-message.js'></script>
302 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-login.js'></script>
303 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-login-forgot-password.js'></script>
304 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-registration.js'></script>
305 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-cart.js'></script>
306 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-order-create.js'></script>
307 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-order-summary.js'></script>
308 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-order-rating.js'></script>
309 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-buying-flow.js'></script>
310 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-rating.js'></script>
311 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-newsletter.js'></script>
312 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-customer-account.js'></script>
313 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-restaurants.js'></script>
314 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-email.js'></script>
315 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-campaign-tracker.js'></script>
316 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-lead.js'></script>
317 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-facebook.js'></script>
318 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-contact.js'></script>
319 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-recommendations.js'></script>
320 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-coupon-popup.js'></script>
321 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-mailchimp.js'></script>
322 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-sare.js'></script>
323 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-select-prices.js'></script>
324 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-reservation.js'></script>
325 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-modals.js'></script>
326 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-cookie-bugfix.js'></script>
327 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-gps-monitoring.js'></script>
328 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-menu-orders-history.js'></script>
329 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-iframe.js'></script>
330 <script type='text/javascript' src='{{static_url}}/api3/js/cms-api-partners-program.js'></script>
331{{else}}
332 <script type='text/javascript' src='{{static_url}}/api3.js'></script>
333{{/ifequal}}
334
335{{embedded "cms3/cart.html"}}
336{{embedded "cms3/couponForm.html"}}
337{{embedded "cms3/orderForm.html"}}
338{{embedded "cms3/deliveryCheckForm.html"}}
339{{embedded "cms3/order.html"}}
340{{embedded "cms3/orderRatingForm.html"}}
341{{embedded "cms3/buyingFlow.html"}}
342{{embedded "cms3/loginForm.html"}}
343{{embedded "cms3/registrationForm.html"}}
344{{embedded "cms3/loginForgotPasswordForm.html"}}
345{{embedded "cms3/loyaltySummary.html"}}
346{{embedded "cms3/restaurantInfo.html"}}
347{{embedded "cms3/restaurantInfoDeliveryAreaPopup.html"}}
348
349<!-- COOKIE IN IFRAME BUGFIX // -->
350<!-- http://stackoverflow.com/questions/10060820/does-the-technique-for-setting-third-party-cookies-in-iframes-in-safari-still-wo -->
351<div class="modal fade cms-modal modal-big" id="_cookie-iniframe-bugfix-modal" data-backdrop="static">
352 <div class="modal-dialog">
353 <div class="modal-content">
354 <div class="modal-header">
355 <h4 class="modal-title">{{{message "cms_cookie_bug_title"}}}</h4>
356 </div>
357 <div class="modal-body" id="_cookie-iniframe-bugfix-modal-body">
358 {{{message "cms_cookie_bug_msg"}}}
359 </div>
360 </div><!-- /.modal-content -->
361 </div><!-- /.modal-dialog -->
362</div><!-- /.modal -->
363<!-- // COOKIE BUGFIX -->
364
365{{#if restaurant_closed_info}}
366<!-- RESTAURANT CLOSED INFO (FOR AUTOMATIC) // -->
367<div class="modal fade cms-modal" id="_restaurant-closed-info-modal" data-backdrop="static">
368 <div class="modal-dialog">
369 <div class="modal-content" id="_restaurant-closed-info-modal-content">
370 <div class="modal-body text-center">
371 <br/>
372 {{{message "cms_closed_info_1"}}}<b> {{dateFormat restaurant_closed_info.from format="HH:mm"}}</b><br/>
373 {{{message "cms_closed_info_2"}}}.<br/>
374
375 <button type="button" class="btn btn-upmenu btn-lg m-t" data-dismiss="modal" aria-hidden="true">{{{message "cms_closed_info_btn"}}}</button>
376 <br/> <br/>
377 </div>
378 </div><!-- /.modal-content -->
379 </div><!-- /.modal-dialog -->
380</div><!-- /.modal -->
381<!-- RESTAURANT CLOSED INFO (FOR AUTOMATIC) // -->
382<script type='text/javascript'>
383 var cookie = jQuery.cookie('restaurant-closed-modal');
384 if(cookie == null) {
385
386
387 jQuery('#_restaurant-closed-info-modal').modal('show');
388 }
389 jQuery('#_restaurant-closed-info-modal').on('hidden.bs.modal', function () {
390 jQuery.cookie('restaurant-closed-modal', 'true');
391 });
392
393</script>
394{{/if}}
395
396<!-- NEWSLETTER SUBSCRIPTION MODAL (FOR AUTOMATIC) // -->
397<div class="modal fade cms-modal modal-big" id="_newsletter-subscription-modal" data-backdrop="static">
398 <div class="modal-dialog">
399 <div class="modal-content" id="_newsletter-subscription-modal-content">
400
401 </div><!-- /.modal-content -->
402 </div><!-- /.modal-dialog -->
403</div><!-- /.modal -->
404<!-- // NEWSLETTER SUBSCRIPTION MODAL (FOR AUTOMATIC) -->
405
406<!-- RESTAURANT INFO MODAL // -->
407<div class="modal fade cms-modal modal-middle" id="_restaurant-info-modal" data-backdrop="static">
408 <div class="modal-dialog">
409 <div class="modal-content theme-restaurant-info" id="_restaurant-info-modal-content">
410
411 </div><!-- /.modal-content -->
412 </div><!-- /.modal-dialog -->
413</div><!-- /.modal -->
414<!-- // RESTAURANT INFO MODAL -->
415
416<!-- RESTAURANT INFO MODAL // -->
417<div class="modal fade cms-modal modal-narrow" id="_booking-modal" data-backdrop="static">
418 <div class="modal-dialog">
419 <div class="modal-content">
420 <div class="modal-header">
421 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
422 <h4 class="modal-title">{{message "cms_reservation_modal_title"}}</h4>
423 </div>
424 <div class="modal-body _booking-form-wrapper">
425
426 </div>
427 </div><!-- /.modal-content -->
428 </div><!-- /.modal-dialog -->
429</div><!-- /.modal -->
430<!-- // RESTAURANT INFO MODAL -->
431
432<!-- PRODUCT RECOMMENDATION // -->
433<div class="modal fade cms-modal" id="_product-recommendation-modal" data-backdrop="static">
434 <div class="modal-dialog">
435 <div class="modal-content">
436 <div class="modal-header">
437 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
438 <h4 class="modal-title">{{message "cms_recommend_modal_title"}}</h4>
439 </div>
440 <div class="modal-body">
441 <div id="_product-recommendation-modal-body" class="row">
442 </div>
443 </div>
444 <div class="modal-footer">
445 <!-- <button type="button" class="btn btn-default" data-dismiss="modal">Anuluj</button> -->
446 <button type="button" class="btn btn-upmenu btn-large _start-order">{{message "cms_recommend_modal_continue_btn"}} <i class="fa fa-chevron-right"></i></button>
447 </div>
448 </div><!-- /.modal-content -->
449 </div><!-- /.modal-dialog -->
450</div><!-- /.modal -->
451<!-- // PRODUCT RECOMMENDATION -->
452
453
454<!-- DELIVERY CHECK MODAL // -->
455<div class="modal fade cms-modal modal-big" id="_delivery-check-modal" data-backdrop="static">
456 <div class="modal-dialog">
457 <div class="modal-content">
458 <div class="modal-header">
459 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
460 <h4 class="modal-title"> {{message "cms_deliveryCheck_form_title"}}</h4>
461 </div>
462 <div class="modal-body">
463 <div id="_delivery-check-form-wrapper"></div>
464 </div>
465 </div>
466 </div>
467</div>
468<!-- // DELIVERY CHECK MODAL -->
469
470<!-- PRODUCT ON PAGE ENTER RECOMMENDATION // -->
471<div class="modal fade cms-modal" id="_product-on-page-enter-recommendation-modal" data-backdrop="static">
472 <div class="modal-dialog">
473 <div class="modal-content">
474 <div class="modal-header">
475 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
476 <h4 class="modal-title">{{message "cms_recommend_modal_title"}}</h4>
477 </div>
478 <div class="modal-body">
479 <div id="_product-on-page-enter-recommendation-modal-body" class="row">
480 </div>
481 </div>
482
483 </div><!-- /.modal-content -->
484 </div><!-- /.modal-dialog -->
485</div><!-- /.modal -->
486<!-- PRODUCT ON PAGE ENTER RECOMMENDATION // -->
487
488
489<!-- POPUPS // -->
490{{#if collections.modals.content}}
491<div class="modal fade" id="_theme-modals" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
492 <div class="modal-dialog">
493 <div class="modal-content">
494 <div class="modal-body">
495 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
496 <div id="_theme-modals-carousel" class="carousel slide" data-ride="carousel">
497 <div class="carousel-inner">
498 {{#collections.modals.content}}
499 <div class="item {{#ifequal @index 0}}active{{/ifequal}}" id="{{id}}" data-permalink="{{permalink}}" data-onlypopup="{{onlypopup}}">
500 {{{content}}}
501 {{#if image}}<img src="{{image_url}}" class="img-responsive"/>{{/if}}
502 </div>
503 {{/collections.modals.content}}
504 </div>
505 {{#ifequal collections.modals.content.size 1}} {{else}}
506 <a class="left carousel-control" href="#_theme-modals-carousel" role="button" data-slide="prev">
507 <span class="glyphicon glyphicon-chevron-left"></span>
508 </a>
509 <a class="right carousel-control" href="#_theme-modals-carousel" role="button" data-slide="next">
510 <span class="glyphicon glyphicon-chevron-right"></span>
511 </a>
512 {{/ifequal}}
513 </div>
514 </div>
515 </div>
516 </div>
517</div>
518{{/if}}
519<!-- POPUPS // -->
520
521<!-- ORDER FORM -->
522<div class="modal fade cms-modal" id="_order-form-modal" data-backdrop="static">
523 <div class="modal-dialog">
524 <div class="modal-content" id="_order-form-modal-content">
525
526 </div><!-- /.modal-content -->
527 </div><!-- /.modal-dialog -->
528</div><!-- /.modal -->
529
530
531<!-- GENERIC MODAL -->
532<div class="modal fade cms-modal modal-big" id="_cms-modal" data-backdrop="static">
533 <div class="modal-dialog">
534 <div class="modal-content" id="_cms-modal-content">
535
536 </div><!-- /.modal-content -->
537 </div><!-- /.modal-dialog -->
538</div><!-- /.modal -->
539
540
541<div class="modal fade cms-modal modal-narrow" id="_cms-modal-narrow" data-backdrop="static">
542 <div class="modal-dialog">
543 <div class="modal-content" id="_cms-modal-narrow-content">
544
545 </div><!-- /.modal-content -->
546 </div><!-- /.modal-dialog -->
547</div><!-- /.modal -->
548
549<!-- /GENERIC MODAL -->
550
551
552<!-- BUYING FLOW MODAL -->
553<div class="modal fade cms-modal modal-big _buying-flow-modal theme-buying-flow-modal" id="_buying-flow-modal" data-backdrop="static">
554 <div class="modal-dialog">
555 <div class="modal-content" id="_buying-flow-modal-content">
556
557 </div><!-- /.modal-content -->
558 </div><!-- /.modal-dialog -->
559</div><!-- /.modal -->
560
561<!-- /BUYING FLOW MODAL -->
562
563<!-- TERMS OF SERVICE MODAL // -->
564<div class="modal fade cms-modal modal-big" id="_terms-of-service-modal" data-backdrop="static">
565 <div class="modal-dialog">
566 <div class="modal-content">
567 <div class="modal-header">
568 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
569 <h4 class="modal-title">{{message "cms_terms_of_service_modal_title"}}</h4>
570 </div>
571 <div class="modal-body" id="_terms-of-service-modal-body">
572
573 </div>
574 </div>
575 </div>
576</div>
577<!-- // TERMS OF SERVICE MODAL -->
578<!-- PRIVACY POLICY MODAL // -->
579<div class="modal fade cms-modal modal-big" id="_privacy-policy-modal" data-backdrop="static">
580 <div class="modal-dialog">
581 <div class="modal-content">
582 <div class="modal-header">
583 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
584 <h4 class="modal-title">{{message "cms_privacy_policy_modal_title"}}</h4>
585 </div>
586 <div class="modal-body" id="_privacy-policy-modal-body">
587
588 </div>
589 </div>
590 </div>
591</div>
592<div id="_cookie-law-content" style="display: none;">
593 {{{site.cookieLawContent}}}
594</div>
595<!-- // PRIVACY POLICY MODAL -->
596<script type='text/javascript'>
597
598 $(function(){
599
600
601 {{#if site.cookieLawContent}}
602 $.cookieBar({
603 message: jQuery('#_cookie-law-content').html(),
604 acceptText: 'Ok',
605 fixed: true
606 });
607 {{/if}}
608
609 // fix affix width problem
610 // based on https://github.com/twbs/bootstrap/issues/6350
611 var $cartParent = $('._cart-wrapper').parent();
612 var resizeCart = function () {
613 var width = $cartParent.width() - 0;
614 $('._cart-wrapper').css('width', width);
615 };
616 resizeCart();
617 $(window).resize(resizeCart);
618
619
620 var $categoriesParent = $('._categories-wrapper').parent();
621 var resizeCategories = function () {
622 var width = $categoriesParent.width() - 0;
623 $('._categories-wrapper').css('width', width);
624 };
625
626 resizeCategories();
627 $(window).resize(resizeCategories);
628
629
630
631 // initialize scrollup jquery plugin
632 $.scrollUp({scrollText: ''});
633
634 // initialize fancybox plugin
635 if($('.fancybox').length > 0) {
636
637 $('.fancybox').fancybox({
638 helpers : {
639 title: {
640 type: 'inside'
641 }
642 },
643 beforeLoad: function() {
644 this.title = $(this.element).attr('caption');
645 }
646 });
647 }
648
649 // make gallery images same height
650 $(".theme-gallery").matchHeight();
651
652 // scroll spy
653 $('body').scrollspy({ target: '#_cats', offset: 250 });
654
655 // init tooltip
656 $('[data-toggle=tooltip]').tooltip();
657
658 // hide menu powered by when footer powered by is visible
659 if(jQuery('.theme-footer-powered-by').length > 0) {
660 jQuery('#powered-by').hide();
661 }
662
663 // add style to body to determine if we are inside iframe or not
664 var isEmbed = window != window.parent;
665
666 if(isEmbed) {
667 $('body').addClass('theme-inside-iframe');
668 } else {
669 $('body').addClass('theme-outside-iframe');
670 }
671 if(com.upmenu.orderSource == 'FACEBOOK') {
672 $('body').addClass('theme-home-fb');
673 }
674
675 // cart and categories wrapper affix bottom
676 var $footer = jQuery('footer:first');
677 if($footer.length == 0) {
678 $footer = jQuery('.theme-footer:first');
679 }
680 if($footer.length > 0) {
681 var $cartWrapper = jQuery('._cart-wrapper');
682 var $categoriesWrapper = jQuery('._categories-wrapper');
683 if($cartWrapper.length > 0) {
684 $cartWrapper.attr('data-offset-bottom', $footer.outerHeight() + 30);
685 }
686 if($categoriesWrapper.length > 0) {
687 $categoriesWrapper.attr('data-offset-bottom', $footer.outerHeight() + 20);
688 }
689 }
690 });
691</script>
692
693<!-- MENU SLIDING AND SCROLLING // -->
694<script type='text/javascript'>
695$(function(){
696
697 var makeProducsBoxesSameHeight_themeVersion3 = function(products) {};
698
699 // MENU V3 (MENU THEME)
700 {{#ifequal theme_settings.is_box_menu "true"}}
701 // BOX MENU
702 // make products same height
703 var makeProducsBoxesSameHeight_themeVersion3 = function($products) {
704 var maxHeight = 0;
705 $(".product", $products).each(function() {
706
707 var height = jQuery(this).outerHeight();
708 if(maxHeight < height) maxHeight = height;
709 });
710 $(".product",$products).css({ height: maxHeight + 'px' });
711 };
712 {{#ifequal theme_settings.menu_categories_is_toggle "true"}} // sliding box
713 jQuery('.product-group').click(function() {
714
715 // hide all
716 //$('.products-list').hide();
717
718 $productGroup = jQuery(this);
719 $products = jQuery(this).next();
720 $products.slideToggle('slow', function() {
721 makeProducsBoxesSameHeight_themeVersion3($products);
722
723 if($products.is( ":visible" )) {
724 $productGroup.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
725 $productGroup.removeClass('product-group-hidden').addClass('product-group-visible');
726 jQuery( document ).trigger( "upmenu:fitIframeSize");
727 } else {
728 $productGroup.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
729 $productGroup.removeClass('product-group-visible').addClass('product-group-hidden');
730 jQuery( document ).trigger( "upmenu:fitIframeSize");
731 }
732
733 // move screen to clicked group
734 var offset = $products.offset();
735 $("html, body").animate({scrollTop: offset.top - 100}, '250', 'swing', function() {});
736 });
737 });
738
739 // add arrows
740 jQuery('._product-group-name').prepend('<i class="fa fa-angle-down"></i> ');
741
742 {{else}} // not sliding box
743
744 jQuery('.products-list').each(function() {
745 $(".product", jQuery(this)).matchHeight();
746 });
747 {{/ifequal}}
748
749 // BOX MENU
750 {{else}}
751 // LIST MENU
752 {{#ifequal theme_settings.menu_categories_is_toggle "true"}} // sliding box
753 jQuery('.product-group, ._theme_product-group').click(function() {
754
755 $productGroup = jQuery(this);
756 $products = jQuery(this).next();
757
758 $products.slideToggle('slow', function() {
759 if($products.is( ":visible" )) {
760 $productGroup.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
761 jQuery( document ).trigger( "upmenu:fitIframeSize");
762
763 } else {
764 $productGroup.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
765 jQuery( document ).trigger( "upmenu:fitIframeSize");
766 }
767 });
768 });
769
770 // add arrows
771 jQuery('._product-group-name').prepend('<i class="fa fa-angle-down"></i> ');
772 {{/ifequal}}
773 // LIST MENU
774 {{/ifequal}}
775
776 // IN NEWEST THEME WE DON'T HAVE BOX MENU. INSTEAD WE HAVE COLUMN NUMBERS
777 {{#ifequal theme_settings.menu_columns "1"}} {{else}}
778 jQuery('.theme-products-list').each(function() {
779 var $products = jQuery(this);
780 $(".theme-product",$products).matchHeight();
781 });
782 {{/ifequal}}
783
784});
785</script>
786<!-- // MENU SLIDING AND SCROLLING -->
787
788<!-- LAZY IMAGE -->
789<script type='text/javascript'>
790 $(".lazy-image").Lazy();
791</script>
792
793<!-- MENU - ONLY ONE CATEGORY IS VISIBLE AT THE SAME TIME -->
794<script type='text/javascript'>
795 // if only one category (OPTION NOT DOCUMENTED IN THEME SETTINGS)
796 {{#ifequal theme_settings.menu_categories_is_one_category "true"}}
797 // hide all categories and products
798 jQuery('.theme-product-group').hide();
799 jQuery('.theme-products-list').hide();
800 {{/ifequal}}
801
802 // only one category is visible
803 jQuery('.categories-wrapper li a, ._categories-wrapper li a').click(function() {
804
805 {{#ifequal theme_settings.menu_categories_is_one_category "true"}}
806 jQuery('.theme-product-group').hide();
807 jQuery('.theme-products-list').hide();
808
809 var id = jQuery(this).attr('data-id');
810 jQuery('#pg-'+id).show();
811 jQuery('#'+id).show();
812
813 jQuery( document ).trigger( "upmenu:categoryShow");
814 {{else}}
815 jQuery('#_cats').toggleClass('hidden-xs');
816
817 /* toggle category when click on left/top categories */
818 var id = jQuery(this).attr('href');
819 jQuery(id).click();
820
821 /* override default browser scrolling */
822 var offset = 15;
823 if(jQuery('._categories-top').length > 0) {
824 if(jQuery('._categories-top').hasClass("affix-top")) {
825 offset = offset + jQuery('._categories-top').position().top + jQuery('._categories-top').height() * 2; // fix bug with bad offset top while affix
826 } else {
827 offset = offset + jQuery('._categories-top').position().top + jQuery('._categories-top').height();
828 }
829
830 }
831 /* fix if top categories have images */
832 if(offset > 1000) offset = 800;
833
834 $('html, body').animate({scrollTop: jQuery(id).offset().top - offset}, "slow");
835
836
837 jQuery( document ).trigger( {
838 type:"upmenu:categoryClicked",
839 offset: (jQuery(id).offset().top - offset)
840 });
841 {{/ifequal}}
842
843
844 return false;
845 });
846</script>
847<!-- // MENU - ONLY ONE CATEGORY IS VISIBLE AT THE SAME TIME -->
848
849<!-- MENU - ALIGN MENU BUY BUTTONS TO THE BOTTOM // -->
850<script>
851 $(function(){
852 $('.theme-product-box-row .theme-product').each(function() {
853 var priceHeight = $(this).find('.theme-product-types').height()+25;
854 $(this).find('.theme-product-types').addClass('theme-product-types-to-bottom');
855 $(this).css('padding-bottom', priceHeight).css('position', 'relative');
856 });
857 });
858 </script>
859<!-- // MENU - ALIGN MENU BUY BUTTONS TO THE BOTTOM -->
860
861<!-- EDIT MODE // -->
862{{#if edit_mode}}
863
864<script type='text/javascript'>
865
866
867// like jQuery('#form').serialize() but this method serialize to javascript object instead url query string
868$.fn.serializeObject = function()
869{
870 var o = {};
871 var a = this.serializeArray();
872 $.each(a, function() {
873 if (o[this.name] !== undefined) {
874 if (!o[this.name].push) {
875 o[this.name] = [o[this.name]];
876 }
877 o[this.name].push(this.value || '');
878 } else {
879 o[this.name] = this.value || '';
880 }
881 });
882 return o;
883};
884</script>
885
886<script type='text/javascript' src='{{static_url}}/api3/js/edit/cms-api-edit-mode.js'></script>
887<script type='text/javascript' src='{{static_url}}/api3/js/edit/cms-api-edit-utils.js'></script>
888<script type='text/javascript' src='{{static_url}}/api3/js/edit/cms-api-edit-theme-settings.js'></script>
889<script type='text/javascript' src='{{static_url}}/ckeditor-4.5.5/ckeditor.js'></script>
890<script type='text/javascript' src='{{static_url}}/api3/js/google-webfonts.js'></script>
891
892<!-- left slide menu -->
893<script src="{{static_url}}/jQuery-mmenu/js/jquery.mmenu.min.all.js" type="text/javascript"></script>
894
895
896
897<!-- assets modal -->
898<div id="assets-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="assetsModalLabel" aria-hidden="true">
899 <div class="modal-header">
900 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
901 <h4 id="assetsModalLabel" style="text-align: center;">{{message "cms_edit_photos_choose"}}</h4>
902 </div>
903 <div class="modal-body">
904
905 </div>
906
907</div>
908
909<!-- EDIT ASSETS MODAL// -->
910<div class="modal fade cms-modal modal-big" id="_assets-modal">
911 <div class="modal-dialog">
912 <div class="modal-content">
913 <div class="modal-header">
914 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
915 <h4 class="modal-title">{{message "cms_edit_photos_choose"}} </h4>
916 </div>
917 <div class="modal-body" id="_assets-modal-body">
918
919
920 </div>
921 </div><!-- /.modal-content -->
922 </div><!-- /.modal-dialog -->
923</div><!-- /.modal -->
924<!-- // EDIT ASSETS MODAL -->
925
926<!-- EDIT MODE NAVIGATION // -->
927<nav id="_theme-settings-left-nav" style="z-index: 10000;">
928 <div class="_theme-settings-form-wrapper" style="overflow: scroll;">
929 <a href="#" class="btn btn-upmenu btn-block btn-lg pull-right m-b" id="_save-theme-settings">{{message "cms_edit_save_settings_changes_btn"}}</a><br/><br/><br/>
930 <form action="#" method="post" id="_theme-settings-form" data-siteid="{{siteId}}">
931 {{>settings.html}}
932 </form>
933
934 <br/><br/><br/><br/><br/><br/><br/><br/>
935 </div>
936</nav>
937
938 <script type="text/javascript">
939 $(document).ready(function() {
940 $("#_theme-settings-left-nav").mmenu({
941
942
943 });
944
945
946
947 });
948</script>
949 <div class="navbar navbar-default navbar-fixed-top" id="_theme-edit-model-navbar">
950 <ul class="nav navbar-nav">
951 <li class="_hide-inside-iframe">
952 <img src="{{static_url}}/images/logo-sm.png" style="padding: 7px 20px;"></img>
953 </li>
954 <li>
955 <a href="#" id="_save-edit-mode-changes">{{message "cms_edit_save_changes_btn"}}</a>
956 </li>
957
958 <li style="display: none;">
959 <a href="#_theme-settings-left-nav" id="_change-theme-settings">{{message "cms_edit_theme_settings_btn"}}</a>
960 </li>
961
962 </ul>
963 <ul class="nav navbar-nav navbar-right _hide-inside-iframe">
964 <li><a href="http://www.upmenu.com/admin" style="margin-right: 15px;">{{message "cms_edit_back_to_admin"}}</a></li>
965
966 </ul>
967
968 </div>
969
970<!-- // EDIT MODE NAVIGATION -->
971
972{{/if}}
973<!-- // EDIT MODE -->
974
975<!-- SMART BANNERS -->
976<script type="text/javascript">
977 $(function(){
978 if($('meta[name=google-play-app]').length > 0 || $('meta[name=apple-itunes-app]').length > 0) {
979 $.smartbanner({
980 title: '{{{site.name}}}',
981 author: '{{{message "cms_smart_banner_cta"}}}',
982 button: '{{{message "cms_smart_banner_download_btn"}}}',
983 price: '',
984 icon: '{{{site.logoImageUrl}}}'
985 });
986 }
987 });
988</script>
989<!-- // SMART BANNERS -->
990
991<!-- PREVENT MORE THAN TWO UPMENU POWERED BY -->
992<script type="text/javascript">
993 $(function(){
994 if($('.theme-footer-powered-by').length > 1) {
995 $('.theme-footer-powered-by:first').hide();
996 }
997 });
998</script>
999<!-- // PREVENT MORE THAN TWO UPMENU POWERED BY -->
1000
1001<!-- DROPDOWN INIT -->
1002<script type="text/javascript">
1003 $(document).ready(function() {
1004 $('.dropdown-toggle').dropdown();
1005 });
1006</script>
1007
1008<!-- AFFILIATE BANNER -->
1009<script type="text/javascript">
1010 $(function(){
1011 try {
1012 var affiliateBannerForceHidden = false;
1013 if (window.location !== window.parent.location) { // show banner in iframe
1014 setTimeout(function(){
1015 if(!affiliateBannerForceHidden) {
1016 // banner
1017 $('#_affiliate-banner').slideDown();
1018
1019 // modal banner
1020 var cookieName = 'affiliate-banner-modal';
1021 var cookie = jQuery.cookie(cookieName);
1022 if(cookie == null) {
1023 $('#_affiliate-modal-banner').modal('show');
1024 jQuery.cookie(cookieName, 'true', { expires : 1 }); // one day
1025 }
1026 }
1027 }, 2000);
1028 }
1029 // Listen parent window. It can force banner hidden
1030 window.addEventListener("message", function(e) {
1031 switch(e.data.type) {
1032 case 'HIDE_AFFILIATE_BANNER':
1033 $('#_affiliate-banner').hide();
1034 affiliateBannerForceHidden = true;
1035 break;
1036 }
1037 }, false);
1038 } catch(err) {}
1039
1040 });
1041</script>
1042
1043<!-- Recalculate viewport height units for mobile devices -->
1044<script>
1045 let vh = window.innerHeight * 0.01;
1046
1047 document.documentElement.style.setProperty('--vh', `${vh}px`);
1048
1049 window.addEventListener('resize', () => {
1050 let vh = window.innerHeight * 0.01;
1051 document.documentElement.style.setProperty('--vh', `${vh}px`);
1052 });
1053</script>
1054
1055
1056{{>cms3/socialMedia.html}}