PROR#89199 Per melding slechts één object selecteren

svn path=/Website/trunk/; revision=70097
This commit is contained in:
Erik Groener
2025-08-25 12:56:27 +00:00
parent b247ee2fa9
commit 96daf3e9cb
6 changed files with 63 additions and 31 deletions

View File

@@ -497,6 +497,14 @@ function model_mld_stdmelding()
"emptyoption": null,
"multiedit": true
},
"objectsallowed": {
"dbs": "mld_stdmelding_objects_allowed",
"typ": "number",
"label": L("mld_stdmelding_objects_allowed"),
"LOV": L("mld_stdmelding_objects_allowed_LOV"),
"emptyoption": null,
"defaultvalue": 2
},
"externallink": {
"dbs": "mld_stdmelding_externurl",
"typ": "varchar",

View File

@@ -159,7 +159,8 @@ var this_params = {
"showobject",
"personalobjects",
"departmentobjects", // --> personalobjectscope
"statusobjrequired"
"statusobjrequired",
"objectsallowed"
]
},
{

View File

@@ -4363,10 +4363,10 @@ mld = {
mld_stdmeldinginfo:
function _mld_stdmelding(mld_stdmelding_key) {
var sql = "SELECT " + lcl.xsqla('ms.mld_stdmelding_omschrijving','ms.mld_stdmelding_key')
+ " , mld_stdmelding_omschrijving mld_stdm_omschrijving_dblang"
+ " , mld_stdmelding_volgnr"
+ " , ms.mld_stdmelding_omschrijving mld_stdm_omschrijving_dblang"
+ " , ms.mld_stdmelding_volgnr"
+ " , md.ins_discipline_key"
+ " , mld_stdmeldinggroep_key"
+ " , ms.mld_stdmeldinggroep_key"
+ " , DECODE(COALESCE(sd.ins_srtdiscipline_prefix, ''), '', '', sd.ins_srtdiscipline_prefix) prefix"
+ ", "+ lcl.xsqla('sd.ins_srtdiscipline_omschrijving', 'sd.ins_srtdiscipline_key')
+ " , " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
@@ -4400,7 +4400,7 @@ mld = {
+ " , dp.mld_disc_params_frontendprio"
+ " , dp.mld_disc_params_eigen_kp"
+ " , ms.mld_stdmelding_notfrontend"
+ " , mld_stdmelding_notify"
+ " , ms.mld_stdmelding_notify"
+ " , ms.prs_kostensoort_key"
+ " , ms.prs_kostenplaats_key"
+ " , " + S("prs_kpn_string") + " kpstring"
@@ -4440,7 +4440,7 @@ mld = {
+ " , ms.mld_stdmelding_slabewaken"
+ " , ms.mld_stdmelding_externurl"
+ " , ms.cad_thema_key"
+ " , mld_stdmelding_enddate_empty"
+ " , ms.mld_stdmelding_enddate_empty"
+ " , (SELECT COUNT(*)" // ietwat grof qua autorisatie controle maar aantal_faq (iets) te hoog is geen risco
+ " FROM fac_faq ff" // Hoogstens een keer de hele aantal_faq er uit schrijven
+ " , mld_stdmeldingfaq sf"
@@ -4448,13 +4448,14 @@ mld = {
+ " AND (sf.mld_stdmelding_key = ms.mld_stdmelding_key"
+ " OR (sf.mld_stdmelding_key IS NULL"
+ " AND sf.ins_discipline_key = ms.mld_ins_discipline_key))"
+ " AND (fac_functie_key IS NULL"
+ " OR fac_functie_key IN "
+ " AND (ff.fac_functie_key IS NULL"
+ " OR ff.fac_functie_key IN "
+ " (SELECT fac_functie_key FROM fac_v_webgebruiker"
+ " WHERE prs_perslid_key = " + user_key + "))"
+ " AND fac_faq_datum < SYSDATE"
+ " AND (fac_faq_lang = " + safe.quoted_sql(user_lang) + " OR fac_faq_lang IS NULL)) aantal_faq"
+ " , mld_stdmelding_conceptstatus"
+ " AND ff.fac_faq_datum < SYSDATE"
+ " AND (ff.fac_faq_lang = " + safe.quoted_sql(user_lang) + " OR ff.fac_faq_lang IS NULL)) aantal_faq"
+ " , ms.mld_stdmelding_conceptstatus"
+ " , ms.mld_stdmelding_objects_allowed"
+ " FROM mld_stdmelding ms"
+ " , mld_discipline md"
+ " , mld_disc_params dp"
@@ -4585,6 +4586,7 @@ mld = {
cad_thema_key: oRs("cad_thema_key").Value,
enddateempty: oRs("mld_stdmelding_enddate_empty").Value == 1,
conceptstatus: oRs("mld_stdmelding_conceptstatus").Value,
objects_allowed: oRs("mld_stdmelding_objects_allowed").Value,
aantal_faq: oRs("aantal_faq").Value, // Totaal aantal
fixed_faq: [], // deze worden altijd getoond
popup_faq: false, // Popupje tonen?

View File

@@ -643,6 +643,7 @@ var url_get_mld_info_ajax = "../mld/get_mld_info_ajax.asp?mld_key=" + mld_key;
var user_kpmodule = "<%=user.afdeling().kpn_module()%>";
var user_afd_key = <%=user.prs_afdeling_key()%>;
var objects_allowed = <%=this_stdm_info.objects_allowed%>; // for toggle stdmelding
// The next two are used in toggleBehandelteam()
var show_abh = (<%=(this_mld_rights.canBOwrite) ? 1 : 0%> == 1);
// Always set default behandelteam if initially empty and the field is hidden (so you can't specifically set it) - Or if it's a new MLD

View File

@@ -956,6 +956,12 @@ function process_stdm_info(data, stdmChanged) // stdmChanged is optioneel.
if (!data.init) {
cascadePlaatsSelector();
}
if (data.objects_allowed == 0) {
$("#r_objs").parent().parent().addClass("hidden");
} else {
$("#r_objs").parent().parent().removeClass("hidden");
}
}
// UWVA#15523: indien frontend, dan is het aan kunnen geven van de prio afhankelijk van de vakgroep
@@ -1704,7 +1710,7 @@ async function mld_melding_object()
} else if (!isSuggest && $("#r_objs")[0].options.length > 0 && $("#r_objs")[0].options[0].value > 0) {
var obj_html = $("#r_objs").html(); // huidige objecten
}
FcltMgr.openModalDetail(url, L("lcl_mld_objects"), { obj_html: obj_html, callback: mld_melding_object_callback });
FcltMgr.openModalDetail(url, L("lcl_mld_objects"), { obj_html: obj_html, callback: mld_melding_object_callback, objects_allowed: window.stdm_info.objects_allowed });
}
// einddatum/ calendar aanpassen

View File

@@ -36,7 +36,8 @@ var inst_type = "";
<head>
<% FCLTHeader.Generate() %>
<script>
var objects_allowed = 2;
var objects_count = 0;
$(function ()
{
var params = FcltMgr.dialogArguments();
@@ -57,6 +58,9 @@ var inst_type = "";
$("#fldobjExist").filterByText("#autofilterExist", true);
$("#autofilter").focus();
objects_allowed = params.objects_allowed;
objects_count = $("#fldobjExist")[0].length;
//addTooltip(); // Wegens performance hier niet.
});
@@ -162,30 +166,38 @@ var inst_type = "";
}
else
{ // Objecten toevoegen aan de lijst.
$("#fldobjPossible option:selected").each(function(i, obj) {
if ($(obj).val() > 0)
{
selected_key_arr_obj.push($(obj).val());
var have = false;
var $want = $(this).removeAttr("selected").clone();
$("#fldobjExist option").each(function() {
have |= $(this).removeAttr("selected")[0].isEqualNode($want[0]);
});
if (!have)
if ((objects_allowed == 0) || (objects_allowed == 1 && objects_count == 1) )
{
FcltMgr.alert(L("mld_stdmelding_objects_allowed_msg1"));
}
else
{
$("#fldobjPossible option:selected").each(function(i, obj) {
if ($(obj).val() > 0)
{
$("#fldobjExist").append($want);
var options = $("#fldobjPossible").data("options");
for (var i = options.length - 1; i >= 0; i--)
selected_key_arr_obj.push($(obj).val());
var have = false;
var $want = $(this).removeAttr("selected").clone();
$("#fldobjExist option").each(function() {
have |= $(this).removeAttr("selected")[0].isEqualNode($want[0]);
});
if (!have)
{
if (options[i].isEqualNode($want[0]))
objects_count ++;
$("#fldobjExist").append($want);
var options = $("#fldobjPossible").data("options");
for (var i = options.length - 1; i >= 0; i--)
{
options.splice(i, 1);
if (options[i].isEqualNode($want[0]))
{
options.splice(i, 1);
}
}
$ ("#fldobjPossible").data("options", options);
}
$("#fldobjPossible").data("options", options);
}
}
});
});
}
}
reloadObjPossible(selected_key_arr_obj);
@@ -194,6 +206,7 @@ var inst_type = "";
function removeObj(obj)
{
$("#fldobjExist option:selected").remove();
objects_count = $("#fldobjExist")[0].length;
var selected_key_arr_obj = new Array(); // Objecten arary.
$("#fldobjPossible :selected").each(function(i, selected)
@@ -206,6 +219,7 @@ var inst_type = "";
function removeAllObj()
{ // Maak de gehele lijst leeg.
objects_count = 0;
document.getElementById("fldobjExist").innerHTML = "";
var selected_key_arr_obj = new Array(); // Objecten arary.
$("#fldobjPossible :selected").each(function(i, selected)