Newer
Older

Michael Danielczok
committed
var lg = 'quiqqer/template-cologne';
window.addEvent('domready', function () {
"use strict";

Michael Danielczok
committed
require([
'qui/QUI'
], function (QUI) {
if (SHOW_CATEGORY_MENU) {
initMobileMenu();
}
if (document.getElements('[href=#top]')) {
var toTop = document.getElements('[href=#top]'),
buttonVisible = false;
// show on load after 1s delay
if (QUI.getScroll().y > 300) {
toTop.addClass('toTop__show');
buttonVisible = true;
// show button toTop after scrolling down
QUI.addEvent('scroll', function () {
if (QUI.getScroll().y > 300) {
if (!buttonVisible) {
toTop.addClass('toTop__show');
buttonVisible = true;
if (!buttonVisible) {
return;
toTop.removeClass('toTop__show');
buttonVisible = false;
// scroll to top
toTop.addEvent('click', function (event) {
event.stop();
new Fx.Scroll(window).toTop();
var Header = document.getElement('.cologne-header');
require.config({
paths: {
Hammer : URL_OPT_DIR + 'bin/hammerjs/hammer.min',
FastClick: URL_OPT_DIR + 'bin/fastclick/lib/fastclick',
Mustache : URL_OPT_DIR + 'bin/mustache/mustache'
require(['FastClick'], function (FastClick) {
FastClick.attach(document.body);
});
require([
'Locale',
'package/quiqqer/tooltips/bin/html5tooltips'
], function (QUILocale, html5tooltips) {
QUI.setAttribute('control-loader-type', 'fa-spinner');
QUI.setAttribute('control-loader-color', '#999999');
var Logo = document.getElement('header .logo'),
UserButton = document.getElements('.cologne-header-control-user'),
UserButtonLoader = UserButton.getElement('.cologne-header-control-user-loader');
window.addEvent('load', function () {
document.getElement('.cologne-header-menu').setStyle('overflow', 'visible');
});
/**
* Login
*/
require([
'utils/Controls'
], function (QUIControlUtils) {
if (QUIQQER_USER.id) {
var UserIcon = document.getElement(
'[data-qui="package/quiqqer/frontend-users/bin/frontend/controls/UserIcon"]'
);
QUIControlUtils.getControlByElement(UserIcon).then(function (UserIconControl) {
UserIconControl.addEvent('load', function () {
userIconLoadEvent(UserIconControl, QUILocale);
UserButton.addEvents({
click: function (event) {
if (event) {
event.stop();
}
moofx(UserButtonLoader).animate({
opacity: 0
}, {
callback: function () {
UserButtonLoader.destroy();
}
});
if ("QUIQQER_LOGIN_FAILED" in window && window.QUIQQER_LOGIN_FAILED) {
new LoginWindow({
maxHeight : 380,
social : false,
registration: false,
logo : Logo.src,
events : {
onSuccess: function () {
window.location.reload();
}
}
}).open();
}
});

Michael Danielczok
committed
/**
* Basket
*/
require([
'package/quiqqer/order/bin/frontend/controls/basket/Button'
], function (Basket) {
new Basket({

Michael Danielczok
committed
open : BASKET_OPEN.toInt(),
styles: {
float: 'right'
},
events: {
onCreate : function (Basket) {
var BasketNode = Basket.getElm(),
basketStyleCss = '';

Michael Danielczok
committed
if (BASKET_STYLE) {
basketStyleCss = 'basket-style-' + BASKET_STYLE;
// clear default content
BasketNode.set('html', '');
BasketNode.addClass('tpl-btn ' + basketStyleCss);
new Element('span', {
'class': 'quiqqer-order-basketButton-icon-custom',
html : '<span class="fa fa-shopping-basket"></span>'
}).inject(BasketNode);
new Element('span', {
'class': 'quiqqer-order-basketButton-quantity quiqqer-order-basketButton-batch-custom',
html : '0'
}).inject(BasketNode);

Michael Danielczok
committed
if (BASKET_STYLE && BASKET_STYLE === 'full') {
new Element('span', {
'class': 'quiqqer-order-basketButton-sum',

Michael Danielczok
committed
html : INITAL_BASKET_PRICE
}).inject(BasketNode);
}

Michael Danielczok
committed
document.getElement('.cologne-header-control-basket').set('html', '');
},
/**
* onShowBasketBegin event
*
* @param Basket
* @param pos - position of popup basket
* @param height - height of basket button
*/
showBasketBegin: function (Basket, pos, height) {
// move basket popup from bottom of the page to header
// it's better to manage for sticky header
Header.getElement('.cologne-header-control').adopt(Basket.$BasketContainer);
var headerHeight = Header.getSize().y;
// -1px because of header bottom border
pos.y = headerHeight - 1;
// reset button height
// see package/quiqqer/order/bin/frontend/controls/basket/Button.showSmallBasket()
height.y = 0;
Basket.$BasketContainer.setStyles({
right: 0 // right margin from .cologne-header-control-basket
});
// Do not scroll the page
Basket.$BasketContainer.addEvent('focus', function (event) {
event.preventDefault();
});
Basket.$BasketContainer.setStyles({
border: '1px solid #ddd'
});
}
}
}).inject(document.getElement('.cologne-header-control-basket'));
});

Michael Danielczok
committed
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
/**
* Currencies
*/
/*require(['package/quiqqer/currency/bin/controls/Switch'], function (Switch) {
new Switch().inject(document.getElement('.cologne-header-control-currencies'));
});*/
/**
* Sticky menu
* @type {boolean}
*/
var Menu = document.getElement('.cologne-header'),
topBarHeight = document.getElement('.topbar').getSize().y;
/**
*
* @param smooth {bool} - helpful on page reload when the page is already scrolled
*/
var setMenuFixed = function (smooth) {
if (smooth === true) {
Menu.setStyles({
position : 'fixed',
transform: 'translateY(-100px)'
});

Michael Danielczok
committed
// Delay 500ms for performance reasons (on page load)
(function () {
moofx(Menu).animate({
transform: 'translateY(0)'
})

Michael Danielczok
committed
Menu.addClass('cologne-header-fixed');
document.body.addClass('header-fixed');
};
var removeMenuFixed = function () {
Menu.removeClass('cologne-header-fixed');
Menu.setStyle('position', null);
document.body.removeClass('header-fixed');
};

Michael Danielczok
committed
if (Menu) {
// check on page load if menu should be sticked to the top
if (QUI.getScroll().y >= topBarHeight) {
QUI.addEvent('scroll', function () {
if (QUI.getScroll().y >= topBarHeight) {
setMenuFixed(false);
return;
}
removeMenuFixed();
})
}
});

Michael Danielczok
committed
});

Michael Danielczok
committed
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
/**
* UserIcon load event
*
* @param UserIconControl
* @param QUILocale
*/
function userIconLoadEvent (UserIconControl, QUILocale) {
var Menu = UserIconControl.$Menu;
require([
'controls/users/LogoutWindow',
'qui/controls/contextmenu/Item',
'qui/controls/contextmenu/Separator'
], function (LogoutWindow, Item, Separator) {
Menu.appendChild(new Separator());
// own logout entry
Menu.appendChild(
new Item({
icon : 'fa fa-sign-out',
text : QUILocale.get('quiqqer/template-cologne', 'frontend.usericon.menuentry.logout.label'),
events: {
click: function () {
createLogoutWindow(LogoutWindow);
}
}
})
);
});
UserIconControl.addEvent('onMenuShow', function (UserIconControl, MenuNode) {
MenuNode.setStyles({
left : null,
right: -25
});
});
}
/**
* Create and open logout window
*
* @param LogoutWindow
*/
function createLogoutWindow (LogoutWindow) {
new LogoutWindow({
class : 'cologne-logout-dialog',
title : false,
icon : false,
maxHeight: 350,
maxWidth : 400,
events : {
onOpen: function (Popup) {
var Content = Popup.getElm(),
ContentElms = [
Content.getElement('.qui-window-popup-content'),
Content.getElement('.qui-window-popup-buttons')
];

Michael Danielczok
committed
ContentElms.each(function (ContentElm) {
ContentElm.setStyle('opacity', 0);
});
var CancelButton = Content.getElement('button[name="cancel"]');

Michael Danielczok
committed
if (CancelButton) {
// CancelButton.removeClass('btn-light');

Michael Danielczok
committed
CancelButton.addClass('btn-secondary btn-outline');
}
// workaround due to the CancelButton.addClass
// to avoid the "flash" effect
(function () {
ContentElms.each(function (ContentElm) {
moofx(ContentElm).animate({
opacity: 1
});
});
}).delay(50);

Michael Danielczok
committed
}
}
}).open();
}
/**
* Create and open login popup
*/
function createLoginWindow () {

Michael Danielczok
committed
require([
'package/quiqqer/frontend-users/bin/frontend/controls/login/Window'

Michael Danielczok
committed
], function (LoginWindow) {
new LoginWindow({
class : 'cologne-login-dialog',
title : false,
maxHeight: 500,
maxWidth : 400,
events : {

Michael Danielczok
committed
onSuccess: function () {
window.location.reload();
}
}
}).open();
});
}
/**
* Menu mobile
*/
function initMobileMenu () {
var OpenCategoryBtn = document.getElement('.shop-category-menu-button'),
MenuElm = document.getElement('[data-qui="package/quiqqer/menu/bin/SlideOut"]');
if (!OpenCategoryBtn) {
console.error('Open Category Button not found.');
return;
require(['utils/Controls'], function (Controls) {
Controls.getControlByElement(MenuElm).then(function (MenuControl) {
/*console.log(OpenCategoryBtn)
OpenCategoryBtn.removeEvents('click');
console.log(OpenCategoryBtn)
console.log(MenuControl);*/
});
});