KFNS#38663 adding alg scoping to kennisbank items

svn path=/Website/trunk/; revision=33721
This commit is contained in:
2017-05-08 12:05:03 +00:00
parent 15dd332497
commit b2b9603681
3 changed files with 508 additions and 0 deletions

147
APPL/FAC/fac_alg_list.asp Normal file
View File

@@ -0,0 +1,147 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: fac_alg_list.asp
Description: Show an overview of alg_locatie & alg_v_onroerendgoed items in list-form,
which meets with the given requirements
Parameters:
Context: Include frame for fac_show_faq.
Note:
*/ %>
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../MLD/mld.inc" -->
<%
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
var showall = getQParamInt("showall", 0) == 1;
var faq_key = getQParamInt("faq_key");
var sql = "SELECT fac_faq_level"
+ " , fac_faq_datum"
+ " FROM fac_faq f"
+ " WHERE fac_faq_key = " + faq_key;
var oRs = Oracle.Execute(sql);
if (oRs.Eof)
shared.record_not_found("<!--" + faq_key + "-->");
var level = oRs("fac_faq_level").Value;
var datum = oRs("fac_faq_datum").Value;
var mustProf = (level & 1) == 0; // Alleen professionals
oRs.close();
var authparamsFAQUSE = user.checkAutorisation("WEB_FAQUSE", true); // Frontend mag ingevoerde items bekijken
var authparamsFAQFOF = user.checkAutorisation("WEB_FAQFOF", true); // Frontoffice mag items aanmaken en bewerken
var authparamsFAQBOF = user.checkAutorisation("WEB_FAQBOF", true); // Backoffice mag ingevoerde items publiceren (publicatie datum zetten/aanpassen)
user.auth_required_or_abort(authparamsFAQBOF || authparamsFAQFOF || (!mustProf && authparamsFAQUSE));
var canWriteFAQFOF = authparamsFAQFOF && authparamsFAQFOF.PRSwritelevel < 9 && authparamsFAQFOF.ALGwritelevel < 9;
var canWriteFAQBOF = authparamsFAQBOF && authparamsFAQBOF.PRSwritelevel < 9 && authparamsFAQBOF.ALGwritelevel < 9;
var canChange = canWriteFAQBOF || (canWriteFAQFOF && datum == null)
var addButton = [];
%>
<html>
<head>
<% FCLTHeader.Generate({outputmode:outputmode}) %>
<script type="text/javascript">
var autosearch = 1; //automatisch laden van resultaat op search pagina
function alg_algfaq()
{
FcltMgr.openModalDetail("../fac/fac_algfaq.asp?faq_key=<%=faq_key%>",
L("lcl_faq_algfaq"),
{ callback: FcltMgr.reload });
}
function faq_newmld(row)
{
var faqData = eval('(' + row.getAttribute("ROWDATA") + ')');
var locParam = "&loc_key="+faqData.loc_key;
var bldParam = "&bld_key="+faqData.bld_key;
var flrParam = "&flr_key="+faqData.flr_key;
var roomParam = "&room_key="+faqData.room_key;
FcltMgr.openDetail("appl/mld/mld_melding.asp?fromkb=1"+locParam+bldParam+flrParam+roomParam, "<%=L("lcl_add")%>");
}
</script>
</head>
<body id="listbody">
<%
function fnrowData(oRs)
{
var locatie_key = oRs("loc_key").Value;
var gebouw_key = oRs("bld_key").Value;
var verdieping_key = oRs("flr_key").Value;
var ruimte_key = oRs("room_key").Value;
var data = {loc_key:locatie_key, bld_key:gebouw_key, flr_key:verdieping_key, room_key:ruimte_key };
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
return { eAlg: canWriteFAQFOF || canWriteFAQBOF };
}
function fnScope(oRs)
{
switch (oRs("scope").Value)
{
case "L": return L("lcl_location");
case "G": return L("lcl_building");
case "T": return L("lcl_terra");
case "V": return L("lcl_floor");
case "R": return L("lcl_room");
}
return "";
}
if (canChange)
{
addButton = [{icon: "wijzigen.png", title: L("lcl_change"), action: "alg_algfaq()"}];
}
var sql = "SELECT f.alg_algfaq_key"
+ " , DECODE(o.alg_type, NULL, 'L', o.alg_type) scope"
+ " , l.alg_locatie_code ||"
+ " DECODE(o.alg_plaatsaanduiding, NULL, NULL, '-' || o.alg_plaatsaanduiding) plaats"
+ " , l.alg_locatie_key loc_key"
+ " , COALESCE(o.alg_gebouw_key, o.alg_terreinsector_key, -1) bld_key"
+ " , COALESCE(o.alg_verdieping_key, -1) flr_key"
+ " , COALESCE(o.alg_ruimte_key, -1) room_key"
+ " FROM alg_algfaq f"
+ " , alg_locatie l"
+ " , alg_v_onroerendgoed_gegevens o"
+ " WHERE f.alg_locatie_key = l.alg_locatie_key"
+ " AND f.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
+ " AND f.fac_faq_key = " + faq_key;
var rst = new ResultsetTable({ sql: sql
, keyColumn: "alg_algfaq_key"
, ID: "algfaqtable"
, noPrint: true
, showAll: showall
, rowData: fnrowData
, rowActionEnabler: fnrowActionEnabler
, outputmode: outputmode
, title: L("lcl_faq_voor_alg")
, buttons: addButton
});
rst.addColumn(new Column({caption: L("lcl_faq_alg_scope"), content: fnScope }));
rst.addColumn(new Column({caption: L("lcl_plaatsgegevens"), content: "plaats" }));
rst.addAction({action: "faq_newmld", caption: L("lcl_do_amelding_hint"), enabler: "eAlg" });
var cnt = rst.processResultset();
%>
</body>
</html>

233
APPL/FAC/fac_algfaq.asp Normal file
View File

@@ -0,0 +1,233 @@
<%@language = "javascript"%>
<% /*
$Revision$
$Id$
File: fac_algfaq.asp
Description: Laat aan een FAQ meerdere standaardmeldingen toevoegen
Parameters: faq_key: fac_faq_key waaraan de standaardmeldingen gekoppeld moeten worden
Context:
Note:
k
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"]
, js: ["./fac_algfaq.js"]
});
var faq_key = getQParamInt("faq_key");
var submitting = getQParamInt("submit", 0) == 1;
if (submitting)
{
protectRequest.validateToken();
FCLTHeader.Generate();
var nrRows = getFParamInt("nrRows", 0);
var loc_key = -1;
var onr_key = -1;
var loc_keys = [];
var onr_keys = [];
for (var i = 0; i < nrRows; i++)
{
loc_key = getFParamInt("loc" + i, -1);
onr_key = getFParamInt("onr" + i, -1);
if (loc_key > 0)
{
loc_keys.push(loc_key);
onr_keys.push(onr_key);
}
}
// Alles van deze kennisbank-item Verwijderen
var sql = "DELETE alg_algfaq"
+ " WHERE fac_faq_key = " + faq_key;
Oracle.Execute(sql);
// Alle regels uit de popup toevoegen.
for (var i = 0; i < loc_keys.length; i++)
{
{
var sql = "INSERT INTO alg_algfaq "
+ " (fac_faq_key, alg_locatie_key, alg_onroerendgoed_keys)"
+ " VALUES (" + faq_key
+ "," + loc_keys[i]
+ "," + ((onr_keys[i] > 0) ? onr_keys[i] : "NULL")
+ ")";
Oracle.Execute(sql);
}
}
%>
<script type="text/javascript">
FcltMgr.closeDetail(window, { success: true });
</script>
<%
}
else
{
var loc_key = -1;
var bld_key = -1;
var flr_key = -1;
var room_key = -1;
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function onChangeAlg(alg_level)
{
if ($("#locatiekey").val() > 0)
{
var alg_key = -1;
var loc_key = $("#locatiekey").val();
switch (alg_level)
{
case 3: alg_key = $("#gebouwkey").val(); break;
case 4: alg_key = $("#verdiepingkey").val(); break;
case 5: alg_key = $("#ruimtekey").val(); break;
}
$.getJSON("../mld/get_mld_info_ajax.asp",
{ req_info: "alg_algfaq_info",
loc_key: loc_key,
alg_key: alg_key },
process_algfaq_info);
}
}
function process_algfaq_info(data)
{
$("#scope").val(fnScope(data.scope));
$("#plaats").val(data.plaats);
}
function fnScope(scopeAbbr)
{
switch (scopeAbbr)
{
case "L": return L("lcl_location");
case "G": return L("lcl_building");
case "T": return L("lcl_terra");
case "V": return L("lcl_floor");
case "R": return L("lcl_room");
}
return "";
}
</script>
</head>
<body class="modal" id="mod_algfaq">
<form name="u2" method="post" action="fac_algfaq.asp?submit=1&faq_key=<%=faq_key%>">
<input type="hidden" id="nrRows" name="nrRows" value="0">
<input type="hidden" id="plaats" name="plaats" value="">
<input type="hidden" id="scope" name="scope" value="">
<%
BLOCK_START("");
// <!-- Toevoegen -->
// Plaats
FCLTplaatsselector("", // TODO
{ label: L("lcl_plaatsgegevens"),
locatiekey: loc_key,
gebouwkey: bld_key,
verdiepingkey: flr_key,
ruimtekey: room_key,
onLocChange: "onChangeAlg(2)",
onGebChange: "onChangeAlg(3)",
onVerChange: "onChangeAlg(4)",
onRuiChange: "onChangeAlg(5)",
startlevel: 2, // Locatie
eindlevel: 5 // Ruimte
});
%>
<tr>
<td class="label" colspan="2">
<label for="algfaqtable" style="white-space: nowrap"><%=L("lcl_faq_voor_alg")%>:&nbsp;</label>
</td>
</tr>
<tr>
<td colspan="2">
<table id="algfaqtable" cellspacing=0 cellpadding=0 class="rstable">
<thead>
<tr>
<th style='width:15px'></th>
<th><%=L("lcl_faq_alg_scope")%></th>
<th><%=L("lcl_plaatsgegevens")%></th>
</tr>
</thead>
<tbody>
<%
var sql = "SELECT f.alg_algfaq_key"
+ " , DECODE(o.alg_type, NULL, 'L', o.alg_type) scope"
+ " , l.alg_locatie_code ||"
+ " DECODE(o.alg_plaatsaanduiding, NULL, NULL, '-' || o.alg_plaatsaanduiding) plaats"
+ " , l.alg_locatie_key loc_key"
+ " , COALESCE(o.alg_gebouw_key, o.alg_terreinsector_key, -1) bld_key"
+ " , COALESCE(o.alg_verdieping_key, -1) flr_key"
+ " , COALESCE(o.alg_ruimte_key, -1) room_key"
+ " FROM alg_algfaq f"
+ " , alg_locatie l"
+ " , alg_v_onroerendgoed_gegevens o"
+ " WHERE f.alg_locatie_key = l.alg_locatie_key"
+ " AND f.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)"
+ " AND f.fac_faq_key = " + faq_key;
oRs = Oracle.Execute(sql);
var teller = 0;
while (!oRs.eof)
{
teller++;
%>
<script type="text/javascript">
var onr_key = -1;
var rk = <%=oRs("room_key").value%>;
var vk = <%=oRs("flr_key").value%>;
var gk = <%=oRs("bld_key").value%>;
if (rk > -1)
onr_key = rk;
else if (vk > -1)
onr_key = vk;
else if (gk > -1)
onr_key = gk;
CreateRow(<%=oRs("loc_key").value%>
,onr_key
,fnScope("<%=oRs("scope").value%>")
,'<%=safe.jsstring(oRs("plaats").value)%>'
);
</script>
<%
oRs.MoveNext();
}
%>
</tbody>
</table>
</td>
</tr>
<%
BLOCK_END();
var buttons = [ {title: L("lcl_add"), icon: "submit.png", action: "fac_add()" }
, {title: L("lcl_submit"), icon: "undo.png", action: "fac_submit()" }
];
CreateButtons(buttons);
IFACE.FORM_END();
%>
</form>
</body>
</html>
<%
}
%>

128
APPL/FAC/fac_algfaq.js Normal file
View File

@@ -0,0 +1,128 @@
/*
$Revision$
$Id$
File: fac_stdmeldingfaq.js
*/
var rowIndex = -1;
var multiFAQ = true;
function onClickItem(tr)
{
// Wordt aangeroepen na <20><>n klik op een item
$(tr).toggleClass("selected");
}
function onDblClickItem(tr)
{
$(tr).closest("table").find("tr").removeClass("selected"); // Alle andere regels deselecteren
$(tr).addClass("selected");
window.parent.doSubmit();
}
function setMultiFAQ(aantal)
{
multiFAQ = (aantal != 1);
}
function CreateRow(loc_key, onr_key, scope, plaats)
{
rowIndex++;
var table = $("#algfaqtable>tbody")[0];
// Insert data rows
tr = table.insertRow(-1);
tr.myData = { loc_key: loc_key
, onr_key: onr_key
};
tr.value = rowIndex;
// Create drop button
cell = tr.insertCell(-1);
cell.className = "result";
cell.align = "center";
cell.innerHTML = "<i class='fa fa-fw fa-trash' OnClick='delRow(this)' style='cursor:pointer'></i>";
// innerHTML opent een htmlparser die overbodige spaties en line breaks verwijderd in IE, daarom met innerText oplossen
// Input velden moeten wel met innerHTML of outerHTML anders wordt het text
// Vakgroep omschrijving veld
cell = tr.insertCell(-1);
cell.className = "result";
cell.innerHTML = scope;
cell.align = "left";
cell.style.whiteSpace = "nowrap";
// Stdmelding omschrijving veld
cell = tr.insertCell(-1);
cell.className = "result";
cell.innerHTML = plaats;
cell.align = "left";
cell.style.whiteSpace = "nowrap";
// Data velden
cell = tr.insertCell(-1);
cell.className = "result";
cell.innerHTML = "<input type='hidden' id='loc" + rowIndex + "' name='loc" + rowIndex + "' value='" + loc_key + "'></input>"
+ "<input type='hidden' id='onr" + rowIndex + "' name='onr" + rowIndex + "' value='" + onr_key + "'></input>";
cell.align = 'left';
document.getElementById("nrRows").value = parseInt(rowIndex) + 1;
}
function delRow(img)
{
// Verwijder de aangeklikte afdeling uit de lijst (de regel)
FcltMgr.confirm(L("lcl_faq_del_alg"), function() {
var tr = $(img).closest("tr")[0];
if (tr.myData.loc_key != null) {
document.getElementById("algfaqtable").deleteRow(tr.rowIndex);
}
});
}
function fac_submit()
{
document.forms.u2.submit();
}
function fac_add()
{
if ($("#locatiekey").val() > 0)
{
var exist = false;
var this_onr_key = -1;
switch ($("#scope").val())
{
case "Ruimte": this_onr_key = $("#ruimtekey").val(); break;
case "Verdieping": this_onr_key = $("#verdiepingkey").val(); break;
case "Gebouw":
case "Terrein": this_onr_key = $("#gebouwkey").val(); break;
}
$("#algfaqtable tr").each(function(i, value)
{
if (this.myData
&& ($("#locatiekey").val() == this.myData.loc_key)
&& (this_onr_key == this.myData.onr_key)
)
{
exist = true;
}
});
if (!exist)
{
CreateRow( $("#locatiekey").val()
, this_onr_key
, $("#scope").val()
, $("#plaats").val()
);
FcltMgr.resized(window);
}
}
}