Files
Facilitor/APPL/Shared/contactpersoonselector.inc
Jos Groot Lipman f829ca5743 Merge 2023.1 RC2 patches
svn path=/Website/trunk/; revision=59150
2023-02-14 14:23:07 +00:00

176 lines
8.6 KiB
C++

<% /*
$Revision$
$Id$
File: contactpersoonselector.inc
Description: Algemene interface functie om een contactpersonen suggestbox te maken
Deze moet je kunnen includen en aanroepen.
Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de contactpersoonnaam bevat (contactpersoonnaam veld)
en een hidden keyveld die de key van de contactpersoon bevat (contactpersoonkey veld).
Het contactpersoonnaam veld heeft geen naam en wordt niet meegesubmit.
Het contactpersoonkey veld heeft een naam en wordt meegesubmit.
Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
parameters: fieldName: veldnaam van het contactpersoonkey veld. Dit veld wordt gesubmit.
objectName: naam van het suggest object dat wordt aangemaakt.
params: object met meegegeven parameters.
contactpersoonKey: initiële key waarde van de contactpersoon die ingevuld moet worden.
label: label dat voor het contactpersoonnaam veld wordt weergegeven.
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
onChange: onchange op het textveld.
extraParamField: veldnaam voor een extra hidden parameter veld.
locatiekey Alleen uitvoerende tonen die op deze locatie leveren.
gebouwkey Alleen uitvoerende tonen die in dit gebouw leveren.
aanvragerkey Alleen contactpersonen van de uitvoerende tonen die voldoen aan de bedrijfdienstlocatie "Voor opdrachtgever/bedrijf" voorwaarden
isBad: boolean die aangeeft dat het contactpersoonnaam veld als ongeldig
en leeg weergegeven moet worden (true|false(default)).
readonly: geeft aan of het contactpersoonnaam 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 suggest veld. Klikken hierop geeft informatie
over de geselecteerde waarde
suppressEmpty: niets tonen als suppressEmpty en readonly
*/ %>
<!-- #include file="./Suggest/contactpersoonFilter.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
function FCLTcontactpersoonselector(fieldName, objectName, params)
{
if (typeof params == "undefined") params = {};
if (!(params.contactpersoonKey && params.contactpersoonKey > 0) && params.readonly && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : L("lcl_select_contactpersoon")));
var lcontactpersoonName = "";
// Bijvoorbeeld params.perslidKey ook meegeven aan getFiltClauseStdmelding.
// params.perslidKey kan ook meegegeven worden met urlAdd zodat de waarde uit een veld wordt gehaald
if (params.urlAdd)
{
for (i in params.urlAdd)
{
if (params.urlAdd[i].init)
params[params.urlAdd[i].urlParam] = params.urlAdd[i].init;
}
}
var lextraInit = "";
if (params.contactpersoonKey && params.contactpersoonKey > 0)
{
var filtClause = getFiltClauseContactpersoon(params.filtercode);
sql = "SELECT cp.prs_contactpersoon_key"
+ ", " + S("prs_contactpers_string") + " naam"
+ ", b.prs_bedrijf_naam"
+ " FROM prs_contactpersoon cp"
+ " , prs_bedrijf b"
+ " WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key"
+ " AND cp.prs_contactpersoon_key = " + params.contactpersoonKey
+ filtClause;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
lcontactpersoonName = oRs("naam").value;
lextraInit = oRs("prs_bedrijf_naam").value;
}
oRs.Close(); // close the recordset
}
// Bouw de url voor de contactpersoons query op
var contactpersoonQueryUrl = rooturl+"/appl/shared/suggest/SuggestContactpersoon.asp"
+ ((typeof params.autlevel != "undefined")? "?autlevel=" + params.autlevel : "?autlevel=-1")
+ (params.locatiekey? "&loc_key=" + params.locatiekey : "")
+ (params.gebouwkey? "&bld_key=" + params.gebouwkey : "")
+ (params.aanvragerkey? "&aanvrager_key=" + params.aanvragerkey : "")
+ (params.filtercode? "&filtcode=" + params.filtercode : "");
if (params.label)
{ %><tr>
<td class="label">
<label class='selector' for="<%=fieldName%>"><%=params.label%></label>
<%=params.moreinfo && !params.readonly ? "<span class='labelextra'><span class='details' onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'>" + I("fa-info-circle") + "</span></span>" : ""%>
</td>
<td class="nowrap">
<%
}
if (params.readonly)
{ %>
<span id="<%=fieldName%>_show" class="fld<%=params.moreinfo ? " details" : ""%>"
<%=(params.moreinfo ? " onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'" : "")%>>
<%=safe.html(lcontactpersoonName)%>
</span>
<%}
else
{ %>
<input id="<%=fieldName%>_show" class="fld <%=params.required? " required" : ""%>" value="<%=safe.htmlattr(lcontactpersoonName)%>" placeholder="<%=safe.htmlattr(lwhenEmpty)%>"
<%=params.onChange ? " sgonChange='" + params.onChange + "'" : ""%>>
<%=(params.moreinfo && !params.label ? "<span class='details' onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'>" + I("fa-info-circle") + "</span>" : "")%>
<%} %>
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.contactpersoonKey%>">
<% 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>
<%
}
%>
<script type="text/javascript">
function <%=objectName%>_contactpersoondetails(fieldName)
{
var pkey=$('#'+fieldName)[0].value;
var pname=$('#'+fieldName+'_show')[0].value;
if (pkey != -1) {
FcltMgr.openDetail("appl/prs/prs_contactpersoon.asp?cps_key=" + pkey, pname);
} else {
// FcltMgr.alert("Kies eerst een persoon?");
}
}
</script>
<%
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">
$(function()
{
<%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
queryField: $("#<%=fieldName%>_show")[0],
queryUrl: "<%=contactpersoonQueryUrl%>",
initKey: <%=params.contactpersoonKey? params.contactpersoonKey : -1%>,
keyField: $("#<%=fieldName%>")[0],
highlightDescript: true
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
<%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
<%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
<%=params.isBad? ", isBad: true": ""%>
<%=params.readonly? ", fieldReadonly: true": ""%>
<%=params.ismodal? ", fieldModal: true": ""%>
});
if (FcltMgr.getCaller())
{
$("#<%=fieldName%>_caller").show();
}
});
</script>
<%
}
}
%>