AKZA#36634 ALG: "Multi wijzigen" flexkenmerken voor ruimtes

svn path=/Website/trunk/; revision=29891
This commit is contained in:
Erik Groener
2016-06-29 11:53:31 +00:00
parent c62d7aac6b
commit 2a6c4103a9
4 changed files with 319 additions and 5 deletions

View File

@@ -0,0 +1,212 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: alg_edit_ruimte_multi.asp
Description: Multi editten van de flexkenmerken van ruimtes
Parameters: alg_keys
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="./alg_flexkenmerk.inc" -->
<!-- #include file="./alg.inc" -->
<%
FCLTHeader.Requires({ plugins:["suggest", "jQuery", "kenmerk"] });
var alg_key_arr = getQParamIntArray("alg_keys");
var alg_level = getQParam("alg_level");
var warning = "";
var result = {};
var tobeedited = 0;
var ingesloten = [];
// Bepaal de ruimtes in de selectie die
// ook echt bewerkt kunnen of mogen worden.
for (var i = 0; i < alg_key_arr.length; i++)
{
var this_alg = alg.func_enabled(alg_key_arr[i], "R");
if (this_alg.writeman || this_alg.writeuse)
{
ingesloten.push(alg_key_arr[i]);
tobeedited++;
var last_this_alg = this_alg; // deze gebruiken we voor rechtencontrole. Niet 100% zuiver maar goed genoeg
}
}
user.auth_required_or_abort(tobeedited > 0); // We klagen niet over enkele wel en enkele niet
/*
var sql = "SELECT alg_srtruimte_key"
+ " , mld_dienstniveau_key"
+ " , alg_ruimte_omschrijving"
+ " , alg_ruimte_opmerking"
+ " , alg_ruimte_beginuur"
+ " , alg_ruimte_einduur"
+ " , alg_ruimte_werkdagen"
+ " FROM alg_ruimte"
+ " WHERE alg_ruimte_key in (" + ingesloten.join(",") + ")";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var diff = { srtruimte_key: oRs("alg_srtruimte_key").Value,
dienstniveau_key: oRs("mld_dienstniveau_key").Value,
omschrijving: oRs("alg_ruimte_omschrijving").Value,
opmerking: oRs("alg_ruimte_opmerking").Value,
beginuur: oRs("alg_ruimte_beginuur").Value,
einduur: oRs("alg_ruimte_einduur").Value,
werkdagen: oRs("alg_ruimte_werkdagen").Value
};
var i = 0;
while (!oRs.eof)
{
i++;
if (diff.srtruimte_key != oRs("alg_srtruimte_key").Value) diff.srtruimte_key = null;
if (diff.dienstniveau_key != oRs("mld_dienstniveau_key").Value) diff.dienstniveau_key = null;
if (diff.omschrijving != oRs("alg_ruimte_omschrijving").Value) diff.omschrijving = null;
if (diff.opmerking != oRs("alg_ruimte_opmerking").Value) diff.opmerking = null;
if (diff.beginuur != oRs("alg_ruimte_beginuur").Value) diff.beginuur = null;
if (diff.einduur != oRs("alg_ruimte_einduur").Value) diff.einduur = null;
if (diff.werkdagen != oRs("alg_ruimte_werkdagen").Value) diff.werkdagen = null;
oRs.MoveNext();
}
}
oRs.Close();
*/
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function alg_submit()
{
$.post($("form[name=u2]")[0].action,
$("[name=u2]").serialize(),
FcltCallbackAndThenAlways(alg_submit_callback),
"json");
return true; // disable button
}
function alg_submit_callback(json)
{
iface.button.enable("btn_alg_submit");
if (json.success)
FcltMgr.closeDetail(window, json);
}
function alg_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
</script>
</head>
<body class="modal" id="mod_algmultiedit">
<form name="u2" action="alg_edit_ruimte_multi_save.asp?alg_level=<%=alg_level%>&alg_keys=<%=ingesloten.join(",")%>" method="post">
<%
/*
if (last_this_alg.writeman || last_this_alg.writeuse)
{
BLOCK_START("algFlex", L("lcl_ins_meta_data"));
// ruimte specifieke velden
if (last_this_alg.writeman)
{
sql = "SELECT alg_srtruimte_key"
+ " , " + lcl.xsqla("alg_srtruimte_omschrijving", "alg_srtruimte_key")
+ " FROM alg_v_aanwezigsrtruimte"
+ " ORDER BY UPPER("+lcl.xsql("alg_srtruimte_omschrijving", "alg_srtruimte_key")+")";
FCLTselector( "room_srt",
sql,
{ label: L("lcl_estate_ruimte_man_sort"),
initKey: (diff.srtruimte_key ? diff.srtruimte_key : -1),
emptyOption: ""
});
}
if (last_this_alg.writeuse)
{
sql = "SELECT mld_dienstniveau_key"
+ " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key")
+ " FROM mld_dienstniveau"
+ " ORDER BY UPPER("+lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key")+")";
FCLTselector( "dienstniveau",
sql,
{ label: L("lcl_mld_dienst_niveau"),
initKey: (diff.dienstniveau_key ? diff.dienstniveau_key : -1),
emptyOption: ""
});
RWFIELDTR("room_oms", "fld", L("lcl_estate_ruimte_man_descr"), diff.omschrijving, {maxlength: 30});
}
if (last_this_alg.writeman)
{
RWFIELDTR("room_opm", "fld", L("lcl_estate_ruimte_man_opmerk"), diff.opmerking, {maxlength: 50});
var times = [];
for (i=0; i<24; i++)
{
sql = " SELECT " + String(i+0/4) + ", '" + String(i) + ":00' FROM DUAL"
+ " UNION ALL SELECT " + String(i+1/4) + ", '" + String(i) + ":15' FROM DUAL"
+ " UNION ALL SELECT " + String(i+2/4) + ", '" + String(i) + ":30' FROM DUAL"
+ " UNION ALL SELECT " + String(i+3/4) + ", '" + String(i) + ":45' FROM DUAL"
times.push(sql);
}
FCLTselector( "room_beginuur",
times.join(" UNION ALL "),
{ label: L("lcl_estate_gebouw_beginuur"),
initKey: diff.beginuur,
emptyOption: ""
}
);
FCLTselector( "room_einduur",
times.join(" UNION ALL "),
{ label: L("lcl_estate_gebouw_einduur"),
initKey: diff.einduur,
emptyOption: ""
}
);
sql = " SELECT null, " + safe.quoted_sql(L("lcl_alg_ruimte_volgens_gebouw")) + " FROM DUAL"
+ " UNION ALL SELECT 0, " + safe.quoted_sql(L("lcl_No")) + " FROM DUAL"
+ " UNION ALL SELECT 1, " + safe.quoted_sql(L("lcl_Yes")) + " FROM DUAL";
FCLTselector( "room_werkdagen",
sql,
{ label: L("lcl_estate_gebouw_werkdagen"),
initKey: diff.werkdagen
}
);
}
BLOCK_END();
}
*/
generateFlexKenmerkBlock({
fnpre: function () {BLOCK_START("algMultiEdit", L("lcl_flexible_properties"));},
fnpost: BLOCK_END,
onrgoed_niveau: "R",
onrgoed_key: -1,
this_alg: last_this_alg,
reado: false,
multi: true,
flexcolumns: 1 // altijd want popup
});
var buttons = [];
buttons.push({title: L("lcl_submit"), action: "alg_submit()", singlepress: true, id: "btn_alg_submit"});
buttons.push({title: L("lcl_cancel"), action: "alg_cancel()"});
CreateButtons(buttons);
IFACE.FORM_END();
%>
</form>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: alg_edit_ruimte_multi_save.asp
Description: save script van alg_edit_ruimte_multi.asp
Globalen:
Context:
Note:
*/
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="./alg.inc" -->
<%
//protectRequest.validateToken();
var alg_key_arr = getQParamIntArray("alg_keys");
var alg_level = getQParam("alg_level");
var warning = "";
var result = {};
var nr_edited = 0;
for (var i = 0; i < alg_key_arr.length; i++)
{
var alg_key = alg_key_arr[i];
var this_alg = alg.func_enabled(alg_key, "R");
if (this_alg.writeman || this_alg.writeuse)
{
// Ik mag de ruimte wijzigen dus voer wijziging uit
var fields = [];
var algUpd = buildTrackingUpdate("alg_ruimte", " alg_ruimte_key = " + alg_key, fields);
// // Submit the changed data
// var err = Oracle.Execute(algUpd.sql, true);
// if (err.friendlyMsg)
// warning = err.friendlyMsg;
currentKenmerkenSQL = "SELECT k.alg_kenmerk_key"
+ " , ok.alg_onrgoedkenmerk_waarde"
+ " FROM alg_onrgoedkenmerk ok"
+ " , alg_kenmerk k"
+ " WHERE ok.alg_kenmerk_key = k.alg_kenmerk_key"
+ " AND ok.alg_onrgoedkenmerk_verwijder IS NULL"
+ " AND ok.alg_onrgoed_niveau = " + safe.quoted_sql(alg_level)
+ " AND ok.alg_onrgoed_key = " + alg_key;
allKenmerkenSQL = "SELECT " + lcl.xsql('k.alg_kenmerk_omschrijving', 'k.alg_kenmerk_key') + " kenmerk_omschrijving"
+ ", fac_kenmerkdomein_key"
+ " FROM alg_kenmerk k"
+ " WHERE k.alg_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
var flextrack = saveFlexKenmerken(ingesloten[i],
{ kenmerkTable: "alg_onrgoedkenmerk",
kenmerkParentKey : "alg_onrgoed_key",
kenmerkWaarde: "alg_onrgoedkenmerk_waarde",
kenmerkKey: "alg_kenmerk_key",
currentKenmerkenSQL: currentKenmerkenSQL,
allKenmerkenSQL: allKenmerkenSQL,
requestQF: Request.Form,
flexPath: "ALG/R",
multiMode: true,
tracking: true,
module: "ALG",
moduleName: "alg_onrgoed_niveau",
moduleVal: alg_level
});
var update_string = L("lcl_alg_is_algrup") + "\n" + algUpd.trackarray.join("\n");
shared.trackaction("ALGRUP", alg_key, update_string);
nr_edited++;
}
}
result = { success : true, refresh: true };
Response.Write(JSON.stringify(result));
Response.End;
%>

View File

@@ -49,6 +49,12 @@ function generateFlexKenmerkBlock(params)
return true; return true;
} }
function isInvisible(volgnummer, ktype)
{
if (params.multi)
return (ktype == 'M' || ktype == 'F' || ktype == 'E'); // onzichtbaar bij multi
}
var sql = "SELECT k.alg_kenmerk_key kenmerk_key, " var sql = "SELECT k.alg_kenmerk_key kenmerk_key, "
+ lcl.xsql('k.alg_kenmerk_omschrijving', 'k.alg_kenmerk_key') +" kenmerk_omschrijving, " + lcl.xsql('k.alg_kenmerk_omschrijving', 'k.alg_kenmerk_key') +" kenmerk_omschrijving, "
+ " k.alg_kenmerk_kenmerktype kenmerk_kenmerktype, " + " k.alg_kenmerk_kenmerktype kenmerk_kenmerktype, "
@@ -95,6 +101,7 @@ function generateFlexKenmerkBlock(params)
hideVervallen: onrgoed_key<0, hideVervallen: onrgoed_key<0,
fnpre: params.fnpre, fnpre: params.fnpre,
fnpost: params.fnpost, fnpost: params.fnpost,
fnIsInvisible: isInvisible,
mobile: params.mobile, mobile: params.mobile,
parentKey: onrgoed_key, parentKey: onrgoed_key,
kenmerk_module: onrgoed_niveau } kenmerk_module: onrgoed_niveau }

View File

@@ -67,6 +67,14 @@ function ruimte_list(pautfunction, params)
FcltMgr.openDetail(url, "<%=L("lcl_room")%>" + ' ' + algData.oms); FcltMgr.openDetail(url, "<%=L("lcl_room")%>" + ' ' + algData.oms);
} }
function ruimteEditMulti(rowArray)
{
var algKeyString = getKeyString(rowArray);
var subject = L("lcl_alg_multi_edit");
var url = "../alg/alg_edit_ruimte_multi.asp?alg_level=R&alg_keys=" + algKeyString;
FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
}
function doRuimteAfdeling(rowArray) function doRuimteAfdeling(rowArray)
{ {
var ruimteArr = []; var ruimteArr = [];
@@ -167,15 +175,15 @@ function ruimte_list(pautfunction, params)
{ {
sqln += " AND UPPER(r.alg_ruimte_omschrijving) LIKE " + safe.quoted_sql_wild("%" + area_descr + "%"); sqln += " AND UPPER(r.alg_ruimte_omschrijving) LIKE " + safe.quoted_sql_wild("%" + area_descr + "%");
} }
if (dept) if (dept)
{ {
sqln += " AND r.alg_ruimte_key in " sqln += " AND r.alg_ruimte_key in "
+ " (SELECT alg_ruimte_key " + " (SELECT alg_ruimte_key "
+ " FROM prs_ruimteafdeling " + " FROM prs_ruimteafdeling "
+ " WHERE prs_ruimteafdeling_verwijder IS NULL " + " WHERE prs_ruimteafdeling_verwijder IS NULL "
+ " AND prs_afdeling_key = " + dept + ")"; + " AND prs_afdeling_key = " + dept + ")";
} }
sqln += " ORDER BY l.alg_locatie_upper ASC" sqln += " ORDER BY l.alg_locatie_upper ASC"
+ ", g.alg_gebouw_upper ASC" + ", g.alg_gebouw_upper ASC"
@@ -199,14 +207,15 @@ function ruimte_list(pautfunction, params)
{ {
if (!floorCache[oRs("alg_verdieping_key").Value]) if (!floorCache[oRs("alg_verdieping_key").Value])
{ {
eEditMulti = true;
floorCache[oRs("alg_verdieping_key").Value] = floorCache[oRs("alg_verdieping_key").Value] =
{ {
eDelete: alg.canWriteVerdieping(oRs("alg_verdieping_key").Value, authparams.rmALGwritelevel), eDelete: alg.canWriteVerdieping(oRs("alg_verdieping_key").Value, authparams.rmALGwritelevel),
// Bezetting moet per regel en is afhankelijk van WEB_PRSBOF (werkplekbeheer) // Bezetting moet per regel en is afhankelijk van WEB_PRSBOF (werkplekbeheer)
eBezetting: alg.func_enabled_ruimte(oRs("alg_verdieping_key").Value).canPRSBOFwrite eBezetting: alg.func_enabled_ruimte(oRs("alg_verdieping_key").Value).canPRSBOFwrite,
eEditMulti: eEditMulti
} }
} }
return (floorCache[oRs("alg_verdieping_key").Value]); return (floorCache[oRs("alg_verdieping_key").Value]);
} }
@@ -271,6 +280,7 @@ function ruimte_list(pautfunction, params)
} }
rst.addAction({ action: "ruimteEdit", caption: L("lcl_edit"), isDefault: true }); rst.addAction({ action: "ruimteEdit", caption: L("lcl_edit"), isDefault: true });
rst.addAction({ action: "ruimteEditMulti", caption: L("lcl_alg_multi_edit"), multi: true, multiOnce: true, single: false, enabler: "eEditMulti"});
rst.addAction({ action: "doDelete", caption: L("lcl_delete"), multi: true, single: !noref, enabler: "eDelete" }); rst.addAction({ action: "doDelete", caption: L("lcl_delete"), multi: true, single: !noref, enabler: "eDelete" });
rst.addAction({ action: "doRuimteAfdeling", caption: L("lcl_alg_bezetting"), multi: true, multiOnce: true, enabler: "eBezetting" }); rst.addAction({ action: "doRuimteAfdeling", caption: L("lcl_alg_bezetting"), multi: true, multiOnce: true, enabler: "eBezetting" });
if (!noref) if (!noref)