Files
Facilitor/APPL/Shared/kostenplaatsselector.inc
Jos Groot Lipman b4dd7daf63 FSN#38631 Suggestvelden eigen icoon
svn path=/Website/trunk/; revision=31806
2016-12-03 09:46:47 +00:00

236 lines
11 KiB
C++

<% /*
$Revision$
$Id$
File: kostenplaatsselector.inc
Description: Algemene interface functie om een kostenplaats suggestbox te maken
Deze moet je kunnen includen en aanroepen.
Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de kostenplaatsen bevat (afdelingnaam veld)
en een hidden keyveld die de key van de kostenplaats bevat (kostenplaatskey veld).
Het kostenplaatsnaam veld heeft geen naam en wordt niet meegesubmit.
Het kostenplaatskey veld heeft een naam en wordt meegesubmit.
Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
parameters: fieldName: veldnaam van het kostenplaatskey veld. Dit veld wordt gesubmit.
objectName: naam van het suggest object dat wordt aangemaakt.
params: object met meegegeven parameters.
kostenplaatsKey: initiële key waarde van de kostenplaats die ingevuld moet worden.
label: label dat voor het kostenplaatsnaam veld wordt weergegeven.
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
onChange: onchange op het textveld.
trclass: wordt ook op de <tr> gezet
extraParamField: veldnaam voor een extra hidden parameter veld.
isBad: boolean die aangeeft dat het kostenplaats veld als ongeldig
en leeg weergegeven moet worden (true|false(default)).
readonly: geeft aan of het kostenplaats veld readonly weergegeven moet worden (true|false(default)).
moreinfo: unsupported
suppressEmpty Onderdrukt het veld helemaal indien EN readonly EN leeg
inzage Alleen de kostenplaatsen tonen waarvoor je inzage rechten hebt.
mine Kostenplaatsen waarvan ik de budgethouder van de kostenplaatsgroep ben, ook tonen.
checkInit De initiële waarde (key) moet gecheckt wordten of deze wel gekozen mag/kan worden (heb ik de rechten).
*/ %>
<!-- #include file="./Suggest/kostenplaatsFilter.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
function FCLTkostenplaatsselector(fieldName, objectName, prs_key, params)
{
if (!(params.kostenplaatsKey && params.kostenplaatsKey > 0) && params.readonly && params.suppressEmpty) return;
if (typeof params=="undefined") params = {};
if (!prs_key) prs_key = user_key;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : L("lcl_select_kostenplaats")));
var lkostenplaatsName = (device.test(device.supportsPlaceholder) && !params.readonly ? "" : lwhenEmpty);
var lextraInit = "";
if (params.kostenplaatsKey && params.kostenplaatsKey > 0)
{
//var extraInf = ", 'Extra' extra";
var extraInf = getExtraInfKostenplaats(params.extracode);
if (params.checkInit)
{
var filt_params = { prs_key: prs_key,
//showeigenkp: params.showeigenkp, // Is een urlParam. Wordt nog niet in combinatie met checkInit gebruikt.
inzage: params.inzage,
mine: params.mine,
extraInf: extraInf
};
var filtClause = getFiltClauseKostenplaats(params.filtercode, filt_params);
}
else
var filtClause = {from: "", where: ""};
var sql = "SELECT k.prs_kostenplaats_key kpkey"
+ " , " + S("prs_kpn_string") + " kpstring"
+ " , (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
+ " , UPPER(" + S("prs_kpn_string") + ") upperkpstring"
+ extraInf
+ " FROM prs_kostenplaats k"
+ filtClause.from
+ " WHERE k.prs_kostenplaats_key = " + params.kostenplaatsKey
+ (params.readonly ? "" : " AND k.prs_kostenplaats_verwijder IS NULL ")
+ filtClause.where;
var oRs = Oracle.Execute(sql);
if (!oRs.eof) {
lkostenplaatsName = oRs("kpstring").Value;
lextraInit = oRs("extra").Value
}
oRs.close();
}
var prsInUrlAdd = false;
var prsInUrlField = "";
if (!params.readonly)
{
if (params.urlAdd)
{
// Initiele urlAddTxt bepalen
var urlAddTxt = "[";
for (var i = 0; i < params.urlAdd.length; i++)
{
// Als kostenklant initieel niet is aangevinkt (kptoggle.ischecked is false) (en urlParam = "prs_key")
// dan voor het veld (field) fieldName + "_userkey" nemen (user kostenplaatsen).
urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam
+ "\", field: \"" + (params.urlAdd[i].urlParam == "prs_key" && params.kptoggle && !params.kptoggle.ischecked? fieldName + "_userkey" : params.urlAdd[i].field) + "\" }";
if (params.urlAdd[i].urlParam == "prs_key")
{
prsInUrlAdd = true;
prsInUrlField = params.urlAdd[i].field;
}
}
urlAddTxt += "]"
}
else if (params.kptoggle)
{ // Geen urlAdd meegegeven maar wel een kostenklant checkbox, dan kan prs_key meegekregen vaste prs_key zijn of user_key
params.urlAdd = [{ urlParam: "prs_key", field: fieldName + "_userkey" }];
var urlAddTxt = "[{ urlParam: \"" + params.urlAdd[0].urlParam + "\", field: \"" + params.urlAdd[0].field + "\" }]";
}
}
// Bouw de url voor de kostenplaatsquery op
// Geen autorisatie bij kostenplaatsen (prs_kostenplaats)
var kpQueryUrl = rooturl + "/appl/shared/suggest/SuggestKostenplaats.asp?a=1"
+ (!prsInUrlAdd && !params.kptoggle? "&prs_key=" + prs_key : "")
+ (params.filtercode? "&filtcode=" + params.filtercode : "")
+ (params.showall? "&showall=" + params.showall : "")
+ (params.extracode? "&extracode=" + params.extracode : "")
+ (params.inzage? "&inzage=1" : "")
+ (params.mine? "&mine=1" : "");
if (params.label)
{
%><tr <%=params.trclass? "class='" + params.trclass + "'":""%>><td class="label">
<label class='selector' for="<%=fieldName%>"><%=params.kptoggle? params.label : L("lcl_account")%>:</label>
<%
if (!params.kptoggle) {
%>
</td>
<td>
<%
}
}
// no label
if (params.kptoggle)
{
%><span class='labelextra'><%
CHECKBOX("fldmldkostenklant",
"kostenklant",
params.kptoggle.ischecked,
{ html: params.kptoggle && !params.readonly? " onClick='onChangeKk();" + (params.kptoggle.onChange && !params.readonly? params.kptoggle.onChange : "") + "'" : "",
readonly: params.kptoggle.readonly,
hidden: params.kptoggle.hidden
});
%>
<input type="hidden" id="<%=fieldName%>_userkey" value="<%=user_key%>">
</span>
<%
if (params.label) {
%>
</td>
<td>
<%
}
}
// Noot: dit hierboven is een wat lousy nestingsconstructie om te ondersteunen
// [label vinkje][veld] of [vinkje veld] of [label][veld] of [veld]
if (params.readonly) { %>
<span id="<%=fieldName%>_show" class="readonly fldkp">
<%=safe.html(lkostenplaatsName)%>
</span>
<% } else { %>
<input id="<%=fieldName%>_show" class="fldkp<%=!params.readonly&&params.required? " required" : ""%>" value="<%=safe.htmlattr(lkostenplaatsName)%>" placeholder="<%=lwhenEmpty%>"
<%=params.readonly? " readonly tabindex=-1" : ""%>
<%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'" : ""%>>
<% } %>
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.kostenplaatsKey%>">
<%
if (params.extraParamField)
{ /* het extra parameter veld wordt door suggest object gevuld */%>
<input type="hidden" id="<%=params.extraParamField%>" name="<%=params.extraParamField%>" value="<%= safe.htmlattr(lextraInit)%>">
<%
}
if (!params.readonly)
{
%>
<script type="text/javascript">
<% if (params.kptoggle)
{
if (params.urlAdd)
{ %>
function onChangeKk()
{
// De te gebruiken prs_key veranderd als kostenklant is aangepast. Gebruik meegegeven prs_key (AAN) of user_key (UIT)
if ($("#kostenklant").prop("checked"))
{ // Kostenklant UIT => AAN: Gebruik meegegeven prs_key veld.
<%=objectName%>.reloadUrlAdd([{ urlParam: "prs_key", field: "<%=prsInUrlField%>" }])
}
else
{ // Kostenklant AAN => UIT: Gebruik user_key veld.
<%=objectName%>.reloadUrlAdd([{ urlParam: "prs_key", field: "<%=fieldName%>_userkey" }])
}
}
<% }
else // !params.urlAdd
{ %>
function onChangeKk()
{
// De te gebruiken prs_key veranderd als kostenklant is aangepast. Gebruik meegegeven prs_key (AAN) of user_key (UIT)
if ($("#kostenklant").prop("checked"))
{ // Kostenklant UIT => AAN: Gebruik meegegeven prs_key.
$("<%=fieldName%>_userkey").val(<%=prs_key%>);
}
else
{ // Kostenklant AAN => UIT: Gebruik user_key.
$("<%=fieldName%>_userkey").val(<%=user_key%>);
}
}
<% }
} %>
jQuery(document).ready( function()
{
<%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
queryField: $("#<%=fieldName%>_show")[0],
queryUrl: "<%=kpQueryUrl%>",
initKey: <%=params.kostenplaatsKey? params.kostenplaatsKey : -1%>,
icon: "<%= S("currency_icon") %>",
keyField: $("#<%=fieldName%>")[0]
<%=params.urlAdd || params.kptoggle? ", urlAdd: " + urlAddTxt : ""%>
<%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
<%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
<%=params.isBad? ", isBad: true": ""%>
});
}
)
</script>
<%
}
if (params.label)
{ %>
</td></tr>
<%
}
}
%>