200 lines
9.9 KiB
C++
200 lines
9.9 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: stdmeldingselector.inc
|
|
Description: Algemene interface functie om een standaardmelding suggestbox te maken
|
|
|
|
parameters: fieldName: veldnaam van het key veld. Dit veld wordt gesubmit.
|
|
objectName: naam van het suggest object dat wordt aangemaakt.
|
|
params: object met meegegeven parameters.
|
|
stdmelding_key: initiële key waarde van de stdmelding die ingevuld moet worden.
|
|
autfunctionKey: verplicht fac_function_key
|
|
perslidKey: Verplicht: persoon waarvoor melding is, Kan ook met urlAdd meegegeven worden. De waarden wordt dan uit een veld gehaald.
|
|
label: label dat voor het veld wordt weergegeven.
|
|
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
|
|
ins_key: alleen als melding op dit object mogelijk is.
|
|
onChange: onchange op het textveld.
|
|
extraParamField: veldnaam voor een extra hidden parameter veld.
|
|
isBad: boolean die aangeeft dat het veld als ongeldig
|
|
en leeg weergegeven moet worden (true|false(default)).
|
|
readonly: geeft aan of het veld readonly weergegeven moet worden (true|false(default)).
|
|
TODO: Autoselect als er maar eentje is
|
|
*/ %>
|
|
|
|
<!-- #include file="./Suggest/stdmeldingFilter.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
|
|
|
|
function FCLTstdmeldingselector(fieldName, objectName, params)
|
|
{
|
|
if (typeof params == "undefined") params = {};
|
|
|
|
var lstdmeldingName = device.test(device.supportsPlaceholder) ? "" : L("lcl_select_stdmelding");
|
|
|
|
// Is er een initiele waarde meegegeven? Zoek dan de omschrijving erbij!
|
|
|
|
// 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 = "";
|
|
var filtClause = getFiltClauseStdmelding(params.filtercode, params, true);
|
|
var extraInf = getExtraInfStdmelding(params.extracode);
|
|
sql = "SELECT COUNT(*) aantal"
|
|
+ " FROM mld_stdmelding sm"
|
|
+ ", mld_discipline di"
|
|
+ filtClause.from
|
|
+ " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
|
|
+ filtClause.where;
|
|
var oRs = Oracle.Execute(sql);
|
|
// Als er maar één vakgroep is, dan deze selecteren.
|
|
var justone = (oRs("aantal").value == 1);
|
|
if (oRs("aantal").value == 1)
|
|
{
|
|
sql = "SELECT mld_stdmelding_key,"
|
|
+ lcl.xsqla('sm.mld_stdmelding_omschrijving','sm.mld_stdmelding_key')
|
|
+ ", sm.mld_ins_discipline_key extra"
|
|
+ extraInf
|
|
+ " FROM mld_stdmelding sm"
|
|
+ ", mld_discipline di"
|
|
+ filtClause.from
|
|
+ " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
|
|
+ filtClause.where;
|
|
var oRs = Oracle.Execute(sql);
|
|
lstdmeldingName = oRs("mld_stdmelding_omschrijving").value;
|
|
lextraInit = oRs("extra").value;
|
|
params.stdmelding_key = oRs("mld_stdmelding_key").Value;
|
|
if (params.ins_key > 0) // dan ben ik zeker nieuw
|
|
params.readonly = true;
|
|
}
|
|
// TODO: dit gaat nog niet zo lekker; als ik binnen het kennelijk geldende filter geen Name kan vinden
|
|
// moet-ie dan bv bad worden getoond? Of wat?
|
|
|
|
// Bouw de url voor de melding query op
|
|
var stdmQueryUrl = rooturl + "/appl/shared/suggest/SuggestStdmelding.asp"
|
|
+ "?autfunctionKey=" + params.autfunctionKey
|
|
+ (params.perslidKey > 0? "&perslidKey=" + params.perslidKey : "") // Kan ook met urlAdd meegegeven worden
|
|
+ (params.disc_key > 0? "&disc_key=" + params.disc_key : "")
|
|
+ (params.srtdisc_key > 0? "&srtdisc_key=" + params.srtdisc_key : "")
|
|
+ (params.ins_key > 0? "&ins_key=" + params.ins_key : "")
|
|
+ (params.extracode? "&extracode=" + params.extracode : "")
|
|
+ (params.filtercode? "&filtcode=" + params.filtercode : "");
|
|
if (params.label)
|
|
{ %><tr>
|
|
<td class="label">
|
|
<label for="<%=fieldName%>"><%=params.label%>:</label>
|
|
<%=params.moreinfo && S("faq_enabled") == 1? "<span class='"+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_faq_items")) + "'src='../Pictures/detail.png' onclick='stdmeldingselector.kennisbankitems()'></span>" : "" %>
|
|
</td>
|
|
<td>
|
|
<%
|
|
} %>
|
|
<nobr>
|
|
<input id="<%=fieldName%>_show" class="fldstdm<%=(!params.readonly && params.required)? " required" : ""%>" value="<%=safe.htmlattr(lstdmeldingName)%>"
|
|
placeholder="<%=L("lcl_select_stdmelding")%>"
|
|
<%=params.readonly? " readonly":""%>
|
|
<%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'":""%>
|
|
>
|
|
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.stdmelding_key%>">
|
|
<%
|
|
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)%>">
|
|
<%
|
|
} %>
|
|
</nobr>
|
|
<%
|
|
|
|
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: "<%=stdmQueryUrl%>",
|
|
initKey: <%=params.stdmelding_key? params.stdmelding_key : -1%>,
|
|
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
|
|
});
|
|
<% // Indien veld dat meegegeven is met urlAdd niet aanwezig is, dan deze als hidden veld aanmaken en vullen met init waarde.
|
|
// Beter is om dan de waarde van perslidKey gewoon als parameter mee te geven. Onderstaande code kan dan wellicht weer weg.
|
|
if (params.urlAdd)
|
|
{
|
|
for (i in params.urlAdd)
|
|
{ %>
|
|
if ($("#<%=params.urlAdd[i].field%>").length == 0)
|
|
$("#stdmeldingfields").append('<input type="hidden" id="<%=params.urlAdd[i].field%>" name="<%=params.urlAdd[i].field%>" value="<%=safe.htmlattr(params.urlAdd[i].init)%>">');
|
|
<% }
|
|
} %>
|
|
<% if (params.initOnChange && justone && (params.onChange))
|
|
{ // Als initOnChange en er is 1 waarde dan wordt deze ingevuld. Dan moet ook de onChange() worden uitgevoerd.
|
|
%>
|
|
<%=params.onChange%>(<%=params.stdmelding_key%>);
|
|
<% } %>
|
|
}
|
|
);
|
|
|
|
<% if (params.moreinfo && S("faq_enabled") == 1)
|
|
{ %>
|
|
stdmeldingselector =
|
|
{
|
|
kennisbankitems: function()
|
|
{
|
|
var stdm_key=$("#<%=fieldName%>")[0].value;
|
|
if (stdm_key != -1 && $("#<%=params.extraParamField%>").val() > 0)
|
|
{
|
|
FcltMgr.openDetail("appl/fac/fac_faq_search.asp?autosearch=1&urole=bo&stdm_str=" + stdm_key, "<%=L("lcl_faq_kennisbank")%>");
|
|
}
|
|
}
|
|
}
|
|
<% } %>
|
|
</script>
|
|
<div id="stdmeldingfields">
|
|
</div>
|
|
<%
|
|
}
|
|
else if (params.initOnChange && justone && params.onChange)
|
|
{ /* Ook onChange uitvoeren als initOnChange en readonly met meegegeven waarde */
|
|
%>
|
|
<script type="text/javascript">
|
|
jQuery(document).ready( function()
|
|
{
|
|
<%=params.onChange%>(<%=params.stdmelding_key%>, "", {suggestid: "<%=fieldName%>_show", init: true});
|
|
}
|
|
);
|
|
</script>
|
|
<%
|
|
}
|
|
|
|
if (params.label)
|
|
{ %>
|
|
</td></tr>
|
|
<%
|
|
}
|
|
return params; // mogelijk uitgebreid met onze ene stdmelding_key
|
|
}
|
|
%> |