UWVA#50707 vertrouwelijke kenmerken,tonen en (niet) opslaan

svn path=/Website/trunk/; revision=36312
This commit is contained in:
Peter Feij
2017-12-10 13:39:04 +00:00
parent 4dca5ddfe7
commit 397a323ea9

View File

@@ -11,12 +11,11 @@
fetches all kenmerk-information fetches all kenmerk-information
The structure of tha SQL should match the predefined structure (column names) The structure of tha SQL should match the predefined structure (column names)
TODO: HTML5-achtige zaken toevoegen TODO: HTML5-achtige types toevoegen wanneer alle browsers het daar over eens zijn
- required is ook een attribute met functionaliteit. Tot dusverre zetten we alleen reuired_class
moeten we behalve adt attr toevoegen ook iets met toggle en zo?
FlexFiles.inc functie bepaalNiveau is altijd nodig dus FlexFiles.inc erbij
*/ */
// FlexFiles.inc functie bepaalNiveau is altijd nodig dus FlexFiles.inc erbij
%><!-- #include file="../shared/FlexFiles.inc" --> %><!-- #include file="../shared/FlexFiles.inc" -->
<% <%
@@ -140,17 +139,16 @@ function BijlagenButton(pModule, pNiveau, pKey, tmpfolder, pKenmerk_key,
{ {
url += "&tmpfolder=" + tmpfolder; url += "&tmpfolder=" + tmpfolder;
} }
if (pReadonly) url += "&reado=1";
url += "&multi=1"; url += "&multi=1";
if (pReadonly) url += "&reado=1";
if (kdim) url += "&extFilter=" + escape(kdim); if (kdim) url += "&extFilter=" + escape(kdim);
if (pregexp) url += "&pregexp=" + escape(pregexp); // P800x600 voor foto van 800x600 if (pregexp) url += "&pregexp=" + escape(pregexp); // P800x600 voor foto van 800x600
var blg = "onBijlagen('" + safe.jsstring(protectQS.create(url)) + "'" var blg = "onBijlagen('" + safe.jsstring(protectQS.create(url)) + "'"
+ ",''" // geen saveUrl + ",''" // geen saveUrl
+ ", true" // multi + ", true" // multi
+ ", this)" + ", this)";
res += " onClick='" + safe.htmlattr(blg) + "'" res += " onClick='" + safe.htmlattr(blg) + "'"
+ (!pReadonly ? " onChange='checkKenmerk(this, false,\"M\",0,0,0,0)'" : "") + (!pReadonly ? " onChange='checkKenmerk(this, false,\"M\",0,0,0,0)'" : "");
res += ">"; res += ">";
res += "<i class='fa fa-folder-open fa-fw hasIcon bijlage' onClick='this.previousSibling.click()'></i>"; res += "<i class='fa fa-folder-open fa-fw hasIcon bijlage' onClick='this.previousSibling.click()'></i>";
} }
@@ -168,7 +166,7 @@ function OpenFlexFile(Module, Niveau, Key, Kenmerk_key, fname, params)
var s = rooturl + "/appl/shared/BijlagenStream.asp" var s = rooturl + "/appl/shared/BijlagenStream.asp"
s += "?module=" + Module s += "?module=" + Module
+ "&key=" + Key + "&key=" + Key
+ (Niveau? "&niveau=" + Niveau : "") + (Niveau ? "&niveau=" + Niveau : "")
+ "&kenmerk_key=" + Kenmerk_key + "&kenmerk_key=" + Kenmerk_key
+ "&filename=" + Server.URLencode(fname); + "&filename=" + Server.URLencode(fname);
if (params.mime_type) if (params.mime_type)
@@ -178,7 +176,7 @@ function OpenFlexFile(Module, Niveau, Key, Kenmerk_key, fname, params)
return s; return s;
} }
function Operand( n) function Operand(n)
{ {
ret_str = "<select class='operand' id='ko" + n + "' name='ko" + n + "'>" ret_str = "<select class='operand' id='ko" + n + "' name='ko" + n + "'>"
+"<option value='='>=</option> " +"<option value='='>=</option> "
@@ -244,7 +242,13 @@ function getDatatypeValue(table, column, checkval)
// prs_key (of obsolete reqId) - key om bij defaultwaarde in ##PRS_PERSLID_KEY## te substitueren // prs_key (of obsolete reqId) - key om bij defaultwaarde in ##PRS_PERSLID_KEY## te substitueren
// fnpre en fnpost: functies die voor en na genereren worden aangroepen *mits er kenmerken zijn* // fnpre en fnpost: functies die voor en na genereren worden aangroepen *mits er kenmerken zijn*
// wfbuilder: toon ook flex-colname :f123 (voor workflow expression builder) // wfbuilder: toon ook flex-colname :f123 (voor workflow expression builder)
// confidential: als true moeten vertrouwelijke waarden gemaskeerd worden
// } // }
// Qua confidential zijn er 2 aspecten:
// 1. zorgen dat de echt waarden niet getoond worden, dat kan lomp als allereerste actie
// maar ik verwacht dat men ooit bv wel de bijlagenaam wil tonen maar dan onklikbaar
// 2. zorgen dat de gemaskeerde waarden niet gesubmit worden, dan dus geen submitvelden opnemen
//
// ================================================================================================ // ================================================================================================
function listKenmerk(sql, module, key, props) function listKenmerk(sql, module, key, props)
{ {
@@ -303,11 +307,12 @@ function listKenmerk(sql, module, key, props)
} }
var predone = false; var predone = false;
var c_maskmarker = "<i class='fa fa-ban' style='cursor:auto'></i>" // prefix, niet klikbaar
var colCount = 0; // Even/oneven zodat we weten of we links of rechts zitten var colCount = 0; // Even/oneven zodat we weten of we links of rechts zitten
var forceNewLine = false; // Bij labels en grote text velden var forceNewLine = false; // Bij labels en grote text velden
var val_seperator = ''; var val_seperator = '';
var val_label = ''; var flexkenmerklabel = '';
var idCounter = 1; // We maken alleen name/id-s voor de velden die ook echt bewerkt kunnen worden var idCounter = 1; // We maken alleen name/id-s voor de velden die ook echt bewerkt kunnen worden
var clabelCounter = 0; // Het aantal collapsable labels var clabelCounter = 0; // Het aantal collapsable labels
var anyDate = false; var anyDate = false;
@@ -352,7 +357,7 @@ function listKenmerk(sql, module, key, props)
var prssql = false; var prssql = false;
for (i = 1; !oRs.eof; i++) for (i = 1; !oRs.eof; i++)
{ {
var val = null; var flexkenmerkwaarde = null;
val_seperator = ':'; val_seperator = ':';
var def_val = oRs("kenmerk_default").Value; var def_val = oRs("kenmerk_default").Value;
var isExpression = false; var isExpression = false;
@@ -360,7 +365,7 @@ function listKenmerk(sql, module, key, props)
if (!kenmerk_search && !multiMode) if (!kenmerk_search && !multiMode)
{ {
// In multiMode no filling of default values // In multiMode no filling of default values
val = oRs("kenmerk_waarde").value; flexkenmerkwaarde = oRs("kenmerk_waarde").value;
if (def_val && def_val.match('##EXPR##') != null) if (def_val && def_val.match('##EXPR##') != null)
isExpression = true; isExpression = true;
@@ -368,24 +373,24 @@ function listKenmerk(sql, module, key, props)
// For a new value, this default is used. It could be a primitive value (string, number or key) or // For a new value, this default is used. It could be a primitive value (string, number or key) or
// it is suggested to support (later) // it is suggested to support (later)
// a more sophisticated value, using ##asp-variable## and/or SQL:SELECT in the string. // a more sophisticated value, using ##asp-variable## and/or SQL:SELECT in the string.
if (val != null) if (flexkenmerkwaarde != null)
{ //__Log("val:"+val); { //__Log("flexkenmerkwaarde:"+flexkenmerkwaarde);
if (val == def_val && val.match('##SQL##') != null) if (flexkenmerkwaarde == def_val && flexkenmerkwaarde.match('##SQL##') != null)
{ {
//__Log("val match"); //__Log("flexkenmerkwaarde match");
prssql = true; prssql = true;
val = val.substr(val.indexOf('##SQL##') + 7); flexkenmerkwaarde = flexkenmerkwaarde.substr(flexkenmerkwaarde.indexOf('##SQL##') + 7);
var sql2 = val.replace("##PRS_PERSLID_KEY##", prs_key).replace("##PRS_CONTACTPERSOON_KEY##", cont_key); var sql2 = flexkenmerkwaarde.replace("##PRS_PERSLID_KEY##", prs_key).replace("##PRS_CONTACTPERSOON_KEY##", cont_key);
oRsPerslid = Oracle.Execute(sql2); oRsPerslid = Oracle.Execute(sql2);
if (!oRsPerslid.eof) if (!oRsPerslid.eof)
val = oRsPerslid(0).value; flexkenmerkwaarde = oRsPerslid(0).value;
else else
val = ''; flexkenmerkwaarde = '';
oRsPerslid.Close(); oRsPerslid.Close();
} }
else if (def_val && val == def_val && def_val.match('##EXPR##') != null) else if (def_val && flexkenmerkwaarde == def_val && def_val.match('##EXPR##') != null)
{ {
val = ""; flexkenmerkwaarde = "";
} }
} }
} }
@@ -395,29 +400,32 @@ function listKenmerk(sql, module, key, props)
var xx = props.defaults[oRs("kenmerk_omschrijving").value.toLowerCase()]; var xx = props.defaults[oRs("kenmerk_omschrijving").value.toLowerCase()];
if (typeof xx != "undefined") if (typeof xx != "undefined")
{ {
val = xx; flexkenmerkwaarde = xx;
if (oRs("kenmerk_kenmerktype").value == "C" || oRs("kenmerk_kenmerktype").value == "N" || oRs("kenmerk_kenmerktype").value == "B") if (oRs("kenmerk_kenmerktype").value == "C" || oRs("kenmerk_kenmerktype").value == "N" || oRs("kenmerk_kenmerktype").value == "B")
val = val.substr(0, oRs("kenmerk_lengte").value); // Kap de waarde op de maximale lengte af flexkenmerkwaarde = flexkenmerkwaarde.substr(0, oRs("kenmerk_lengte").value); // Kap de waarde op de maximale lengte af
} }
} }
// De weer te geven waarde is nu bepaald // De weer te geven waarde is nu bepaald
var kkey = oRs("kenmerk_key").value; var kkey = oRs("kenmerk_key").value;
val_label = Server.HTMLEncode(oRs("kenmerk_omschrijving").value? oRs("kenmerk_omschrijving").value : ""); // Omschrijving kan leeg gelaten zijn flexkenmerklabel= Server.HTMLEncode(oRs("kenmerk_omschrijving").value ? oRs("kenmerk_omschrijving").value : ""); // Omschrijving kan leeg gelaten zijn
var ktype = oRs("kenmerk_kenmerktype").value; var ktype = oRs("kenmerk_kenmerktype").value;
var klen = oRs("kenmerk_lengte").value; var klen = oRs("kenmerk_lengte").value;
if (!klen) klen = 4000; if (!klen) klen = 4000;
var kdec = oRs("kenmerk_dec").value; var kdec = oRs("kenmerk_dec").value;
var kmin = oRs("kenmerk_nmin").value; var kmin = oRs("kenmerk_nmin").value;
var kmax = oRs("kenmerk_nmax").value; var kmax = oRs("kenmerk_nmax").value;
var ksysteem= oRs("kenmerk_systeem").value; var ksysteem = oRs("kenmerk_systeem").value;
var kvolgnr = "" + oRs("kenmerk_volgnr").value; var kvolgnr = "" + oRs("kenmerk_volgnr").value;
var kdim = oRs("kenmerk_dimensie").value; // beperkt bij uploads de extensie var kdim = oRs("kenmerk_dimensie").value; // beperkt bij uploads de extensie
var hint = oRs("kenmerk_hint").value; var hint = oRs("kenmerk_hint").value;
var kregexp = oRs("kenmerk_regexp").value; var kregexp = oRs("kenmerk_regexp").value;
var kdomein_key = oRs("kenmerkdomein_key").value; var kdomein_key = oRs("kenmerkdomein_key").value;
var maskeren = confidential && ksysteem&4;
var maskmarker = maskeren ? c_maskmarker : ""; // misschien tijdelijk, een soort visuele assert: als je dit ziet met een echt waarde = fout
// if (hint == null) hint = ""; // if (hint == null) hint = "";
// PF vindt van niet if (def_val == null) def_val = "&nbsp;"; // PF vindt van niet if (def_val == null) def_val = "&nbsp;";
var required = oRs("kenmerk_verplicht").value; var required = oRs("kenmerk_verplicht").value;
@@ -444,8 +452,8 @@ function listKenmerk(sql, module, key, props)
continue; // Onzichtbaar continue; // Onzichtbaar
} }
//kenmerk_write( "<!--YY:"+colCount+":"+val_label+"-->"); //kenmerk_write( "<!--YY:"+colCount+":"+flexkenmerklabel+"-->");
//kenmerk_write( "<!--YY:"+idCounter+":"+val_label+"-->"); //kenmerk_write( "<!--YY:"+idCounter+":"+flexkenmerklabel+"-->");
var readonlyfield = forceReadonly; // startwaarde var readonlyfield = forceReadonly; // startwaarde
if (!readonlyfield && !kenmerk_search && props.fnIsReadonly) // Zoeken is natuurlijk nooit readonly if (!readonlyfield && !kenmerk_search && props.fnIsReadonly) // Zoeken is natuurlijk nooit readonly
@@ -525,7 +533,7 @@ function listKenmerk(sql, module, key, props)
// PF vraagt zich af: heeft dit ook gevolg voor print en excel? // PF vraagt zich af: heeft dit ook gevolg voor print en excel?
// En: voor type M is het altijd nu nog leeg, en die komen dus readonly nooit! // En: voor type M is het altijd nu nog leeg, en die komen dus readonly nooit!
// Voorlopig laat ik die dan altijd maar zien (TODO: evt niet als er 0 bestanden zijn) // Voorlopig laat ik die dan altijd maar zien (TODO: evt niet als er 0 bestanden zijn)
if (readonlyfield && !isParent && ktype != 'L' && ktype != 'l' && ktype != 'M' && (!val || val=="") && if (readonlyfield && !isParent && ktype != 'L' && ktype != 'l' && ktype != 'M' && (!flexkenmerkwaarde || flexkenmerkwaarde=="") &&
(!kenmerk_search && (ktype == 'C' || ktype == 'N' || ktype == 'B' || ktype == 'D' || ktype == 'R' || ktype == 'S')) ) // Als geavanceerd dan maakt het niet uit of het readonly is. Dan moet je het kenmerk gewoon tonen. (!kenmerk_search && (ktype == 'C' || ktype == 'N' || ktype == 'B' || ktype == 'D' || ktype == 'R' || ktype == 'S')) ) // Als geavanceerd dan maakt het niet uit of het readonly is. Dan moet je het kenmerk gewoon tonen.
{ {
oRs.MoveNext(); oRs.MoveNext();
@@ -557,7 +565,7 @@ function listKenmerk(sql, module, key, props)
else else
forceNewLine = false; forceNewLine = false;
if (kenmerk_search || val != null && val != "") if (kenmerk_search || flexkenmerkwaarde != null && flexkenmerkwaarde != "")
allCollapsable = false; allCollapsable = false;
// Eerst de simpele datatypes ('C', 'D' en 'N'). De complexere overrulen kv mogelijk later nog wel. // Eerst de simpele datatypes ('C', 'D' en 'N'). De complexere overrulen kv mogelijk later nog wel.
@@ -578,7 +586,12 @@ function listKenmerk(sql, module, key, props)
// - een R wordt een select // - een R wordt een select
// We doen eerst die uitzonderingen // We doen eerst die uitzonderingen
// ==========================================================================================
// =================================================================
// KENMERKTYPE C (Karakter) ================================================================= // KENMERKTYPE C (Karakter) =================================================================
// =================================================================
// ==========================================================================================
if (ktype == 'C') if (ktype == 'C')
{ {
if (flexExprIncluded && !isExpression) if (flexExprIncluded && !isExpression)
@@ -592,17 +605,15 @@ function listKenmerk(sql, module, key, props)
if (klen > 50 && !kenmerk_search) if (klen > 50 && !kenmerk_search)
{ {
// Groot text veld wordt automatisch textarea // Groot text veld wordt automatisch textarea
if (readonlyfield) if (readonlyfield || maskeren)
{ {
if (formobile) if (formobile)
{ {
kv = "<textarea class='fldflexC50 ' rows=3 readonly tabindex=-1 maxlength='"+klen+"'>" + safe.textarea(val) + "</textarea>"; kv = "<textarea class='fldflexC50 ' rows=3 readonly tabindex=-1 maxlength='"+klen+"'>" + safe.textarea(flexkenmerkwaarde) + "</textarea>";
} }
else else
{ {
kv = "<div class='readonly fldflexC50'>" kv = "<div class='readonly fldflexC50'>" + safe.html(flexkenmerkwaarde) + "</div>";
+ safe.html(val)
+ "</div>";
} }
} }
else else
@@ -623,24 +634,24 @@ function listKenmerk(sql, module, key, props)
+ " rows=3 " + " rows=3 "
+ " maxlength='"+klen+"'" + " maxlength='"+klen+"'"
+ " name='" + nameprefix + idCounter + "val' id='" + nameprefix + idCounter + "val' " + " name='" + nameprefix + idCounter + "val' id='" + nameprefix + idCounter + "val' "
//+ "placeholder='"+val_label+"'" //+ "placeholder='"+flexkenmerklabel+"'"
+ ">" + ">"
+ safe.textarea(val) + safe.textarea(flexkenmerkwaarde)
+ "</textarea>"; + "</textarea>";
} }
} else { // klein input veld } else { // klein input veld
if (readonlyfield) if (readonlyfield || maskeren)
{ {
if (formobile) if (formobile)
{ {
kv = "<input type='text' class='fldflexC ' readonly tabindex=-1 value='"+ safe.html(val) +"'>"; kv = "<input type='text' class='fldflexC ' readonly tabindex=-1 value='"+ safe.html(flexkenmerkwaarde) +"'>";
} }
else else
{ {
kv = "<span" kv = "<span"
+ " class='readonly " + " class='readonly "
+ (kenmerk_search ? "fldSflexC " : "fldflexC ") + (kenmerk_search ? "fldSflexC " : "fldflexC ")
+ "'>" + safe.htmlattr(val) + "</span>"; + "'>" + safe.htmlattr(flexkenmerkwaarde) + "</span>";
} }
} }
else else
@@ -659,8 +670,8 @@ function listKenmerk(sql, module, key, props)
+ "'" + "'"
+ (required ? " required='required' " : "") + (required ? " required='required' " : "")
+ (isExpression ? " readonly " : "") + (isExpression ? " readonly " : "")
//+ " placeholder='"+val_label+"'" //+ " placeholder='"+flexkenmerklabel+"'"
+ " value='" + safe.htmlattr(val) + "'" + " value='" + safe.htmlattr(flexkenmerkwaarde) + "'"
+ " maxlength='" + klen + "'" + " maxlength='" + klen + "'"
+ ">"; + ">";
} }
@@ -676,7 +687,7 @@ function listKenmerk(sql, module, key, props)
// Bijhouden van kenmerken. Later kan blijken dat ze parent kenmerken zijn. // Bijhouden van kenmerken. Later kan blijken dat ze parent kenmerken zijn.
// Kenmerkkey alleen is niet uniek bij meerdere bezoekers of factuurregels. // Kenmerkkey alleen is niet uniek bij meerdere bezoekers of factuurregels.
// Daarom nameprefix meenemen want die is per bezoeker of factuurregel wel uniek. // Daarom nameprefix meenemen want die is per bezoeker of factuurregel wel uniek.
kenmerkidref[nameprefix + kkey] = new idref(nameprefix + idCounter, val); kenmerkidref[nameprefix + kkey] = new idref(nameprefix + idCounter, flexkenmerkwaarde);
var parentkenmerkid = ""; var parentkenmerkid = "";
var parentkenmerk_key = -1; var parentkenmerk_key = -1;
var parentkenmerkwaarde; var parentkenmerkwaarde;
@@ -716,8 +727,12 @@ function listKenmerk(sql, module, key, props)
oRs2.close(); oRs2.close();
} }
// KENMERKTYPE R/S (Referentie/Suggest) ===================================================== // ==========================================================================================
if (ktype == 'R' || (readonlyfield && ktype == 'S')) // Referentie naar andere tabel (listboxje) // ============================================
// KENMERKTYPE R/S (Referentie/readonly Suggest) ============================================
// ============================================
// ==========================================================================================
if (ktype == "R" || ((readonlyfield || maskeren) && ktype == "S")) // Referentie naar andere tabel (listboxje)
{ {
var wheres = []; var wheres = [];
var dsql = "SELECT fac_kenmerkdomein_objectnaam" var dsql = "SELECT fac_kenmerkdomein_objectnaam"
@@ -740,19 +755,19 @@ function listKenmerk(sql, module, key, props)
wheres.push("fac_usrdata_parentkey IS NOT NULL"); wheres.push("fac_usrdata_parentkey IS NOT NULL");
} }
if (val !== null && String(oRs_d("fac_kenmerkdomein_kolomnaam").value).match(/\_key$/i)) if (flexkenmerkwaarde !== null && String(oRs_d("fac_kenmerkdomein_kolomnaam").value).match(/\_key$/i))
{ {
var vv = parseInt(val, 10); var vv = parseInt(flexkenmerkwaarde, 10);
if (isNaN(vv)) if (isNaN(vv))
{ // Kan gebeuren als van een text-kenmerk *achteraf* een referentiekenmerk wordt gemaakt { // Kan gebeuren als van een text-kenmerk *achteraf* een referentiekenmerk wordt gemaakt
// Ook: als je bij een referentie kenmerk een foutieve default-waarde (textueel) invult // Ook: als je bij een referentie kenmerk een foutieve default-waarde (textueel) invult
__DoLog("Ongeldige referentie waarde <em>{0}</em> voor kolom {1}.{2}".format(val, __DoLog("Ongeldige referentie waarde <em>{0}</em> voor kolom {1}.{2}".format(flexkenmerkwaarde,
oRs_d("fac_kenmerkdomein_objectnaam").value, oRs_d("fac_kenmerkdomein_objectnaam").value,
oRs_d("fac_kenmerkdomein_kolomnaam").value), "#ff0000"); oRs_d("fac_kenmerkdomein_kolomnaam").value), "#ff0000");
val = "-1"; flexkenmerkwaarde = "-1";
} }
else else
val = String(vv); flexkenmerkwaarde = String(vv);
} }
if (oRs_d("fac_kenmerkdomein_objectnaam").Value == "FAC_USRDATA" && oRs_d("fac_usrtab_key").Value) if (oRs_d("fac_kenmerkdomein_objectnaam").Value == "FAC_USRDATA" && oRs_d("fac_usrtab_key").Value)
@@ -766,7 +781,7 @@ function listKenmerk(sql, module, key, props)
+ " WHERE fac_usrtab_key=" + oRs_d("fac_usrtab_key").Value + " WHERE fac_usrtab_key=" + oRs_d("fac_usrtab_key").Value
+ (!readonlyfield + (!readonlyfield
? " AND fac_usrdata_verwijder IS NULL" ? " AND fac_usrdata_verwijder IS NULL"
: " AND fac_usrdata_key = " + val) : " AND fac_usrdata_key = " + flexkenmerkwaarde)
+ " AND (fac_usrdata_vervaldatum IS NULL OR fac_usrdata_vervaldatum > SYSDATE)" + " AND (fac_usrdata_vervaldatum IS NULL OR fac_usrdata_vervaldatum > SYSDATE)"
+ " UNION " + " UNION "
+ "SELECT fac_usrdata_key" + "SELECT fac_usrdata_key"
@@ -779,7 +794,7 @@ function listKenmerk(sql, module, key, props)
+ " , fac_usrdata_volgnr" + " , fac_usrdata_volgnr"
+ " FROM fac_usrdata " + " FROM fac_usrdata "
+ " WHERE fac_usrtab_key = " + oRs_d("fac_usrtab_key").Value + " WHERE fac_usrtab_key = " + oRs_d("fac_usrtab_key").Value
+ " AND fac_usrdata_key = " + val; + " AND fac_usrdata_key = " + flexkenmerkwaarde;
} }
else else
{ {
@@ -792,7 +807,7 @@ function listKenmerk(sql, module, key, props)
+ " FROM " + oRs_d("fac_kenmerkdomein_objectnaam").Value + " FROM " + oRs_d("fac_kenmerkdomein_objectnaam").Value
+ " WHERE (" + vervalkolom + " IS NULL OR " + vervalkolom + " > SYSDATE)" + " WHERE (" + vervalkolom + " IS NULL OR " + vervalkolom + " > SYSDATE)"
+ (readonlyfield + (readonlyfield
? " AND " + oRs_d("fac_kenmerkdomein_kolomnaam").Value + " = " + safe.quoted_sql(val) ? " AND " + oRs_d("fac_kenmerkdomein_kolomnaam").Value + " = " + safe.quoted_sql(flexkenmerkwaarde)
: "") : "")
+ " UNION " + " UNION "
+ "SELECT " + oRs_d("fac_kenmerkdomein_kolomnaam").Value + "SELECT " + oRs_d("fac_kenmerkdomein_kolomnaam").Value
@@ -806,7 +821,7 @@ function listKenmerk(sql, module, key, props)
: "NULL" : "NULL"
) + " x" ) + " x"
+ " FROM " + oRs_d("fac_kenmerkdomein_objectnaam").Value + " FROM " + oRs_d("fac_kenmerkdomein_objectnaam").Value
+ " WHERE " + oRs_d("fac_kenmerkdomein_kolomnaam").Value + " = " + safe.quoted_sql(val); + " WHERE " + oRs_d("fac_kenmerkdomein_kolomnaam").Value + " = " + safe.quoted_sql(flexkenmerkwaarde);
} }
@@ -834,7 +849,7 @@ function listKenmerk(sql, module, key, props)
{ {
if (readonlyfield) if (readonlyfield)
{ {
if (c0.value == val) if (c0.value == flexkenmerkwaarde)
{ {
kvv = c1.value; kvv = c1.value;
break; // Rap klaar. Kan efficienter met een WHERE? break; // Rap klaar. Kan efficienter met een WHERE?
@@ -845,7 +860,7 @@ function listKenmerk(sql, module, key, props)
if (c1.value != null && String(c1.value.length) > maxLen) if (c1.value != null && String(c1.value.length) > maxLen)
maxLen = String(c1.value).length; maxLen = String(c1.value).length;
appender = '<option value="' + c0.value + '"' appender = '<option value="' + c0.value + '"'
+ (c0.value == val?' selected' : '') + '>' + safe.html(c1.value) + '</option>'; + (c0.value == flexkenmerkwaarde?' selected' : '') + '>' + safe.html(c1.value) + '</option>';
builder[builder.length] = appender; builder[builder.length] = appender;
} }
oRs2.MoveNext(); oRs2.MoveNext();
@@ -855,37 +870,10 @@ function listKenmerk(sql, module, key, props)
if (kvv == '') kvv = ' '; // Zodat readonly/print in ieder geval het label getoond wordt. if (kvv == '') kvv = ' '; // Zodat readonly/print in ieder geval het label getoond wordt.
oRs2.close(); oRs2.close();
if (!readonlyfield) if (readonlyfield || maskeren)
{ // is dus impliciet ook type R
if (flexExprIncluded && !isExpression)
onchangeExp = "calculateFlexExpressions(this"
+ ", \"" + module + "\""
+ ", " + key
+ ", \"" + (props.kenmerk_module || "") + "\""
+ ", \"" + nameprefix + "\""
+ ", \"" + extraserie + "\""
+ ");";
kv = "<select id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val'"
+ " class='"
+ (kenmerk_search ? "fldSflexR " : "fldflexR ")
+ (required ? required_class : "")
+ "'"
//+ " placeholder='"+val_label+"'"
+ (required ? " required='required' " : "")
+ (required > 1
? " onChange='checkRequiredGroup(\"" + required_group + "\");" + onchangeExp + "'"
: (flexExprIncluded && !isExpression? " onChange='" + onchangeExp + "'" : ""))
+ ">"
+ "<option value='-1' " + (required? " class='" + required_class + "'" : "") + "><!--lege waarde--></option>"
+ kvv
+ "</select>";
if (required) // wrapper voor rode streepje, IE-only. Wat vind je Jos (ik vind het te lelijk in chrome/safari)
kv = "<!--[if lt IE 8]><div id='req_" + nameprefix + idCounter + "val' class='fldflexR " + required_class + "'><![endif]-->" + kv + "<!--[if lt IE 8]></div><![endif]-->";
}
else
{ {
var showdetail = (formobile ? "" : (xmlnode? ' details' : '') ); var showdetail = (formobile ? "" : (xmlnode? ' details' : '') );
var clickdetail = (formobile ? "" : (xmlnode? ' onClick="xmlNodeDetails(' + val + ', \'' + xmlnode + '\')"' : '') ); var clickdetail = (formobile ? "" : (xmlnode? ' onClick="xmlNodeDetails(' + flexkenmerkwaarde + ', \'' + xmlnode + '\')"' : '') );
if (ktype == "R") if (ktype == "R")
kv = '<input class="fldflexR' kv = '<input class="fldflexR'
+ showdetail + showdetail
@@ -901,7 +889,34 @@ function listKenmerk(sql, module, key, props)
+ clickdetail + clickdetail
+ '>'; + '>';
} }
if (!readonlyfield && parentkenmerkid != "") else
{
// is dus impliciet ook type R
if (flexExprIncluded && !isExpression)
onchangeExp = "calculateFlexExpressions(this"
+ ", \"" + module + "\""
+ ", " + key
+ ", \"" + (props.kenmerk_module || "") + "\""
+ ", \"" + nameprefix + "\""
+ ", \"" + extraserie + "\""
+ ");";
kv = "<select id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val'"
+ " class='"
+ (kenmerk_search ? "fldSflexR " : "fldflexR ")
+ (required ? required_class : "")
+ "'"
//+ " placeholder='"+flexkenmerklabel+"'"
+ (required ? " required='required' " : "")
+ (required > 1
? " onChange='checkRequiredGroup(\"" + required_group + "\");" + onchangeExp + "'"
: (flexExprIncluded && !isExpression? " onChange='" + onchangeExp + "'" : ""))
+ ">"
+ "<option value='-1' " + (required? " class='" + required_class + "'" : "") + "><!--lege waarde--></option>"
+ kvv
+ "</select>";
}
if (!readonlyfield && parentkenmerkid != "" && !maskeren)
{ %> { %>
<script type="text/javascript"> <script type="text/javascript">
function onChangeRKenmerkParent<%=parentkenmerkid%>() function onChangeRKenmerkParent<%=parentkenmerkid%>()
@@ -928,11 +943,15 @@ function listKenmerk(sql, module, key, props)
// onchange van de parent koppelen aan de functie die deze actie uitvoert. // onchange van de parent koppelen aan de functie die deze actie uitvoert.
$("#<%=parentkenmerkid%>val")[0].onchange = function() {onChangeRKenmerkParent<%=parentkenmerkid%>();} $("#<%=parentkenmerkid%>val")[0].onchange = function() {onChangeRKenmerkParent<%=parentkenmerkid%>();}
}) })
</script> </script><%
<% } }
} }
// ==========================================================================================
// ===================================================================
// KENMERKTYPE F/E (File) =================================================================== // KENMERKTYPE F/E (File) ===================================================================
// ===================================================================
// ==========================================================================================
var lijst = []; var lijst = [];
// mobile doen we heel anders, tenzij het signature is. Die doen we nog old-school // mobile doen we heel anders, tenzij het signature is. Die doen we nog old-school
if (formobile && kdim != 'xxx' && (ktype == 'F' || ktype == 'E' || ktype == 'M')) if (formobile && kdim != 'xxx' && (ktype == 'F' || ktype == 'E' || ktype == 'M'))
@@ -996,9 +1015,9 @@ function listKenmerk(sql, module, key, props)
var fld = nameprefix + idCounter + "val"; var fld = nameprefix + idCounter + "val";
// Er is redundantie: de bestandsnaam zit in de database en staat in de folder // Er is redundantie: de bestandsnaam zit in de database en staat in de folder
// door bijvoorbeeld niet op Ok te drukken na vervanging van het bestand // door bijvoorbeeld niet op Ok te drukken na vervanging van het bestand
// kan er inconstistentie ontstaan. Lastig tegen te gaan dus maar detecteren en melden. // kan er inconsistentie ontstaan. Lastig tegen te gaan dus maar detecteren en melden.
var missing = false; var missing = false;
if (val && ktype != 'M') if (flexkenmerkwaarde && ktype != 'M')
{ {
var fso = new ActiveXObject("Scripting.FileSystemObject"); var fso = new ActiveXObject("Scripting.FileSystemObject");
if (otherPath) if (otherPath)
@@ -1008,9 +1027,9 @@ function listKenmerk(sql, module, key, props)
// JGL: Zou dit niet moeten/ kunnen via bijvoorbeeld iets als flexProps(module, key, String(kkey), niveau).AttachPath + "/"; // JGL: Zou dit niet moeten/ kunnen via bijvoorbeeld iets als flexProps(module, key, String(kkey), niveau).AttachPath + "/";
var vAttachPath = S("flexFilesPath") + "/" + module + "/" + subfolderKey(bepaalNiveau(module, niveau), key) + "/" + kkey; var vAttachPath = S("flexFilesPath") + "/" + module + "/" + subfolderKey(bepaalNiveau(module, niveau), key) + "/" + kkey;
} }
missing = !fso.FileExists(vAttachPath + "/" + val); missing = !fso.FileExists(vAttachPath + "/" + flexkenmerkwaarde);
if (missing) if (missing)
__Log(vAttachPath + "/" + val + " is missing"); __Log(vAttachPath + "/" + flexkenmerkwaarde + " is missing");
} }
// Mobile heeft een compleet eigen BijlagenForm.asp // Mobile heeft een compleet eigen BijlagenForm.asp
@@ -1060,7 +1079,7 @@ function listKenmerk(sql, module, key, props)
+ ", $('#" + fld + "')[0]" + ", $('#" + fld + "')[0]"
+ ")"; + ")";
if (!readonlyfield || val) if (!readonlyfield || flexkenmerkwaarde)
{ {
kv = "<input type='text'" kv = "<input type='text'"
+ (readonlyfield + (readonlyfield
@@ -1076,23 +1095,23 @@ function listKenmerk(sql, module, key, props)
+ (required > 1 + (required > 1
? " onChange='checkRequiredGroup(\"" + required_group + "\")'" ? " onChange='checkRequiredGroup(\"" + required_group + "\")'"
: "") : "")
//+ " placeholder='"+val_label+"'" //+ " placeholder='"+flexkenmerklabel+"'"
+ " value='" + safe.htmlattr(val) + "' " + " value='" + safe.htmlattr(flexkenmerkwaarde) + "' "
+ (!val?" style=display:none":""); + (!flexkenmerkwaarde?" style=display:none":"");
// + ">"; //komt later // + ">"; //komt later
var kvClick=""; var kvClick="";
if (otherPath) // Even niet klikbaar if (otherPath) // Even niet klikbaar
kvClick = " title='" + L("lcl_flex_autocopy") +"' "; kvClick = " title='" + L("lcl_flex_autocopy") +"' ";
else if (readonlyfield && val && !missing) // rechtstreeks openen else if (readonlyfield && flexkenmerkwaarde && !missing && !maskeren) // rechtstreeks openen
{ {
if (kdim == 'xxx') if (kdim == 'xxx')
var fnclick = "parent.FcltMgr.windowopen('" + protectQS.create(OpenFlexFile(module, niveau, key, kkey, val, { mime_type: "image/png", contentdp: "inline" })) + "')"; var fnclick = "parent.FcltMgr.windowopen('" + protectQS.create(OpenFlexFile(module, niveau, key, kkey, flexkenmerkwaarde, { mime_type: "image/png", contentdp: "inline" })) + "')";
else else
var fnclick = "parent.FcltMgr.windowopen('" + protectQS.create(OpenFlexFile(module, niveau, key, kkey, val)) + "', 'File')"; var fnclick = "parent.FcltMgr.windowopen('" + protectQS.create(OpenFlexFile(module, niveau, key, kkey, flexkenmerkwaarde)) + "', 'File')";
kvClick = " onclick='" + safe.htmlattr(fnclick) + "'"; kvClick = " onclick='" + safe.htmlattr(fnclick) + "'";
} }
else if (readonlyfield && val && missing) // Waarschuwen else if (readonlyfield && flexkenmerkwaarde && missing) // Waarschuwen
kvClick = " title='" + safe.htmlattr(L("lcl_flex_filenotfoundRO")) + "'"; kvClick = " title='" + safe.htmlattr(L("lcl_flex_filenotfoundRO")) + "'";
else else
{ {
@@ -1112,22 +1131,26 @@ function listKenmerk(sql, module, key, props)
{ {
kv += "<input type='button' " kv += "<input type='button' "
+ "class='bijlage1 button " + (required? required_class : "") + "' " + "class='bijlage1 button " + (required? required_class : "") + "' "
+ "isBijlage='1' nBijlagen='"+(val?1:0)+"' " + "isBijlage='1' nBijlagen='"+(flexkenmerkwaarde?1:0)+"' "
+ "value='" + L("lcl_add") + "'" + "value='" + L("lcl_add") + "'"
+ (val?" style='display:none' ": " ") + (flexkenmerkwaarde?" style='display:none' ": " ")
+ "onClick=\"" + blg + "\"" + "onClick=\"" + blg + "\""
+">"; +">";
} }
if (kdim == 'xxx') if (kdim == 'xxx')
{ {
if (!missing && val) if (!missing && flexkenmerkwaarde)
kv += "<img class='kenmerk' src=' " + protectQS.create(OpenFlexFile(module, niveau, key, kkey, val, { mime_type: "image/png", contentdp: "inline" })) + "'>"; kv += "<img class='kenmerk' src=' " + protectQS.create(OpenFlexFile(module, niveau, key, kkey, flexkenmerkwaarde, { mime_type: "image/png", contentdp: "inline" })) + "'>";
else else
kv += "<img class='kenmerk' style='display:none'>"; kv += "<img class='kenmerk' style='display:none'>";
} }
} }
// ==========================================================================================
// ======================================================================
// KENMERKTYPE M (Map) ====================================================================== // KENMERKTYPE M (Map) ======================================================================
// ======================================================================
// ==========================================================================================
else if (ktype == 'M') // Map met bestanden is altijd heel simpel else if (ktype == 'M') // Map met bestanden is altijd heel simpel
{ {
var requiredfield = (required ? required_class : ""); var requiredfield = (required ? required_class : "");
@@ -1187,7 +1210,8 @@ function listKenmerk(sql, module, key, props)
+ "' " + "' "
: "") : "")
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " : "") + (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " : "")
+ (readonlyfield? " readonly tabindex=-1 " + (readonlyfield || maskeren
? " readonly tabindex=-1 "
: " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' "); : " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' ");
} }
@@ -1195,76 +1219,82 @@ function listKenmerk(sql, module, key, props)
// LET OP: kv is nu een "OPEN" variabele, die nog minstens een sluithaak nodig heeft! // LET OP: kv is nu een "OPEN" variabele, die nog minstens een sluithaak nodig heeft!
// //
// ==========================================================================================
// ===============================================
// KENMERKTYPE N (Numeriek) of B (Berekening) =============================================== // KENMERKTYPE N (Numeriek) of B (Berekening) ===============================================
if (ktype == 'N' || ktype == 'B') // ===============================================
{ // Checkbox of numeriek/berekening input veld. // ==========================================================================================
if (ktype == "N" || ktype == "B")
{
// Checkbox of numeriek/berekening input veld.
if (makeCheckbox) // deze doen we compleet hier if (makeCheckbox) // deze doen we compleet hier
{ {
if (readonlyfield || ktype == 'B') // Berekening input veld is altijd readonly. if (readonlyfield || ktype == "B" || maskeren) // Berekening input veld is altijd readonly.
{ {
if (formobile) if (formobile)
{ {
kv = "<input type='text' class='fldflexc ' readonly tabindex=-1 value='" + (val == 1? L("lcl_check_1") : L("lcl_check_0")) + "'>"; kv = "<input type='text' class='fldflexc ' readonly tabindex=-1 value='" + (flexkenmerkwaarde == 1? L("lcl_check_1") : L("lcl_check_0")) + "'>";
} }
else else
{ {
kv = "<span" kv = "<span"
+ " class='readonly " + " class='readonly "
+ (kenmerk_search ? "fldSflexC" : "fldflexC") // Is nu tekstveld + (kenmerk_search ? "fldSflexC" : "fldflexC") // Is nu tekstveld
+ "'>" + (val == 1? L("lcl_check_1") : L("lcl_check_0")) + "</span>"; + "'>" + (flexkenmerkwaarde == 1? L("lcl_check_1") : L("lcl_check_0")) + "</span>";
} }
} }
else else
{
kv = "<input type='checkbox' class='" kv = "<input type='checkbox' class='"
+ (kenmerk_search + (kenmerk_search ? "fldCSflexN " : "fldCflexN ")
? "fldCSflexN "
: "fldCflexN ")
+ (required ? required_class : "") + (required ? required_class : "")
+ "'" + "'"
+ " onChange='checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " + " onChange='checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' "
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " + " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' "
+ (val == 1 + (flexkenmerkwaarde == 1
? " checked" ? " checked"
: "") : "")
+ " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' " + " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' "
+ ">" + ">"
+ "<input type='hidden' id='has_" + nameprefix + idCounter + "val' name='has_" + nameprefix + idCounter + "val' value='1'>"; + "<input type='hidden' id='has_" + nameprefix + idCounter + "val' name='has_" + nameprefix + idCounter + "val' value='1'>";
} }
}
else else
{
// geen checkbox (noot PF: de readonly hiervan wordt kennelijk elders behandeld)
kv += " class='" kv += " class='"
+ (kenmerk_search + (kenmerk_search ? "fldSflexN " : "fldflexN ")
? "fldSflexN "
: "fldflexN ")
+ (required ? required_class : "") + (required ? required_class : "")
+ (kdec > 0 ? " float " : " number ") + (kdec > 0 ? " float " : " number ")
+ (isExpression? " expression " : "") + (isExpression? " expression " : "")
+ "'" + "'"
+ (required ? " required='required' " : "") + (required ? " required='required' " : "")
+ (isExpression ? " readonly " : "") + (isExpression ? " readonly " : "")
//+ " placeholder='"+val_label+"'" + " value='" + (kdec > 0 && flexkenmerkwaarde? safe.displayfloat(parseFloat(flexkenmerkwaarde), kdec) : safe.html(flexkenmerkwaarde)) + "'"
+ " value='" + (kdec > 0 && val? safe.displayfloat(parseFloat(val), kdec) : safe.html(val)) + "'"
+ " maxlength='" + ((kmin >= 0? 0 : 1) + (kdec > 0? 1 : 0) + klen) + "'" + " maxlength='" + ((kmin >= 0? 0 : 1) + (kdec > 0? 1 : 0) + klen) + "'"
+ ">"; + ">";
} }
}
// KENMERKTYPE D (Date) ================================================================= // ==========================================================================================
// =====================================================================
// KENMERKTYPE D (Date) =====================================================================
// =====================================================================
// ==========================================================================================
if (ktype == 'D') if (ktype == 'D')
{ {
kv += " class='" kv += " class='"
+ (kenmerk_search + (kenmerk_search ? "fldSflexD " : "fldflexD ")
? "fldSflexD "
: "fldflexD ")
+ (required ? required_class : "") + (required ? required_class : "")
+ (isExpression? " expression " : "") + (isExpression? " expression " : "")
+ "'" + "'"
+ (required ? " required='required' " : "") + (required ? " required='required' " : "")
+ (isExpression? " readonly " : "") + (isExpression? " readonly " : "")
+ " value='" + safe.htmlattr(val) + "'" + " value='" + safe.htmlattr(flexkenmerkwaarde) + "'"
+ ">"; + ">";
if (!readonlyfield && !isExpression) if (!readonlyfield && !isExpression && !maskeren)
kv += "<i class=\"fa fa-calendar fa-fw dateklikker\" onclick=\"$('#" kv += "<i class=\"fa fa-calendar fa-fw dateklikker\" onclick=\"$('#" + nameprefix + idCounter + "val').datepicker('show')\"></i>";
+ nameprefix + idCounter + "val').datepicker('show')\"></i>";
// Als er voor een datumveld geen kmin en kmax is ingevuld dan is de yearRange default -10 tot +10 jaar vanaf geselecteerd jaar. // Als er voor een datumveld geen kmin en kmax is ingevuld dan is de yearRange default -10 tot +10 jaar vanaf geselecteerd jaar.
// Is een van beiden ingevuld dan wordt de andere op 10 jaar vanaf geselecteerde jaar gezet (deze verschuift met selectie). // Is een van beiden ingevuld dan wordt de andere op 10 jaar vanaf geselecteerde jaar gezet (deze verschuift met selectie).
// Een opgegeven waarde is het aantal jaren voor of na het huidige jaar (waarde < 1000), of een jaartal (waarde > 1000). // Een opgegeven waarde is het aantal jaren voor of na het huidige jaar (waarde < 1000), of een jaartal (waarde > 1000).
@@ -1279,28 +1309,33 @@ function listKenmerk(sql, module, key, props)
} }
// ==========================================================================================
// =========================================================
// KENMERKTYPE X (Bestandsnaam/url) ========================================================= // KENMERKTYPE X (Bestandsnaam/url) =========================================================
// =========================================================
// ==========================================================================================
if (ktype == 'X') if (ktype == 'X')
{ {
var viewpath;
if (S("flex_X_is_URL")==0) if (S("flex_X_is_URL")==0)
var viewpath = S("image_path_virtual") + val; viewpath = S("image_path_virtual") + flexkenmerkwaarde;
else else
var viewpath = val; viewpath = flexkenmerkwaarde;
if (readonlyfield) // Je mag er wel op klikken if (readonlyfield || maskeren) // Je mag er wel op klikken
if (val) if (flexkenmerkwaarde)
kv = '<input class="details fldflexX" onclick=\'openDoc("' + safe.jsstring(viewpath) + '")\' value="' + safe.htmlattr(val) + '">'; kv = '<input class="details fldflexX" onclick=\'openDoc("' + safe.jsstring(viewpath) + '")\' value="' + safe.htmlattr(flexkenmerkwaarde) + '">';
else else
kv = ""; kv = "";
else if (val) // Tekstveld met 'view' button er achter plakken else if (flexkenmerkwaarde) // Tekstveld met 'view' button er achter plakken
kv += " class='fldflexX" kv += " class='fldflexX"
+ (required ? required_class : "") + (required ? required_class : "")
+ "'" + "'"
+ " value='" + safe.htmlattr(val) + "'" + " value='" + safe.htmlattr(flexkenmerkwaarde) + "'"
+ (required ? " required='required' " : "") + (required ? " required='required' " : "")
+ "><i class='fileopen details fa fa fa-folder-open' " + "><i class='fileopen details fa fa fa-folder-open' "
+ " onClick='openDoc(\"" + safe.jsstring(viewpath) + "\");'></i>"; + " onClick='openDoc(\"" + safe.jsstring(viewpath) + "\");'></i>";
else if (!kenmerk_search) // !val // Browse button for new er achter plakken else if (!kenmerk_search) // !flexkenmerkwaarde // Browse button for new er achter plakken
kv = "<input class='fldflexX" kv = "<input class='fldflexX"
+ (required ? required_class : "") + (required ? required_class : "")
+ "'" + "'"
@@ -1317,16 +1352,20 @@ function listKenmerk(sql, module, key, props)
? " regexp='" + kregexp + "' " ? " regexp='" + kregexp + "' "
: "") : "")
+ "name='" + nameprefix + idCounter + "val' " + "name='" + nameprefix + idCounter + "val' "
+ "value='" + safe.htmlattr(val) + "'" + "value='" + safe.htmlattr(flexkenmerkwaarde) + "'"
+ ">"; + ">";
else else
kv += ">"; kv += ">";
} }
// ==========================================================================================
// ==================================================================
// KENMERKTYPE S (Suggest) ================================================================== // KENMERKTYPE S (Suggest) ==================================================================
// readonlyfield is bij "R" al meegenomen // ==================================================================
if (ktype == 'S' && !readonlyfield) // Referentie naar andere tabel (suggest box) // ==========================================================================================
// readonlyfield/maskeren is bij "R" al meegenomen
if (ktype == "S" && !readonlyfield && !maskeren) // Referentie naar andere tabel (suggest box)
{ {
// Huidige waarde opzoeken // Huidige waarde opzoeken
var dsql = "SELECT fac_kenmerkdomein_objectnaam " var dsql = "SELECT fac_kenmerkdomein_objectnaam "
@@ -1339,7 +1378,7 @@ function listKenmerk(sql, module, key, props)
var oRs_d = Oracle.Execute(dsql); var oRs_d = Oracle.Execute(dsql);
var vervalkolom = oRs_d("fac_kenmerkdomein_verval").Value; var vervalkolom = oRs_d("fac_kenmerkdomein_verval").Value;
var suggestval = getDatatypeValue(oRs_d("fac_kenmerkdomein_objectnaam").value, oRs_d("fac_kenmerkdomein_kolomnaam").value, val); var suggestval = getDatatypeValue(oRs_d("fac_kenmerkdomein_objectnaam").value, oRs_d("fac_kenmerkdomein_kolomnaam").value, flexkenmerkwaarde);
if (oRs_d("fac_kenmerkdomein_objectnaam").value == "FAC_USRDATA" && oRs_d("fac_usrtab_key").value) if (oRs_d("fac_kenmerkdomein_objectnaam").value == "FAC_USRDATA" && oRs_d("fac_usrtab_key").value)
{ {
var fsql = "SELECT fac_usrdata_key" var fsql = "SELECT fac_usrdata_key"
@@ -1412,7 +1451,7 @@ function listKenmerk(sql, module, key, props)
Suggest<%=nameprefix + idCounter%> = new Suggest({objectName: "Suggest<%=nameprefix + idCounter%>", Suggest<%=nameprefix + idCounter%> = new Suggest({objectName: "Suggest<%=nameprefix + idCounter%>",
queryField: $("#Suggest<%=nameprefix + idCounter%>_show")[0], queryField: $("#Suggest<%=nameprefix + idCounter%>_show")[0],
queryUrl: rooturl + "/appl/shared/Suggest/SuggestKenmerkDomein.asp?kenmerkdomein_key=<%=kdomein_key%>", queryUrl: rooturl + "/appl/shared/Suggest/SuggestKenmerkDomein.asp?kenmerkdomein_key=<%=kdomein_key%>",
initKey: '<%=val%>', initKey: '<%=flexkenmerkwaarde%>',
keyField: $("#<%=nameprefix + idCounter%>val")[0], keyField: $("#<%=nameprefix + idCounter%>val")[0],
fieldReadonly: <%=readonlyfield? "true" : "false"%> fieldReadonly: <%=readonlyfield? "true" : "false"%>
<% if (parentkenmerkid != "") <% if (parentkenmerkid != "")
@@ -1447,13 +1486,17 @@ function listKenmerk(sql, module, key, props)
+ "<input type='hidden' id='execDone" + nameprefix + idCounter + "' name='execDone" + nameprefix + idCounter + "' value='0'>"; + "<input type='hidden' id='execDone" + nameprefix + idCounter + "' name='execDone" + nameprefix + idCounter + "' value='0'>";
} }
// ==========================================================================================
// ====================================================================
// KENMERKTYPE L (Label) ==================================================================== // KENMERKTYPE L (Label) ====================================================================
if (ktype == 'L' || ktype == 'l') // ====================================================================
// ==========================================================================================
if (ktype == "L" || ktype == "l")
{ // Label line { // Label line
allCollapsable = (ktype == 'l'); // opnieuw beginnen met zoeken allCollapsable = (ktype == "l"); // opnieuw beginnen met zoeken
inMobileBlock = (formobile && ktype == 'l'); // op dit moment zitten we in een mobile-collapse-content-block inMobileBlock = (formobile && ktype == "l"); // op dit moment zitten we in een mobile-collapse-content-block
val_label = oRs("kenmerk_omschrijving").Value; // was: 1 flexkenmerklabel = oRs("kenmerk_omschrijving").Value; // was: 1
clabelCounter++; clabelCounter++;
val_seperator = ''; val_seperator = '';
kv = def_val; kv = def_val;
@@ -1461,7 +1504,7 @@ function listKenmerk(sql, module, key, props)
} }
// ========================================================================================== // ==========================================================================================
// Alles bepaald, nu positioneren enzo // Alles bepaald, te tonen waarde/veld in kv, nu positioneren enzo in kvhtml
// ========================================================================================== // ==========================================================================================
if (!predone && props.fnpre && (kv || (ktype == 'L' || ktype == 'l'))) if (!predone && props.fnpre && (kv || (ktype == 'L' || ktype == 'l')))
{ {
@@ -1484,13 +1527,16 @@ function listKenmerk(sql, module, key, props)
continue; // Teller is wel opgehoogd: volgende komt vanzelf op nieuwe regel continue; // Teller is wel opgehoogd: volgende komt vanzelf op nieuwe regel
} }
flexkenmerklabel = maskmarker + "&nbsp;" + flexkenmerklabel;
var kvhtml = ""; // hierin bouwen we de html op
if (kv != '') if (kv != '')
{ {
// Schrijf eventueel een tabelregel begin // Schrijf eventueel een tabelregel begin
if (((colCount&1) || forceNewLine || !kenmerk_2col) && !formobile && !notr) if (((colCount&1) || forceNewLine || !kenmerk_2col) && !formobile && !notr)
kenmerk_write('<tr' + (ktype == 'L' || ktype == 'l'? ' id="'+nameprefix+'clabel' + clabelCounter + '"' : '') kvhtml += ('<tr' + (ktype == 'L' || ktype == 'l'? ' id="'+nameprefix+'clabel' + clabelCounter + '"' : '')
+ ' class="trlabel ' + (ktype == 'L' || ktype == 'l'? 'flexlabel' : '') + (ktype == 'l' && !readonlyfield? ' flexcollapsable' : '') + '"' + ' class="trlabel ' + (ktype == 'L' || ktype == 'l'? 'flexlabel' : '') + (ktype == 'l' && !readonlyfield? ' flexcollapsable' : '') + '"'
+ (ktype == 'l'? ' onclick="$(\'#'+nameprefix+'clabel' + clabelCounter + '\').nextUntil($(\'#'+nameprefix+'clabel' + (clabelCounter + 1) + '\')).toggle();' + (ktype == 'l' ? ' onclick="$(\'#'+nameprefix+'clabel' + clabelCounter + '\').nextUntil($(\'#'+nameprefix+'clabel' + (clabelCounter + 1) + '\')).toggle();'
+ '$(this).toggleClass(\'flexcollapsed\');' + '$(this).toggleClass(\'flexcollapsed\');'
+ 'FcltMgr.resized(window);"' + 'FcltMgr.resized(window);"'
: '') : '')
@@ -1501,21 +1547,21 @@ function listKenmerk(sql, module, key, props)
props.label_colspan = 2; props.label_colspan = 2;
if (props.wfbuilder) // Workflow Expression Builder if (props.wfbuilder) // Workflow Expression Builder
kenmerk_write("<td>:flex{0}</td>".format(kkey)); kvhtml += ("<td>:flex{0}</td>".format(kkey));
if (!formobile && !nolabel) if (!formobile && !nolabel)
kenmerk_write('\n <td class="label' + (ktype == 'L' || ktype == 'l'? ' flexlabel' : '')+ (kenmerk_search? ' flexsearch' : '') + '"' kvhtml += ('\n <td class="label' + (ktype == 'L' || ktype == 'l'? ' flexlabel' : '')+ (kenmerk_search? ' flexsearch' : '') + '"'
+ (props.label_colspan? ' colspan=' + props.label_colspan : '') + '>'); + (props.label_colspan? ' colspan=' + props.label_colspan : '') + '>');
if (!nolabel) if (!nolabel)
kenmerk_write((formobile && ktype == 'l'? '<div data-role="collapsible" data-theme="c" data-content-theme="c"><h3 id="collLabel'+clabelCounter+'">' : '') kvhtml += ((formobile && ktype == 'l'? '<div data-role="collapsible" data-theme="c" data-content-theme="c"><h3 id="collLabel'+clabelCounter+'">' : '')
+ '\n <label for="' + nameprefix + idCounter + 'val" class="' + (ktype == 'L' || ktype == 'l'? ' flexlabellabel' : '') + '\n <label for="' + nameprefix + idCounter + 'val" class="' + (ktype == 'L' || ktype == 'l'? ' flexlabellabel' : '')
+ (isExpression ? ' expression' : '') + '">' + '<span title="' + safe.htmlattr(hint) + '">' + (isExpression ? ' expression' : '') + '">' + '<span title="' + safe.htmlattr(hint) + '">'
+ val_label + ((kdim != null && kdim != "xxx")? ' [' + kdim + ']' : '') + val_seperator + '</span></label>'+(formobile && ktype == 'l' ? '</h3>' : '')); + flexkenmerklabel + ((kdim != null && kdim != "xxx")? ' [' + kdim + ']' : '') + val_seperator + '</span></label>'+(formobile && ktype == 'l' ? '</h3>' : ''));
// labelwaardes (vaak invulinstructie) in apart te stylen span // labelwaardes (vaak invulinstructie) in apart te stylen span
if (formobile && (ktype == 'L' || ktype == 'l') && kv) { if (formobile && (ktype == 'L' || ktype == 'l') && kv) {
kv = '\n <span class="flexlabelvalue">' + kv + '</span>'; kvhtml += '\n <span class="flexlabelvalue">' + kv + '</span>';
} }
// Bij mobile willen we de checkbox en zijn label in dezelfde ene TD hebben met colspan=2. // Bij mobile willen we de checkbox en zijn label in dezelfde ene TD hebben met colspan=2.
@@ -1524,62 +1570,68 @@ function listKenmerk(sql, module, key, props)
if ((!makeCheckbox || !formobile) && !formobile) if ((!makeCheckbox || !formobile) && !formobile)
{ {
if (!nolabel) if (!nolabel)
kenmerk_write('</td>'); kvhtml += ('</td>');
kenmerk_write('\n <td ' + (ktype == 'L' || ktype == 'l'? ' class="flexlabel lhint"' : (readonlyfield ? ' class="readonly flexvalue"' : ' class="flexvalue"'))); kvhtml += ('\n <td ' + (ktype == 'L' || ktype == 'l'? ' class="flexlabel lhint"' : (readonlyfield ? ' class="readonly flexvalue"' : ' class="flexvalue"')));
if (kenmerk_search && (ktype != 'L' && ktype != 'l')) if (kenmerk_search && (ktype != 'L' && ktype != 'l'))
{ {
kenmerk_write('>'); kvhtml += ('>');
kenmerk_write(Operand(idCounter)); kvhtml += (Operand(idCounter));
} }
else else
{ {
if ( ktype == 'L' || ktype == 'l' ) if ( ktype == 'L' || ktype == 'l' )
if (typeof kenmerk_extraTD != "undefined" && kenmerk_extraTD) if (typeof kenmerk_extraTD != "undefined" && kenmerk_extraTD)
kenmerk_write(' colspan=4>'); // MLD_OPDR heeft TD-tje extra kvhtml += (' colspan=4>'); // MLD_OPDR heeft TD-tje extra
else else
kenmerk_write(' colspan=3>'); kvhtml += (' colspan=3>');
else else
kenmerk_write(">"); kvhtml += (">");
} }
if (nolabel) if (nolabel)
kenmerk_write('\n <label for="' + nameprefix + idCounter + 'val">' kvhtml += ('\n <label for="' + nameprefix + idCounter + 'val">'
+ '<span title="' + safe.htmlattr(hint) + '">' + '<span title="' + safe.htmlattr(hint) + '">'
+ '</span></label>'); + '</span></label>');
} }
// Schrijf vervolgens nu het echte veld // Nu het eerder bepaalde waarde veld, zo nodig onderdrukt bij confidential-situatie
if (confidential && ksysteem&4) if (maskeren) {
kenmerk_write("<span class='confidential'><i class='fa fa-user-secret'></i>&nbsp;"+L("lcl_confidential")+"</span>"); // nu verstop ik alles wat we hierboven bepaald hebben. Dat is wat te lomp, want nu raak je alles kwijt bij _save.
kvhtml += ("<span class='confidential'>"+ /* maskmarker + */ L("lcl_confidential")+"</span>");
}
else else
kenmerk_write(kv); kvhtml += kv;
if (typeof kenmerk_extraTD != "undefined" && kenmerk_extraTD && !formobile) if (typeof kenmerk_extraTD != "undefined" && kenmerk_extraTD && !formobile)
kenmerk_write('\n </td><td>') // Extra leeg celletje voor layout MLD_OPDR kvhtml += '\n </td><td>'; // Extra leeg celletje voor layout MLD_OPDR
if (val && forceReadonly && ktype != "M" && ktype != 'L' && ktype != 'l') if (!maskeren && flexkenmerkwaarde && forceReadonly && ktype != "M" && ktype != "L" && ktype != "l") // check mbt confidential
{ // hidden veld met de *echt* waardes zodat ze wel worden opgeslagen {
kenmerk_write("\n <input type=hidden id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' value='" + safe.htmlattr(val) + "'>") // hidden veld met de *echte* waardes zodat ze wel worden opgeslagen
kvhtml += "\n <input type=hidden id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' value='" + safe.htmlattr(flexkenmerkwaarde) + "'>";
} }
if ((kenmerk_search || !readonlyfield || (val && forceReadonly)) && ktype != "M" && ktype != 'L' && ktype != 'l') if (!maskeren && (kenmerk_search || !readonlyfield || (flexkenmerkwaarde && forceReadonly)) && ktype != "M" && ktype != "L" && ktype != "l")
{ // Alleen dan hidden name-velden er bij {
%> <input type=hidden name='<%=nameprefix + idCounter%>key' id='<%=nameprefix + idCounter%>key' value='<%=kkey%>'> // Alleen dan hidden name-velden er bij
<input type=hidden name='<%=nameprefix + idCounter%>t' id='<%=nameprefix + idCounter%>t' value='<%=ktype%>'> kvhtml += "<input type=hidden name='"+nameprefix + idCounter+"key' id='"+nameprefix + idCounter+"key' value='"+kkey+"'>";
<% if (isExpression) kvhtml += "<input type=hidden name='"+nameprefix + idCounter+"t' id='"+nameprefix + idCounter+"t' value='"+ktype+"'>";
{ %> if (isExpression)
<input type=hidden name='<%=nameprefix + idCounter%>e' id='<%=nameprefix + idCounter%>e' value='1'> {
<% } %> kvhtml += "<input type=hidden name='"+nameprefix + idCounter+"e' id='"+nameprefix + idCounter+"e' value='1'>";
<% } }
}
idCounter++; // Nu ophogen idCounter++; // Nu ophogen
if (!formobile) if (!formobile)
{ {
kenmerk_write('</td>'); kvhtml += '</td>';
if (!((colCount&1) && kenmerk_2col) && !notr) if (!((colCount&1) && kenmerk_2col) && !notr)
kenmerk_write('\n</tr>'); kvhtml += '\n</tr>';
} }
// En hier schrijven we het hele veld dan naar de pagina
kenmerk_write (kvhtml);
} }
oRs.MoveNext(); oRs.MoveNext();
// Collapse code er achteraan als de *volgende* een ander label is // Collapse code er achteraan als de *volgende* een ander label is
@@ -1598,6 +1650,10 @@ function listKenmerk(sql, module, key, props)
} }
} }
oRs.close(); oRs.close();
// All fields are done here
if (inMobileBlock || (!formobile && allCollapsable)) // allerlaatste ook nog if (inMobileBlock || (!formobile && allCollapsable)) // allerlaatste ook nog
{ {
if (formobile) if (formobile)
@@ -1848,9 +1904,9 @@ function CopyFlexFolders(oldbasepath, newbasepath, flexsql)
// ================================================================================================ // ================================================================================================
// Save de kenmerken die we met listKenmerk hebben aangemaakt // Save de kenmerken die we met listKenmerk hebben aangemaakt
// Verondersteld POST formulier (we doen een Request.Form) //
// kenmerkTable : "mld_kenmerkopdr" // kenmerkTable : "mld_kenmerkopdr"
// kenmerkParentKey: "mld_opdr_key" // kenmerkParentKey : "mld_opdr_key"
// kenmerkWaarde : "mld_kenmerkopdr_waarde" // kenmerkWaarde : "mld_kenmerkopdr_waarde"
// kenmerkKey : "mld_kenmerk_key" // kenmerkKey : "mld_kenmerk_key"
// currentKenmerkenSQL : Voor maken array met kenmerk_keys die voor dit object al in de database waren // currentKenmerkenSQL : Voor maken array met kenmerk_keys die voor dit object al in de database waren
@@ -1864,8 +1920,11 @@ function CopyFlexFolders(oldbasepath, newbasepath, flexsql)
// - allKenmerkenSQL is dan ook verplicht met kenmerk_omschrijving en // - allKenmerkenSQL is dan ook verplicht met kenmerk_omschrijving en
// srtkenmerk_key (zie melding_save) // srtkenmerk_key (zie melding_save)
// - module is dan ook verplicht // - module is dan ook verplicht
//
// In listKenmerk hebben we al gezorgd dat er alleen waarden gesubmit worden van velden die we // In listKenmerk hebben we al gezorgd dat er alleen waarden gesubmit worden van velden die we
// ook echt mochten wijzigen. kkn en kvn zullen er dan ook altijd beide zijn // ook echt mochten wijzigen. kk en kv zullen er dan ook altijd beide zijn
// Nieuw is dat we af moeten blijven van confidential kenmerken, dat zijn kenmerken die
// vertrouwelijk zijn (systeem&4) gedefinieerd en voor deze user afgeschermd zijn (confidential)
// ================================================================================================ // ================================================================================================
// Let op: de voorkeur is het gebruik van saveFlexKenmerken(parentKey, params) // Let op: de voorkeur is het gebruik van saveFlexKenmerken(parentKey, params)
// voor backward compatibilitiet mag je het nog uitschrijven. // voor backward compatibilitiet mag je het nog uitschrijven.