203 lines
9.8 KiB
C++
203 lines
9.8 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: persoonselector.inc
|
|
Description: Algemene interface functie om een personen suggestbox te maken
|
|
Deze moet je kunnen includen en aanroepen.
|
|
Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de persoonnaam bevat (persoonnaam veld)
|
|
en een hidden keyveld die de key van de persoon bevat (persoonkey veld).
|
|
Het persoonnaam veld heeft geen naam en wordt niet meegesubmit.
|
|
Het persoonkey veld heeft een naam en wordt meegesubmit.
|
|
Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
|
|
parameters: fieldName: veldnaam van het persoonkey veld. Dit veld wordt gesubmit.
|
|
objectName: naam van het suggest object dat wordt aangemaakt.
|
|
params: object met meegegeven parameters.
|
|
perslidKey: initiële key waarde van de persoon die ingevuld moet worden.
|
|
label: label dat voor het persoonnaam 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.
|
|
autlevel: PRS autorisatie niveau voor de query die gebruikt wordt voor de suggest.
|
|
extraParamField: veldnaam voor een extra hidden parameter veld.
|
|
isBad: boolean die aangeeft dat het persoonnaam veld als ongeldig
|
|
en leeg weergegeven moet worden (true|false(default)).
|
|
readonly: geeft aan of het persoonnaam veld readonly weergegeven moet worden (true|false(default)).
|
|
filtercode: filtercode van extra filter clausule voor initiële waarde.
|
|
moreinfo: geeft een extra informatie button achter het label veld of achter de suggest als er geen label is.
|
|
Klikken hierop geeft informatie over de geselecteerde waarde.
|
|
suppressEmpty Onderdrukt het veld helemaal indien EN readonly EN leeg.
|
|
suppressNoValues Onderdrukt het veld helemaal indien er geen waarden zijn.
|
|
noBad Als perslid_key niet gevonden binnen filter dan veld leeglaten
|
|
(in plaats van standaard gedrag: naam wel opzoeken maar 'Bad' maken).
|
|
*/ %>
|
|
|
|
<!-- #include file="./Suggest/persoonFilter.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: ["iface.js"] });
|
|
|
|
function FCLTpersoonselector(fieldName, objectName, params)
|
|
{
|
|
if (params.suppressNoValues)
|
|
{ // Check of er wel waarden zijn.
|
|
var filtClause = getFiltClausePersoon(params.filtercode, params);
|
|
var extraInf = getExtraInfPersoon(params.extracode);
|
|
sql = "SELECT " + S("prs_pers_string") + " naam"
|
|
+ extraInf.selectstr
|
|
+ " FROM prs_perslid p"
|
|
+ ", prs_v_afdeling d"
|
|
+ extraInf.fromstr
|
|
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key"
|
|
+ filtClause
|
|
+ extraInf.wherestr;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.Eof)
|
|
return; // Er zijn geen waarden
|
|
}
|
|
if (!(params.perslidKey && params.perslidKey > 0) && params.readonly && params.suppressEmpty) return;
|
|
if (typeof params=="undefined") params = {};
|
|
|
|
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : L("lcl_select_persoon")));
|
|
var lperslidName = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
|
|
|
|
var lextraInit = "";
|
|
var isBad = false;
|
|
if (params.perslidKey && params.perslidKey > 0)
|
|
{
|
|
//var filt_params = {};
|
|
var filt_params = params // Bijvoorbeeld params.perslidKey ook meegeven aan getFiltClausePersoon. params.perslidKey kan ook meegegeven worden met urlAdd zodat de waarde uit een veld wordt gehaald;
|
|
if (params.urlAdd)
|
|
{
|
|
for (i in params.urlAdd)
|
|
{
|
|
filt_params[params.urlAdd[i].urlParam] = params.urlAdd[i].init;
|
|
}
|
|
}
|
|
var filtClause = getFiltClausePersoon(params.filtercode, filt_params);
|
|
var extraInf = getExtraInfPersoon(params.extracode);
|
|
// Is er een initiele waarde meegegeven? Zoek dan de omschrijving erbij
|
|
|
|
sql = "SELECT " + S("prs_pers_string") + " naam"
|
|
+ extraInf.selectstr
|
|
+ " FROM prs_perslid p"
|
|
+ ", prs_v_afdeling d"
|
|
+ extraInf.fromstr
|
|
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key"
|
|
+ " AND p.prs_perslid_key = " + params.perslidKey
|
|
+ filtClause
|
|
+ extraInf.wherestr;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.Eof) // Misschien (tegenwoordig) uit scope?
|
|
{ // Probeer dan maar zonder extra 'where's
|
|
isBad = true;
|
|
sql = "SELECT " + S("prs_pers_string") + " naam"
|
|
+ extraInf.selectstr
|
|
+ " FROM prs_perslid p"
|
|
+ ", prs_v_afdeling d"
|
|
+ extraInf.fromstr
|
|
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key"
|
|
+ " AND p.prs_perslid_key = " + params.perslidKey;
|
|
var oRs = Oracle.Execute(sql);
|
|
}
|
|
if (isBad && params.noBad)
|
|
{
|
|
isBad = false;
|
|
params.perslidKey = -1;
|
|
}
|
|
else
|
|
{
|
|
lperslidName = oRs("naam").value;
|
|
lextraInit = oRs("extra").value;
|
|
}
|
|
oRs.Close();
|
|
}
|
|
|
|
// Bouw de url voor de persoons query op
|
|
var personQueryUrl = rooturl+"/appl/shared/suggest/SuggestPerslid.asp"
|
|
+ ((typeof params.autlevel != "undefined")? "?autlevel=" + params.autlevel : "?autlevel=-1")
|
|
+ (params.perslidKey>0? "&perslidKey=" + params.perslidKey : "") // Kan ook met urlAdd meegegeven worden
|
|
+ (params.extracode? "&extracode=" + params.extracode : "")
|
|
+ (params.filtercode? "&filtcode=" + params.filtercode : "")
|
|
+ (params.disc_key? "&disc_key=" + params.disc_key : "");
|
|
if (params.label)
|
|
{ %><tr <%=params.trclass?"class='"+params.trclass+"'":""%>>
|
|
<td class="label">
|
|
<label class='selector' for="<%=fieldName%>"><%=params.label%>:</label>
|
|
<%=params.moreinfo && !params.readonly ? "<span class='labelextra'><img alt='' class='details' src='" + rooturl + "/appl/Pictures/detail.png' onclick='iface.persoonDetails(\"" + fieldName + "\")'></span>" : ""%>
|
|
</td>
|
|
<td>
|
|
<%
|
|
}
|
|
if (params.readonly) { %>
|
|
<span id="<%=fieldName%>_show" class="readonly fldpers<%=params.moreinfo ? " details" : ""%>"
|
|
<%=params.moreinfo ? " onclick='iface.persoonDetails(\"" + fieldName + "\", \"" + (params.info||"") + "\")'" : "" %>>
|
|
<%=safe.html(lperslidName)%>
|
|
</span>
|
|
<% } else { %>
|
|
<input id="<%=fieldName%>_show" class="fldpers<%=params.required? " required" : ""%>" value="<%=safe.htmlattr(lperslidName)%>" placeholder="<%=lwhenEmpty%>"
|
|
<%=params.onChange ? " sgonChange='" + params.onChange + "'" : ""%>>
|
|
<% } %>
|
|
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.perslidKey%>">
|
|
<%=params.moreinfo && !params.readonly && !params.label? "<img alt='' class='details' src='" + rooturl + "/appl/Pictures/exclamation.png' onclick='iface.persoonDetails(\"" + fieldName + "\")'>" : ""%>
|
|
|
|
<% if (!params.readonly) { %>
|
|
<img alt='' class='details' id='<%=fieldName%>_caller'
|
|
style="display:none"
|
|
onmouseover="iface.showCaller(this)"
|
|
src='<%=rooturl%>/appl/Pictures/person.png' onclick='iface.setCaller(<%=objectName%>)'>
|
|
<% }
|
|
|
|
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.label)
|
|
{ %>
|
|
</td>
|
|
</tr>
|
|
<%
|
|
}
|
|
if (!params.readonly)
|
|
{
|
|
if (params.urlAdd)
|
|
{
|
|
var urlAddTxt = "[";
|
|
for (var i = 0; i < params.urlAdd.length; i++)
|
|
{
|
|
urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam + "\", field: \"" + params.urlAdd[i].field + "\" }";
|
|
}
|
|
urlAddTxt += "]"
|
|
}
|
|
%>
|
|
<script type="text/javascript">
|
|
jQuery(document).ready( function()
|
|
{
|
|
<%=objectName%> = new Suggest(
|
|
{ objectName: "<%=objectName%>",
|
|
queryField: $("#<%=fieldName%>_show")[0],
|
|
queryUrl: "<%=personQueryUrl%>",
|
|
initKey: <%=params.perslidKey? params.perslidKey : -1%>,
|
|
noJustOne: true, // Controleer niet of er maar één waarde is die geselecteerd moet worden.
|
|
keyField: $("#<%=fieldName%>")[0]
|
|
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
|
|
<%=params.extraParamField? ", extraParamField: " + "$(\"#" + params.extraParamField + "\")[0]" + "": ""%>
|
|
<%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
|
|
<%=params.isBad? ", isBad: true": ""%>
|
|
<%=params.readonly? ", fieldReadonly: true": ""%>
|
|
// ,highlightDescript: true
|
|
});
|
|
if (FcltMgr.getCaller())
|
|
{
|
|
$("#<%=fieldName%>_caller").show();
|
|
}
|
|
<% if (isBad) { %>
|
|
<%=objectName%>.isBad();
|
|
<% } %>
|
|
});
|
|
</script>
|
|
<%
|
|
}
|
|
}
|
|
%> |