Libra = Libra || {} Libra.config = Libra.config || {} Libra.config.client = Libra.config.client || {} Libra.config.client.proto = location.protocol.slice( 0, -1 ) Libra.data = Libra.data || {} Libra.data.path = Libra.data.path || {} Libra.data.path.origin = window.location.origin + window.location.pathname Libra.data.path.fw = Libra.config.client.proto + '://www.libraonline.net/fw/' Libra.data.path.virtual = Libra.config.client.proto + '://www.libraonline.net/Libra/' Libra.data.network = Libra.data.network || {} Libra.Network = Libra.Network || {} Libra.data.network.asyncMode = 'async' Libra.data.network.loaded = [] Libra.data.network.session = [] Libra.Network.getExtraParams = () => {return {}} Libra.getSessionId = () => { return new Date().getTime() + Math.random().toString( 36 ).substr( 2, 9 ) } Libra.load = ( arg, args = { session: null, fn: null, scope: null } )=> { let i, j, ext, path, script, prior, session //switch(arg.target){ //case 'Libra':arg.path = Libra.data.path.virtual + arg.path; break //case 'fw':arg.path = Libra.data.path.fw + arg.path; break //case 'origin':arg.path = Libra.data.path.origin + arg.path; break //} if(arg.target)arg.path = Libra.data.path[arg.target] + arg.path if ( typeof args !== 'object' ) error( 'Loader.load: args is incorrect' ) if ( typeof arg.path === 'undefined' ) { error( 'load:arg.path is needed' ); return false } if ( !Array.isArray( arg.path ) ) arg.path = [ arg.path ] if ( args.fn || args.session ) { session = args.session || Libra.getSessionId() Libra.data.network.session[ session ] = { cb:args, path: {} } } for ( i in arg.path ) { path = ( arg.pathPrefix ? arg.pathPrefix : '' ) + arg.path[ i ] if ( session ) Libra.data.network.session[ session ].path[ path ] = false if ( arg.cache && Libra.Network.isLoaded( path ) ) { if ( session ) delete( Libra.data.network.session[ session ].path[ path ] ) continue } ext = path.split( '.' ) ext = ext[ ext.length-1 ].toLowerCase() switch ( ext ) { case 'css': script = document.createElement( 'link' ); prior = document.getElementsByTagName( 'head' )[ 0 ]; script.rel = 'stylesheet';/* script.media = 'screen' */ break case 'js': case 'php': default: script = document.createElement('script'); prior = document.getElementsByTagName('script')[0]; break } script.async = Libra.data.network.asyncMode script.pathLibra = path if ( session ) script.session = session prior.parentNode.insertBefore( script, prior ) script.onerror = () => delete( Libra.data.network.session[ this.session ] ) // TODO error script.onload = script.onreadystatechange = function( _, isAbort ) { if ( isAbort || !/*script*/this.readyState || /loaded|complete/.test( script.readyState ) ) { this.onload = this.onreadystatechange = null if ( !isAbort ) { Libra.data.network.loaded[ this.pathLibra ] = 1; if ( this.session ) Libra.Network.sessionCheck( this ) } else{ Libra.data.network.loaded[this.pathLibra]=0; if( this.session ) delete( Libra.data.network.session[ this.session ] ) } } } let extraParams = Libra.Network.getExtraParams() if ( session ) extraParams._libraCbSession = session let strArr=[] for ( j in extraParams ) strArr.push( j + '=' + extraParams[ j ] ) path += ( path.includes( '?' ) ? '&' : '?' ) + strArr.join( '&' ) switch( ext ) { case 'css': script.href = path; break case 'js': case 'php': default: if ( arg.charset ) script.charset = arg.charset script.src = path break } } return session } Libra.load({ target: 'fw', path: 'fa/css/font-awesome.min.css' }) Libra.load({ target: 'fw', path: 'bootstrap/bootstrap.min.css' }) Libra.load({ target: 'fw', path: 'Libra/css/libra.css' }) Libra.Cookie = { set: (cname, cvalue, hours = 0) => { let d = new Date() d.setTime( d.getTime() * 1.20 ) if( hours !== 0) d.setTime( d.getTime() + ( hours/**24*/ * 60 * 60 * 1000)) let expires = "; expires="+d.toUTCString() document.cookie = cname + "=" + cvalue /*+ "; "*/ + expires + '; SameSite=None; Secure' //document.cookie = cname +"=" + cvalue + ";expires=" + expires + ";domain=.libraonline.net;path=/"; }, get: cname => { let c, name = cname + "=", ca = document.cookie.split( ';' ) for( let i = 0; i < ca.length; i++ ){ c = ca[i] while ( c.charAt( 0 ) == ' ') c = c.substring( 1 ) if ( c.indexOf( name ) == 0) return c.substring( name.length, c.length ) } return "" } } Libra.file = { exist: urlToFile => { let xhr = new XMLHttpRequest(); xhr.open( 'HEAD', urlToFile, false ); xhr.send(); return xhr.status !== 404 } // ,load: arg => { // var fileref = document.createElement("link") // fileref.setAttribute("rel", "stylesheet") // fileref.setAttribute("type", "text/css") // // fileref.setAttribute("th:href", "/https://www.libraonline.net/fw/Libra/css/libra.css") // TODO set www al posto di dev // // fileref.setAttribute("href", "https://www.libraonline.net/fw/Libra/css/libra.css")// TODO set www al posto di dev // fileref.setAttribute("th:href", "http://www.libraonline.net/fw/Libra/css/libra.css") // TODO set www al posto di dev // fileref.setAttribute("href", "http://www.libraonline.net/fw/Libra/css/libra.css")// TODO set www al posto di dev // head.appendChild(fileref) // } } //document.cookie = "PHPSESSID=;Path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;"; //document.cookie='SameSite=None; Secure' //Libra.Cookie.set('SameSite','None Secure') Libra.config.user = { id: parseInt( Libra.Cookie.get( '_userId' ), 10 ) || 0 ,name: Libra.Cookie.get( '_userName' ) || 'anonymous' // ,lang:Libra.Cookie.get('_userLang') ,lang:Libra.Cookie.get('lang') || navigator.language.split('-')[0] ,CID: Libra.Cookie.get( 'CID' ) || '680b937cc998cfdf14138871fa3b5219' } Libra.Cookie.set( 'CID', Libra.config.user.CID ) // Libra.config.site.toolkit = 'classic' Libra.config.site.remoteIp = '18.226.28.197' // if( navigator.userAgent.match( /Android/i ) || navigator.userAgent.match( /webOS/i ) || navigator.userAgent.match( /iPhone/i ) || navigator.userAgent.match( /iPad/i ) || navigator.userAgent.match( /iPod/i ) || navigator.userAgent.match( /BlackBerry/i ) || navigator.userAgent.match( /Windows Phone/i )) Libra.config.site.toolkit = 'modern' Libra.config.client.hash = window.location.hash.slice( 1 ) Libra.config.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) /* let script = document.createElement('script') let prior = document.getElementsByTagName('script')[0] // script.async = true script.async = false // script.sync = true prior.parentNode.insertBefore(script, prior) script.src="http://www.libraonline.net/Libra/lib/"+(Libra.config.site.develop?'server':'client')+"/boot.php?Libra="+JSON.stringify(Libra);// TODO cambiare il link to www al posto di dev */ let _bootFrom = 'client' Libra.config.init={initTab:["initNS", "initLang", "initDom","initTemplate", "initClass", "initAlias", "initNw", "initDd", "initOriginBoot", "initUser", "initX", "initHash","initCookieNotice", "initDone"]}; if(Libra.config.site.develop){ _bootFrom='server' Libra.config.init={initTab:["initNS", "initLang", "initDom","initTemplate", "initClass", "initAlias", "initNw", "initDd", "initUser", "initX","initHash","initCookieNotice", "initDone"]}; } Libra.load({ target: 'virtual', path: "lib/" + _bootFrom + "/boot.php?Libra=" + JSON.stringify( Libra )}) /*if(Libra.config.site.dedicatedNamespace) */ // script.src="https://www.libraonline.net/Libra/lib/server/boot.php?Libra="+JSON.stringify(Libra);// TODO cambiare il link to www al posto di dev // if(Libra.config.site.develop)console.log('boot:1:get DB',Libra.config.site.develop) // else console.log('boot:1:get compiled',Libra.config.site.develop) //Delete functions before stringify // Libra.data.network.asyncMode = 'sync' // Libra.load({ target: 'origin', path: 'app.php' }) // let script1 = document.createElement('script') // console.log('ss',script1,script1.src) // let prior1 = document.getElementsByTagName('script')[0] // script.async = true // script1.async = false // script1.sync = true // prior1.parentNode.insertBefore(script1, prior1) // script1.src="http://tracon.it/omar/app.php'; // else script.src="https://www.libraonline.net/Libra/lib/server/LibraBoot.min.php?Libra="+JSON.stringify(Libra);// TODO cambiare il link to www al posto di dev // _libra={'path':'object://js.Libra.BootLoader.boot'}& // script.onload=function(){Libra.BootLoader.boot()} // script.charset="iso-8859-1" /* Note, don't forget to define charset. Either for the script itself: Or for the whole page: */ // TODO tolto x mergeConfig script.onload=()=>Libra.Init.continue() // navigator:{ // appCodeName:navigator.appCodeName // ,appName:navigator.appName // ,appVersion:navigator.appVersion // ,cookieEnabled:navigator.cookieEnabled // ,language:navigator.language // ,platform:navigator.platform // ,product:navigator.product // ,productSub:navigator.productSub // ,userAgent:navigator.userAgent // ,vendor:navigator.vendor // ,vendorSub:navigator.vendorSub // }