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'); /*console.log('qui',script,typeof script.type);script.type='text/javascript';*/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' ) || '7df9969a9087ebf87d55d0d5dec0ab91'
}
Libra.Cookie.set( 'CID', Libra.config.user.CID )
// Libra.config.site.toolkit = 'classic'
Libra.config.site.remoteIp = '18.216.130.199'
// 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.js.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
// }