255 lines
13 KiB
C++
255 lines
13 KiB
C++
<% /*
|
||
$Revision$
|
||
$Id$
|
||
|
||
File: disciplineselector.inc
|
||
Description: Algemene interface functie om een discipline 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.
|
||
disc_key: initi<74>le key waarde van de discipline die ingevuld moet worden.
|
||
module: Verplicht: module waarvan de disciplines zijn
|
||
perslidKey: Verplicht voor MLD: persoon waarvoor melding is
|
||
multitoggle: Sta multi-toggle toe
|
||
idadd: Identieficatie verschil bij gebruik van meerdere disciplineselectoren
|
||
sgRelType: De onderliggende multiSuggest-types die afhankelijk zijn van deze FCLTdisciplineselector, gescheiden door komma's.
|
||
De eerst volgende afhankelijke als eerste vermelden (bijv. "stdmelding, srtgroep, srtdeel").
|
||
autfunctionKey: Verplicht: fac_functie key of een array van fac_functie keys.
|
||
label: label dat voor het veld wordt weergegeven.
|
||
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
|
||
cndfilter: filter de conditie gebreken (srtdisc = xx(setting)) eruit.
|
||
onChange: onchange op het textveld.
|
||
trclass: wordt ook op de <tr> gezet.
|
||
autlevel: autorisatie niveau voor de query die gebruikt wordt voor de suggest.
|
||
ins_key: alleen als melding op dit object mogelijk is.
|
||
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)).
|
||
dohide: verberg de hele discipline selector
|
||
autRW: Geeft aan of er read or write autorisatie geldt.
|
||
noJustOne: Onderdrukken van controle of er maar één waarde is die geselecteerd moet worden.
|
||
*/ %>
|
||
<!-- #include file="./Suggest/disciplineFilter.inc" -->
|
||
|
||
<%
|
||
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
|
||
|
||
function FCLTdisciplineselector(fieldName, objectName, params)
|
||
{
|
||
params = params || {};
|
||
|
||
var sgType = "discipline";
|
||
var idadd = "";
|
||
if (params.idadd)
|
||
idadd = params.idadd;
|
||
if (!params.disc)
|
||
params.disc = -1; // wordt gebruikt in getFiltClauseDiscipline()
|
||
|
||
var lwhenEmpty = "";
|
||
if (!params.readonly)
|
||
{
|
||
// the default empty value depends on the module
|
||
switch(params.module)
|
||
{
|
||
// Plaatsgegevens
|
||
case "MLDP": { lwhenEmpty = L("lcl_select_vakgroep");
|
||
break;
|
||
}
|
||
case "MLD": { lwhenEmpty = idadd == 2 ? L("lcl_select_mld_process_grp") : L("lcl_select_vakgroep");
|
||
break;
|
||
}
|
||
case "MLDB": { lwhenEmpty = L("lcl_select_mld_process_grp");
|
||
break;
|
||
}
|
||
case "BES": { lwhenEmpty = L("lcl_select_catalogus");
|
||
break;
|
||
}
|
||
default: { lwhenEmpty = L("lcl_select_discipline");
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : lwhenEmpty));
|
||
var ldiscName = "";
|
||
var lextraInit = "";
|
||
|
||
if ("addfixedoption" in params && "key" in params.addfixedoption && params.disc_key == params.addfixedoption.key)
|
||
{
|
||
ldiscName = params.addfixedoption.txt;
|
||
lextraInit = params.addfixedoption.desc;
|
||
}
|
||
else if (!params.noJustOne || params.required || params.disc_key > 0)
|
||
{
|
||
params.autfunctionKeyArray = [];
|
||
if (typeof params.autfunctionKey == "object")
|
||
params.autfunctionKeyArray = params.autfunctionKey;
|
||
else // (typeof params.autfunctionKey == "number")
|
||
params.autfunctionKeyArray = [params.autfunctionKey];
|
||
|
||
var filtClause = getFiltClauseDiscipline(params.filtercode, params);
|
||
var extraInf = getExtraInfDiscipline(params.extracode);
|
||
|
||
sql = "SELECT COUNT(distinct td.ins_discipline_key) aantal"
|
||
+ " FROM ins_tab_discipline td"
|
||
+ " , ins_srtdiscipline sd"
|
||
+ filtClause.from
|
||
+ " WHERE ins_discipline_verwijder IS NULL"
|
||
+ " AND ins_srtdiscipline_verwijder IS NULL"
|
||
+ " AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)" // Alleen bij MLD is de ins_srtdiscipline_key (altijd) ingevuld
|
||
+ filtClause.where;
|
||
var oRs = Oracle.Execute(sql);
|
||
var disc_count = oRs("aantal").value;
|
||
oRs.Close();
|
||
if (params.disc_key > 0 && disc_count == 0) // Invalid initKey
|
||
params.disc_key = -1;
|
||
else if (disc_count == 1) // Als er maar één discipline is, dan deze selecteren.
|
||
{
|
||
sql = "SELECT td.ins_discipline_key, "
|
||
+ (params.srtdisc_key > 0
|
||
? ""
|
||
: "NVL2(sd.ins_srtdiscipline_prefix, sd.ins_srtdiscipline_prefix || '-', '') || ")
|
||
+ lcl.xsql('td.ins_discipline_omschrijving', 'td.ins_discipline_key') + " disciplineomschr"
|
||
+ extraInf.selectstr
|
||
+ " FROM ins_tab_discipline td"
|
||
+ ", ins_srtdiscipline sd"
|
||
+ filtClause.from
|
||
+ extraInf.fromstr
|
||
+ " WHERE td.ins_discipline_verwijder IS NULL"
|
||
+ " AND ins_srtdiscipline_verwijder IS NULL"
|
||
+ " AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)" // Alleen bij MLD is de ins_srtdiscipline_key (altijd) ingevuld
|
||
+ filtClause.where
|
||
+ extraInf.wherestr;
|
||
var oRs = Oracle.Execute(sql);
|
||
ldiscName = oRs("disciplineomschr").value;
|
||
lextraInit = oRs("extra").value;
|
||
params.disc_key = oRs("ins_discipline_key").value;
|
||
if (params.ins_key > 0) // dan ben ik zeker nieuw
|
||
params.readonly = true;
|
||
oRs.Close(); // close the recordset
|
||
}
|
||
}
|
||
|
||
// Bouw de url voor de vakgroep query op
|
||
var discQueryUrl = rooturl + "/appl/shared/suggest/SuggestDiscipline.asp"
|
||
+ "?module=" + params.module
|
||
+ "&perslidKey=" + params.perslidKey
|
||
+ "&autfunctionKey=" + (typeof params.autfunctionKey == "object" && params.autfunctionKey instanceof Array? params.autfunctionKey.join(",") : params.autfunctionKey)
|
||
+ "&autRW=" + params.autRW
|
||
+ (params.srtdisc_key? "&srtdisc_key=" + params.srtdisc_key : "")
|
||
+ (params.ins_key? "&ins_key=" + params.ins_key : "")
|
||
+ (params.extracode? "&extracode=" + params.extracode : "")
|
||
+ (params.filtercode? "&filtcode=" + params.filtercode : "")
|
||
+ (params.ref_type? "&ref_type=" + params.ref_type : "")
|
||
+ (params.cndfilter? "&cndfilter=1" : "");
|
||
if (params.label && !params.dohide)
|
||
{ %>
|
||
<tr <%=params.trclass ? "class='"+params.trclass+"'" : ""%>><td class="label">
|
||
<label for="<%=fieldName%>_show"><%=params.label%></label>
|
||
<%=params.moreinfo && S("faq_enabled") == 1 && params.module != "MLDB" ? "<span class='"+"labelextra details' title='" + safe.htmlattr(L("lcl_faq_items")) + "'onclick='disciplineselector.kennisbankitems()'>" + I("fa-question-circle") + "</span>" : "" %>
|
||
</td>
|
||
<td>
|
||
<%
|
||
}
|
||
if (params.readonly && !params.dohide) { %>
|
||
<span id="<%=fieldName%>_show" class="fld">
|
||
<%=safe.html(ldiscName)%>
|
||
</span>
|
||
<%}
|
||
else
|
||
{ // data-role none because we want to wrap the input field ourselves (because of "suggestKlikker" placement)
|
||
if (typeof mobile != "undefined")
|
||
{ %>
|
||
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset">
|
||
<% } %>
|
||
<input type="<%=params.dohide? "hidden" : "text"%>" id="<%=fieldName%>_show" class="fld<%=params.required ? " required" : ""%>" value="<%=safe.htmlattr(ldiscName)%>"
|
||
placeholder="<%=safe.htmlattr(lwhenEmpty)%>" sgType="<%=sgType%><%=idadd%>"
|
||
<%=(typeof mobile != "undefined" ? "data-role=\"none\"" : "")%>
|
||
<%=params.onChange ? " sgonChange='" + params.onChange + "'" : ""%>
|
||
>
|
||
<% if (typeof mobile != "undefined")
|
||
{ %>
|
||
</div>
|
||
<% }
|
||
} %>
|
||
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.disc_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)%>">
|
||
<%
|
||
}
|
||
if (params.label && !params.dohide)
|
||
{ %>
|
||
</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">
|
||
$(function()
|
||
{
|
||
<%=objectName%><%=idadd%> = new Suggest({ objectName: "<%=objectName%><%=idadd%>",
|
||
sgType: "<%=sgType%><%=idadd%>",
|
||
queryField: $("#<%=fieldName%>_show")[0],
|
||
queryUrl: "<%=discQueryUrl%>",
|
||
initKey: <%=params.disc_key? params.disc_key : -1%>,
|
||
icon: "fa-tag",
|
||
keyField: $("#<%=fieldName%>")[0]
|
||
<%=params.noJustOne ? ", noJustOne: true" : ""%>
|
||
<%=params.multitoggle ? ", multitoggle: true" : ""%>
|
||
<%=params.sgRelType ? ", sgRelType: \"" + params.sgRelType + "\"" : ""%>
|
||
<%=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.addfixedoption? ", addfixedoption: JSON.parse('" + safe.jsstring(JSON.stringify(params.addfixedoption)) + "')": ""%>
|
||
,highlightDescript: true
|
||
});
|
||
<% if (params.hidden)
|
||
{ %>
|
||
<%=objectName%><%=idadd%>.makeHidden();
|
||
<% } %>
|
||
});
|
||
|
||
<% if (params.moreinfo && S("faq_enabled") == 1 && params.module != "MLDB")
|
||
{ %>
|
||
disciplineselector =
|
||
{
|
||
kennisbankitems: function()
|
||
{
|
||
function process_disc_info(data, textStatus)
|
||
{
|
||
if (data.aantal_fefaq > 0 || data.aantal_fofaq > 0)
|
||
FcltMgr.openDetail("appl/fac/fac_faq_search.asp?autosearch=1&urole=bo&disc_key_str=" + disc_key, L("lcl_faq_kennisbank"));
|
||
}
|
||
|
||
var disc_key=$("#<%=fieldName%>")[0].value;
|
||
if (disc_key != -1)
|
||
{
|
||
$.getJSON("../ins/get_ins_info_ajax.asp",
|
||
{ req_info: "ins_discipline_key",
|
||
disc_key: disc_key
|
||
},
|
||
process_disc_info);
|
||
}
|
||
}
|
||
}
|
||
<% } %>
|
||
</script>
|
||
<%
|
||
}
|
||
}
|
||
%> |