Merge 2015.3 patches

svn path=/Website/trunk/; revision=27897
This commit is contained in:
Jos Groot Lipman
2016-01-25 15:12:13 +00:00
parent 5b9fb7a27a
commit c7c667208f
32 changed files with 265 additions and 76 deletions

View File

@@ -109,7 +109,7 @@ else
var page3 ="../prs/prs_afdeling_search_list.asp?tiny=1&room_key=" + room_key;// Alle afdelingen van alle niveau's (1 en hoger) laten zien dus afd_niveau=nr niet meegegeven
IFRAMER("wpFrame", page3, { initHeight: "450px" } );
}
var authparamsINSMAN = user.checkAutorisation("WEB_INSMAN", true);
var insman_read = authparamsINSMAN;
if (insman_read)
@@ -117,6 +117,7 @@ else
var page4="../INS/ins_list.asp?embedded=1&tiny=1&ruimtekey=" + room_key
IFRAMER("insdeel", page4, { initHeight: "450px" } );
}
}
%>
</body>
</html>

View File

@@ -18,6 +18,11 @@
<!-- #include file="./model_tracking.inc"-->
<%
function fnApiToken(oRs, field, model)
{
var hmac = protectHMAC.create(oRs("prs_perslid_oslogin").Value, { sleutel: oRs("prs_perslid_apikey").Value });
return hmac;
}
model_persons =
{
table: "prs_perslid",
@@ -48,6 +53,13 @@ model_persons =
//var urole = "fe"; // TODO: Moet echt niet ter zake doen
//var autfunction = urole == "fe"? "WEB_ALGUSE" : "WEB_ALGMAN";
//params.authparams = user.checkAutorisation(autfunction, null, null, true); // pessimistisch
//if (params.filter.id == user_key)
{
if (user.prs_perslid_apikey() && user.oslogin())
{
this.fields["authtoken"] = { dbs: "prs_perslid_apikey", typ: "varchar", val: fnApiToken };
}
}
var query = api2.sqlfields(params, model_persons );
query.tables.push("prs_v_werkplek_gegevens");

View File

@@ -41,7 +41,7 @@ model_res_disc_params =
"res_disc_params_notify": {
"dbs": "res_disc_params_notify",
"label": L("res_catalogus_notify"),
"typ": "check"
"typ": "check0"
},
"res_disc_params_kosten": {
"dbs": "res_disc_params_kosten",

View File

@@ -51,7 +51,8 @@ function model_res_ruimte_opstelling(fnparams)
"foreign": {
"tbl": "RES_OPSTELLING",
"key": "RES_OPSTELLING_KEY",
"desc": "RES_OPSTELLING_OMSCHRIJVING"
"desc": "RES_OPSTELLING_OMSCHRIJVING",
"where": "RES_OPSTELLING_VERWIJDER IS NULL"
},
"filter": "exact"
},

View File

@@ -118,7 +118,7 @@ function bes_voorraad_list (pautfunction, params)
+ " AND isd2.bes_srtdeel_nr LIKE sd.bes_srtdeel_nr"
+ " AND bes_srtdeel_verwijder IS NULL"
+ " AND bd2.ins_discipline_key = dp.bes_ins_discipline_key_inkoop) voorraadmin" // Voorraadmin van gekoppelde discipline
+ " , SUM (bi.bes_bestelling_item_aantal) aantal_intern"
+ " , SUM (bo.bes_bestelopdr_item_aantal) aantal_intern"
+ " , TO_NUMBER (NULL) aantal_open_order"
+ " , TO_NUMBER (NULL) aantal_extern_geleverd"
+ " , (SELECT isd2.bes_srtdeel_maxbestel"
@@ -153,10 +153,12 @@ function bes_voorraad_list (pautfunction, params)
+ " , bes_v_aanwezigsrtdeel sd"
+ " , bes_bestelling b"
+ " , bes_bestelling_item bi"
+ " , bes_bestelopdr_item bo"
+ " , bes_disc_params dp"
+ " WHERE sd.bes_srtgroep_key = g.bes_srtgroep_key"
+ " AND bi.bes_srtdeel_key = sd.bes_srtdeel_key"
+ " AND b.bes_bestelling_key = bi.bes_bestelling_key"
+ " AND bi.bes_bestelopdr_item_key = bo.bes_bestelopdr_item_key"
+ " AND g.ins_discipline_key = bd.ins_discipline_key"
+ " AND bd.ins_discipline_key = dp.bes_ins_discipline_key"
+ " AND sd.bes_srtdeel_verwijder IS NULL"
@@ -209,7 +211,7 @@ function bes_voorraad_list (pautfunction, params)
+ " , bes_srtdeel_voorraadmax voorraadmax"
+ " , bes_srtdeel_voorraadmin voorraadmin"
+ " , TO_NUMBER (NULL) aantal_intern"
+ " , SUM (bi.bes_bestelling_item_aantal) - SUM (bi.bes_bestelling_item_aantalontv) aantal_open_order"
+ " , SUM (bi.bes_bestelling_item_aantal) - SUM (COALESCE(bi.bes_bestelling_item_aantalontv, 0)) aantal_open_order"
+ " , TO_NUMBER (NULL) aantal_extern_geleverd"
+ " , sd.bes_srtdeel_maxbestel maxbestel"
+ " , sd.bes_srtdeel_minimum bestelmin"
@@ -267,7 +269,7 @@ function bes_voorraad_list (pautfunction, params)
+ " , bes_srtdeel_voorraadmin voorraadmin"
+ " , TO_NUMBER (NULL) aantal_intern"
+ " , TO_NUMBER (NULL) aantal_open_order"
+ " , SUM (bi.bes_bestelling_item_aantalontv) aantal_extern_geleverd"
+ " , SUM (COALESCE(bi.bes_bestelling_item_aantalontv, 0)) aantal_extern_geleverd"
+ " , sd.bes_srtdeel_maxbestel maxbestel"
+ " , sd.bes_srtdeel_minimum bestelmin"
+ " , sd.bes_srtdeel_veelvoud bestelveelvoud"
@@ -455,11 +457,11 @@ function bes_voorraad_list (pautfunction, params)
var maxbestel = oRs("maxbestel").Value || 0; // Setting "Maximum bestelaantal is voorraad" 0=Nee, 1=Ja.
var voorraadmin = oRs("voorraadmin").Value;
var voorraadmax = oRs("voorraadmax").Value || 0;
var bestelveelvoud = oRs("bestelveelvoud").Value;
var bestelveelvoud = oRs("bestelveelvoud").Value || 1;
var srtdeelkey = oRs("bes_srtdeel_key").Value;
if (tebestellen == 0 || (maxbestel > 0 && voorraad <= 0))
return "";
return null;
// Onderstaande testen zie ook function checkAmount in sel_items_tab.js.
// 1) Is het bestelaantal maximaal de voorraad indien de setting is gezet?

View File

@@ -46,7 +46,7 @@ if (afspr_key < 0) // Misschien pool reservering?
sql = "SELECT MIN (bez_afspraak_key) bez_afspraak_key"
+ " , MIN (rr.res_rsv_ruimte_key) res_rsv_ruimte_key"
+ " FROM bez_afspraak ba"
+ " , res_rsv_ruimte rr"
+ " , res_v_aanwezigrsv_ruimte rr"
+ " , res_reservering rrr"
+ " WHERE rr.res_rsv_ruimte_key = ba.res_rsv_ruimte_key(+)"
+ " AND rr.res_reservering_key = rrr.res_reservering_key"

View File

@@ -300,7 +300,7 @@ function addObjecten(cHandle, highlight_ins_deel_key)
if (pLabelI_key > 0)
{
themaProps.labelThema = pLabelI_key;
themaProps.labelThema_key = pLabelI_key;
labelThema(cHandle, themaProps);
}

View File

@@ -598,14 +598,76 @@
<td class="tekst"><xsl:value-of select="TIJDSEENHEIDZORGPERIODE"/></td>
<td class="tekst"><xsl:value-of select="DECLARATIEBEDRAG"/></td>
<td class="tekst"><xsl:value-of select="DEBETCREDIT"/></td>
<td class="tekst"><xsl:value-of select="REFERENTIENUMMERCREDIT"/></td>
<td class="tekst"><xsl:value-of select="REFERENTIENUMMERCREDIT"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:if>
<xsl:if test="@view = 'care_v_rap2_factuur_uren_R'">
<style>
.num0dec {mso-number-format:0;} .num2dec {mso-number-format:Fixed;} .tekst {mso-number-format:"\@";}
</style>
<table border="0" bordercolor="#ffffff" width="100%">
<xsl:for-each select="//facilitor/rapport/rapport_data/data_row">
<xsl:if test="position() = 1">
<tr>
<td>Factuurnr</td>
<td>BSN</td>
<td>NAAM</td>
<td>Meisjesnaam</td>
<td>Geboortedatum</td>
<td>Geslacht</td>
<td>Straat</td>
<td>Huisnummer</td>
<td>Postcode</td>
<td>Woonplaats</td>
<td>Telefoonnummer</td>
<td>Mobielnummer</td>
<td>Contactpersoon</td>
<td>Email</td>
<td>Opmerking</td>
<td>Bijzonderheden</td>
<td>Beschikkingsnummer</td>
<td>Start indiciatie</td>
<td>Eind indicatie</td>
<td>Soort HV</td>
<td>Indicatie uren</td>
<td>Uren besteed</td>
</tr>
</xsl:if>
<tr>
<td class="tekst"><xsl:value-of select="FACTUURNUMMER"/></td>
<td class="tekst"><xsl:value-of select="BSN"/></td>
<td class="tekst"><xsl:value-of select="NAAM"/></td>
<td class="tekst"><xsl:value-of select="MEISJES_NAAM"/></td>
<td class="tekst"><xsl:value-of select="GEBOORTEDATUM"/></td>
<td class="tekst"><xsl:value-of select="GESLACHT"/></td>
<td class="tekst"><xsl:value-of select="STRAAT"/></td>
<td class="tekst"><xsl:value-of select="HUISNUMMER"/></td>
<td class="tekst"><xsl:value-of select="POSTCODE"/></td>
<td class="tekst"><xsl:value-of select="WOONPLAATS"/></td>
<td class="tekst"><xsl:value-of select="TELEFOONNUMMER"/></td>
<td class="tekst"><xsl:value-of select="MOBIELNUMMER"/></td>
<td class="tekst"><xsl:value-of select="CONTACTPERSOON"/></td>
<td class="tekst"><xsl:value-of select="EMAIL"/></td>
<td class="tekst"><xsl:value-of select="OPMERKING"/></td>
<td class="tekst"><xsl:value-of select="BIJZONDERHEDEN"/></td>
<td class="tekst"><xsl:value-of select="BESCHIKKINGSNUMMER"/></td>
<td class="tekst"><xsl:value-of select="START_INDICATIE"/></td>
<td class="tekst"><xsl:value-of select="EIND_INDICATIE"/></td>
<td class="tekst"><xsl:value-of select="SOORT_HV"/></td>
<td class="tekst"><xsl:value-of select="INDICATIE_UREN"/></td>
<td class="tekst"><xsl:value-of select="UREN_BESTEED"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:if>

View File

@@ -27,6 +27,8 @@
<%
var cnt_key = getQParamInt("cnt_key");
var this_cnt = cnt.func_enabled_contract(cnt_key); // Wat heb ik zoal aan rechten op dit contract?
user.auth_required_or_abort(this_cnt.canReadAny);
var showall = getQParamInt("showall", 0) == 1;
var outputmode = getQParamInt("outputmode", 0);
%>

View File

@@ -20,7 +20,8 @@
<%
var cnt_key = getQParamInt("cnt_key", -1);
var this_cnt = cnt.func_enabled_contract(cnt_key); // klapt wel als geen rechten
var this_cnt = cnt.func_enabled_contract(cnt_key);
user.auth_required_or_abort(this_cnt.canReadAny);
FCLT2XMLResponse( {xmlnode:'contract', key: cnt_key });
%>

View File

@@ -38,7 +38,8 @@ var removed = false;
for (var i = 0; i < autoopen.length; i++)
{
if (autoopen[i].u == autoopenurl ||
autoopen[i].u == autoopenurl ||
autoopen[i].u == "/" + autoopenurl ||
"/" + autoopen[i].u == autoopenurl ||
autoopen[i].u == "../../" + autoopenurl)
{
autoopen.splice(i, 1);

View File

@@ -23,9 +23,13 @@ DOCTYPE_Disable = 1;
protectRequest.validateToken();
// TODO: Nauwkeuriger controleren
var autfunction="WEB_PRSSYS";
var level = getFParam("level");
if (level == "AD")
var autfunction="WEB_ALGMSU";
var authParams = user.checkAutorisation(autfunction);
var level = getFParam("level");
if (level == "BM")
var bmname = getFParam("key");
else

View File

@@ -1001,8 +1001,10 @@ FcltMgr.window = window;
FcltMgr._pageManager = FcltMgr.defaultManager;
FcltMgr.IsTheManager = true;
try
{
if (this.userId && parent && parent.userId && this.userId != parent.userId)
{ // Als een van beide op /-1 eindigt niet al te hard klagen
if (this.userId && !String(this.userId).match(/\/\-1$/)
&& parent && parent.userId && !String(parent.userId).match(/\/\-1$/)
&& this.userId != parent.userId)
alert("Unexpected change from user " + parent.userId + " to " + this.userId);
if (parent && parent.FcltMgr && parent.FcltMgr != FcltMgr)

View File

@@ -1,4 +1,4 @@
/*
/*
* $Revision$
* $Id$
*
@@ -85,10 +85,27 @@ label.ed {font-weight: lighter; color: #d14b1c;}
}
.missing { background-color: #FFD0D0!important; }
.attention {color: #E63600 !important;}
.bezet, .vrij {font-weight: bold; text-align: center; padding:14px; text-transform: uppercase;}
.bezet {background-color: #E63600; margin-bottom:6px; color: #fff;}
.vrij {background-color: #36E600;}
.resruimte .ui-page,
.resruimte .ui-content {
padding: 0;
margin: 0;
}
.bezet, .vrij {font-weight: bold; text-align: center; text-transform: uppercase;}
.bezet {background-color: transparent; margin-bottom:6px;}
.vrij {background-color: transparent;}
.bezetinfo {font-size: 0.9em;}
.resruimte div.dbezet,
.resruimte div.dvrij {
padding: 0 10%;
}
div.dbezet {background-color: #E63600; color: white;}
div.pbezet {background-color: #E63600 !important; color: white;}
div.dbezet .bezetinfo {color: white;}
div.dbezet .plantime {color: #333;}
.cvrij, .cbezet {
margin-top: 1em;
}
#fbanner, #hbanner {
height: 40px;
@@ -197,6 +214,7 @@ div.subheader {
/* reserveringsinfoschermpje */
.resruimte {
text-align: center;
}
.resphoto {
width: 100%;
@@ -212,10 +230,13 @@ table.planbord {
.resphoto img {
margin: 0;
max-width: 100%;
max-height: 300px;
}
@media all and (min-width: 480px) {
.resphoto img {
min-width: 400px;
max-height: 400px;
}
}
@@ -231,13 +252,39 @@ div.plantime {
}
.resoms {
background-color: white;
color: #333;
line-height: 1.2em;
padding: 1em;
font-size: 0.9em;
padding: 0.5em 1em;
font-size: 0.95em;
text-align: center;
box-shadow: 2px 2px 2px #888888;
max-width: 450px;
max-width: 100%;
margin: auto;
}
div.dbezet .resoms {
background: none;
color: #fff;
box-shadow: none;
}
@media all and (min-width: 720px) {
.vrij, .bezet,
.resruimte .ui-btn {
font-size: 2em;
}
.bezetinfo {font-size: 1em;}
.resoms {
line-height: 2em;
font-size: 1.4em;
}
.resphoto img {
width: 100%;
max-height: 100%;
}
.resplan {
display: none;
}
}
/* Set de default jQuery mobile font-weight naar lighter */
body,

View File

@@ -145,7 +145,8 @@ function FOOTER(params)
function PAGE_START(params)
{
if (!params) params = {};
%><div data-role="page" id="<%=params.id ? params.id : 'page'%>" data-theme="<%= params.datatheme ? params.datatheme : jQDataTheme%>"><%
%><div data-role="page" id="<%=params.id ? params.id : 'page'%>" data-theme="<%= params.datatheme ? params.datatheme : jQDataTheme%>"
<%= params.pclass?" class='"+params.pclass+"'":"" %> ><%
}
function PAGE_END()
{
@@ -154,7 +155,8 @@ function PAGE_END()
function CONTENT_START(params)
{
if (!params) params = {};
%><div data-role="content" data-theme="<%= params.datatheme ? params.datatheme : ""%>"><%
%><div data-role="content" data-theme="<%= params.datatheme ? params.datatheme : ""%>"
<%= params.pclass?" class='"+params.pclass+"'":"" %> ><%
}
function CONTENT_END()
{

View File

@@ -106,6 +106,17 @@ if (srtcontrole_key < 0 || defaultmode_key > 0)
<html>
<head>
<% FCLTMHeader.Generate({}); %>
<style>
.prefixcol { height: 40px;
background-color: #00ff00;
padding: 10px;
}
.ui-listview > .ui-li-has-thumb > .ui-btn,
.ui-listview > .ui-li-static.ui-li-has-thumb {
min-height: auto;
padding-left: 60px;
}
</style>
</head>
<body>
<%
@@ -148,20 +159,16 @@ if (srtcontrole_key < 0 || defaultmode_key > 0)
+ " WHERE COALESCE (ins_srtcontroledl_xcp_eenheid, ins_srtcontrole_eenheid) <> 0"
+ (today != -1 ? " AND TRUNC(FAC.nextcyclusdate (i.ins_deel_key, i.ins_srtcontrole_key, 1)) <= TRUNC(sysdate) " : "");
function fnDetail(oRs, params)
function fnPrefix(oRs, params)
{
var klikker = "";
if (defaultmode_key > 0)
{
var klikker = "<img src='../Pictures/innemen.png' onclick='default_inspect({0});return false;' style='margin-right:10px;'>".format(oRs.Fields("ins_srtcontrole_key").Value)
}
return klikker + safe.html(oRs.Fields("ins_srtcontrole_omschrijving").Value);
return "<img src='../Pictures/accept.png' onclick='default_inspect({0});return false;' class='prefixcol'>".format(oRs.Fields("ins_srtcontrole_key").Value)
}
var rst = new ResultsetTable({sql: sql,
keyColumn: "ins_srtcontrole_key",
linkColumn: fncolLink,
detailColumn: fnDetail, //"ins_srtcontrole_omschrijving",
prefixColumn: defaultmode_key > 0?fnPrefix:null,
detailColumn: "ins_srtcontrole_omschrijving",
ID: "srtcontroletable",
showAll: true,
noSearch: true

View File

@@ -302,9 +302,6 @@ NOTES/SUGGESTIONS:
%>
<body class="resruimte">
<%
PAGE_START();
HEADER ({title: safe.html(RuimteMode ? res_ruimte_nr : res_deel_omschrijving), back:!qrc, home: !qrc});
CONTENT_START();
// TODO: een list(!) van de reserveringen vanaf nu (reeds begonnen) tot einde van de dag
// Daar kan ik op klikken en dan.... of...?
@@ -347,6 +344,7 @@ NOTES/SUGGESTIONS:
// times bevat nu potentiele start-tijdstippen
var nubezet = false;
var helemaalvrij = false;
var oRs = Oracle.Execute( sql );
if (!oRs.eof)
{
@@ -356,34 +354,52 @@ NOTES/SUGGESTIONS:
var schoonvan = new Date(van);
schoonvan.setMinutes(schoonvan.getMinutes() - prepost * 60);
if (schoonvan < times[0] && tot > now) // Bezig of begin binnen half uur
{
{
var nubezet = true;
%><div class="cbezet"><%
}
}
else { // helemaal vrij
helemaalvrij = true;
}
PAGE_START({pclass: (nubezet ? "pbezet" : "pvrij") });
HEADER ({title: safe.html(RuimteMode ? res_ruimte_nr : res_deel_omschrijving), back:!qrc, home: !qrc});
CONTENT_START({pclass: (nubezet ? "dbezet" : "dvrij") });
if (nubezet)
{
%><div class="cbezet"><%
// We zeggen tot wanneer de huidige reservering loopt. Garandeert niet dat die erna wel vrij is
// Functioneel zou je je het einde van de laatste (aansluitende) reservering willen laten zien
// Dus wanneer is-ie weer vrij (binnen de openingstijden).
Response.write("<div class='bezet'>"+L("lcl_mobile_ruimtebezet").format(toTimeString(tot))+"</div>");
// Dit is eigenlijk niet relevant voor een normale gebruiker
// maar voor een eventuele noshow wel!
if (user.checkAutorisation( "WEB_RESNOS", true))
// KFNS#35010: ook tonen als het toch geen geheim is
if (user.checkAutorisation( "WEB_RESNOS", true) || S("res_fe_show_plantooltip") == 1)
{
Response.write("<span class='bezetinfo'>"+toTimeString(van)+" - "+toTimeString(tot)+": "+ safe.html(oRs("res_rsv_ruimte_omschrijving").Value)+"/"+safe.html(oRs("contact").Value)+"</span>");
}
%></div><%
}
else {
// nu vrij, maar naderende reservering om 'van' (dat ligt binnen ???)
%><span class="cvrij"><%
Response.write("<div class='vrij'>"+L("lcl_mobile_res_next").format(toTimeString(van))+"</div>");
%></span><%
}
}
else { // helemaal vrij
%><div class="cvrij"><%
Response.write("<div class='vrij'>"+L("lcl_mobile_res_ruimtevrij")+"</div>");
%></div><%
van = null; // er is geen eerstvolgende in de weg
}
else {
if ( !helemaalvrij )
{
// nu vrij, maar naderende reservering om 'van' (dat ligt binnen ???)
%><span class="cvrij"><%
Response.write("<div class='vrij'>"+L("lcl_mobile_res_next").format(toTimeString(van))+"</div>");
%></span><%
}
else
{
%><div class="cvrij"><%
Response.write("<div class='vrij'>"+safe.html(RuimteMode ? res_ruimte_nr : res_deel_omschrijving)+"</div>")
//Response.write("<div class='vrij'>"+L("lcl_mobile_res_ruimtevrij")+"</div>");
%></div><%
van = null; // er is geen eerstvolgende in de weg
}
}
// BLOCK_END();
%><form id="resform" name="resform" action="reserveringen.asp?submit=1<%=transitParam%>" method="post"><%

View File

@@ -177,6 +177,11 @@ function __rsMakeTableRow(oRs, cnt)
// HIER START EEN NIEUWE REGEL
var line = "";
if (this.prefixColumn)
{
line += __fnContent(this.prefixColumn)(oRs, this.prefixColumn);
}
if (this.iconColumn)
{
var icon = __fnContent(this.iconColumn)(oRs, this.processParams)

View File

@@ -826,6 +826,10 @@ res = {
// PAS OP!!!: WEB_RESMSU is disciplineloos dus niet in cresult! Daardoor zijn cresult.canWrite("WEB_RESMSU") en cresult.canRead("WEB_RESMSU") altijd false.
var haveRESMSUrights = user.checkAutorisation("WEB_RESMSU", true) != null; // Pas op: disciplineloos dus niet in cresult!
// NYBU#33454/NYBU#34977: WEB_RESAFR moet aangemaakt worden als extra autorisatie om reserveringen te mogen aanpassen na goedkeuring.
// Nu worden WEB_RESMSU rechten daarvoor gebruikt. Voor 2015.3 haveRESMSUrights vervangen door haveUSER50rights.
// Met 2016.1 maken we wel een echte autorisatie.
var haveUSER50rights = user.checkAutorisation("WEB_USER50", true) != null; // Pas op: disciplineloos dus niet in cresult!
var vandaag = new Date();
var flike_days = vandaag.getTime() - rsv_ruimte_tot.getTime();
@@ -870,7 +874,7 @@ res = {
rresult.canWrite("WEB_RESBOF") ||
rresult.canWrite("WEB_RESUSE")) &&
canWritePresentPrk &&
(!res_goedgekeurd || (res_goedgekeurd && haveRESMSUrights)) &&
(!res_goedgekeurd || (res_goedgekeurd && haveUSER50rights)) &&
(!notfrontend || rresult.canWrite("WEB_RESFOF") || rresult.canWrite("WEB_RESBOF"));
rresult.canChangeCV = rresult.canChange;
@@ -894,6 +898,7 @@ res = {
// Vanaf hier heeft canChange betrekking op het bovenste deel van het scherm
// canChangeCV gaat over het onderste deel
rresult.canChange = rresult.canChange && canWrite_ruimte;
// MGE TODO: Onderstaande regel kan volgens mij verwijderd worden.
rresult.canDelete = rresult.canDelete && canWrite_ruimte && !res_ruimte_extern;
// Had ik deze kunnen aanmaken? Dan mag hij als bron van multi's dienen
@@ -913,7 +918,7 @@ res = {
oRs.Close();
}
rresult.canDelete = rresult.canChange && !openstaandemld && !res_ruimte_extern; // Dan kun je ook alles er afhalen tenslotte met hetzelfde effect
rresult.canDelete = rresult.canChange && !openstaandemld && (!res_ruimte_extern || haveRESMSUrights); // Dan kun je ook alles er afhalen tenslotte met hetzelfde effect
rresult.canChangeFEOnly = false;
// (als alleen) Frontend-rechten-->we controleren nog strenger

View File

@@ -174,7 +174,7 @@ if (S("auto_https") && Request.ServerVariables("SERVER_PORT") != "443")
}
else
{
if (S("hsts_maxage") > 0)
if (typeof NO_ADDHEADER == "undefined" && S("hsts_maxage") > 0)
Response.AddHeader("Strict-Transport-Security", "max-age=" + S("hsts_maxage")); // Geen includeSubDomains, dat nekt http://facilitor.nl
}
@@ -183,7 +183,7 @@ if (Request.QueryString("orghome").Count>0) // Remember it. Share&Meet's
// Merk op: door onze Server.Transfer's met API's of inloggen zie je in Fiddler wel
// eens dat X-FRAME-OPTIONS twee keer in de header komt. Slordig maar acceptabel.
if (!S("allow_framed_facilitor"))
if (typeof NO_ADDHEADER == "undefined" && !S("allow_framed_facilitor"))
Response.AddHeader ("X-FRAME-OPTIONS", "SAMEORIGIN"); // voorkom ClickJacking
// Opdat share-and-meet cross-domain cookies werken tussen sgf12.dijkoraad.local en gewoon sgf12

View File

@@ -298,6 +298,8 @@ function testpassword(prs_key, wachtwoord, pmobile)
+ " , prs_perslid_wachtwoord_hash"
+ " , prs_perslid_otpsecret"
+ " , prs_perslid_otpcounter"
+ " , prs_perslid_oslogin"
+ " , prs_perslid_apikey"
+ " FROM prs_perslid"
+ " WHERE prs_perslid_key = " + prs_key;
var oRs = Oracle.Execute(sql);
@@ -308,6 +310,8 @@ function testpassword(prs_key, wachtwoord, pmobile)
var mobauthexp = new Date(oRs("prs_perslid_authenticatie_exp").Value);
var otpsecret = oRs("prs_perslid_otpsecret").Value;
var otpcounter = oRs("prs_perslid_otpcounter").Value || -1;
var apikey = oRs("prs_perslid_apikey").Value;
var oslogin = oRs("prs_perslid_oslogin").Value;
oRs.Close();
if (otpsecret) // Die eerst maar eens controleren
@@ -345,17 +349,25 @@ function testpassword(prs_key, wachtwoord, pmobile)
}
if (pmobile==1) // Mobile 'verzonnen' wachtwoord
{
if (mobauth != wachtwoord || !mobauth_exp || new Date() > mobauth_exp)
if (mobauth == wachtwoord && mobauthexp && new Date() <= mobauthexp)
{
__Log("Mobile token check failed");
return false;
return true; // Goed
}
__Log("Mobile token check failed");
// Wel doorgaan met gewoon wachtwoord controle, dat staan we ook toe
}
// geen wachtwoord
if (!passhash)
return false;
// APItoken wachtwoord 1452611295:0pBCO67Br4Cs7kkm+zszW0JhjlM
if (apikey && wachtwoord.match(/[0-9]{10}\:.*/))
{
if (protectHMAC.verify(oslogin, wachtwoord, { sleutel: apikey, expire: 60*24*30, relaxed: true })) // 30 dagen. TODO: S("fac_apitoken_auth_expire")
return true;
}
// gewoon wachtwoord
// Noot: we zouden hier kunnen testen op
// AND (prs_perslid_wachtwoord_exp IS NULL OR prs_perslid_wachtwoord_exp > SYSDATE)

View File

@@ -997,8 +997,9 @@ var protectHMAC =
var sha1 = GetObject("script:"+Server.MapPath(rooturl + "/appl/shared/sha1.wsc"));
__Log("testing hmacdata: " + str);
//__Log("testing sleutel: "+ protectHMAC.getProtectSecret());
var should_hmac = sha1.b64_hmac_sha1(protectHMAC.getProtectSecret(), hmacArr[0] + ":" + str);
params.sleutel = params.sleutel || protectHMAC.getProtectSecret();
//__Log("testing sleutel: "+ params.sleutel);
var should_hmac = sha1.b64_hmac_sha1(params.sleutel, hmacArr[0] + ":" + str);
sha1 = null;
if (hmacArr[1] != should_hmac)
@@ -1084,7 +1085,7 @@ var protectQS =
// Let op dat create dezelfde data hasht
var data = user_key + ":" + file.toUpperCase() + "?" +qs;
//__Log("testing hmacdata: " + data);
//__Log("testing sleutel: "+ protectHMAC.getProtectSecret());
//__Log("testing sleutel: "+ params.sleutel);
if (params.allow_anonymous)
params.relaxed = true;
var is_ok = protectHMAC.verify(data, getQParam("hmac"), params); // klapt er uit bij hmac-tampering en relaxed==false

View File

@@ -27,8 +27,10 @@ var chars = getQParam("k", "");
var bAll = getQParamInt("SuggestAll", 0) == 1;
var pModule = getQParam("flexmodule");
var regchars = chars.replace(/[\-\[\]\/\{\}\(\)\+\.\\\^\$\|]/g, "\\$&"); // Let op: ? en * mag blijven
var flexparam = flexProps(pModule, -1, null, null,
{ getFiles: true, api2name: null, filter: chars.replace(/\*/g, '.*') });
{ getFiles: true, api2name: null, filter: regchars.replace(/\*/g, '.*').replace(/\?/g, '.') });
var params = { bAll: bAll };
var jsonResult = { } ;

View File

@@ -86,7 +86,7 @@ function get_objecten_sql(alg_key, alg_niveau, prs_key, dept_key, stdmld_key)
+ " END"
: "''");
sql = "SELECT d.ins_deel_key"
+ " , " + plaatsaanduiding + " || d.ins_deel_omschrijving || ' (' || " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " || ')' deel"
+ " , " + plaatsaanduiding + " || d.ins_deel_omschrijving || ' (' || " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " || ') '||d.ins_deel_opmerking deel"
+ " , d.ins_alg_ruimte_key"
+ " , d.ins_alg_ruimte_type"
+ " , a.alg_ruimte_nr" // JGL: Ik vermoed dat deze effectief niet gebruikt wordt

View File

@@ -98,7 +98,7 @@ if (device.test(device.isMobile))
<tr><td><input class="required" type="text" maxlength="100" id="visname" name="vis_name"></td></tr>
<tr>
<td class="label"><label><%=L("lcl_vis_log_psw")%></label></td></tr>
<tr><td><input type="Password" <%=(S("mobile_password") == 1?" readonly ":"")%> maxlength="30" id="vispswd" name="vis_pswd">
<tr><td><input type="Password" <%=(S("mobile_password") == 1?" readonly ":"")%> maxlength="50" id="vispswd" name="vis_pswd">
</td>
</tr>
<% if (S("login_remember_days") > 0)

View File

@@ -69,7 +69,9 @@ if (user_key < 0)
var plain = decode_b64(b64);
if (plain.split(":").length > 1)
{
tryLogin(plain.split(":")[0], plain.split(":")[1]);
var ww = plain.split(":");
ww.shift();
tryLogin(plain.split(":")[0], ww.join(":")); // Behoudt eventuele ':' in wachtwoord
}
}
}

View File

@@ -70,6 +70,8 @@ oRs.Close()
for (var n = 1; n <= aantal_kenm; n++)
{
var kw = new kenmerkValues(n);
if (typeof kw.val == 'number')
kw.val = String(kw.val);
var keyname = ":flex" + kw.key;
if (kw.op == 'IS NOT NULL' || kw.op == 'IS NULL')
sqlarr.push(keyname + " " + kw.op)

View File

@@ -99,7 +99,7 @@ function send1Order(Bedrijf_key, XMLnode, OpdrKey, ordernr, Sender, cust)
var sqlB = "SELECT prs_bedrijfadres_url, "
+ " NVL(prs_bedrijfadres_ordermode, 0) prs_bedrijfadres_ordermode, "
+ " NVL(prs_bedrijfadres_xsl, 'xsl/cust.xsl') prs_bedrijfadres_xsl, "
+ " NVL(replace(prs_bedrijfadres_xsl, '\', '/'), 'xsl/cust.xsl') prs_bedrijfadres_xsl, "
+ " prs_bedrijfadres_certificate, "
+ " prs_bedrijfadres_attachfile,"
+ " prs_bedrijfadres_flexfiles,"
@@ -180,7 +180,7 @@ function send1Order(Bedrijf_key, XMLnode, OpdrKey, ordernr, Sender, cust)
// kan worden levert de functie een lege string. Voor orders gaan we dit blijven
// herhalen totdat de order wel verstuurd kan worden.
var xml_content = fetchXMLContent(XMLnode, OpdrKey, -1, "", "");
if (xml_content != "")
if (xml_content)
{
var addflexfiles = (bedrijfadres.flexfiles||S("puo_order_flexfiles")) == 1;

View File

@@ -166,7 +166,7 @@ function notificationMail(rec, p_notificationXSL, params)
, rec("fac_notificatie_lang").value
);
if (xml_content != "")
if (xml_content)
{
var SubjectText = "";
var SubjectTextXSL = "";
@@ -298,7 +298,7 @@ function notificationSMS(rec, p_notificationXSL, params)
, rec("fac_notificatie_lang").value
);
if (xml_content != "")
if (xml_content)
{
Log2File(2, "XSL file used=" + p_notificationXSL)
SMSTextXSL = XML2HTML( xml_content
@@ -391,7 +391,7 @@ function notificationSYS(rec, params)
, ""
, taal
);
if (xml_content != "")
if (xml_content)
{
var AttachPath = "";
var ordernr = "Onbekend";

View File

@@ -38,7 +38,7 @@ function submitHTTP( p_connect
XMLhttp.SetOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT, p_bedrijfadres.certificateName);
}
XMLhttp.open("POST", endpoint, false, p_bedrijfadres.username, p_bedrijfadres.password);
Log2File(1, "connect.CurrentAddress: " + endpoint);
Log2File(2, "connect.CurrentAddress: " + endpoint);
// De volgende regels zijn alleen nodig als het certificaat (nog) niet vertrouwd wordt.
// Op te lossen door cacert.der van csnet te installeren

View File

@@ -74,7 +74,7 @@ function submitDOMXSLSOAP( p_connect
XMLhttp.setOption(SXH_OPTION_SELECT_CLIENT_SSL_CERT, p_bedrijfadres.certificateName);
}
XMLhttp.open("POST", endpoint, false, p_bedrijfadres.username, p_bedrijfadres.password); // async=false dus synchroon
Log2File(1, "connect.CurrentAddress: " + endpoint);
Log2File(2, "connect.CurrentAddress: " + endpoint);
// De volgende regels zijn alleen nodig als het certificaat (nog) niet vertrouwd wordt.
// Op te lossen door cacert.der van csnet te installeren

View File

@@ -123,7 +123,7 @@ function fetchXMLContent( node
var sql = "SELECT xml.make_xml2(" + sql_params + ") xml_blob FROM dual";
Log2File(2, sql);
var oRs = Oracle.Execute(sql);
var xml_content = oRs("xml_blob").Value;
var xml_content = oRs("xml_blob").Value||"";
oRs.Close();
if (xml_content)
Log2File(2, "XML blob is {0} karakters.".format(xml_content.length));