360 lines
14 KiB
Plaintext
360 lines
14 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: fac_faq_list.asp
|
|
Status: prototype
|
|
Description: zoekt op basis van de zoekvelden in de kennisbank
|
|
Parameters: search: zoekstring
|
|
urole: voor FO is meer info beschikbaar dan voor de fe (default)
|
|
op basis van fac_faq_level
|
|
Context: Vanuit fac_faq_search.asp
|
|
*/
|
|
%>
|
|
<!--#include file="../Shared/common.inc" -->
|
|
<!--#include file="../Shared/getkenmerksql.inc" -->
|
|
<!--#include file="../Shared/resultset_table_v2.inc" -->
|
|
<!--#include file="fac.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({js: []});
|
|
|
|
var searchtext = getQParam("searchtext", null);
|
|
var disc_key_arr = getQParamIntArray("discmulti", []); // Productgroep
|
|
var stdm_key_arr = getQParamIntArray("stdmmulti", []); // Melding (Stdmelding)
|
|
var loc_key = getQParamInt("locatiekey", -1); // Locatie
|
|
var bld_key = getQParamInt("gebouwkey", -1); // Gebouw
|
|
var flr_key = getQParamInt("verdiepingkey", -1); // Verdieping
|
|
var room_key = getQParamInt("ruimtekey", -1); // Ruimte
|
|
var fac_faq_level = getQParamInt("fac_faq_level", -1); // Zichtbaar voor
|
|
var fac_faq_lang = getQParam("fac_faq_lang", null); // Taal
|
|
if (fac_faq_lang == "-1") fac_faq_lang = null;
|
|
|
|
disc_key_arr = (disc_key_arr.length > 0 ? disc_key_arr : null);
|
|
stdm_key_arr = (stdm_key_arr.length > 0 ? stdm_key_arr : null);
|
|
|
|
var params = {searchtext: searchtext,
|
|
disc_key_arr: disc_key_arr,
|
|
stdm_key_arr: stdm_key_arr,
|
|
fac_faq_level: fac_faq_level,
|
|
fac_faq_lang: fac_faq_lang};
|
|
|
|
var urole = getQParamSafe("urole", "fe");
|
|
var fronto = (urole == "fo");
|
|
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
|
|
var print = (outputmode == 1 || outputmode == 5);
|
|
var excel = (outputmode == 2 || outputmode == 6);
|
|
var showall = getQParamInt("showall", 0) == 1;
|
|
var wholeword = getQParam("wholeword", "off") == "on";
|
|
|
|
var authparamsBOF = user.checkAutorisation("WEB_FAQBOF", true); // ziet alles
|
|
var authparamsFOF = user.checkAutorisation("WEB_FAQFOF", true); // ziet ook FO-items (en eigen items)
|
|
var authparamsUSE = user.checkAutorisation("WEB_FAQUSE", true); // ziet ook FE-items (en eigen items)
|
|
user.auth_required_or_abort(authparamsBOF || authparamsFOF || authparamsUSE);
|
|
|
|
function make_faq_list (searchtext, ororand)
|
|
{
|
|
var supper = searchtext.toUpperCase();
|
|
|
|
var sql = "SELECT f.fac_faq_key"
|
|
+ " , f.fac_faq_question"
|
|
+ " , f.fac_faq_answer"
|
|
+ " , f.fac_faq_datum"
|
|
+ " , f.fac_faq_source"
|
|
+ " , f.fac_faq_url"
|
|
+ " , f.fac_faq_lang"
|
|
+ " , f.fac_faq_level"
|
|
+ " , (SELECT MIN(" + lcl.xsql('sm.mld_stdmelding_omschrijving', 'sm.mld_stdmelding_key')
|
|
+ " )"
|
|
+ " FROM mld_stdmeldingfaq mf"
|
|
+ " , mld_stdmelding sm"
|
|
+ " WHERE mf.mld_stdmelding_key = sm.mld_stdmelding_key(+)"
|
|
+ " AND mf.fac_faq_key = f.fac_faq_key"
|
|
+ " ) mld_stdmelding_omschrijving"
|
|
+ " , (SELECT MIN(CASE"
|
|
+ " WHEN sd.ins_srtdiscipline_prefix IS NULL"
|
|
+ " THEN ''"
|
|
+ " ELSE sd.ins_srtdiscipline_prefix || '-'"
|
|
+ " END"
|
|
+ " ||" + lcl.xsql('m1.ins_discipline_omschrijving', 'm1.ins_discipline_key')
|
|
+ " )"
|
|
+ " FROM mld_v_aanwezigdiscipline m1"
|
|
+ " , ins_srtdiscipline sd"
|
|
+ " , mld_stdmeldingfaq mf"
|
|
+ " WHERE m1.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
|
|
+ " AND m1.ins_discipline_key = mf.ins_discipline_key"
|
|
+ " AND mf.fac_faq_key = f.fac_faq_key"
|
|
+ " ) vakgroep"
|
|
+ " , (SELECT MIN(NVL(o.alg_type, 'L'))"
|
|
+ " FROM alg_v_allonroerendgoed o, alg_algfaq af"
|
|
+ " WHERE af.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
|
|
+ " AND af.fac_faq_key = f.fac_faq_key) scope"
|
|
+ " , (SELECT MIN(l.alg_locatie_code || "
|
|
+ " DECODE(o.alg_plaatsaanduiding, NULL, NULL, '-' || o.alg_plaatsaanduiding))"
|
|
+ " FROM alg_v_aanweziglocatie l, alg_v_onroerendgoed_gegevens o, alg_algfaq af"
|
|
+ " WHERE af.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
|
|
+ " AND af.alg_locatie_key = l.alg_locatie_key"
|
|
+ " AND af.fac_faq_key = f.fac_faq_key) plaats"
|
|
+ " , fac_faq_hint"
|
|
+ ", (SELECT " + S("prs_pers_string") + " naam"
|
|
+ " FROM prs_perslid p"
|
|
+ " WHERE p.prs_perslid_key = f.prs_perslid_key"
|
|
+ " ) aangepastdoor"
|
|
+ " , (SELECT count(*)"
|
|
+ " FROM mld_stdmeldingfaq mf"
|
|
+ " WHERE mf.fac_faq_key = f.fac_faq_key"
|
|
+ " ) mld_stdmelding_count"
|
|
+ " , (SELECT count(*)"
|
|
+ " FROM alg_algfaq af"
|
|
+ " WHERE af.fac_faq_key = f.fac_faq_key"
|
|
+ " ) alg_alg_count"
|
|
+ " FROM fac_faq f"
|
|
+ " WHERE 1 = 1";
|
|
|
|
if (ororand)
|
|
{
|
|
sql += " AND (" + fac.createOrOrClause("UPPER(fac_faq_question)", supper, wholeword)
|
|
+ " OR " + fac.createOrOrClause("UPPER(fac_faq_answer)", supper, wholeword)
|
|
+ " OR " + fac.createOrOrClause("UPPER(fac_faq_hint)", supper, 0, wholeword)+ ")";
|
|
}
|
|
else
|
|
{
|
|
sql += " AND " + fac.createOrClause2(["UPPER(fac_faq_question)","UPPER(fac_faq_answer)","UPPER(fac_faq_hint)"], supper, wholeword);
|
|
}
|
|
|
|
if (stdm_key_arr)
|
|
sql += " AND EXISTS (SELECT ''"
|
|
+ " FROM mld_stdmeldingfaq"
|
|
+ " WHERE mld_stdmelding_key IN (" + stdm_key_arr + ") "
|
|
+ " AND fac_faq_key = f.fac_faq_key"
|
|
+ ")";
|
|
else
|
|
if (disc_key_arr)
|
|
sql += " AND EXISTS (SELECT ''"
|
|
+ " FROM mld_stdmeldingfaq"
|
|
+ " WHERE ins_discipline_key IN (" + disc_key_arr + ")"
|
|
+ " AND fac_faq_key = f.fac_faq_key"
|
|
+ ")";
|
|
|
|
var sqlOnroer = "";
|
|
if (room_key > -1)
|
|
sqlOnroer = "alg_onroerendgoed_keys = " + room_key
|
|
else if (flr_key > -1)
|
|
sqlOnroer = "alg_onroerendgoed_keys = " + flr_key
|
|
else if (bld_key > -1)
|
|
sqlOnroer = "alg_onroerendgoed_keys = " + bld_key
|
|
else if (loc_key > -1)
|
|
sqlOnroer = "alg_onroerendgoed_keys IS NULL"
|
|
|
|
if (sqlOnroer != "")
|
|
sql += " AND EXISTS (SELECT ''"
|
|
+ " FROM alg_algfaq"
|
|
+ " WHERE " + sqlOnroer
|
|
+ " AND alg_locatie_key = " + loc_key
|
|
+ " AND fac_faq_key = f.fac_faq_key"
|
|
+ ")";
|
|
|
|
if (fac_faq_level > 0)
|
|
sql += " AND BITAND(f.fac_faq_level, " + fac_faq_level +") = " + fac_faq_level;
|
|
|
|
if (fac_faq_lang != null)
|
|
sql += " AND f.fac_faq_lang LIKE " + safe.quoted_sql(fac_faq_lang);
|
|
else
|
|
{
|
|
if (!authparamsBOF && !authparamsFOF)
|
|
sql += " AND (f.fac_faq_lang = " + safe.quoted_sql(user.lang()) + " OR f.fac_faq_lang IS NULL)";
|
|
}
|
|
|
|
if (!authparamsBOF)
|
|
{
|
|
var bits = 0;
|
|
if (authparamsFOF)
|
|
bits |= (urole=="fo"?3:2);
|
|
if (authparamsUSE)
|
|
bits |= 1;
|
|
sql += " AND BITAND (fac_faq_level, " + bits + ") <> 0";
|
|
if (!authparamsFOF)
|
|
sql += " AND (fac_faq_datum < SYSDATE OR prs_perslid_key = " + user_key + ")"; // zelf ingevoerd zie je wel terug
|
|
}
|
|
|
|
sql += getKenmerkSql("FAQ", "f.fac_faq_key"); // Zoeken op kenmerken, indien geavanceerd ingevuld
|
|
|
|
sql += " ORDER BY fac_faq_rank DESC NULLS LAST"
|
|
+ " , fac_faq_datum DESC"
|
|
+ " , fac_faq_question";
|
|
|
|
if (!ororand)
|
|
{
|
|
var testRs = Oracle.Execute(sql);
|
|
if (testRs.Eof)
|
|
{
|
|
make_faq_list (searchtext, true);
|
|
return;
|
|
}
|
|
testRs.Close();
|
|
}
|
|
|
|
function fnQuestion(oRs)
|
|
{
|
|
return "<div class='faqq'>" + safe.html(oRs("fac_faq_question").value) + "</div>";
|
|
}
|
|
|
|
function fnLevel(oRs)
|
|
{
|
|
var r = "?";
|
|
switch (oRs("fac_faq_level").value)
|
|
{
|
|
case 1: r = L("lcl_faq_level1"); break;
|
|
case 2: r = L("lcl_faq_level2"); break;
|
|
case 3: r = L("lcl_faq_level3"); break;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function fnSource(oRs)
|
|
{
|
|
var lref = "";
|
|
if (oRs("fac_faq_url").value)
|
|
{
|
|
if (oRs("fac_faq_url").Value.slice(0,4) == "http") // extern
|
|
var url = oRs("fac_faq_url").Value;
|
|
else // in cust subdir
|
|
var url = custpath + "/" + oRs("fac_faq_url").Value;
|
|
|
|
lref = "<a target=_new href='" + safe.htmlattr(url) + "'>" + safe.html(oRs("fac_faq_source").value) + "</a>";
|
|
}
|
|
else
|
|
lref = safe.html(oRs("fac_faq_source").value);
|
|
return lref;
|
|
}
|
|
|
|
function fnVakgroep(oRs)
|
|
{
|
|
var vakgroep = "";
|
|
if (oRs("mld_stdmelding_count").value > 1)
|
|
{
|
|
vakgroep = L("lcl_faq_stdmelding_m").format(oRs("mld_stdmelding_count").value);
|
|
}
|
|
else
|
|
{
|
|
vakgroep = oRs("vakgroep").value;
|
|
}
|
|
return safe.html(vakgroep);
|
|
}
|
|
|
|
function fnStdmelding(oRs)
|
|
{
|
|
var stdmelding = "";
|
|
if (oRs("mld_stdmelding_count").value == 1)
|
|
{
|
|
stdmelding = oRs("mld_stdmelding_omschrijving").value;
|
|
}
|
|
return safe.html(stdmelding);
|
|
}
|
|
|
|
function fnScope(oRs)
|
|
{
|
|
var scope = "";
|
|
if (oRs("alg_alg_count").value > 1)
|
|
{
|
|
scope = L("lcl_faq_alg_l").format(oRs("alg_alg_count").value);
|
|
}
|
|
else
|
|
{
|
|
switch (oRs("scope").Value)
|
|
{
|
|
case "L": scope = L("lcl_location"); break;
|
|
case "G": scope = L("lcl_building"); break;
|
|
case "T": scope = L("lcl_terra"); break;
|
|
case "V": scope = L("lcl_floor"); break;
|
|
case "R": scope = L("lcl_room"); break;
|
|
}
|
|
}
|
|
return safe.html(scope);
|
|
}
|
|
|
|
function fnPlaats(oRs)
|
|
{
|
|
var plaats = "";
|
|
if (oRs("alg_alg_count").value == 1)
|
|
{
|
|
plaats = oRs("plaats").value;
|
|
}
|
|
return safe.html(plaats);
|
|
}
|
|
|
|
var canAdd = authparamsFOF && authparamsFOF.PRSwritelevel < 9 && authparamsFOF.ALGwritelevel < 9;
|
|
|
|
buttons = [];
|
|
if (canAdd)
|
|
{
|
|
var addurl = "appl/fac/fac_faq.asp";
|
|
buttons = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "', {callback: FcltMgr.reload })" }]
|
|
}
|
|
var rst = new ResultsetTable({ sql: sql,
|
|
keyColumn: "fac_faq_key",
|
|
flexModule: "FAQ",
|
|
flexId: "fac_faq_key",
|
|
ID: "faqtable",
|
|
title: L("lcl_faq_items"),
|
|
outputmode: outputmode,
|
|
showAll: showall,
|
|
filterParams: params,
|
|
buttons: buttons
|
|
});
|
|
rst.addColumn(new Column({hasActions: true, caption: L("lcl_faq_question"), content: fnQuestion}));
|
|
rst.addColumn(new Column({caption: L("lcl_faq_answer"), combine: true, content: "fac_faq_answer"}));
|
|
|
|
rst.addColumn(new Column({caption: L("lcl_faq_bron"), content: fnSource}));
|
|
rst.addColumn(new Column({caption: L("lcl_faq_datum"), content:"fac_faq_datum", datatype: "date"}));
|
|
|
|
// BOF altijd, FOF bij printen
|
|
if (authparamsBOF || (authparamsFOF && outputmode != 0))
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_vakgroup"), content: fnVakgroep}));
|
|
rst.addColumn(new Column({caption: L("lcl_complain"), content: fnStdmelding, combine: true}));
|
|
|
|
rst.addColumn(new Column({caption: L("lcl_faq_alg_scope"), content: fnScope}));
|
|
rst.addColumn(new Column({caption: L("lcl_plaatsgegevens"), content: fnPlaats, combine: true}));
|
|
|
|
if (fac_faq_lang == null)
|
|
rst.addColumn(new Column({caption: L("lcl_faq_lang"), content: "fac_faq_lang"}));
|
|
if (fac_faq_level < 0)
|
|
rst.addColumn(new Column({caption: L("lcl_faq_level"), content: fnLevel}));
|
|
}
|
|
if (outputmode != 0 && (authparamsBOF || authparamsFOF))
|
|
{ // Met printen wel tonen?
|
|
rst.addColumn(new Column({caption: L("lcl_faq_hint"), content: "fac_faq_hint"}));
|
|
rst.addColumn(new Column({caption: L("lcl_faq_link"), content: "fac_faq_url"}));
|
|
rst.addColumn(new Column({caption: L("lcl_faq_ingevoerd"), content: "aangepastdoor"}));
|
|
}
|
|
|
|
rst.addAction({ action: "faq_edit", caption: L("lcl_edit"), isDefault: true } );
|
|
var cnt = rst.processResultset();
|
|
|
|
return cnt;
|
|
}
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate({ outputmode: outputmode }); %>
|
|
<script>
|
|
function faq_edit(row) {
|
|
var faq_key = row.getAttribute("ROWKEY");
|
|
|
|
FcltMgr.openDetail("appl/fac/fac_faq.asp?urole=<%=urole%>&faq_key=" + faq_key, "<%=L("lcl_faq_item")%>");
|
|
}
|
|
</script>
|
|
</head>
|
|
<body id="listbody">
|
|
<%
|
|
if (searchtext != null)
|
|
{
|
|
var cnt = make_faq_list (searchtext);
|
|
}
|
|
%>
|
|
</body>
|
|
</html>
|
|
|