Files
Facilitor/APPL/Shared/stdmeldingselector.inc
Jos Groot Lipman f362b4d84f FSN#35094 Opfrissen icon-set font-awesome IE8
svn path=/Website/trunk/; revision=31620
2016-11-22 15:46:30 +00:00

200 lines
9.8 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'><i class='fa fa-info-circle details' title='" + safe.htmlattr(L("lcl_faq_items")) + "'onclick='stdmeldingselector.kennisbankitems()'></i></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
}
%>