5i verder

svn path=/Website/trunk/; revision=38
This commit is contained in:
Jos Groot Lipman
2009-11-03 15:57:42 +00:00
parent a6dcff525f
commit 9aee56c91d
51 changed files with 5179 additions and 5177 deletions

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<%
/* $Revision: 4 $
$Modtime: 23-10-09 17:38 $
/* $Revision: 5 $
$Modtime: 25-10-09 11:19 $
File:
Status:
@@ -133,7 +133,7 @@ BLOCK_START("algLoc1", "");
readonly: false
}
);
%>
</tr>
@@ -199,7 +199,7 @@ BLOCK_START("algLoc2", ""); %>
</tr>
<tr>
<td class="label"><label><%=lcl_estate_gebouw_bez%>:</label></td>
<td><input class="fldalgbez" type="checkbox" id="bld_bez" name="bld_bez" value="<%=bld_bez%>" <%= bld_bez==1 ? " checked " : "" %>></td>
<td><% CHECKBOX("fldalgbez", "bld_bez", bld_bez==1) %></td>
</tr>
<% BLOCK_END();
BLOCK_START("algFlex", lcl_alg_flexblok);
@@ -213,6 +213,6 @@ BLOCK_START("algFlex", lcl_alg_flexblok);
%>
</form>
<iframe src="../Shared/empty.html" name="hidFrameSubmit" style="display:none"></iframe>
</div>
</div>
</body>
</html>

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 3 $
$Modtime: 10/14/09 5:07p $
$Revision: 4 $
$Modtime: 30-10-09 10:36 $
SUBMIT-form
*/ %>
@@ -10,6 +10,7 @@
<!-- #include file="../Shared/escape.inc" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc"-->
<!-- #include file="../shared/date_sql.inc" -->
<% FCLTHeader.Requires({ plugins:["jQuery"],
js: []
@@ -17,25 +18,25 @@
<%
var bld_key = getQParamInt( "bld_key" );;
var fields = [ { dbs: "alg_locatie_key", typ: "key", frm: "locatiekey" },
{ dbs: "ALG_SRTGEBOUW_KEY", typ: "key", frm: "bld_srtkey" },
{ dbs: "ALG_GEBOUW_ACADKEY ", typ: "varchar", frm: "bld_acadkey" },
{ dbs: "ALG_GEBOUW_NAAM", typ: "varchar", frm: "bld_naam" },
{ dbs: "ALG_GEBOUW_CODE", typ: "varchar", frm: "bld_code" },
{ dbs: "ALG_GEBOUW_OMSCHRIJVING", typ: "varchar", frm: "bld_descr" },
{ dbs: "ALG_GEBOUW_GETEKEND", typ: "date", frm: "bld_teken" },
var fields = [ { dbs: "alg_locatie_key", typ: "key", frm: "locatiekey" },
{ dbs: "ALG_SRTGEBOUW_KEY", typ: "key", frm: "bld_srtkey" },
{ dbs: "ALG_GEBOUW_ACADKEY ", typ: "varchar", frm: "bld_acadkey" },
{ dbs: "ALG_GEBOUW_NAAM", typ: "varchar", frm: "bld_naam" },
{ dbs: "ALG_GEBOUW_CODE", typ: "varchar", frm: "bld_code" },
{ dbs: "ALG_GEBOUW_OMSCHRIJVING", typ: "varchar", frm: "bld_descr" },
{ dbs: "ALG_GEBOUW_GETEKEND", typ: "date", frm: "bld_teken" },
{ dbs: "ALG_GEBOUW_BRUTO_VLOEROPP", typ: "number", frm: "bld_opp" },
{ dbs: "ALG_GEBOUW_OMTREK", typ: "number", frm: "bld_omtrek" },
{ dbs: "ALG_GEBOUW_INHOUD", typ: "number", frm: "bld_inhoud" },
{ dbs: "ALG_GEBOUW_OPMERKING", typ: "varchar", frm: "bld_opmerk" },
{ dbs: "MLD_ADRES_KEY", typ: "key", frm: "mld_adres" },
{ dbs: "PRS_KOSTENPLAATS_KEY", typ: "key", frm: "prs_kstpl" },
{ dbs: "ALG_GEBOUW_ORDERNR", typ: "varchar", frm: "bld_ordrnr" },
{ dbs: "ALG_GEBOUW_DWGX", typ: "number", frm: "bld_dwgx" },
{ dbs: "ALG_GEBOUW_DWGY", typ: "number", frm: "bld_dwgy" },
{ dbs: "ALG_GEBOUW_X", typ: "number", frm: "bld_x" },
{ dbs: "ALG_GEBOUW_Y", typ: "number", frm: "bld_y" },
{ dbs: "ALG_GEBOUW_BEZ", typ: "number", frm: "bld_bez" }];
{ dbs: "ALG_GEBOUW_OMTREK", typ: "number", frm: "bld_omtrek" },
{ dbs: "ALG_GEBOUW_INHOUD", typ: "number", frm: "bld_inhoud" },
{ dbs: "ALG_GEBOUW_OPMERKING", typ: "varchar", frm: "bld_opmerk" },
{ dbs: "MLD_ADRES_KEY", typ: "key", frm: "mld_adres" },
{ dbs: "PRS_KOSTENPLAATS_KEY", typ: "key", frm: "prs_kstpl" },
{ dbs: "ALG_GEBOUW_ORDERNR", typ: "varchar", frm: "bld_ordrnr" },
{ dbs: "ALG_GEBOUW_DWGX", typ: "number", frm: "bld_dwgx" },
{ dbs: "ALG_GEBOUW_DWGY", typ: "number", frm: "bld_dwgy" },
{ dbs: "ALG_GEBOUW_X", typ: "number", frm: "bld_x" },
{ dbs: "ALG_GEBOUW_Y", typ: "number", frm: "bld_y" },
{ dbs: "ALG_GEBOUW_BEZ", typ: "check", frm: "bld_bez" }];
var warning = "";
if (bld_key > 0)

View File

@@ -1,7 +1,7 @@
<%@ LANGUAGE="JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 16:31 $
$Revision: 2 $
$Modtime: 28-10-09 23:51 $
File: bes_search.asp
Status: 90%
@@ -140,7 +140,7 @@ var authparams = user.checkAutorisation(autfunction);
alert("<%=lcl_BES_nocat_selected%>");
return;
}
var key = $('#disc').val()
var url = "load_kenmerk.asp?disc_key=" + $('#disc').val()
+ "&urole=<%=urole%>"
@@ -473,7 +473,7 @@ var authparams = user.checkAutorisation(autfunction);
<% BUTTONS_START();
CreateButton(lcl_search, "doSubmit();", 100);
if (!frontend)
CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
if (backo)
{
CreateButton(lcl_obj_advanced +'&gt;', "javascript:myModal();", 100, 'bAdvanced'); // met actuele waarden van catalogus en vorig filter

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 17:13 $
$Revision: 2 $
$Modtime: 28-10-09 23:57 $
*/ %>
<!-- #include file="../../cust/install.inc" -->
@@ -210,7 +210,7 @@ var authparams = user.checkAutorisation(autfunction);
BUTTONS_START();
CreateButton(lcl_search, "document.forms.u2.submit();", 100);
if (!frontend)
CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
BUTTONS_END();
%>
</div>

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 28-09-09 12:07 $
$Revision: 2 $
$Modtime: 28-10-09 23:52 $
File: cnt_search.asp
Status: 95%
@@ -108,7 +108,7 @@ var authparams = user.checkAutorisation(autfunction);
alert("<%=lcl_cnt_nosrttype_selected%>");
return;
}
var key = $('#disc').val();
var url = "load_kenmerk.asp?disc=" + $('#disc').val()
+ "&urole=<%=urole%>"
@@ -254,7 +254,7 @@ var authparams = user.checkAutorisation(autfunction);
<tr>
<td colspan="2">
<div id="statusboxes">
<% // Was if (backo || (cnt && cnt_key != -1) || (oRs(0)==5))
<% // Was if (backo || (cnt && cnt_key != -1) || (oRs(0)==5))
// dus Uitgegeven mocht altijd, en de overige statussen alleen als backo OF cnt zonder key
%>
<label><%=lcl_cnt_status%>:</label>
@@ -273,7 +273,7 @@ var authparams = user.checkAutorisation(autfunction);
<div id="buttons">
<% BUTTONS_START();
CreateButton(lcl_search, "doSubmit();", 100, 'bSearch' );
CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(lcl_obj_advanced, "javascript:myModal();", 100, 'bAdvanced'); // met actuele waarden van contractsoort en vorig filter
BUTTONS_END(); %>
</div>

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 26-09-09 0:04 $
$Revision: 2 $
$Modtime: 3-11-09 9:17 $
File: Facilitor.asp
Status: op te ruimen, styles naar css isoleren
@@ -10,24 +10,42 @@
VEREIST (uitsluitend) de customercode ("CUST") in Session("customerId")
(c) 2010 SG|facilitor bv, the Netherlands. All rights reserved
*/
%>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../shared/iface.inc"-->
<!--#include file="useragent.inc" -->
<!--#include file="fac_menu.inc" -->
<!--#include file="header.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["FcltMgr.js", "jquery-ui.js", "jquery.layout.js"],
css: ["../shared/suggest/suggest.css"]}); // css voor header.asp
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["FcltMgr.js", "jquery-ui.js", "jquery.layout.js"],
css: ["../shared/suggest/suggest.css"]}); // css voor header.asp
CheckForLogging(Request.QueryString("LOGGING"))
dis = Request.QueryString("dis").Count > 0;
var noMenu = false; // option: do not show a menu
var noHeader = false;// option: do not show a header
var isPDA = false; // option: to force even if we cannot detect it
// 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
// What browser/platform is used:
checkUserAgent();
if (Request.QueryString("pda").Count>0) isPDA = true; // force even if we did not detect it
CheckForLogging(Request.QueryString("LOGGING"));
Session("pda") = isPDA;
var dis = Request.QueryString("dis").Count > 0; // is doorgeven voor het disablen van IkBenBekend in het inlogscherm
// What browser/platform is used:
checkUserAgent();
if (Request.QueryString("pda").Count>0) isPDA = true;
if (Request.QueryString("noMenu").Count>0) noMenu = true;
if (Request.QueryString("noHeader").Count>0) noHeader = true;
if (isPDA) {
noMenu = true;
noHeader = true;
}
Session("pda") = isPDA;
if (Request.Form("UID").Count>0)
Session("UID_DEC") = "" + Request.Form("UID");
@@ -85,43 +103,37 @@
</STYLE>
<script type="text/javascript">
FcltMgr.HostTabs("maintabs");
function RefreshFacilitor()
{
alert("Your session expired. Please, close this window and re-login on portal.");
window.location.href="default.asp?fac_id=<%=Session("customerId")%>";
}
var timerID=null;
function timedResizeActiveTab()
{
if (timerID) clearTimeout(timerID);
timerID = setTimeout(resizeActiveTab, 100);// use a delay for IE because the resize event fires repeatly
}
function resizeActiveTab()
{
var ifrm = FcltMgr.activeTab();
if (ifrm) {
// PF: constateerde dat via een tragere lijn (vpn) ifrm er niet op tijd kan zijn
ifrm.style.width = parseInt($("#maintabs").css("width"))- 2 + "px";
ifrm.style.height = parseInt($("#maintabs").css("height"))- 35 + "px";
//ifrm.style.width = parseInt($(ifrm).parent().width()) + "px";
//ifrm.style.height = parseInt($(ifrm).parent().height()) + "px";
}
//debugger;
}
jQuery(document).ready(function() {
<% if (Request.QueryString("IHateTabs").Count==0) { %>
FcltMgr.HostTabs("maintabs");
<% } %>
<%
extra="";
if (Session("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 = "Facilitor<6F> 5i <%=extra%>";
// TODO: deze naar de configuratie halen
var layoutSettings = {
name: "outerLayout" // NO FUNCTIONAL USE, but could be used by custom code to 'identify' a layout
, applyDefaultStyles: true // options.defaults apply to ALL PANES - but overridden by pane-specific settings
, north: {
size: 90
size: 75
}
, west: {
size: 275
size: 250
, paneSelector: "#menutabs" // sample: use an ID to select pane instead of a class
, spacing_closed: 20 // wider space when closed
, togglerLength_closed: 20 // make toggler 'square' - 21x21
, togglerTip_open: "Close Menu"
@@ -137,43 +149,18 @@
};
outerLayout = $("body").layout( layoutSettings );
$("#menutabs").tabs();
// $("#ProfFAC UL").sortable();
// $("#ProfFAC UL").disableSelection();
$("#menutabs").tabs();
var $tabs = $("#maintabs").tabs({ cache: true, // anders op tabwissel al herlading
add: function(event, ui) {
$tabs.tabs('select', '#' + ui.panel.id);
},
load: function(event, ui) {
var ifrm = $(ui.panel).find('iframe.frametab')[0];
ifrm.parentNode.style.padding="0px"; // lukt niet goed via css?
resizeActiveTab(); // iframe content kan nog even duren maar dat geeft niet.
},
remove: function(event, ui) {
$(ui.panel).remove(); // Onderliggende html opruimen
}
<% if ( user_key == -1 ) { %>
FcltMgr.openModalDetail("login.asp", "<%=lcl_facilitor_appl%>",
{ resizable: false,
noClose: true,
callback: function () {window.location.reload();} } );
}
);
$('#maintabs').bind('tabsshow', function(event, ui) {
// Direct na selecteren resizen omdat alleen de active geresized was
var ifrm = $(ui.panel).find('iframe.frametab')[0];
if (ifrm)
{
timedResizeActiveTab();
}
});
$("#maintabs").resize(function (){
timedResizeActiveTab();
});
<% if ( user_key == -1 ) { // match with css for logintable! %>
$("#secur_frame").dialog({ width: 300, height: 180, resizable: false, title: "<%=lcl_facilitor_appl%>" });
<% } %>
$(".menukop").click(function(){ $(this).nextAll("ul").toggle()});
@@ -207,58 +194,38 @@
background: #AAA;
}
.ui-tabs-panel { padding: 0px; }
.ui-tabs .ui-tabs-panel { padding-left: .5em; padding-right: .5em; }
</style>
</head>
<body>
<div id="frheader" class="ui-layout-north"><iframe width="100%" height="100%" src="header.asp"
name="frmheader" id="frmheader"
frameborder="0" marginwidth="0" noresize scrolling="no"></iframe></div>
<div id="menu" class="ui-layout-west">
<%
Server.Execute("menu.asp");
<% if (!noHeader) { %>
<div id="frheader" style='height:75px' class="ui-layout-north">
<% generateHeader(); %>
</div>
<% }
if (!noMenu) {
%><div id="menutabs" class="ui-tabs ui-layout-west"><%
generateMenu();
%></div><%
}
%>
</div>
<% if (!isPDA) { // moet ws hoger: helemaal geen frames en zo -TODO %>
<% if (!isPDA) { %>
<iframe src="Backgrounder.asp" style="display:none" ><!--het frame voor alle backgrounderjobs--></iframe>
<%
}
%>
<div id="maintabs">
<span class="tabclose"
style="font-size:2em;float:right; padding:0px 5px 5px 3px;"
title="lcl_Sluit alle inactieve tabs"
onClick="FcltMgr.closeAll()">X</span>
<div id="maintabs" class="ui-layout-center">
<span class="tabcloseall"
title="<%=lcl_close_all_tabs%>"
onClick="FcltMgr.closeAll()">x</span>
<ul>
<li><a href="#portal"><span><%=lcl_body_portal%></span></a></li>
</ul>
<xdiv class="ui-layout-content">
<div id="portal">
</div>
</xdiv>
<div id="portal">
</div>
</div>
<%
if ( user_key == -1 ) {
// Helper div om close *vanuit* de dialoog te kunnen doen
%>
<iframe src="ifl.asp<%=(dis?"?dis=1":"")%>"
name="secur_frame"
id="secur_frame"
marginwidth="0"
marginheight="0"
frameborder="0"
style="display:none"
scrolling = "no">
</iframe>
<div id="closedialog" name="closedialog"
onclick="$('.ui-dialog-titlebar-close').trigger('click');window.location.reload()" style="display:none">
</div>
<%
}
%>
</body>
</html>

View File

@@ -1,11 +1,10 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 28-09-09 10:17 $
$Revision: 2 $
$Modtime: 1-11-09 22:15 $
File: fac/menu.asp
File: fac/fac_menu.inc.asp
Status: 99%
Context: Server.Execute vanuit ../../appl/Facilitor.asp
Context:
Levert de div "menutabs" op met alle voor deze user beschikbare opties
(en niets meer dan dat)
@@ -17,21 +16,96 @@
<div id="MgtFAC"></div>
</div>
*/
Response.Expires=0;
DOCTYPE_Disable = true;
%>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="fac.inc" -->
<!-- #include file="MenuFunctions.inc" -->
<!--#include file="fac.inc" -->
<%
function MenuKop(ptekst, pinfo)
{
this.tekst = ptekst;
this.info = pinfo;
this.menuItems = new Array();
this.addItem = function(tekst, actie, beschrijving, diepte)
{
this.menuItems.push(new MenuItem(tekst, actie, beschrijving, diepte));
}
}
function MenuItem(pname, phref, pinfo, plevel)
{
this.name = pname;
this.href = phref;
this.info = pinfo;
this.level = plevel; // biedt uitklapmogelijkheid
}
// nog verfijnen? diepere levels?
function CreateItemsRow(menuKop)
{
for (var i=0; i<menuKop.length; i++)
{
if (menuKop[i].menuItems.length > 0) {
if (i == 0) {%><ul><% }
%><li class="menu"><span class="menukop"><% = menuKop[i].tekst %></span><ul><%
for (var j=0; j < menuKop[i].menuItems.length; j++)
{
var itm = menuKop[i].menuItems[j];
var q_href = itm.href.replace(/'/g,"\\'");
var q_name = itm.name.replace(/'/g,"\\'");
var q_info = String(itm.info).replace(/'/g,"\\'");
%>
<li title="<%=itm.info%>"><%
if (itm.href)
{ if (itm.href.slice(0,7) == "http://" || itm.href.slice(0,8) == "https://"){
%><a href="<%=itm.href%>" target=_new><% = Server.HTMLEncode(itm.name) %></a><%
} else {
%><a onclick="FcltMgr.openDetail('<%=q_href%>', this.innerHTML)"><% = Server.HTMLEncode(itm.name) %></a><%
}
} else {
%><a onMouseOver="ShowInfo2('<%=q_name%>','<%=q_info%>')"><% = itm.name %></a>
<%}%></li><%
}
%></ul></li><%
if (i == menuKop.length-1) { %></ul><% }
}
}
}
// Now client side functions
%>
<script type="text/javascript">
// Vul verklarende tekst op de portal
function ShowInfo2(name, text)
{
if (document.getElementById("item_desc_fixed0"))
document.getElementById("item_desc_fixed0").innerHTML = "<p class=info>" + name + "</p><p class=infoText>"+ text + "</p>";
}
function CreateBookmarkLink(title, url)
{
//title = "Webpage Title";
//url = "Webpage URL";
if (window.sidebar) {
// Mozilla Firefox Bookmark
window.sidebar.addPanel(title, url,"");
} else if( window.external ) {
// IE Favorite
window.external.AddFavorite( url, title);
} else if(window.opera && window.print) {
// Opera Hotlist
return true;
}
}
</script>
<%
function fillMenuArray() {
// Levert een tweedimensionaal menu-array op met alle opties, in de juiste volgorde,
// waarbij 0=personal, 1=professional, 2=management
// als er nog niet is ingelogd, wordt null opgeleverd.
if (user_key == -1)
if (user_key == -1)
return null;
var lresArr = new Array();
lresArr[0] = new Array();
lresArr[1] = new Array();
@@ -153,15 +227,15 @@ DOCTYPE_Disable = true;
+ " )";
lsql += " WHERE groep IS NOT NULL"; // veiligheidje
lsql += " ORDER BY groep,fac_menu_volgnr, label, exploded ";
var loRs = Oracle.Execute( lsql );
}
// Verwerk de opties tot menu-array. Het is van belang dat er geen nodeloze
// items (zoals kop zonder items) in voorkomen, omdat zichtbaarheid
// items (zoals kop zonder items) in voorkomen, omdat zichtbaarheid
// van de groep op lengte>0 wordt bepaald
var queueKop = null;
while( !loRs.eof )
while( !loRs.eof )
{
// __Log("menu-"+loRs("label").value);
mlabel = fac.localstring(loRs("label").value);
@@ -173,17 +247,17 @@ DOCTYPE_Disable = true;
if (lindex[grp] == -1)
{
// De allereerste van iedere groep MOET een kop worden
if (loRs("url").value == null)
{
if (loRs("url").value == null)
{
/* Dit is een kop; onthouden en op naar de volgende MITS er een item achteraan komt
* uitgesteld uitvoren: lresArr[grp][++lindex[grp]] = new MenuKop(mlabel, loRs("fac_menu_info").value);
*/
// __Log('kop1');
queueKop = { groep: grp, label: mlabel, info: loRs("fac_menu_info").value };
// Pas op: de index blijft voorlopig nog op -1 staan
} else {
} else {
// Deze eerste is geen kop; gebruik de gequeuede kop of verzin zelf er desnoods zelf eentje bij.
if (queueKop)
if (queueKop)
{
lresArr[grp][++lindex[grp]] = new MenuKop(queueKop.label, queueKop.info);
queueKop = null;
@@ -192,9 +266,9 @@ DOCTYPE_Disable = true;
}
lresArr[grp][lindex[grp]].addItem(mlabel, loRs("url").value , loRs("fac_menu_info").value, loRs("depth").value);
// __Log('regel1');
}
}
}
else
else
{
// Niet de eerste regel van deze groep
if (loRs("url").value == null) // het is een kop; registreren en op naar de volgende
@@ -203,7 +277,7 @@ DOCTYPE_Disable = true;
queueKop = { groep: grp, label: mlabel, info: loRs("fac_menu_info").value };
// __Log('kop2');
}
else
else
{
// geen kop, gewoon een entry. Dan nu eerst de eventueel nog gequeue-de kop invoegen
if (queueKop) {
@@ -222,33 +296,37 @@ DOCTYPE_Disable = true;
return lresArr;
}
var menuitems = fillMenuArray();
if (menuitems) {
%><div id="menutabs" class="ui-tabs ui-layout-west">
<ul class="ui-tabs-nav"><%
if (menuitems[1].length > 0) {
%><li><a href="#ProfFAC"><span class="menutab"><%=lcl_menu_prof%></span></a></li><%
}
if (menuitems[0].length > 0) {
%><li><a href="#PersFAC"><span class="menutab"><%=lcl_menu_pers%></span></a></li><%
}
if (menuitems[2].length > 0) {
%><li><a href="#MgtFAC"><span class="menutab"><%=lcl_menu_config%></span></a></li><%
}
%></ul>
<!-- add wrapper that Layout will auto-size to 'fill space' -->
<div class="ui-layout-content">
<div id="ProfFAC" class="ui-tabs"><%
CreateItemsRow(menuitems[1]);
%></div>
<div id="PersFAC" class="ui-tabs-hide"><%
CreateItemsRow(menuitems[0]);
%></div>
<div id="MgtFAC" class="ui-tabs-hide"><%
CreateItemsRow(menuitems[2]);
%></div>
</div>
</div><%
function generateMenu()
{
var menuitems = fillMenuArray();
if (menuitems) {
%>
<ul class="ui-tabs-nav"><%
if (menuitems[1].length > 0) {
%><li><a href="#ProfFAC"><span class="menutab"><%=lcl_menu_prof%></span></a></li><%
}
if (menuitems[0].length > 0) {
%><li><a href="#PersFAC"><span class="menutab"><%=lcl_menu_pers%></span></a></li><%
}
if (menuitems[2].length > 0) {
%><li><a href="#MgtFAC"><span class="menutab"><%=lcl_menu_config%></span></a></li><%
}
%></ul>
<!-- add wrapper that Layout will auto-size to 'fill space' -->
<div class="ui-layout-content">
<div id="ProfFAC" class="ui-tabs-panel"><%
CreateItemsRow(menuitems[1]);
%></div>
<div id="PersFAC" class="ui-tabs-panel ui-tabs-hide"><%
CreateItemsRow(menuitems[0]);
%></div>
<div id="MgtFAC" class="ui-tabs-panel ui-tabs-hide"><%
CreateItemsRow(menuitems[2]);
%></div>
</div>
<%
}
}
%>

View File

@@ -1,28 +1,33 @@
<%@language="javascript"%>
<% /*
$Revision: 1 $
$Modtime: 26-09-09 0:06 $
$Revision: 2 $
$Modtime: 1-11-09 23:12 $
File: fac_user_messages.asp (formerly news/news.asp)
Status: 99% (goed genoeg)
Description: Toont de gebruikersberichten (statusinfo) in een grid
Note: Niet erg gewijzigd, wel wat harde aannames toegevoegd,
er worden bv maar 25 regels getoond, max
Functioneel is de noodzaak voor deze info veel minder
Functioneel is de noodzaak voor deze info veel minder
geworden vanwege fac_list die veel meer info toont.
Geen resulttable hier, bij uitzondering
Hoeft niet, maag wel. Ook styling zou naar css mogen.
*/ %>
<%Response.Expires=0;%>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/escape.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["./fac_user_messages.js"],
css: []});
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script type="text/javascript" src="fac_user_messages.js"></script>
<!-- #include file="../Shared/datetime.inc" -->
<meta http-equiv="refresh" content="<%=refreshrate%>">
<style>
@@ -39,7 +44,9 @@
</style>
</head>
<body class="statusinfo" onLoad="setTimeout('if (parent.SetMessInfo) parent.SetMessInfo(newMess, totalMess)', 100);">
<body class="statusinfo">
<% IFRAMER_HEADER(lcl_recent_news, {}); %>
<table cellspacing="0" cellpadding="0" border="0" width='100%'>
<%
if( user_key != -1 ) {
@@ -89,7 +96,7 @@ if (portalnewsmax == -1 || total <= portalnewsmax) {
%>
<tr messKey=<%=oRs("web_user_message_key")%> class="<% = (isNew ? (oRs(6).value==1?'newstextFreshRed':'newstextFresh') : 'newstext')%>">
<td class="markread" title="<%=lcl_mark_as_read%>"
onClick="javascript:MarkAsRead(this, <%=isNew?1:0%>)"
onClick="javascript:MarkAsRead(this, <%=isNew?1:0%>)">
</td>
<td valign="top"> <% // as small as possible %>
&nbsp;<nobr><%=toDateTimeString(new Date(oRs("tijd").value))%></nobr></td>
@@ -124,8 +131,10 @@ if (portalnewsmax == -1 || total <= portalnewsmax) {
</table>
<script type="text/javascript">
var newMess = <% = newMess %>;
var totalMess = '<% = total %><% = maxPassed?lcl_news_moreexist_mark:"" %>';
$(document).ready(function ()
{
FcltMgr.setHeaderExtraTitle("<%=' ('+lcl_new%>: <strong><% = newMess %></strong>, <%=lcl_total%>: <strong><% = total %><% = maxPassed?lcl_news_moreexist_mark:"" %></strong>)")
});
</script>
<% // hidFrame is voor setReadFlag() %>
<iframe src="../Shared/empty.asp" id="hidFrame" style="display:none"></iframe>

View File

@@ -1,66 +1,38 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 17:13 $
$Revision: 2 $
$Modtime: 3-11-09 11:05 $
File: fac/header.asp
Status: 70%
Status: 90%
Context: iframe vanuit appl/fac/Facilitor.asp
*/
Response.Expires=0;
%>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/productsearch.inc" -->
<!-- #include file="../Shared/escape.inc" -->
<%
FCLTHeader.Requires({ plugins: [], js: ["FcltMgr.js"] });
FCLTHeader.Requires({ plugins: [], js: [] });
function todayString() {
var d=new Date()
var weekday=new Array(7)
weekday[0]=lcl_zondag;
weekday[1]=lcl_maandag;
weekday[2]=lcl_dinsdag;
weekday[3]=lcl_woensdag;
weekday[4]=lcl_donderdag;
weekday[5]=lcl_vrijdag;
weekday[6]=lcl_zaterdag;
var month=new Array(12)
month[0]=lcl_januari;
month[1]=lcl_februari;
month[2]=lcl_maart;
month[3]=lcl_april;
month[4]=lcl_mei;
month[5]=lcl_juni;
month[6]=lcl_juli;
month[7]=lcl_augustus;
month[8]=lcl_september;
month[9]=lcl_oktober;
month[10]=lcl_november;
month[11]=lcl_december;
return weekday[d.getDay()] + "&nbsp;" + d.getDate() + "&nbsp;" + month[d.getMonth()] + "&nbsp;" + d.getFullYear();
return LCL.shared.calendar_names.days[d.getDay()] + "&nbsp;" + d.getDate() + "&nbsp;"
+ LCL.shared.calendar_names.months[d.getMonth()] + "&nbsp;" + d.getFullYear();
}
%>
<html>
<head>
<%
FCLTHeader.Generate()
function generateHeader()
{
%>
<script type="text/javascript">
function setGlobalUser (prs_key, prs_naam) {
FcltMgr.setCaller({prs_key: prs_key, prs_naam: prs_naam});
FcltMgr.setCaller({prs_key: prs_key, prs_naam: prs_naam});
}
function openHelp()
{
var ifrm = parent.FcltMgr.activeTab();
FcltMgr.openDetail('appl/fac/help.asp?url='+escape(ifrm.src),'<%=lcl_help%>');
var ifrm = parent.FcltMgr._pageManager._activeTab();
parent.FcltMgr.openDetail('appl/fac/help.asp?url='+escape(ifrm.src),'<%=lcl_help%>');
}
function logOff()
{
@@ -68,22 +40,24 @@ function todayString() {
}
</script>
</head>
<body id="header">
<div id="headerblok">
<div id="headerblok" style='height:100%'>
<div id="headerprefix"><%=lcl_facilitor_header_prefix%></div>
<div id="headerdate"><%=todayString()%></div>
<%
if (user_key != -1) {
%>
<div id="headersuggest">
<%
// Suggest om een persoon te vinden. @@TODO: welke autorisatie gebruiken we hiervoor!!??!
FCLTpersoonselector("sName_key", "sgPerson", { perslidKey: -1,
//filtercode: "M",
moreinfo: true,
whenEmpty: lcl_select_persoon_generic,
onChange: "setGlobalUser"
});
// Suggest om een persoon te vinden. Gebruikt de scope van de telefoongids
var authparams = user.checkAutorisation("WEB_PHONEB", true);
if (authparams && authparams.PRSreadlevel < 9) {
FCLTpersoonselector("sName_key", "sgPerson", { perslidKey: -1,
moreinfo: true,
whenEmpty: lcl_select_persoon_generic,
onChange: "setGlobalUser",
autlevel: authparams.PRSreadlevel
});
}
%>
</div>
<div id="headersearch">
@@ -91,11 +65,8 @@ function todayString() {
FCLTproductsearch ();
%>
</div>
<div id="headerfunctions"><div id="headerhelp" onclick="openHelp()"><%=lcl_help%></div> | <div id="headerlogout" onclick="logOff()"><% = lcl_logoff %></a></div></div>
<div id="headerfunctions"><%if (user_key != -1) {%><div id="loggedinuser"><%=lcl_loggedin_as + user.naam()%></div><%}%><div id="headerhelp" onclick="openHelp()"><%=lcl_help%></div> | <div id="headerlogout" onclick="logOff()"><% = lcl_logoff %></a></div></div>
<% } %>
</div>
<script type="text/javascript">
if (typeof initCaller != "undefined") initCaller();
</script>
</body>
</html>
<% } %>

View File

@@ -1,7 +1,8 @@
<%@language = "javascript" %>
<% /*
$Revision: 2 $
$Modtime: 1-11-09 23:40 $
$Revision: 3 $
$Modtime: 3-11-09 10:12 $
*/ %>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="../Shared/iface.inc" -->
@@ -34,7 +35,7 @@
<body id="loginbody">
<form id="ifl_f" action="ifcp.asp" method="post">
<form id="ifl_f" action="login_save.asp" method="post">
<input type="hidden" id="mobile" name="mobile" value="0">
<TABLE id="logintable">
<TR>
@@ -59,10 +60,8 @@
<div id="buttons">
<%
buttons = [ { title: lcl_logon, action: "submit()" } ];
if (true || (!dis)&&(os_logon)) {
buttons.push({ title: lcl_know_me, action: "youknowme()" });
// CreateButton("<nobr>" + lcl_know_me + "</nobr>", "document.forms.ifl_f.action = 'testauth.asp';document.forms.ifl_f.submit();", "B");
if (!dis && os_logon) {
buttons.push({ title: lcl_know_me, action: "youknowme()" });
}
CreateButtons(buttons);
%></div>

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 25-09-09 23:10 $
$Revision: 2 $
$Modtime: 2-11-09 9:45 $
File: fac/body.asp
The content panel of the Facilitor portal page, "My Facilitor"
@@ -22,13 +22,6 @@ dtc = dtc.valueOf();
<%
FCLTHeader.Generate()
%>
<script type="text/javascript">
// called by content of mynewsframe.. (violating our own rules)
function SetMessInfo(newMess, total) {
document.getElementById("mymessagesinfo").innerHTML = "<%=lcl_recent_news+' ('+lcl_new%>: <strong>" + newMess +
"</strong>, <%=lcl_total%>: <strong>" + total + "</strong>)";
}
</script>
</head>
<body id="mainbody">
@@ -37,12 +30,11 @@ dtc = dtc.valueOf();
<div id="mywelcometitle"><%=lcl_facilitor_welcome%></div>
<div id="mywelcomeinfo"><%=lcl_mynews%></div>
<iframe src="fac_nieuws.asp?<%=dtc%>" id="mywelcomeframe"
width="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" onload="ExpandFrame(this.id, 20)">
width="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" onload="ExpandFrame(this.id)">
</iframe>
</div>
<div id="myactions">
<span id="myactionsinfo"><%=lcl_myfacilities%></span>
<div id="myactionscontainer">
<iframe src="fac_fe_list.asp?<%=dtc%>" id="myactionsframe"
width="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" onload="ExpandFrame(this.id)">
@@ -52,14 +44,10 @@ dtc = dtc.valueOf();
<% if (1) { %>
<div id="mymessages">
<div>
<div id="mymessagesinfo">Loading..</div>
</div>
<div id="mynewscontainer">
<iframe src="fac_user_messages.asp?<%=dtc%>" id="mynewsframe"
width="100%" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" >
width="100%" style="padding:0px" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" onload="ExpandFrame(this.id)">
</iframe>
</div>
</div>
<% } %>
<% } %>

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 2 $
$Modtime: 23-10-09 12:41 $
$Revision: 3 $
$Modtime: 28-10-09 23:53 $
File: fin_search.asp
Status: 80%
@@ -214,7 +214,7 @@ if (!access)
<%
BUTTONS_START();
CreateButton(lcl_search, "doSubmit();", 100);
// Er is geen secundaryblok hier CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
// Er is geen secundaryblok hier CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
// Altijd kenmerken. Niet afhankelijk van backoffice rol
CreateButton(lcl_obj_advanced, "myModal();", 100, 'bAdvanced'); // met actuele waarden van opdrtype en vorig filter
BUTTONS_END();

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 28-09-09 11:16 $
$Revision: 2 $
$Modtime: 28-10-09 23:54 $
Status: 90%
*/ %>
<!-- #include file="../../cust/install.inc" -->
@@ -101,7 +101,7 @@ var authparams = user.checkAutorisation(autfunction);
alert("<%=lcl_ins_nosrtdeel_selected%>");
return;
}
var lsrtdeel_key_str = getSrtdeelString()
var url = "load_kenmerk.asp?srtdeel_str=" + lsrtdeel_key_str
+ "&urole=<%=urole%>"
@@ -382,7 +382,7 @@ var authparams = user.checkAutorisation(autfunction);
BUTTONS_START();
CreateButton(lcl_search, "doSubmit();", 100);
if (!frontend)
CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
if (backo)
{
//if (fac_fun_sort)

View File

@@ -1,6 +1,6 @@
/*
$Revision: 1 $
$Modtime: 29-09-09 10:37 $
$Revision: 2 $
$Modtime: 29-10-09 13:49 $
File: FcltJquery.js
Status: 95%
@@ -21,22 +21,65 @@ function FcltCallback(json, textStatus)
alert("FcltCallback: " + textStatus);
};
function FcltCallbackRefresh(json, textStatus)
{
if (textStatus == "success")
{
if (json.message) alert(json.message);
if (json.success)
{
window.location.reload();
}
}
else
alert("FcltCallbackRefresh: " + textStatus);
};
function FcltCallbackDirtyLine(json, textStatus)
{
if (textStatus == "success")
{
if (json.message) alert(json.message);
if (json.success)
{
$("#row" + json.key).addClass('dirty');
}
}
else
alert("FcltCallbackDirtyLine: " + textStatus);
};
// Als FcltCallback maar dan met autoclose als json.success
function FcltCallbackClose(json, textStatus)
{
if (textStatus == "success")
{
if (json.message) alert(json.message);
if (json.success)
{
json.close = true;
FcltMgr.closeDetail(window, json);
}
}
else
alert("FcltCallback: " + textStatus);
};
// Roep met Ajax syncroon(!) een asp bestand aan en lever de JSON data op.
function FcltSyncgetJSON(url, data)
{
var globalData;
jQuery.ajax({
type: "GET",
url: url,
async: false,
data: data,
dataType: "json",
success: function (data, textStatus) { globalData = data; }
});
if (globalData.warning)
alert(globalData.warning);
if (globalData.error)
alert(globalData.error);
jQuery.ajax({ type: "GET",
url: url,
async: false,
data: data,
dataType: "json",
success: function (data, textStatus) { globalData = data; }
});
if (globalData && globalData.warning)
alert(globalData.warning);
if (globalData && globalData.error)
alert(globalData.error);
return globalData;
}

View File

@@ -4,106 +4,235 @@
FcltMgr =
{
_tabshost: null,
_caller: null,
HostTabs: function(tabs_id) // tabs_id moet id van jQuery tabs object zijn
_pageManager: null, // defaultManager of tabbedManager
defaultManager :
{
this._tabshost = tabs_id;
this._jtabshost = "#"+tabs_id;
},
// Open een nieuwe tab 'url' in een iframe en 'Titel' als label
openTab: function (url, titel)
{
//var prev_selected = $(this._jtabshost).tabs('option', 'selected');
url= "../shared/iframify.asp?src=../../" + escape(url);
var tpl = "<li><a href='#{href}'><span>#{label}</span>"
+ "<div style='display:inline' class='tabclose' onclick='FcltMgr.closeTab(this)'>&nbsp;X</div>"
+ "</a></li>"
$(this._jtabshost).tabs('option', 'tabTemplate', tpl);
//$(this._jtabshost).tabs("add", url, titel + "<span class='tabclose' onclick='FcltMgr.closeTab(this)'>&nbsp;X</span>");
//debugger;
$(this._jtabshost).tabs("add", url, titel);
},
_panelHot: function(i)
{
// TODO: Dit volgens mij niet geheel legaal
var ifrm = $($.data($(this._jtabshost)[0], 'tabs').panels[i]).find('iframe.frametab')[0];
return (window.frames[ifrm.name].window.FcltMgr &&
window.frames[ifrm.name].window.FcltMgr._editactive)
},
// Sluit een tabblad. Zelf moet verwijzen naar het tabje (of een child daarvan?)
closeTab: function (zelf)
{
var active = $(this._jtabshost).tabs('option', 'selected');
if (this._panelHot(active))
name: "defaultManager",
openDetail: function(url, titel)
{
if (!confirm("TODO: Sluiten zonder opslaan?"))
return false;
window.open("../../" + url);
},
closeDetail: function(thiswindow, params)
{
window.close();
},
setTitle: function (title, params)
{
if (title)
window.title = title;
}
// Don't ask me how this works...
var li = $(zelf).parents('li:eq(0)')[0];
$(this._jtabshost).tabs('remove', $('li', $(this._jtabshost)).index(li));
// TODO: Notificatie naar child misschien
// Bijvoorbeeld catering reservering waar uiteindelijk niets is gereserveerd opruimen
},
// Sluit alle tabbladen behalve de huidige en behalve _editactive
closeAll: function (zelf)
tabbedManager :
{
var $tabs = $(this._jtabshost);
var active = $tabs.tabs('option', 'selected');
if (confirm("lcl_Sluiten alle inactieve tabs?"))
name: "tabbedManager",
openDetail: function(url, titel)
{
for (var i=$tabs.tabs('length')-1; i>0; i--)
FcltMgr._pageManager._openTab(url, titel);
},
closeDetail: function(thiswindow, params)
{
var active = $(this._jtabshost).tabs('option', 'selected');
$(this._jtabshost).tabs('remove', active);
return;
},
setTitle: function (title, params)
{
params = params || {};
var active = $(this._jtabshost).tabs('option', 'selected');
var tab = $($.data($(this._jtabshost)[0], 'tabs').anchors[active])
if (title)
tab.find("span").text(title);
if (params.hot)
{
if (i != active && !this._panelHot(i))
this.hot = params.hot;
tab.find(".tabclose").addClass('hot');
}
else
{
this.hot = false;
tab.find(".tabclose").removeClass('hot');
}
},
// Sluit alle tabbladen behalve de huidige en behalve _editactive
closeAll: function (zelf)
{
var $tabs = $(this._jtabshost);
var active = $tabs.tabs('option', 'selected');
if (confirm(LCL.shared.closealltabs))
{
for (var i=$tabs.tabs('length')-1; i>0; i--)
{
$(this._jtabshost).tabs('remove', i);
if (i != active && !this._panelHot(i))
{
$(this._jtabshost).tabs('remove', i);
}
}
}
},
init: function (tabs_id)
{
this._tabshost = tabs_id;
this._jtabshost = "#"+tabs_id;
var $tabs = $(this._jtabshost).tabs(
{ cache: true, // anders op tabwissel al herlading
add: function(event, ui) {
$tabs.tabs('select', '#' + ui.panel.id);
},
load: function(event, ui) {
var ifrm = $(ui.panel).find('iframe.frametab')[0];
ifrm.tabpanelid = ui.panel.id;
ifrm.parentNode.style.padding="0px"; // lukt niet goed via css?
FcltMgr._pageManager._resizeActiveTab(); // iframe content kan nog even duren maar dat geeft niet.
},
remove: function(event, ui) {
$(ui.panel).remove(); // Onderliggende html opruimen
}
});
$(this._jtabshost).bind('tabsshow', function(event, ui) {
// Direct na selecteren resizen omdat alleen de active geresized was
var ifrm = $(ui.panel).find('iframe.frametab')[0];
if (ifrm)
{
FcltMgr._pageManager._timedResizeActiveTab();
}
});
$(this._jtabshost).resize(function (){
FcltMgr._pageManager._timedResizeActiveTab();
});
},
// Internal to tabbedManager
_tabshost: null,
_jtabshost: null,
// Open een nieuwe tab 'url' in een iframe en 'Titel' als label
_openTab: function (url, titel)
{
//var prev_selected = $(this._jtabshost).tabs('option', 'selected');
url= "../shared/iframify.asp?src=../../" + escape(url);
var tpl = "<li><a href='#{href}'><span>#{label}</span>"
+ "<div style='display:inline' class='tabclose' onclick='FcltMgr._pageManager._closeTab(this)'>&nbsp;X</div>"
+ "</a></li>"
$(this._jtabshost).tabs('option', 'tabTemplate', tpl);
//$(this._jtabshost).tabs("add", url, titel + "<span class='tabclose' onclick='FcltMgr.closeTab(this)'>&nbsp;X</span>");
//debugger;
$(this._jtabshost).tabs("add", url, titel||"Loading..."); // Titel moet maar gezet worden door child
},
_panelHot: function(i)
{
// TODO: Dit volgens mij niet geheel legaal
var ifrm = $($.data($(this._jtabshost)[0], 'tabs').panels[i]).find('iframe.frametab')[0];
return (window.frames[ifrm.name].window.FcltMgr &&
window.frames[ifrm.name].window.FcltMgr._editactive)
},
// Sluit een tabblad. Zelf moet verwijzen naar het tabje (of een child daarvan?)
_closeTab: function (zelf)
{
if (FcltMgr._DetailHot())
{
if (!confirm(LCL.shared.closeandignore))
return false;
}
var li = $(zelf).parents('li:eq(0)')[0];
if (!li)
{
alert("Internal Fcltmgr error: no parents found");
}
$(this._jtabshost).tabs('remove', $('li', $(this._jtabshost)).index(li));
// TODO: Notificatie naar child misschien
// Bijvoorbeeld catering reservering waar uiteindelijk niets is gereserveerd opruimen
},
_timerID : null,
_timedResizeActiveTab: function ()
{
if (this._timerID) clearTimeout(this._timerID);
this._timerID = setTimeout(this._resizeActiveTab, 100);// use a delay for IE because the resize event fires repeatly
},
_resizeActiveTab: function ()
{
var ifrm = FcltMgr._pageManager._activeTab();
if (ifrm) {
// PF: constateerde dat via een tragere lijn (vpn) ifrm er niet op tijd kan zijn
$(ifrm).width($(FcltMgr._pageManager._jtabshost).width()- 1);
$(ifrm).height($(FcltMgr._pageManager._jtabshost).height()- 35);
}
},
// levert het IFRAME object van de actieve tab op.
_activeTab: function ()
{
var active = $(FcltMgr._pageManager._jtabshost).tabs('option', 'selected');
// TODO: Dit volgens mij niet geheel legaal
var ifrm = $($.data($(FcltMgr._pageManager._jtabshost)[0], 'tabs').panels[active]).find('iframe.frametab')[0];
return ifrm
}
},
_caller: null,
// De allerhoogste te vinden manager
topmanager: function ()
{
if (parent && parent.FcltMgr && parent.FcltMgr!=this)
return parent.FcltMgr.topmanager();
else
return this;
},
// De hoogste FcltMgr nog net binnen het detail scherm
detailManager: function ()
{
if (FcltMgr.IsTheManager || parent.FcltMgr.IsTheManager)
return FcltMgr;
else
return parent.FcltMgr.detailManager();
},
HostTabs: function(tabs_id) // tabs_id moet id van jQuery tabs object zijn
{
this._pageManager = this.tabbedManager;
this._pageManager.init(tabs_id);
},
_DetailHot: function(i)
{
return FcltMgr.detailManager()._editactive;
},
// Open een detailscherm (bijvoorbeeld vanuit een overzicht scherm)
// Als dit vanuit een tab gebeurt dan wordt een nieuwe tab geopend,
// anders een nieuw window
openDetail: function(url, titel)
{
//TODO: netter nesting achterhalen
if (this._tabshost)
this.openTab(url, titel);
else
{
if (parent.FcltMgr)
parent.FcltMgr.openDetail(url, titel);
else
window.open("../../" + url);
}
FcltMgr._pageManager.openDetail(url, titel)
},
// Als via kruisje gesloten. Geen callback's en dergelijke
dialogClose: function (result)
{
$('div#fcltmodal'+FcltMgr._modalCount).remove();
$('div#fcltmodal' + FcltMgr._modalCount).remove();
// TODO: Destroy div#fcltmodal and children
FcltMgr._modalCount--;
},
// Aan te roepen vanuit modal dialoog met resultaat-data
myModalClose: function (params)
{
params = params || {};
$('.ui-dialog-titlebar-close').trigger('click'); // doet indirect dialogClose
if (params.cancel)
return;
// TODO??if (params.refresh)
// window.location.href="res_reservering.asp?urole=<%=urole%>&rsv_ruimte_key="+rsv_ruimte_key;
},
// Open een Modaal popup detailscherm (bijvoorbeeld vanuit een overzicht scherm)
// Voor schermen waarvan openDetail te veel eer is.
// params ondersteunt:
@@ -117,40 +246,60 @@ FcltMgr =
_resizeModal: function(frm)
{
ExpandFrame(frm.id);
var innerDoc = (frm.contentDocument) ? frm.contentDocument : frm.contentWindow.document;
var newHeight = Math.min(innerDoc.body.scrollHeight, $(window).height()-100);
$('div#fcltmodal'+FcltMgr._modalCount).dialog('option', 'height', newHeight+24); // 24 voor kopregel
$(frm).height(newHeight);
var extraWidth = 0;
if (newHeight < innerDoc.body.scrollHeight)
extraWidth = 24; // scrollbar
//frm.style.width = "100px"; // trucje om te zorgen dat *versmallen* ook gedetecteerd wordt
var newWidth = Math.min(innerDoc.body.scrollWidth+extraWidth+12, $(window).width()-100);
$('div#fcltmodal'+FcltMgr._modalCount).dialog('option', 'width', newWidth);
$(frm).width(newWidth);
$('div#fcltmodal'+FcltMgr._modalCount).dialog('option', 'position', 'center');
},
// Opent een modal dialoog in de huidige 'detailManager'
openModalDetail: function(url, titel, params)
{
if (!parent || !parent.FcltMgr || parent.FcltMgr._tabshost )
{ // niet nog hoger zoeken
// if (this._modalCount)
// alert("Internal Fcltmgr error: second modal?");
this._modalCount++;
params = params || {};
this._modalCallback[FcltMgr._modalCount] = params.callback;
this._modalParams[FcltMgr._modalCount] = params.params;
params.width = params.width || 500;
//params.height = params.height || 500;
params.modal = true;
params.title = null;//titel;
params.resizable = false;
params.close = this.dialogClose; // Voor 'kruisje'
//params.stack = true; // Voor nesting
$(document.body).append('<div id="fcltmodal'+FcltMgr._modalCount+'" style="padding: 0px;width: ' + params.width + ';height: ' + params.height + '">'
+'<IFRAME id="fmodal'+FcltMgr._modalCount+'" name="fmodal'+FcltMgr._modalCount +'"'
+'frameborder="0" width="100%" height="100%" onload="FcltMgr._resizeModal(this)">'
+' src="../shared/empty.html"'
+'</IFRAME>'
+'</div>');
$('iframe#fmodal'+FcltMgr._modalCount).attr('src', url);
$('div#fcltmodal'+FcltMgr._modalCount).dialog(params).dialog('open');
// TODO: Destroy div#fcltmodal and children
}
else
parent.FcltMgr.openModalDetail(url, titel, params);
FcltMgr.detailManager()._openModalDetail(url, titel, params);
},
_openModalDetail: function(url, titel, params)
{
// niet nog hoger zoeken
this._modalCount++;
params = params || {};
this._modalCallback[FcltMgr._modalCount] = params.callback;
this._modalParams[FcltMgr._modalCount] = params.params;
params.modal = true;
params.title = titel;
params.resizable = params.resizable||false;
if (params.noClose)
{
params.closeOnEscape = false,
params.open = function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
}
params.close = this.dialogClose; // Omdat we het vanuit een Iframe willen doen.
$(document.body).append('<div id="fcltmodal'+FcltMgr._modalCount+'" style="padding: 0px;">'
+'<IFRAME id="fmodal'+FcltMgr._modalCount+'" name="fmodal'+FcltMgr._modalCount +'"'
+'frameborder="0" width="100%" height="100%" onload="FcltMgr._resizeModal(this)">'
+' src="../shared/empty.html"'
+'</IFRAME>'
+'</div>');
$('iframe#fmodal'+FcltMgr._modalCount).attr('src', url);
$('div#fcltmodal'+FcltMgr._modalCount).dialog(params).dialog('open');
},
dialogArguments: function()
{
return parent.FcltMgr._modalParams[parent.FcltMgr._modalCount];
@@ -161,6 +310,7 @@ FcltMgr =
// Als het een window is wordt geprobeerd het window te sluiten.
closeDetail: function(thiswindow, params)
{
thiswindow = thiswindow || window;
params = params || {};
if (params.warning)
{
@@ -170,26 +320,27 @@ FcltMgr =
if (this._modalCount)
{
this.myModalClose(params);
$('.ui-dialog-titlebar-close').trigger('click'); // doet indirect dialogClose
if (params.cancel)
return;
if (this._modalCallback[FcltMgr._modalCount+1])
this._modalCallback[FcltMgr._modalCount+1](params);
//this._modalCount--;
return;
}
if (this._tabshost)
{
var active = $(this._jtabshost).tabs('option', 'selected');
$(this._jtabshost).tabs('remove', active);
return;
}
this._editactive = false;
// Minstens parent, we kunnen het nooit zelf zijn.
if (parent.FcltMgr.detailManager()._modalCount)
return parent.FcltMgr.detailManager().closeDetail(thiswindow, params);
FcltMgr.detailManager()._editactive = false;
FcltMgr.setTitle(null, {hot:false});
if (thiswindow.name)
{
var ifrm = document.getElementById(thiswindow.name);
var ifrm = parent.document.getElementById(thiswindow.name);
if (ifrm && ifrm.FcltClose)
{
return eval(ifrm.FcltClose + "(params)");
return eval("(parent." + ifrm.FcltClose + "(params))");
}
if (ifrm && ifrm.orgsrc)
{
@@ -197,48 +348,19 @@ FcltMgr =
return;
}
}
if (parent.FcltMgr)
{
parent.FcltMgr.closeDetail(thiswindow, params);
}
else
window.close();
FcltMgr._pageManager.closeDetail(window, params);
},
// levert het IFRAME object van de actieve tab op.
activeTab: function ()
closeAll: function (zelf)
{
var active = $(this._jtabshost).tabs('option', 'selected');
// TODO: Dit volgens mij niet geheel legaal
var ifrm = $($.data($(this._jtabshost)[0], 'tabs').panels[active]).find('iframe.frametab')[0];
return ifrm
FcltMgr._pageManager.closeAll(zelf);
},
setTitle: function (title, params)
{
params = params || {};
if (this._tabshost)
{
var active = $(this._jtabshost).tabs('option', 'selected');
var tab = $($.data($(this._jtabshost)[0], 'tabs').anchors[active])
if (title)
tab.find("span").text(title);
if (params.hot)
{
tab.find(".tabclose").addClass('hot');
}
else
tab.find(".tabclose").removeClass('hot');
}
else
{
if (parent.FcltMgr)
parent.FcltMgr.setTitle(title, params);
else
if (title)
window.title = title;
}
FcltMgr._pageManager.setTitle(title, params);
},
// Zet het extra-titelblok in een IFRAMERHEADER
@@ -250,24 +372,39 @@ FcltMgr =
// Aan te roepen door een childwindow als hijzelf resized is (bijvoorbeeld ++bezoekerregels)
resized: function(thiswindow, params)
{
if ( typeof parent.ExpandFrame != "undefined" )
thiswindow = thiswindow || window;
if ( parent && parent!=window )
{
//try {parent.curvyCorners.redraw();}catch(e){};
parent.ExpandFrame(thiswindow.name);
var helpFrame = parent.document.getElementById(thiswindow.name);
if (helpFrame)
{
//if (parent.FcltMgr._modalCount)
// parent.FcltMgr._resizeModal(helpFrame)
//else
{
var innerDoc = (helpFrame.contentDocument) ? helpFrame.contentDocument : helpFrame.contentWindow.document;
helpFrame.style.height = parseInt(innerDoc.body.scrollHeight) + "px";
}
}
if (parent.FcltMgr)
parent.FcltMgr.resized(window, params)
}
},
childLoaded: function (childWindow)
// <iframe onload='FcltMgr.iframeLoaded(this)'>
iframeLoaded: function (elm_iframe, widthToo)
{
var sch = childWindow.document.all.tags("body")[0].scrollHeight;
if (childWindow.frameElement)
var innerDoc = (elm_iframe.contentDocument) ? elm_iframe.contentDocument : elm_iframe.contentWindow.document;
elm_iframe.style.height = parseInt(innerDoc.body.scrollHeight) + "px";
if (widthToo)
{
childWindow.frameElement.style.height = sch;
if (parent && parent.FcltMgr)
parent.FcltMgr.childLoaded(window);
elm_iframe.style.width = "100px"; // trucje om te zorgen dat *versmallen* ook gedetecteerd wordt
elm_iframe.style.width = $(innerDoc.body)[0].scrollWidth + "px";
}
else
elm_iframe.style.width = "100%";
//FcltMgr.resized(window);
},
eventLoaded: function ()
@@ -279,61 +416,81 @@ FcltMgr =
// Door een child-window aan te roepen vlak voordat hij van show naar edit mode gaat
startEdit: function (thiswindow, params)
{
if (parent && parent.FcltMgr)
if (FcltMgr.mayEdit(window, params))
{
if (parent.FcltMgr.mayEdit(thiswindow, params))
{
parent.FcltMgr._editactive = true;
FcltMgr.setTitle(null, {hot:true});
return true;
}
else
return false;
FcltMgr.detailManager()._editactive = true;
FcltMgr.setTitle(null, { hot : window });
return true;
}
return true;
else
return false;
},
// Door een manager-window aan te roepen als hij wil gaan editen
mayEdit: function (thiswindow, params)
{
if (this._editactive)
if (FcltMgr.detailManager()._editactive)
{
alert("TODO Sla eerst de andere wijzigingen op of annuleer ze")
alert(LCL.shared.othertabactive)
return false;
}
return true;
},
trySave: function ()
{debugger;
if (this._tabshost)
{
if (FcltMgr._DetailHot())
{
var ifrm = this.activeTab();
var innerDoc = (ifrm.contentDocument) ? ifrm.contentDocument : ifrm.contentWindow.document;
//debugger;
//$(innerDoc).find("img[title='Verwijderen']").length
//if (confirm("Opslaan?"))
{
eval($(FcltMgr.hot.document).find("img[title=Opslaan]")[0].onclick)(this);
}
}
}
else
{
if (parent.FcltMgr && parent.window!=window)
parent.FcltMgr.trySave();
}
if (window.event)
window.event.cancelBubble = true;
return false;
},
setCaller: function(callerinfo)
{
//alert('@FcltMgr caller gezet op: ' + callerinfo.prs_key + " " + callerinfo.prs_naam);
if (parent && parent.FcltMgr && parent.FcltMgr!=this)
parent.FcltMgr.setCaller(callerinfo);
this._caller = callerinfo;
this.topmanager()._caller = callerinfo;
},
getCaller: function()
{
if (this._caller)
return this._caller;
return this.topmanager()._caller;
},
if (parent && parent.FcltMgr && parent.FcltMgr!=this)
return parent.FcltMgr.getCaller();
lcl: function(module)
{
return this.topmanager()._lcl(module)
},
LCL: {}, // wordt door header.inc gevuld mbv. _lcl()
_lcl: function (module)
{
if (!this.LCL[module])
this.LCL[module] = FcltSyncgetJSON("../shared/load_lcl.asp?module=" + module)
return this.LCL[module];
}
}
FcltButtonMgr =
{
showButtons: function(buttons)
{ return;
debugger;this.window.name;
$(".fcltframe").find("#buttons").length
$(this).parent(".fcltframe").child("buttons");
alert("Knoppen tonen");
},
hideButtons: function()
{
alert("Knoppen weghalen");
}
}
FcltMgr._pageManager = FcltMgr.defaultManager;
if (parent && parent.FcltMgr && parent.FcltMgr != FcltMgr)
FcltMgr._pageManager = parent.FcltMgr._pageManager;
else
FcltMgr.IsTheManager = true;

View File

@@ -112,3 +112,132 @@ function toDateTimeString(jsDate, bWithSeconds)
{
return toDateString(jsDate)+" "+toTimeString(jsDate, bWithSeconds)
}
Date.prototype.getFloatHours = function getFloatHours()
{
return this.getHours() + (this.getMinutes()/60);
}
// Noot: rondt af op res_h!
// levert een nieuw date-object op
Date.prototype.setFloatHours = function setFloatHours(hrs, res_h)
{
var dd = new Date(this);
hrs = Math.floor((hrs/res_h)+0.5) * res_h;
var hh = Math.floor(hrs);
var mm = (hrs*60) % 60;
dd.setHours(hh,mm,0,0);
return dd;
}
// Noot: rondt af op res_h!
// levert een nieuw date-object op
Date.prototype.addFloatHours = function addFloatHours(hrs, res_h)
{
return this.setFloatHours(this.getFloatHours() + hrs, res_h);
}
function cal_checkVolgnr(fieldId, volgnr, timeField)
{
// Aangeroepen door de onChange van elke kalender om de volgorde in tijd van de kalenders te controleren
// Alleen kalenders die een volgnummer hebben gekregen moeten worden gecontroleerd
// Controleer of kalender Kx niet na kalender Kx+1, Kx+2... komt. Toch het geval dan Kx+1, Kx+2... = Kx.
// Controleer of kalender Kx niet voor kalender Kx-1, Kx-2... komt. Toch het geval dan Kx-1, Kx-2... = Kx.
for (var i = 0; i < calArray.length; i++)
{
// Kalender Kx vooruit gezet
if (calArray[i].id != fieldId && calArray[i].volgnr > volgnr && parseInt($("#" + calArray[i].id).val()) < parseInt($("#" + fieldId).val()))
{ // Veld aanpassen
// Maak Kx+1, Kx+2... gelijk aan Kx
$("#show_" + calArray[i].id).DatePickerSetDate(new Date(parseInt($("#" + fieldId).val())));
$("#show_" + calArray[i].id).val($("#show_" + fieldId).val());
if (timeField)
{
// Als de tijd van tx > tijd van tx+1, tx+2..., maak dan de tijden gelijk: tijd van tx+1, tx+2... = tijd van tx.
if ($("#time_from_" + fieldId).timePickerGetTime().getTime() > $("#time_from_" + calArray[i].id).timePickerGetTime().getTime())
{ // Datum + tijd overnemen
// Dezelfde datum overnemen
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + fieldId).timePickerGetTime().getTime());
// Dezelfde tijd overnemen
//$("#time_from_" + calArray[i].id).timePickerSetTime($("#time_from_" + fieldId).timePickerGetTime().getTime());
$("#time_from_" + calArray[i].id).val($("#time_from_" + fieldId).val());
}
else
{ // Dezelfde datum en de oude eigen tijd behouden
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
}
}
else
{
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime());
}
}
// Kalender Kx achteruit gezet
if (calArray[i].id != fieldId && calArray[i].volgnr < volgnr && $("#" + calArray[i].id).val() > $("#" + fieldId).val())
{ // Veld aanpassen
// Maak Kx-1, Kx-2... gelijk aan Kx
$("#show_" + calArray[i].id).DatePickerSetDate(new Date(parseInt($("#" + fieldId).val())));
$("#show_" + calArray[i].id).val($("#show_" + fieldId).val());
if (timeField)
{
// Als de tijd van tx < tijd van tx-1, tx-2..., maak dan de tijden gelijk: tijd van tx-1, tx-2... = tijd van tx.
if ($("#time_from_" + fieldId).timePickerGetTime().getTime() < $("#time_from_" + calArray[i].id).timePickerGetTime().getTime())
{ // Datum + tijd overnemen
// Dezelfde datum overnemen
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + fieldId).timePickerGetTime().getTime());
// Dezelfde tijd overnemen
//$("#time_from_" + calArray[i].id).timePickerSetTime($("#time_from_" + fieldId).timePickerGetTime().getTime());
$("#time_from_" + calArray[i].id).val($("#time_from_" + fieldId).val());
}
else
{ // Dezelfde datum en de oude eigen tijd behouden
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
}
}
else
{
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime());
}
}
}
// TODO: Tijden kunnen bij meer dan twee afhankelijk kalenders nog niet goed staan. Datums staan nu zeker goed.
// TODO: Array van meer dan 2 kalenders met tijden op volgorde zetten. Onderste code is een opzet maar dan moet calArray op volgorde staan.
return;
for (var i = 0; i < calArray.length; i++)
{
i_id = calArray[i].id;
i_volgnr = calArray[i].volgnr;
i_datumtijd = $("#" + i_id).val();
for (var j = 0; j < calArray.length; j++)
{
if (j == i) break;
j_id = calArray[j].id;
j_volgnr = calArray[j].volgnr;
j_datumtijd = $("#" + j_id).val();
if (i_volgnr < j_volgnr && i_datumtijd > j_datumtijd)
{
// Dezelfde tijd (datum + tijd)overnemen
$("#" + calArray[j].id).val(dates.getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
//$("#time_from_" + calArray[j].id).timePickerSetTime($("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
$("#time_from_" + calArray[j].id).val($("#time_from_" + calArray[i].id).val());
}
if (i_volgnr > j_volgnr && i_datumtijd < j_datumtijd)
{
// Dezelfde tijd (datum + tijd)overnemen
$("#" + calArray[j].id).val(dates.getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
//$("#time_from_" + calArray[j].id).timePickerSetTime($("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
$("#time_from_" + calArray[j].id).val($("#time_from_" + calArray[i].id).val());
}
}
}
}
// te gebruiken in combinante met FCLTCalender
function cal_isVrijeDag(datum)
{
var nacht = datum.midnight();
return ($.inArray(nacht.getTime(), mld_vrije_dagen)> -1);
}

View File

@@ -1,11 +1,12 @@
/*
$Revision: 1 $
$Modtime: 1-07-09 9:14 $
$Revision: 2 $
$Modtime: 1-11-09 17:08 $
File: iface.js
Description: clientside functions for shared/iface.inc
*/
function enableButton(id,enable,fn) {
function enableButton(id,enable,fn)
{
bb = document.all[id+'_bg'];
if( bb )
{
@@ -21,7 +22,8 @@ function enableButton(id,enable,fn) {
}
}
function enableButton_V2(id, enable) {
function enableButton_V2(id, enable)
{
bb = document.all[id+'_bg'];
if( bb )
{
@@ -43,15 +45,18 @@ function enableButton_V2(id, enable) {
}
function HideButton(id) {
$("#"+id).parent().hide();
function HideButton(id)
{
$("#"+id).parent().hide();
}
function ShowButton(id) {
$("#"+id).parent().show();
function ShowButton(id)
{
$("#"+id).parent().show();
}
function changeButtonLabel(id,label) {
function changeButtonLabel(id,label)
{
bb = document.all[id+'_bg'];
if( bb )
{
@@ -59,7 +64,8 @@ function changeButtonLabel(id,label) {
}
}
function none() {
function none()
{
}
var secfilters;
@@ -68,13 +74,117 @@ var secfilters;
// iface.inc definieert de strings
function iface_toggleSecondarySearchblock(m)
{
if (!secfilters) {
$(".secsearch").show();
secfilters = true; // en vervang label door <% =lcl_less %>
$("#btnMoreLess").text(lcl_less);
} else {
$(".secsearch").hide();
secfilters = false; // en vervang label door <% =lcl_more %>
$("#btnMoreLess").text(lcl_more);
if (!secfilters) {
$(".secsearch").show();
secfilters = true; // en vervang label door <% =lcl_less %>
$("#btnMoreLess").text(LCL.shared.less);
} else {
$(".secsearch").hide();
secfilters = false; // en vervang label door <% =lcl_more %>
$("#btnMoreLess").text(LCL.shared.more);
}
}
// Als attentionOnly gezet dan worden foute velden alleen gehighligh met class 'attention'
// Als geen attentionOnly dan wordt 'missing' gebruikt en wordt een alert gegeven.
function validateForm(fName, attentionOnly)
{ // TODO: Alleen binnen fName kijken?
function _isGoodCurrency(str, checkInteger)
{
var anum=/[-\+?]|(^\d+$)|(^\d+\.\d*$)|(^\d*\.\d+$)/
return anum.test(str);
}
var clsName = (attentionOnly? "attention" : "attention missing");
var anyMissing = anyBad = false;
$(".required").each(function (i)
{
switch (this.tagName)
{
case "SELECT":
{
$(this).removeClass("missing");
$("#req_"+this.name).removeClass("missing");
var opt = $(this).find("option:selected");
if (this.options.length==0 || opt.val() == "-1")
{
$("#req_"+this.name).addClass(clsName); // Dit zal/moet een divje zijn?
opt.addClass(clsName);
anyMissing = true;
}
break;
}
case "INPUT":
case "TEXTAREA": // TODO: Strip spaces/ Sanitize?
$(this).removeClass("missing");
if ($(this).val() == "" ||
($(this).hasClass("suggest")&& this.sgKey<0))
{
$(this).addClass(clsName);
anyMissing = true;
}
else if ($(this).hasClass("suggestBad"))
{
$(this).addClass("bad");
anyBad = true;
break
}
// else geen break maar doorvallen
break;
}
}
)
$(".number").each(function (i)
{
if ($(this).val() != "" && isNaN(parseInt($(this).val()), 10))
{
$(this).addClass("bad");
anyBad = true;
}
else
{
$(this).removeClass("bad"); // Een eventuele attention blijft er op staan!
}
}
)
$(".float").each(function (i)
{
if ($(this).val() != "" && !isFinite(parseFloat($(this).val())))
{
$(this).addClass("bad");
anyBad = true;
}
else
{
$(this).removeClass("bad"); // Een eventuele attention blijft er op staan!
}
}
)
$(".currency").each(function (i)
{
if ($(this).val() != "" && !_isGoodCurrency($(this).val().replace(',', '.')))
{
$(this).addClass("bad");
anyBad = true;
}
else
{
$(this).removeClass("bad"); // Een eventuele attention blijft er op staan!
}
}
)
if (anyMissing)
{
alert(LCL.shared.validator.missing);
return false;
}
else if (anyBad)
{
alert(LCL.shared.validator.bad);
return false;
}
return true;
}

View File

@@ -1,14 +1,14 @@
/*
$Revision: 1 $
$Modtime: 24-09-09 17:54 $
$Revision: 2 $
$Modtime: 29-10-09 15:45 $
File: resultset_table_v2.js
Status: 90%
Description: Javascript code voor de resultsettable. Voegt post formulier aan body toe.
Parameters:
Parameters:
Globals:
Context: Wordt gebruikt door de resultset_table_v2.inc
Note:
Note:
*/
// post formulier voor printen aan de body toevoegen
@@ -18,3 +18,164 @@
$(document).ready(function() {
if (typeof(postformHTML)!="undefined") $("body").append(postformHTML);
});
function resizeWhenInIFrame()
{
if (parent.ExpandFrame) parent.ExpandFrame(window.name);
}
function hideInlineDetails(thisTR)
{
$(thisTR).find(".inlinedetails").toggleClass("closed");
var thisTABLE = thisTR.parentNode;
thisTABLE.deleteRow(thisTR.rowIndex);
thisTR.inlineVisible = false;
return false;
}
function hideAllInlineDetails(ID)
{
$("#"+ID).find("tr[inlineVisible=true]").each(function (i) { hideInlineDetails(this) });
resizeWhenInIFrame();
}
function showInlineDetails(thisTD, strfnURL)
{
window.event.cancelBubble = true; // Voorkom highlight regel
var thisTR = thisTD.parentNode;
if (thisTR.inlineVisible)
return hideInlineDetails(thisTR);
$(thisTR).find(".inlinedetails").toggleClass("closed");
thisTR.inlineVisible = true;
var thisTABLE = thisTR.parentNode;
var newRow = thisTABLE.insertRow(thisTR.rowIndex);
newRow.insertCell(0);
var theCell = newRow.insertCell(1);
theCell.innerHTML = LCL.shared.loading;
theCell.colSpan=thisTR.children.length-2;
newRow.insertCell();
var url = eval(strfnURL).call(null, thisTR);
$.ajaxSetup({ cache: true });
$(theCell).load(url, resizeWhenInIFrame);
return false;
}
function doDefault(theAction, multiOnce)
{
// Bij header en footer doDefault actie niet uitvoeren (tr header en footer heeft geen id)
if ($(event.srcElement).closest('tr')[0].id == "")
return;
if (multiOnce)
{
var rowArray = new Array();
rowArray[0] = $(event.srcElement).closest('tr')[0];
eval(theAction).call(null, rowArray);
}
else {
var row = $(event.srcElement).closest('tr')[0];
if (row && row.ROWKEY)
eval(theAction).call(null, row);
}
}
function doA(thisSPAN, theAction)
{
//$(thisSPAN).css('visibility', 'hidden'); // Verwijder de actie direct zodat dubbelklikken geen tweede aanroep kan veroorzaken.
window.event.cancelBubble = true; // This prevents the event from bubbling up to the onclick event handler for the line.
var actionSelect = document.getElementById("multiaction");
var multiOnce = false;
if (actionSelect)
{
for (var i = 0; i < actionSelect.length; i++)
{
if (actionSelect[i].value == theAction && actionSelect[i].multiOnce)
multiOnce = true;
}
}
if (multiOnce)
{
var rowArray = new Array();
rowArray[0] = $(thisSPAN).parents('tr')[0];
eval(theAction).call(null, rowArray);
}
else {
var row = $(thisSPAN).parents('tr')[0];
eval(theAction).call(null, row);
}
return false;
}
function getKeyString(rowArray)
{
var key;
var keyString = "";
for (var i = 0; i < rowArray.length; i++)
{
$(rowArray[i]).addClass('dirty');
key = rowArray[i].ROWKEY;
keyString += ((keyString == "") ? "" : ",") + key;
}
return keyString;
}
function doMulti(thisID)
{
var actionSelect = document.getElementById("multiaction");
if (actionSelect[actionSelect.selectedIndex].value == '') return;
var regels = $("#" + thisID + " .multiselect:checked");
if (regels.length > 0 &&
confirm(actionSelect[actionSelect.selectedIndex].text + " " + regels.length + " "+ LCL.shared.lines + "?"))
{
// Als multiOnce is gedefinieerd dan wordt de actie <20><>n keer aangeroepen waarbij een string met keys wordt meegegeven aan de actiefunctie
// anders wordt voor elke aangevinkte regel de actie aangeroepen waarbij elke keer <20><>n key wordt meegegeven aan de actiefunctie
var multiOnce = false;
var multiOnceArray = new Array();
var teller = 0;
$("#"+thisID+" .multiselect:checked").each(function()
{
teller++;
var rowData = eval('(' + this.parentElement.parentElement.ROWDATA + ')');
multiOnce = actionSelect[actionSelect.selectedIndex].multiOnce
if (multiOnce)
multiOnceArray.push(this.parentElement.parentElement);
else
eval(actionSelect[actionSelect.selectedIndex].value).call(null, this.parentElement.parentElement, true); // true voor noconfirm i.g.v. multi actie
});
if (multiOnce)
eval(actionSelect[actionSelect.selectedIndex].value).call(null, multiOnceArray, true); // true voor noconfirm i.g.v. multi actie
}
}
function ha(row) //HideActions, korte naam omdat deze bij elke tr wordt opgenomen
{
$(row).find(".ias").css('visibility', 'hidden');
}
function sa(row) //ShowActions, korte naam omdat deze bij elke tr wordt opgenomen
{
//if ($(row)[0].className.indexOf("dirty") == -1) // Als de regel dirty is dan de acties niet meer tonen
$(row).find(".ias").css('visibility', 'visible');
}
function checkAll(thisID, zelf)
{
$("#"+thisID+" .multiselect").each(function()
{
this.checked = zelf.checked;
});
}
function RSdefaultAction(thisID, defaultAction)
{
var row = $("#"+thisID)[0].getFirstSelectedRow();
$("#"+thisID)[0].clearSelection();
eval(defaultAction).call(null, row);
}

View File

@@ -1,15 +1,17 @@
<% /*
$Revision: 1 $
$Modtime: 28-09-09 15:26 $
$Revision: 2 $
$Modtime: 3-11-09 16:09 $
*/
FCLTHeader.Requires({ lcl: ["MLD"] });
mld = {setmeldingstatus:
function (mld_key, mld_status_key, prs_perslid_key)
{
if (typeof prs_perslid_key == 'undefined')
prs_perslid_key = user_key;
var sql = "BEGIN mld.setmeldingstatus(" + mld_key + ", " + mld_status_key + ", "+prs_perslid_key+"); END;"
Oracle.Execute( sql );
var sql = "BEGIN mld.setmeldingstatus(" + mld_key + ", " + mld_status_key + ", " + prs_perslid_key + "); END;"
Oracle.Execute(sql);
// zou leuk zijn om true of false op te leveren naar gelang de status echt anders is geworden
},
@@ -20,15 +22,15 @@ mld = {setmeldingstatus:
if (typeof prs_perslid_key == 'undefined')
prs_perslid_key = user_key;
var sql = "SELECT pf.prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf "
+ "WHERE prs_perslid_key = "+ behandelaar_key;
var loRs = Oracle.Execute( sql );
+ "WHERE prs_perslid_key = " + behandelaar_key;
var loRs = Oracle.Execute(sql);
if ( !loRs.eof )
var behandelaar_str = lcl_mld_is_mldbeh_to+loRs(0).value;
else
var behandelaar_str = lcl_mld_is_mldbeh_none;
loRs.close();
var sql = "BEGIN fac.trackaction('MLDBEH', " + mld_key + ", "+prs_perslid_key+", NULL, '"+behandelaar_str+"'); END;"
Oracle.Execute( sql );
var sql = "BEGIN fac.trackaction('MLDBEH', " + mld_key + ", " + prs_perslid_key + ", NULL, '" + behandelaar_str + "'); END;"
Oracle.Execute(sql);
},
trackpriochange :
@@ -36,9 +38,9 @@ mld = {setmeldingstatus:
{
if (typeof prs_perslid_key == 'undefined')
prs_perslid_key = user_key;
var prio_str = "TODO "+lcl_mld_is_priochanged + prio;
var sql = "BEGIN fac.trackaction('MLDUPD', " + mld_key + ", "+prs_perslid_key+", NULL, '"+prio_str+"'); END;"
Oracle.Execute( sql );
var prio_str = "TODO " + lcl_mld_is_priochanged + prio;
var sql = "BEGIN fac.trackaction('MLDUPD', " + mld_key + ", " + prs_perslid_key + ", NULL, '" + prio_str + "'); END;"
Oracle.Execute(sql);
},
noteupdate:
@@ -47,11 +49,20 @@ mld = {setmeldingstatus:
{
if ((mld_bo_logboek_mode == 1 || mld_bo_logboek_mode == 3))
{
var sql = "BEGIN fac.trackaction('MLDUPD', " + mld_key + ", "+user_key+", NULL, '"+ptxt+"'); END;"
var sql = "BEGIN fac.trackaction('MLDUPD', " + mld_key + ", " + user_key + ", NULL, '" + ptxt + "'); END;"
oRs = Oracle.Execute(sql);
}
},
trackopdrachtaction :
function (opdr_key, paction, pstr, prs_perslid_key)
{
if (typeof prs_perslid_key == 'undefined')
prs_perslid_key = user_key;
var sql = "BEGIN fac.trackaction('" + paction + "', " + opdr_key + ", " + prs_perslid_key + ", NULL, '" + pstr + "'); END;"
Oracle.Execute(sql);
},
nextworkflowstep:
// Proceed with the next step of the workflow
// p_mld_key: key of the call to be continued
@@ -85,90 +96,259 @@ mld = {setmeldingstatus:
+ " AND st.fac_srttracking_code = '" + tcode + "')";
},
geteinddatum:
function (mld_key, uitvoertijd) {
if (mld_key > -1)
{
sql = "SELECT " + "FAC.DatumTijdPlusUitvoerTijd(m.mld_melding_datum, " + uitvoertijd + ", 'DAGEN')" + " datum"
+ " FROM mld_melding m"
+ " WHERE mld_melding_key = " + mld_key;
}
else
{
sql = "SELECT " + "FAC.DatumTijdPlusUitvoerTijd(SYSDATE, " + uitvoertijd + ", 'DAGEN')" + " datum"
+ " FROM DUAL";
}
oRs2 = Oracle.Execute(sql);
var einddatum = new Date(oRs2("datum").value);
oRs2.close();
return einddatum;
},
mld_stdmeldinginfo:
function _mld_stdmelding(mld_stdmelding_key) {
var sql = "SELECT ins_discipline_key, "
+ " DECODE(COALESCE(sd.ins_srtdiscipline_prefix, ''),'','', sd.ins_srtdiscipline_prefix || '-' )"
+ " || ins_discipline_omschrijving ins_discipline_omschrijving,"
+ " mld_stdmelding_uitvoertijd,"
+ " mld_stdmelding_uitvoertijd_pr1,"
+ " mld_stdmelding_uitvoertijd_pr2,"
+ " mld_stdmelding_uitvoertijd_pr4,"
+ " ins_discipline_kpnverplicht,"
+ " ins_srtdiscipline_alg,"
+ " ins_srtdiscipline_ins,"
+ " ins_srtdiscipline_bes,"
+ " COALESCE(dp.mld_disc_params_directklaar, 0) mld_disc_params_directklaar," // is wel/geen FO-vakgroep
+ " dp.mld_disc_params_frontendprio"
+ " FROM mld_stdmelding ms, mld_discipline md, "
+ " mld_disc_params dp, ins_srtdiscipline sd "
+ " WHERE ms.mld_stdmelding_key = " + mld_stdmelding_key
+ " AND ms.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND md.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) " // TODO JGL: Waarom outer join?
function _mld_stdmelding(mld_stdmelding_key, mld_key) {
// TODO PF: ik denk dat je ook de meldingdatum mee moet geven en dat per geldige
// uitvoertijd de fac.DatumTijdPlusUitvoerTijd(m.mld_melding_datum,m.mld_melding_uitvoertijd,'DAGEN')
// ook moet opleveren, zodat je dat bij wisselen van de prioriteit direct weet.
var sql = "SELECT ins_discipline_key"
+ " , DECODE(COALESCE(sd.ins_srtdiscipline_prefix, ''),'','', sd.ins_srtdiscipline_prefix) prefix"
+ " , ins_discipline_omschrijving ins_discipline_omschrijving"
+ " , mld_stdmelding_uitvoertijd"
+ " , mld_stdmelding_uitvoertijd_pr1"
+ " , mld_stdmelding_uitvoertijd_pr2"
+ " , mld_stdmelding_uitvoertijd_pr4"
+ " , mld_stdmelding_planbaar"
+ " , ins_discipline_kpnverplicht"
+ " , ins_srtdiscipline_alg"
+ " , ins_srtdiscipline_ins"
+ " , ins_srtdiscipline_bes"
+ " , COALESCE(dp.mld_disc_params_directklaar, 0) mld_disc_params_directklaar" // is wel/geen FO-vakgroep
+ " , dp.mld_disc_params_frontendprio"
+ " FROM mld_stdmelding ms, mld_discipline md"
+ " , mld_disc_params dp, ins_srtdiscipline sd"
+ " WHERE ms.mld_stdmelding_key = " + mld_stdmelding_key
+ " AND ms.mld_ins_discipline_key = md.ins_discipline_key"
+ " AND md.ins_discipline_key = dp.mld_ins_discipline_key"
+ " AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+) " // TODO JGL: Waarom outer join?
var oRs = Oracle.Execute(sql);
var oRs = Oracle.Execute( sql );
var prios = [];
if (oRs("mld_stdmelding_uitvoertijd_pr1").value)
prios.push({ text: lcl_mld_urg_kritiek,
key: 1,
val: oRs("mld_stdmelding_uitvoertijd_pr1").value,
einddatum: mld.geteinddatum(mld_key, oRs("mld_stdmelding_uitvoertijd_pr1").value).getTime()
});
if (oRs("mld_stdmelding_uitvoertijd_pr2").value)
prios.push({ text: lcl_mld_urg_hoog,
key: 2,
val: oRs("mld_stdmelding_uitvoertijd_pr2").value,
einddatum: mld.geteinddatum(mld_key, oRs("mld_stdmelding_uitvoertijd_pr2").value).getTime()
});
// Normaal is er altijd
prios.push({ text: lcl_mld_urg_normaal,
key: 3,
val: oRs("mld_stdmelding_uitvoertijd").value,
einddatum: mld.geteinddatum(mld_key, oRs("mld_stdmelding_uitvoertijd").value).getTime()
});
if (oRs("mld_stdmelding_uitvoertijd_pr4").value)
prios.push({ text: lcl_mld_urg_laag,
key: 4,
val: oRs("mld_stdmelding_uitvoertijd_pr4").value,
einddatum: mld.geteinddatum(mld_key, oRs("mld_stdmelding_uitvoertijd_pr4").value).getTime()
});
var prios = [];
if (oRs("mld_stdmelding_uitvoertijd_pr1").Value)
prios.push({ text: lcl_mld_urg_kritiek, key:1, val: oRs("mld_stdmelding_uitvoertijd_pr1").Value});
if (oRs("mld_stdmelding_uitvoertijd_pr2").Value)
prios.push({ text: lcl_mld_urg_hoog, key:2, val: oRs("mld_stdmelding_uitvoertijd_pr2").Value});
// Normaal is er altijd
prios.push({ text: lcl_mld_urg_normaal, key:3, val: oRs("mld_stdmelding_uitvoertijd").Value });
if (oRs("mld_stdmelding_uitvoertijd_pr4").Value)
prios.push({ text: lcl_mld_urg_laag, key:4, val: oRs("mld_stdmelding_uitvoertijd_pr4").Value});
var result = { mld_stdmelding_key: mld_stdmelding_key,
ins_discipline_key: oRs("ins_discipline_key").value,
XXins_srtdiscipline_alg: oRs("ins_srtdiscipline_alg").value == "1",
XXins_srtdiscipline_ins: oRs("ins_srtdiscipline_ins").value == "1",
XXins_srtdiscipline_bes: oRs("ins_srtdiscipline_bes").value == "1",
ins_srtdiscipline_prefix: oRs("prefix").value,
discipline_omschrijving: oRs("ins_discipline_omschrijving").value,
prioriteiten: prios,
XXdirectklaar: oRs("mld_disc_params_directklaar").value,
frontendprio: oRs("mld_disc_params_frontendprio").value,
planbaar: oRs("mld_stdmelding_planbaar").value == "1",
kpnverplicht: oRs("ins_discipline_kpnverplicht").value
};
oRs.Close();
var result = { mld_stdmelding_key: mld_stdmelding_key,
ins_discipline_key: oRs("ins_discipline_key").Value,
XXins_srtdiscipline_alg: oRs("ins_srtdiscipline_alg").Value == "1",
XXins_srtdiscipline_ins: oRs("ins_srtdiscipline_ins").Value == "1",
XXins_srtdiscipline_bes: oRs("ins_srtdiscipline_bes").Value == "1",
discipline_omschrijving: oRs("ins_discipline_omschrijving").Value,
prioriteiten: prios,
XXdirectklaar: oRs("mld_disc_params_directklaar").Value,
frontendprio: oRs("mld_disc_params_frontendprio").Value,
kpnverplicht: oRs("ins_discipline_kpnverplicht").Value
};
oRs.Close();
return result;
return result;
},
func_enabled: // Wat mag ik zoal op deze specifieke melding?
function _func_enabled(pmld_melding_key, pautfunction) {
func_enabled_melding: // Wat mag ik zoal op deze specifieke melding?
function _func_enabled_melding(pmld_melding_key) {
var msql = "SELECT m.mld_ins_discipline_key,"
+ " mld_alg_onroerendgoed_keys,"
+ " mld_melding_status,"
+ " prs_perslid_key,"
+ " mld_disc_params_directklaar"
+ " FROM mld_melding m, mld_disc_params mdp"
+ " WHERE mld_melding_key = " + pmld_melding_key
+ " AND mdp.mld_ins_discipline_key = m.mld_ins_discipline_key";
var moRs = Oracle.Execute(msql);
var mld_status = moRs("mld_melding_status").value;
var is_fo_vakgroep = moRs("mld_disc_params_directklaar").value == 1;
var mresult = user.func_enabled("MLD",
moRs("mld_ins_discipline_key").value,
moRs("mld_alg_onroerendgoed_keys").value, // TODO: Wat als geen INS_SRTDISCIRPLINE_ALG?
moRs("prs_perslid_key").value);
moRs.Close();
var msql = "SELECT mld_ins_discipline_key,"
+ " mld_alg_onroerendgoed_keys,"
+ " prs_perslid_key"
+ " FROM mld_melding m"
+ " WHERE mld_melding_key = " + pmld_melding_key;
var moRs = Oracle.Execute(msql);
var mdisc = moRs("mld_ins_discipline_key").Value;
var mresult = user.func_enabled("MLD",
moRs("mld_ins_discipline_key").Value,
moRs("mld_alg_onroerendgoed_keys").Value,
moRs("prs_perslid_key").Value,
pautfunction);
moRs.Close();
// Speciaal voor Continue button FO: die is onafhankelijk van de rechten op de *huidige* melding
var locauthparams = user.checkAutorisation("WEB_MLDFOF", true);
var mldfof_write = locauthparams && (locauthparams.PRSwritelevel < 9 && locauthparams.ALGwritelevel < 9);
return mresult;
}
mresult.canChange = false; // Wijzig knop tonen
mresult.canAccept = false; // Accepteren
mresult.canReject = false; // Afwijzen
mresult.canForward = false; // Doorsturen
mresult.canClose = false; // Afmelden
mresult.canContinue = false; // Vervolg ('kopie')
mresult.canDoorzet = false; // Doorzetten naar backoffice
mresult.canTerugzet = false; // Terugzetten naar frontoffice
// TODO: Voor sommige acties hoef je niet noodzakelijk fronto rechten te hebben op de *huidige* melding?
switch (mld_status)
{
case 0: // Pending, welbeschouwd zag de backo deze al nooit
mresult.canChange = (fronto && mresult.canWrite("WEB_MLDFOF"));
mresult.canReject = (fronto && mresult.canWrite("WEB_MLDFOF"));
mresult.canDoorzet = (fronto && mresult.canWrite("WEB_MLDFOF"));
mresult.canClose = (fronto && mresult.canWrite("WEB_MLDFOF"));
break;
case 1: // Afgewezen
mresult.canChange = (mresult.canWrite("WEB_MLDFOF") && mld_rejected_is_open == 1 )
mresult.canContinue = mldfof_write;
break;
case 2: // Ingevoerd
mresult.canChange = (fronto && mresult.canWrite("WEB_MLDFOF"));
mresult.canAccept = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3"));
mresult.canReject = (fronto && mresult.canWrite("WEB_MLDBOF"));
mresult.canForward = (mresult.canWrite("WEB_MLDBOF"));
break;
case 3: // Ingezien komt eigenlijk nooit meer voor
mresult.canChange = (mresult.canWrite("WEB_MLDBOF"));
mresult.canAccept = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO3"));
mresult.canReject = (mresult.canWrite("WEB_MLDBOF"));
mresult.canForward = (mresult.canWrite("WEB_MLDBOF"));
break;
case 4: // Geaccepteerd
case 7: // Uitgegeven
mresult.canChange = (mresult.canWrite("WEB_MLDBOF"));
mresult.canTerugzet = (is_fo_vakgroep && mresult.canWrite("WEB_MLDBOF"));
mresult.canClose = (mresult.canWrite("WEB_MLDBOF") || mresult.canWrite("WEB_MLDBO2"));
mresult.canContinue = mldfof_write;
break;
case 5: // Afgemeld
mresult.canChange = (mresult.canWrite("WEB_ORDFIN")); // TODO of zoiets! (of was dat bij opdrachten?)
mresult.canContinue = mldfof_write;
break;
case 6: // Admin voltooid
mresult.canContinue = mldfof_write;
break;
}
return mresult;
},
func_enabled_opdracht: // Wat mag ik zoal op deze specifieke opdracht?
function _func_enabled_opdracht(pmld_opdr_key) {
var msql = "SELECT m.mld_ins_discipline_key"
+ " , mld_alg_onroerendgoed_keys"
+ " , mld_statusopdr_key"
+ " , o.prs_perslid_key"
+ " , k.prs_perslid_key budgethouder"
+ " , mu.type"
+ " FROM mld_opdr o"
+ " , mld_melding m"
+ " , prs_kostenplaats k"
+ " , mld_v_uitvoerende mu"
+ " WHERE o.mld_melding_key = m.mld_melding_key"
+ " AND o.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ " AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key"
+ " AND o.mld_opdr_key = " + pmld_opdr_key
var moRs = Oracle.Execute(msql);
var opdr_status = moRs("mld_statusopdr_key").value;
var budgethouder = moRs("budgethouder").value;
var uitv_type = moRs("type");
var mresult = user.func_enabled("MLD",
moRs("mld_ins_discipline_key").value,
moRs("mld_alg_onroerendgoed_keys").value, // TODO: Wat als geen INS_SRTDISCIRPLINE_ALG?
moRs("prs_perslid_key").value);
moRs.Close();
mresult.canChange = false; // Wijzig knop tonen
mresult.canApprove = false; // Fiateren/Goedkeuren
mresult.canReject = false; // Afwijzen
mresult.canClose = false; // Afmelden
mresult.couldClose = false; // Kon de opdracht afmelden of heb hem afgemeld (Kan in show mode close kenmerken zien)
mresult.canCopy = false; // Kopi<70>ren
switch (opdr_status)
{
case 1: // Afgewezen
mresult.canChange = (mresult.canWrite("WEB_ORDBOF") ||
// Onderstaande code regel gelijk aan:
// (mresult.canWrite("WEB_ORDBO2") && mld_afmelden_extern == 2 && uitv_type == "B") ||
// (mresult.canWrite("WEB_ORDBO2") && uitv_type == "P")
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 2: // Niet akkoord
mresult.canChange = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 3: // Ter fiattering
mresult.canChange = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canApprove = (budgethouder == user_key && mresult.canWrite("WEB_ORDBOF"));
mresult.canReject = (budgethouder == user_key && mresult.canWrite("WEB_ORDBOF"));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 4: // Gefiatteerd
mresult.canChange = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 5: // Uitgegeven
mresult.canChange = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canClose = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 6: // Afgemeld
mresult.canChange = (mresult.canWrite("WEB_ORDFIN"));
mresult.couldClose = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
mresult.canCopy = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
case 7: // Verwerkt
mresult.couldClose = (mresult.canWrite("WEB_ORDBOF") ||
(mresult.canWrite("WEB_ORDBO2") && !(mld_afmelden_extern != 2 && uitv_type == "B")));
break;
}
return mresult;
}
}
%>
<%
/*
Description: Ophalen van mld om client-side allerlei interactie te bieden
Context: get_mld_info_ajax.asp
diverse andere bestanden die ook dynamisch info ophalen via get_mld_info_ajax.asp
Note:
*/
mld_info =
{
// in mld opgenomen -PF
}
%>

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
<%@ LANGUAGE = JavaScript %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 17:24 $
$Revision: 2 $
$Modtime: 29-10-09 12:59 $
File: mld_edit_melding_save.asp
Status: 85%
@@ -11,6 +11,7 @@
Sinds 5i zetten we de mld_status expliciet en belangrijk ipv de diverse _datums
Als backo opslaat dan wordt impliciet de status op 4 (geaccepteerd) gezet
*/ %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/escape.inc"-->
<!--#include file="../Shared/funcodes.inc"-->
@@ -19,439 +20,401 @@
<!--#include file="../shared/save2db.inc" -->
<!--#include file="../Shared/kenmerk_common.inc"-->
<!--#include file="mld.inc" -->
<%
FCLTHeader.Requires({plugins: [], js:["FcltMgr.js"] })
FCLTHeader.Requires({ plugins: [], js:["FcltMgr.js"] })
var urole = getQParam("urole");
var mld_key = getQParamInt("mld_key");
var isNew = (mld_key==-1); // dan gaan we readyAtOnce, mld_melding_autoprint, mld_ask_for_orders beschouwen
var urole = getQParam("urole");
var mld_key = getQParamInt("mld_key");
var isNew = (mld_key == -1); // dan gaan we readyAtOnce, mld_melding_autoprint, mld_ask_for_orders beschouwen
// TODO: Autorisatie check if (func_enabled["WEB_MLDBOF"] || func_enabled["WEB_MLDBO3"]) {
// TODO: zinloze parameters opruimen hier
var backo = Request.Form("backo").Count>0;
var full_backo = Request.Form("full_backo").Count>0; // func_enabled[ "WEB_MLDBOF" ];
var backo3 = Request.Form("backo3").Count>0; // func_enabled[ "WEB_MLDBO3" ];
var fronto = Request.Form("fronto").Count>0;
var reado = Request.Form("reado").Count>0;
var e_print = Request.Form("print");
var minfo = Request.Form("minfo").Count>0;
var pmode = Request.Form("pmode");
var readyAtOnce = getFParamInt("readyAtOnce",0)==1;
// TODO: Autorisatie check if (func_enabled["WEB_MLDBOF"] || func_enabled["WEB_MLDBO3"]) {
// TODO: zinloze parameters opruimen hier
var backo = Request.Form("backo").Count>0;
var full_backo = Request.Form("full_backo").Count>0; // func_enabled[ "WEB_MLDBOF" ];
var backo3 = Request.Form("backo3").Count>0; // func_enabled[ "WEB_MLDBO3" ];
var fronto = Request.Form("fronto").Count>0;
var reado = Request.Form("reado").Count>0;
var e_print = Request.Form("print");
var pmode = Request.Form("pmode");
var readyAtOnce = getFParamInt("readyAtOnce",0)==1;
var fronto = urole == "fo";
var backo = urole == "bo";
var minfo = urole == "mi";
var frontend = (!fronto & !backo & !minfo);
var fronto = urole == "fo";
var backo = urole == "bo";
var fo_orders = Request.Form("orders").Count>0;
var mode = Request.Form("mode");
if (fo_orders)
{
fo_orders = Request.Form("orders");
}
var p_id = Request.Form("person").Count>0 ? Request.Form("person") : user_key;
if (func_enabled[full_backo?"WEB_MLDBOF"
:backo3?"WEB_MLDBO3"
:fronto?"WEB_MLDFOF"
:"WEB_MLDUSE"])
{
// Parse parameters...
// Originally, the values were the given value or null. But, there is a big difference for the
// the parameter not being present, or being empty.
// if it is not present, it is undefined, and a previous value should be kept
// if it is present but empty, it is defined and should be made empty.
// Several support calls consider errors in this part, for kost_k and ordernr mainly.
var loc = parseInt(Request.Form("locatiekey"),10);
var sBehandel = getFParam("sBehandel", -2);
var prio = getFParam("prio", -1);
var del_address = getFParam("del_address", null);
if (del_address)
{
oRs = Oracle.Execute('select nvl(alg_locatie_key,-1) from mld_adres where mld_adres_key = '+del_address);
if( !oRs.eof && !(oRs(0).Value == -1)) {
var loc = oRs(0).Value;
}
}
// kost_k will be null,1 in the database. -1 means: field not present
// TODO: kost_k uit kost_k form field halen, p_kost_k is er niet meer
var kost_k = Request.Form("p_kost_k").Count>0 ? Request.Form("p_kost_k") : -1;
kost_k = (kost_k == '' ? null : kost_k); // could be null anyway
var kostplnr_key = Request.Form("account").Count>0 ? Request.Form("account") : -1;
var act_key = Request.Form("act_key").Count>0 ? Request.Form("act_key") : -1;
var mld_status = parseInt( Request.Form("mld_status"), 10 ); // TODO: Deze niet uit het formulier halen
// melding_read_only: AKZA#438 No database update if printing while all is readonly
// condition essentially matches 'disabled' of complains.asp
var melding_read_only = ((e_print == "t" || e_print == "tr")
&& ((backo && mld_status >= 5) || (!backo && mld_status >= 3))
&& ( !isNaN(mld_key) ));
// no need for database update if nothing was changed
var changed = Request.Form("changed").Count>0 ? (Request.Form("changed") == 1) : true;
// let op (moet in het invulscherm en niet hier? Dan is dit het vangnet)
if (isNaN (mld_status)) mld_status = 2; // of 0 als fronto en is_fo_vakgroep
if (readyAtOnce) mld_status = 5;
var exec_time = parseInt( Request.Form("exec_time"), 10 );
// Parse Place
var bld = parseInt( Request.Form( "gebouwkey" ), 10 );
var floor = parseInt( Request.Form("verdiepingkey"), 10 );
var rooms = parseInt( Request.Form("ruimtekey"), 10 );
var room = 0;
if( ! isNaN( rooms ) && rooms > 0 ) room = rooms; else
if( ! isNaN( floor ) && floor > 0 ) room = floor; else
if( ! isNaN( bld ) && bld > 0 ) room = bld;
__Log('room : ' + room);
__Log('mld_status : ' + mld_status);
// TODO: Wat deed dit?
//if (isNaN(loc) )
// loc = location;
__Log('loc : ' + loc);
stdmelding = getFParam("stdm");
sql = "SELECT mld_ins_discipline_key FROM mld_stdmelding WHERE mld_stdmelding_key = "+stdmelding;
discipline_key = Oracle.Execute(sql)("mld_ins_discipline_key").Value;
// Deze velden altijd opslaan
var fields = [ { dbs: "mld_melding_omschrijving", typ: "varchar", frm: "melding_omschrijving" },
{ dbs: "mld_kosten_klant", typ: "bool", frm: "p_kost_k" },
{ dbs: "mld_melding_ordernr", typ: "varchar", frm: "ordernr" }, // TODO: RTRIM()
{ dbs: "prs_perslid_key", typ: "key", frm: "person" },
{ dbs: "prs_kostenplaats_key", typ: "key", frm: "account" }, // TODO: NULL zetten als niet meegegeven?
{ dbs: "mld_melding_opmerking", typ: "varchar", frm: "rem" },
{ dbs: "mld_stdmelding_key", typ: "key", frm: "stdm" },
{ dbs: "mld_ins_discipline_key", typ: "sql", val: discipline_key }, // TODO door een trigger
{ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: room },
//{ dbs: "mld_alg_locatie_key", typ: "key", val: loc>0?loc:mld_locatie_if_not_alg },
{ dbs: "mld_adres_key", typ: "number", frm: "del_address" },
{ dbs: "mld_melding_behandelaar_key", typ: "key", frm: "sBehandel" }
];
if( mld_key > 0 ) { // Update an existing mld_melding record
// Dit is het (laatste) moment waarop we de oude data nog hebben als die gewijzigd is
// mld_stdmelding_key is voor ons belangrijk om eventueel documentfolders te hernoemen.
sql = "SELECT mld_stdmelding_key, "
+ " mld_melding_status,"
+ " COALESCE(mld_melding_behandelaar_key, -1) mld_melding_behandelaar_key," // dan kan ik makkelijk vergelijken met de meegegeven waarde
+ " mld_melding_spoed"
+ " FROM mld_melding WHERE mld_melding_key = " + mld_key;
oRs = Oracle.Execute(sql);
old_stdm = oRs("MLD_STDMELDING_KEY").Value;
old_status = oRs("mld_melding_status").Value;
old_behandelaar = oRs("mld_melding_behandelaar_key").value;
old_prioriteit = oRs("mld_melding_spoed").value;
if (urole=="bo" && old_status < 4)
mld.setmeldingstatus(mld_key, 4); // Impliciete acceptatie TODO: sterker (functioneel definieren); urole==bo lijkt me te zwak
if (prio != -1)
fields.push({ dbs: "mld_melding_spoed", typ: "key", val: prio });
fields.push({ dbs: "mld_melding_uitvoertijd", typ: "number", frm: "exec_time", val: mld_melding_uitvoertijd }) // TODO: Als < 0 dan ook default nemen
sql = buildUpdate("mld_melding", fields) + " mld_melding_key = " + mld_key;
/* SUBMIT THE CHANGED DATA */
oRs = Oracle.Execute( sql );
/* SUBMIT ADDITIONAL TRACKING */
if (sBehandel != -2 && old_behandelaar != sBehandel) // Anders is-ie niet meegegeven of niet veranderd
mld.trackbehandelaar(mld_key, sBehandel);
if (prio != -1 && old_prioriteit != prio)
mld.trackpriochange(mld_key, prio);
/* Match de srtkenmerk_key-s van de oude en nieuwe mld_stdmelding */
if (old_stdm != stdmelding)
{
__Log("Old MLD_STDMELDING_KEY: " + old_stdm + " New: " + stdmelding);
// pas op dat zelfs de vakgroep (mld_ins_discipline_key) gewijzigd kan zijn
var flexsql = "SELECT k_old.mld_kenmerk_key k_old, k_new.mld_kenmerk_key k_new "
+ " FROM mld_srtkenmerk t, "
+ " mld_kenmerk k_old, "
+ " mld_kenmerk k_new, "
+ " mld_stdmelding s_old, "
+ " mld_stdmelding s_new "
+ " WHERE s_old.mld_stdmelding_key = " + old_stdm
+ " AND s_new.mld_stdmelding_key = " + stdmelding
+ " AND t.mld_srtkenmerk_kenmerktype IN ('F', 'E', 'M') "
+ " AND ( ( k_old.mld_stdmelding_key = s_old.mld_stdmelding_key "
+ " AND k_old.mld_kenmerk_niveau = 'S' "
+ " ) "
+ " OR ( k_old.mld_stdmelding_key = s_old.mld_ins_discipline_key "
+ " AND k_old.mld_kenmerk_niveau = 'D' "
+ " ) "
+ " ) "
+ " AND ( ( k_new.mld_stdmelding_key = s_new.mld_stdmelding_key "
+ " AND k_new.mld_kenmerk_niveau = 'S' "
+ " ) "
+ " OR ( k_new.mld_stdmelding_key = s_new.mld_ins_discipline_key "
+ " AND k_new.mld_kenmerk_niveau = 'D' "
+ " ) "
+ " ) "
+ " AND k_old.mld_kenmerk_verwijder IS NULL "
+ " AND k_new.mld_kenmerk_verwijder IS NULL "
+ " AND k_old.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND k_new.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND t.mld_srtkenmerk_verwijder IS NULL "
RenameFlexFolders("MLD/M"+mld_key, flexsql);
}
} else { // A new mld_melding record
if( isNaN(exec_time) || exec_time < 0 ) {
// Exec_time onbekend. Inputbox is niet aanwezig.
// Get exec_time from mld_stdmelding
// exec_time = mld_melding_uitvoertijd;
// __Log('inc. uitvoertijd:'+mld_melding_uitvoertijd); from _default.inc
sql = "SELECT COALESCE(mld_stdmelding_uitvoertijd," + mld_melding_uitvoertijd +") "
+ " FROM mld_stdmelding "
+ " WHERE mld_stdmelding_key= "+stdmelding;
oRs = Oracle.Execute( sql );
if( !oRs.eof ) exec_time = oRs(0).Value;
oRs.close();
}
fields = fields.concat(
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
{ dbs: "mld_meldbron_key", typ: "key", val: mld_meldbron_key },
{ dbs: "mld_melding_datum", typ: "datetime", val: new Date() },
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
{ dbs: "mld_melding_user_key", typ: "key", val: user_key },
{ dbs: "fac_activiteit_key", typ: "key", frm: "fac_activiteit_key" },
{ dbs: "mld_melding_uitvoertijd", typ: "number", val: exec_time }
]);
var mldIns = buildInsert("mld_melding", fields);
var mld_key = mldIns.sequences["mld_melding_key"];
sql = mldIns.sql;
oRs = Oracle.Execute( sql );
}
mld.noteupdate (mld_key, lcl_mld_note_onchangetext);
mld.setmeldingstatus(mld_key, mld_status);
var endu = false;
if(!fronto && !backo && !reado)
endu = true;
if (melding_read_only || !changed ) {
// do nothing...
} else {
var fo_orders = Request.Form("orders").Count>0;
var mode = Request.Form("mode");
// Objects...
if ( fo_orders ) {
fo_orders = Request.Form("orders");
var obj_n = Request.Form("r_objs").Count;
var obj_l = '';
for(i=1;i<=obj_n;i++){
obj = parseInt(Request.Form("r_objs")(i));
if( !isNaN(obj) && obj>0 ) obj_l=(obj_l==''?'':obj_l+',')+obj;
}
if(obj_l!='') {
sql = " delete mld_melding_object where MLD_MELDING_KEY="+mld_key
+ " and INS_DEEL_KEY not in("+obj_l+")"
oRs = Oracle.Execute( sql );
sql = "insert into mld_melding_object (MLD_MELDING_KEY,INS_DEEL_KEY)"
+ " select " + mld_key + ",ins_deel_key from INS_v_aanwezigDEEL"
+ " where INS_DEEL_KEY in("+obj_l+")"
+ " and INS_DEEL_KEY not in(select INS_DEEL_KEY from mld_v_aanwezigmelding_object"
+ " where MLD_MELDING_KEY="+mld_key+")";
oRs = Oracle.Execute( sql );
}
}
// Delete all mld_melding flexprops, at least as long as it is allowed to change flexprops
// (ie. status not yet 'Ingezien' or - for BO - not yet 'Uitgegeven')
if( ! isNew && (mld_status <= 2 || (backo && mld_status <= 4))) {
sql = "delete from MLD_KENMERKMELDING where MLD_MELDING_KEY="+mld_key;
Oracle.Execute( sql );
}
var p_id = Request.Form("person").Count>0 ? Request.Form("person") : user_key;
saveFlexKenmerken(mld_key, "MLD_KENMERKMELDING", "MLD_MELDING_KEY",
"MLD_KENMERKMELDING_WAARDE", "mld_kenmerk_key",
null, // ??? Geen keys nodig, we hebben alles al opgeruimd
false, // geen QueryString maar Form
null,null,
isNew,"MLD/M");
if (func_enabled[full_backo?"WEB_MLDBOF"
:backo3?"WEB_MLDBO3"
:fronto?"WEB_MLDFOF"
:minfo?"WEB_MLDBAC"
:"WEB_MLDUSE"]) {
// Handle workflow actions for initial call:
if (isNew) // Doe wat speciale dingen voor nieuwe opdrachten
{
mld.nextworkflowstep(mld_key, -1); // -1 = initial (the originating call)
// als er een activiteit is gevonden met een sjabloon opdracht (sjabl_opdr_key > 0)
// dan moet er een nieuwe opdracht onder water aangemaakt worden met het sjabloon als voorbeeld
sql = "SELECT mo.mld_opdr_key"
+ " FROM mld_disc_params dp, fac_activiteit fa, mld_opdr mo"
+ " WHERE dp.fac_activiteit_key = fa.fac_activiteit_key"
+ " AND fa.fac_activiteit_xmlnode = 'opdracht'"
+ " AND mo.fac_activiteit_key = fa.fac_activiteit_key"
+ " AND dp.mld_ins_discipline_key = " + discipline_key;
oRs = Oracle.Execute(sql);
sjabl_opdr_key=-1;
if (!oRs.Eof)
sjabl_opdr_key = oRs("mld_opdr_key").Value;
oRs.Close();
if (sjabl_opdr_key > 0)
{
// Eerst de melding op gaccepteerd zetten dan opdracht aanmaken
/* FSN#15158/PF 13-2-2009 15:00:24*/
mld.setmeldingstatus(mld_key, 4);
// Parse parameters...
// Originally, the values were the given value or null. But, there is a big difference for the
// the parameter not being present, or being empty.
// if it is not present, it is undefined, and a previous value should be kept
// if it is present but empty, it is defined and should be made empty.
// Several support calls consider errors in this part, for kost_k and ordernr mainly.
var sql = "SELECT mld_s_mld_opdr_key.nextval FROM dual";
var loc = parseInt(Request.Form("locatiekey"),10);
var sBehandel = getFParam("sBehandel", -2);
var prio = getFParam("prio", -1);
var del_address = getFParam("del_address", null);
if (del_address)
{
oRs = Oracle.Execute('select nvl(alg_locatie_key,-1) from mld_adres where mld_adres_key = '+del_address);
if( !oRs.eof && !(oRs(0).Value == -1)) {
var loc = oRs(0).Value;
}
}
// kost_k will be null,1 in the database. -1 means: field not present
// TODO: kost_k uit kost_k form field halen, p_kost_k is er niet meer
var kost_k = Request.Form("p_kost_k").Count>0 ? Request.Form("p_kost_k") : -1;
kost_k = (kost_k == '' ? null : kost_k); // could be null anyway
var kostplnr_key = Request.Form("account").Count>0 ? Request.Form("account") : -1;
var act_key = Request.Form("act_key").Count>0 ? Request.Form("act_key") : -1;
var mld_status = parseInt( Request.Form("mld_status"), 10 ); // TODO: Deze niet uit het formulier halen
// melding_read_only: AKZA#438 No database update if printing while all is readonly
// condition essentially matches 'disabled' of complains.asp
var melding_read_only = ((e_print=="t" || e_print=="tr")
&& ((backo && mld_status >= 5) || (!backo && mld_status >= 3))
&& ( !isNaN(mld_key) ));
// no need for database update if nothing was changed
var changed = Request.Form("changed").Count>0 ? (Request.Form("changed") == 1) : true;
// let op (moet in het invulscherm en niet hier? Dan is dit het vangnet)
if (isNaN (mld_status)) mld_status = 2; // of 0 als fronto en is_fo_vakgroep
if (readyAtOnce) mld_status = 5;
var exec_time = parseInt( Request.Form("exec_time"), 10 );
// Parse Place
var bld = parseInt( Request.Form( "gebouwkey" ), 10 );
var floor = parseInt( Request.Form("verdiepingkey"), 10 );
var rooms = parseInt( Request.Form("ruimtekey"), 10 );
var room = 0;
if( ! isNaN( rooms ) && rooms > 0 ) room = rooms; else
if( ! isNaN( floor ) && floor > 0 ) room = floor; else
if( ! isNaN( bld ) && bld > 0 ) room = bld;
__Log('room : ' + room);
__Log('mld_status : ' + mld_status);
// TODO: Wat deed dit?
//if (isNaN(loc) )
// loc = location;
__Log('loc : ' + loc);
stdmelding = getFParam("stdm");
sql = "SELECT mld_ins_discipline_key FROM mld_stdmelding WHERE mld_stdmelding_key = "+stdmelding;
discipline_key = Oracle.Execute(sql)("mld_ins_discipline_key").Value;
// Deze velden altijd opslaan
var fields = [ { dbs: "mld_melding_omschrijving", typ: "varchar", frm: "melding_omschrijving" },
{ dbs: "mld_kosten_klant", typ: "bool", frm: "p_kost_k" },
{ dbs: "mld_melding_ordernr", typ: "varchar", frm: "ordernr" }, // TODO: RTRIM()
{ dbs: "prs_kostenplaats_key", typ: "key", frm: "account" }, // TODO: NULL zetten als niet meegegeven?
{ dbs: "mld_melding_opmerking", typ: "varchar", frm: "rem" },
{ dbs: "mld_stdmelding_key", typ: "key", frm: "stdm" },
{ dbs: "mld_ins_discipline_key", typ: "sql", val: discipline_key }, // TODO door een trigger
{ dbs: "mld_alg_onroerendgoed_keys", typ: "key", val: room },
// { dbs: "mld_alg_locatie_key", typ: "key", val: loc>0?loc:mld_locatie_if_not_alg },
{ dbs: "mld_adres_key", typ: "number", frm: "del_address" },
{ dbs: "mld_melding_behandelaar_key", typ: "key", frm: "sBehandel" }
];
if( mld_key > 0 ) { // Update an existing mld_melding record
// Dit is het (laatste) moment waarop we de oude data nog hebben als die gewijzigd is
// mld_stdmelding_key is voor ons belangrijk om eventueel documentfolders te hernoemen.
sql = "SELECT mld_stdmelding_key, "
+ " mld_melding_status,"
+ " COALESCE(mld_melding_behandelaar_key, -1) mld_melding_behandelaar_key," // dan kan ik makkelijk vergelijken met de meegegeven waarde
+ " mld_melding_spoed"
+ " FROM mld_melding WHERE mld_melding_key = " + mld_key;
oRs = Oracle.Execute(sql);
old_stdm = oRs("MLD_STDMELDING_KEY").Value;
old_status = oRs("mld_melding_status").Value;
old_behandelaar = oRs("mld_melding_behandelaar_key").value;
old_prioriteit = oRs("mld_melding_spoed").value;
if (urole=="bo" && old_status < 4)
mld.setmeldingstatus(mld_key, 4); // Impliciete acceptatie TODO: sterker (functioneel definieren); urole==bo lijkt me te zwak
if (endu)
fields.push({ dbs: "prs_perslid_key", typ: "key", frm: "person" });
else
fields.push({ dbs: "mld_melding_user_key", typ: "key", frm: "person" });
if (prio != -1)
fields.push({ dbs: "mld_melding_spoed", typ: "key", val: prio });
fields.push({ dbs: "mld_melding_uitvoertijd", typ: "number", frm: "exec_time", val: mld_melding_uitvoertijd }) // TODO: Als < 0 dan ook default nemen
sql = buildUpdate("mld_melding", fields) + " mld_melding_key = " + mld_key;
/* SUBMIT THE CHANGED DATA */
oRs = Oracle.Execute( sql );
/* SUBMIT ADDITIONAL TRACKING */
if (sBehandel != -2 && old_behandelaar != sBehandel) // Anders is-ie niet meegegeven of niet veranderd
mld.trackbehandelaar(mld_key, sBehandel);
if (prio != -1 && old_prioriteit != prio)
mld.trackpriochange(mld_key, prio);
/* Match de srtkenmerk_key-s van de oude en nieuwe mld_stdmelding */
if (old_stdm != stdmelding)
{
__Log("Old MLD_STDMELDING_KEY: " + old_stdm + " New: " + stdmelding);
// pas op dat zelfs de vakgroep (mld_ins_discipline_key) gewijzigd kan zijn
var flexsql = "SELECT k_old.mld_kenmerk_key k_old, k_new.mld_kenmerk_key k_new "
+ " FROM mld_srtkenmerk t, "
+ " mld_kenmerk k_old, "
+ " mld_kenmerk k_new, "
+ " mld_stdmelding s_old, "
+ " mld_stdmelding s_new "
+ " WHERE s_old.mld_stdmelding_key = " + old_stdm
+ " AND s_new.mld_stdmelding_key = " + stdmelding
+ " AND t.mld_srtkenmerk_kenmerktype IN ('F', 'E', 'M') "
+ " AND ( ( k_old.mld_stdmelding_key = s_old.mld_stdmelding_key "
+ " AND k_old.mld_kenmerk_niveau = 'S' "
+ " ) "
+ " OR ( k_old.mld_stdmelding_key = s_old.mld_ins_discipline_key "
+ " AND k_old.mld_kenmerk_niveau = 'D' "
+ " ) "
+ " ) "
+ " AND ( ( k_new.mld_stdmelding_key = s_new.mld_stdmelding_key "
+ " AND k_new.mld_kenmerk_niveau = 'S' "
+ " ) "
+ " OR ( k_new.mld_stdmelding_key = s_new.mld_ins_discipline_key "
+ " AND k_new.mld_kenmerk_niveau = 'D' "
+ " ) "
+ " ) "
+ " AND k_old.mld_kenmerk_verwijder IS NULL "
+ " AND k_new.mld_kenmerk_verwijder IS NULL "
+ " AND k_old.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND k_new.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND t.mld_srtkenmerk_verwijder IS NULL "
RenameFlexFolders("MLD/M"+mld_key, flexsql);
}
} else { // A new mld_melding record
if( isNaN(exec_time) || exec_time < 0 ) {
// Exec_time onbekend. Inputbox is niet aanwezig.
// Get exec_time from mld_stdmelding
// exec_time = mld_melding_uitvoertijd;
// __Log('inc. uitvoertijd:'+mld_melding_uitvoertijd); from _default.inc
sql = "SELECT COALESCE(mld_stdmelding_uitvoertijd," + mld_melding_uitvoertijd +") "
+ " FROM mld_stdmelding "
+ " WHERE mld_stdmelding_key= "+stdmelding;
oRs = Oracle.Execute( sql );
if( !oRs.eof ) exec_time = oRs(0).Value;
oRs.close();
}
fields = fields.concat(
[ { dbs: "mld_melding_key", typ: "key", seq: "mld_s_mld_melding_key" },
{ dbs: "mld_meldbron_key", typ: "key", val: mld_meldbron_key },
{ dbs: "mld_melding_datum", typ: "datetime", val: new Date() },
{ dbs: "mld_melding_module", typ: "varchar", val: "MLD" },
{ dbs: "prs_perslid_key", typ: "key", frm: "person" },
{ dbs: "mld_melding_user_key", typ: "key", val: user_key },
{ dbs: "fac_activiteit_key", typ: "key", frm: "fac_activiteit_key" },
{ dbs: "mld_melding_uitvoertijd", typ: "number", val: exec_time }
]);
var mldIns = buildInsert("mld_melding", fields);
var mld_key = mldIns.sequences["mld_melding_key"];
sql = mldIns.sql;
oRs = Oracle.Execute( sql );
}
mld.noteupdate (mld_key, lcl_mld_note_onchangetext);
mld.setmeldingstatus(mld_key, mld_status);
if (melding_read_only || !changed ) {
// do nothing...
} else {
// Objects...
var obj_n = Request.Form("r_objs").Count;
var obj_l = '';
for(i=1;i<=obj_n;i++){
obj = parseInt(Request.Form("r_objs")(i));
if( !isNaN(obj) && obj>0 ) obj_l=(obj_l==''?'':obj_l+',')+obj;
}
if(obj_l!='') {
sql = " delete mld_melding_object where MLD_MELDING_KEY="+mld_key
+ " and INS_DEEL_KEY not in("+obj_l+")"
oRs = Oracle.Execute( sql );
sql = "insert into mld_melding_object (MLD_MELDING_KEY,INS_DEEL_KEY)"
+ " select " + mld_key + ",ins_deel_key from INS_v_aanwezigDEEL"
+ " where INS_DEEL_KEY in("+obj_l+")"
+ " and INS_DEEL_KEY not in(select INS_DEEL_KEY from mld_v_aanwezigmelding_object"
+ " where MLD_MELDING_KEY="+mld_key+")";
oRs = Oracle.Execute( sql );
}
}
if (melding_read_only || minfo) { // nu: ongeacht changed, moet nog beter (..)
// do nothing...
} else {
// Delete all mld_melding flexprops, at least as long as it is allowed to change flexprops
// (ie. status not yet 'Ingezien' or - for BO - not yet 'Uitgegeven')
if( ! isNew && (mld_status <= 2 || (backo && mld_status <= 4))) {
sql = "delete from MLD_KENMERKMELDING where MLD_MELDING_KEY="+mld_key;
Oracle.Execute( sql );
}
saveFlexKenmerken(mld_key, "MLD_KENMERKMELDING", "MLD_MELDING_KEY",
"MLD_KENMERKMELDING_WAARDE", "mld_kenmerk_key",
null, // ??? Geen keys nodig, we hebben alles al opgeruimd
false, // geen QueryString maar Form
null,null,
isNew,"MLD/M");
}
// Handle workflow actions for initial call:
if (isNew) // Doe wat speciale dingen voor nieuwe opdrachten
{
mld.nextworkflowstep(mld_key, -1); // -1 = initial (the originating call)
// als er een activiteit is gevonden met een sjabloon opdracht (sjabl_opdr_key > 0)
// dan moet er een nieuwe opdracht onder water aangemaakt worden met het sjabloon als voorbeeld
sql = "SELECT mo.mld_opdr_key"
+ " FROM mld_disc_params dp, fac_activiteit fa, mld_opdr mo"
+ " WHERE dp.fac_activiteit_key = fa.fac_activiteit_key"
+ " AND fa.fac_activiteit_xmlnode = 'opdracht'"
+ " AND mo.fac_activiteit_key = fa.fac_activiteit_key"
+ " AND dp.mld_ins_discipline_key = " + discipline_key;
oRs = Oracle.Execute(sql);
sjabl_opdr_key=-1;
if (!oRs.Eof)
sjabl_opdr_key = oRs("mld_opdr_key").Value;
new_opdr = oRs(0).Value;
oRs.Close();
if (sjabl_opdr_key > 0)
{
// Eerst de melding op gaccepteerd zetten dan opdracht aanmaken
/* FSN#15158/PF 13-2-2009 15:00:24*/
mld.setmeldingstatus(mld_key, 4);
var sql = "SELECT mld_s_mld_opdr_key.nextval FROM dual";
sql = "INSERT INTO mld_opdr ("
+ "mld_opdr_key, "
+ " mld_opdr_module"
+ ", mld_melding_key"
+ ", mld_uitvoerende_keys"
+ ", mld_typeopdr_key"
+ ", mld_statusopdr_key"
+ ", mld_standaardopdr_key"
+ ", mld_opdr_omschrijving"
+ ", mld_opdr_datumbegin"
+ ", mld_opdr_dagen"
+ ", mld_opdr_werkzaamheden"
+ ", mld_opdr_uren"
+ ", mld_opdr_materiaal"
+ ", mld_opdr_kosten"
+ ", mld_opdr_contactpersoon"
+ ", mld_opdr_geprint"
+ ", mld_opdr_bedrijfopdr_volgnr"
+ ", mld_opdr_uurloon"
+ ", prs_perslid_key"
+ ", prs_contactpersoon_key"
+ ", cnt_contract_key"
+ ", cnt_contract_dienst_key"
+ ", prs_kostenplaats_key"
+ ", mld_opdr_opmerking_fiat"
+ ", mld_opdr_ordernr"
+ ", mld_opdr_teverzenden"
+ ", mld_opdr_opmerking)"
+ " SELECT"
+ " " + new_opdr + ", "
+ " mld_opdr_module"
+ ", " + mld_key
+ ", mld_uitvoerende_keys"
+ ", mld_typeopdr_key"
+ ", mld_statusopdr_key"
+ ", mld_standaardopdr_key"
+ ", mld_opdr_omschrijving"
+ ", mld_opdr_datumbegin"
+ ", mld_opdr_dagen"
+ ", mld_opdr_werkzaamheden"
+ ", mld_opdr_uren"
+ ", mld_opdr_materiaal"
+ ", mld_opdr_kosten"
+ ", mld_opdr_contactpersoon"
+ ", mld_opdr_geprint"
+ ", mld_opdr_bedrijfopdr_volgnr"
+ ", mld_opdr_uurloon"
+ ", prs_perslid_key"
+ ", prs_contactpersoon_key"
+ ", cnt_contract_key"
+ ", cnt_contract_dienst_key"
+ ", prs_kostenplaats_key"
+ ", mld_opdr_opmerking_fiat"
+ ", mld_opdr_ordernr"
+ ", mld_opdr_teverzenden"
+ ", mld_opdr_opmerking"
+ " FROM mld_opdr o"
+ " WHERE o.mld_opdr_key = " + sjabl_opdr_key;
oRs = Oracle.Execute(sql);
new_opdr = oRs(0).Value;
oRs.Close();
Oracle.Execute(sql);
sql = "INSERT INTO mld_opdr ("
+ "mld_opdr_key, "
+ " mld_opdr_module"
+ ", mld_melding_key"
+ ", mld_uitvoerende_keys"
+ ", mld_typeopdr_key"
+ ", mld_statusopdr_key"
+ ", mld_standaardopdr_key"
+ ", mld_opdr_omschrijving"
+ ", mld_opdr_datumbegin"
+ ", mld_opdr_dagen"
+ ", mld_opdr_werkzaamheden"
+ ", mld_opdr_datumuitgevoerd"
+ ", mld_opdr_uren"
+ ", mld_opdr_materiaal"
+ ", mld_opdr_kosten"
+ ", mld_opdr_contactpersoon"
+ ", mld_opdr_geprint"
+ ", mld_opdr_bedrijfopdr_volgnr"
+ ", mld_opdr_uurloon"
+ ", prs_perslid_key"
+ ", prs_contactpersoon_key"
+ ", cnt_contract_key"
+ ", cnt_contract_dienst_key"
+ ", mld_opdr_afgemeld_user"
+ ", mld_opdr_aanmaak"
+ ", mld_opdr_verzonden"
+ ", prs_kostenplaats_key"
+ ", prs_perslid_key_fiat"
+ ", mld_opdr_datumfiatvraag"
+ ", mld_opdr_datumfiat_ok"
+ ", mld_opdr_datumfiat_nok"
+ ", mld_opdr_opmerking_fiat"
+ ", mld_opdr_verwerkt"
//+ ", fac_activiteit_key"
+ ", mld_opdr_ordernr"
+ ", mld_opdr_teverzenden"
+ ", mld_opdr_opmerking)"
+ " SELECT"
+ " " + new_opdr + ", "
+ " mld_opdr_module"
+ ", " + mld_key
+ ", mld_uitvoerende_keys"
+ ", mld_typeopdr_key"
+ ", mld_statusopdr_key"
+ ", mld_standaardopdr_key"
+ ", mld_opdr_omschrijving"
+ ", mld_opdr_datumbegin"
+ ", mld_opdr_dagen"
+ ", mld_opdr_werkzaamheden"
+ ", mld_opdr_datumuitgevoerd"
+ ", mld_opdr_uren"
+ ", mld_opdr_materiaal"
+ ", mld_opdr_kosten"
+ ", mld_opdr_contactpersoon"
+ ", mld_opdr_geprint"
+ ", mld_opdr_bedrijfopdr_volgnr"
+ ", mld_opdr_uurloon"
+ ", prs_perslid_key"
+ ", prs_contactpersoon_key"
+ ", cnt_contract_key"
+ ", cnt_contract_dienst_key"
+ ", mld_opdr_afgemeld_user"
+ ", mld_opdr_aanmaak"
+ ", mld_opdr_verzonden"
+ ", prs_kostenplaats_key"
+ ", prs_perslid_key_fiat"
+ ", mld_opdr_datumfiatvraag"
+ ", mld_opdr_datumfiat_ok"
+ ", mld_opdr_datumfiat_nok"
+ ", mld_opdr_opmerking_fiat"
+ ", mld_opdr_verwerkt"
//+ ", fac_activiteit_key"
+ ", mld_opdr_ordernr"
+ ", mld_opdr_teverzenden"
+ ", mld_opdr_opmerking"
+ " FROM mld_opdr o"
+ " WHERE o.mld_opdr_key = " + sjabl_opdr_key;
// Kopi<70>ren flexkenmerken
// De regels in de tabel mld_kenmerkopdr kopi<70>ren
sql = "INSERT INTO mld_kenmerkopdr ("
+ " mld_opdr_key"
+ ", mld_kenmerk_key"
+ ", mld_kenmerkopdr_waarde)"
+ " SELECT " + new_opdr
+ ", mld_kenmerk_key"
+ ", mld_kenmerkopdr_waarde"
+ " FROM mld_kenmerkopdr"
+ " WHERE mld_opdr_key = " + sjabl_opdr_key;
Oracle.Execute(sql);
Oracle.Execute(sql);
// Copy de flex folders: CopyFlexFolders(oldbasepath, newbasepath, flexsql)
// typeopdr and mld_kenmerk_key is for both orders, old (sjabloon) and new, the same
// Kopi<70>ren flexkenmerken
// De regels in de tabel mld_kenmerkopdr kopi<70>ren
sql = "INSERT INTO mld_kenmerkopdr ("
+ " mld_opdr_key"
+ ", mld_kenmerk_key"
+ ", mld_kenmerkopdr_waarde)"
+ " SELECT " + new_opdr
+ ", mld_kenmerk_key"
+ ", mld_kenmerkopdr_waarde"
+ " FROM mld_kenmerkopdr"
+ " WHERE mld_opdr_key = " + sjabl_opdr_key;
Oracle.Execute(sql);
// Copy de flex folders: CopyFlexFolders(oldbasepath, newbasepath, flexsql)
// typeopdr and mld_kenmerk_key is for both orders, old (sjabloon) and new, the same
var flexsql = "SELECT k_old.mld_kenmerk_key k_old"
+ ", k_old.mld_kenmerk_key k_new"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k_old"
+ ", mld_opdr o_old"
+ " WHERE o_old.mld_opdr_key = " + sjabl_opdr_key
+ " AND t.mld_srtkenmerk_kenmerktype IN ('F', 'E', 'M') "
+ " AND k_old.mld_typeopdr_key = o_old.mld_typeopdr_key "
+ " AND k_old.mld_kenmerk_niveau = 'O' "
+ " AND k_old.mld_kenmerk_verwijder IS NULL "
+ " AND k_old.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND t.mld_srtkenmerk_verwijder IS NULL";
CopyFlexFolders("MLD/O" + sjabl_opdr_key, "MLD/O" + new_opdr, flexsql);
}
// else // Nieuw maar geen sjabloon
}
var flexsql = "SELECT k_old.mld_kenmerk_key k_old"
+ ", k_old.mld_kenmerk_key k_new"
+ " FROM mld_srtkenmerk t"
+ ", mld_kenmerk k_old"
+ ", mld_opdr o_old"
+ " WHERE o_old.mld_opdr_key = " + sjabl_opdr_key
+ " AND t.mld_srtkenmerk_kenmerktype IN ('F', 'E', 'M') "
+ " AND k_old.mld_typeopdr_key = o_old.mld_typeopdr_key "
+ " AND k_old.mld_kenmerk_niveau = 'O' "
+ " AND k_old.mld_kenmerk_verwijder IS NULL "
+ " AND k_old.mld_srtkenmerk_key = t.mld_srtkenmerk_key "
+ " AND t.mld_srtkenmerk_verwijder IS NULL";
CopyFlexFolders("MLD/O" + sjabl_opdr_key, "MLD/O" + new_opdr, flexsql);
}
// else // Nieuw maar geen sjabloon
}
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script>
var doneParams = { mld_key: <%=mld_key%>, autoprint: false };
var doneParams = { mld_key: <%=mld_key%>, autoprint: false };
<% if ( mld_melding_autoprint==2) { // altijd %>
doneParams.autoprint=true;
@@ -470,7 +433,7 @@
</head>
<%
}
}
%>
<body>
</body>

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 28-09-09 11:56 $
$Revision: 2 $
$Modtime: 28-10-09 23:56 $
File: opdr_search.asp (formerly orders_search.asp;35, ComplainsReprotAll.asp;72)
Status: 20%
@@ -45,9 +45,9 @@ var urole = getQParam("urole");
var fronto = urole == "fo";
var backo = urole == "bo";
var minfo = urole == "mi"; // NOT APPLICABLE?
var frontend = (urole == "fe" || (!fronto & !backo & !minfo));
var frontend = (urole == "fe" || (!fronto & !backo & !minfo));
// LET OP: voorheen keken we of MLDBO2 of MLDBO3 wellicht gold als MLDBOF
// LET OP: voorheen keken we of MLDBO2 of MLDBO3 wellicht gold als MLDBOF
// niet geldig was. Nu doen we dat door parameters
var justClose = getQParam("close", null);
@@ -112,7 +112,7 @@ var authparams = user.checkAutorisation(autfunction);
alert("<%=lcl_select_notypeopdr_selected%>");
return;
}
var key = $('#opdrtype').val();
var url = "load_kenmerk.asp?t_opdr=" + $('#opdrtype').val()
+ "&urole=<%=urole%>"
@@ -162,7 +162,7 @@ var authparams = user.checkAutorisation(autfunction);
+ ", prs_v_aanwezigbedrijf b"
+ " WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key"
+ " ORDER BY 2";
FCLTselector("contract",
sql,
{ initKey: cnt_key,
@@ -293,7 +293,7 @@ var authparams = user.checkAutorisation(autfunction);
<tr>
<td colspan="2">
<div id="statusboxes">
<% // Was if (backo || (cnt && cnt_key != -1) || (oRs(0)==5))
<% // Was if (backo || (cnt && cnt_key != -1) || (oRs(0)==5))
// dus Uitgegeven mocht altijd, en de overige statussen alleen als backo OF cnt zonder key
%>
<label><%=lcl_opdr_statusfilters%></label>
@@ -320,7 +320,7 @@ var authparams = user.checkAutorisation(autfunction);
CreateButton(lcl_search, "doSubmit();", 100);
if (!frontend && !justClose)
{
CreateButton(lcl_more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
CreateButton(LCL.shared.more, "iface_toggleSecondarySearchblock();", 100, "btnMoreLess");
if (backo)
{
CreateButton(lcl_obj_advanced +'&gt;', "myModal();", 100, 'bAdvanced'); // met actuele waarden van opdrtype en vorig filter

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<% /*
$Revision: 1 $
$Modtime: 26-09-09 16:19 $
$Revision: 2 $
$Modtime: 29-10-09 11:19 $
*/ %>
<% Response.Expires = 0; %>
@@ -101,7 +101,7 @@ FCLTHeader.Requires();
else
{ %>
delete_i = 1;
document.all.item("res").rows(tab_i).cells(0).innerHTML = "<img style='display:block' src='../Pictures/res_ok.gif' alt='<%=lcl_RES_completed_unknowed%>'>"
document.all.item("res").rows(tab_i).cells(0).innerHTML = "<img style='display:block' src='../Pictures/res_ok.gif' alt='<%=LCL.res.completed_unknown%>'>"
<% } %>
}
res_table = document.all.item("res");
@@ -126,7 +126,7 @@ FCLTHeader.Requires();
{
action = "checkComplete(this.parentNode.rowIndex)"
}
}
}
return action;
}

View File

@@ -12,14 +12,16 @@
Note: Also takes holidays into account
*/
FCLTHeader.Requires({css: ["./res.css"], lcl: ["RES"]});
res = {
trackaction:
function (paction, res_key, poms) /* paction is 'RESNEW', 'RESUPD', 'RESAFM' of 'RESDEL' */
{
if (typeof poms == 'undefined')
//pcode VARCHAR2 , prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2
//pcode VARCHAR2 , prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2
var sql = "BEGIN fac.trackaction('"+paction+"', "+res_key+", "+user_key+", NULL, NULL); END;"
else
else
var sql = "BEGIN fac.trackaction('"+paction+"', "+res_key+", "+user_key+", NULL, '"+poms+"'); END;"
Oracle.Execute( sql );
},
@@ -53,8 +55,8 @@ res = {
timechanged : 0x000000010000, // Parent gewijzigd en wij mee gewijzigd
timenotchanged: 0x000000100000, // Parent gewijzigd maar wij niet mee gewijzigd
//zwaar
notallowed : 0x000100000000, // Niet toegestaan in deze ruimte
notavailable : 0x001000000000 // Niet beschikbaar op tijdstip
notallowed : 0x100, // Niet toegestaan in deze ruimte
notavailable : 0x200 // Niet beschikbaar op tijdstip
}
},
@@ -133,6 +135,18 @@ res = {
}
oRs.close();
var sql = "SELECT ALG_ONRGOEDKENMERK_WAARDE"
+ " FROM ALG_ONRGOEDKENMERK"
+ " WHERE ALG_KENMERK_KEY = " + photo_kenmerk_key
+ " AND ALG_ONRGOEDKENMERK_VERWIJDER IS NULL"
+ " AND ALG_ONRGOED_KEY IN"
+ " (SELECT ALG_RUIMTE_KEY FROM RES_V_AANWEZIGALG_RUIMTE WHERE RES_RUIMTE_KEY IN"
+ " (SELECT RES_RUIMTE_KEY FROM RES_V_AANWEZIGRUIMTE WHERE RES_RUIMTE_KEY="+res_ruimte_key+"))";
var oRs = Oracle.Execute( sql );
if( !oRs.eof )
result.imagePath = image_path_virtual + oRs("ALG_ONRGOEDKENMERK_WAARDE").value;
return result;
},
@@ -162,10 +176,10 @@ res = {
in_time_cat = (time_string < t_catExpire_limit); // Ben ik voor of na de t_catExpire_limit tijd, waarna het niet meer mogelijk is door de FrontEnd aanpassingen te maken
}
sql = "SELECT mld_p_mld_datumtijd.DatumTijdPlusUitvoerTijd(SYSDATE, " + res_confirm + ", 'DAGEN'),"
sql += " mld_p_mld_datumtijd.DatumTijdPlusUitvoerTijd(SYSDATE, " + res_cancel + ", 'DAGEN'),"
sql += " mld_p_mld_datumtijd.DatumTijdPlusUitvoerTijd(" + ((t_expire_limit == -1)?"sysdate":sysdate_start) + ", " + (res_expire + (in_time?0:1)) + ", 'DAGEN'),"
sql += " mld_p_mld_datumtijd.DatumTijdPlusUitvoerTijd(" + ((t_catExpire_limit == -1)?"sysdate":sysdate_start) + ", " + (res_catExpire + (in_time_cat?0:1)) + ", 'DAGEN')"
sql = "SELECT fac.DatumTijdPlusUitvoerTijd(SYSDATE, " + res_confirm + ", 'DAGEN'),"
sql += " fac.DatumTijdPlusUitvoerTijd(SYSDATE, " + res_cancel + ", 'DAGEN'),"
sql += " fac.DatumTijdPlusUitvoerTijd(" + ((t_expire_limit == -1)?"sysdate":sysdate_start) + ", " + (res_expire + (in_time?0:1)) + ", 'DAGEN'),"
sql += " fac.DatumTijdPlusUitvoerTijd(" + ((t_catExpire_limit == -1)?"sysdate":sysdate_start) + ", " + (res_catExpire + (in_time_cat?0:1)) + ", 'DAGEN')"
sql += " FROM DUAL"
oRs = Oracle.Execute( sql );
@@ -214,6 +228,218 @@ res = {
var tNow = new Date(<%=this.tNow().valueOf()%>) // Server side date to use clientside!
</script>
<%
},
// Controleert/bepaalt de rechten op het 'Algemeen' blok bij een (deel)reservering
// TODO: loopt het niet gewoon synchroon: als je het algemeen blok mag
// bewerken dan mag je ook altijd de catering/voorzieningen?
// Altijd worden de disciplines van de catering/voorziening bekeken
// Voor restype=="R" wordt ook de discipline van de RES_RUIMTE bekeken
// We kijken pessimistisch: je moet rechten hebben voor alle disciplines
// TODO??: Deze rechten hebben betrekking op het 'Algemeen' blok van reserveringen
func_enabled: function _func_enabled(rsv_ruimte_key)
{
// Wat informatie om rechten te kunnen bepalen
var sql = "SELECT r.res_ruimte_opstel_key,"
+ " r.alg_ruimte_key,"
+ " r.res_rsv_ruimte_van,"
+ " r.res_rsv_ruimte_contact_key,"
+ " r.res_status_fo_key"
+ " FROM res_rsv_ruimte r "
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var roRs = Oracle.Execute(sql);
var alg_ruimte_key = roRs("alg_ruimte_key").Value;
var status_fo_key = roRs("res_status_fo_key").Value;
var rsv_ruimte_van = new Date(roRs("res_rsv_ruimte_van").Value);
var rsv_ruimte_contact_key = roRs("res_rsv_ruimte_contact_key").Value;
// Bepaal alle CV disciplines waar we iets van hebben
var discs = "SELECT res_discipline_key"
+ " FROM res_artikel ra, res_rsv_artikel rra"
+ " WHERE ra.res_artikel_key = rra.res_artikel_key"
+ " AND rra.res_rsv_ruimte_key = " + rsv_ruimte_key
+ " UNION " // geen dubbelen nodig
+ "SELECT res_discipline_key"
+ " FROM res_deel rd, res_rsv_deel rrd"
+ " WHERE rd.res_deel_key = rrd.res_deel_key"
+ " AND rrd.res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(discs);
disc_key_str = "";
while (!oRs.eof)
{
disc_key_str = disc_key_str+(disc_key_str==""?"":",")+oRs("res_discipline_key").Value;
oRs.MoveNext();
}
if (alg_ruimte_key==null)
{ // "R" reservering, bepaal *ook* discipline van de ruimte en alg_ruimte_key
var sql = "SELECT MIN (alg_ruimte_key) alg_ruimte_key,"
+ " rr.res_discipline_key"
+ " FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar"
+ " WHERE rar.res_ruimte_key = rr.res_ruimte_key "
+ " AND rr.res_ruimte_key = rro.res_ruimte_key "
+ " AND rro.res_ruimte_opstel_key = " + roRs("res_ruimte_opstel_key").Value
+ " GROUP BY res_discipline_key";
var oRs = Oracle.Execute( sql );
disc_key_str = disc_key_str+(disc_key_str==""?"":",")+oRs("res_discipline_key").Value;
alg_ruimte_key = oRs("alg_ruimte_key").Value;
}
var rresult = user.func_enabled("RES",
disc_key_str,
alg_ruimte_key,
roRs("res_rsv_ruimte_contact_key").Value);
rresult.canReadAny = rresult.canRead("WEB_RESFOF") ||
rresult.canRead("WEB_RESBOF") ||
rresult.canRead("WEB_RESUSE");
// (als alleen) Frontend-rechten-->we controleren nog strenger
if ( rresult.canReadAny
&& !rresult.canRead("WEB_RESFOF")
&& !rresult.canRead("WEB_RESBOF")
)
{ // frontend controles
if ( rsv_ruimte_contact_key != user_key
&& !user.isCollega(rsv_ruimte_contact_key))
{
// Dit kan legaal bijvoorbeeld nog gebeuren als je wel host maar geen contact bent.
rresult.canReadAny = false;
rresult.readoReason = lcl_res_notself;
}
}
// Je moet tenminste schrijfrechten hebben
rresult.canChange = rresult.canReadAny &&
(rresult.canWrite("WEB_RESFOF") ||
rresult.canWrite("WEB_RESBOF") ||
rresult.canWrite("WEB_RESUSE"));
if (!rresult.canChange)
rresult.readoReason = "TODO Geen schrijfrechten op alle onderdelen"; // voorheen lcl_res_notroom
// (als alleen) Frontend-rechten-->we controleren nog strenger
if ( rresult.canChange
&& !rresult.canWrite("WEB_RESFOF")
&& !rresult.canWrite("WEB_RESBOF")
)
{ // frontend controles
if (res_fe_edit_option_only==1 // Setting: Alleen opties mogen bewerkt
&& status_fo_key!=1)
{
rresult.canChange = false;
rresult.readoReason = lcl_res_fe_edit_option_only;
}
if ( rresult.canChange
&& rsv_ruimte_contact_key != user_key
&& !user.isCollega(res_rsv_ruimte_contact_key))
{
// Dit kan legaal bijvoorbeeld nog gebeuren als je wel host maar geen contact bent.
rresult.canChange = false;
rresult.readoReason = lcl_res_notself;
}
}
// Als *alle* R/C/V onderdelen 'verwerkt' zijn dan worden we ook readonly
// Let op: CV -reservering heeft geen bo-status in
sql = "SELECT rd.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_deel rd"
+ " WHERE rd.res_rsv_ruimte_key = " + rsv_ruimte_key
+ " UNION "
+ "SELECT ra.res_status_bo_key"
+ " FROM res_v_aanwezigrsv_artikel ra"
+ " WHERE ra.res_rsv_ruimte_key = " + rsv_ruimte_key;
if (alg_ruimte_key==null)
{
sql +=" UNION "
+ "SELECT res_status_bo_key"
+ " FROM res_v_aanwezigrsv_ruimte rs"
+ " WHERE rs.res_rsv_ruimte_key = " + rsv_ruimte_key;
}
sql = "SELECT MAX(res_status_bo_key) max_bo, "
+ " MIN (res_status_bo_key) min_bo"
+ " FROM ("+sql+")";
oRs = Oracle.Execute( sql );
rresult.min_bo = oRs("min_bo").Value;
rresult.max_bo = oRs("max_bo").Value;
if (rresult.min_bo && rresult.min_bo == 6)
{
rresult.canChange = false;
}
// Stap 2: bepalen canDelete (voor deze ene deelreservering)
rresult.canDelete = rresult.canChange && rsv_ruimte_van.getTime()>(new Date()).getTime(); // dat is toch wel het minste
if (rresult.canDelete)
{ // Hij mag geen onderdelen hebben met status 6 (verwerkt)
if (rresult.max_bo && rresult.max_bo == 6) {
rresult.canDelete = false;
}
}
return rresult;
},
emit_planbord_tijdbalk : function (res_van, nr_days, hour_px)
{
for (dagen=1; dagen<=nr_days; dagen++) { %>
<td class='plantd tijdbalk'>
<div class="sizer">&nbsp;</div>
<%
if (hour_px < 16) // alleen nog datum
{
var px_start = (res_t2-res_t1)/2*hour_px;
var dt2 = new Date(res_van);
dt2.setDate(dt2.getDate()+dagen-1)
var txt = toDateString(dt2);
width=80;
if (hour_px<8)
{
txt = txt.substring(0, 5); // haal zelfs jaar er af
width=80;
}
var div = "<div class='plantime'"
+" style='left:"+(px_start-width/2)+"px;width:"+width+"px'>"
+txt + "</div>";
Response.Write("\n"+div);
}
else
{
skiphours = 1;
if (hour_px < 48)
skiphours = 2;
if (hour_px < 24)
skiphours = 3;
var s = res_t1;
var i0 = -2;
for (s = res_t1; s<=res_t2; s+=skiphours)
{
var h = Math.floor(s);
if (h < 10) h = "0" + h;
var m = Math.floor((s - h)*60);
if (m < 10) m = "0" + m;
m = ":" + m
var px_start = (s-res_t1)*hour_px;
var div = "<div class='plantime'"
+" style='left:"+(px_start-19)+"px;'>"
+h + m + "</div>";
Response.Write("\n"+div);
}
}
%>
</td>
<% if (dagen<nr_days) { %>
<td class="between"><div>&nbsp;</div></td>
<% } else { %>
<td class="post"><div>&nbsp;</div></td>
<% } %>
<% } // dagen
}
}
@@ -227,121 +453,6 @@ function shared_rooms( room_key ) {
+ " where ra.RES_RUIMTE_KEY = " + room_key
+ " and ra.alg_ruimte_key = rb.alg_ruimte_key";
}
function same_period_sql( t1, t2, t3, t4 ) {
/* [t1,t2] & [t3,t4]
return "(("+t1+" >= "+t3 +" and "+t1+" < "+t4+")" +" or ("+t3+" >= "+t1 +" and "+t3+" < "+t2+"))";
*/
return "( ("+t3+" < "+t2+")" +" and ("+t4+" > "+t1+"))";
}
function same_period_res( r1, r2 ) {
return same_period_sql( r1+".RES_RSV_RUIMTE_VAN", r1+".RES_RSV_RUIMTE_TOT",
r2+".RES_RSV_RUIMTE_VAN", r2+".RES_RSV_RUIMTE_TOT" )
}
function reserved_deel_sql( res_k, wh ) {
if(SamePeriodCheck)
return "(select rd.RES_DEEL_KEY from RES_v_aanwezigRSV_DEEL rd"
+" where "+wh+" exists ("
+ select_reservations( "a.RES_RESERVERING_KEY",
", (select RES_RSV_RUIMTE_VAN, RES_RSV_RUIMTE_TOT"
+ " from RES_V_AANWEZIGRESERVERING where RES_RESERVERING_KEY=" + res_k + ") b",
" where a.RES_RESERVERING_KEY = rd.RES_RESERVERING_KEY"
+" and (" + same_period_res('a','b') + ")" )
+"))";
else return '(select 14 FROM DUAL where 1=2)';
}
function res_deel_sql( wh, cl ) {
return "(select "+cl
+ " from RES_v_aanwezigDEEL d"
+ " where "+wh+" not exists "
+ reserved_deel_sql(res_key,'rd.RES_DEEL_KEY = d.RES_DEEL_KEY and') + ")";
}
function srt_deel_sql(wh) {
return "(select i.INS_SRTDEEL_KEY from INS_v_aanwezigDEEL i"
+ " where "+wh+" exists " + res_deel_sql('i.INS_DEEL_KEY=d.RES_INS_DEEL_KEY and',
'd.RES_INS_DEEL_KEY') + ")";;
}
function srt_groep_sql(wh) {
return "(select g.INS_SRTGROEP_KEY from INS_v_aanwezigSRTDEEL g"
+ " where "+wh+" exists " + srt_deel_sql('g.INS_SRTDEEL_KEY=i.INS_SRTDEEL_KEY and') + ")";
}
function ins_disc_sql(wh) {
return "(select sg.INS_DISCIPLINE_KEY from INS_v_aanwezigSRTGROEP sg"
+ " where " + wh
+ " exists" + srt_groep_sql('sg.INS_SRTGROEP_KEY=g.INS_SRTGROEP_KEY and') + ")";
}
function ins_discipline(cl) {
return "select "+cl+" from INS_v_aanwezigDISCIPLINE d"
+ " WHERE d.INS_DISCIPLINE_KEY IN("
+ "SELECT ins_discipline_key FROM FAC_V_WEBGEBRUIKER"
+ " WHERE PRS_PERSLID_KEY ="+user_key+")"
+ " and exists "+ins_disc_sql('d.INS_DISCIPLINE_KEY=sg.INS_DISCIPLINE_KEY and');
}
function res_ins_discipline_deel(cl, autfunction) {
__Log('autfunction :'+autfunction);
return "select "+cl+" from RES_v_aanwezigDISCIPLINE dis"
+ " WHERE ins_discipline_min_level=1"
+ " AND dis.INS_DISCIPLINE_KEY IN("
+ "SELECT g.ins_discipline_key FROM FAC_V_WEBGEBRUIKER g, FAC_FUNCTIE f "
+ "WHERE g.fac_functie_key = f.fac_functie_key "
+ "AND f.fac_functie_code = '" + autfunction + "'"
+ " AND g.fac_gebruiker_alg_level_read < 9"
+ " AND g.PRS_PERSLID_KEY ="+user_key
+ ") and dis.INS_DISCIPLINE_KEY IN"
+ "(SELECT res_discipline_key" /* DISTINCT */
+ " from res_deel R, ins_deel D"
+ " where r.res_deel_verwijder IS NULL"
+ " and R.res_ins_deel_key=D.ins_deel_key)";
}
function res_ins_discipline_artikel(cl, autfunction, alg_ruimte_key, rsv_ruimte_key, fixed_room) {
if( isNaN(alg_ruimte_key) ) {
alg_ruimte_key = 'NULL';
}
if( isNaN(rsv_ruimte_key) ) {
rsv_ruimte_key = 'NULL';
}
if( rsv_ruimte_key == 'NULL' && alg_ruimte_key == 'NULL' ) {
%>
<p><%=lcl_internal_error %>: res.inc</p>
<%
Response.End;
}
return "select "+cl+" from RES_v_aanwezigDISCIPLINE d"
+ " WHERE ins_discipline_min_level=2"
+ " AND d.INS_DISCIPLINE_KEY IN ("
+ " SELECT ins_discipline_key FROM FAC_V_WEBGEBRUIKER g, FAC_FUNCTIE f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = '" + autfunction + "' "
+ " AND g.PRS_PERSLID_KEY ="+user_key
+ " AND d.INS_DISCIPLINE_KEY IN"
// RES_V_SRTARTIKEL_ONRGOED i.p.v. res_v_srtartikel_ruimte:
// niet alleen kijken naar max(prio) 'R' (ruimte) maar ook naar onderliggende prio's 'L' (locatie) en 'G' (gebouw)
// In de view res_v_srtartikel_ruimte wordt alleen naar de maximale prio gekeken van een bepaalde alg_ruimte_key
+ " (SELECT res_discipline_key FROM res_v_srtartikel_onrgoed "
+ " WHERE 1 = 1 "
+ (fixed_room? " AND alg_onrgoed_niveau = 'R'":"")
+ (!isNaN(alg_ruimte_key)? " AND alg_ruimte_key = "+alg_ruimte_key+ ")) "
: (!isNaN(rsv_ruimte_key)? " AND alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM res_v_rsv_ruimte_2_alg_ruimte "
+ " WHERE res_alg_ruimte_verwijder IS NULL AND res_rsv_ruimte_key="+rsv_ruimte_key+")))":""))
+ " ORDER BY 2";
}
// TODO: p_alg_ruimte_key zelf bepalen uit p_rsv_ruimte_key
function getReservedObjectTypes (p_alg_ruimte_key, p_rsv_ruimte_key, p_select_fields, p_loc_key, p_sdisc, p_group_by) {
@@ -351,7 +462,7 @@ __Log("p_alg_ruimte_key: " + p_alg_ruimte_key + ", p_rsv_ruimte_key: " + p_rsv_r
+ " FROM ins_srtdeel sd, ins_deel d, res_v_aanwezigdeel r "
+ ", (SELECT d.alg_regio_key, l.alg_district_key, l.alg_locatie_key, g.alg_gebouw_key, v.alg_verdieping_key, r.alg_ruimte_key "
+ " FROM "
+ (!isNaN(p_rsv_ruimte_key)&&(p_alg_ruimte_key==-1)
+ ((p_rsv_ruimte_key>0)&&(p_alg_ruimte_key==-1)
? " res_v_rsv_ruimte_2_alg_ruimte rrr, "
: "")
+ " alg_district d,"
@@ -360,7 +471,7 @@ __Log("p_alg_ruimte_key: " + p_alg_ruimte_key + ", p_rsv_ruimte_key: " + p_rsv_r
+ " alg_verdieping v,"
+ " alg_ruimte r"
+ " WHERE 1=1 "
+ (!isNaN(p_rsv_ruimte_key)&&(p_alg_ruimte_key==-1)
+ ((p_rsv_ruimte_key>0)&&(p_alg_ruimte_key==-1)
? " AND res_rsv_ruimte_key = " + p_rsv_ruimte_key
+ " AND rrr.alg_ruimte_key = r.alg_ruimte_key"
: "")
@@ -371,7 +482,7 @@ __Log("p_alg_ruimte_key: " + p_alg_ruimte_key + ", p_rsv_ruimte_key: " + p_rsv_r
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key ) scope"
+ ((!isNaN(p_rsv_ruimte_key) || ((p_alg_ruimte_key>0)))
+ ((p_rsv_ruimte_key>0 || p_alg_ruimte_key>0 || p_loc_key > 0)
? ", res_v_deelscope ds"
: "")
+ " WHERE r.res_discipline_key="+p_sdisc
@@ -382,32 +493,86 @@ __Log("p_alg_ruimte_key: " + p_alg_ruimte_key + ", p_rsv_ruimte_key: " + p_rsv_r
: "")
+ " AND d.ins_alg_ruimte_type IN ('R','T')";
if (!isNaN(p_rsv_ruimte_key) || (p_alg_ruimte_key>0)) {
sql1 += " AND "
+ " ( ds.alg_regio_key = scope.alg_regio_key"
+ " OR ds.alg_district_key = scope.alg_district_key"
+ " OR ds.alg_locatie_key = scope.alg_locatie_key"
+ " OR ds.alg_gebouw_key = scope.alg_gebouw_key"
+ " OR ds.alg_verdieping_key = scope.alg_verdieping_key"
+ " OR ds.alg_ruimte_key = scope.alg_ruimte_key"
+ " OR ds.res_deel_alg_level = -1)"
+ " AND r.res_deel_key = ds.res_deel_key"
} else { // kunnen we hier wel komen? Zelfde check komt buiten deze if ook al voor.
sql1 = discxalg3d (sql1,
"r.RES_DISCIPLINE_KEY",
"scope.alg_regio_key",
"scope.alg_district_key",
"scope.alg_locatie_key",
"scope.alg_gebouw_key",
"scope.alg_verdieping_key",
"scope.alg_ruimte_key",
autfunction,
p_sdisc);
sql1 +=" AND r.res_deel_key = ds.res_deel_key"
if (p_rsv_ruimte_key>0) // Objectenblok van een specifieke voorziening
{
var sql1 = "SELECT " + p_select_fields
+ " FROM ins_srtdeel sd, ins_deel d, res_v_aanwezigdeel r "
+ ", (SELECT d.alg_regio_key, l.alg_district_key, l.alg_locatie_key, g.alg_gebouw_key, v.alg_verdieping_key, r.alg_ruimte_key "
+ " FROM "
+ (p_alg_ruimte_key==-1 ? " res_v_rsv_ruimte_2_alg_ruimte rrr, ": "")
+ " alg_district d,"
+ " alg_locatie l,"
+ " alg_gebouw g,"
+ " alg_verdieping v,"
+ " alg_ruimte r"
+ " WHERE "
+ (p_alg_ruimte_key==-1
? " res_rsv_ruimte_key = " + p_rsv_ruimte_key+ " AND rrr.alg_ruimte_key = r.alg_ruimte_key"
: " r.alg_ruimte_key = "+p_alg_ruimte_key)
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key ) scope"
+ ", res_v_deelscope ds"
+ " WHERE r.res_discipline_key="+p_sdisc
+ " AND r.res_ins_deel_key=d.ins_deel_key"
+ " AND d.ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND d.ins_alg_ruimte_type IN ('R','T')"
+ " AND "
+ " ( ds.alg_regio_key = scope.alg_regio_key"
+ " OR ds.alg_district_key = scope.alg_district_key"
+ " OR ds.alg_locatie_key = scope.alg_locatie_key"
+ " OR ds.alg_gebouw_key = scope.alg_gebouw_key"
+ " OR ds.alg_verdieping_key = scope.alg_verdieping_key"
+ " OR ds.alg_ruimte_key = scope.alg_ruimte_key"
+ " OR ds.res_deel_alg_level = -1)"
+ " AND r.res_deel_key = ds.res_deel_key"
} else { // Bijvoorbeeld alleen een locatie_key? TODO Klopt dit?
var sql1 = "SELECT " + p_select_fields
+ " FROM ins_srtdeel sd, ins_deel d, res_v_aanwezigdeel r "
+ (p_loc_key > 0 ? ", res_v_deelscope ds": "")
+ " WHERE r.res_discipline_key="+p_sdisc
+ " AND r.res_ins_deel_key=d.ins_deel_key"
+ " AND d.ins_srtdeel_key = sd.ins_srtdeel_key"
+ ((p_loc_key > -1)? " AND d.ins_alg_locatie_key="+p_loc_key: "")
+ " AND d.ins_alg_ruimte_type IN ('R','T')";
sql1 = discxalg3d (sql1,
"r.RES_DISCIPLINE_KEY",
"scope.alg_regio_key",
"scope.alg_district_key",
"scope.alg_locatie_key",
"scope.alg_gebouw_key",
"scope.alg_verdieping_key",
"scope.alg_ruimte_key",
autfunction,
"");
if (p_loc_key > 0)
sql1 +=" AND r.res_deel_key = ds.res_deel_key"
}
sql1 += p_group_by;
return sql1;
}
Date.prototype.getFloatHours = function getFloatHours()
{
return this.getHours() + (this.getMinutes()/60);
}
// Noot: rondt af op res_h!
// levert een nieuw date-object op
Date.prototype.setFloatHours = function setFloatHours(hrs, res_h)
{
var dd = new Date(this);
hrs = Math.floor((hrs/res_h)+0.5) * res_h;
var hh = Math.floor(hrs);
var mm = (hrs*60) % 60;
dd.setHours(hh,mm,0,0);
return dd;
}
// Noot: rondt af op res_h!
// levert een nieuw date-object op
Date.prototype.addFloatHours = function addFloatHours(hrs, res_h)
{
return this.setFloatHours(this.getFloatHours() + hrs, res_h);
}
%>

View File

@@ -1,22 +1,18 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 24-09-09 16:49 $
$Revision: 2 $
$Modtime: 2-11-09 20:44 $
File: res_edit_objcat.asp
Status: 75%
Remark: allow adding of res_deel and res_artikel
Periodiek en dergelijke hebben we niets meer mee te maken in 5i
Parameters:
rsv_ruimte_key required, existing rsv_ruimte_key. Al het andere zoeken we er zelf bij
urole required
embedded optional, als 1 toon dan geen knoppen
Context: - Onderaan planbord
- called by button 'Voorzieningen' in confirmation of object-reservation
- called by button 'Voorzieningen' in confirmation of room-reservation
Context: iframe van res_reservering.asp
*/
%>
<!--#include file="../../cust/install.inc"-->
@@ -24,19 +20,32 @@
<!--#include file="../Shared/funcodes.inc"-->
<!--#include file="../shared/date_sql.inc"-->
<!--#include file="../shared/datetime.inc"-->
<!--#include file="../shared/escape.inc"-->
<!--#include file="../shared/iface.inc"-->
<!--#include file="../Shared/discxalg3d.inc"-->
<!--#include file="../Shared/InfoSupport.inc" -->
<!--#include file="res_plan_obj.inc"-->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: ["jQuery", "datepicker"],
js: ["expand_frame.js", "date.js", "FcltMgr.js"]})
js: ["date.js", "jquery-ui.js", "num2curr.js", "./res_plan.js"]})
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key");
var embedded = getQParam("embedded","0")=="1";
var dis_key = getQParam("dis_key", -1); // (Alleen) default openklappen
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
var dis_key = getQParamInt("dis_key", -1); // (Alleen) default openklappen
var res_deel_key = getQParam("res_deel_key", -1); // Default
var disc_key = getQParamInt("disc", -1); // Auto openklappen
if (res_deel_key > 0)
{
sql = "select res_discipline_key"
+ " from res_deel"
+ " where res_deel_key = " + res_deel_key;
oRs = Oracle.Execute(sql);
disc_key = oRs("res_discipline_key").Value;
}
// Zo snel mogelijk relevante basisinformatie opzoeken
sql = "select res_reservering_key, "
@@ -47,23 +56,20 @@ var dis_key = getQParam("dis_key", -1); // (Alleen) default openklappen
+ " from res_rsv_ruimte"
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key;
oRs = Oracle.Execute(sql);
var res_key = oRs("res_reservering_key").value;
var resdeleted = (oRs("res_rsv_ruimte_verwijder").value != null);
var res_van = new Date(oRs("res_rsv_ruimte_van").value);
var res_tot = new Date(oRs("res_rsv_ruimte_tot").value);
// TODO: In de code/functionaliteit zo weinig mogelijk verschil maken tussen "R" en "CV"
if (oRs("alg_ruimte_key").value != null)
restype = "CV"
else if (oRs("res_ruimte_opstel_key").value != null)
restype = "R"
alg_ruimte_key = oRs("alg_ruimte_key").value||'NaN';
var ordernr_key = oRs("prs_kostenplaats_key").value||-1;
alg_ruimte_key = oRs("alg_ruimte_key").value||-1;
var has_kostenplaats_key = oRs("prs_kostenplaats_key").value!=null;
oRs.Close()
var fronto = (urole == "fo");
var freado = Request.QueryString("reado").Count>0;
var backo = (urole == "bo");
var frontend = (urole == "fe");
@@ -71,9 +77,6 @@ var dis_key = getQParam("dis_key", -1); // (Alleen) default openklappen
var portal_alg_ruimte_key = Request.QueryString("portal_alg_ruimte_key");
var newres = Request.QueryString("reservNew")=="1";
var res_date_start = res_van.toSQL(true);
var res_date_end = res_tot.toSQL(true);
if (urole=="fo")
var autfunction = "WEB_RESFOF";
else if (urole=="bo")
@@ -83,9 +86,6 @@ var dis_key = getQParam("dis_key", -1); // (Alleen) default openklappen
var jumped = Request.QueryString("jumped").Count>0;
var t_w = Math.ceil((room_schedule_width - res_intervals - 1) / res_intervals);
var t_w = (100 / res_intervals)+"%";
var ht_w = 5+(400 / res_intervals)+"%";
%>
<!--#include file="../Shared/autlevel.inc"-->
@@ -93,41 +93,24 @@ var dis_key = getQParam("dis_key", -1); // (Alleen) default openklappen
<head>
<% FCLTHeader.Generate() %>
<style>
tr.planbord td.other { width:<%=t_w%>; }
tr.planbord td.free { width:<%=t_w%>; }
tr.planbord td.freeH { width:<%=t_w%>; }
tr.planbord td.header { width:<%=ht_w%>; }
tr.planbord td.freeNC { width:<%=t_w%>; }
</style>
<%
var nr_days = 1+(res_tot.midnight() - res_van.midnight())/24/60/60/1000;
var nr_hours = nr_days*(res_t2-res_t1)
hour_px = 48;
if (nr_hours> 16) hour_px = 24;
if (nr_hours> 30) hour_px = 16;
if (nr_hours> 50) hour_px = 8;
if (nr_hours>100) hour_px = 4;
%>
<script type="text/javascript" src='../LocalScripts/sel_tables.js'></script>
<script type="text/javascript" src='room_schedule.js'></script>
<script type="text/javascript" src='../LocalScripts/num2curr.js'></script>
<script type="text/javascript" src='../LocalScripts/date.js'></script>
<script type="text/javascript" src='reserv_Objects_js.asp'></script>
<script type="text/javascript" src='../LocalScripts/num2curr.js'></script>
<style>
table.planbord div.sizer { width:<%=hour_px*(res_t2-res_t1)-1%>px;};
</style>
<% res.clientTimeVars(); %>
<script type="text/javascript">
var WINDOW_ID = "RESERVE_OBJECTS";
// Deals with info window
var descAr = new Array();
var lcl_obj_available='<%=lcl_obj_available%>';
var lcl_obj_not_available='<%=lcl_obj_not_available%>';
var lcl_obj_inf_name='<%=lcl_obj_inf_name%>';
var lcl_obj_inf_gebouw='<%=lcl_obj_inf_gebouw%>';
var lcl_obj_inf_floor='<%=lcl_obj_inf_floor%>';
var lcl_obj_inf_room='<%=lcl_obj_inf_room%>';
var lcl_object='<%=lcl_object%>';
var lcl_count='<%=lcl_count%>';
var lcl_time ='<%=lcl_time%>';
var lcl_r_price5='<%=lcl_r_price5%>';
var lcl_r_price7='<%=lcl_r_price7%>';
var lcl_obj_no_selected='<%=lcl_obj_no_selected%>';
var qstring="<%=Request.ServerVariables('QUERY_STRING')%>";
var hour_px = <%=hour_px%>;
var res_t1 = <% = " " + res_t1 %>;
var res_t2 = <% = " " + res_t2 %>;
@@ -137,19 +120,8 @@ var res_cat_t1 = <%=res_cat_t1%>
var res_cat_t2 = <%=res_cat_t2%>
var ch_obj_mode = '<%=Request.QueryString("ch_obj_mode")%>';
var res_date_start= "<%=res_date_start%>";
var res_date_end = "<%=res_date_end%>";
var restype = "<%=restype%>";
var reduced_obj_info=<%=reduced_obj_info?'true':'false'%>;
var objectsSelected = new Array();
var lcl_date_separator = "<%=lcl_date_separator%>";
var curID = "";
var pref = 0;
var curLevel = "";
var busy = false;
// Worden in res_plan.js gebruikt:
var res_van = new Date(<%=res_van.getTime()%>);
var res_tot = new Date(<%=res_tot.getTime()%>);
@@ -160,20 +132,8 @@ var res_tot = new Date(<%=res_tot.getTime()%>);
%>
res_vis = <%=vis == ""?0:vis%>
<%
var mode = Request.QueryString("mode").Count;
if( mode ) {
mode = parseInt( Request.QueryString("mode"), 10 );
}
var disc = Request.QueryString("disc").Count;
if( disc ) {
disc = parseInt( Request.QueryString("disc"), 10 );
}
%>
var res_key=<%=res_key%>
ConsObjects = new Array();
</script>
@@ -181,17 +141,16 @@ ConsObjects = new Array();
var starttime_room = res_t1;
var endtime_room = res_t2;
if (!isNaN(rsv_ruimte_key) && rsv_ruimte_key > 0) {
sql = "SELECT COALESCE(ru.res_ruimte_begintijd, " + res_t1 + ")"
+ ", COALESCE(ru.res_ruimte_eindtijd, " + res_t2 + ")"
+ ", COALESCE(ru.res_ruimte_eindtijd, " + res_t2 + ")"
+ " FROM res_v_aanwezigruimte ru"
+ ", res_rsv_ruimte rr"
+ ", res_ruimte_opstelling ro"
+ ", res_rsv_ruimte rr"
+ ", res_ruimte_opstelling ro"
+ " WHERE ru.res_ruimte_key = ro.res_ruimte_key"
+ " AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key"
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof) { // Found
if (!oRs.eof) { // Found, blijkbaar type=='R'
var starttime_room = oRs(0).value;
var endtime_room = oRs(1).value;
if (starttime_room < res_t1) starttime_room = res_t1;
@@ -199,7 +158,6 @@ ConsObjects = new Array();
if (starttime_room > endtime_room) starttime_room = endtime_room;
starttime_room = toJsNumber(starttime_room);
endtime_room = toJsNumber(endtime_room);
}
}
%>
@@ -208,7 +166,6 @@ ConsObjects = new Array();
var urole = "<%=urole%>";
var backo = <%=backo?1:0%>;
var fronto = <%=fronto?1:0%>;
var ordernr_key = <%=ordernr_key%>
var frontend = (1==<%=frontend?1:0%>);
var jumped = (1==<%=jumped?1:0%>);
var starttime_room = <%="" + starttime_room%>;
@@ -241,121 +198,110 @@ ConsObjects = new Array();
%>
<body id="editbody"
OnLoad="
window.document.body.style.cursor='auto';
if(parent.window)parent.window.document.body.style.cursor='auto';
<body id="editbody">
<%
if(backo)
{
} else if (!jumped) {
%>
RowSelected=OnRowSelected;Loaded();
<%
}
%>"
id="roBody" leftmargin="0" topmargin="0">
<%
var buttons = [ {title: lcl_submit, icon: "opslaan.png", action:"res_submit()", id:"bsubmit_res_rsv_objcat" },
{title: lcl_cancel, icon: "undo.png", action:"res_cancel()", id:"bcancel_res_rsv_objcat" } ];
var buttons = [ {title: lcl_submit, icon: "opslaan.png", action:"res_submit()" },
{title: lcl_cancel, icon: "undo.png", action:"res_cancel()" } ];
IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
%>
<div id="alertText" class="alertText"></div>
<div id="edit">
<!--#include file="res.inc"-->
<form name=u2 method=post action="res_edit_objcat_save.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>"> <!--onSubmit="return formOnSubmit()"-->
<% if(fronto) { %> <input type=hidden name="fronto" value=''> <% } %>
<% if(backo) { %> <input type=hidden name="backo" value=''> <% } %>
<input type="hidden" name="res_key" id="res_key" value='<%=res_key%>'>
<form name=u2 method=post action="res_edit_objcat_save.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>">
<%
if (restype=='CV') {
%>
<br/><p/><p/>
<%
}
// ==========================================================================
// Description: Bouwen van het voorzieningen edit blok voor een reservering
sql1 = ", 1 aantal ";
if (!isNaN(alg_ruimte_key) || !isNaN(rsv_ruimte_key)) {
var sql1 = ", ( " + getReservedObjectTypes(alg_ruimte_key, rsv_ruimte_key, " count(*) ", -1, "dis.ins_discipline_key", "") + ") aantal ";
// Tel in elke catalogus hoeveel objecten in de gekozen ruimte echt gereservererd kunnen worden.
// Als dat er nul zijn dan tonen we de discipline namelijk niet.
sql_aantal = " 1 aantal ";
if (rsv_ruimte_key>0) {
var sql_aantal = " ( " + getReservedObjectTypes(alg_ruimte_key, rsv_ruimte_key, " count(*) ", -1, "dis.ins_discipline_key", "") + ") aantal ";
}
sql = res_ins_discipline_deel('dis.INS_DISCIPLINE_KEY,dis.INS_DISCIPLINE_OMSCHRIJVING,DIS.INS_DISCIPLINE_KPNVERPLICHT' + sql1 , autfunction);
sql= "select dis.INS_DISCIPLINE_KEY,"
+ " dis.INS_DISCIPLINE_OMSCHRIJVING,"
+ " DIS.INS_DISCIPLINE_KPNVERPLICHT,"
+ sql_aantal
+ " from RES_v_aanwezigDISCIPLINE dis"
+ " WHERE ins_discipline_min_level=1"
+ " AND dis.INS_DISCIPLINE_KEY IN("
+ " SELECT g.ins_discipline_key FROM FAC_V_WEBGEBRUIKER g, FAC_FUNCTIE f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = '" + autfunction + "'"
+ " AND g.fac_gebruiker_alg_level_read < 9"
+ " AND g.PRS_PERSLID_KEY ="+user_key
+ " )"
+ " AND dis.INS_DISCIPLINE_KEY IN"
+ " (SELECT res_discipline_key" /* DISTINCT */
+ " from res_deel R, ins_deel D"
+ " where r.res_deel_verwijder IS NULL"
+ " and R.res_ins_deel_key=D.ins_deel_key)";
if (disc) sql=sql + " and dis.ins_discipline_key ="+disc;
if (disc_key>0 && res_deel_key<0) sql=sql + " and dis.ins_discipline_key ="+disc_key;
if (res_fe_discs_only_in_res != -1 && !fronto && !backo && restype=='CV')
sql=sql + " and dis.ins_discipline_key NOT IN ("+res_fe_discs_only_in_res+") ";
sql=sql + " ORDER BY 2";
%>
<table cellspacing="0" border="0" cellpadding="1" id="ObjTable" width=90%>
<%
oRs1 = Oracle.Execute( sql );
%>
<script type="text/javascript">
oRs1 = Oracle.Execute( sql );
function kpnOk(kp_key, kpnverplicht) {
hasOrdernr = (kp_key != -1 && kp_key > 0);
if (<%=rsv_ruimte_key%> > 0 && hasOrdernr == false && kpnverplicht == 1) {
alert ("<%=lcl_select_account_disc%>");
return false;
}
return true;
}
function onClickLine(disc_key, kpnverplicht)
{
if (kpnOk(<%=ordernr_key%>,kpnverplicht))
{
var url = "../Shared/kpl_ksrt_validate.asp?kp_key=<%=ordernr_key%>&disc_key="+disc_key;
var res = FcltSyncgetJSON(url);
if (res.error)
return false;
else
ItemChoosed('dis'+disc_key,disc_key,null,null);
}
}
</script>
<%
first = true;
while( !oRs1.eof ) {
var curr_disc_key = oRs1("INS_DISCIPLINE_KEY").Value;
var existing = false; // zodadelijk highlighten
if (res_key > 0)
{
sql = "SELECT COUNT(res_rsv_deel_key) "
+ " FROM res_rsv_deel rrd,"
+ " res_deel rd"
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND res_rsv_deel_verwijder is null"
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND res_discipline_key = " + oRs1(0)
sql = "SELECT COUNT(res_rsv_deel_key) aantal"
+ " FROM res_rsv_deel rrd,"
+ " res_deel rd"
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND res_rsv_deel_verwijder is null"
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND res_discipline_key = " + curr_disc_key
var oRs2 = Oracle.Execute(sql);
existing = (oRs2(0).value > 0);
}
if (oRs1(3).Value != 0) {
var oRs2 = Oracle.Execute(sql);
existing = (oRs2("aantal").value > 0);
if (oRs1("aantal").Value != 0) {
if( first ) {
BLOCK_START("resObj",lcl_res_objects + " <a href='javascript:openLegenda()'>TODO Legenda</a>");
%>
<tr>
<td><b><%=lcl_res_objects%></b></td>
<%
if (res_van.midnight().getTime() != res_tot.midnight().getTime())
{
Response.Write(toDateString(res_van.midnight()));
Response.Write(" " + lcl_res_totenmet + " " + toDateString(res_tot.midnight()));
}
%>
</td>
</tr>
<% first = false;
}
%>
<tr id="tr_<%=oRs1(0)%>">
<tr>
<td>
<p onMouseOut="MouseOverEnd()" onMouseOver="MouseOverItem()"
onClick="onClickLine(<%=oRs1(0)%>,<%=oRs1(2)%>)"
<%=(existing?" class=ref_em ":" class=ref ")%>>
<img src="../Pictures/tree_plus.gif" border="0" id="plus" align="middle" hspace="2">
<%=oRs1(1)%>
<%=(existing?" ("+oRs2(0)+")":"")%>
</p>
<div id="div_dis<%=oRs1(0)%>" style='display:none'>
<% // Hier wordt Ajax achtig door obj_schedule.asp code tussen geplakt bij openklappen %>
<%if (!has_kostenplaats_key && oRs1("INS_DISCIPLINE_KPNVERPLICHT").value==1) { %>
<div title="<%=lcl_select_account_disc%>" class="objcatline notavailable">
<%=Server.HTMLEncode(oRs1("INS_DISCIPLINE_OMSCHRIJVING").value)%>
<%=(existing?" ("+oRs2("aantal").value+")":"")%>
<%} else {%>
<div class="objcatline <%=(existing?" existing":"")%><%=disc_key != curr_disc_key?" closed":""%>">
<span onClick="ItemChoosed_obj(this.parentElement, 'div_dis<%=curr_disc_key%>',<%=curr_disc_key%>)">
<%=Server.HTMLEncode(oRs1("INS_DISCIPLINE_OMSCHRIJVING").value)%>
<%=(existing?" ("+oRs2("aantal").value+")":"")%>
</span>
<%} %>
<div class="objcatdiv" id="div_dis<%=curr_disc_key%>">
<% // Hier wordt met Ajax obj_schedule.asp code tussen geplakt bij openklappen
if (disc_key == curr_disc_key)
make_plan_obj(curr_disc_key, res_van, res_tot, { hour_px: hour_px,
rsv_ruimte_key: rsv_ruimte_key,
ch_obj_mode: 1,
res_deel_key: res_deel_key });
else
Response.Write(LCL.shared.loading);
%>
</div>
</div>
</td>
</tr>
@@ -364,41 +310,98 @@ IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
oRs1.MoveNext();
}
oRs1.close();
if( !first )
BLOCK_END();
%>
</table>
<iframe src="../shared/empty.html" frameborder="0" id="hidFramecheckRelation" style="display:none"></iframe>
<script>
function openLegenda()
{
params = { width: 125,
minWidth: 125,
height: 130,
minHeight: 130,
resizable: false,
title: 'lcl_legenda'
}
$('div#legenda').dialog(params).dialog('open');
}
</script>
<div id="legenda" style="display:none";>
<table width="100%" border="0">
<tr>
<td align="right"><img src="../Pictures/room_free.gif"></td>
<td><% = lcl_free %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_opt.gif"></td>
<td><% = lcl_optie %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_def.gif"></td>
<td><% = lcl_def %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_blk.gif"></td>
<td><% = lcl_blokkade %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_vvl.gif"></td>
<td><% = lcl_vervallen %></td>
</tr>
</table>
</div>
<%
// ==========================================================================
// Description: Bouwen van het catering edit blok voor een reservering
%>
<table cellspacing="0" border="0" cellpadding="1" id="ObjTableCons">
<script type="text/javascript">
ConsObjects = new Array();
function onClickCatLine(disc_key, kpnverplicht)
function onClickCatLine(elm, disc_key)
{
if (kpnOk(<%=ordernr_key%>,kpnverplicht))
{
var url = "../Shared/kpl_ksrt_validate.asp?kp_key=<%=ordernr_key%>&disc_key="+disc_key;
var res = FcltSyncgetJSON(url);
if (res.error)
return false;
else
ItemChoosed('ConsumObjs'+disc_key,null,null,+disc_key);
}
ItemChoosed_cat(elm, 'dis'+disc_key,disc_key);
}
</script>
<tr >
<td><b><%=lcl_consumable_objects%></b></td>
</tr>
<% BLOCK_START("resCat",lcl_consumable_objects); %>
<%
// Bepaal de catalogie waar wij rechten op hebben en die mogelijk zijn in 'onze' ruimte
fixed_room = (portal_alg_ruimte_key != -1 && !isNaN(portal_alg_ruimte_key));
sql = res_ins_discipline_artikel('d.ins_discipline_key, d.ins_discipline_omschrijving, d.ins_discipline_kpnverplicht', autfunction, alg_ruimte_key, rsv_ruimte_key, fixed_room);
sql = "select d.ins_discipline_key, "
+ " d.ins_discipline_omschrijving, "
+ " d.ins_discipline_kpnverplicht"
+ " from RES_v_aanwezigDISCIPLINE d"
+ " WHERE ins_discipline_min_level=2"
+ " AND d.INS_DISCIPLINE_KEY IN ("
+ " SELECT ins_discipline_key"
+ " FROM FAC_V_WEBGEBRUIKER g,"
+ " FAC_FUNCTIE f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = '" + autfunction + "' "
+ " AND g.PRS_PERSLID_KEY ="+user_key
+ " AND d.INS_DISCIPLINE_KEY IN"
// RES_V_SRTARTIKEL_ONRGOED i.p.v. res_v_srtartikel_ruimte:
// niet alleen kijken naar max(prio) 'R' (ruimte) maar ook naar onderliggende prio's 'L' (locatie) en 'G' (gebouw)
// In de view res_v_srtartikel_ruimte wordt alleen naar de maximale prio gekeken van een bepaalde alg_ruimte_key
+ " (SELECT res_discipline_key"
+ " FROM res_v_srtartikel_onrgoed "
+ " WHERE 1 = 1 "
if (fixed_room) sql += " AND alg_onrgoed_niveau = 'R'";
if (alg_ruimte_key>0)
sql += " AND alg_ruimte_key = "+alg_ruimte_key+ ")) ";
else
if (rsv_ruimte_key>0)
sql += " AND alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key"
+ " FROM res_v_rsv_ruimte_2_alg_ruimte "
+ " WHERE res_alg_ruimte_verwijder IS NULL "
+ " AND res_rsv_ruimte_key="+rsv_ruimte_key+")))"
sql += " ORDER BY 2";
oRs = Oracle.Execute( sql );
while( !oRs.eof ) {
var curr_disc_key = oRs("ins_discipline_key").Value;
var existing = false; // zodadelijk highlighten
if (rsv_ruimte_key > 0)
{
@@ -408,114 +411,37 @@ IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
+ " WHERE rra.res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND res_rsv_artikel_verwijder IS NULL"
+ " AND rra.res_artikel_key = ra.res_artikel_key"
+ " AND res_discipline_key = " + oRs("ins_discipline_key")
+ " AND res_discipline_key = " + curr_disc_key
var oRs2 = Oracle.Execute(sql);
existing = (oRs2(0).value > 0);
}
%>
<tr id="tr_ConsumObjs<%=oRs(0)%>">
<td id="td_ConsumObjs<%=oRs(0)%>">
<% // hidden input fields to know which disciplines are showen %>
<input type='hidden' id='ConsumObjs<%=oRs("ins_discipline_key")%>' name='ConsumObjs<%=oRs("ins_discipline_key")%>' value='<%=oRs("ins_discipline_key")%>'>
<p onClick="onClickCatLine(<%=oRs("ins_discipline_key")%>,<%=oRs("ins_discipline_kpnverplicht")%>)"
<%=(existing?" class=ref_em ":" class=ref ")%>
onMouseOver="MouseOverItem()" onMouseOut="MouseOverEnd()">
<img style="ref" src="../Pictures/tree_plus.gif" border="0" id="plus" align="middle" hspace="2"><%=oRs("ins_discipline_omschrijving")%>
</p>
</td>
</tr>
<tr id="tra_ConsumObjs<%=oRs("ins_discipline_key")%>">
<td id="div_dis<%=oRs("ins_discipline_key")%>">
</td>
<tr>
<td>
<%if (!has_kostenplaats_key && oRs("INS_DISCIPLINE_KPNVERPLICHT").value==1) { %>
<div title="<%=lcl_select_account_disc%>"
class="objcatline notavailable">
<%=Server.HTMLEncode(oRs("ins_discipline_omschrijving"))%>
<%} else {%>
<div class="objcatline closed <%=(existing?" existing ":"")%>">
<span onClick="ItemChoosed_cat(this.parentElement, 'dis'+<%=curr_disc_key%>,<%=curr_disc_key%>)">
<%=Server.HTMLEncode(oRs("ins_discipline_omschrijving"))%>
</span>
<%}%>
<div class="objcatdiv" id="div_dis<%=curr_disc_key%>" >
<% // Hier wordt met Ajax obj_schedule.asp code tussen geplakt bij openklappen %>
<%=LCL.shared.loading%>
</div>
</div>
</td>
</tr>
<%
oRs.MoveNext();
}
oRs.Close();
BLOCK_END();
%>
</table>
<iframe src="../shared/empty.html" frameborder="0" id="hidFramecheckRelation" style="display:none"></iframe>
<iframe src="../shared/empty.html" frameborder="0" id="hidFrame" style="display:none"></iframe>
<iframe src="../shared/empty.html" frameborder="0" id="hidFramecheckRelation" style="display:none"></iframe>
<script type="text/javascript">
function formOnSubmit() {
OnMouseOverEnd();
return true;
}
</script>
<input type="hidden" name="alg_ruimte_key" value="<% = alg_ruimte_key %>">
<input type="hidden" name="ordernr_key" value="<% = ordernr_key %>">
<input type="hidden" name="restype" value="<% = restype %>">
</form>
<script type="text/javascript">
var r_c_objs = new Array();
ind=0;
<%
%>
ind=0;
ind_ex=0;
<% // Haal bestaande gereserveerde artikelen op
sql= " SELECT "
+ " r_Disc.INS_DISCIPLINE_KEY, "
+ " r_Art.RES_ARTIKEL_KEY, "
+ " r_r_Art.RES_RSV_ARTIKEL_KEY, "
+ " r_r_Art.RES_RSV_ARTIKEL_AANTAL, "
+ DatePart("r_r_Art.RES_RSV_ARTIKEL_LEVERING",'HH24') + ","
+ DatePart("r_r_Art.RES_RSV_ARTIKEL_LEVERING",'MI') + ","
+ DatePart("r_r_Art.RES_RSV_ARTIKEL_LEVERING",'YYYY') + ","
+ DatePart("r_r_Art.RES_RSV_ARTIKEL_LEVERING",'MM') + ","
+ DatePart("r_r_Art.RES_RSV_ARTIKEL_LEVERING",'DD') + ", "
+ "COALESCE(r_art.res_artikel_prijs_vast,0), "
+ "COALESCE(r_r_art.res_rsv_artikel_prijs/r_r_Art.RES_RSV_ARTIKEL_AANTAL, r_art.res_artikel_prijs, 0) prijs, "
+ "r_r_Art.res_status_BO_key"
+ " FROM "
+ " RES_v_aanwezigDISCIPLINE r_Disc,"
+ " RES_v_aanwezigARTIKEL r_Art,"
+ " RES_v_aanwezigRSV_ARTIKEL r_r_Art,"
+ " RES_v_aanwezigRSV_RUIMTE r_r_Rmt"
+ " WHERE r_r_art.res_rsv_ruimte_key = r_r_Rmt.res_rsv_ruimte_key"
+ " and r_r_Art.RES_RSV_RUIMTE_KEY=" + rsv_ruimte_key
+ " AND r_r_Art.RES_ARTIKEL_KEY = r_Art.RES_ARTIKEL_KEY "
+ " AND r_Art.RES_DISCIPLINE_KEY = r_Disc.INS_DISCIPLINE_KEY";
sql += " order by INS_DISCIPLINE_OMSCHRIJVING, RES_ARTIKEL_NR";
oRs = Oracle.Execute(sql);
while( !oRs.eof ) {
%>
r_c_objs[ind++] = new rConsObj(<%=oRs(2)%>, <%=oRs(1)%>, <%=oRs(0)%>, <%=oRs(3)%>,
<%=oRs(4)%>, <%=oRs(5)%>,<%=oRs(6)%>, <%=oRs(7)%>, <%=oRs(8)%>, <%=oRs(9)%>, <%=toJsNumber(oRs(10))%>, <%=oRs(11)%>);
<%
oRs.MoveNext();
}
oRs.close();
%>
ind=0;
level=0;
c_ind=0;
c_level=1;
function rObj(rD, iD, iDsc, rh1, rmin1, rh2, rmin2)
{
this.rDeel = rD ;
this.insDeel = iD ;
this.insDisc = iDsc;
this.rh1 = rh1;
this.rmin1 = rmin1;
this.rh2 = rh2;
this.rmin2 = rmin2;
}
</script>
</div>
</body>
</html>

View File

@@ -1,9 +1,9 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 4-09-09 16:46 $
$Revision: 2 $
$Modtime: 29-10-09 13:19 $
File: res_edit_objcat_save.asp (oude reserv_ObjectsComplete.asp)
File: res_edit_objcat_save.asp
Status: 75%
Description: Opslaan van de gegevens uit res_edit_objcat.asp
Note that because of many checks and constraints in the input-form
@@ -12,32 +12,24 @@
rsv_ruimte_key required
.... alle andere gePOSTte res_edit_objcat form u2 fields
Context: Form u2 action from Reserv_Objects.asp form
Note:
TODO: op de juiste momenten de juiste tracking toevoegen
Context: Opsla script voor res_edit_objcat.asp
Note: TODO: op de juiste momenten de juiste tracking toevoegen
*/ %>
<% Response.Expires = 0; %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/funcodes.inc"-->
<!--#include file="../Shared/date_sql.inc" -->
<!--#include file="../Shared/escape.inc" -->
<!--#include file="../Shared/datetime.inc"-->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: [], js:["FcltMgr.js"] })
FCLTHeader.Requires({plugins: [], js:[] })
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key");
// Zo snel mogelijk relevante basisinformatie opzoeken
//TODO: Als dit bestand een include wordt van res_edit_objcat.asp is dat niet meer nodig?
sql = "select res_reservering_key, "
+ " res_rsv_ruimte_verwijder, "
+ " alg_ruimte_key, res_ruimte_opstel_key, "
+ " res_rsv_ruimte_van, res_rsv_ruimte_tot,"
+ " prs_kostenplaats_key"
@@ -45,7 +37,6 @@
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key;
oRs = Oracle.Execute(sql);
var res_key = oRs("res_reservering_key").value;
var resdeleted = (oRs("res_rsv_ruimte_verwijder").value != null);
var res_van = new Date(oRs("res_rsv_ruimte_van").value);
var res_tot = new Date(oRs("res_rsv_ruimte_tot").value);
@@ -68,12 +59,6 @@ var warning = null;
this.price = i_price;
}
function objinf(key, disc)
{
this.key = key;
this.disc = disc
}
// consumable objects
function artinf(key, pricefixed, disc, quantity, lev_h, lev_m, price, bo_status)
@@ -120,41 +105,14 @@ var warning = null;
var year = res_van.getFullYear();
var month = res_van.getMonth()+1;
var day = res_van.getDate();
var alginfkey = 0;
var resdeleted = false;
// day, month and year already parsed
hour1 = parseInt( Request.Form("hour1"), 10 );
min1 = parseInt( Request.Form("min1"), 10 );
hour2 = parseInt( Request.Form("hour2"), 10 );
min2 = parseInt( Request.Form("min2"), 10 );
ruimte_ora_date1 = make_sql_date(year,month,day,hour1,min1);
ruimte_ora_date2 = make_sql_date(year,month,day,hour2,min2);
// Voormalige rsv_objects_save.inc
/*
$Revision: 1 $
$Modtime: 4-09-09 16:46 $
File: rsv_objects_save.inc
Description: Actual saving of the information of an object tree
Used for both objects and consumables
Parameters:
Globals expected:
res_key required, existing RES_RESERVERING_KEY
rsv_ruimte_key required, existing RES_RSV_RUIMTE_KEY AND NOT NULL
alg_ruimte_key required, existing ALG_RUIMTE_KEY or NULL to use rsv_ruimte_key
year,month,day required date, note that the time is taken from the form
...and all other reserv_objects.asp form u2 fields
Context: Included in reserv_ObjectsComplete.asp, form action from reserv_Objects.asp
Output globals:
succes Boolean: Is set to true or false (false als voorziening al bezet)
Note:
*/ %>
<%
var request_buffer = String(Request.Form);
var rParams = request_buffer.split("&");
@@ -170,13 +128,6 @@ ruimte_ora_date2 = make_sql_date(year,month,day,hour2,min2);
var a_arIns = new Array();
var cur_res_deel = null;
var cur_res_rsv_deel = null;
var cur_van_h = "";
var cur_van_m = "";
var cur_tot_h = "";
var cur_tot_m = "";
var cur_res_art = null;
var cur_lev_h = "";
var cur_lev_m = "";
@@ -190,57 +141,19 @@ ruimte_ora_date2 = make_sql_date(year,month,day,hour2,min2);
if ( DateIsInRange ) {
//=================================================
// DEEL EEN: PARSEN VAN HET FORMULIER
//
//
// rParams is iets als inpb_c_216=0,inpbh1_c_216=14,inpbm1_c_216=30,inpb_c_217=0,inpbh1_c_217=14,inpbm1_c_217=30,......
// in het geval van catering
for( i = 0; i < rParams.length; i++ ) {
rParam = rParams[i].split("=");
pos = lpos = npos = upos = 0;
if( rParam[1].length ) {
if( rParam[1]&&rParam[1].length ) {
sstring = rParam[0].substring(0,7)
switch( sstring ) {
//=================================================
case "inhedt_": { // Bewerken reserveerbare objecten. Bepaal ook RES_DEEL_KEY
if( cur_res_deel ) {
cur_res_rsv_deel = null;
cur_van_h = "";
cur_van_m = "";
cur_tot_h = "";
cur_tot_m = "";
cur_res_art = null;
cur_lev_h = "";
cur_lev_m = "";
cur_price = 0;
}
cur_res_deel = rParam[0].substring(7); // Bepaal RES_DEEL_KEY
pstring = rParam[1];
while ( pstring != "" && (pos = pstring.indexOf("-3")) > 0 ) { // delete previously reserved objects
lpos = pstring.indexOf("_") + 1;
lpos = lpos > pos ? 0 : lpos;
aDel[aDel.length] = new resObj(cur_res_deel, pstring.substring(lpos, pos), null, null, null, null);
pstring = pstring.substring(pos+3);
}
// check updates, we support updates as only the last action on a grid row
var upos = rParam[1].lastIndexOf("-1_");
var npos = rParam[1].lastIndexOf("-2");
if( npos < upos ) { // last action was update
cur_res_rsv_deel = rParam[1].substring(upos+3);
// lpos = pstring.indexOf("_") + 1;
// lpos = lpos > upos ? 0 : lpos;
// cur_res_rsv_deel = pstring.substring(lpos, upos);
} else {
npos = rParam[1].indexOf("-2"); // new object to reserv
if( npos < pos ) { // "new object to reserv" was cancelled
cur_res_deel = null;
}
}
if (!cur_res_deel) { // skip hours and minutes
i+=4;
}
break;
}
//=================================================
case "inpbp_c": { // JGL: Parsing catering RES_ARTIKEL_KEY price
@@ -261,15 +174,7 @@ if ( DateIsInRange ) {
}
//=================================================
case "inpbh1_": { // JGL: Parsing catering hour or res_deel start hour
if( cur_res_deel ) {
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
cur_res_deel = null;
cur_res_rsv_deel = null;
break;
}
cur_van_h = rParam[1];
}
case "inpbh1_": { // JGL: Parsing catering hour
if( cur_res_art ) {
if( rParam[0].indexOf("inpbh1_c_") >= 0 ) { // Het is een catering veld
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
@@ -286,15 +191,7 @@ if ( DateIsInRange ) {
}
//=================================================
case "inpbm1_": { // JGL: Parsing catering minutes or res_deel start minutes
if( cur_res_deel ) {
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
cur_res_deel = null;
cur_res_rsv_deel = null;
break;
}
cur_van_m = rParam[1];
}
case "inpbm1_": { // JGL: Parsing catering minutes
if( cur_res_art ) { // Zal alleen gezet zijn als het aantal ongelijk 0 was
if( rParam[0].indexOf("inpbm1_c_") >= 0 ) { // Het is een catering veld
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
@@ -317,39 +214,6 @@ if ( DateIsInRange ) {
break;
}
//=================================================
case "inpbh2_": { // JGL: Parsing res_deel end hour
if( cur_res_deel ) {
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
cur_res_deel = null;
cur_res_rsv_deel = null;
break;
}
cur_tot_h = rParam[1];
}
break;
}
//=================================================
case "inpbm2_": { // JGL: Parsing res_deel end minutes
if( cur_res_deel ) {
if( rParam[1] == "" || isNaN(parseInt(rParam[1],10)) ) {
cur_res_deel = null;
cur_res_rsv_deel = null;
break;
}
cur_tot_m = rParam[1];
if( cur_res_rsv_deel ) { // update
aUpd[aUpd.length] = new resObj(cur_res_deel, cur_res_rsv_deel, cur_van_h, cur_van_m, cur_tot_h, cur_tot_m);
} else { // insert
aIns[aIns.length] = new resObj(cur_res_deel, null, cur_van_h, cur_van_m, cur_tot_h, cur_tot_m);
}
}
break;
}
//=================================================
case "inpb_c_": { // JGL: Parsing catering aantal en bepaal catering RES_ARTIKEL_KEY key
@@ -358,12 +222,6 @@ if ( DateIsInRange ) {
cur_lev_h = "";
cur_lev_m = "";
cur_price = 0;
cur_res_rsv_deel = null;
cur_van_h = "";
cur_van_m = "";
cur_tot_h = "";
cur_tot_m = "";
}
cur_cnt = parseInt(rParam[1],10); // Onthouden totdat we het uur en de minuten ook hebben
@@ -380,6 +238,8 @@ if ( DateIsInRange ) {
}
}
//=================================================
// DEEL TWEE: DE OBJECTEN
//
// Haal eerst de (volgens de database) reeds eerder gereserveerde objecten op
// en bewaar die in array r_b_key
@@ -397,140 +257,71 @@ oRs = Oracle.Execute(sql);
var r_b_key = new Array();
while ( !oRs.eof )
{
r_b_key[r_b_key.length] = new objinf(oRs("res_deel_key").Value, oRs("res_discipline_key").Value);
r_b_key.push({ key: oRs("res_deel_key").Value, disc: oRs("res_discipline_key").Value });
oRs.MoveNext();
}
oRs.Close();
for (i=1; i <= Request.Form.Count; i++)
{
var name = Request.Form.key(i);
if (name.match(/has_[0-9].*/)) // bestaand object
{
var deel_key = parseInt(name.substring(4));
var present = Request.Form("chk"+deel_key).Count > 0;
if (!present)
{ // TODO: Of verwijderveld zetten???
sql = "DELETE from res_rsv_deel"
+ " WHERE res_rsv_ruimte_key=" + rsv_ruimte_key
+ " AND res_deel_key = " + deel_key;
Oracle.Execute(sql);
__Log("removed " + name + " : " +deel_key);
//+ " res.set_delen_clean(" + aDel[i].res_deel + "," + res_van.toSQL() + "); " // Anderen 'clean' geworden vandaag?
}
else
{
// Als we update van de tijdstipjes gaan ondersteunen komt dat hier.
//+ " res.set_deel_dirty (" + aUpd[i].res_rsv_deel + "); " // Zelf dirty geworden?
//+ " res.set_delen_clean(" + aUpd[i].res_deel + "," + res_van.toSQL() + "); " // Anderen 'clean' geworden vandaag?
}
}
else // misschien nieuw object
if (name.match(/chk_[0-9].*/))
{
var deel_key = parseInt(name.substring(4));
sql = "INSERT into res_rsv_deel"
+ " (res_rsv_ruimte_key"
+ ", res_deel_key"
+ ", res_rsv_deel_van"
+ ", res_rsv_deel_tot"
+ ", res_rsv_deel_aantal)"
+ " VALUES(" + rsv_ruimte_key
+ "," + deel_key
+ "," + res_van.toSQL(true) // Vooralsnog geen eigen tijdstippen
+ "," + res_tot.toSQL(true)
+ ", 1)";
// Nu de echte update. Eventueel zelf dirty worden (anderen kunnen natuurlijk niet clean worden)
sql = "BEGIN "
+ sql + ";"
+ "END;";
Oracle.Execute( sql );
__Log("added " + name + " : " +deel_key);
}
}
ora_date1 = make_sql_date(year,month,day,00,00);
ora_date2 = make_sql_date(year,month,day,23,59);
// Zijn deze objecten zichtbaar (te selecteren), zo nee dan verwijderen
for ( i = 0; i < r_b_key.length; i++ ) {
__Log("alg_ruimte_key = " + alg_ruimte_key + ", rsv_ruimte_key = " + rsv_ruimte_key);
sql = "SELECT DISTINCT rd.res_deel_key"
+ " FROM res_rsv_deel rrD"
+ ", res_rsv_ruimte rrr"
+ ", res_deel rd"
+ ", (SELECT d.alg_regio_key, l.alg_district_key, l.alg_locatie_key, g.alg_gebouw_key, v.alg_verdieping_key, r.alg_ruimte_key "
+ " FROM "
+ (isNaN(alg_ruimte_key)
? " res_v_rsv_ruimte_2_alg_ruimte rrr, "
: "")
+ " alg_district d,"
+ " alg_locatie l,"
+ " alg_gebouw g,"
+ " alg_verdieping v,"
+ " alg_ruimte r"
+ " WHERE 1=1 "
+ (isNaN(alg_ruimte_key)
? " AND res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND rrr.alg_ruimte_key = r.alg_ruimte_key"
: "")
+ (!isNaN(alg_ruimte_key)
?" AND r.alg_ruimte_key = " + alg_ruimte_key
: "")
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND g.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key ) scope"
+ ", res_v_deelscope ds"
+ " WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key"
+ " AND rrr.res_reservering_key = " + res_key
+ " AND res_rsv_deel_verwijder is null"
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND res_discipline_key = " + r_b_key[i].disc
+ " AND rrd.res_rsv_deel_tot BETWEEN " + ora_date1 + " AND " + ora_date2
+ " AND ( ds.alg_regio_key = scope.alg_regio_key"
+ " OR ds.alg_district_key = scope.alg_district_key"
+ " OR ds.alg_locatie_key = scope.alg_locatie_key"
+ " OR ds.alg_gebouw_key = scope.alg_gebouw_key"
+ " OR ds.alg_verdieping_key = scope.alg_verdieping_key"
+ " OR ds.alg_ruimte_key = scope.alg_ruimte_key"
+ " OR ds.res_deel_alg_level = -1)"
+ " AND rd.res_deel_key = ds.res_deel_key"
+ " AND rd.res_deel_key = " + r_b_key[i].key;
var oRs = Oracle.Execute(sql);
if (oRs.eof) {
// Object is niet zichtbaar. Object moet verwijderd worden.
sql = "DELETE from res_rsv_deel"
+ " WHERE res_rsv_ruimte_key=" + rsv_ruimte_key
+ " AND res_deel_key = " + r_b_key[i].key;
Oracle.Execute(sql);
}
oRs.Close();
}
for( i = 0 ; i < aDel.length; i++ ) {
if (aDel[i].res_rsv_deel!='') {
sql = "UPDATE res_rsv_deel"
+ " SET res_rsv_deel_verwijder = SYSDATE"
+ " WHERE res_rsv_deel_key = " + aDel[i].res_rsv_deel
+ " AND res_rsv_ruimte_key=" + rsv_ruimte_key
+ " AND res_status_bo_key < "+res_bo_status_key
// Nu de echte update. Eventueel anderen clean maken
sql = "BEGIN "
+ sql + ";"
+ " res.set_delen_clean(" + aDel[i].res_deel + "," + res_van.toSQL() + "); " // Anderen 'clean' geworden vandaag?
+ "END;";
Oracle.Execute( sql );
}
}
if (aDel.length>0)
res.trackaction("RESDEL", rsv_ruimte_key, "TODO lcl_resdeel verwijderd"); /* TODO zie boven */
for( i = 0 ; i < aUpd.length; i++ ) {
// van and tot should be concatenated with date and seconds
var jsDate = new Date(year, month-1, day, aUpd[i].van_h, aUpd[i].van_m)
must_warn = must_warn || (jsDate < res.tCatExpire())
ora_date1 = make_sql_date(year,month,day,aUpd[i].van_h, aUpd[i].van_m); // Never cyclic updates
ora_date2 = make_sql_date(year,month,day,aUpd[i].tot_h, aUpd[i].tot_m);
sql = "UPDATE res_rsv_deel"
+ " SET res_rsv_deel_van = " + ora_date1
+ ", res_rsv_deel_tot = " + ora_date2
+ " WHERE res_rsv_deel_key =" + aUpd[i].res_rsv_deel
// Nu de echte update. Eventueel dirty/ anderen clean maken
sql = "BEGIN "
+ sql + ";"
+ " res.set_deel_dirty (" + aUpd[i].res_rsv_deel + "); " // Zelf dirty geworden?
+ " res.set_delen_clean(" + aUpd[i].res_deel + "," + res_van.toSQL() + "); " // Anderen 'clean' geworden vandaag?
+ "END;";
Oracle.Execute( sql );
}
if (aUpd.length>0)
res.trackaction("RESUPD", rsv_ruimte_key, "TODO lcl_resdeel aangepast"); /* TODO zie boven */
// Nu de inserts
for( i = 0 ; i < aIns.length; i++ ) {
// van and tot should be concatenated with date and seconds
ora_date1 = make_sql_date(year,month,day,aIns[i].van_h, aIns[i].van_m);
ora_date2 = make_sql_date(year,month,day,aIns[i].tot_h, aIns[i].tot_m);
sql = "INSERT into res_rsv_deel"
+ " (res_rsv_ruimte_key"
+ ", res_deel_key"
+ ", res_rsv_deel_van"
+ ", res_rsv_deel_tot"
+ ", res_rsv_deel_aantal)"
+ " VALUES(" + rsv_ruimte_key
+ "," + aIns[i].res_deel
+ "," + ora_date1
+ "," + ora_date2
+ ", 1)";
// Nu de echte update. Eventueel zelf dirty worden (anderen kunnen natuurlijk niet clean worden)
sql = "BEGIN "
+ sql + ";"
+ "END;";
Oracle.Execute( sql );
}
if (aIns.length>0)
res.trackaction("RESUPD", rsv_ruimte_key, "TODO lcl_resdeel toegevoegd"); /* TODO zie boven */
// Check of er delen dirty zijn (geworden)
@@ -776,7 +567,5 @@ if (false && /*TODO, vroeger kwamen de vars uit rsv_voorziening_view.inc */rest
</script>
</head>
<body onLoad="onBodyLoad();">
<iframe src="../shared/empty.html" frameborder="10" name="hidFrame2" id="hidFrame2" style="display:none"></iframe>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 17:37 $
$Revision: 2 $
$Modtime: 3-11-09 16:06 $
File: res_edit_deel_save.asp
Status: 75%
@@ -19,15 +19,14 @@
Note:
*/
%>
<% Response.Expires = -1; %>
<!--#include file="../../cust/install.inc"-->
<!-- #include file="../Shared/datetime.inc" -->
<!--#include file="../Shared/datetime.inc" -->
<!--#include file="../shared/save2db.inc" -->
<!--#include file="../Shared/date_sql.inc"-->
<!--#include file="../Shared/escape.inc"-->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: [], js:["FcltMgr.js"] })
FCLTHeader.Requires({plugins: []})
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key"); // de *huidige* ruimte
@@ -36,9 +35,6 @@ var fronto = (urole=="fo");
var backo = (urole=="bo");
var res_key = parseInt(Request.Form("res_key"), 10);
var cancelObjects = Request.Form("cancelObjects")=="1";
var obj_outofscope = Request.Form("obj_outofscope")=="1";
var art_outofscope = Request.Form("art_outofscope")=="1";
var timecatvoorz = Request.Form("timecatvoorz")=="1";
var newres = Request.Form("newres")=="1";
var date_readonly = Request.Form("date_readonly")=="1";
var restype = Request.Form("restype").Count>0?Request.Form("restype"):"R";
@@ -53,12 +49,7 @@ if( Request.Form("vis").Count>0 ) {
// ==========
var kosten_klant = Request.Form("costclient").Count?Request.Form("costclient"):'';
var alginfkey = parseInt(Request.Form("alginfkey"), 10);
alginfkey=0; // TODO: Alleen even huidige
function saveOneReservering(rsv_ruimte_key)
{
// Deze velden altijd opslaan
var fields = [ { dbs: "res_rsv_ruimte_omschrijving", typ: "varchar", frm: "descript" },
{ dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk" },
@@ -70,19 +61,13 @@ function saveOneReservering(rsv_ruimte_key)
{ dbs: "res_rsv_ruimte_host_key", typ: "key", frm: "personH" },
{ dbs: "res_activiteit_key", typ: "key", frm: "sel_activity" },
{ dbs: "res_status_fo_key", typ: "key", frm: "status_fo" },
{ dbs: "res_rsv_ruimte_kosten_klant", typ: "bool", frm: "costclient" },
{ dbs: "res_rsv_ruimte_kosten_klant", typ: "check", frm: "costclient" },
{ dbs: "res_rsv_ruimte_contact_key", typ: "key", frm: "person" },
{ dbs: "res_rsv_ruimte_bezoekers", typ: "number", frm: "bezoekers" },
{ dbs: "res_rsv_ruimte_noshow", typ: "number", frm: "res_noshow" },
{ dbs: "res_rsv_ruimte_noshow", typ: "check", frm: "res_noshow" },
{ dbs: "res_rsv_ruimte_telefoon", typ: "varchar", frm: "phone" }
];
/* TODO: kostenklant nog overnemen in buildSave
xxxxsql = "UPDATE res_rsv_ruimte SET"
+ (fronto||backo?((kosten_klant=='on')?", res_rsv_ruimte_kosten_klant = 1":", res_rsv_ruimte_kosten_klant = null"):"")
+ ", res_rsv_ruimte_noshow = " + (res_noshow?"1":"NULL")
*/
if (rsv_ruimte_key==-1) // Nieuw, dan moeten we ook nog een res_reservering record aanmaken
{
var resfields = [ { dbs: "res_reservering_key", typ: "key", seq: "res_s_res_reservering_key" },
@@ -96,10 +81,17 @@ function saveOneReservering(rsv_ruimte_key)
fields = fields.concat(
[ { dbs: "res_rsv_ruimte_key", typ: "key", seq: "res_s_res_rsv_ruimte_key" },
{ dbs: "res_reservering_key", typ: "key", val: reservering_key },
{ dbs: "res_status_bo_key", typ: "key", val: 2 }, // ingevoerd
{ dbs: "res_rsv_ruimte_volgnr", typ: "number", val: 1 }
]);
if (restype == "R")
{
// PF: volgens mij is het verhaal dat het voor CV reserveringen wordt bepaald door de
// statussen van de onderliggende items.
fields = fields.concat(
[ { dbs: "res_status_bo_key", typ: "key", val: 2 } // ingevoerd
]);
}
var resIns = buildInsert("res_rsv_ruimte", fields);
var rsv_ruimte_key = resIns.sequences["res_rsv_ruimte_key"];
@@ -115,6 +107,10 @@ function saveOneReservering(rsv_ruimte_key)
}
else // update
{
// Hardness controle schrijfrechten
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
user.auth_required_or_abort(this_res.canChange);
// ons eigen tijdstip/zaal is mogelijk gewijzigd waardoor andere *dirty* reserveringen
// clean wordt. Even onze oude datum onthouden zodat we niet *alles* hoeven te controleren
oRs = Oracle.Execute("select res_rsv_ruimte_van,"
@@ -145,13 +141,6 @@ function saveOneReservering(rsv_ruimte_key)
Oracle.Execute( sql );
res.trackaction("RESUPD", rsv_ruimte_key, "TODO lcl_deelreservering gewijzigd"); /* TODO zie boven */
}
return rsv_ruimte_key
}
rsv_ruimte_key = saveOneReservering(rsv_ruimte_key);
// TODO: Controle of ik rsv_ruimte_key wel mag schrijven (hardness)
%>
<!-- #include file="kenmerk_save.inc"-->
@@ -181,7 +170,10 @@ if (!oRs.eof) {
// zijn er nog wel voorzieningen bij een "CV" reservering
var emptyRes= false;
if (restype == "CV" && timecatvoorz) { // We komen hier als tijdstip is aangepast
// TODO: Moet dit niet naar objcat_save?
// JGL Vooralsnog even false omdat we helemaal geen res_key hebben
// Bovendien zijn we hier misschien akelig nieuw en is verwijderen wel erg prematuur
if (false && restype == "CV") { // We komen hier als tijdstip is aangepast
sql = "SELECT SUM (aantal)"
+ " FROM (SELECT COUNT (*) aantal"
+ " FROM res_v_aanwezigrsv_deel rd"
@@ -213,13 +205,15 @@ if (restype == "CV" && timecatvoorz) { // We komen hier als tijdstip is aangepas
}
var warning = "";
// TODO
// if(pasttexpire&&!backo) warning = lcl_res_warnBO;
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script>
FcltMgr.closeDetail(window, { rsv_ruimte_key: <%=rsv_ruimte_key%> });
FcltMgr.closeDetail(window, { rsv_ruimte_key: <%=rsv_ruimte_key%>, warning: "<%=warning%>" });
</script>
</head>
<body>

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 2 $
$Modtime: 2-11-09 17:20 $
$Revision: 3 $
$Modtime: 3-11-09 15:35 $
File: res_list.inc
Description: Show an overview of reservations in list-form,
@@ -1406,6 +1406,10 @@ function res_list (pautfunction, params)
{
sql = sql + sql_order;
}
// Extra wrapper omdat ADO anders komt met 'Operation not allowed when object is closed'
// Blijkbaar snapt die de WITH constructie vooraan niet zo
sql = "SELECT * FROM ("+sql + ")";
/***** End build sql *****/
var count = 0;

View File

@@ -1,10 +1,10 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 2 $
$Modtime: 28-10-09 16:33 $
$Revision: 3 $
$Modtime: 2-11-09 20:44 $
File: obj_schedule.asp
Description: Create small planboard for reservable objects
File: res_load_plan_obj.asp
Description: Maakt een klein planbordje voor een enkele objecten discipline
Wordt via Ajax geladen/geplakt in de body res_edit_objcat.asp
als een categorie wordt opengeklapt.
Parameters: urole
@@ -14,9 +14,7 @@
alleen een planbordje
rsv_van datum, optioneel, zie rsv_ruimte_key
Context: Geladen via ajax als user 'opent' object categorie
Notes: Zie ook cons_objects.asp voor catering
het RES_RSV_RUIMTE record bestaat altijd al!
res_rsv_ruimte_key is dan ook zo'n beetje de enige parameter?
Notes: Zie ook res_load_cat.asp voor catering
Er wordt combinatie-validate gedaan
*/
DOCTYPE_Disable = 1;
@@ -29,13 +27,13 @@ DOCTYPE_Disable = 1;
<!--#include file="../Shared/escape.inc" -->
<!--#include file="../Shared/discxalg3d.inc"-->
<!--#include file="res.inc"-->
<!--#include file="obj_schedule.inc"-->
<!--#include file="res_plan_obj.inc"-->
<!-- #include file="../shared/kpl_ksrt_validate.inc" -->
<%
var urole = getQParam("urole");
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var sdisc = getQParamInt("sdisc");
var disc_key = getQParamInt("disc_key");
if (rsv_ruimte_key>0)
{
// Zo snel mogelijk relevante basisinformatie opzoeken
@@ -50,7 +48,7 @@ DOCTYPE_Disable = 1;
var res_van = new Date(oRs("res_rsv_ruimte_van").value);
var res_tot = new Date(oRs("res_rsv_ruimte_tot").value);
if (!kpl_ksrt_validate(oRs("prs_kostenplaats_key"), null, sdisc))
if (!kpl_ksrt_validate(oRs("prs_kostenplaats_key"), null, disc_key))
{
%><script type="text/javascript">
alert("<%=lcl_res_kpks_validatie%>");
@@ -58,7 +56,6 @@ DOCTYPE_Disable = 1;
<%
Response.End()
}
}
else
{
@@ -69,8 +66,6 @@ DOCTYPE_Disable = 1;
var fronto = (urole=='fo');;
var backo = (urole=='bo');
var jumped = Request.QueryString("jumped").Count>0;
var ch_obj_mode = parseInt(Request.QueryString("ch_obj_mode"));
@@ -81,9 +76,8 @@ DOCTYPE_Disable = 1;
var authparams = user.checkAutorisation(autfunction, true);
objSchedule(sdisc, res_van, res_tot,
{ jumped: jumped,
hour_px: hour_px,
make_plan_obj(disc_key, res_van, res_tot,
{ hour_px: hour_px,
rsv_ruimte_key: rsv_ruimte_key,
ch_obj_mode: ch_obj_mode
});

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 18:05 $
$Revision: 2 $
$Modtime: 2-11-09 10:21 $
File: makeMultiDialog.asp
Description: Maak een dialoog om gegevens van een deelreservering
@@ -23,7 +23,7 @@
<!--#include file="./res.inc"-->
<%
FCLTHeader.Requires({plugins: ["jQuery", "datepicker"],
js: ["date.js", "FcltMgr.js"]})
js: ["date.js"]})
var urole = getQParam("urole");
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
@@ -124,6 +124,7 @@
date: [],
format: 'd-m-Y',
calendars: nrCals,
locale: LCL.shared.calendar_names,
current: nextmonth,
mode: 'multiple',
onChange: function(formatted, dates)
@@ -146,7 +147,7 @@
res.className = 'res_exist';
res.disabled = true;
}
else if ($.inArray(datum.getTime(), mld_vrije_dagen)> -1)
else if (cal_isVrijeDag(datum))
{
res.className = 'TODOVrij';
// res.disabled = true; // TODO als vrije dagen verboden

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 16:18 $
$Revision: 2 $
$Modtime: 2-11-09 13:38 $
File: multisaveDialog.asp
Description: Maak een dialoog om gegevens van een deelreservering naar
@@ -12,11 +12,10 @@
Note:
*/
%>
<% Response.Expires = -1; %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/iface.inc"-->
<%
FCLTHeader.Requires({js: ["FcltMgr.js"]})
FCLTHeader.Requires({plugins: ["jQuery"]});
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key");
@@ -48,12 +47,10 @@
if (submitting)
{
var rq = Request.Form("deelreserveringen");
var what = getFParamInt("call", 0, true);
if (what == 0) {
var what = getFParamInt("c1", 0, true)+getFParamInt("c2", 0, true)+getFParamInt("c4", 0, true)+getFParamInt("c8", 0, true)
+getFParamInt("c16", 0, true)+getFParamInt("c32", 0, true)+getFParamInt("c64", 0, true)+getFParamInt("c128", 0, true)
+getFParamInt("c256", 0, true)+getFParamInt("c512", 0, true)+getFParamInt("c1024", 0, true);
}
var what = getFParamInt("c1", 0, true)+getFParamInt("c2", 0, true)+getFParamInt("c4", 0, true)+getFParamInt("c8", 0, true)
+getFParamInt("c16", 0, true)+getFParamInt("c32", 0, true)+getFParamInt("c64", 0, true)+getFParamInt("c128", 0, true)
+getFParamInt("c256", 0, true)+getFParamInt("c512", 0, true)+getFParamInt("c1024", 0, true);
if (what != "") {
for (var i=1; i<=rq.count; i++)
{
@@ -89,7 +86,7 @@ if (submitting)
<tr>
<td valign=top>
<label><%=lcl_res_copypart%></label>
<br><label><input name='call' value="2047" type='checkbox'><%=lcl_all%></label>
<br><label><a href="#" onclick="javascript:$('input[type=checkbox]').attr('checked', true); return false;"><%=lcl_all%></a></label>
<br><label><input name='c1' value="1" type='checkbox'><%=lcl_descr%></label>
<br><label><input name='c2' value="2" type='checkbox'><%=lcl_remark%></label>
<br><label><input name='c4' value="4" type='checkbox'><%=lcl_date_time%></label>
@@ -165,7 +162,7 @@ if (submitting)
// if (oRs("res_ruimte_nr").value)
// tekst += ": " + oRs("res_ruimte_nr")
volgnrTxt = oRs("res_rsv_ruimte_volgnr").value;
// TODO: Hoe hier net als vroeger omgaan met 'deleted' en 'serie' en 'reminder' etc.
// TODO: Hoe hier net als vroeger omgaan met 'deleted' en 'serie' etc.
sel = "";
if (d1Key > new Date())
var sel = " SELECTED "

View File

@@ -1,6 +1,6 @@
/*
$Revision: 2 $
$Modtime: 2-11-09 19:50 $
$Revision: 3 $
$Modtime: 3-11-09 10:39 $
*/
// As in RES_STATUS_FO
var fo_stat_opt=1
@@ -24,7 +24,9 @@ function delayed(delay, fn)
function setResRsvDeelTitle(elm, rsv_deel_key)
{
if (!elm.title)
loadtitle(elm, "../res/ResRsvDeelTitle.asp?rsv_deel_key="+rsv_deel_key);
delayed(200, function () {
loadtitle(elm, "../res/res_load_title_obj.asp?rsv_deel_key="+rsv_deel_key);
});
}
function rsv_title(elm, rsv_ruimte_key)
@@ -32,7 +34,7 @@ function rsv_title(elm, rsv_ruimte_key)
if (!elm.title)
{
delayed(200, function () {
loadtitle(elm, "../res/ResRsvTitle.asp?rsv_ruimte_key="+elm.rsv_key);
loadtitle(elm, "../res/res_load_title_rsv.asp?rsv_ruimte_key="+elm.rsv_key);
});
}
}
@@ -40,20 +42,22 @@ function rsv_title(elm, rsv_ruimte_key)
function setBezBezoekersTitle(elm, bez_bezoekers_key)
{
if (!elm.title)
loadtitle(elm, "../res/BezBezoekersTitle.asp?bez_bezoekers_key="+bez_bezoekers_key);
delayed(200, function () {
loadtitle(elm, "../res/res_load_title_bez.asp?bez_bezoekers_key="+bez_bezoekers_key);
});
}
function rsv_click(elm,urole)
{
if (elm.beingdragged)
{
elm.beingdragged = false;
return;
}
var cmd = "appl/res/res_reservering.asp?rsv_ruimte_key=" + elm.rsv_key + "&urole="+urole;
FcltMgr.openDetail(cmd);
}
function noCClick(i)
{
return;
}
function room_table_click(hours, urole)
{
var ob = window.event.srcElement;
@@ -90,82 +94,6 @@ function obj_table_click(hours, urole)
}
}
function doTClick(obj_edit)
{
if( window.event.srcElement.onclick != null ) return;
var tName ="";
var ob = window.event.srcElement;
i = 0;
while(1){
if(i++ > 20) break;
if(ob){
if(ob.tagName == "TABLE")
{
tName = ob.id;
break;
}
if(ob.tagName == "TR")
{
t2_Name = ob.id;
if(t2_Name.indexOf("tr_rdeel") >=0) t2_Name = t2_Name.substring(8);
else t2_Name ="";
ob = ob.parentElement;
}
else
{
ob = ob.parentElement;
}
}
else
{
break;
}
}
t1 = parseInt(window.event.srcElement.id,10);
if( isNaN(t1))
return;
th = Math.floor(res_t1 + res_h * t1);
tm = Math.floor((res_t1 + res_h * t1 - th) * 60);
t2 = parseInt(window.event.srcElement.parentElement.id,10);
if(tName.indexOf("able_dis") > 0)
{
if( obj_edit ) {
el = window.event.srcElement;
enableNewResObj(el,th,tm);
} else {
t2 = parseInt(t2_Name,10);
if( parent.year ) {
cmd=(!frontend?'fronto=&':'') + 'yy=' + parent.year[1] + '&mm=' + parent.month[1] + '&dd='
+ parent.date[1] + '&hh=' + th + '&mi=' + tm + '&rdeel=' + t2 + '&restype=CV';
if(parent.validAdd())
parent.frames.workFrame.navigate('../res/reserv_New.asp?'+cmd);
} else {
cmd=(!frontend?'fronto=':'') + '&yy=' + parent.parent.year[1] + '&mm=' + parent.parent.month[1] + '&dd='
+ parent.parent.date[1] + '&hh=' + th + '&mi=' + tm + '&rdeel=' + t2 + '&restype=CV';
if(parent.parent.validAdd())
parent.parent.frames.workFrame.navigate('../res/reserv_New.asp?'+cmd);
}
}
}
else
{
if( parent.year ) {
cmd=(!frontend?'fronto=&':'') + 'yy=' + parent.year[1] + '&mm=' + parent.month[1] + '&dd='
+ parent.date[1] + '&hh=' + th + '&mi=' + tm + '&room=' + t2;
if(parent.validAdd())
parent.frames.workFrame.navigate('../res/reserv_New.asp?'+cmd);
} else {
cmd=(!frontend?'fronto=&':'') + 'yy=' + parent.parent.year[1] + '&mm=' + parent.parent.month[1] + '&dd='
+ parent.parent.date[1] + '&hh=' + th + '&mi=' + tm + '&room=' + t2;
if(parent.parent.validAdd())
parent.parent.frames.workFrame.navigate('../res/reserv_New.asp?'+cmd);
}
}
}
// Gebruiker heeft een ruimte geselecteerd.
// TODO: Ook (eventueel) geklikt tijdstip teruggeven?
@@ -257,7 +185,7 @@ function ItemChoosed_obj(elm, fromID, disc_key)
}
params = "?rsv_ruimte_key="+rsv_ruimte_key+"&urole="+urole;
params += "&sdisc="+disc_key;
params += "&disc_key="+disc_key;
params += "&ch_obj_mode="+"1";// TODO ch_obj_mode;
params += "&hour_px=" + hour_px;
params += "&res_van=" + res_van.getTime();
@@ -287,7 +215,7 @@ function ItemChoosed_cat(elm, fromID, disc_key)
// onclick van een reserveerbaar deel regel (dan is de categorie al opengeklapt)
//
function res_deel_click(fromID, rdeel)
function res_deel_click(rdeel)
{
$("#" + rdeel).toggleClass("selected").toggleClass("unselected");
}

View File

@@ -1,87 +1,86 @@
<% /*
$Revision: 2 $
$Modtime: 2-11-09 12:31 $
$Revision: 3 $
$Modtime: 3-11-09 14:27 $
File: obj_schedule.inc
Status: 75% (PF: hooguit)
Description: Create small planboard for reservable objects
At the body.onload it copies its entire innerHTML to the parent
File: res_plan_obj.inc
Status: 80%
Description: Het echte genereren van het planbordje voor objecten
via functie make_plan_obj() die een kale HTML-table oplevert
Parameters: ???
Context: Geladen via ajaxals gebruiker een object categorie opent
as well serverside when object categorie should be open initially
??Let wel: 'onder het grote planbord' en 'na drukken knop voorzieningen bij een
bestaande of nieuwe reservering' geeft iets ander gedrag??
Notes: See also cons_objects.asp for consumable objects. Solved differently
though.
Context: Indirect ajax in read_load_plan_obj.asp
of rechtstreeks in res_search_plan_obj.asp
Notes: Zie res_load_cat.asp voor de catering en res_plan_room.inc voor ruimtes
*/
FCLTHeader.Requires({ js: ["./room_schedule.js"] });
FCLTHeader.Requires({ js: ["./res_plan.js"] });
first=true;
function objSchedule(sdisc, res_van, res_tot, params)
function make_plan_obj(disc_key, res_van, res_tot, params)
{
mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
{
var div;
var overleft="";
var overright="";
if (h_start<res_t1)
{
h_start = res_t1-res_h;
if (dagen > 0)
overleft = " continueleft";
else
overleft = " overflowleft";
}
if (h_end>res_t2)
{
h_end = res_t2+res_h;
if (dagen < nr_days-1)
overright = " continueright";
else
overright = " overflowright";
}
var px_start = (h_start-res_t1)*params.hour_px + 1; // 1 px speling
var px_end = (h_end-res_t1)*params.hour_px;
var px_width = px_end - px_start;
if (overleft!=""&&overright!="")
{ // Maak twee divjes, eentje links en eentje rechts.
// HTML kan maar <20><>n background image tegelijk aan
div = "<div class='"+theClass+overleft+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+px_start+"px;width:"+(px_width/2)+"px'>"
+"&nbsp;</div>";
div += "<div class='"+theClass+overright+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+(px_start+px_width/2)+"px;width:"+(px_width/2)+"px'>"
+"&nbsp;</div>";
}
else
{
div = "<div class='"+theClass+overleft+overright+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+px_start+"px;width:"+px_width+"px'>"
+"&nbsp;</div>";
}
return { div: div, overleft: overleft, overright: overright };
}
params = params || {};
params.hour_px = params.hour_px || 48;
params.rsv_ruimte_key = params.rsv_ruimte_key || -1;
params.ch_obj_mode = params.ch_obj_mode || 0;
var res_h_px = params.hour_px * res_h;
mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
{
var div;
var overleft="";
var overright="";
if (h_start<res_t1)
{
h_start = res_t1-res_h;
if (dagen > 0)
overleft = " continueleft";
else
overleft = " overflowleft";
}
if (h_end>res_t2)
{
h_end = res_t2+res_h;
if (dagen < nr_days-1)
overright = " continueright";
else
overright = " overflowright";
}
var px_start = (h_start-res_t1)*params.hour_px + 1; // 1 px speling
var px_end = (h_end-res_t1)*params.hour_px;
var px_width = px_end - px_start;
if (overleft!=""&&overright!="")
{ // Maak twee divjes, eentje links en eentje rechts.
// HTML kan maar <20><>n background image tegelijk aan
div = "<div class='"+theClass+overleft+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+px_start+"px;width:"+(px_width/2)+"px'>"
+"&nbsp;</div>";
div += "<div class='"+theClass+overright+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+(px_start+px_width/2)+"px;width:"+(px_width/2)+"px'>"
+"&nbsp;</div>";
}
else
{
div = "<div class='"+theClass+overleft+overright+"'"
+(theMouse||"")
+(theClick||"")
+(theOther||"")
+" style='left:"+px_start+"px;width:"+px_width+"px'>"
+"&nbsp;</div>";
}
return { div: div, overleft: overleft, overright: overright };
}
var readwrite = func_enabled[ "WEB_RESFOF"] || func_enabled[ "WEB_RESUSE"];
if( readwrite || func_enabled[ "WEB_RESFO2"] )
@@ -128,13 +127,6 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
params.ch_obj_mode = 0;
}
if (isNaN(sdisc)) {
%>
<p><%=lcl_internal_error%>: obj_schedule.inc</p>
<%
}
else
{
ora_date1 = res_van.beginToSQL();
ora_date2 = res_tot.endToSQL();
@@ -162,9 +154,9 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
+ " AND rrd.res_rsv_deel_van <= " + ora_date2
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
+ " AND rd.res_discipline_key = " + sdisc
+ " AND rd.res_discipline_key = " + disc_key
if (sdisc==vis_parking_key)
if (disc_key==vis_parking_key)
sql = sql + " UNION ALL " //Die via afspraak/bezoekers (parkeerplaatsen)
+ "SELECT rrd.RES_RSV_DEEL_VAN"
+ ", rrd.RES_RSV_DEEL_TOT"
@@ -186,7 +178,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
+ " AND rrd.bez_bezoekers_key = b.bez_bezoekers_key"
+ " AND b.bez_afspraak_key = a.bez_afspraak_key"
+ " AND rrd.res_rsv_ruimte_key is null"
+ " AND rd.RES_DISCIPLINE_KEY="+sdisc
+ " AND rd.RES_DISCIPLINE_KEY="+disc_key
oRs = Oracle.Execute(sql);
while( !oRs.eof ) {
@@ -212,10 +204,10 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
var onclick = "";
if (readwrite&&!params.jumped)
onclick = "onclick=obj_table_click(parseInt(window.event.offsetX)/"+params.hour_px+"+"+res_t1+",'"+urole+"')";
onclick = "onclick=\"obj_table_click(parseInt(window.event.offsetX)/"+params.hour_px+"+"+res_t1+",'"+urole+"')\"";
%>
<table id="table_dis<%=sdisc%>" class="tab_obj_sched planbord planbord<%=params.hour_px%>" cellspacing="0"
<table id="table_dis<%=disc_key%>" class="tab_obj_sched planbord planbord<%=params.hour_px%>" cellspacing="0"
<%=onclick%>
>
<%//// Extra regel met losse cellen om afmetingen te forceren%>
@@ -240,7 +232,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
// Iterate through all reservable objects (vertically) and show schedule for them (horizontally)
var n=0,res_deel_key,free,rsv_ruimte_key;
var sql1 = getReservedObjectTypes(alg_ruimte_key, params.rsv_ruimte_key, select_fields, loc_key, sdisc, group_by);
var sql1 = getReservedObjectTypes(alg_ruimte_key, params.rsv_ruimte_key, select_fields, loc_key, disc_key, group_by);
} else {
// We hebben dus g<><67>n alg_ruimte_key <20>n g<><67>n res_rsv_ruimte_key
@@ -253,7 +245,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
var sql1 = "SELECT " + select_fields
+ " FROM ins_deel d,"
+ " res_v_aanwezigdeel r "
+ " WHERE r.res_discipline_key="+sdisc
+ " WHERE r.res_discipline_key="+disc_key
+ " AND r.res_ins_deel_key=d.ins_deel_key"
+ ((loc_key > -1)
? " AND d.ins_alg_locatie_key=" + loc_key
@@ -266,7 +258,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
+ " WHERE l.prs_perslid_key="+user_key
+ " AND l.prs_perslid_key = gg.prs_perslid_key "
+ " AND niveau = gg.fac_gebruiker_alg_level_write "
+ " AND gg.ins_discipline_key=" + sdisc
+ " AND gg.ins_discipline_key=" + disc_key
+ " AND gg.fac_functie_key = " + authparams.autfunctionkey+")"
: "")
+ " UNION "
@@ -276,7 +268,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
+ ", r.res_deel_prijs"
+ ", r.res_deel_eenheid"
+ " FROM ins_deel d, res_v_aanwezigdeel r "
+ " WHERE r.res_discipline_key="+sdisc
+ " WHERE r.res_discipline_key="+disc_key
+ " AND r.res_ins_deel_key = d.ins_deel_key "
+ " AND d.ins_alg_ruimte_type = 'T' "
+ ((authparams.ALGreadlevel>-1)
@@ -286,7 +278,7 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
+ " WHERE l.prs_perslid_key = " + user_key
+ " AND l.prs_perslid_key = gg.prs_perslid_key "
+ " AND niveau = gg.fac_gebruiker_alg_level_write "
+ " AND gg.ins_discipline_key = " + sdisc
+ " AND gg.ins_discipline_key = " + disc_key
+ " ADN gg.fac_functie_key = " + authparams.autfunctionkey+")"
: "")
+ group_by;
@@ -301,7 +293,6 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
ins_deel_omschrijving = replace( ins_deel_omschrijving , "\n" , "<br>" );
res_deel_prijs = oRs("RES_DEEL_PRIJS").Value;
res_deel_eenheid = oRs("RES_DEEL_EENHEID").Value;
var res_deel_opm = escape_js(oRs("RES_DEEL_OPMERKING").value);
var res_deel_opm2 = oRs("RES_DEEL_OPMERKING").value; //escape2(oRs("RES_DEEL_OPMERKING").value);
res_deel_opm2 = replace( res_deel_opm2 , "\n" , "<br>" );
@@ -356,26 +347,27 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
}
%>
<tr class="<%=is_selected?' selected':''%><%=is_nofit?' res_nofit':''%>" id='<%=res_deel_key%>'>
<td class='label'>
<td class='label'
OnMouseOver="$('#remark<%=res_deel_key%>').show();"
OnMouseOut="$('#remark<%=res_deel_key%>').hide();"
>&nbsp;
<% if (is_selected) { %>
<input name='has_<%=res_deel_key%>' type='hidden'>
<% } %>
<label OnMouseOver="$('#remark<%=res_deel_key%>').show();"
OnMouseOut="$('#remark<%=res_deel_key%>').hide();">
<% if (params.rsv_ruimte_key>0) { %>
<input id='chk_<%=res_deel_key%>' name='chk_<%=res_deel_key%>'
type='checkbox' <%=is_selected?'checked':''%>
<% if (!st&&!params.jumped) { %>
onClick="javascript:res_deel_click('rdeel<%=res_deel_key%>','<%=res_deel_key%>')"
<% if (!st&&!params.jumped) { %>
onClick="javascript:res_deel_click('<%=res_deel_key%>')"
<% } %>>
<div class="ref" id='a_<%=res_deel_key%>' style='display:inline'>
<% } %>
<label >
<nobr><%=ins_deel_omschrijving + (isEdit ? '':(prijs_text?' ('+prijs_text+')':'')) %></nobr>
</div>
</label>
<div class="res_remark" id="remark<%=res_deel_key%>">
<%="<b>" + ins_deel_omschrijving + ":</b><br>" + res_deel_opm2%>
</div>
</label>
</td>
<%
divver = { overleft: "", overright: "" };
@@ -433,11 +425,8 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
theClick = ' onClick="rsv_click(this,\''+urole+'\');"'
theClass += " click";
}
else
if (readwrite&&!params.jumped)
theClick =" onClick=noCClick()"
divver = mkDiv(theClass, h_start, h_end, theClick, theMouse, " rsv_key='" + rsv_ruimte_key + "'");
divver = mkDiv(theClass, h_start, h_end, theClick, theMouse, " rsv_key='" + rsv_ruimte_key +"' rsv_deel_key='" + rsv_deel_key + "'");
Response.Write("\n"+divver.div);
}
@@ -468,7 +457,6 @@ mkDiv = function (theClass, h_start, h_end, theClick, theMouse, theOther)
<span onclick="$('.res_nofit').css('display','none');$(this).toggle();;$(this).prev().toggle()" style='display:none'>
TODO: Alle objecten getoond. Toon alleen beschikbare.
</span><%
}
}//readwrite
} // function objSchedule()
} // function make_plan_obj()
%>

View File

@@ -1,10 +1,20 @@
<% /*
$Revision: 2 $
$Modtime: 2-11-09 11:39 $
*/ %>
$Revision: 3 $
$Modtime: 2-11-09 20:18 $
<%
FCLTHeader.Requires({js: ["./room_schedule.js"]});
File: res_plan_room.inc
Status: 80%
Description: Het echte genereren van het planbordje voor ruimtes
via functie make_plan_room() die een kale HTML-table oplevert
Parameters: ???
Context: Indirect ajax in read_load_plan_room.asp
of rechtstreeks in res_search_plan_room.asp
Notes: Zie res_load_cat.asp voor de catering en res_plan_obj.inc voor ruimtes
*/
FCLTHeader.Requires({js: ["./res_plan.js"]});
frontend = Request.QueryString("frontend").Count>0;
@@ -20,7 +30,7 @@
var existing_res = new Array();
function CreateRoomScheduleMulti(params)
function make_plan_room(params)
{
__Log("Entering CreateRoomScheduleMulti with id=" + params.id + " and readwrite=" + params.readwrite);
var sql, Autfunction;

View File

@@ -1,7 +1,7 @@
<%@language = "javascript" %>
<%
/* $Revision: 1 $
$Modtime: 30-09-09 14:06 $
/* $Revision: 2 $
$Modtime: 1-11-09 20:44 $
File: res_reservering.asp
Status: 60%
@@ -16,9 +16,7 @@
Note:
*/ %>
<% Response.Expires = -1; %>
<!--#include file="../../cust/install.inc" -->
<!--#include file="../Shared/funcodes.inc" -->
<!--#include file="../Shared/iface.inc" -->
<!--#include file="../Shared/datetime.inc" -->
@@ -32,17 +30,21 @@
standaard voor *alle* deelreserveringen
*/
FCLTHeader.Requires({plugins: ["jQuery"],
js: ["expand_frame.js", "FcltMgr.js", "jQuery-ui.js"],
js: ["jQuery-ui.js"],
css: ["../shared/suggest/suggest.css"]}); // css voor header.asp
// AUTORISATIEPARAMETERS
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key", -1);
var res_deel_key = getQParamInt("res_deel_key", -1);
var verynew = getQParam("verynew","0")=="1";
// Overige parameters
if (rsv_ruimte_key==-1) // defaults zetten. TODO Eventueel uit query parameters?
{
var res_ruimte_key = getQParam("res_ruimte_key", -1);
var res_van = getQParamDate("res_van", null);
var restype = getQParam("restype", "R"); // Default gaan we een ruimte reserveren
var rrr = { rsv_ruimte_key : -1,
reservering_key : -1
@@ -52,16 +54,18 @@ if (rsv_ruimte_key==-1) // defaults zetten. TODO Eventueel uit query parameters?
else // Bestaande reservering
{
// Zoek zo snel mogelijk info van res_rsv_ruimte op
sql = "select res_reservering_key, alg_ruimte_key "
sql = "select res_reservering_key, alg_ruimte_key, res_rsv_ruimte_volgnr "
+ " from res_rsv_ruimte"
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key
oRs = Oracle.Execute(sql);
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
reservering_key : oRs("res_reservering_key").value
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
reservering_key : oRs("res_reservering_key").value,
rsv_ruimte_volgnr: oRs("res_rsv_ruimte_volgnr").value
};
restype = oRs("alg_ruimte_key").Value?"CV":"R";
oRs.Close()
FCLTHeader.Title(lcl_reservation);
}
%>
@@ -72,6 +76,13 @@ else // Bestaande reservering
</head>
<script>
var rsv_ruimte_key=<%=rsv_ruimte_key%>; // kan na wisselen deelres veranderen
$(document).ready(function () {
<% if (rsv_ruimte_key>0) { %>
FcltMgr.setTitle("<%=lcl_reservation + " " + rrr.reservering_key + "/" + rrr.rsv_ruimte_volgnr%>", {hot:false});
<% } else { %>
FcltMgr.setTitle(LCL.res.new_reservation, {hot:true});
<% } %>
});
function refreshall(data)
{
@@ -88,7 +99,7 @@ else // Bestaande reservering
return true;
}
// nieuwe reservering, ga verder in 'verynew' modus
window.location.href = "res_reservering.asp?verynew=1&urole=<%=urole%>&rsv_ruimte_key=" + params.rsv_ruimte_key;
window.location.href = "res_reservering.asp?verynew=1&urole=<%=urole%>&res_deel_key=<%=res_deel_key%>&rsv_ruimte_key=" + params.rsv_ruimte_key;
<% } else { // Bestaande res bewerkt, switch naar show-mode
// Complete refresh: allerlei dirty<-->clean toggles mogelijk
%>
@@ -153,15 +164,6 @@ else // Bestaande reservering
<div id="edit">
<%
add_str ='';
menuArray = new Array();
menuArray[0] = lcl_res_entire;
menuArray[1] = lcl_res_respart;
menuArray[2] = lcl_noti_res_email;
onClickArray = new Array();
onClickArray[0] = 'DoPrint(0)';
onClickArray[1] = 'DoPrint(1)';
onClickArray[2] = 'DoPrint(2)';
// TODOTODO: deelreserveringnummertjes vergader en roomservice samennemen
@@ -236,7 +238,6 @@ else
var optclass="";
if (oRs("res_rsv_ruimte_dirtlevel") & res.dirtlevel.ruimte.notavailable)
{
// TODO: warning dirtlevel leidt tot class 'warning'
tekst = lcl_res_BAD_reservation_pre + tekst + lcl_res_BAD_reservation_post;
optclass = "class='fatal'";
@@ -245,7 +246,7 @@ else
volgnrTxt = oRs("res_rsv_ruimte_volgnr").value + ".&nbsp;" ;
// TODO: Hoe hier net als vroeger omgaan met 'deleted' en 'serie' en 'reminder' etc.
// TODO: Hoe hier net als vroeger omgaan met 'deleted' en 'serie' etc.
if (oRs("res_rsv_ruimte_verwijder").value == null || oRs("res_rsv_ruimte_key").value == rsv_ruimte_key) {
if (rsv_ruimte_key==rKey)
{
@@ -275,27 +276,32 @@ else
<%
var buttons = [ ];
buttons.push( {title: "TODO: Meerdere", icon: "multi.png", action:"res_multi()"});
if (rsv_ruimte_key>0)
buttons.push( {title: lcl_res_add_deelres, action:"makeMulti()" } );
buttons.push( {title: lcl_res_add_deelres, icon: "../Pictures/doc_convert.png", action:"makeMulti()" } );
if (multiDeel)
{
// PF: ik neig toch deze bij de lcl_submit in de onderliggende frames toe te voegen.
// DAAR sla je op en besef je dat je het ook voor de volgenden wilt doen!
// De beslissing Hier dit opslaan en Bovenin voor alles opslaan is niet vriendelijk
// 18-6-2009 23:29:17. Hier moet die dan weg.
buttons.push({ title: lcl_res_multiple_save, action: "MultiSave()" });
buttons.push({ title: lcl_res_multiple_save, icon: "../Pictures/doc_page.png", action: "MultiSave()" });
}
if (rsv_ruimte_key>0)
{ // PF: twijfel nog over deze
buttons.push({ title: lcl_res_del_deelres, action: "alert('Dialoog om meerdere deelreserveringen te verwijderen')" });
buttons.push({ title: lcl_res_del_deelres, icon: "delete.png", action: "alert('Dialoog om meerdere deelreserveringen te verwijderen')" });
}
CreateButtons(buttons);
//======================================
if (rsv_ruimte_key == -1)
var page="res_edit_rsv_ruimte.asp";
{
var page="res_edit_rsv_ruimte.asp?res_ruimte_key="+res_ruimte_key;
if (res_van)
page += "&res_van=" + res_van.getTime();
}
else
var page="res_show_rsv_ruimte.asp";
page += "?urole="+urole+"&rsv_ruimte_key="+rsv_ruimte_key+"&restype="+restype;
var page="res_show_rsv_ruimte.asp?rsv_ruimte_key="+rsv_ruimte_key;
page += "&urole="+urole+"&restype="+restype;
IFRAMER("roomFrame", page, { title: null,
initHeight: "400px",
FcltClose: "roomClose" });
@@ -304,10 +310,10 @@ IFRAMER("roomFrame", page, { title: null,
if (rsv_ruimte_key > 0)
{
if (verynew && restype=="CV")
var page="res_edit_objcat.asp";
var page="res_edit_objcat.asp?res_deel_key="+res_deel_key;
else
var page="res_show_objcat.asp";
page += "?urole="+urole+"&rsv_ruimte_key="+rsv_ruimte_key;
var page="res_show_objcat.asp?x=1";
page += "&urole="+urole+"&rsv_ruimte_key="+rsv_ruimte_key;
// TODO $("#objcatFrame")[0] --> FcltMgr.startEdit(window);
IFRAMER("objcatFrame", page, { title: lcl_res_frame_voorziening, refreshOnClose: true });

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 2 $
$Modtime: 1-11-09 18:31 $
$Revision: 3 $
$Modtime: 2-11-09 20:25 $
File: res_search.asp
Status: 80%
@@ -62,29 +62,29 @@ else
var date_from = (datefrom == ""? today : new Date(parseInt(datefrom, 10)));
var date_to = (dateto == ""? nextday : new Date(parseInt(dateto, 10)));
var prs_key = parseInt(getQParam("prs_key", -1), 10); // Requestor_key
var host_key = parseInt(getQParam("host_key", -1), 10); // Host_key
var dep_key = parseInt(getQParam("dep_key", -1), 10);
var prs_key = getQParamInt("prs_key", -1); // Requestor_key
var host_key = getQParamInt("host_key", -1); // Host_key
var dep_key = getQParamInt("dep_key", -1);
var kp = getQParam("kp", "");
var loc_key = parseInt(getQParam("locatie_key", -1), 10); // locatie
var bld_key = parseInt(getQParam("gebouw_key", -1), 10); // gebouw
var floor_key = parseInt(getQParam("verdieping_key", -1), 10); // verdieping
var room_key = parseInt(getQParam("ruimte_key", -1), 10); // ruimte
var loc_key = getQParamInt("locatie_key", -1); // locatie
var bld_key = getQParamInt("gebouw_key", -1); // gebouw
var floor_key = getQParamInt("verdieping_key", -1); // verdieping
var room_key = getQParamInt("ruimte_key", -1); // ruimte
var roomcat = (getQParam("roomcat", 1) == 1); // Standaard aangevinkt
var objcat = (getQParam("objcat", 1) == 1); // Standaard aangevinkt
var artcat = (getQParam("artcat", 1) == 1); // Standaard aangevinkt
var act = parseInt(getQParam("act_key", -1), 10); // Activiteit
var sortout = parseInt(getQParam("sortout", 1), 10); // Sortering, standaard 1
var group = parseInt(getQParam("groupby", -1), 10); // Groepering, standaard -1 (backo), 4 (maninfo)
var act = getQParamInt("act_key", -1); // Activiteit
var sortout = getQParamInt("sortout", 1); // Sortering, standaard 1
var group = getQParamInt("groupby", -1); // Groepering, standaard -1 (backo), 4 (maninfo)
var room_key_str = getQMultiParam("roomcatmulti", "-1"); // Ruimte soort catalogus
var obj_key_str = getQMultiParam("objcatmulti", "-1"); // Voorzieningen catalogus
var art_key_str = getQMultiParam("artcatmulti", "-1"); // Verbruiksartikelen catalogus
var article_str = getQMultiParam("art", "-1"); // Verbruiksartikelen
var artgroup = getQParam("artgroup", "-1"); // Artikelgroep
var sortout = parseInt(getQParam("sortout", -1), 10); // Sortering
var group = parseInt(getQParam("groupby", null), 10); // Groepering
var resstatus = parseInt(getQParam("resstatus", -1), 10); // fo_status
var sortout = getQParamInt("sortout", -1); // Sortering
var group = getQParamInt("groupby", -1); // Groepering
var resstatus = getQParamInt("resstatus", -1); // fo_status
var res_actual = getQParam("res_actual", 1) == 1; // Standaard aangevinkt indien niet meegegeven
var res_deleted = getQParam("res_deleted", 0) == 1; // Standaard niet aangevinkt indien niet meegegeven
@@ -147,8 +147,8 @@ var authparams = user.checkAutorisation(autfunction);
{
__mode = mode;
document.u2.action= {0:"res_search_list.asp?urole=<%=urole%>",
1:"res_table.asp?urole=<%=urole%>&width_px=" + $(window).width(),
2:"res_plan_obj.asp?urole=<%=urole%>&width_px=" + $(window).width()}[mode]
1:"res_search_plan_room.asp?urole=<%=urole%>&width_px=" + $(window).width(),
2:"res_search_plan_obj.asp?urole=<%=urole%>&width_px=" + $(window).width()}[mode]
<% if (!frontend)
{ %>
@@ -306,7 +306,7 @@ var authparams = user.checkAutorisation(autfunction);
}
FCLTselector("groupby",
sql,
{ initKey: group? group : initGroup,
{ initKey: group>0? group : initGroup,
label: lcl_res_group
}); %>
</tr>

View File

@@ -1,10 +1,15 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 2 $
$Modtime: 1-11-09 19:39 $
$Revision: 3 $
$Modtime: 3-11-09 17:00 $
Status: 20%
File: res_search_plan_room.asp
Status: 75%
Remark: Toon ruimte planbord
Parameters:
Context: vanuit res_search.asp
*/ %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/funcodes.inc"-->
@@ -12,12 +17,11 @@
<!--#include file="../Shared/date_sql.inc"-->
<!--#include file="../shared/datetime.inc"-->
<!--#include file="../shared/iface.inc"-->
<!-- #include file="room_schedule.inc" -->
<!-- #include file="obj_schedule.inc" -->
<!-- #include file="res_plan_room.inc" -->
<!-- #include file="res.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js : ["jquery-ui.js"]});
js : ["jquery-ui.js"]}); // Voor slepen
var l_exel = parseInt(Request.QueryString("exel"));
@@ -62,7 +66,6 @@ var authparams = user.checkAutorisation(autfunction);
var readwrite = 0;
if( func_enabled[ "WEB_RESFOF"] || func_enabled[ "WEB_RESFO2"] || (func_enabled[ "WEB_RESUSE"] && frontend)) {
//
// Determine if user has write authorization for ALG and PRS level...
// JGL:-->Wordt dit niet ook al gedaan door de include van autlevel.inc??
@@ -83,11 +86,9 @@ if( func_enabled[ "WEB_RESFOF"] || func_enabled[ "WEB_RESFO2"] || (func_enabled[
} else {
readwrite = 2;
}
}
__Log('readwrite : '+readwrite);
if (readwrite > 0) { // we need read authorization at least...
var showall = getQParam("showall", "0")=="1";
@@ -108,10 +109,10 @@ var nr_days = 1+(date_to.midnight() - date_from.midnight())/24/60/60/1000;
var nr_hours = nr_days*(res_t2-res_t1);
var targethour_px = (width_px-250)/nr_hours;
var hour_px = 48;
//if (targethour_px < 48) hour_px = 24;
//if (targethour_px < 24) hour_px = 16;
//if (targethour_px < 16) hour_px = 8;
//if (targethour_px < 8) hour_px = 4;
if (targethour_px < 48) hour_px = 24;
if (targethour_px < 24) hour_px = 16;
if (targethour_px < 16) hour_px = 8;
if (targethour_px < 8) hour_px = 4;
if ( l_exel == 1) {
Response.ContentType = "application/vnd.ms-excel";
@@ -165,7 +166,7 @@ if (l_print_table == 1 || l_exel == 1) {
parseInt(elm.css('borderLeftWidth')))/<%=hour_px%>;
var duur = (elm.width()-1)/<%=hour_px%>;
start += <%=res_t1%>;
$.post("res_update.asp",
$.post("res_update_room.asp",
{ rsv_ruimte_key: elm[0].rsv_key,
rsv_van: start,
rsv_tot: (start+duur)
@@ -183,7 +184,7 @@ if (l_print_table == 1 || l_exel == 1) {
//this.parentElement.parentElement.style.height = 48;
});
FcltMgr.setHeaderExtraTitle($("#palette").html());
//FcltMgr.setHeaderExtraTitle($("#palette").html());
});
function res_print()
{
@@ -222,7 +223,7 @@ IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
<div id="list">
<%
}
CreateRoomScheduleMulti({id:"tab_room_sched",
make_plan_room({id:"tab_room_sched",
res_van: date_from,
res_tot:date_to,
readwrite:readwrite,
@@ -230,10 +231,7 @@ IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
res_ruimte_key: res_ruimte_key, vis: vis, autfunction:autfunction,
showall: showall, host: host,
hour_px: hour_px });
} else { %>
<body>
<p><%=lcl_no_auth%></p>
<% } %>
%>
</div>
</body>
</html>

View File

@@ -11,18 +11,17 @@
Context: Met knop uit res_edit_rsv_ruimte.asp
Note:
*/ %>
<% Response.Expires = -1; %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../res/res.inc"-->
<!--#include file="../Shared/escape.inc"-->
<!--#include file="../Shared/date_sql.inc" -->
<!-- #include file="room_schedule.inc" -->
<!--#include file="../Shared/datetime.inc" -->
<!-- #include file="res_plan_room.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js: ["FcltMgr.js"]})
FCLTHeader.Requires({plugins: ["jQuery"]})
// Required parameters
var urole = getQParam("urole");
@@ -34,24 +33,37 @@ var res_ruimte_key = getQParamInt("res_ruimte_key", -1); // Filter default verga
var date_from = getQParamDate("date_from");
//var restype = getQParam("restype", "R");
ruimtecat = getQParam("s_ruimtecat", -1);
opstel = getQParam("opstel", -1);
vis = getQParam("vis", null);
var ruimtecat = getQParam("s_ruimtecat", -1);
var opstel = getQParam("opstel", -1);
var vis = getQParam("vis", null);
var ora_date1 = date_from.toSQL(true);
var ora_date2 = date_from.endToSQL(true);
var autfunction = urole=="fe"?"WEB_RESUSE":"WEB_RESFOF";
hour_px=48; // TODO altijd vast?, toch maar <20><>n dag?
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<style>
table.planbord div.sizer { width:<%=hour_px*(res_t2-res_t1)-1%>px;};
</style>
</head>
<body>
<%
CreateRoomScheduleMulti({id:"tab_room_sched", date1: date_from,date2:date_from,readwrite:3 /*TODO*/,
loc:locatie_key, bld:-1, opstel:opstel, ruimtecat:ruimtecat,
res_ruimte_key: res_ruimte_key, vis: vis, activiteit_key: activiteit_key,
showall: true, autfunction:autfunction});
make_plan_room({id:"tab_room_sched",
res_van: date_from,
res_tot:date_from,
readwrite:3 /*TODO*/,
loc:locatie_key, bld:-1,
opstel:opstel,
ruimtecat:ruimtecat,
res_ruimte_key: res_ruimte_key,
rsv_ruimte_key: rsv_ruimte_key,
vis: vis,
activiteit_key: activiteit_key,
showall: true,
autfunction:autfunction,
hour_px: hour_px });
%>
</body>
</html>

View File

@@ -1,7 +1,7 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 29-09-09 0:10 $
$Revision: 2 $
$Modtime: 2-11-09 13:03 $
File: res_show_objcat.asp (oude rsv_voorziening_view.inc)
Status: 90%
@@ -19,13 +19,13 @@
*/
%>
<% Response.Expires = -1;%>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/iface.inc"-->
<!--#include file="../Shared/resultset_table_v2.inc" -->
<!--#include file="./res.inc"-->
<%
FCLTHeader.Requires({js: ["FCLTMgr.js"]});
FCLTHeader.Requires({js: []});
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key");
var resdeleted = getQParam("showdelete", false);
@@ -79,11 +79,20 @@ if ( rsv_ruimte_key > 0 ) {
return "<span class='outofbounds'>" + toTimeString(new Date(oRs("res_rsv_artikel_levering").value)) + "</span>";
}
function fnRowClass(oRs)
{
if (oRs("res_rsv_deel_dirtlevel").Value & (res.dirtlevel.deel.notavailable | res.dirtlevel.deel.notallowed))
return "res_fatal";
else
return "xx";
}
var sql = "SELECT id.ins_deel_omschrijving"
+ ", rd.res_rsv_deel_key"
+ ", rd.res_rsv_deel_aantal"
+ ", rd.res_rsv_deel_van"
+ ", rd.res_rsv_deel_tot"
+ ", rd.res_rsv_deel_dirtlevel"
+ ", rd.res_rsv_deel_verwijder ddVerwijder,"
+ " CASE "
+ " WHEN (rd.res_rsv_deel_van BETWEEN res_rsv_ruimte_van "
@@ -115,6 +124,7 @@ if ( rsv_ruimte_key > 0 ) {
keyColumn: "res_rsv_deel_key",
ID: "resvtable"+(embedded?"tiny":""),
noPrint:true,
rowClass: fnRowClass,
summaryShow: function () {},
emptySetString : lcl_no_objects,
title: lcl_res_frame_voorziening,

View File

@@ -11,27 +11,20 @@
Note:
*/
%>
<% Response.Expires = -1; %>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../res/res.inc"-->
<!-- #include file="res_flexkenmerk.inc" -->
<!--#include file="../Shared/escape.inc"-->
<!--#include file="../Shared/loader.inc"-->
<!--#include file="../Shared/CommonDialogs.inc"-->
<!--#include file="../Shared/iface.inc"-->
<!--#include file="../Shared/my_place.inc" -->
<!--#include file="../Shared/datetime.inc"-->
<!--#include file="../Shared/calendar.inc"-->
<!--#include file="../Shared/date_sql.inc"-->
<!--#include file="../Shared/selector.inc"-->
<!--#include file="../Shared/plaatsselector.inc"-->
<!--#include file="../Shared/persoonselector.inc" -->
<!--#include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
FCLTHeader.Requires({plugins: ["jQuery", "datepicker"],
js: ["expand_frame.js", "date.js"]})
FCLTHeader.Requires({plugins: ["jQuery"]})
%>
<html>
@@ -40,35 +33,15 @@
<%
// Required parameters
var urole = getQParam("urole");
var rsv_ruimte_key = getQParam("rsv_ruimte_key",-1);
var embedded = getQParam("embedded","0")=="1";
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
// Optional parameters
if (rsv_ruimte_key==-1)
var restype = getQParam("restype", "R");
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
user.auth_required_or_abort(this_res.canReadAny);
var autfunction = {fo: "WEB_RESFOF", bo: "WEB_RESBOF", fe: "WEB_RESUSE"}[urole];
var fronto = urole=="fo"; // DEPRECATED
var backo = urole=="bo";
var rbu = Request.QueryString("rbu").Count>0;
var reado = Request.QueryString("reado").Count>0;
var statusinfo = Request.QueryString("statusinfo").Count>0;
var reminder = Request.QueryString("reminder").Count>0;
var kostenplaats_key = Request.QueryString("account").Count>0;
var bezoeker = "";
var searchstring = "";
gast_login_key = -1; // Heeft iets met PACTA te maken?
var portal_alg_ruimte_key = -1;
if (statusinfo) reado = true;
if (Request.QueryString("next_rsv_ruimte_key").Count > 0)
rsv_ruimte_key = parseInt( Request.QueryString("next_rsv_ruimte_key"), 10 );
// TODO: Dit waren globals. Wat nu?
serie=false; // TODO: Hoe te doen?
var reado_reservering=false;
var portal_alg_ruimte_key = -1;
// end TODO
// rrr is een belangrijke globale: hij bevat 'allerlei' info uit het res_rsv_ruimte record
// en eventueel wat daar 1-op-1 uit afgeleid kan worden
@@ -97,6 +70,7 @@ var portal_alg_ruimte_key = -1;
+ " rr.RES_RESERVERING_USER_KEY,"
+ " rrr.RES_RSV_RUIMTE_CONTACT_KEY,"
+ " rrr.RES_RSV_RUIMTE_HOST_KEY,"
+ prs_pers_string + " res_user_naam,"
+ " rrr.RES_RSV_RUIMTE_OMSCHRIJVING,"
+ " rrr.RES_RSV_RUIMTE_ORDERNR,"
+ " rrr.res_status_fo_key,"
@@ -110,9 +84,11 @@ var portal_alg_ruimte_key = -1;
+ " from res_rsv_ruimte rrr, "
+ " res_activiteit ra, "
+ " res_reservering rr,"
+ " PRS_KOSTENPLAATS kp"
+ " PRS_KOSTENPLAATS kp,"
+ " prs_perslid p"
+ " where res_rsv_ruimte_key = " + rsv_ruimte_key
+ " and rrr.res_reservering_key = rr.res_reservering_key"
+ " AND p.prs_perslid_key = rr.RES_RESERVERING_USER_KEY"
+ " and rrr.res_activiteit_key = ra.res_activiteit_key"
+ " AND rrr.PRS_KOSTENPLAATS_KEY = kp.PRS_KOSTENPLAATS_KEY(+)";
@@ -121,9 +97,9 @@ var portal_alg_ruimte_key = -1;
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
reservering_key : oRs("res_reservering_key").value,
rsv_ruimte_verwijder: oRs("res_rsv_ruimte_verwijder").value,
verwijder_user: oRs("verwijder_user").value,
verwijder_user : oRs("verwijder_user").value,
status_fo_key : oRs("res_status_fo_key").value,
status_bo_key : oRs("res_status_bo_key").value||2, // default 2, ingevoerd
status_bo_key : oRs("res_status_bo_key").value, // default 2, ingevoerd. TODO: bij CV is deze NULL
activiteit_key : oRs("res_activiteit_key").value,
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value),
rsv_ruimte_tot : new Date(oRs("res_rsv_ruimte_tot").value),
@@ -138,13 +114,15 @@ var portal_alg_ruimte_key = -1;
// TODO: variabele namen volgens conventie
contact_key : oRs("RES_RSV_RUIMTE_CONTACT_KEY").Value,
host_key : oRs("RES_RSV_RUIMTE_HOST_KEY").Value,
resusertxt : oRs("RES_USER_NAAM").Value,
// TODO en defaults maken
rsv_ruimte_opmerking : oRs("RES_RSV_RUIMTE_OPMERKING").Value,
res_user_key : oRs("RES_RESERVERING_USER_KEY").Value,
descript : oRs("RES_RSV_RUIMTE_OMSCHRIJVING").Value,
res_ordernr : oRs("RES_RSV_RUIMTE_ORDERNR").Value,
kosten_klant : oRs("RES_RSV_RUIMTE_KOSTEN_KLANT").Value == 1,
kostenplaats_key : oRs("PRS_KOSTENPLAATS_KEY").Value
kostenplaats_key : oRs("PRS_KOSTENPLAATS_KEY").Value,
resnrtxt : String(oRs("res_reservering_key").value) + "/"+ oRs("res_rsv_ruimte_volgnr").value
}
// Afgeleide informatie
@@ -155,8 +133,6 @@ var portal_alg_ruimte_key = -1;
case 1: restype = "CV"
}
resdeleted = (rrr.rsv_ruimte_verwijder != null);
if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
{
@@ -173,64 +149,18 @@ if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
rrr.alg_locatie_key = oRs("alg_locatie_key").value;
oRs.close();
var dVan = rrr.rsv_ruimte_van;
var dTot = rrr.rsv_ruimte_tot;
res_date = dVan.getDate();
res_month = dVan.getMonth()+1;
res_year = dVan.getFullYear();
res_hour1 = dVan.getHours();
res_min1 = dVan.getMinutes();
res_hour2 = dTot.getHours();
res_min2 = dTot.getMinutes();
if (rrr.rsv_ruimte_verwijder != null) {
reado_rsv_ruimte = reado_reservering = true;
}
pastt0 = (rrr.res_ruimte_van <= res.tNow());
pasttexpire = (rrr.res_ruimte_van <= res.tExpire()); // FE: reservation is readonly
pasttcancel = (rrr.res_ruimte_van <= res.tCancel()); // FE: no longer show button 'Cancel/Delete'
pasttconfirm = (rrr.res_ruimte_van <= res.tConfirm()); // FE: show button 'Make final'
// Could we have entered this reservation ourselves?
if (!reado_rsv_ruimte)
{
sql = "SELECT r.res_ruimte_key"
+ " FROM res_v_res_ruimte_gegevens r "
+ " WHERE r.res_discipline_key IN ("
+ " SELECT ins_discipline_key"
+ " FROM fac_v_webgebruiker g, fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND g.prs_perslid_key = " + user_key
+ " AND g.fac_gebruiker_prs_level_write <9"
+ " AND g.fac_gebruiker_alg_level_write <9"
+ " AND f.fac_functie_code = '" + autfunction + "')"
+ " AND res_ruimte_key = " + rsv_ruimte_key ;
oRs = Oracle.Execute( sql);
if (oRs.eof)
{
reado_rsv_ruimte = true;
readoReason = lcl_res_notroom
}
oRs.Close();
}
if (res_fe_edit_option_only==1 // Setting: Alleen opties mogen bewerkt
&&!reado_rsv_ruimte && !fronto && !backo && rrr.status_fo_key!=1)
{
reado_rsv_ruimte = true;
if ( fronto ) {
readoReason = lcl_res_fe_edit_option_only;
} else {
readoReason = lcl_res_fo_edit_option_only;
}
}
} else { // CV
// Voor CV geldt de rsv_ruimte bo-status niet en nemen we de max van de onderdelen
rrr.status_bo_key = 2; // ingevoerd? TODO: was max_bo_key; // Voor CV geldt de rsv_ruimte bo-status niet
if (this_res.max_bo)
rrr.status_bo_key = this_res.max_bo;
else
rrr.status_bo_key = -1; // Geen enkele catering/voorziening over of nog geen enkele aangemaakt
sql = "SELECT rg.alg_ruimte_aanduiding,"
+ " rg.alg_locatie_key,"
@@ -238,7 +168,7 @@ if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
+ " rg.alg_verdieping_key,"
+ " rg.alg_ruimte_key"
+ " FROM alg_v_ruimte_gegevens rg"
+ " WHERE rg.alg_ruimte_key = " + rrr.alg_ruimte_key
+ " WHERE rg.alg_ruimte_key = " + rrr.alg_ruimte_key
oRs = Oracle.Execute(sql);
@@ -248,34 +178,8 @@ if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
rrr.alg_ruimte_key = oRs("alg_ruimte_key").Value;
}
// Kijk of FE een vervanger is
sql_collegas = "SELECT prs_perslid_key"
+ " FROM prs_collega"
+ " WHERE prs_perslid_key_alt = " + user_key;
oRs2 = Oracle.Execute(sql_collegas);
userIsCollega = false;
while (!oRs2.eof) {
if (oRs2(0).value == rrr.res_user_key)
userIsCollega = true;
oRs2.moveNext();
}
oRs2.close();
// Not added by Front End user-->Reado
if (urole=='fe' && rrr.res_user_key != user_key && !userIsCollega)
{
reado_reservering = true;
readoReason = lcl_res_notself
}
}
if (urole=="fo")
var autfunction = "WEB_RESFOF";
else if (urole=="bo")
var autfunction = "WEB_RESBOF";
else // fe
var autfunction = "WEB_RESUSE";
var authparams = user.checkAutorisation(autfunction);
%>
@@ -288,12 +192,19 @@ else // fe
function res_change()
{
if (FcltMgr.startEdit(window))
window.location.href = "res_edit_rsv_ruimte.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>&embedded=1"
window.location.href = "res_edit_rsv_ruimte.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>"
}
function res_delete()
{
if (confirm("<%=lcl_res_del_txt_current%>"))
$.post("res_delete.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>", {}, FcltCallback, "json");
}
function res_print()
{
window.open('../res/res_xml.asp?res_key=<%=rrr.reservering_key%>&print_rsv_ruimte_key=<%=rsv_ruimte_key%>').focus();
//window.print(); //TODO
}
function res_mail()
{
@@ -305,8 +216,8 @@ else // fe
oRs = Oracle.Execute( sql);
defemail_key = oRs("res_rsv_ruimte_contact_key").value;
%>
var subject = "&subject=" + escape("<%=lcl_reservation + ' ' + rrr.reservering_key%>");
var url="../shared/queuemail.asp?pcode=RESMAI&defemail_key=<%=defemail_key%>&key=<%=rrr.reservering_key%>" + escape(subject);
var subject = "<%=lcl_reservation + ' ' + rrr.reservering_key%>";
var url="../shared/queuemail.asp?pcode=RESMAI&defemail_key=<%=defemail_key%>&key=<%=rrr.reservering_key%>&subject=" + escape(subject);
FcltMgr.openModalDetail(url, subject);
}
@@ -314,85 +225,32 @@ else // fe
</head>
<body id="showbody" onLoad="processLoadSequence();">
<body id="showbody">
<%
// TODO: juiste condities toevoegen,
var buttons = [ {title: lcl_change, icon: "wijzigen.png", action:"res_change()", id:"bchange_res_rsv_ruimte" }
];
buttons.push({ icon: "print.png", title: lcl_print, action: 'res_print()' });
buttons.push({ icon: "email.png", title: lcl_noti_res_email, action: 'res_mail()' });
var buttons = [];
if (rrr.rsv_ruimte_verwijder==null) // Daar mag je niets mee
{
if (this_res.canChange)
buttons.push( {title: lcl_change, icon: "wijzigen.png", action:"res_change()"});
if (this_res.canDelete)
buttons.push( {title: lcl_delete, icon: "delete.png", action:"res_delete()"});
buttons.push({ icon: "print.png", title: lcl_print, action: 'res_print()' });
buttons.push({ icon: "email.png", title: lcl_noti_res_email, action: 'res_mail()' });
}
//if (rsv_ruimte_key>0)
// buttons.push({title: lcl_delete, action:"alert('Deze deelreservering verwijderen')" });
IFRAMER_HEADER(lcl_res_frame_algemeen, buttons);
%><div id="show"><%
if (rrr.rsv_ruimte_dirtlevel & res.dirtlevel.ruimte.notavailable)
{
%><div class="fatal">TODO_lcl_Pas op: de ruimte is niet beschikbaar. Kies een andere zaal!</div><%
%><div class="fatal"><%=lcl_res_dirtyroom%></div><%
}
var reado_reservering = false;
var partres_reado = false;
if (authparams.PRSwritelevel==9 || authparams.ALGwritelevel==9|| reado) { // Very limited frontend user
reado_reservering = true ;
}
__Log('reado_reservering = ' + reado_reservering);
var readoReason = "" // No need to explain this yet to enduser
var reado_rsv_ruimte = false; // || statusinfo; Wordt later meegenomen via reado_reservering
%>
<script type="text/javascript">
function res_edit_deelLoaded()
{
<%if (urole=="fe") { // frontend %>
var frm = window.document.all.item("u2");
if (frm.ordernr) {
<% if (show_ordernr==2) { %>
frm.ordernr.disabled = true;
frm.ordernr.className='disabled';
<% } %>
}
<%} else {%>
var frm = window.document.all.item("u2");
prop = window.document.all.item("costclient");
if (prop) {
if (prop.checked){
<% if (show_ordernr==2) { %>
frm.ordernr.disabled = true;
frm.ordernr.className='disabled';
<% } %>
}
else {
<% if (show_ordernr==1) { %>
frm.ordernr.disabled = true;
frm.ordernr.className='disabled';
<% } %>
}
}
<%} %>
// === Oude reserv_Loaded() ===
}
appendLoadSequence(res_edit_deelLoaded);
</script>
<!-- Form -->
<form name="u2" action="res_edit_rsv_ruimte.asp?submit=1&urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>" method="post">
<form name="u2">
<%
// ==========
// ========== Next follows information for the room to make a reservation for
// ==========
%>
<script type="text/javascript">
sel_room = {RoomConfigs: []}; // Hierin houden we clientside informatie over onze gekozen ruimte bij
</script>
<%
reado_rsv_ruimte = true;
if (fronto) rrr.status_fo_key = res_default_fo_status_key;
{ // restype = "CV"
@@ -404,13 +262,15 @@ appendLoadSequence(res_edit_deelLoaded);
dVan = rrr.rsv_ruimte_van;
dTot = rrr.rsv_ruimte_tot;
partres_reado = true;
} // restype = "CV"
%>
<script type="text/javascript">
// TODO: Moet het volgende ook weer werken en in het bijzonder ook voor CV?
<% pasttconfirm=false; // dan maar even %>
// When front end user presses 'Confirm' button
function ConfirmRes(fronto)
{
@@ -425,199 +285,87 @@ function ConfirmRes(fronto)
return;
/// SetFOStatus(2); // Definitief, beetje overbodig PF: zeker in showvariant
// TODO: Via ajax?
document.all.hidFrame.src = "../res/confirm.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>"
<% } %>
}
function obsolete_SetFOStatus(newStat)
{
for (i=0; i< document.u2.status_fo.options.length; i++)
{
if (document.u2.status_fo.options[i].value==newStat)
document.u2.status_fo.selectedIndex = i;
}
document.u2.ostatus_fo.value = newStat;
}
// Room choice has changed
// Show different little schedule and update room description/picture
/* params
res_ruimte_key: res_ruimte_key
res_ruimte_oms: ruimte omschrijving
def_conf: default configuratie key
unchange_minmax ??
*/
<% if (restype == "R") { %>
// Process de data die van de Ajax terugkomt.
function process_res_ruimte_info(data)
{
sel_room.RoomConfigs = data.RoomConfigs;
sel_room.res_ruimte_key = data.res_ruimte_key;
sel_room.aantalreq = data.aantalreq;
sel_room.kosten = data.kosten;
sel_room.kpnverplicht = data.kpnverplicht;
sel_room.starttime_room = data.begintijd;
sel_room.endtime_room = data.endtijd;
for( i=0; i<sel_room.RoomConfigs.length; i++ )
{
if (sel_room.RoomConfigs[i].ruimte_opstel_key == <%=rrr.ruimte_opstel_key%>)
$("#ruimte_opstel").val(sel_room.RoomConfigs[i].opstelling_omschrijving + " (" + sel_room.RoomConfigs[i].bezoekers + " pers)");
}
$("#sel_room").val(data.ruimte_nr);
};
<% } %>
// PAS OP: ook aangeroepen bij sluiten van planbord popup!
function SelRoomChanged(params)
{
if (params.res_ruimte_key)
{
sel_room.res_ruimte_key = params.res_ruimte_key;
$.getJSON("get_res_info_ajax.asp?req_info=res_ruimte&res_ruimte_key=" + sel_room.res_ruimte_key,process_res_ruimte_info);
$("#res_ruimte_key").val(sel_room.res_ruimte_key);
}
if (window.parent.RoomPhotoFrame)
window.parent.RoomPhotoFrame.navigate("../res/photo.asp?room=" +
sel_room.res_ruimte_key);
}
</script>
<!-- Form fields -->
<%
// PF: dit blok includen omdat deze voor zowel SHOW als EDIT identiek zijn?
BLOCK_START("resInfo", lcl_res_admingegevens);
var resnrtxt = lcl_new;
var resusertxt = user.naam();
if (rrr.reservering_key>0)
{
resnrtxt = String(rrr.reservering_key) + "/"+ rrr.rsv_ruimte_volgnr;
sql = "select prs_perslid_naam_full"
+ " from prs_v_perslid_fullnames_all WHERE prs_perslid_key = " + rrr.res_user_key;
// PF: TODO dit blok includen omdat deze voor zowel SHOW als EDIT identiek zijn?
BLOCK_START("resInfo", lcl_reservation + " " + rrr.resnrtxt);
if (this_res.readoReason) {
%><tr><td colspan="2"><%=this_res.readoReason%></td></tr><%
}
if (rrr.rsv_ruimte_verwijder!=null) {
ROFIELDTR("fld", lcl_deleted, toDateString(rrr.rsv_ruimte_verwijder, true) + " ("+rrr.verwijder_user+")")
}
sql = "SELECT res_status_bo_omschrijving"
+ " FROM res_status_bo WHERE res_status_bo_key = " + rrr.status_bo_key;
oRs = Oracle.Execute(sql)
resusertxt = oRs("prs_perslid_naam_full");
}
if (!oRs.eof) {
ROFIELDTR("fldresstatus", lcl_status_BO, oRs("res_status_bo_omschrijving").value,
{ infoPointer: { Url: "appl/shared/status_info.asp?rsv_ruimte_key="+rsv_ruimte_key,
Title: lcl_status_details + "&nbsp;" + rsv_ruimte_key
}
});
}
ROFIELDTR("fldresnum", lcl_reservation, resnrtxt);
%>
<tr><td class="label"><label><%=lcl_status_BO %>:</label></td>
<%
sql = "select RES_STATUS_BO_OMSCHRIJVING"
+ " from res_status_bo WHERE res_status_bo_key = " + rrr.status_bo_key;
oRs = Oracle.Execute(sql)
%>
<td><input class="fldresstatus" type="text" readonly value="<%=oRs("RES_STATUS_BO_OMSCHRIJVING")%>" />
<% InfoPointer("appl/shared/status_info.asp?rsv_ruimte_key="+rsv_ruimte_key, lcl_status_details + "&nbsp;" + rsv_ruimte_key); %>
</td>
</tr>
<tr>
<td class="label"><label><%=lcl_res_inf_inputter%>:</label></td>
<td><input class="fldpers" name="createuser" readonly value="<%=resusertxt%>" /></td>
</tr>
<tr>
<td class="label"><label><%=lcl_res_inf_input_on%>:</label></td>
<td><input class="flddatetime" name="createdate" readonly value="<%=toDateTimeString(rrr.reservering_aanmaak)%>" /></td>
</tr>
<tr>
<td class="label"><label><%=lcl_res_inf_changed_on%>:</label></td>
<td><input class="flddatetime" name="changedate" readonly value="<%=toDateTimeString(rrr.rsv_ruimte_mutatie)%>" /></td>
</tr>
<tr><td colspan="2">
<%=serie?"":reado_rsv_ruimte?readoReason:pastt0?lcl_res_warnlate:pasttexpire&&!backo?lcl_res_warnBO:""%>
</td></tr>
<%
ROFIELDTR("fldpers",lcl_res_inf_inputter, rrr.resusertxt);
ROFIELDTR("flddatetime",lcl_res_inf_input_on, toDateTimeString(rrr.reservering_aanmaak));
ROFIELDTR("flddatetime",lcl_res_inf_changed_on, toDateTimeString(rrr.rsv_ruimte_mutatie));
BLOCK_END();
if (restype == "CV")
{
%>
BLOCK_START("resPlaats" , lcl_res_plaats);
<script type="text/javascript">
var reado_reservering = <%=reado_reservering?1:0%>;
</script>
<tr><td colspan="2">
<%=reado_rsv_ruimte?readoReason:pastt0?lcl_res_warnlate:pasttexpire&&!backo?lcl_res_warnBO:""%>
</td></tr>
<%
}
%>
<% BLOCK_START("resPlaats" , lcl_res_plaats); %>
<% if (rrr.rsv_ruimte_verwijder) { %>
<tr>
<td class="label"><label><%=lcl_deleted%>:</label></td>
<td><%=toDateString(rrr.rsv_ruimte_verwijder, true)%> <label>door</label> <%=rrr.verwijder_user%></td>
</tr>
<% }
ROFIELDTR("fld", lcl_from, toDateTimeString(rrr.rsv_ruimte_van));
ROFIELDTR("fld", lcl_from, toDateTimeString(rrr.rsv_ruimte_van));
var sql = "SELECT a.res_activiteit_omschrijving"
+ " FROM res_activiteit a"
+ " WHERE res_activiteit_key = " + rrr.activiteit_key
oRs = Oracle.Execute(sql);
ROFIELDTR("fld", lcl_activity, oRs("res_activiteit_omschrijving").value);
ROFIELDTR("fld", lcl_activity, oRs("res_activiteit_omschrijving").value);
ROFIELDTR("fld", lcl_to, toDateTimeString(rrr.rsv_ruimte_tot));
ROFIELDTR("fld", lcl_visitors, rrr.rsv_ruimte_bezoekers);
ROFIELDTR("fld", lcl_to, toDateTimeString(rrr.rsv_ruimte_tot));
ROFIELDTR("fld", lcl_visitors, rrr.rsv_ruimte_bezoekers);
if (restype == "R") {
//======= FIELD 'Ruimte' =======
// Vullen client-side sel_room variabele en invullen configurations
// TODO: liever niet doen in readmode, direct inplakken!
%>
<script type="text/javascript">
$(document).ready(function()
{
var JSONdata = '(<%=JSON.stringify(res.res_ruimte_info(rrr.res_ruimte_key)).replace(/\'/g,"\\'")%>)';
process_res_ruimte_info(eval('(' + JSONdata + ')'));
});
</script>
<%
res_ruimte_data = res.res_ruimte_info(rrr.res_ruimte_key);
FCLTplaatsselector(authparams.ALGreadlevel, { locatiekey: rrr.alg_locatie_key,
startlevel: 2,/*locatie*/
eindlevel: 2,/*locatie*/
readonly: true,
no_table: true
FCLTplaatsselector(null, { locatiekey: rrr.alg_locatie_key,
startlevel: 2,/*locatie*/
eindlevel: 2,/*locatie*/
readonly: true,
no_table: true
});
%>
<!-- Ruimte -->
<tr><td class="label"><label for='sel_room'><%=lcl_room%>:</label></td>
<td><input id="sel_room" class="fldresroom" readonly value="<%=lcl_select_fl%>" /></td>
</tr>
%>
<!-- Ruimte -->
<% ROFIELDTR("fldresroom", lcl_room, res_ruimte_data.ruimte_nr)
<!-- Opstelling -->
<%
// @@ TODO: select naar readonly input omzetten
%>
<tr><td class="label"><label for='ruimte_opstel'><%= lcl_config %>:</label></td>
<td><input class="fldopstel" readonly id='ruimte_opstel'>
<% // Will be filled automatically %>
</select>
</td>
</tr>
<% } else { //restype == "CV")
// Opstelling
for( i=0; i<res_ruimte_data.RoomConfigs.length; i++ )
{
if (res_ruimte_data.RoomConfigs[i].ruimte_opstel_key == rrr.ruimte_opstel_key)
ROFIELDTR("fldopstel", lcl_config, res_ruimte_data.RoomConfigs[i].opstelling_omschrijving + " (" + res_ruimte_data.RoomConfigs[i].bezoekers + " pers)");
}
FCLTplaatsselector(authparams.ALGreadlevel, { locatiekey: rrr.alg_locatie_key,
gebouwkey: rrr.alg_gebouw_key,
verdiepingkey: rrr.alg_verdieping_key,
ruimtekey: rrr.alg_ruimte_key,
startlevel: 2,/*locatie*/
eindlevel: 5,/*ruimte*/
readonly: true,
no_table: true
});
} else { //restype == "CV")
FCLTplaatsselector(null, { locatiekey: rrr.alg_locatie_key,
gebouwkey: rrr.alg_gebouw_key,
verdiepingkey: rrr.alg_verdieping_key,
ruimtekey: rrr.alg_ruimte_key,
startlevel: 2,/*locatie*/
eindlevel: 5,/*ruimte*/
readonly: true,
no_table: true
});
}
//======= FIELD 'Status' ======= @@todo kan in 1 keer (of hebben we em al?)
@@ -630,64 +378,36 @@ ROFIELDTR("fld", lcl_visitors, rrr.rsv_ruimte_bezoekers);
if (!oRs.eof) {
fostatomsch = oRs("res_status_fo_omschrijving").value;
}
%>
<tr><td class="label"><label for='status_fo'><%=lcl_status_FO%>:</label></td>
<td><input id="status_fo" class="fldresstatus" readonly value="<%=fostatomsch%>" /></td>
</tr>
<% if (rrr.rsv_ruimte_noshow) { %>
<tr>
<td></td><td class="noshow"><%=lcl_res_no_show%></td>
</tr>
<% }
ROFIELDTR("fldresstatus", lcl_status_FO, fostatomsch);
sql = "SELECT a.bez_afspraak_key"
+ " FROM bez_afspraak a"
+ " WHERE a.res_rsv_ruimte_key = " + rsv_ruimte_key;
oRs = Oracle.Execute(sql);
if (rrr.rsv_ruimte_noshow)
ROFIELDTR("noshow", "", lcl_res_no_show);
if (!oRs.eof) { // needed for reserv_common_js.asp - function CommitAndContinue, variable hasVisitor%>
<input type='hidden' id='afspr_key' name='afspr_key' value='<%=oRs(0).value%>'>
<% } %>
<% // end of </form> fields %>
<iframe src="../Shared/empty.html" frameborder="0" name="hidFrameKenmerk" style="display:none"></iframe>
<iframe src="../Shared/empty.html" name="roomFrame" id="roomFrame" style="display:none"></iframe>
<iframe src="../shared/empty.html" frameborder="0" name="hidFrame" id="hidFrame" style="display:none"></iframe>
<%
BLOCK_END()
BLOCK_START("resFlex", lcl_res_flexblok);
%>
<!-- theText indicates flexkenmerken will follow on the next row -->
<tr id=theText><td colspan="2"></td></tr>
<%
%><tr><td><%
generateFlexKenmerkCode ({
urole: urole,
res_key : rrr.reservering_key,
act_key : rrr.activiteit_key,
rsv_ruimte_key : rrr.rsv_ruimte_key,
reado: true
});
%>
<% BLOCK_END();
});
%></td></tr><%
BLOCK_END();
// ============================================================================================================
BLOCK_START("resUser",lcl_res_info);
%>
<table>
<tr>
<%
//======= FIELD 'Aanvrager/contact' =======
FCLTpersoonselector( "person", "sgPerson", {
label: lcl_name,
perslidKey: rrr.contact_key,
onChange: "changeName", moreinfo: urole!='fe',
autlevel: authparams.PRSwritelevel,
moreinfo: urole!='fe',
readonly: true})
%>
</tr>
@@ -697,7 +417,6 @@ BLOCK_START("resUser",lcl_res_info);
FCLTpersoonselector( "personH", "sgHost", {
label: lcl_host,
perslidKey: rrr.host_key,
autlevel: authparams.PRSwritelevel,
moreinfo: urole!='fe',
readonly: true})
@@ -713,40 +432,19 @@ BLOCK_START("resUser",lcl_res_info);
readonly: true });
%>
</tr>
<% if (show_ordernr!=0) { %>
<tr>
<td class="label"><label><%=lcl_mld_inf_Ordernr%>:</label></td>
<td><input name="ordernr"
id="ordernr"
type="text"
class= "fldordernum"
value="<%=rrr.res_ordernr%>"
readonly>
</td>
</tr>
<% } %>
<tr>
<td class="label"><label><%=lcl_descr%>:</label></td>
<td><input class="fldresdesc" name="descript" readonly
maxlength="60" value="<%=escape2(rrr.descript)%>">
</td>
</tr>
<% if (show_ordernr!=0)
ROFIELDTR("fldordernum", lcl_mld_inf_Ordernr, rrr.res_ordernr);
ROFIELDTR("fldresdesc", lcl_descr, rrr.descript);
%>
<tr>
<td class="label"><label><%=lcl_remark%>:&nbsp;</label></td>
<td colspan=3><textarea class="fldomschr" rows="1" readonly
name="opmerk" style="width:100%"><%=escape2(rrr.rsv_ruimte_opmerking)%></textarea></td>
</tr>
<% //BLOCK_END(); %>
</table>
<%
// if (rrr.rsv_ruimte_dirtlevel>0)
// {
// Response.Write("<br/>Dirtlevel: 0b" + (rrr.rsv_ruimte_dirtlevel).toString(2));
// }
%>
<% BLOCK_END(); %>

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 3-09-09 13:43 $
$Revision: 2 $
$Modtime: 1-11-09 15:00 $
File: shared.inc
Description: Generieke functies die door elke pagina gebruikt worden.
@@ -18,27 +18,27 @@
var user_key=Session("user_key");
if (typeof user_key == "undefined")
{
// TODO: Is dit *de* plek om te proberen de user_key uit een cookie te halen?
// TODO: Is dit *de* plek om te proberen de user_key uit een cookie te halen? Vooralsnog default.inc
user_key = -1;
user = null;
}
else
user = new Perslid(user_key);
// Voor FO gezet in shared/SetCaller.asp
var gCaller = null;
if (typeof Session("caller") == "object")
{
gCaller = Session("caller");
}
// Check for parameter pName and return the value
// If not specified return defVal
// If defVal not specified pName a required parameter
function getQParam(pName, defVal)
{
var rq = Request.Querystring(pName);
return _get_Param(Request.Querystring, pName, defVal)
}
function getFParam(pName, defVal)
{
return _get_Param(Request.Form, pName, defVal)
}
function _get_Param(pColl, pName, defVal)
{
var rq = pColl(pName);
if (rq.count > 0)
return rq(1);
else
@@ -46,7 +46,7 @@ function getQParam(pName, defVal)
if (typeof defVal != 'undefined')
return defVal;
else // Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_QPARAMETER_" + pName + "_IS_MISSING"); // A required parameter was not supplied
eval("INTERNAL_ERROR_PARAMETER_" + pName + "_IS_MISSING"); // A required parameter was not supplied
}
}
@@ -56,7 +56,16 @@ function getQParam(pName, defVal)
// If relaxed==true then return defVal on invalid number
function getQParamInt(pName, defVal, relaxed)
{
var strval = getQParam(pName, defVal);
return _get_ParamInt(Request.Querystring, pName, defVal, relaxed)
}
function getFParamInt(pName, defVal, relaxed)
{
return _get_ParamInt(Request.Form, pName, defVal, relaxed)
}
function _get_ParamInt(pColl, pName, defVal, relaxed)
{
var strval = _get_Param(pColl, pName, defVal);
if (strval == "") return defVal;
var val = parseInt(strval, 10);
if (isNaN(val))
@@ -65,7 +74,7 @@ function getQParamInt(pName, defVal, relaxed)
return defVal;
else
// Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_QPARAMETER_" + pName + "_IS_NOT_INTEGER"); // A required parameter was not supplied
eval("INTERNAL_ERROR_PARAMETER_" + pName + "_IS_NOT_INTEGER"); // A required parameter was not supplied
}
else
return val;
@@ -77,7 +86,15 @@ function getQParamInt(pName, defVal, relaxed)
// defVal can be a date object or null
function getQParamDate(pName, defVal)
{
var val = getQParamInt(pName, -1);
return _get_ParamDate(Request.Querystring, pName, defVal)
}
function getFParamDate(pName, defVal)
{
return _get_ParamDate(Request.Form, pName, defVal)
}
function _get_ParamDate(pColl, pName, defVal)
{
var val = _get_ParamInt(pColl, pName, -1);
if (val>0)
return new Date(val);
@@ -85,94 +102,27 @@ function getQParamDate(pName, defVal)
{
return defVal;
}
if (defVal == null)
if (defVal === null) // bewust triple===
{
return null
return null;
}
// Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_QPARAMETER_" + pName + "_IS_NOT_DATE"); // A required parameter was not supplied
eval("INTERNAL_ERROR_PARAMETER_" + pName + "_IS_NOT_DATE"); // A required parameter was not supplied
}
// Check for parameter pName and return all values
// Levert een string(!) op, eventueel gescheiden door komma's op
function getQMultiParam(pName, defVal)
{
var rq = Request.Querystring(pName);
if (rq.count > 0)
return String(rq);
else
{
if (typeof defVal != 'undefined')
return defVal;
else // Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_QMULTIPARAM_" + pName + "_IS_MISSING"); // A required parameter was not supplied
}
return _get_MultiParam(Request.Querystring, pName, defVal)
}
// Check for parameter pName and return the value
// If not specified or empty return defVal
// If defVal not specified pName is required
function getFParam(pName, defVal)
{
var rf = Request.Form(pName);
if (rf.count > 0 && rf(1)!="")
return rf(1);
else
{
if (typeof defVal != 'undefined')
return defVal;
else // Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_FPARAMETER_" + pName + "_IS_MISSING"); // A required parameter was not supplied
}
}
// Check for parameter pName and return the Integer value
// If not specified return defVal
// If defVal not specified pName is a required parameter
function getFParamInt(pName, defVal, relaxed)
{
var strval = getFParam(pName, defVal);
if (strval == "") return defVal;
var val = parseInt(strval, 10);
if (isNaN(val))
{
if (relaxed)
return defVal;
else
// Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_FPARAMETER_" + pName + "_IS_NOT_INTEGER"); // A required parameter was not supplied
}
else
return val;
}
// Check for parameter pName and return the Date value
// If not specified return defVal
// If defVal not specified pName is a required parameter
// defVal can be a date object or null
function getFParamDate(pName, defVal)
{
var val = getFParamInt(pName, -1);
if (val>0)
return new Date(val);
if (defVal instanceof Date)
{
return defVal
}
if (defVal == null)
{
return null
}
// Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_FPARAMETER_" + pName + "_IS_NOT_DATE"); // A required parameter was not supplied
}
// Check for parameter pName and return all values
// Levert een string(!) op, eventueel gescheiden door komma's op
function getFMultiParam(pName, defVal)
{
var rf = Request.Form(pName);
return _get_MultiParam(Request.Form, pName, defVal)
}
function _get_MultiParam(pColl, pName, defVal)
{
var rf = pColl(pName);
if (rf.count > 0)
return String(rf);
else
@@ -180,10 +130,11 @@ function getFMultiParam(pName, defVal)
if (typeof defVal != 'undefined')
return defVal;
else // Error message will get to client and/or IIS logfiles
eval("INTERNAL_ERROR_FULTIPARAM_" + pName + "_IS_MISSING"); // A required parameter was not supplied
eval("INTERNAL_ERROR_MULTIPARAM_" + pName + "_IS_MISSING"); // A required parameter was not supplied
}
}
// lijst is een array van parameter namen ["loc_key", "geb_key"]
// params is optioneel een hash { loc_key: 345, geb_key: 34 }
// (zonder params wordt QueryString genomen)

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 24-09-09 19:11 $
$Revision: 2 $
$Modtime: 3-11-09 15:20 $
File: shared/PRSFunctions.asp
Description: Generieke serverside PRS functies
@@ -26,17 +26,22 @@ Perslid.prototype._require_prs_perslid = function()
if (this._prs_afdeling_key == null)
{
var sql = "SELECT p.prs_perslid_key, "
+ prs_pers_string + " naam, "
// + prs_pers_string + " naam, "
+ " pf.prs_perslid_naam_full naam, "
+ " p.prs_afdeling_key,"
+ " p.fac_profiel_key,"
+ " prs_perslid_telefoonnr,"
+ " prs_perslid_mobiel,"
+ " p.prs_perslid_telefoonnr,"
+ " p.prs_perslid_mobiel,"
+ " p.prs_perslid_email,"
+ " p.mld_adres_key,"
+ " sp.prs_srtperslid_omschrijving"
+ " FROM prs_perslid p, prs_srtperslid sp"
+ " sp.prs_srtperslid_omschrijving,"
+ " p.prs_perslid_login,"
+ " p.prs_perslid_oslogin,"
+ " p.prs_perslid_oslogin2"
+ " FROM prs_perslid p, prs_srtperslid sp, prs_v_perslid_fullnames_all pf"
+ " WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key"
+ " AND prs_perslid_key = " + this._prs_perslid_key
+ " AND pf.prs_perslid_key = p.prs_perslid_key"
+ " AND p.prs_perslid_key = " + this._prs_perslid_key
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
@@ -50,6 +55,9 @@ Perslid.prototype._require_prs_perslid = function()
this._prs_srtperslid = oRs("prs_srtperslid_omschrijving").value;
this._objAfdeling = null;
this._mld_adres_key = oRs("mld_adres_key").Value;
this._prs_perslid_login = oRs("prs_perslid_login").value; // last login
this._prs_perslid_oslogin = oRs("prs_perslid_oslogin").value;
this._prs_perslid_oslogin2 = oRs("prs_perslid_oslogin2").value;
}
oRs.close();
}
@@ -61,10 +69,11 @@ Perslid.prototype._require_prs_perslid_plaats = function()
if (!this._werkplekken)
{
this._werkplekken = [];
var sql = "SELECT prs_werkplek_key"
+ " FROM prs_v_aanwezigperslidwerkplek w"
+ " WHERE prs_perslid_key = " + this._prs_perslid_key
+ " ORDER BY w.prs_perslidwerkplek_bezetting DESC"; // Hoogste bezetting vooraan TODO: en dan op plaatsaanduiding
var sql = "SELECT w.prs_werkplek_key"
+ " FROM prs_v_aanwezigperslidwerkplek w, prs_v_werkplek_gegevens wg"
+ " WHERE w.prs_werkplek_key = wg.prs_werkplek_key"
+ " AND w.prs_perslid_key = " + this._prs_perslid_key
+ " ORDER BY w.prs_perslidwerkplek_bezetting DESC, wg.prs_werkplek_aanduiding"; // Hoogste bezetting vooraan en dan op plaatsaanduiding
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
@@ -135,25 +144,52 @@ Perslid.prototype.mld_adres_key = function()
return this._mld_adres_key;
}
Perslid.prototype.kpn_string = function()
Perslid.prototype.login = function()
{
this._require_prs_perslid();
return this._prs_perslid_login;
}
Perslid.prototype.oslogin = function()
{
this._require_prs_perslid();
return this._prs_perslid_oslogin;
}
Perslid.prototype.oslogin2 = function()
{
this._require_prs_perslid();
return this._prs_perslid_oslogin2;
}
Perslid.prototype._require_kpn_string = function()
{
if (!this._kpn_string)
{
this._require_prs_perslid();
this.kpn_string ="-";
this._kpn_string ="-";
this._kpn_budgethouderkey = -1;
if (this.afdeling().prs_kostenplaats_key())
{
var oRs = Oracle.Execute("SELECT " + prs_kpn_string +", prs_perslid_naam_full"
+ " FROM prs_kostenplaats k, prs_v_perslid_fullnames pf"
+ " WHERE k.prs_perslid_key = pf.prs_perslid_key"
+ " AND k.prs_kostenplaats_key = " + this.afdeling().prs_kostenplaats_key());
var oRs = Oracle.Execute("SELECT " + prs_kpn_string +", k.prs_perslid_key"
+ " FROM prs_kostenplaats k"
+ " WHERE k.prs_kostenplaats_key = " + this.afdeling().prs_kostenplaats_key());
if (!oRs.eof)
this._kpn_string = '' + oRs(0).value;
this._kpn_budgethouder = '' + oRs(1).value; // TODO: Jos, hoe lever ik deze nou netjes op? kpn toch object?
this._kpn_budgethouderkey = oRs(1).value;
oRs.close();
}
}
return this._kpn_string;
}
Perslid.prototype.kpn_string = function()
{
this._require_kpn_string();
return this._kpn_string;
}
// Meer info kun je krijgen door een user object met deze key te maken.
Perslid.prototype.kpn_budgethouderkey = function()
{
this._require_kpn_string();
return this._kpn_budgethouderkey;
}
// De volgende 5 functies zijn een beetje gemakzucht, ze pakken de locatie_key etc van de eerste werkplek of geven -1
@@ -262,7 +298,7 @@ Perslid.prototype.werkplek = function()
// @param ins_discipline_key
// result:
// null als helemaal geen rechten (alles level 9) maar wel isOptional
// meldig 'U bent niet geauthoriseerd' als helemaal geen rechten en niet isOptional
// melding 'U bent niet geauthoriseerd' als helemaal geen rechten en niet isOptional
// anders: { PRSreadlevel: 0, PRSwritelevel: 1, ALGreadlevel: 0, ALGwritelevel: 1, autfunctionkey: 64 }
Perslid.prototype.checkAutorisation = function checkAutorisation(autfunction, isOptional, ins_discipline_key)
{
@@ -283,20 +319,20 @@ Perslid.prototype.checkAutorisation = function checkAutorisation(autfunction, is
var autfunctionkey = -1; // Kan heel handig zijn.
// MIN om te kijken over alle mogelijke disciplines heen
oRs = Oracle.Execute("SELECT f.fac_functie_key"
+ " FROM fac_functie f "
+ " WHERE f.fac_functie_code = '" + autfunction + "'")
var oRs = Oracle.Execute("SELECT f.fac_functie_key"
+ " FROM fac_functie f "
+ " WHERE f.fac_functie_code = '" + autfunction + "'")
if (!oRs.Eof)
{
autfunctionkey = oRs(0).value;
var autfunctionkey = oRs(0).value;
sql = "SELECT COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_READ), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_WRITE), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_ALG_LEVEL_READ), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_ALG_LEVEL_WRITE), 9)"
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + this._prs_perslid_key
+ " AND w.fac_functie_key = " + autfunctionkey;
var sql = "SELECT COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_READ), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_WRITE), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_ALG_LEVEL_READ), 9)"
+ ", COALESCE(MIN(FAC_GEBRUIKER_ALG_LEVEL_WRITE), 9)"
+ " FROM fac_v_webgebruiker w"
+ " WHERE w.prs_perslid_key = " + this._prs_perslid_key
+ " AND w.fac_functie_key = " + autfunctionkey;
if (typeof ins_discipline_key != 'undefined')
sql += " AND ins_discipline_key = " + ins_discipline_key
@@ -334,15 +370,31 @@ Perslid.prototype.checkAutorisation = function checkAutorisation(autfunction, is
oRs.close();
}
// Deze functie aan te roepen als ontdekt wordt dat de autorisatie ongeldig is.
// Alleen te gebruiken in onvoorziene situaties ('de gebruiker had hier niet mogen/kunnen komen')
Perslid.prototype.auth_required_or_abort = function(hasAuth, badbody)
{
if (!hasAuth)
{
Response.Clear();
Response.Write(badbody||"<html><head></head><body><p>" + lcl_no_auth + "</p></body></html>");
Response.End;
};
}
// func_enabled
// Controleert *voor een bestaande entiteit*, *gegeven allerlei keys*
// welke functies (van een bepaalde module) lees en/of schrijfrechten hebben.
// result:
// null als helemaal geen rechten (alles level 9) maar wel isOptional
// meldig 'U bent niet geauthoriseerd' als helemaal geen rechten en niet isOptional
// anders ["MLDBOF"].true , ["MLDBO2"].false bijvoorbeeld voor resp. wel en geen schrijfrechten
// Als autfunction meegegeven dan moeten er ook minstens schrijf(!) rechten zijn volgens autfunction
Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_key, alg_key, prs_key, autfunction)
// meldig 'U bent niet geauthoriseerd' als helemaal geen (lees)rechten
// anders worden twee functies opgeleverd: canRead("WEB_MLDFOF") en canWrite("WEB_MLDFOF")
//
// ins_discipline_key mag ook een string van discipline_keys gescheiden door komma's zijn!
// dan controleren we dat *pessimistich*: je moet de rechten voor alle disciplines hebben!
Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_key, alg_key, prs_key)
{
var sql;
var multidisc = String(ins_discipline_key).indexOf(",")>0;
var PRSLevel = -1; // Default heeel ver weg
// TODO: Bedrijf niveau ondersteunen?
@@ -352,10 +404,11 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
PRSLevel = 8;
else
{
// optimalisatie: haal de andere afd_key met een losse query op.
var afd_key = new Perslid(prs_key).prs_afdeling_key();
var sql = "SELECT MAX (a.niveau) niveau"
+ " FROM prs_v_afdeling_familie a, prs_perslid p, prs_v_afdeling_familie aa"
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + prs_key // -- de ander
+ " FROM prs_v_afdeling_familie a, prs_v_afdeling_familie aa"
+ " WHERE a.prs_afdeling_key = " + afd_key // -- de ander
+ " AND a.prs_afdeling_elder_key = aa.prs_afdeling_elder_key"
+ " AND aa.prs_afdeling_key = " + this.prs_afdeling_key(); // zelf
var oRs = Oracle.Execute(sql);
@@ -374,43 +427,49 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
+ " FROM alg_v_allonroerendgoed g"
+ " WHERE g.alg_onroerendgoed_keys(+)="+alg_key
var oRs = Oracle.Execute(sql);
var loc = oRs("alg_locatie_key").Value;
var bld = oRs("alg_gebouw_key").Value;
var flo = oRs("alg_verdieping_key").Value;
var room = oRs("alg_ruimte_key").Value;
if (room != -1) {
// kijk of room binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_ruimte_key = " + room;
}
else if (flo != -1) {
// kijk of flo binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_floors"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_verdieping_key = " + flo;
}
else if (bld != -1) {
// kijk of bld binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_buildings"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_gebouw_key = " + bld;
}
else if (loc != -1) {
// kijk of loc binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_locations"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_locatie_key = " + loc;
if (!oRs.eof) {
var loc = oRs("alg_locatie_key").Value;
var bld = oRs("alg_gebouw_key").Value;
var flo = oRs("alg_verdieping_key").Value;
var room = oRs("alg_ruimte_key").Value;
if (room != -1) {
// kijk of room binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_ruimte_key = " + room;
}
else if (flo != -1) {
// kijk of flo binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_floors"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_verdieping_key = " + flo;
}
else if (bld != -1) {
// kijk of bld binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_buildings"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_gebouw_key = " + bld;
}
else if (loc != -1) {
// kijk of loc binnen de scope valt
sql = "SELECT max(niveau)"
+ " FROM fac_v_my_locations"
+ " WHERE prs_perslid_key = " + user_key
+ " AND alg_locatie_key = " + loc;
}
oRs = Oracle.Execute(sql);
ALGLevel = oRs(0).Value||-1;
} else {
__Log ('ATTENTIE: Waarom is deze key onbekend!?!');
ALGLevel = -1;
}
oRs = Oracle.Execute(sql);
ALGLevel = oRs(0).Value||-1;
}
var sql = "SELECT f.fac_functie_code, fac_functie_min_level"
// JGL: Is de MIN in deze SQL wel nodig eigenlijk?
var sql = "SELECT f.fac_functie_code, fac_functie_min_level, ins_discipline_key"
+ ", COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_READ ), 9) FAC_GEBRUIKER_PRS_LEVEL_READ"
+ ", COALESCE(MIN(FAC_GEBRUIKER_PRS_LEVEL_WRITE), 9) FAC_GEBRUIKER_PRS_LEVEL_WRITE"
+ ", COALESCE(MIN(FAC_GEBRUIKER_ALG_LEVEL_READ ), 9) FAC_GEBRUIKER_ALG_LEVEL_READ"
@@ -418,9 +477,21 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
+ " FROM fac_v_webgebruiker w, fac_functie f"
+ " WHERE w.prs_perslid_key = " + this._prs_perslid_key
+ " AND w.fac_functie_key = f.fac_functie_key"
+ " AND ins_discipline_key = " + ins_discipline_key
+ " GROUP BY f.fac_functie_code, fac_functie_min_level"
+ (multidisc||!ins_discipline_key?"":" AND ins_discipline_key = " + ins_discipline_key)
+ (module != "*" ? " AND fac_functie_module ='"+module+"'" : "")
+ " GROUP BY f.fac_functie_code, fac_functie_min_level, ins_discipline_key"
// TODO: voor leesrechten willen we misschien *optimistisch* controleren?
// Dan moeten we hieronder ook afzonderlijk de MIN bepalen per discipline
if (multidisc)
sql = "SELECT fac_functie_code, fac_functie_min_level"
+ ", MAX(FAC_GEBRUIKER_PRS_LEVEL_READ ) FAC_GEBRUIKER_PRS_LEVEL_READ"
+ ", MAX(FAC_GEBRUIKER_PRS_LEVEL_WRITE) FAC_GEBRUIKER_PRS_LEVEL_WRITE"
+ ", MAX(FAC_GEBRUIKER_ALG_LEVEL_READ ) FAC_GEBRUIKER_ALG_LEVEL_READ"
+ ", MAX(FAC_GEBRUIKER_ALG_LEVEL_WRITE) FAC_GEBRUIKER_ALG_LEVEL_WRITE"
+ " FROM (" + sql + ")"
+ " WHERE ins_discipline_key IN (" + ins_discipline_key + ") "
+ " GROUP BY fac_functie_code, fac_functie_min_level"
var func_enabled = { _funcodes: [],
canWrite : function (funcode)
@@ -459,13 +530,7 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
oRs.MoveNext();
}
oRs.close();
if (anyfound)
{
if (typeof autfunction != "undefined") // Dan ook schrijfrechten controleren
{
anyfound = func_enabled.canWrite(autfunction);
}
}
if (!anyfound)
{
__Log('NOT Authorized for ' + module +
@@ -473,10 +538,10 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
" ALGLevel: " + ALGLevel +
" alg: " + alg_key +
" prs: " + prs_key +
" PRSLevel: " + PRSLevel +
" autfunction: " + autfunction);
" PRSLevel: " + PRSLevel);
{
Response.Write("<body><p>" + lcl_no_auth + "</p></body>");
Response.Clear();
Response.Write("<html><head></head><body><p>" + lcl_no_auth + "</p></body></html>");
Response.End;
}
};
@@ -484,6 +549,23 @@ Perslid.prototype.func_enabled = function _func_enabled(module, ins_discipline_k
return func_enabled;
}
// heeft persoon prs_key *mij* gedefinieerd als collega
Perslid.prototype.isCollega = function (prs_key)
{
var sql = "SELECT prs_perslid_key"
+ " FROM prs_collega"
+ " WHERE prs_perslid_key_alt = " + user_key
+ " AND prs_perslid_key = " + prs_key;
var oRs = Oracle.Execute(sql);
if (oRs.Eof)
result = false;
else
result = true;
oRs.Close();
return result;
}
Perslid.prototype.canWritePerslid = function _canWritePerslid(prs_key, autlevel)
{
var sql = "select prs_perslid_key, prs_perslid_verwijder"

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 30-09-09 7:15 $
$Revision: 2 $
$Modtime: 3-11-09 15:00 $
File: Calendar.inc
Description: generic interface function for selecting a 'date' and/or time
@@ -27,82 +27,7 @@ function _initVrijedagen()
<script type="text/javascript">
var mld_vrije_dagen = [<%=mld_vrije_dagen%>];
var calArray = new Array();
function calendar(id, volgnr)
{
this.id = id;
this.volgnr = volgnr;
}
function checkVolgnr(fieldId, volgnr, timeField)
{
// Aangeroepen door de onChange van elke kalender om de volgorde in tijd van de kalenders te controleren
// Alleen kalenders die een volgnummer hebben gekregen moeten worden gecontroleerd
// Controleer of kalender Kx niet na kalender Kx+1, Kx+2... komt. Toch het geval dan Kx+1, Kx+2... = Kx.
// Controleer of kalender Kx niet voor kalender Kx-1, Kx-2... komt. Toch het geval dan Kx-1, Kx-2... = Kx.
for (var i = 0; i < calArray.length; i++)
{
// Kalender Kx vooruit gezet
if (calArray[i].id != fieldId && calArray[i].volgnr > volgnr && parseInt($("#" + calArray[i].id).val()) < parseInt($("#" + fieldId).val()))
{ // Veld aanpassen
// Maak Kx+1, Kx+2... gelijk aan Kx
$("#show_" + calArray[i].id).DatePickerSetDate(new Date(parseInt($("#" + fieldId).val())));
$("#show_" + calArray[i].id).val($("#show_" + fieldId).val());
if (timeField)
{
// Als de tijd van tx > tijd van tx+1, tx+2..., maak dan de tijden gelijk: tijd van tx+1, tx+2... = tijd van tx.
if ($("#time_from_" + fieldId).timePickerGetTime().getTime() > $("#time_from_" + calArray[i].id).timePickerGetTime().getTime())
{ // Datum + tijd overnemen
// Dezelfde datum overnemen
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + fieldId).timePickerGetTime().getTime());
// Dezelfde tijd overnemen
//$("#time_from_" + calArray[i].id).timePickerSetTime($("#time_from_" + fieldId).timePickerGetTime().getTime());
$("#time_from_" + calArray[i].id).val($("#time_from_" + fieldId).val());
}
else
{ // Dezelfde datum en de oude eigen tijd behouden
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
}
}
else
{
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime());
}
}
// Kalender Kx achteruit gezet
if (calArray[i].id != fieldId && calArray[i].volgnr < volgnr && $("#" + calArray[i].id).val() > $("#" + fieldId).val())
{ // Veld aanpassen
// Maak Kx-1, Kx-2... gelijk aan Kx
$("#show_" + calArray[i].id).DatePickerSetDate(new Date(parseInt($("#" + fieldId).val())));
$("#show_" + calArray[i].id).val($("#show_" + fieldId).val());
if (timeField)
{
// Als de tijd van tx < tijd van tx-1, tx-2..., maak dan de tijden gelijk: tijd van tx-1, tx-2... = tijd van tx.
if ($("#time_from_" + fieldId).timePickerGetTime().getTime() < $("#time_from_" + calArray[i].id).timePickerGetTime().getTime())
{ // Datum + tijd overnemen
// Dezelfde datum overnemen
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + fieldId).timePickerGetTime().getTime());
// Dezelfde tijd overnemen
//$("#time_from_" + calArray[i].id).timePickerSetTime($("#time_from_" + fieldId).timePickerGetTime().getTime());
$("#time_from_" + calArray[i].id).val($("#time_from_" + fieldId).val());
}
else
{ // Dezelfde datum en de oude eigen tijd behouden
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime() + $("#time_from_" + calArray[i].id).timePickerGetTime().getTime());
}
}
else
{
$("#" + calArray[i].id).val(new Date(parseInt($("#" + fieldId).val())).midnight().getTime());
}
}
}
}
</script>
</script>
<%
}
// TODO met params.mode kan evt beperkingen worden meegegeven, vgl. suggest filtcode
@@ -140,10 +65,10 @@ function FCLTcalendar (fieldID, params)
var readotag = params.readonly? " readonly" : "";
if (params.label)
{ %>
<td class="label"><label for="show_<%=fieldID%>"><%=params.label%>:</label></td>
<td class="label"><label for="show_<%=fieldID%>"><nobr><%=params.label%>:</nobr></label></td>
<td>
<% } %>
<input class="flddate" type="text" <%=readotag%> id="show_<%=fieldID%>" value="<%=iniDate%>">
<input class="flddate<%=params.required?" required":""%>" type="text" <%=readotag%> id="show_<%=fieldID%>" value="<%=iniDate%>">
<%
if (params.timeField)
{ %>
@@ -165,26 +90,26 @@ function FCLTcalendar (fieldID, params)
// Indien er niveau's zijn in tijd tussen meerdere kalenders
<% if (params.volgnr)
{ %>
calArray.push(new calendar("<%=fieldID%>", <%=params.volgnr%>));
calArray.push({ id: "<%=fieldID%>", volgnr: <%=params.volgnr%>});
<% } %>
var nrCals = <%=params.calendars || 1%>;
var nextmonth = new Date();
nextmonth.setMonth(nextmonth.getMonth()+Math.floor(nrCals/2));
$("#show_<%=fieldID%>").DatePicker(
{ date: [],//new Date(<%=initDate.valueOf()%>),
{ date: [],
format: 'd-m-Y',
calendars: nrCals,
current: nextmonth,
locale: LCL.shared.calendar_names,
onBeforeShow: function()
{
if ($('#show_<%=fieldID%>').val())
{
$('#show_<%=fieldID%>').DatePickerSetDate($('#show_<%=fieldID%>').val(), true);
$('#show_<%=fieldID%>').DatePickerSetDate($('#show_<%=fieldID%>').val(), false);
}
},
onChange: function(formatted, dates)
{
//debugger;
$('#show_<%=fieldID%>').val(formatted);
<% if (params.timeField) { %>
@@ -211,7 +136,7 @@ function FCLTcalendar (fieldID, params)
<% } %>
<% if (params.volgnr)
{ %>
checkVolgnr("<%=fieldID%>", <%=params.volgnr%>, <%=params.timeField? 1 : 0%> == 1);
cal_checkVolgnr("<%=fieldID%>", <%=params.volgnr%>, <%=params.timeField? 1 : 0%> == 1);
<% } %>
},
onRender: function(datum)
@@ -259,7 +184,7 @@ function FCLTcalendar (fieldID, params)
}
%>
$("#time_from_<%=fieldID%>").timePicker(
{ step: <%=(params.timeStep||15)%>,
{ step: <%=(params.timeStep || 15)%>,
startTime : "<%=params.startTime%>", // TODO
endTime : "<%=params.endTime%>", // TODO
onChange: function (newVal)
@@ -268,7 +193,7 @@ function FCLTcalendar (fieldID, params)
+ $("#time_from_<%=fieldID%>").timePickerGetTime().getTime())
<% if (params.volgnr)
{ %>
checkVolgnr("<%=fieldID%>", <%=params.volgnr%>, <%=params.timeField? 1 : 0%> == 1);
cal_checkVolgnr("<%=fieldID%>", <%=params.volgnr%>, <%=params.timeField? 1 : 0%> == 1);
<% } %>
}
});

View File

@@ -1,6 +1,6 @@
/*
* $Revision: 1 $
* $Modtime: 30-09-09 17:47 $
* $Revision: 2 $
* $Modtime: 3-11-09 14:51 $
*/
@@ -8,11 +8,14 @@
html {
overflow: auto;
background-color: white;
padding: 0;
margin: 0;
}
body {
text-align: left;
font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
xfont-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
font-family: lucida grande,tahoma,verdana,arial,sans-serif;
font-size: 8pt;
margin: 0;
padding:0;
@@ -28,17 +31,17 @@ div { border: 0; }
background-color: #DBE0DB;
margin: 0;
}
/* logintable fits into modal login frame,
matches secur_frame (minus 30 for title) */
#logintable {
border: 1px #000000 solid;
width: 300px;
margin: 0;
height: 150px;
#ifl_f #buttons {
margin-top: 10px;
margin-bottom: 10px;
}
#secur_frame {
padding: 0;
#logintable {
border: 0px solid red;
width: 290px;
margin: 20px;
}
#mobbutton {
padding-left: 2px;
}
#mainbody {
width: 100%;
@@ -50,13 +53,12 @@ div { border: 0; }
}
#showbody {
/* opacity:0.4;
filter:alpha(opacity=40); */
background-color: #DDDDDD;
xbackground-image:url(../Pictures/bodybgrnd.jpg );
xbackground-image:url(../Pictures/bodybgrnd.jpg );
}
#editbody, #rejectbody {
background-color: #F3F3F3;
xbackground-color: #F3F3F3;
background-color: #BBBBBB;
}
#searchbody {
@@ -66,24 +68,29 @@ div { border: 0; }
/* generic tag styles */
input, textarea, select, td, th {
font-size: 8pt;
padding: 1px 0 1px 2px;
padding: 0px 0 1px 2px;
margin:0;
border:0;
}
input[type=text], select, textarea, select {
input[type=text], textarea, select {
border:1px solid #999999;
}
input[type=text]:hover, select:hover, textarea:hover, select:hover {
input[type=text]:hover, textarea:hover, select:hover {
background-color:#FEFEFE;
}
input[type=checkbox]{
background-color:transparent;
}
input[type=submit]{
/* display:none;*/
margin: 0;
padding: 0;
}
select {
background-color: #FAFAFA;
}
input[readonly], select[readonly], textarea[readonly], input[readonly]:hover, select[readonly]:hover, textarea[readonly]:hover {
background-color: transparent;
border: 1px solid #EEEEEE;
@@ -103,6 +110,10 @@ h3 {
text-align:left;
}
a[href^="mailto:"] {
text-decoration: none;
color: #333;
}
a:hover {
text-decoration: underline;
cursor: pointer;
@@ -124,6 +135,14 @@ th {
cursor: pointer;
font-weight: bold;
}
.tabcloseall {
color: #B0B0B0;
cursor: pointer;
font-weight: bold;
font-size: 2em;
float: right;
padding: 0px 5px 5px 3px;
}
.hot {
color: red;
}
@@ -144,6 +163,7 @@ div#PersFAC, div#ProfFAC, div#MgtFAC {
/* headerstyles */
#headerblok {
width:100%;
float: right;
}
#headersuggest {
@@ -158,12 +178,21 @@ div#PersFAC, div#ProfFAC, div#MgtFAC {
width:250px;
}
#headerdate {
font-style: smallcaps;
font-weight: bold;
text-align: right;
border: 0;
padding-right: 20px;
}
#headerprefix {
font-weight: bold;
text-align: center;
border: 0;
color: red;
position: absolute;
padding-left: 400px;
padding-top: 10px;
font-size: 3.0em;
}
#headerfunctions {
float: right;
margin-top: 2px;
@@ -180,6 +209,14 @@ div#PersFAC, div#ProfFAC, div#MgtFAC {
text-align: right;
padding-right: 5px
}
#headerlogout:hover, #headerhelp:hover {
text-decoration: underline;
}
#loggedinuser {
display: inline;
text-align: right;
padding-right: 180px
}
/* VOOR REGELS IN EEN OVERZICHT */
div.ias {
@@ -194,6 +231,14 @@ div.ias span{}
color: blue;
}
.dirty td { color: #808080 }
.inlinedetails { padding-left: 20px;
background-repeat:no-repeat!important;
background-image:url(../Pictures/tree_min.gif)!important;
cursor: pointer;
}
.inlinedetails.closed { background-image:url(../Pictures/tree_plus.gif)!important;}
/* blockstyles */
@@ -243,7 +288,7 @@ div.fcltframeheader {
/* Een kader om velden in een view-editscherm */
.fcltblock {
margin:2px;
padding:6px;
padding:0px;
text-align:left;
}
#editbody .fcltblock {
@@ -256,19 +301,31 @@ div.fcltframeheader {
border:5px solid #D3D3D3;
}
.fcltblocktab {
border: 0;
margin-top: 0px;
padding: 0;
border-collapse: collapse;
border-spacing:0;
}
.fcltblockhead {
background-color:#D3D3D3;
font-weight: bold;
font-size: 1.5em;
font-size: 1.2em;
padding-bottom: 5px;
}
.fcltblocktab {}
#editbody .fcltblockhead {
background-color:#B3B3B3;
}
#showbody .fcltblockhead {
background-color:#D3D3D3;
color: #111111;
}
.fcltblock .inside {
margin: 5px;
}
.inside {
margin:0;
@@ -277,8 +334,8 @@ div.fcltframeheader {
/* For my personalized homepage*/
#mywelcome , #mymessages, #myactions{
background-image: url(../Pictures/portalbg.jpg);
background-color: #E73535;
xbackground-image: url(../Pictures/portalbg.jpg);
background-color: #a0a0a0;
color: white;
padding-bottom: 2px;
height: 70%;
@@ -328,7 +385,6 @@ div.fcltframeheader {
}
#search div.fcltblock {
margin:0px;
padding:6px;
background-color:#F0F0F0;
border:5px solid #DFDFD3;
text-align:left;
@@ -337,6 +393,10 @@ div.fcltframeheader {
color: #68698E;
}
#search div.fcltblockhead {
background-color: #DFDFD3;
}
.searchkolom1, .searchkolom2 {
vertical-align:top;
width:50%;
@@ -384,6 +444,7 @@ div.fcltframeheader {
margin-top: 0.1em;
white-space: nowrap;
}
/* een button */
#buttons ul li, #buttons ul li a {
background-color: #E9E9E9;
@@ -397,6 +458,7 @@ div.fcltframeheader {
padding: 2px 5px 2px 5px;
margin: 1px;
text-align: center;
background-color:transparent;
}
#buttons ul li.vertical {
@@ -434,13 +496,27 @@ div#buttons.dialog img {
text-decoration: none;
}
img.details, span.details, tr.details {
img.details, span.details, tr.details, div.ref {
border: 0;
cursor: pointer;
margin: 0;
padding: 0;
}
/* moreinfo als link ipv icon */
input.details {
cursor: pointer;
color: #2222CC;
}
input.details:hover {
text-decoration: underline;
}
.mover {
width: 30px;
cursor: pointer;
text-align: center;
font-weight: normal;
font-size: 2em;
}
div#result {
width: 100%;
@@ -463,6 +539,10 @@ div#edit {
/*
* OVERZICHTEN. Alle lijsten hebben class rstable
*/
#rstable {
border-spacing: 0;
}
.rstable
{
clear: both;
@@ -521,17 +601,20 @@ div#edit {
margin-left:10px;
vertical-align: bottom;
}
/*.rstable tr:hover td {filter:alpha(opacity=66);-moz-opacity:0.66;opacity:0.66;} */
.rstable tr:hover .ias {visibility:visible;}
.greenBack td { background-color: #66FF66;} /* fin.: functioneel noemen */
.redBack td { background-color: #FF6666;} /* fin.: functioneel noemen */
/* Voor fin facturen */
.withinmargin td { background-color: #66FF66;}
.outsidemargin td { background-color: #FF6666;}
.nowrap { white-space: nowrap;}
/* all resulttables can be overruled by their id, like #algtable {} here */
#resvtabletiny, #resctabletiny, #beztabletiny {
#resvtabletiny, #resctabletiny {
width: 55%;
}
#beztabletiny { width: 100%}
#cntscopetable {width: 60%;}
#faqtable { padding: 0; margin:0; width: 850px;}
#faqtable thead { display: none;}
#faqtable tr {}
@@ -564,34 +647,6 @@ div#edit {
.unsolved td {
background-color: #A3B1E3;
}
.deleted {
text-decoration: line-through;
}
.outofbounds {
color: red;
font-weight: bold;
}
.fatal {
background-color: red;
color: yellow;
padding: 5px;
font-weight: bold;
text-align: center;
}
.noshow {
color: yellow;
font-weight: bold;
background-color: red;
}
.rsSummary {
float: left;
background-color: #808080;
color: #FFFFFF;
padding: 0px; /* moet 0, anders zie je nog iets als-ie hidden is */
}
#rsMaxHistoryB, #rsMaxHistoryE {
clear: both;
@@ -646,13 +701,32 @@ div#edit {
width: 100%;
}
#phonebookteaser {
font-size: 0.7em;
padding-left: 78px;
display: inline;
}
.required {
.JGLrequired {
background-image:url(../Pictures/required.gif);
background-repeat:no-repeat;
background-position:right;
}
/* pas op: option's css kent alleen background-color by IE */
input[type=text].required, select.required, option.required, textarea.required, select.required, .required {
xbackground-color:#ffe0e0;
border-left:1px dotted red;
}
.required.missing {
background-color:#ffB0B0;
}
.number.bad, .float.bad, .currency.bad {
background-color:#ffB0B0;
}
/* TODO: Ander plaatje? */
.calvrij {background-image:url(../Pictures/no_photo.gif);
background-position:center;
@@ -686,41 +760,6 @@ div#statusboxes {
float:right;
}
#resselector option {
background-color: #94F6C4;
}
#resselector .fatal {
background-color: red;
color: yellow;
}
#selectedDates{
float: right;
}
/* RES planboard noot: res kan per id, obj gaat via class */
#tab_room_sched tr, .tab_obj_sched tr {background-color: #ddd;}
#tab_room_sched tr:hover, .tab_obj_sched tr:hover {background-color: #CCC;}
#tab_room_sched tr.selected, .tab_obj_sched tr.selected { font-weight: bold; }
/* voor de tr-s, lijkt me niet zo goed icm bovenstaande */
.planbord {
background-color: white;
}
.planbordlegenda td {
background-color: white;
}
#planbordlegenda {
width: 100%;
}
#planbordlegenda tr td {
border: 0;
}
#tab_room_sched td, .tab_obj_sched td {
border-bottom: 1px solid black;
border-right: 1px solid white;
}
/* all other pages */
@@ -729,10 +768,13 @@ div#statusboxes {
*/
#algInfo,
#algLoc1,
#kpnMan,
#prsPerslid,
#prsAfd,
#besHeader,
#besItemSel,
#bezAfspraak,
#cntInfo,
#cntFlex,
#msgPrs,
#opdrOpdracht,
#resPlaats,
@@ -741,15 +783,19 @@ div#statusboxes {
#mldBes,
#mldMelding,
#opdrKosten,
#bedrNaw,
#bedrSrt,
#bedrTechn,
#prsNaw,
#prsUsrFlex,
#resUser {
clear: left;
float:left;
width: 47%;
width: 48%;
}
#algFlex,
#algLoc2,
#bezBezoekers,
#prsPerslid2,
#cntData,
#cntFindata,
#cntBedrijf,
@@ -762,13 +808,23 @@ div#statusboxes {
#resInfo,
#mldFlex,
#opdrFlex,
#prsFin,
#prsSubst,
#prsAut,
#prsIns,
#bedrContact,
#bedrRelatie,
#resFlex {
clear: right;
float:right;
width: 46%;
}
#cntFlex,
#wpInfo,
#algFlex,
#prsFlex,
#bezAfspraak,
#bezBezoekers,
#mldOmschrijving,
#mldBehandel,
#msgMessage {
@@ -794,15 +850,24 @@ div#statusboxes {
}
/* functional field classes */
.fldreg, .flddis, .fldloc, .fldbld, .fldflr, .fldroom, .fldwpl, .fldpers, .fldsrch, .flddisc, .flddiscmulti, .fldstdmmulti, .flddep, .fldsrtdisc, .fldkp, .fldstdm,
.fldreg, .flddis, .fldloc, .fldbld, .fldflr, .fldroom, .fldwpl, .fldpers, .fldcontactpers, .flduitvoerende,
.fldsrch, .flddisc, .flddiscmulti, .fldstdmmulti, .flddep, .fldsrtdisc, .fldkp, .fldstdm,
.fldopdrnr, .fldhandler, .fldopdrtype, .fldcontract, .fldcntnr, .fldorderby, .fldgroupby, .fldname,
.fldroomcatmulti, .fldobjcatmulti, .fldartcatmulti, .fldartmulti, .fldartgroup, .fldoms, .fldremark,
.fldsrtgroup, .fldsrtdeel, .fldsrtdeelmulti, .flditem, .fldsupplier, .fldgroupbysec, .fldrfonum, .fldrfostatus, .fldordernum, .fldorderstatus,
.fldgastheer, .fldcntnum, .flddiscript, .fldmantel, .fldresroom, .fldopstel, .fldsel_activity, .fldresdesc,
.fldobjsort, .fldmsgurl, .fldmsgsubj, .fldmsggroup, .fldmelder, .fldflex, .fldprio, .fld, .fldsrt,
.fldnewvalue, .fldmldobjs, .fldfinnum, .flddebtor, .fldfintype, .fldfinnum, .fldfinstatus, .fldusrfilter {
.fldnewvalue, .fldmldobjs, .fldfinnum, .flddebtor, .fldfintype, .fldfinnum, .fldfinstatus, .fldusrfilter,
.flddienst, .fldmld_adres, .fldbld_srtkey, .fldter_srkey, .fldroom_srt, .flddel_address,
.fldcntmeldkey, .fldsrttype, .fldbdr_key, .fldordernr, .flddept, .fldmld_adrkey, .fldfac_prkey, .fldprs_srtkey, .fldselect, .fldbudgeth, .fldkstplgr
{
width: 250px;
}
/* ouderwetse listboxes */
.fldbedrijf, .fldfunc, .fldroomcat
{
width: 254px;
}
.flddate, .fldtime {
width: 70px;
@@ -813,6 +878,7 @@ div#statusboxes {
.flddatetime, .fldresstatus, #existingDates, #newDates, .fldmsgprio, .fldafspnum {
width: 124px;
}
.fldmldnum, .fldresnum, .flddeel {
width: 124px;
color: black;
@@ -825,18 +891,25 @@ div#statusboxes {
height: 200px;
}
.fldbezcnt {
.flduren, .flduurtarief, .fldmatkosten, .fldcorrkosten, .fldtotkosten, .fldbeslimiet {
width: 100px;
text-align:right;
padding-right:2px;
}
.fldbezcnt, .fldflrnum, .fldnrper {
width: 26px;
text-align:right;
padding-right:2px;
}
.fldresroomedit { text-decoration: underline; cursor: pointer; background-color: transparent; }
.fldtxt {width: 100%;}
.fldtxt, .fldomschr {width: 100%;}
#fldobjPossible, #fldobjExist {width: 200px;}
/* functional checkbox fields classes */
.fldmldnew, .fldmldbusy, .fldmldrej, .fldmlddone, .fldmldself, .fldmldafm, .fldmldver,
.fldcheck, .fldmldnew, .fldmldbusy, .fldmldrej, .fldmlddone, .fldmldself, .fldmldafm, .fldmldver, fldmldfiat
.fldopdrnew, .fldopdrbusy,.fldopdrrej, .fldopdrafm, .fldopdrver,
.fldresopen, .fldresclosed, .fldroomcat, .fldobjcat, .fldartcat, .fldresactual, .fldresdeleted,
.fldrfonew, .fldrfoopen, .fldrfodelivered, .fldrfoclosed, .fldopdrrej, .fldopdropen, .fldopdrdelivered, .fldopdrclosed,
@@ -844,7 +917,6 @@ div#statusboxes {
.fldcntact, .fldcntrap, .fldcntopz, .fldcntverl, .fldinsobjincl, .fldalgbez {
}
.flexlabel {
background-color: #C8E4C8;
text-align: left;
@@ -865,8 +937,19 @@ tr.unauthorized {
margin: 0;
}
/* Graphics ; te overleggen met JGL */
img#Eview, #mapCell {
border: 1px solid #333333;
}
td.selectable {
padding: 0; cursor:pointer;
}
#docBody {margin:0; padding:0;}
#theTabs {
height:100%;
padding-top:1px;
}
/* menu styles */
li.menu ul li a {
@@ -947,4 +1030,57 @@ div#MgtFAC ul li span.menukop {
color: #000000;
}
.deleted {
text-decoration: line-through;
}
.outofbounds {
color: red;
font-weight: bold;
}
input.activeinterval {
font-weight: bold;
color: red;
}
.fatal {
background-color: red;
color: yellow;
padding: 5px;
font-weight: bold;
text-align: center;
}
.noshow {
color: yellow;
font-weight: bold;
background-color: red;
}
.rsSummary {
float: left;
background-color: #808080;
color: #FFFFFF;
padding: 0px; /* moet 0, anders zie je nog iets als-ie hidden is */
}
/* FG tr legenda classes*/
.openFG, .closedFG {
background-repeat:no-repeat;
background-position: 2px 2px;
font-weight: bold;
color: white;
cursor: pointer;
}
.openFG {
background-image:url(../Pictures/tree_min.gif);
background-color: #808080;
}
.closedFG {
background-image:url(../Pictures/tree_plus.gif);
background-color: #A0A0A0;
}
.openFG td, .closedFG td {
padding-left: 25px;
}

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 3-09-09 14:16 $
$Revision: 2 $
$Modtime: 27-10-09 12:27 $
*/ %>
<%
@@ -95,7 +95,7 @@ function discxalg3d (
+ " AND wg.ins_discipline_key = i.ins_discipline_key"
+ " AND i.ins_discipline_verwijder is NULL";
if( pdisc != '') {
sqlD += " AND ins_discipline_key IN (" + pdisc + ")";
sqlD += " AND i.ins_discipline_key IN (" + pdisc + ")";
}
sqlD += " ORDER BY 2,1"; // we need this

View File

@@ -1,107 +1,199 @@
<%
/*
json2.js
2007-12-02
http://www.JSON.org/json2.js
2009-09-29
Public Domain
Public Domain.
No warranty expressed or implied. Use at your own risk.
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
See http://www.JSON.org/js.html
This file creates a global JSON object containing two methods:
This file creates a global JSON object containing two methods: stringify
and parse.
JSON.stringify(value, whitelist)
JSON.stringify(value, replacer, space)
value any JavaScript value, usually an object or array.
whitelist an optional array prameter that determines how object
values are stringified.
replacer an optional parameter that determines how object
values are stringified for objects. It can be a
function or an array of strings.
space an optional parameter that specifies the indentation
of nested structures. If it is omitted, the text will
be packed without extra whitespace. If it is a number,
it will specify the number of spaces to indent at each
level. If it is a string (such as '\t' or '&nbsp;'),
it contains the characters used to indent at each level.
This method produces a JSON text from a JavaScript value.
There are three possible ways to stringify an object, depending
on the optional whitelist parameter.
If an object has a toJSON method, then the toJSON() method will be
called. The value returned from the toJSON method will be
When an object value is found, if the object contains a toJSON
method, its toJSON method will be called and the result will be
stringified. A toJSON method does not serialize: it returns the
value represented by the name/value pair that should be serialized,
or undefined if nothing should be serialized. The toJSON method
will be passed the key associated with the value, and this will be
bound to the value
For example, this would serialize Dates as ISO strings.
Date.prototype.toJSON = function (key) {
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
return this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z';
};
You can provide an optional replacer method. It will be passed the
key and value of each member, with this bound to the containing
object. The value that is returned from your method will be
serialized. If your method returns undefined, then the member will
be excluded from the serialization.
If the replacer parameter is an array of strings, then it will be
used to select the members to be serialized. It filters the results
such that only members with keys listed in the replacer array are
stringified.
Otherwise, if the optional whitelist parameter is an array, then
the elements of the array will be used to select members of the
object for stringification.
Otherwise, if there is no whitelist parameter, then all of the
members of the object will be stringified.
Values that do not have JSON representaions, such as undefined or
Values that do not have JSON representations, such as undefined or
functions, will not be serialized. Such values in objects will be
dropped; in arrays will be replaced with null.
JSON.stringify(undefined) returns undefined. Dates will be
stringified as quoted ISO dates.
dropped; in arrays they will be replaced with null. You can use
a replacer function to replace those with JSON values.
JSON.stringify(undefined) returns undefined.
The optional space parameter produces a stringification of the
value that is filled with line breaks and indentation to make it
easier to read.
If the space parameter is a non-empty string, then that string will
be used for indentation. If the space parameter is a number, then
the indentation will be that many spaces.
Example:
var text = JSON.stringify(['e', {pluribus: 'unum'}]);
text = JSON.stringify(['e', {pluribus: 'unum'}]);
// text is '["e",{"pluribus":"unum"}]'
JSON.parse(text, filter)
This method parses a JSON text to produce an object or
array. It can throw a SyntaxError exception.
The optional filter parameter is a function that can filter and
transform the results. It receives each of the keys and values, and
its return value is used instead of the original value. If it
returns what it received, then structure is not modified. If it
returns undefined then the member is deleted.
text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
// text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
text = JSON.stringify([new Date()], function (key, value) {
return this[key] instanceof Date ?
'Date(' + this[key] + ')' : value;
});
// text is '["Date(---current time---)"]'
JSON.parse(text, reviver)
This method parses a JSON text to produce an object or array.
It can throw a SyntaxError exception.
The optional reviver parameter is a function that can filter and
transform the results. It receives each of the keys and values,
and its return value is used instead of the original value.
If it returns what it received, then the structure is not modified.
If it returns undefined then the member is deleted.
Example:
// Parse the text. If a key contains the string 'date' then
// convert the value to a date.
// Parse the text. Values that look like ISO date strings will
// be converted to Date objects.
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
var a;
if (typeof value === 'string') {
a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
});
myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
var d;
if (typeof value === 'string' &&
value.slice(0, 5) === 'Date(' &&
value.slice(-1) === ')') {
d = new Date(value.slice(5, -1));
if (d) {
return d;
}
}
return value;
});
This is a reference implementation. You are free to copy, modify, or
redistribute.
Use your own copy. It is extremely unwise to load third party
code into your pages.
This code should be minified before deployment.
See http://javascript.crockford.com/jsmin.html
USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
NOT CONTROL.
*/
/*jslint evil: true */
/*jslint evil: true, strict: false */
/*global JSON */
/*members "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
charCodeAt, floor, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, length,
parse, propertyIsEnumerable, prototype, push, replace, stringify, test,
toJSON, toString
/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
lastIndex, length, parse, prototype, push, replace, slice, stringify,
test, toJSON, toString, valueOf
*/
// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.
if (!this.JSON) {
JSON = {};
}
JSON = function () {
(function () {
function f(n) { // Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
Date.prototype.toJSON = function () {
if (typeof Date.prototype.toJSON !== 'function') {
// Eventually, this method will be based on the date.toISOString method.
Date.prototype.toJSON = function (key) {
return this.getUTCFullYear() + '-' +
return isFinite(this.valueOf()) ?
this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z';
f(this.getUTCSeconds()) + 'Z' : null;
};
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}
var m = { // table of character substitutions
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
@@ -109,167 +201,281 @@ if (!this.JSON) {
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
};
},
rep;
function stringify(value, whitelist) {
var a, // The array holding the partial texts.
i, // The loop counter.
k, // The member key.
l, // Length.
r = /["\\\x00-\x1f\x7f-\x9f]/g,
v; // The member value.
switch (typeof value) {
case 'string':
function quote(string) {
// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe sequences.
// Otherwise we must also replace the offending characters with safe escape
// sequences.
return r.test(value) ?
'"' + value.replace(r, function (a) {
var c = m[a];
if (c) {
return c;
}
c = a.charCodeAt();
return '\\u00' + Math.floor(c / 16).toString(16) +
(c % 16).toString(16);
}) + '"' :
'"' + value + '"';
escapable.lastIndex = 0;
return escapable.test(string) ?
'"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' :
'"' + string + '"';
}
case 'number':
function str(key, holder) {
// Produce a string from holder[key].
var i, // The loop counter.
k, // The member key.
v, // The member value.
length,
mind = gap,
partial,
value = holder[key];
// If the value has a toJSON method, call it to obtain a replacement value.
if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}
// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.
if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}
// What happens next depends on the value's type.
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
// JSON numbers must be finite. Encode non-finite numbers as null.
return isFinite(value) ? String(value) : 'null';
return isFinite(value) ? String(value) : 'null';
case 'boolean':
case 'null':
return String(value);
case 'boolean':
case 'null':
case 'object':
// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.
// Due to a specification blunder in ECMAScript,
// typeof null is 'object', so watch out for that case.
return String(value);
if (!value) {
return 'null';
}
// If the type is 'object', we might be dealing with an object or an array or
// null.
// If the object has a toJSON method, call it, and stringify the result.
case 'object':
if (typeof value.toJSON === 'function') {
return stringify(value.toJSON());
}
a = [];
if (typeof value.length === 'number' &&
!(value.propertyIsEnumerable('length'))) {
// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.
// The object is an array. Stringify every element. Use null as a placeholder
if (!value) {
return 'null';
}
// Make an array to hold the partial results of stringifying this object value.
gap += indent;
partial = [];
// Is the value an array?
if (Object.prototype.toString.apply(value) === '[object Array]') {
// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.
l = value.length;
for (i = 0; i < l; i += 1) {
a.push(stringify(value[i], whitelist) || 'null');
}
// Join all of the elements together and wrap them in brackets.
return '[' + a.join(',') + ']';
length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}
if (whitelist) {
// If a whitelist (array of keys) is provided, use it to select the components
// of the object.
// Join all of the elements together, separated with commas, and wrap them in
// brackets.
l = whitelist.length;
for (i = 0; i < l; i += 1) {
k = whitelist[i];
if (typeof k === 'string') {
v = stringify(value[k], whitelist);
if (v) {
a.push(stringify(k) + ':' + v);
}
v = partial.length === 0 ? '[]' :
gap ? '[\n' + gap +
partial.join(',\n' + gap) + '\n' +
mind + ']' :
'[' + partial.join(',') + ']';
gap = mind;
return v;
}
// If the replacer is an array, use it to select the members to be stringified.
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
k = rep[i];
if (typeof k === 'string') {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
} else {
}
} else {
// Otherwise, iterate through all of the keys in the object.
for (k in value) {
if (typeof k === 'string') {
v = stringify(value[k], whitelist);
if (v) {
a.push(stringify(k) + ':' + v);
}
for (k in value) {
if (Object.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
// Join all of the member texts together and wrap them in braces.
return '{' + a.join(',') + '}';
}
// Join all of the member texts together, separated with commas,
// and wrap them in braces.
v = partial.length === 0 ? '{}' :
gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
mind + '}' : '{' + partial.join(',') + '}';
gap = mind;
return v;
}
}
return {
stringify: stringify,
parse: function (text, filter) {
var j;
// If the JSON object does not yet have a stringify method, give it one.
function walk(k, v) {
var i, n;
if (v && typeof v === 'object') {
for (i in v) {
if (Object.prototype.hasOwnProperty.apply(v, [i])) {
n = walk(i, v[i]);
if (n !== undefined) {
v[i] = n;
}
if (typeof JSON.stringify !== 'function') {
JSON.stringify = function (value, replacer, space) {
// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.
var i;
gap = '';
indent = '';
// If the space parameter is a number, make an indent string containing that
// many spaces.
if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}
// If the space parameter is a string, it will be used as the indent string.
} else if (typeof space === 'string') {
indent = space;
}
// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}
// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.
return str('', {'': value});
};
}
// If the JSON object does not yet have a parse method, give it one.
if (typeof JSON.parse !== 'function') {
JSON.parse = function (text, reviver) {
// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.
var j;
function walk(holder, key) {
// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.
var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.hasOwnProperty.call(value, k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v;
} else {
delete value[k];
}
}
}
return filter(k, v);
}
return reviver.call(holder, key, value);
}
// Parsing happens in three stages. In the first stage, we run the text against
// regular expressions that look for non-JSON patterns. We are especially
// concerned with '()' and 'new' because they can cause invocation, and '='
// because it can cause mutation. But just to be safe, we want to reject all
// unexpected forms.
// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.
// We split the first stage into 4 regexp operations in order to work around
cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}
// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.
// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace all backslash pairs with '@' (a non-JSON character). Second, we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
if (/^[\],:{}\s]*$/.test(text.replace(/\\./g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(:?[eE][+\-]?\d+)?/g, ']').
if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
// In the second stage we use the eval function to compile the text into a
// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.
j = eval('(' + text + ')');
j = eval('(' + text + ')');
// In the optional third stage, we recursively walk the new structure, passing
// each name/value pair to a filter function for possible transformation.
// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.
return typeof filter === 'function' ? walk('', j) : j;
}
return typeof reviver === 'function' ?
walk({'': j}, '') : j;
}
// If the text is not JSON parseable, then a SyntaxError is thrown.
throw new SyntaxError('parseJSON');
}
throw new SyntaxError('JSON.parse');
};
}();
}
}
}());
%>

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 30-09-09 16:01 $
$Revision: 2 $
$Modtime: 3-11-09 16:31 $
Status: 90%
@@ -286,54 +286,7 @@ function __rsProcessResultset()
{
%>
<script type="text/javascript">
function resizeWhenInIFrame()
{
if (parent.ExpandFrame) parent.ExpandFrame(window.name);
}
function hideInlineDetails(thisTR)
{
//thisTD.innerText = '<%=lcl_plusje%>';
//var thisTR = thisTD.parentNode;
$(thisTR).find("td.ia:contains('<%=lcl_minje%>')").text('<%=lcl_plusje%>');
var thisTABLE = thisTR.parentNode;
thisTABLE.deleteRow(thisTR.rowIndex);
thisTR.inlineVisible = false;
return false;
}
function hideAllInlineDetails(ID)
{
$("#"+ID).find("tr[inlineVisible=true]").each(function (i) { hideInlineDetails(this) });
resizeWhenInIFrame();
}
function showInlineDetails(thisTD, strfnURL)
{
window.event.cancelBubble = true; // Voorkom highlight regel
var thisTR = thisTD.parentNode;
if (thisTR.inlineVisible)
return hideInlineDetails(thisTR);
thisTD.innerText = '<%=lcl_minje%>';
thisTR.inlineVisible = true;
var thisTABLE = thisTR.parentNode;
var newRow = thisTABLE.insertRow(thisTR.rowIndex);
newRow.insertCell(0);
var theCell = newRow.insertCell(1);
theCell.innerHTML = '<%=lcl_loading%>';
theCell.colSpan=thisTR.children.length-2;
newRow.insertCell();
var url = eval(strfnURL).call(null, thisTR);
$.ajaxSetup({ cache: true });
$(theCell).load(url, resizeWhenInIFrame);
return false;
}
function doOutput(poutputmode)
{
@@ -369,118 +322,6 @@ function __rsProcessResultset()
}
function doDefault(theAction, multiOnce)
{
// Bij header en footer doDefault actie niet uitvoeren (tr header en footer heeft geen id)
if ($(event.srcElement).closest('tr')[0].id == "")
return;
if (multiOnce)
{
var rowArray = new Array();
rowArray[0] = $(event.srcElement).closest('tr')[0];
eval(theAction).call(null, rowArray);
}
else {
var row = $(event.srcElement).closest('tr')[0];
if (row && row.ROWKEY)
eval(theAction).call(null, row);
}
}
function doA(thisSPAN, theAction)
{
//$(thisSPAN).css('visibility', 'hidden'); // Verwijder de actie direct zodat dubbelklikken geen tweede aanroep kan veroorzaken.
window.event.cancelBubble = true; // This prevents the event from bubbling up to the onclick event handler for the line.
var actionSelect = document.getElementById("multiaction");
var multiOnce = false;
if (actionSelect)
{
for (var i = 0; i < actionSelect.length; i++)
{
if (actionSelect[i].value == theAction && actionSelect[i].multiOnce)
multiOnce = true;
}
}
if (multiOnce)
{
var rowArray = new Array();
rowArray[0] = $(thisSPAN).parents('tr')[0];
eval(theAction).call(null, rowArray);
}
else {
var row = $(thisSPAN).parents('tr')[0];
eval(theAction).call(null, row);
}
return false;
}
function getKeyString(rowArray)
{
var key;
var keyString = "";
for (var i = 0; i < rowArray.length; i++)
{
$(rowArray[i]).addClass('dirty');
key = rowArray[i].ROWKEY;
keyString += ((keyString == "") ? "" : ",") + key;
}
return keyString;
}
function doMulti(thisID)
{
var actionSelect = document.getElementById("multiaction");
if (actionSelect[actionSelect.selectedIndex].value == '') return;
var regels = $("#" + thisID + " .multiselect:checked");
if (regels.length > 0 && confirm(actionSelect[actionSelect.selectedIndex].text + " " + regels.length + " "+ '<%=lcl_lines%>' + "?"))
{
// Als multiOnce is gedefinieerd dan wordt de actie <20><>n keer aangeroepen waarbij een string met keys wordt meegegeven aan de actiefunctie
// anders wordt voor elke aangevinkte regel de actie aangeroepen waarbij elke keer <20><>n key wordt meegegeven aan de actiefunctie
var multiOnce = false;
var multiOnceArray = new Array();
var teller = 0;
$("#"+thisID+" .multiselect:checked").each(function()
{
teller++;
var rowData = eval('(' + this.parentElement.parentElement.ROWDATA + ')');
multiOnce = actionSelect[actionSelect.selectedIndex].multiOnce
if (multiOnce)
multiOnceArray.push(this.parentElement.parentElement);
else
eval(actionSelect[actionSelect.selectedIndex].value).call(null, this.parentElement.parentElement, true); // true voor noconfirm i.g.v. multi actie
});
if (multiOnce)
eval(actionSelect[actionSelect.selectedIndex].value).call(null, multiOnceArray, true); // true voor noconfirm i.g.v. multi actie
}
}
function ha(row) //HideActions, korte naam omdat deze bij elke tr wordt opgenomen
{
$(row).find(".ias").css('visibility', 'hidden');
}
function sa(row) //ShowActions, korte naam omdat deze bij elke tr wordt opgenomen
{
//if ($(row)[0].className.indexOf("dirty") == -1) // Als de regel dirty is dan de acties niet meer tonen
$(row).find(".ias").css('visibility', 'visible');
}
function checkAll(thisID, zelf)
{
$("#"+thisID+" .multiselect").each(function()
{
this.checked = zelf.checked;
});
}
function RSdefaultAction(thisID, defaultAction)
{
var row = $("#"+thisID)[0].getFirstSelectedRow();
$("#"+thisID)[0].clearSelection();
eval(defaultAction).call(null, row);
}
</script>
<%
@@ -622,7 +463,7 @@ function __rsProcessResultset()
// Dus eerst wijzigingen doorvoeren en dan pas opslaan (submit).
//appender += "<input type='submit' value='" + lcl_domulti + "' onclick='doMulti(\"" + this.ID + "\")'></label></div>";
//appender += "<input type='text' value='" + lcl_domulti + "' onclick='doMulti(\"" + this.ID + "\")'></label></div>";
appender += "<img onClick='javascript:doMulti(\"" + this.ID + "\");window.event.cancelBubble = true;' class='details' title='" + lcl_domulti + "' src='../pictures/go_button.jpg'></div>";
appender += "<img onClick='javascript:doMulti(\"" + this.ID + "\");window.event.cancelBubble = true;' class='details' title='" + lcl_domulti + "' src='../pictures/go_button.jpg'></div>";
htmlFoot += "<tr><td colspan=" + columns.length + (!isPrinting && !isExcel && anyMultiActions? 1 : 0) + ">" + appender + "</td></tr>";
}
@@ -705,8 +546,8 @@ function __rsStartTable()
{
with (this)
{
var html = "<DIV id='rsTable'>";
html += "<TABLE CELLSPACING='0' CELLPADDING='0' BORDER='1' "; // @TODO: geen harde styling?
var html = "<DIV id='rstable'>";
html += "<TABLE CELLSPACING='0' CELLPADDING='0' ";
if (isPrinting == true) {
html += " isPrinting='TRUE' ";
@@ -725,15 +566,16 @@ function __rsStartTable()
// PF vervangen: html += " CLASS='" + tableClassName + (this.actions.length? "" : " sortable") + "' ";
// MGE sortable wordt later gezet als ook bekend is of alle regels zijn getoond.
html += " CLASS='" + tableClassName + "' ";
for (var i = 0; i < actions.length; i++)
{
if (actions[i].isDefault)
if (!isPrinting && !isExcel) {
for (var i = 0; i < actions.length; i++)
{
html += "style='cursor:pointer' onclick='doDefault(\"" + actions[i].action + "\", " + actions[i].multiOnce + ")' ";
break;
if (actions[i].isDefault)
{
html += "style='cursor:pointer' onclick='doDefault(\"" + actions[i].action + "\", " + actions[i].multiOnce + ")' ";
break;
}
}
}
html += ">";
//html = html_filter + html;
@@ -755,7 +597,7 @@ function __rsMakeTableHeader(oRs, oRsFlex, anyMultiActions)
// == zijn er multi ACTIONS?
if (anyMultiActions)
{
html += "<th><input type=checkbox onclick='checkAll(\"" + ID + "\", this)'></th>";
html += "<th class='sorttable_nosort'><input type=checkbox onclick='checkAll(\"" + ID + "\", this)'></th>";
}
if (inlineDetails)
{
@@ -887,7 +729,7 @@ function __rsMakeTableRow(oRs, oRsFlex, cnt, anyMultiActions, noFlexResult)
ttl = " title ='" + escape2(ttl) + "'"
else
ttl = "";
appender += "<td class='ia' onclick='return showInlineDetails(this, \"" + inlineDetails+"\")'" + ttl + ">"+lcl_plusje+"</td>";
appender += "<td class='inlinedetails closed' onclick='return showInlineDetails(this, \"" + inlineDetails+"\")'" + ttl + ">&nbsp;</td>";
}
else
appender += "<td>&nbsp;</td>";
@@ -901,8 +743,15 @@ function __rsMakeTableRow(oRs, oRsFlex, cnt, anyMultiActions, noFlexResult)
if (rowActionEnabler)
var validator = rowActionEnabler(oRs);
else
var validator = null;
for (var i = 0; i < actions.length; i++)
{
if (actions[i].isDefault)
continue; // niet ook nog inline
if (actions[i].enabler && validator && !validator[actions[i].enabler])
continue; // niet enabled
var val = "";
var valsep = ""; // of een image waarop de jook kan klikken, of een separator
if (actions[i].image)
@@ -912,17 +761,16 @@ function __rsMakeTableRow(oRs, oRsFlex, cnt, anyMultiActions, noFlexResult)
val = imgval + ">&nbsp;";
valsep = "";
} else {
if (i > 0)
if (actionsDiv != "")
{
valsep = " | ";
val = "";
}
}
if (!actions[i].enabler || (rowActionEnabler && validator[actions[i].enabler]))
{
val = valsep +"<span class='ia' onclick='doA(this, \"" + actions[i].action + "\")'>" + val;
actionsDiv += val + actions[i].caption + "</span>";
}
val = valsep +"<span class='ia' onclick='doA(this, \"" + actions[i].action + "\")'>" + val;
actionsDiv += val + actions[i].caption + "</span>";
}
}
for (i = 0; i < columns.length; i++)
@@ -950,6 +798,7 @@ function __rsMakeTableRow(oRs, oRsFlex, cnt, anyMultiActions, noFlexResult)
if (columns[i].action)
val = '<span style="cursor:pointer" onclick="' + action + '">' + val + '</span>';
if (val == null) val = '&nbsp;';
val = String(val).replace(/\n/g,'<br>');
// Tooltip voor de kolom
var tooltip = columns[i].tooltip == null ? null : columns[i].tooltip(oRs);

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 17-09-09 15:16 $
$Revision: 2 $
$Modtime: 3-11-09 11:06 $
File: save2db.inc
Description: functions to save records to database
@@ -8,7 +8,6 @@
Note:
*/
%>
<% Response.Expires = 0; %>
<!-- #include file="../Shared/datetime.inc" -->
<%
@@ -21,14 +20,16 @@
datetime, Inclusief tijd
number,
varchar Quotes worden escaped
bool "on" wordt 1, "" wordt "null"
check "on" wordt 1, "" wordt "null". Let op: moet aangemaakt zijn met iface.inc/CHECKBOX
time millisecs sinds middernacht
sql voorgedefinieerd, wordt ongewijzigd gebruikt
(TODO: "time" die alleen tijddeel bijwerkt, "float" die komma goed doet etc)
len: varchar wordt hier op afgekapt
-- een van de volgende drie (verplicht) --
frm: Request.Form veld. Als niet meegesubmit dan ook niet opgeslagen!
qrs: (nog niet ondersteund!) vergelijk frm maar dan voor QueryString
val: kant en klare waarde, zelf berekend
len: varchar wordt hier op afgekapt
params: optioneel. noWhere plakt er niet het woord WHERE achter
result: een sqlstatement met alvast het woord WHERE er achter (opdat het het niet vergeten)
(eventueel params.noWhere)
@@ -92,9 +93,20 @@ function _buildFields(fields, params)
var val = field.val;
if (field.frm)
{
if (Request.Form(field.frm).count==0)
continue;
var val = Request.Form(field.frm)(1);
if (field.typ=="check")
{
// Zie iface.inc/CHECKBOX: we hebben een hidden
// field has_xxxx toegevoegd
if (Request.Form("has_" + field.frm).count==0)
continue;
var val = (Request.Form(field.frm).count==1);
}
else
{
if (Request.Form(field.frm).count==0)
continue;
var val = Request.Form(field.frm)(1);
}
}
if (field.seq)
{
@@ -157,6 +169,14 @@ function _buildFields(fields, params)
}
break;
}
case "check":
{
if (val)
tupel.sql = " 1"
else
tupel.sql = " NULL"
break;
}
case "date":
case "datetime":
{

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 28-09-09 22:45 $
$Revision: 2 $
$Modtime: 3-11-09 15:01 $
File: selector.inc
Status: 90%
@@ -24,9 +24,10 @@
emptyOption: De tekst voor een lege waarde bovenaan in de lijst
?Bij 'multi' doet hij dat alleen bij een lege listbox
initEmpty Moet de lege waarde altijd geselecteerd zijn (meestal voor filters) of kies een single optie altijd gelijk
required Voegt de class 'required' toe aan het veld
Note: de combinatie van readonly en multi is (nog) niet ondersteund
*/ %>
<!-- #include file ="../shared/escape.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"], js: [] });
@@ -63,15 +64,19 @@ function FCLTselector(fieldName, sql, params)
} %>
<nobr>
<% if (!params.readonly) {
// TODO: class van fld overnemen voor de width is niet helemaal jofel
if (params.required) { %><div id='req_<%=fieldName%>' class='fld<%=fieldName%> required'><% }
%>
<select class="fld<%=fieldName%><%=params.readonly? " disabled" : ""%>"
<select class="fld<%=fieldName%><%=params.required? " required" : ""%><%=params.readonly? " disabled" : ""%>"
name="<%=fieldName%><%=params.readonly? "_ro" : ""%>"
id="<%=params.id%><%=params.readonly? "_ro" : ""%>"
<%=params.multi? " multiple" : ""%>
<%=params.size? " size="+params.size : ""%>
<%=params.onChange? " onchange='" + escape2(params.onChange) + "'" : "" /* LET OP DAT HTML-HAAKJE HIERACHTER */ %>>
<% // Indien geen initi<74>le waarde is meegegeven, dan wordt standaard -1 genomen.
if (!params.initKey)
if (typeof params.initKey == "undefined") // pas op: activiteit_key is wel eens 0
params.initKey = -1;
// Indien multi dan kan initKey een string van waarden bevatten
@@ -92,14 +97,15 @@ function FCLTselector(fieldName, sql, params)
oRs.MoveFirst();
}
// TODO: als required en initKey dan hoeft emptyoption er natuurlijk niet bij zou ik zeggen
if (((params.emptyOption || params.emptyOption == "") && !justone) || params.initEmpty)
{
%><option value="-1" <%=valueInArray(params.initKey, -1, params.multi)? "selected" : ""%>><%=params.emptyOption? params.emptyOption : ""%></option><%
%><option value="-1" <%=params.required?" class='required'":""%> <%=valueInArray(params.initKey, -1, params.multi)? " selected" : ""%>><%=params.emptyOption? params.emptyOption : ""%></option><%
}
while (!oRs.eof)
{
%><option value="<%=escape2(oRs(0).Value)%>" <%=valueInArray(params.initKey, oRs(0).Value, params.multi) || (justone && !params.initEmpty)? "selected" : ""%><%
%><option value="<%=escape2(oRs(0).Value)%>" <%=valueInArray(params.initKey, oRs(0).Value, params.multi) || (justone && !params.initEmpty)? " selected " : ""%><%
if (params.extraParamValue)
{
var extraPV = params.extraParamValue.split(",");
@@ -115,7 +121,9 @@ function FCLTselector(fieldName, sql, params)
}
%>
</select>
<% } else {
<%
if (params.required) { %></div><% }
} else {
// we moeten hier wat ingewikkeld doen omdat we wel de key hebben van de te tonen waarde, maar niet de waarde zelf
// NB: in het geval van een readonly/multi listbox toont-ie maar 1 waarde.
var initstr = "";
@@ -137,26 +145,12 @@ function FCLTselector(fieldName, sql, params)
<%
}
%>
<%=params.moreinfo ? "<img class='details' src='" + rooturl + "/appl/Pictures/listdetail.gif' onclick='selectdetails_" + fieldName + "()'>" : ""%>
<%=params.moreinfo && params.moreinfo != ""? "<img class='details' src='" + rooturl + "/appl/Pictures/detail.png' onclick='" + params.moreinfo + "'>" : ""%>
</nobr>
<%
if (params.label)
{ %>
</td>
<%
}
if (params.moreinfo)
{ %>
<script type="text/javascript">
function selectdetails_<%=fieldName%> ()
{
if ($('#<%=fieldName%>')[0].value != -1) {
FcltMgr.openDetail("<%=rooturl%>/appl/fac/fac_list.asp?key=" + $('#<%=fieldName%>')[0].value, $('#<%=fieldName%>')[0].value);
} else {
alert("Wat wil je nou?");
}
}
</script>
<%
}
}

View File

@@ -1,6 +1,6 @@
<% /*
$Revision: 1 $
$Modtime: 22-07-09 14:40 $
$Revision: 2 $
$Modtime: 29-10-09 13:26 $
*/ %>
<!-- #include file="../Shared/escape.inc"-->
<%
@@ -140,7 +140,7 @@ function STR2Stream(xmlstr, xslfile, Stream, mode)
xslproc = xslt.createProcessor();
xslproc.input = xmldoc;
xslproc.addParameter("mode", mode);
Response.Charset = "iso-8859-15";
Response.Charset = "iso-8859-15"; // Want zo staat het in de default.xsl?
xslproc.output = Stream;
xslproc.transform();
}