<% /* $Revision$ $Id$ File: shared/header.inc Description: Generieke serverside header functie. Stelt de HTML header samen op basis van de meegegeven eisen. Parameters: params: title outputmode (default 0=screen) plugins [] js [] Context: Eenmalig per ASP, automatisch via shared.inc Result: Note: Gebruikt veel de globale rooturl die tegenwoordig autodetect is Deprecated aanroepen als volgt kunnen gewoon verwijderd worden FCLTHeader.Generate({ root: "../../appl/" }); FCLTHeader.Set({root: "../../../appl/"}); */ /************************************************************/ // Huidige jQuery versie: 3.6.0 // Huidige jQuery versie gebruikt voor mobile: 2.2.4 (!= jquery.mobile versie) // (nog) geen nieuwere versie ivm incompatibiliteit tussen laatste stable jQuery-mobile (1.4.5) & jQuery 3.x+ // Huidige jQuery-ui versie: 1.13.0 if (typeof FCLTHeader != "undefined") { Response.Write("common.inc is indirect dubbel included. Dat mag niet.") Response.End; } FCLTHeader = { filters: null, advfilters: null, _plugins : [], _params: { title: getQParam("_titel_", null), outputmode: 0, plugins: [], js: [], css: [], extrahead: [] }, _myPush: function (arr, itm) { var j; for (j = 0; j < arr.length; j++) { if (typeof itm == "string" && arr[j].toLowerCase() == itm.toLowerCase() || arr[j] == itm) return; // hij is er al } arr.push(itm); }, Title: function(title) { // TODO: Titel van het tabje zetten. FCLTHeader._params.title = title; }, Set: function(params) { var i; for (i in params) FCLTHeader._params[i] = params[i]; }, Requires: function(params) { if (JSON_Result) __SafeLog("JSON_Result staat aan, dan is FCLTHeader.Requires erg onlogisch."); if (!params) params = {}; var i, j; // 'Explodeer' de plugins naar onderdelen if (params.plugins) for (i = 0; i < params.plugins.length; i++) { this._plugins[params.plugins[i]] = true; var i; switch (params.plugins[i]) { case "bootstrap": FCLTHeader.Requires({js: [rooturl + "/appl/localscripts/bootstrap/js/bootstrap.min.js"], css: [rooturl + "/appl/localscripts/bootstrap/css/bootstrap.min.css"]}); case "masonry": FCLTHeader.Requires({js: [rooturl + "/appl/localscripts/masonry/masonry.min.js"]}); case "jQuery": FCLTHeader.Requires({js: ["jQuery.js", "FcltJquery.js"]}); FCLTHeader.Requires({js: ["jquery.toast.min.js"], css: [rooturl + "/appl/localscripts/jquery.toast.min.css"]}); break; case "suggest": FCLTHeader.Requires({js: [rooturl + "/appl/shared/suggest/suggest.js"], css: [rooturl + "/appl/shared/suggest/suggest.css"]}); break; case "kenmerk": FCLTHeader.Requires({js: ["jquery-ui.js", "modal_kenmerken.js", "date.js", rooturl + "/appl/shared/kenmerk_js.asp", "jquery.timepicker-table.js"], css: ["timePicker-table.css"]}); break; case "modernizr": FCLTHeader.Requires({js: [rooturl + "/appl/pda/modernizr.js"]}); break; default: _AiAi("INTERNAL_ERROR_PLUGIN_"+params.plugins[i]+"_IS_ONBEKEND"); } } if (params.js) for (i = 0; i < params.js.length; i++) { if (params.js[i].toLowerCase() != "fcltmgr.js") FCLTHeader._myPush(FCLTHeader._params.js, params.js[i]); }; if (params.css) for (i = 0; i < params.css.length; i++) { FCLTHeader._myPush(FCLTHeader._params.css, params.css[i]); }; if (params.extrahead) FCLTHeader._myPush(FCLTHeader._params.extrahead, params.extrahead); }, _fso:Server.CreateObject("Scripting.FileSystemObject"), AddTimeStamp: function(fPath, isOptional) { fPath = fPath.toLowerCase(); // canonical can improve caching if (fPath.indexOf(rooturl.toLowerCase()) == 0) fPath = rooturl + fPath.substring(rooturl.length); // Afblijven van rooturl-deel, cookies verdwijnen anders try { var f = this._fso.GetFile(Server.MapPath(fPath)); var ts=new Date(f.DateLastModified); return fPath + "?" + Math.floor(ts.getTime()/1000); } catch(e) { if (isOptional) return false; // niet erg Response.Write("\">

Internal error: kan bestand " + fPath + " niet vinden/openen

"); Response.Write(e.description); Response.End; } }, AddStylesheet: function(fPath, isOptional) { var timedpath = this.AddTimeStamp(fPath, isOptional); if (timedpath) { %> <% } }, _templateCss: rooturl + "/cache/" + customerId + ".css", _mobileTemplateCss: rooturl + "/cache/m" + customerId + ".css", _webAppManifest: rooturl + "/cache/mf" + customerId + ".json", // params // cssmode: 0: is normale customer css // 1: is default css // 2: concept css uit params.csstemplate Generate: function (params) { if (!params) params = {}; if (params.outputmode == 2 || params.outputmode == 6) // Excel (incl. flex) { if (S("excel_mode") == 1) { params.outputmode = 4; } else { Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader ("content-disposition", "inline; filename=facilitor.xls"); %> <% return; // Excel is heel kaal } } if (params.outputmode == 4) // csv { Response.ContentType = "text.csv"; Response.AddHeader ("content-disposition", "attachment; filename=facilitor.csv"); return; // csv is heel kaal } if (params.mobile) // mobile { var themeColor = S("csstemplate")["theme_color"] || this.defaultTemplate["theme_color"]; %> <% } %> <%=S("http_meta_head")%> <% // FSN#14103 Voorkom back-button problemen // user_lang en rooturl resp. voor date.js en FcltMgr.js %> "); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/fontawesome.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/thin.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/light.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/regular.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/solid.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/brands.min.css"); Response.Write("" + L("lcl_shared_pin_removed_error") + ""); Response.End; } else { this.filters = foRs("fac_menu_filter").Value || ""; this.advfilters = foRs("fac_menu_advfilter").Value || ""; } foRs.Close(); } if (this.filters) { Response.Write("\nvar fcltfilters = '" + safe.jsstring(this.filters) + "';"); } if (this.advfilters) { Response.Write("\nvar advfilters = '" + safe.jsstring(this.advfilters) + "';"); } if (typeof placeholder_icons !== "undefined") /* uit icons.inc, is aanwezig indien iface.inc */ { /* Stel dan de placeholder iconen ook clientside beschikbaar, voor iface.js */ %> var placeholder_icons = { <% for (i in placeholder_icons) { %> "<%=i%>": "<%=placeholder_icons[i]%>", <% } /* Trailing comma in object literals is allowed in supported browsers */ %> }; <% } %> <% if (FCLTHeader._params.title) { %><%=safe.html(FCLTHeader._params.title)%><% } // FcltMgr.js altijd %> <% FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/fontawesome.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/thin.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/light.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/regular.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/solid.min.css"); FCLTHeader.AddStylesheet(rooturl + "/appl/fontawesome/css/brands.min.css"); if (params.outputmode == 1 || params.outputmode == 5) { // Printen is vrij kaal FCLTHeader.AddStylesheet(rooturl+"/appl/shared/default-print.css"); if (getQParam('autosortby', "") || getFParam('autosortby', "")) // Deze zijn wel nodig bij printen { %><% %><% %><% %><% %><% } return; } var theme = // S("cssfordesktop") || "/appl/Localscripts/theme/jquery-ui.min.css"; FCLTHeader.AddStylesheet(rooturl + theme); for (var i = 0; i < FCLTHeader._params.css.length; i++) { var pad = FCLTHeader._params.css[i]; if (pad.indexOf("/") == -1) pad = rooturl+"/appl/shared/" + pad; FCLTHeader.AddStylesheet(pad); } if (params.mobile) { this.testTemplateCssRefresh(params.mobile); if (!this._fso.FileExists(Server.MapPath(this._mobileTemplateCss))) this.generateTemplateCss(undefined, undefined, params.mobile); FCLTHeader.AddStylesheet(getCustCss("m"), true); } else { this.testTemplateCssRefresh(); if (!this._fso.FileExists(Server.MapPath(this._templateCss))) this.generateTemplateCss(); // 0=normaal, 1=kale default, 2=concept var previewfile = rooturl + "/cache/" + customerId + "_concept.css"; switch (params.cssmode) { case 2: this.generateTemplateCss(params.csstemplate, previewfile); FCLTHeader.AddStylesheet(previewfile); break case 1: this.generateTemplateCss(FCLTHeader.defaultTemplate, previewfile); FCLTHeader.AddStylesheet(previewfile); break default: FCLTHeader.AddStylesheet(this._templateCss, true); // Template, optional } if (Session("interface") == "touch") FCLTHeader.AddStylesheet(rooturl+"/appl/shared/touch.css"); if (Session("interface") == "mobile") FCLTHeader.AddStylesheet(FCLTHeader._mobileTemplateCss, true); if ((params.cssmode || 0) == 0) { FCLTHeader.AddStylesheet(getCustCss(), true); // optional FCLTHeader.AddStylesheet(custpath + "/custenv.css", true); // optional, handig voor testomgevingen } } for (var i = 0; i < FCLTHeader._params.js.length; i++) { var pad = FCLTHeader._params.js[i]; if (__Logging == 0) { if (pad.toLowerCase() == "jquery.js") { if (params.mobile) pad = "jquerymob.min.js"; else pad = "jquery.min.js"; } if (pad.toLowerCase() == "jquery-ui.js") pad = "jquery-ui.min.js"; } else { if (pad.toLowerCase() == "jquery.js") { if (params.mobile) pad = "jquerymob.js"; else pad = "jquery.js"; } if (pad.toLowerCase() == "jquery-ui.js") pad = "jquery-ui.js"; } if (pad.indexOf("/") == -1) pad = rooturl+"/appl/LocalScripts/" + pad; %> <% } for (var i = 0; i < FCLTHeader._params.extrahead.length; i++) { FCLTHeader._params.extrahead[i](); } }, defaultTemplate : // De defaults { fontfamily: "fclt-skolar-sans, Verdana, Tahoma, Arial, Helvetica, sans-serif", fontfamily_alt: "Tahoma, Arial, Helvetica, sans-serif", fontfamily_titles: "fclt-skolar-sans, sans-serif", headerimage: "../appl/pictures/banner.png", loginbgimage: "../appl/pictures/loginbg.jpg", logincolor: "#A4B2C4", loginbackgroundcolor: "#CC5252", newsbgimage: "../appl/pictures/loginbg.jpg", newscolor: "#FFFFFF", portalmenubgimage: "../appl/pictures/loginbg.jpg", portalmenucardbgimage: "../appl/pictures/portalcardbg.jpg", portalbgimage: "../appl/pictures/framebodybg.jpg", framebgimage: "../appl/pictures/framebodybg.jpg", //"../appl/pictures/nobg.jpg", textcolor: "#343F4D", inputbackgroundcolor: "#EBEFFF", linkcolor: "#0237FF", linkhovercolor: "#F26522", requiredbordercolor: "#D50000", headerbackgroundcolor: "#FFFFFF", headercolor: "#666666", dividercolor: "#DDDDDD", portalkopcolor: "#FFFFFF", /* should fit the backgroundimage */ activetabbackgroundcolor: "#FCFCFC", activetabcolor: "#002C67", /* Aareon Ink Blue */ inactivetabbackgroundcolor: "#848A93", /* Urban Grey 50% */ inactivetabcolor: "#E6E8EA", buttonbackgroundcolor: "#E6E8EA", buttoncolor: "#002C67", /* default, emphasishigh*/ buttonhoverbackgroundcolor: "#DF742F", /* tussen rood en oranje */ buttonhovercolor: "#FFFFFF", buttonbackgroundcolormediumlow: "#F0F1F2", /* Urban Grey 10% */ buttoncolormediumlow: "#343F4D", /* emphasismedium, emphasislow */ frameheaderbackgroundcolor: "#F0F1F2", // voorstel deze te kleuren in relatie tot buttonbackgroundcolormediumlow frameheadercolor: "#343F4D", // voorstel deze te kleuren in relatie tot buttoncolormediumlow inlineactionbackgroundcolor: "#FFFFFF", inlineactioncolor: "#F26522", flexlabelbackgroundcolor: "transparent", flexlabelcolor: "#DF742F", listsubjectcolor: "#343F4D", /* textcolor. meldingonderwerp in de lijst */ menubackgroundcolor: "#F8F8F8", menucolor: "#002C67", menuiconcolor: "#002C67", // rather "#CC5252", but let's keep it compatible menukophoverbackgroundcolor: "#B6DFFA", menukophovercolor: "#0237FF", menuitembackgroundcolor: "#FFFFFF", menuitemcolor: "#000000", menuitemhoverbackgroundcolor: "#E6EFFA", menuitemhovercolor: "inherit", // kan dat niet gewoon? maaar wat dan? notesbackgroundcolor: "#F59D04", welcomebackgroundcolor: "#FFFFFF", // =backgroundcolor welcomecolor: "#DF742F", tableheaderbackgroundcolor: "#DF742F", tableheadercolor: "#FFFFFF", /* if mobile_enabled */ mobilebackgroundcolor: "#F7F7F7", /* er moet onderscheid met de inputs zijn vind ik */ mobiletextcolor: "#343F4D", mobilefooterbackgroundcolor: "inherit", mobilefootercolor: "inherit", mobileheaderimage: "../appl/pictures/mfbanner.png", mobileiconcolor: "inherit", mobileicontextcolor: "inherit", mobileiconbackgroundcolor: "#FAFAFA", mobilelistbackgroundcolor: "inherit", mobilelisttextcolor: "inherit", mobilelisttitlecolor: "inherit", mobilelistsubtitlecolor: "inherit" /* end if mobile_enabled */ }, // tpl en cssfile worden alleen gebruikt bij concept/preview, anders zijn ze leeg generateTemplateCss : function(tpl, cssfile, mobile) { if (!tpl && !cssfile && !mobile) // gewone generate dan mobile voor de volledigheid ook altijd this.generateTemplateCss(undefined, undefined, true); if (!this._fso.FolderExists(Server.MapPath(rooturl + "/cache/"))) { Response.Write("ERROR: Folder {0} does not exist on the Webserver".format(Server.MapPath(rooturl + "/CACHE"))); Response.Write("
Please create it and make sure IUSR user has modify permissions to this folder on the webserver (just like on TEMP)"); Response.End; } mobile = mobile || false; var templatecss = mobile ? this._mobileTemplateCss : this._templateCss; if (typeof tpl == "undefined") var custtemplate = S("csstemplate"); else var custtemplate = tpl; var outfname = Server.MapPath(cssfile || templatecss); __Log("Regenerating template {0}".format(outfname)); var inFile = this._fso.OpenTextFile(Server.MapPath(rooturl + (mobile ? "/appl/pda/default.csx" : "/appl/shared/default.csx"))); var inCss = inFile.ReadAll(); for (itm in this.defaultTemplate) // vervang alle bekende variabelen { var val = this.defaultTemplate[itm]; if (itm in custtemplate) val = custtemplate[itm]; var regexp = new RegExp("\\=\\="+itm+"\\=\\=", 'gi'); inCss = inCss.replace(regexp, val); } // http://stackoverflow.com/questions/5522733/removing-comments-in-javascript-using-ruby inCss = inCss.replace(/\/\*[^*]*\*+(?:[^*\/][^*]*\*+)*\//ig, ""); // Verwijder alle commentaar inCss = inCss.replace(/\n\s+/g, "\n"); // alle leading spaties schrappen inCss = inCss.replace(/\n\n/g, "\n"); // lege regels schrappen try { var outFile = this._fso.OpenTextFile(outfname, 2, true); // 2=write, true=create? } catch (e) { Response.Write("ERROR: Unable to write " + outfname + "
" + e.description); if (this._fso.FileExists(outfname)) Response.Write("
File owner: " + getFileOwner(outfname)); Response.Write("
Make sure " + getUserContext() + " user has modify permissions to this folder on the webserver"); Response.End; } outFile.WriteLine("/*********************************"); outFile.WriteLine(" * GENERATED FILE, DO NOT MODIFY *"); outFile.WriteLine(" *********************************/"); outFile.Write(inCss); if (S("csscust")) { outFile.WriteLine("\n\n/*********************"); outFile.WriteLine(" * Setting 'csscust' *"); outFile.WriteLine(" *********************/"); outFile.WriteLine(S("csscust")); } if (S("cssenvcust")) { outFile.WriteLine("\n\n/************************"); outFile.WriteLine(" * Setting 'cssenvcust' *"); outFile.WriteLine(" ************************/"); outFile.WriteLine(S("cssenvcust")); } __Log("Template file {0} has been generated.".format(outfname)); inFile.Close(); outFile.Close(); if (mobile) { var themeColor = S("csstemplate")["theme_color"] || this.defaultTemplate["theme_color"]; try { var outFile = this._fso.OpenTextFile(Server.MapPath(this._webAppManifest), 2, true); // 2=write, true=create? outFile.WriteLine('{ "theme_color": "' + themeColor + '", "name": "' + safe.jsstring(L("lcl_facilitor_ie_title")) + '", "display": "standalone", "scope": "' + rooturl + '/", "start_url": "' + rooturl+ '/" }'); outFile.Close(); } catch (e) { Response.Write("ERROR: Unable to write " + Server.MapPath(this._webAppManifest) + "
" + e.description); if (this._fso.FileExists(Server.MapPath(this._webAppManifest))) Response.Write("
File owner: " + getFileOwner(Server.MapPath(this._webAppManifest))); Response.Write("
Make sure " + getUserContext() + " user has modify permissions to this folder on the webserver"); Response.End; } } }, // Kijk of default.csx nieuwer is dan onze temp-css. Dan verversen testTemplateCssRefresh: function (mobile) { mobile = mobile || false; var templatecss = mobile ? this._mobileTemplateCss : this._templateCss; if (this._fso.FileExists(Server.MapPath(templatecss))) { var fcss = this._fso.GetFile(Server.MapPath(templatecss)); var tcss = new Date(fcss.DateLastModified); } else tcss = 0; var fcsx = this._fso.GetFile(Server.MapPath(rooturl + (mobile ? "/appl/pda/default.csx" : "/appl/shared/default.csx"))); var tcsx = new Date(fcsx.DateLastModified); var hinc = this._fso.GetFile(Server.MapPath(rooturl + "/appl/shared/header.inc")); var tinc = new Date(hinc.DateLastModified); if (tcsx > tcss || tinc > tcss) { __Log("{0} is older ({1}) than default.csx ({2}), refreshing it.".format(templatecss, toISODateTimeString(tcss, true), toISODateTimeString(tcsx, true))); this.generateTemplateCss(undefined, undefined, mobile); } } } %>