KFNS#38663 adding alg scoping to kennisbank items

svn path=/Website/trunk/; revision=33922
This commit is contained in:
2017-05-18 14:22:58 +00:00
parent 3b0095f2a3
commit 787db2bef7
5 changed files with 183 additions and 104 deletions

View File

@@ -132,13 +132,14 @@ else
BLOCK_START("");
// <!-- Toevoegen -->
// Plaats
FCLTplaatsselector("", // TODO
FCLTplaatsselector(-1,
{ label: L("lcl_plaatsgegevens"),
locatiekey: loc_key,
gebouwkey: bld_key,
terrein: 1,
verdiepingkey: flr_key,
ruimtekey: room_key,
terrein: true,
filtercode: "FAC",
onLocChange: "onChangeAlg(2)",
onGebChange: "onChangeAlg(3)",
onVerChange: "onChangeAlg(4)",
@@ -168,7 +169,7 @@ else
<%
var sql = "SELECT f.alg_algfaq_key"
+ " , l.alg_locatie_key loc_key"
+ " , NVL(f.alg_onroerendgoed_keys, l.alg_locatie_key) onr_key"
+ " , NVL(f.alg_onroerendgoed_keys, -1) onr_key"
+ " , NVL(o.alg_type, 'L') scope"
+ " , l.alg_locatie_code ||"
+ " DECODE(o.alg_plaatsaanduiding, NULL, NULL, '-' || o.alg_plaatsaanduiding) plaats"

View File

@@ -96,12 +96,16 @@ switch (req_info)
oRs.Close();
break;
}
case "alg_faq_info":
case "faq_info":
{
var alg_key = getQParamInt("alg_key", -1);
var loc_key = getQParamInt("loc_key", -1);
var alg_key_arr = getQParamIntArray("alg_key_arr", []);
var level = getQParamInt("level", 2); // delete inline kennisbank vanaf [level] cascaded
var ins_disc_key = getQParamInt("ins_disc_key", -1); // vakgroep
var stdm_key = getQParamInt("stdm_key", -1);
var result = mld.alg_faq_info(loc_key, alg_key);
var result = mld.faq_info(loc_key, alg_key_arr, ins_disc_key, stdm_key);
result.level = level;
break;
}

View File

@@ -2715,6 +2715,8 @@ mld = {setmeldingstatus:
var filtFROM = ""
var filtWHERE = "";
var filtSELECT = "";
var faq_type = "faq_";
if (ins_disc_key && ins_disc_key != -1)
@@ -2746,15 +2748,19 @@ mld = {setmeldingstatus:
filtFROM += " , alg_algfaq af";
filtWHERE += " AND ff.fac_faq_key = af.fac_faq_key"
+ " AND af.alg_locatie_key = " + loc_key;
if (alg_key_arr == [-1]) // check only loc
if (!alg_key_arr.length) // check only loc
{
filtSELECT = " , 'L' alg_type";
filtWHERE += " AND af.alg_onroerendgoed_keys IS NULL";
}
else if (alg_key_arr.length > 0)
else
{
filtWHERE += " AND (af.alg_onroerendgoed_keys IN (" + alg_key_arr + ")";
// if (alg_key_arr.indexOf("-1") > 0)
// filtWHERE += " OR af.alg_onroerendgoed_keys IS NULL";
filtSELECT = " , NVL(og.alg_type, 'L') alg_type";
filtFROM += " , alg_v_onroerendgoed og";
filtWHERE += " AND af.alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)"
+ " AND (af.alg_onroerendgoed_keys IN (" + alg_key_arr + ")";
if (inArray(-1, alg_key_arr))
filtWHERE += " OR af.alg_onroerendgoed_keys IS NULL";
filtWHERE += " )";
}
}
@@ -2773,6 +2779,7 @@ mld = {setmeldingstatus:
+ " fac_faq_url, "
+ " fac_faq_level, "
+ " fac_faq_displaymode"
+ filtSELECT
+ " FROM fac_faq ff"
+ filtFROM
+ " WHERE fac_faq_datum < SYSDATE"
@@ -2788,8 +2795,7 @@ mld = {setmeldingstatus:
loc_key: loc_key,
alg_key_arr: alg_key_arr,
stdm_key: stdm_key,
ins_disc_key: ins_disc_key,
faq_type: faq_type
ins_disc_key: ins_disc_key
};
while (!oRs.EOF)
{
@@ -2810,6 +2816,18 @@ mld = {setmeldingstatus:
answer: safe.fclthtml(oRs("fac_faq_answer").Value),
displaymode: oRs("fac_faq_displaymode").Value
};
if (loc_key && loc_key != -1)
{
switch(oRs("alg_type").Value) {
case "R": data.faq_type = faq_type+"5"; break;
case "V": data.faq_type = faq_type+"4"; break;
case "T":
case "G": data.faq_type = faq_type+"3"; break;
case "L": data.faq_type = faq_type+"2"; break;
default: data.faq_type = faq_type+"1"; break;
}
}
var fac_url = oRs("fac_faq_url").value;
if (fac_url)
{

View File

@@ -231,9 +231,6 @@ function process_kp_info(data)
function onChangeKostenklant()
{
var acc_key = -1;
var acc_oms = "";
var acc_extra = "";
// Kies juiste prs_key/user_key voor de kostenplaats query
// Stop deze in het urlAdd veld
// Kostenklant UIT => AAN: Eigen kostenplaats van aanvrager selecteren of leeg maken als onvoldoende autorisatie
@@ -395,7 +392,7 @@ function getObjectInfo(changed_niveau, noRecalcEinddatum)
function onChangeLocatie(locbld_changed)
{
onChangeGebouw(locbld_changed);
onChangeAlg();
onChangeAlg(2, -1);
}
// Op de onchange van een gebouw controleren of er misschien een kostenplaats
@@ -403,6 +400,9 @@ function onChangeLocatie(locbld_changed)
// De functie onChangeGebouw() wordt ook aangeroepen bij wijzigen van melder
function onChangeGebouw(locbld_changed, do_not_change_kp) // sl is de gebouw selectbox
{
if (!locbld_changed)
onChangeAlg(3, $("#gebouwkey").val());
if (window.stdm_info.regime == 2) // openingstijden
{
recalcEinddatum(); // Einddatum kan moeten worden aangepast.
@@ -430,62 +430,77 @@ function onChangeGebouw(locbld_changed, do_not_change_kp) // sl is de gebouw sel
process_gebouw_info);
}
}
if (!locbld_changed)
onChangeAlg($("#gebouwkey").val());
}
function onChangeVerdieping()
{
onChangeAlg($("#verdiepingkey").val());
onChangeAlg(4, $("#verdiepingkey").val());
}
function onChangeRuimte()
{
onChangeAlg($("#ruimtekey").val());
onChangeAlg(5, $("#ruimtekey").val());
}
function onChangeAlg(alg)
function onChangeAlg(level, alg)
{
var loc = $("#locatiekey").val();
if (loc && loc > 0)
var stdm = $("#stdm").val();
var ins_disc = $("#disc").val();
alert("onChangeAlg:\n\nins: " + ins_disc + "\nstdm: " + stdm + "\nloc: " + loc + "\nalg: " + alg + "\nlevel: " + level);
if ((loc && loc > 0) || (ins_disc && ins_disc > 0))
{
$.getJSON("./get_mld_info_ajax.asp",
{ req_info: "alg_faq_info",
alg_key: alg || -1,
loc_key: loc },
callback_alg_faq_info);
{ req_info: "faq_info",
loc_key: loc,
alg_key_arr: [alg],
level: level,
ins_disc_key: (ins_disc || -1),
stdm_key: stdm || -1 },
callback_faq_info);
}
}
var alg_faq_info = {};
function callback_alg_faq_info(data)
var faq_info = {};
function callback_faq_info(data)
{
window.alg_faq_info = data;
window.faq_info = data;
if (data.popup_faq && !fromkb)
{
var url = "../mld/mld_faq.asp?loc_key="+$("#locatiekey").val();
if ($("#ruimtekey").val() > -1)
url += "&alg_key="+$("#ruimtekey").val();
else if ($("#verdiepingkey").val() > -1)
url += "&alg_key="+$("#verdiepingkey").val();
else if ($("#gebouwkey").val() > -1)
url += "&alg_key="+$("#gebouwkey").val();
var url = "../mld/mld_faq.asp"
+ "?loc_key=" + data.loc_key
+ "&alg_key_arr=" + data.alg_key_arr.join(",")
+ "&stdm_key=" + data.stdm_key
+ "&ins_disc_key=" + data.ins_disc_key;
FcltMgr.openModalDetail(url, L("lcl_mld_faq_stdmanswers"), { height: 200, width: 700, callback: mld_faq_list_callback } );
}
show_fixed_faq("alg", data.fixed_faq);
show_fixed_faq(data.level, data.fixed_faq);
}
function show_fixed_faq(block, data_fixed_faq)
function show_fixed_faq(level, data_fixed_faq)
{
if (data_fixed_faq && data_fixed_faq.length > 0)
var $tbl = $("#mldFaq").find("table");
if (data_fixed_faq.length > 0)
{
var $tbl = $("#mldFaq").find("table");
$tbl.find("tr."+block).remove();
var stdmLevel = data_fixed_faq[0].faq_type.substr(4,1);
if (stdmLevel != "S" && stdmLevel != "I")
stdmLevel = "";
if (!isNaN(level) && level >= 1 && level <= 5)
{
for (level; level <= 5; level++)
{
$tbl.find("tr.faq_"+stdmLevel+level).remove();
}
}
for (var i = 0; i < data_fixed_faq.length; i++)
{
var safequestion = $("<span>").text(data_fixed_faq[i].question).html().replace(/\n/g, "<br>");
var $newrow = $("<tr class='trlabel flexlabel flexcollapsable flexcollapsed "+block+"'><td class='fixedfaqquestion lhint'>" + safequestion + "</td></tr>")
var $newrow = $("<tr class='trlabel flexlabel flexcollapsable flexcollapsed "+data_fixed_faq[i].faq_type+"'><td class='fixedfaqquestion lhint'>" + safequestion + "</td></tr>")
.click(function () {
$(this).next().toggle();
$(this).toggleClass('flexcollapsed');
@@ -495,16 +510,21 @@ function show_fixed_faq(block, data_fixed_faq)
var safeanswer = $("<span>").text(data_fixed_faq[i].answer).text().replace(/\n/g, "<br>");
if (data_fixed_faq[i].hurl)
safeanswer += "<br><a href={0} target='_new'>{1}</a>".format(data_fixed_faq[i].hurl, data_fixed_faq[i].hlnk);
$tbl.append("<tr style='display:none' class='"+block+"'><td class='fixedfaqanswer'><span='fclthtml'>" + safeanswer + "</span></td></tr>");
$tbl.append("<tr style='display:none' class='"+data_fixed_faq[i].faq_type+"'><td class='fixedfaqanswer'><span='fclthtml'>" + safeanswer + "</span></td></tr>");
}
$("#mldFaq").show();
}
else
{
$("#mldFaq").find("table tr."+block).remove();
if (!$("#mldFaq").find("table tr").length)
for (level; level <= 5; level++)
{
$("#mldFaq").find("table").empty();
$tbl.find("tr.faq_I"+level).remove();
$tbl.find("tr.faq_S"+level).remove();
$tbl.find("tr.faq_"+level).remove();
}
if (!$tbl.find("tr").length)
{
$tbl.empty();
$("#mldFaq").hide();
}
}
@@ -614,16 +634,8 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
if (stdmChanged)
{
if (typeof sgRef != "undefined") setReferentie(stdm_info.kanverwijzen);
if (data.popup_faq && !fromkb)
{
var url = "../mld/mld_faq.asp?stdm_key="+ $("#stdm").val();
FcltMgr.openModalDetail(url, L("lcl_mld_faq_stdmanswers"), { height: 200, width: 700, callback: mld_faq_list_callback } );
}
}
show_fixed_faq("mld", data.fixed_faq);
// UWVA#15523: indien frontend, dan is het aan kunnen geven van de prio afhankelijk van de vakgroep
// (door mld.stdmeldinginfo bepaald uit stdm_info.frontendprio)
// Bij 1 mag FE kiezen (indien er meer prios zijn), anders is het 2 en readonly (niet onzichtbaar om rust te houden?)
@@ -784,7 +796,7 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
$("#melding_onderwerp").closest('td').prev().toggle(stdm_info.subject != 0); // verstop ook bijbehorende label
}
if (stdm_info.freetext == 2 && !$("#melding_omschrijving")[0].readOnly)
if (stdm_info.freetext == 2 && !$("#melding_omschrijving").is("[readonly]"))
{ // class required zetten
$("#melding_omschrijving").addClass("required");
}
@@ -866,6 +878,37 @@ function onChangeVakgroep(vakgroep_key)
function onChangeStdMelding(stdmelding_key, txt, params)
{
var ins_disc = $("#disc").val();
var loc = $("#locatiekey").val() || -1;
if ((ins_disc && ins_disc != -1) ||
(loc && loc != -1))
{
var alg_key_arr = [];
if (loc > 0)
{
alg_key_arr.push(-1); // voor locatie
var bld = $("#gebouwkey").val();
if (bld && bld != -1)
alg_key_arr.push(bld);
var flr = $("#verdiepingkey").val();
if (flr && flr != -1)
alg_key_arr.push(flr);
var room = $("#ruimtekey").val();
if (room && room != -1)
alg_key_arr.push(room);
}
alert("onChangeStdm:\n\nins: " + ins_disc + "\nstdm: " + stdmelding_key + "\nloc: " + loc + "\nalg: " + alg_key_arr.join(","));
$.getJSON("./get_mld_info_ajax.asp",
{ req_info: "faq_info",
loc_key: loc,
alg_key_arr: alg_key_arr.join(","),
level: 2,
ins_disc_key: ins_disc,
stdm_key: stdmelding_key },
callback_faq_info);
}
params = params || {};
if (stdmelding_key > 0)
{

View File

@@ -20,9 +20,10 @@
<%
FCLTHeader.Requires({ plugins: ["jQuery"] })
var mld_stdmelding_key = getQParamInt("stdm_key", -1);
var alg_locatie_key = getQParamInt("loc_key", -1);
var alg_onrgoed_key = getQParamInt("alg_key", -1);
var ins_disc_key = getQParamInt("ins_disc_key", -1);
var stdm_key = getQParamInt("stdm_key", -1);
var loc_key = getQParamInt("loc_key", -1);
var alg_key_arr = getQParamInt("alg_key_arr", []);
var authparamsFOF = user.checkAutorisation("WEB_FAQFOF", true); // ziet (ook) FO-items
var authparamsUSE = user.checkAutorisation("WEB_FAQUSE", true); // ziet (ook) FE-items
@@ -72,56 +73,68 @@ user.auth_required_or_abort(authparamsUSE || authparamsFOF);
if (authparamsUSE)
faq_bits += 1;
var fromWhereSql = "";
if (mld_stdmelding_key > 0)
{
fromWhereSql = " , mld_stdmeldingfaq sf"
+ " WHERE ff.fac_faq_key = sf.fac_faq_key"
+ " AND (sf.mld_stdmelding_key = " + mld_stdmelding_key
+ " OR (sf.mld_stdmelding_key IS NULL"
+ " AND sf.ins_discipline_key = (SELECT mld_ins_discipline_key"
+ " FROM mld_stdmelding "
+ " WHERE mld_stdmelding_key = " + mld_stdmelding_key + ")))";
}
else
{
var filtFROM = ""
var filtWHERE = "";
fromWhereSql = " , alg_algfaq af"
+ " WHERE ff.fac_faq_key = af.fac_faq_key"
+ " AND af.alg_locatie_key = " + alg_locatie_key
+ " AND af.alg_onroerendgoed_keys";
if (alg_onrgoed_key && alg_onrgoed_key != -1)
if (ins_disc_key && ins_disc_key != -1)
{
var algKeys = "SELECT COALESCE(alg_ruimte_key, -1) rk,"
+ " COALESCE(alg_verdieping_key, -1) vk,"
+ " COALESCE(alg_gebouw_key, -1) gk,"
+ " COALESCE(alg_terreinsector_key, -1) tk"
+ " FROM alg_v_allonroerendgoed"
+ " WHERE alg_onroerendgoed_keys = " + alg_onrgoed_key;
var keysoRs = Oracle.Execute(algKeys);
var alg_key_arr = [];
alg_key_arr.push(keysoRs("rk").Value);
alg_key_arr.push(keysoRs("vk").Value);
alg_key_arr.push(keysoRs("gk").Value);
alg_key_arr.push(keysoRs("tk").Value);
keysoRs.Close();
fromWhereSql += " IN (" + alg_key_arr + ")";
filtFROM += " , mld_stdmeldingfaq sf";
filtWHERE += " AND ff.fac_faq_key = sf.fac_faq_key"
+ " AND sf.ins_discipline_key = " + ins_disc_key;
if (stdm_key && stdm_key != -1)
filtWHERE += " AND sf.mld_stdmelding_key = " + stdm_key;
else
filtWHERE += " AND sf.mld_stdmelding_key IS NULL";
}
else
fromWhereSql += " IS NULL";
}
var sql = "SELECT ff.fac_faq_key, fac_faq_question, fac_faq_answer, fac_faq_url, fac_faq_level"
+ " FROM fac_faq ff"
+ fromWhereSql
+ " AND BITAND(fac_faq_level," + faq_bits + ") <> 0"
+ " AND fac_faq_displaymode = 0"
+ " AND fac_faq_datum < SYSDATE"
+ " AND (fac_faq_lang = " + safe.quoted_sql(user_lang) + " OR fac_faq_lang IS NULL)"
+ " ORDER BY fac_faq_rank DESC NULLS LAST"
+ " , fac_faq_datum DESC"
+ " , fac_faq_question";
{
filtWHERE += " AND NOT EXISTS ("
+ " SELECT ''"
+ " FROM mld_stdmeldingfaq sf"
+ " WHERE ff.fac_faq_key = sf.fac_faq_key"
+ " )";
}
if (loc_key && loc_key != -1)
{
filtFROM += " , alg_algfaq af";
filtWHERE += " AND ff.fac_faq_key = af.fac_faq_key"
+ " AND af.alg_locatie_key = " + loc_key;
if (!alg_key_arr.length) // check only loc
{
filtWHERE += " AND af.alg_onroerendgoed_keys IS NULL";
}
else
{
filtWHERE += " AND (af.alg_onroerendgoed_keys IN (" + alg_key_arr + ")";
if (inArray(-1, alg_key_arr))
filtWHERE += " OR af.alg_onroerendgoed_keys IS NULL";
filtWHERE += " )";
}
}
else
{
filtWHERE += " AND NOT EXISTS ("
+ " SELECT ''"
+ " FROM alg_algfaq af"
+ " WHERE ff.fac_faq_key = af.fac_faq_key"
+ " )";
}
var sql = "SELECT ff.fac_faq_key, "
+ " fac_faq_question, "
+ " fac_faq_answer, "
+ " fac_faq_url, "
+ " fac_faq_level "
+ " FROM fac_faq ff"
+ filtFROM
+ " WHERE fac_faq_datum < SYSDATE"
+ " AND fac_faq_displaymode = 0"
+ " AND BITAND(fac_faq_level," + faq_bits + ") <> 0"
+ " AND (fac_faq_lang = " + safe.quoted_sql(user_lang) + " OR fac_faq_lang IS NULL)"
+ filtWHERE
+ " ORDER BY fac_faq_rank DESC NULLS LAST"
+ " , fac_faq_datum DESC"
+ " , fac_faq_question";
var oRs = Oracle.Execute(sql);
var faq_url = '';
while (!oRs.eof) {