(function(window,document,undefined) { var helper = { loadJS: function(url, callbackFunction) { var scriptTag = document.createElement('script'); scriptTag.src = url; if(callbackFunction) { scriptTag.onload = callbackFunction; scriptTag.onreadystatechange = callbackFunction; } var headTag = document.getElementsByTagName('head')[0]; headTag.appendChild(scriptTag); } }; /* Główny obiekt */ var silnetLoader = function() { this.Vue = null; this.VueComponents = {}; this.VueMountPoint = null; this.baseUrl = 'https://global.profiauto.silnet.pl/static'; this.customerId = 'Pndhgbd98stts'; this.customerModules = { "cookies": false, "show_numbers": true, "push_notifications": false, "privacy_policy": { "popup": false, "widget_type": "", "template": "privacy-policy-default-pl", "title": "", "customer": { "name": "Gajewski Serwis", "www": "gajewski-serwis.pl", "url": "https:\/\/gajewski-serwis.pl", "email_main": "gajewskibr1981@vp.pl", "email_iodo": "gajewskibr1981@vp.pl", "nip": "7742693746", "regon": "147088771", "address": { "city": "Brwilno", "street": "P\u0142ocka 72" } }, "forms": { "contact": true, "register_user": false, "shop": false, "newsletter": false, "rating": false }, "used_services": { "tawkto": false, "callpage": false, "google_signals": true }, "javascript": { "document_selector": "privacy_policy" } } }; } silnetLoader.prototype = { execute: function() { this.initVueLibrary(); this.loadPrivacyPolicy(); this.mountVueComponents(); }, /** * Obsługa biblioteki vue.js - rejestrowanie komponnetów typu single files **/ registerVueComponent: function(componentName,mount,mountParameters) { componentName = componentName.replace(/^(.*\/?)?([^\/]+)(\.vue.*)$/i, '$2'); this.VueComponents[componentName] = httpVueLoader(this.baseUrl+'/media/js/vue/'+componentName+'.vue'); Vue.component(componentName,this.VueComponents[componentName]); if(mount===true) { var newComponent = document.createElement(componentName); if(mountParameters && Array.isArray(Object.keys(mountParameters))) { for(var k in mountParameters) { newComponent.setAttribute(k, mountParameters[k]); } } this.VueMountPoint.appendChild(newComponent); //this.VueMountPoint.innerHTML += newComponent.outerHTML; } }, /** * Obsługa biblioteki vue.js - przygotowanie środowiska i kontenera na komponenty (nie może być to 'BODY') **/ initVueLibrary: function () { this.Vue = null; this.VueMountPoint = document.createElement('div'); this.VueMountPoint.id = 'sil-global-vue-'+(new Date()).getTime(); var bodyTag = document.getElementsByTagName('body')[0]; bodyTag.appendChild(this.VueMountPoint); }, /** * Obsługa biblioteki vue.js - montowanie tagów vue **/ mountVueComponents: function () { this.Vue = new Vue({ el: '#'+this.VueMountPoint.id }); }, loadPrivacyPolicy: function() { if(this.customerModules.privacy_policy.javascript.document_selector) { this.registerVueComponent('silnet-privacy-policy-popup',false); this.registerVueComponent('silnet-privacy-policy', true, { 'container-selector': this.customerModules.privacy_policy.javascript.document_selector, 'content-url': this.baseUrl+'/js/customer/'+this.customerId+'/privacy-policy', 'show-popup':this.customerModules.privacy_policy.popup, 'widget-type':this.customerModules.privacy_policy.widget_type||'popup' }); } } } /** * Funkcja główna osadzająca skonfigurowane dokumenty **/ function main() { var loader = new silnetLoader(); loader.execute(); } /** * Osadzane komponenty są oparte o vue.js, więc trzeba załadować odpowiednie biblioteki (Vue+vue-http-loader+axios do obsługi ajax) * Pomoc: https://www.npmjs.com/package/http-vue-loader **/ //Fixes var tmpUrl = 'https://cdn.jsdelivr.net/combine/npm/axios@0.18.0/dist/axios.min.js,npm/vue@2.5.17/dist/vue.min.js,npm/http-vue-loader@1.3.5/src/httpVueLoader.min.js'; helper.loadJS(tmpUrl,function(){ Vue.config.devtools = false; main(); }); })(window, window.document);