Files
Facilitor/APPL/INS/ins_deeldocumenten.asp
Koen Reefman e7b952f56a Merge 2025.2 RC2 patches (ongoing)
svn path=/Website/trunk/; revision=69511
2025-06-23 07:36:36 +00:00

202 lines
11 KiB
Plaintext

<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: ins_deeldocumenten.asp
Description: Toont alle documenten die gerelateerd zijn aan dit object, als antwoord op het gebrek aan overzicht
dat je hebt als je allerlei taken met rapporten en certificaten enz. hebt.
Dat zijn:
- bijlagen in een flexkenmerk van het object zelf
- bijlagen bij een flexkenmerk van een taak van het object
Het overzicht is standaard chronologisch descending, nieuwste document bovenaan.
Voor objecten hebben dit nog (uit: Help), dat gehoorzamen we
rolcode&1 zijn zichtbaar met WEB_INSMAN
rolcode&2 zijn zichtbaar met WEB_INSUSE (PF: en <= 900 toch?)
rolcode&4 zijn zichtbaar met WEB_INSFOF (tbv uitleenregistratie)
Parameters: ins_key (required)
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="ins.inc" -->
<%
FCLTHeader.Requires({ js: ["jquery-ui.js"]});
var ins_key = getQParamInt("ins_key");
var outputmode = getQParamInt("outputmode", 0);
var filenamelength = 49; // constante. Keuze, normaal maken we ook van 50+ een textarea
// Algemene autorisatiecheck
var this_ins = ins.func_enabled_deel(ins_key); // Wat heb ik zoal aan rechten op dit object?
user.auth_required_or_abort(this_ins.canReadAny); // Heb ik enige lees rechten op dit object?
// Ik mag dus sowieso iets. Nou moet ik vooral weten wat ik evt niet mag voor km.ins_kenmerk_rolcode
var readman = this_ins.readman;
var readuse = this_ins.readuse;
var readfof = this_ins.writefof; // niet erg logisch, maar ook niet onmogelijk. readfof wordt niet eens bepaald..
var readallekenmerken = readman && readuse && readfof;
var readmanusekenmerken = readman && readuse && !readfof;
%>
<html>
<head>
<% FCLTHeader.Generate({outputmode: outputmode}); %>
</head>
<body id="listbody">
<%
function fnFilename (oRs)
{
var retval;
if (outputmode == 0) // op het scherm
{
var href = protectQS.create(OpenFlexFile("INS", oRs("fac_bijlagen_key").value, {}));
retval = "<span class='details' readonly=1 title='{0}'".format(oRs("fac_bijlagen_filename").value)
+ " onclick='FcltMgr.windowopen(\"" + safe.jsstring(href) + "\")', 'File')'>" + safe.html(shorten(oRs("fac_bijlagen_filename").value, filenamelength, {"middle": true})) + "</span>";
}
else
{
retval = safe.html(oRs("fac_bijlagen_filename").value); // unshortened plain
}
return retval;
}
function fnFilesize (oRs)
{
return safe.html("{0} kB".format(safe.showFloat(Math.round(oRs("fac_bijlagen_file_size").value / 1024),0)));
}
// Het kan me niet schelen hoe een bestandskenmerk aan dit object of taak (srtcontrole) gekoppeld is
// /* D=Discipline, G=Objectgroep, S=Objectsoort, T=Alle taken, C=Periodiek taken, E=Taakcategorie */
// Iemand zou kunnen vinden dat alleen de bijlagen van de laatste taak opgenomen zou moeten worden,
// maar waarom zouden we niet het hele archief tonen? Vandaar op datum, nieuwste bovenaan.
// Qua autorisatie disciplines, rolcodes meenemen zodat
// er autorisaties toegepast kunnen worden:
// - ik mag mogelijk niet alle taken zien, dus ook de daarbij behorende (bijlage)kenmerken niet
// Wat mag ik op basis van mijn autorisatie en deze situatie zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (readman ? 1 : 0)
+ (readuse ? 2 : 0)
+ (readfof ? 4 : 0);
// Kenmerken van het type Map (folder met files) worden niet in ins_kmdeelsrtcontr geregistreerd.
// Voor het type File weet ik het niet, maar anders zou dat deze query moeten zijn. Het duurde even
// voordat me dit duidelijk werd. Volgens mij is het een rare keuze. Moet nog nagaan of dat voor
// F en E ook geldt, dan is deze nooit nodig.
// var sql = "SELECT d.ins_deel_omschrijving "
// + " , fb.fac_bijlagen_key "
// + " , km.ins_kenmerk_code "
// + " , isc.ins_srtcontrole_omschrijving "
// + " , COALESCE (km.ins_kenmerk_omschrijving, skm.ins_srtkenmerk_omschrijving) kenmerk_omschrijving "
// + " , fb.fac_bijlagen_file_size "
// + " , fb.fac_bijlagen_filename "
// + " , fb.fac_bijlagen_aanmaak "
// + " FROM fac_bijlagen fb "
// + " , ins_deel d "
// + " , ins_kmdeelsrtcontr kmdsc "
// + " , ins_kenmerk km "
// + " , ins_srtkenmerk skm "
// + " , ins_srtcontrole isc "
// + " , ins_deelsrtcontrole idsc "
// + " WHERE kmdsc.ins_deelsrtcontrole_key = fb.fac_bijlagen_refkey "
// + " AND kmdsc.ins_kenmerk_key = fb.fac_bijlagen_kenmerk_key "
// + " AND kmdsc.ins_deelsrtcontrole_key = idsc.ins_deelsrtcontrole_key "
// + " AND kmdsc.ins_kenmerk_key = km.ins_kenmerk_key "
// + " AND km.ins_srtkenmerk_key = skm.ins_srtkenmerk_key "
// + " AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key "
// + " AND idsc.ins_deel_key = d.ins_deel_key "
// + " AND km.ins_kenmerk_niveau IN ('T', 'C', 'E') "
// + " AND d.ins_deel_key = " + ins_key;
var sql_taakbijlagen = "SELECT d.ins_deel_omschrijving "
+ " , fb.fac_bijlagen_key "
+ " , km.ins_kenmerk_code "
+ " , isc.ins_srtcontrole_omschrijving "
+ " , COALESCE (km.ins_kenmerk_omschrijving, skm.ins_srtkenmerk_omschrijving) kenmerk_omschrijving "
+ " , fb.fac_bijlagen_file_size "
+ " , fb.fac_bijlagen_filename "
+ " , fb.fac_bijlagen_aanmaak "
+ " FROM fac_bijlagen fb "
+ " , ins_deel d "
+ " , ins_kenmerk km "
+ " , ins_srtkenmerk skm "
+ " , ins_srtcontrole isc "
+ " , ins_deelsrtcontrole idsc "
+ " WHERE idsc.ins_deelsrtcontrole_key = fb.fac_bijlagen_refkey "
+ " AND km.ins_kenmerk_key = fb.fac_bijlagen_kenmerk_key "
+ " AND fb.fac_bijlagen_module = 'INS' "
+ " AND km.ins_srtkenmerk_key = skm.ins_srtkenmerk_key "
+ " AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key "
+ " AND isc.ins_scenario_key = 1 " // alleen echte, afwijking is helemaal niet aannemelijk maar je weet nooit
+ " AND idsc.ins_deel_key = d.ins_deel_key "
+ " AND km.ins_kenmerk_niveau IN ('T', 'C', 'E') " // bij taken
+ " AND isc.ctr_discipline_key IN (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " , fac_functie f"
+ " WHERE w.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code IN ('WEB_CTRUSE','WEB_CTRAFR','WEB_CTRFOF','WEB_CTRFOF')"
+ " AND w.fac_gebruiker_prs_level_read < 9"
+ " AND w.fac_gebruiker_alg_level_read < 9"
+ " AND w.prs_perslid_key = " + user_key + ")"
+ " AND d.ins_deel_key = " + ins_key;
var sql_deelbijlagen = "SELECT d.ins_deel_omschrijving "
+ " , fb.fac_bijlagen_key "
+ " , km.ins_kenmerk_code "
+ " , NULL "
+ " , COALESCE (km.ins_kenmerk_omschrijving, skm.ins_srtkenmerk_omschrijving) kenmerk_omschrijving "
+ " , fb.fac_bijlagen_file_size "
+ " , fb.fac_bijlagen_filename "
+ " , fb.fac_bijlagen_aanmaak "
+ " FROM fac_bijlagen fb "
+ " , ins_v_aanwezigdeel d "
+ " , ins_kenmerk km "
+ " , ins_srtkenmerk skm "
+ " WHERE fac_bijlagen_module = 'INS' "
+ " AND d.ins_deel_key = fb.fac_bijlagen_refkey "
+ " AND fb.fac_bijlagen_kenmerk_key = km.ins_kenmerk_key(+) "
+ " AND skm.ins_srtkenmerk_key = km.ins_srtkenmerk_key "
+ " AND km.ins_kenmerk_niveau NOT IN ('T','C','E') " // niet bij taken
+ " AND BITAND(km.ins_kenmerk_rolcode, " + myreadrolcode + ") > 0"
+ " AND d.ins_deel_key = " + ins_key;
var sql_allebijlagen = sql_taakbijlagen + " UNION " + sql_deelbijlagen
+ " ORDER BY ins_deel_omschrijving, fac_bijlagen_aanmaak DESC, 3, 4";
var buttons = [];
buttons.push({ icon: "fa-columns", title: L("lcl_scf_columns"), action: "openColumns()"});
var rst = new ResultsetTable({ keyColumn: "fac_bijlagen_key",
sql: sql_allebijlagen,
ID: "insdoctable",
tabs_code: "insdoctable",
buttons: buttons,
showAll: true,
outputmode: outputmode,
title: L("lcl_ins_bijlagen")
});
rst.addColumn(new Column({caption: L("lcl_ins_object"), content: "ins_deel_omschrijving", purpose: PRINTING_ONLY})); // want dit is een subtab van dit object
rst.addColumn(new Column({caption: L("lcl_date"), content: "fac_bijlagen_aanmaak", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_ins_controle"), content: "ins_srtcontrole_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_obj_prop_dsc"), content: "kenmerk_omschrijving", nowrap: true}));
rst.addColumn(new Column({caption: L("lcl_filename"), content: fnFilename, colName: "fnFilename"}));
rst.addColumn(new Column({caption: L("lcl_filesize"), content: fnFilesize, colName: "fnFilesize", datatype: "number" })); // number zorgt dat ik nog kan sorteren (ondanks de kB tekst)
// no actions
var cnt = rst.processResultset();
%>
</body>
</html>
<% ASPPAGE_END(); %>