Files
Facilitor/APPL/FAC/Facilitor.asp
Jos Groot Lipman 5fcdd475e6 FSN#41669 Basic Auth en FSN#41668 aanzet
svn path=/Website/trunk/; revision=35003
2017-08-17 21:03:42 +00:00

655 lines
25 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: Facilitor.asp
=============== FACILITOR 5i MAIN ENTRY POINT =============
*/
%>
<!--#include file="../Shared/common.inc"-->
<!--#include file="../shared/iface.inc"-->
<!--#include file="fac_menu.inc" -->
<!--#include file="header.inc" -->
<!--#include file="../aut/login.inc" -->
<!--#include file="../Shared/json2.js" -->
<!-- #include file="../fac/fac_nieuws_forum.inc" -->
<%
// Als we hier komen hebben we gegarandeerd een user_key > 0
if (user.isGroupedUser() || Session("login_by_fallback"))
{
doLogoff();
shared.simpel_page(L("lcl_no_auth"));
}
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["jquery-ui.js"]}); // css voor header.asp
var noMenu = false; // option: do not show a menu
var noHeader = false;// option: do not show a header
var noTabs = false; // option: do not do tabs
// Logging option: for internal debugging purposes, bitcoded
// IHateTabs option: do not use our internal tabmanager
// Jumpto option: for deeplinking, uses an alternate body
// Login option: to impersonate a system user
if (Request.QueryString("noMenu").Count>0) noMenu = true;
if (Request.QueryString("noHeader").Count>0) noHeader = true;
if (Request.QueryString("IHateTabs").Count>0) noTabs = true;
// start conversie user_options naar fac_menu
var autoopen = user.options("autoopen") || [];
if (autoopen.length)
{
// __Log("Conversie user_options naar fac_menu");
// in database kopieren
for (i=0; i < autoopen.length; i++)
{
open_tab = autoopen[i];
var sql = "INSERT INTO fac_menu"
+ " ( fac_menu_altlabel"
+ " , fac_menu_alturl"
+ " , fac_menu_altgroep"
+ " , fac_menu_filter"
+ " , prs_perslid_key"
+ " , fac_menu_volgnr"
+ " ) VALUES"
+ " (" + safe.quoted_sql(open_tab.t)
+ " ," + safe.quoted_sql(open_tab.u)
+ " ,5"
+ " ," + safe.quoted_sql(open_tab.f)
+ " ," + user_key
+ " ,(SELECT 10 + COALESCE(MAX(fac_menu_volgnr), 0)"
+ " FROM fac_menu"
+ " WHERE prs_perslid_key = " + user_key
+ ")"
+ " )";
Oracle.Execute(sql, true);
}
// in prs wissen
user.options("autoopen", null);
}
// einde conversie user_options naar fac_menu
__Log("Welcome.asp expired?");
var sql = "DELETE FROM fac_menu"
+ " WHERE fac_menu_altgroep = 5"
+ " AND fac_menu_alturl = " + safe.quoted_sql(S("fac_firstlogin_url"))
+ " AND prs_perslid_key = " + user_key
+ " AND fac_menu_aanmaak < SYSDATE - " + S("fac_firstlogin_expire");
Oracle.Execute(sql, true);
// autoopen ophalen uit database
var autoopen = [];
var sql = "SELECT fac_menu_altlabel"
+ " , fac_menu_alturl"
+ " , fac_menu_filter"
+ " FROM fac_menu"
+ " WHERE fac_menu_altgroep = 5"
+ " AND prs_perslid_key = " + user_key
+ " ORDER BY fac_menu_volgnr";
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
var menu_tab = { u: oRs("fac_menu_alturl").Value || "",
t: oRs("fac_menu_altlabel").Value || "",
f: oRs("fac_menu_filter").Value || ""
};
if (menu_tab.u == S("fac_firstlogin_url"))
menu_tab.activate = true;
autoopen.push(menu_tab);
oRs.MoveNext();
}
oRs.Close();
// URL param jumpto can be set like:
// http://facws001/trunk/default.asp?jumpto=visitors/register_input.asp
if (Request.QueryString("Jumpto").Count>0) // Remember it
Session("FirstPage")=''+Request.QueryString("Jumpto")
if (Session("FirstPage") && typeof(Session("FirstPage"))!="undefined" )
{ // Deeplinking
autoopen = [{ u: Session("FirstPage"), activate: true, nopin: true }]; // de standaaard autoopen dan niet meer
}
Session.Contents.Remove("FirstPage"); // zeker weg
if (autoopen.length == 0 || !noTabs)
{
if (S("widgetportal") == 1)
firstPage = "appl/fac/fac_widgetspage.asp?wgrp=myfacilitor"
else
firstPage = "appl/fac/myfacilitor.asp";
autoopen.unshift({ u: firstPage, t: L("lcl_body_portal"), noclose: true, nopin: true, activate: true });
}
if (device.test(device.isTouch)) { %>
<html>
<% } else { %>
<html style='overflow:hidden'>
<% } %>
<head>
<%
FCLTHeader.Generate()
// If we think the user uses an unsupported browser, we warn the user.
// Note: this check is informative only, the user could continue despite the issupported browser (like IE6)
if (!device.test(device.isSupported) && S("checkBrowser")==1) {
%>
<script type="text/javascript">
FcltMgr.alert('<%=safe.jsstring(L("lcl_invalid_browser") + "\n[" + Request.ServerVariables("HTTP_USER_AGENT") + "]")%>');
</script>
<%
}
%><link rel="shortcut icon" type="image/x-icon" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/favicon.ico" />
<link rel="apple-touch-icon" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-60@2x.png" />
<link rel="apple-touch-icon" sizes="144x144" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-76@2x.png" />
<link rel="apple-touch-icon" sizes="180x180" href="<%= rooturl + "/" + S("fac_favicon_folder") %>/Icon-60@3x.png" />
<%
if (device.test(device.isTouch))
{
noTabs = true;
noHeader = true;
noMenu = true;
}
%>
<script type="text/javascript">
var menuHeaderHTML = "";
function RefreshFacilitor()
{
FcltMgr.alert("<%=L("lcl_session_expired")%>");
window.location.href="<%=rooturl%>/default.asp?fac_id=<%=customerId%>";
}
function myResize(animated)
{
var menuIsHidden = $('div#menudivider').hasClass('dividerclosed');
var hasNoHeader = $("#menutabs>.ui-tabs-nav").hasClass("noToggle");
var marge = 5.27; // $("#maintabs").innerWidth() - $("#maintabs").width(); and $('#menutabs').height() - $('#menutabs').outerHeight()
var duration = animated ? 300 : 0;
var animParams = { queue: false, duration: duration }
if ($("#menutabs").length)
{
// Bepaal de breedte van de individuele tabjes
var ww = menuIsHidden ? 36 : 256;
var divLeft = ww + 5;
var newWidth = $(window).width() - divLeft - 15;
$("#maintabs").animate({ left: divLeft + 3 }, animParams);
$("#maintabs").animate({ width: newWidth + marge }, animParams);
$("#menudivider").animate({ left: divLeft }, animParams);
// $("#menutabs").animate({ width: ww }, animParams);
// $("#menutabs").width(ww); // to prevent incorrect context stacking of ui-tabs-submenu // not necessary though?
}
else
{
$("#maintabs").css("left", "0px");
$("#maintabs").width("100%");
}
var divTop = $("#frheader").is(":visible")?$("#frheader").height():0;
var newTop = divTop + 3;
var newHeight = $(window).height() - divTop - 3;
var tabsHeaderHeight = (menuIsHidden || hasNoHeader) ? 0 : 33; // $("#menutabs>.ui-tabs-nav").outerHeight();
var contentHeight = newHeight - marge - (menuIsHidden ? 0 : 30) - tabsHeaderHeight;
$("#topdivider").animate({ top: divTop }, animParams);
$("#headtoggler").animate({ left: ($(window).width() - 23) }, animParams);
$("#maintabs,#menutabs,#menudivider").animate({ top: newTop }, animParams);
$("#menutabs").animate({ height: (newHeight - marge) }, animParams);
$("#maintabs").animate({ height: (newHeight - marge) }, animParams);
$("#menutabs .ui-layout-content").css("overflow", (menuIsHidden ? "hidden" : "auto")).animate({ height: contentHeight }, animParams);
$("#menutoggler").animate({ top: (newHeight - 25) }, animParams);
$("#menudivider").animate({ height: newHeight }, animParams);
FcltMgr._pageManager._timedResizeActiveTab();
}
function dropDown(action) {
if (action == "hide")
$("div.ui-tabs-submenu").fadeOut("fast");
else
{
var content = $(this).find("ul").clone(true, true);
var submenuHeader = $(this).find("span.menukop").html();
if (submenuHeader && submenuHeader != "")
content.prepend("<li class=\"submenuHeader mks\">" + submenuHeader + "</li>");
$("div.ui-tabs-submenu").html(content)
.css('left', $(this).position().left + 36 + "px")
.css('top', $(this).position().top + "px")
.css("z-index", 12)
.fadeIn("fast");
$("div.ui-tabs-submenu ul").css("display", "block")
.addClass("menuDropDown");
$("div.ui-tabs-submenu ul li").css("display", "list-item");
if ($(this).position().top + $('div.ui-tabs-submenu').outerHeight() >
$(".ui-layout-content").position().top + $(".ui-layout-content").outerHeight()) // if (div.dropdownmenu valt onder uit beeld) //
$("div.ui-tabs-submenu").css('top', ($(".ui-layout-content").position().top + // //
$(".ui-layout-content").outerHeight() - // dan 'submenu.bottom = window.bottom' //
$('div.ui-tabs-submenu').outerHeight())); // //
}
}
var checkRelated = function(e) {
if (!e.relatedTarget) return false;
var related = e.relatedTarget.className;
var relatedArray = ['mk', 'mi', 'micon', 'menuDropDown', 'submenuHeader'];
for (var i = 0; i < relatedArray.length; i++)
if (related.indexOf(relatedArray[i]) != -1) return true;
return false;
}
function menuToggles(open)
{
var visibility = open ? "visible" : "hidden";
var padding = open ? ".2em .2em 0" : "0px";
$('#menutabs').find("li.mklogo").css("visibility", visibility);
$('#menutabs').find("li.mi").toggle();
$(".menuSpacer").toggle();
$('#menutabs .ui-layout-content').find("span.menukop").css("visibility", visibility);
if (!$("#menutabs>.ui-tabs-nav").hasClass("noToggle"))
$("#menutabs>.ui-tabs-nav").toggle();
}
function toggleMenu(elm, noAnim)
{
$(elm).toggleClass('dividerclosed');
var menuIsClosed = $('div#menudivider').hasClass('dividerclosed');
var handler = function() {
dropDown("hide");
};
if (menuIsClosed)
{
if ($("#menufilter").val())
$("#menufilter").val("").trigger("keyup");
localStorage.setItem("menuCollapsed", "1");
$('.ui-tabs-panel ul li.mk')
.on('mouseenter', dropDown);
$('.ui-tabs-panel ul li.mk, .ui-tabs-submenu, .micon, .menuDropDown')
.on('mouseleave', function(e) {
if (checkRelated(e)) return;
dropDown("hide");
});
$('.ui-tabs-submenu, .menuDropDown, li.mi')
.on('click.nameSpace', handler);
window.myResize(!noAnim);
setTimeout(menuToggles , !noAnim ? 300 : 0);
$('#menutabs').children("input").toggle();
}
else
{
localStorage.setItem("menuCollapsed", "0");
$('.ui-tabs-panel ul li.mk')
.off('mouseenter', dropDown);
$('.ui-tabs-panel ul li.mk, .ui-tabs-submenu, .micon, .menuDropDown')
.off('mouseleave', function(e) {
if (checkRelated(e)) return;
dropDown("hide");
});
$('.ui-tabs-submenu, .menuDropDown, li.mi')
.off('click.nameSpace');
window.myResize(true);
menuToggles(true);
setTimeout(function() { $('#menutabs').children("input").toggle().focus() } , 300);
}
$(".nomicon").each(function() {
$(this).text(menuIsClosed ? $(this).siblings(".menukop").text().substr(0, 1) : " ");
});
}
jQuery(document).ready(function() {
FcltMgr.setData("expired", RefreshFacilitor);
$('#menutabs').click(function () {
$("#menufilter").focus();
} );
$("#menufilter").keyup(function(e) {
if (e.which == 27) {
$("#menufilter").val("");
}
});
$('#menutabs').dblclick(function () {
toggleMenu($('div#menudivider'))
} );
// voegt onClick toe aan portaal iconen
$("div.portalmenukop.withimg").children().not("ul").each(function() {
$(this).on("click", function() {
$(this).siblings("ul").find("li").trigger("click");
}).css("cursor", "pointer");
});
<% if (!noTabs) { %>
FcltMgr.HostTabs("maintabs");
window.onbeforeunload = /*FcltMgr.*/confirmExit;
window.onunload = /*FcltMgr.*/forcedExit;
function confirmExit()
{
var anyHot = false;
var i;
for (i = FcltMgr._pageManager._$tabshost.find( ".ui-tabs-nav li" ).length-1; i > 0 && !anyHot; i--)
{
if (FcltMgr._pageManager._panelHot(i))
anyHot = true;
}
if (anyHot)
return L("lcl_shared_closeandignore");
else
return;
}
function forcedExit()
{
var i;
for (i = FcltMgr._pageManager._$tabshost.find( ".ui-tabs-nav li" ).length-1; i > 0; i--)
{
var hotwnd = FcltMgr._pageManager._panelHot(i);
if (hotwnd && hotwnd.onCloseHot)
hotwnd.onCloseHot();
}
}
$(window).resize(function() { myResize() });
window.setTimeout("myResize()", 10);
<% }
extra="";
if (__Logging > 0 && this.Oracle)
{
var extra = " {"+custpath.substr(custpath.length-4)+':'+Oracle.RealConnection.Properties("User Name")+'@'+Oracle.RealConnection.Properties("Data source") + "}"
extra = extra.toUpperCase();
}
%>
window.parent.document.title = "<%=L("lcl_facilitor_ie_title")%><%=extra%>";
<%
var anyactivate = false;
if (!noTabs)
{
for (var menu in autoopen)
{
var pg = autoopen[menu]; // TODO: minder lelijk de ../../ er af.
if (pg.u.substr(0,6) == "../../")
pg.u = pg.u.substr(6);
if (pg.f)
pg.u += (pg.u.indexOf("?")>0?"&":"?") + "fcltfilters=" + safe.url(pg.f);
if (pg.activate)
anyactivate = true;
//var params =
%>FcltMgr.openDetail("<%=safe.jsstring(pg.u)%>",
"<%=safe.jsstring(pg.t)%>",
{ noactivate: <%=pg.activate?0:1%>,
noclose: <%=pg.noclose?1:0%>,
delayload: true,
showpin: <%=pg.nopin?0:1%> });<%
}
}
%>
$("#menutabs").tabs();
var selectedTabId = localStorage.getItem("selectedMenuTab");
if (selectedTabId === null)
selectedTabId = ($("#PersFAC").length && $("#ProfFAC").length) ? 1 : 0;
$("#menutabs").tabs('option', 'active', selectedTabId);
$("#menutabs").tabs({
beforeActivate:
function ( event, ui )
{
if ($("#menufilter").val()) // reset filter bij tabwissel
$("#menufilter").val("").trigger("keyup");
}
});
<% if (!noTabs && S("menu_tab_toggles_portalmenu")==1) {
var menuitems = fillMenuArray(true); // portalOnly
%>
if (selectedTabId == 0) // Zelfservice?
{
<% if (menuitems && menuitems[0]?1:0) // filled? Als er al een andere actief is gemaakt doen wij het niet meer
{ %>
FcltMgr.openDetail("appl/fac/fac_portal_menu.asp?groep=0",
{ titel: $("#menutabs .ui-tabs-active").text(), reuse: true, noactivate: <%=anyactivate?1:0%> });
<% } %>
}
$("#menutabs").tabs({
activate:
function(event, ui)
{
var selectedTabId = $("#menutabs").tabs("option", "active");
localStorage.setItem("selectedMenuTab", selectedTabId);
var filled = [ <%=menuitems[0]?1:0%>,<%=menuitems[1]?1:0%>,<%=menuitems[2]?1:0%> ];
var groep = { "PersFAC": 0,
"ProfFAC": 1,
"MgtFAC": 2
}[ui.newPanel[0].id];
if (filled[groep] == 1)
{
FcltMgr.openDetail("appl/fac/fac_portal_menu.asp?groep=" + groep, { titel: ui.newTab.text(), reuse: true });
}
}
});
<% } %>
$("li.mk").click(function()
{
$($(this).children()[0]).nextAll("ul").toggle();
// Probeer het net geopende blok in beeld te brengen
var top = $(this).position().top - $(this).closest("div").position().top;
var bottom = top + $(this).height();
var div = $(this).closest("div.ui-layout-content");
if (bottom > div.height() + div.scrollTop())
div.scrollTop(Math.min(top, bottom - div.height() + 5));
});
<% if (!device.test(device.isTouch)) { %>
$("#menutabs").filterMenuByText("#menufilter");
$("#menufilter").focus();
<% } %>
if (!$("#menutabs>.ui-tabs-nav").hasClass("noToggle"))
{
var hoogte = $("#menutabs>.ui-tabs-nav").outerHeight();
$("#menutabs>.ui-tabs-nav").before("<div class='menuSpacer' style='height: " + hoogte + "px'>&nbsp;</div>");
$(".menuSpacer").toggle();
}
var menuCollapsed = localStorage.getItem("menuCollapsed");
if (menuCollapsed) // if menuCollapsed is set, use it
{
if (menuCollapsed == "1")
toggleMenu($('div#menudivider'), true);
}
else // if menuCollapsed is not set, use S("menu_start_open")
{
<% if (!S("menu_start_open")) { %>
toggleMenu($('div#menudivider'), true);
<% } %>
}
}); // jQuery.ready
<% if (__Logging & 2) { %>
FcltMgr.windowopen("./fac_StreamFile.asp?logger=0", "logger<%=customerId%>");
self.focus();
<% }
if (S("NotifyMessageInterval")>0)
{ %>
function process_message(data)
{
if (data.msg)
FcltMgr.alert(data.msg);
if (data.nextCheck > 0)
window.setTimeout("showNotification()", data.nextCheck);
}
function showNotification()
{
$.getJSON("NotifyMessage.asp", process_message);
}
// Uitstellen opdat andere onderdelen van de voorpagina
// een fractie sneller in beeld komen
window.setTimeout("showNotification()", 1000);
<% } %>
function menu(evt, item, regel, menu_key) // E<>n menuitem
{
FcltMgr.stopPropagation(evt);
if (menu_key > 0)
{
item += item.indexOf("?") > -1?"&":"?";
item += "from_menu_key=" + menu_key;
}
FcltMgr.openDetail(item, regel.textContent||regel.innerText);
}
</script>
</head>
<%
if (!device.test(device.isTouch)) { %>
<body>
<form name="u2" action="../aut/LogOff.asp" method="post" onSubmit="logOff();">
<% IFACE.FORM_END(); %>
</form>
<% if (!noHeader) { %>
<div id="frheader">
<% generateHeader(); %>
</div>
<div id="topdivider" class='ui-layout-resizer' onclick="$('#frheader').toggle();$(this).toggleClass('dividerclosed');window.myResize(true)">
<div id="headtoggler" class='toggler' title='<%=L("lcl_toggler")%>'></div>
</div>
<script>
jQuery.fn.filterMenuByText = function(textbox, selectSingleMatch) {
return this.each(function() {
var menu = this;
var lastActive = null;
$(textbox).bind('change keyup', function() {
if (!lastActive)
lastActive = $("#menutabs").find("div.ui-tabs-panel:visible").attr("id");
$(menu).find("li.mk,li.mklogo").show(); // Alle koppen zichtbaar
$(menu).find("li.mk ul").show(); // Alle koppen open
$(menu).find("div.filtermenukop").show(); // En vervangen door eigen filterkoppen
$(menu).find("div.ui-tabs-panel").show(); // Alle panels tonen
var search = $.trim($(this).val()).toLowerCase();
if (!search)
{
$(menu).find("li.mk ul").hide(); // Alle koppen dicht
$(menu).find("div.ui-tabs-panel").each(function () {
if ($("li.mk ul", this).length <= <%=S("menu_collapse_threshold")%>)
$("li.mk ul", this).show() // Maar tabjes met weinig koppen zijn doorgaans default open
});
$(menu).find("li.mi").show();
$(menu).find("div.filtermenukop").hide();
$(menu).find("div.ui-tabs-panel").hide(); // Alle panels verbergen
$("#" + lastActive).show() // maar de actieve weer terug
lastActive = null;
return;
}
// Nu het echte zoeken
$(menu).find("li.mi").each(function(){
var text = $(this).text().toLowerCase();
var moretext = ($(this).prop('title')||"").toLowerCase();
$(this).toggle(text.indexOf(search) > -1 || moretext.indexOf(search) > -1);
});
// Koppen hidden waar niets over is
$(menu).find("li.mk,li.mklogo").each(function(){
// mist inactieve tabs var cnt=$(this).find("li.mi:visible").length;
var cnt = $(this).find("li.mi").filter(function() {
return $(this).css('display') !== 'none';
}).length;
$(this).toggle(cnt > 0);
});
return;
});
});
};
</script>
<% }
if (S("PerformInterval")>0 && user.checkAutorisation("WEB_PERMON", true)) { %>
<iframe id="bgPerformance" src="../Fac/PerformanceTester.asp" style="display:none"><!--het frame voor performancemetingen--></iframe>
<% }
if (!noMenu) {
%>
<div id="menutabs">
<% generateMenu(1); %>
<div class="ui-tabs-submenu"><ul class="menuDropDown" style="display: none"></ul></div>
</div>
<div id="menudivider" class='ui-layout-resizer' onclick='toggleMenu(this)'>
<div id="menutoggler" class='toggler' title='<%=L("lcl_toggler")%>'></div>
</div><%
}
%> <div id="maintabs">
<% if (noTabs) { /* de onload is voor FireFox */ %>
<iframe src="../../<%=safe.htmlattr(autoopen[0].u)%>" name="firstpage"
style='min-height: 100%;'
width="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto"
onload="$(this).height(window.innerHeight-2)"></iframe>
<% } else { %>
<span class="tabcloseall"
title="<%=L("lcl_close_all_tabs")%>"
onClick="FcltMgr.closeAll()"><%=I("fa-window-close")%></span>
<span class="pincurrenttab"
title="<%=L("lcl_current_tab")%>"
onClick="FcltMgr.saveTab()"><%=I("fa-thumb-tack")%></span>
<ul><!--hier komen de tabs--></ul>
<% } %>
</div>
</body>
<% } // if (!isTouch)
else { //if (isTouch)
%>
<body class="touch">
<div id="touchmenu">
<% generateMenu(2); %>
</div>
<% generateHeaderFunctions({touch: true}); %>
<script>
$("#touchmenu").tabs();
var n = $("#touchmenu ul.ui-tabs-nav li").length;
var w = (96/n);
$("#touchmenu ul.ui-tabs-nav li").width(w+'%');
</script>
</body>
<% } // if (isTouch)
%>
</html>