DLLG#90075 savepoint; doorgeven in lokale (plaats) tijdszone, opslaan in server-tijdszone. De reservering toont (in show & edit-mode) de lokale tijden (met hint-icoontje als die afwijkt van de tijdszone vd server of de gebruiker)

svn path=/Website/trunk/; revision=70473
This commit is contained in:
2025-09-30 15:06:22 +00:00
parent fac332177c
commit 800fbecf53
7 changed files with 133 additions and 77 deletions

View File

@@ -284,20 +284,45 @@ res = {
oRs.Close();
},
getTimezoneByResRuimte: function _getTimezoneByResRuimte(res_ruimte_key) {
// Geeft de tijdszone terug van een (R of CV) reservering obv res_rsv_ruimte_key
getRsvTimezone: function _getRsvTimezone(res_rsv_ruimte_key) {
var sql = "SELECT rrr.alg_ruimte_key, rro.res_ruimte_key"
+ " FROM res_rsv_ruimte rrr"
+ " LEFT JOIN res_ruimte_opstelling rro"
+ " ON rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key"
+ " WHERE res_rsv_ruimte_key = " + res_rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
var alg_ruimte_key = oRs("alg_ruimte_key").Value;
var res_ruimte_key = oRs("res_ruimte_key").Value;
if (res_ruimte_key != null) {
return res.getTimezoneByRuimte(res_ruimte_key, "RES");
} else if (alg_ruimte_key != null) {
return res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
} else {
return S("fac_server_timezone");
}
},
getTimezoneByRuimte: function _getTimezoneByRuimte(ruimte_key, mode) {
// mode IN ["ALG", "RES"]
mode = mode || "RES";
var sql = "SELECT MIN (l.alg_locatie_timezone) alg_tz"
+ " FROM alg_locatie l,"
+ " alg_gebouw g,"
+ " alg_verdieping v,"
+ " alg_ruimte r,"
+ " res_alg_ruimte rar,"
+ " res_ruimte rr"
+ " FROM alg_locatie l"
+ " , alg_gebouw g"
+ " , alg_verdieping v"
+ " , alg_ruimte r"
+ (mode == "RES"
? " , res_alg_ruimte rar"
+ " , res_ruimte rr"
: "")
+ " WHERE g.alg_locatie_key = l.alg_locatie_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rar.alg_ruimte_key = r.alg_ruimte_key"
+ " AND rr.res_ruimte_key = rar.res_ruimte_key"
+ " AND rr.res_ruimte_key = " + res_ruimte_key;
+ (mode == "RES"
? " AND rar.alg_ruimte_key = r.alg_ruimte_key"
+ " AND rr.res_ruimte_key = rar.res_ruimte_key"
+ " AND rr.res_ruimte_key = " + ruimte_key
: " AND r.alg_ruimte_key = " + ruimte_key);
var oRs = Oracle.Execute(sql);
var alg_tz = oRs("alg_tz").Value || S("fac_server_timezone");
oRs.Close();
@@ -731,8 +756,9 @@ res = {
},
// Als een datum voor (discipline_expire(disc_key) ligt dan is hij 'te vroeg'
discipline_expire: function _discipline_expire(discipline_key, mode)
discipline_expire: function _discipline_expire(discipline_key, mode, timezone)
{
timezone = timezone || S("fac_server_timezone");
// Mode 0 = Use expire dagen (res_disc_params_expire_dagen)
// 1 = Use cancel dagen (res_disc_params_cancel_dagen)
// 2 = 24/7 organisatie
@@ -778,8 +804,8 @@ res = {
// Als grens wijzigingshorizon (dag) nog niet is verstreken; Eerstvolgende maandag
// Als grens wijzigingshorizon (tijd) is verstreken en res_disc_params_expire_wkdag is null; begin morgen
// Als grens wijzigingshorizon (dag) is verstreken (al dan niet icm grens wijzigingshorizon (tijd)); De eerstvolgende maandag na volgende week
var beginDate = new Date();
var beginDateSql = beginDate.toSQL(true);
var beginDate = convertToLocalTime(new Date(), timezone);
var beginDateSql = beginDate.toSQL(true, true);
if (mode != 1) { // Hou rekening met een evt. 'grens wijzigingshorizon'
var sql = "SELECT rdp.res_disc_params_expire_tijd"
+ " , rdp.res_disc_params_expire_wkdag"
@@ -842,6 +868,7 @@ res = {
if (exp_date < new Date)
exp_date = new Date;
oRs.Close();
exp_date = convertToServerTime(exp_date, timezone);
__Log("discipline_expire " + omschrijving + " (key: " + discipline_key + "): " + toDateTimeString(exp_date) + ", mode: " + mode + (mode == 1? " (cancel)" : " (expire)"));
return exp_date;
},

View File

@@ -573,8 +573,8 @@ FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"] });
status_flag : (((rsv_copy_key > 0 && S("res_copy_flag")==1) || (rsv_ruimte_key > 0)) ? (oRs("res_rsv_ruimte_flag").value||0) : null),
activiteit_key : (rsv_copy_key > 0 ? activiteit_key : oRs("res_activiteit_key").value),
srtactiviteit_key : oRs("res_srtactiviteit_key").value,
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value),
rsv_ruimte_tot : new Date(oRs("res_rsv_ruimte_tot").value),
rsv_ruimte_van : convertToLocalTime(new Date(oRs("res_rsv_ruimte_van").value), res.getRsvTimezone(rsv_ruimte_key > 0 ? rsv_ruimte_key : rsv_copy_key)),
rsv_ruimte_tot : convertToLocalTime(new Date(oRs("res_rsv_ruimte_tot").value), res.getRsvTimezone(rsv_ruimte_key > 0 ? rsv_ruimte_key : rsv_copy_key)),
alg_ruimte_key : oRs("alg_ruimte_key").value,
ruimte_opstel_key : oRs("res_ruimte_opstel_key").value,
res_ruimte_extern : this_res.res_ruimte_extern,
@@ -1709,7 +1709,6 @@ FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"] });
readonly: plaatsReadonly,
filtercode: "RES", /*strict genomen alleen voor FE/FO, maar readonly maakt dit vanzelf goed toch? */
urlAdd: [{ urlParam: "act_key", field: "sel_activity" }],
no_table: true,
onLocChange: "onLocChanged()",
onGebChange: "onGebChanged()",
requiredlevel: (S("res_search_require_locatie")==1 ? 2 : null)
@@ -1822,7 +1821,6 @@ FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"] });
readonly: reado_rsv_ruimte || fe_lastminute || getQParamInt("alg_ruimte_key", -1) > 0 || reado_alg,
readonlylevel: alg_onrgoed_niveau,
onGebChange: "onGebChanged()",
no_table: true,
required: true,
scope: (S("res_fo_catering_scopeless") && (fronto || backo) ? 0 : 1)
});

View File

@@ -48,12 +48,12 @@ if (restype == "R")
oRs.Close();
}
var sql = "SELECT res_ruimte_limiet"
var sql = "SELECT rr.res_ruimte_key, res_ruimte_limiet"
+ " FROM res_ruimte rr, res_ruimte_opstelling rro"
+ " WHERE rro.res_ruimte_key = rr.res_ruimte_key AND res_ruimte_opstel_key = " + opstel_key;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
if (!oRs.eof) {
res_ruimte_key = oRs("res_ruimte_key").Value;
res_ruimte_limiet = oRs("res_ruimte_limiet").Value;
}
oRs.Close();
@@ -88,23 +88,36 @@ oRs.Close();
var warning = "";
var res_bezoekers = getFParamInt("bezoekers", null);
var date_from = getFParamDate("date_from", null); // die hebben we vaak nodig
var ruimtekey = getFParamDate("ruimtekey", null); // die hebben we vaak nodig
if (!date_from)
var local_date_from = getFParamDate("date_from", null);
var server_date_from
, server_date_to;
var local_tz;
if (!local_date_from)
{ // fe_lastminute kon kalender niet bewerken
var sql = "SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
date_from = new Date(oRs("res_rsv_ruimte_van").Value);
date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
server_date_from = new Date(oRs("res_rsv_ruimte_van").Value);
server_date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
local_tz = res.getRsvTimezone(rsv_ruimte_key);
oRs.Close();
}
else
{
if (date_from.getSeconds() > 0 || date_from.getMilliseconds() > 0)
date_from.setSeconds(59, 1000); // Omhoog afronden op minuten, minimaliseert conflicten
var date_to = getFParamDate("date_to"); // die hebben we vaak nodig
var local_date_to = getFParamDate("date_to"); // die hebben we vaak nodig
if (opstel_key < 0) {
var alg_ruimte_key = getFParamInt("ruimtekey", -1);
local_tz = res.getTimezoneByRuimte(alg_ruimte_key, "ALG");
} else {
local_tz = res.getTimezoneByRuimte(res_ruimte_key, "RES");
}
server_date_from = convertToServerTime(local_date_from, local_tz);
server_date_to = convertToServerTime(local_date_to, local_tz);
if (server_date_from.getSeconds() > 0 || server_date_from.getMilliseconds() > 0)
server_date_from.setSeconds(59, 1000); // Omhoog afronden op minuten, minimaliseert conflicten
}
// prevent workplace date tampering
var act_limit = ((urole=="fe"&&eff_act_limiet_fe>0)?eff_act_limiet_fe:eff_act_limiet);
@@ -114,7 +127,7 @@ if (act_limit > -1)
var dateTamperCheck = new Date();
dateTamperCheck.setDate(dateTamperCheck.getDate() + parseInt(act_limit, 10) + 1);
dateTamperCheck.setHours(0, 0, 0, 0);
if (date_from > dateTamperCheck)
if (server_date_from > dateTamperCheck)
{
abort_with_warning(L("lcl_res_error_date").format(act_limit));
}
@@ -122,7 +135,7 @@ if (act_limit > -1)
// Voor zowel een ruimte als een voorzieningen reservering moet de duur minimaal S("res_block") zijn (DENB#18233)
// te kort voor een ruimte
var durationHours = (date_to - date_from) / 1000/60/60;
var durationHours = (server_date_to - server_date_from) / 1000/60/60;
if (met_eindtijd && durationHours < S("res_block") )
{
abort_with_warning(L("lcl_res_bad_period"));
@@ -131,7 +144,7 @@ if (met_eindtijd && durationHours < S("res_block") )
if (!met_eindtijd)
{ // Zet bij reserveringen zonder eindtijd de eindtijd altijd gelijk aan de begintijd.
// We houden nu geen rekening met de bloktijden en minimale reserveringsduur.
date_to = date_from;
server_date_to = server_date_from
}
// Is de reserveringstijd aangepast (dus niet voor nieuwe reservering)
@@ -168,7 +181,7 @@ if (!isNew)
var opstel_key_old = oRs("res_ruimte_opstel_key").Value;
var act_key_old = oRs("res_activiteit_key").Value;
oRs.Close();
if ((date_from_old.getTime() == date_from.getTime()) && (met_eindtijd && date_to_old.getTime() == date_to.getTime()))
if ((date_from_old.getTime() == server_date_from.getTime()) && (met_eindtijd && date_to_old.getTime() == server_date_to.getTime()))
{
var resdateChanged = false;
}
@@ -187,8 +200,8 @@ if (!isNew)
var hasCatering = oRs(0).Value > 0;
oRs.Close();
var tmp_date_from = date_from.midnight();
var tmp_date_to = date_to.midnight();
var tmp_date_from = server_date_from.midnight();
var tmp_date_to = server_date_to.midnight();
var res_meerdaags = met_eindtijd && (tmp_date_from.getTime() != tmp_date_to.getTime());
if (res_meerdaags && hasCatering && !S("res_allow_multi_cat"))
@@ -266,10 +279,12 @@ if (!isNew)
if (restype == "R")
{
date_to.setFullYear(date_from.getFullYear());
date_to.setMonth(date_from.getMonth());
date_to.setDate(date_from.getDate());
var kostenplaats_key = getFParamInt("account",-1);
local_date_to.setFullYear(local_date_from.getFullYear());
local_date_to.setMonth(local_date_from.getMonth());
local_date_to.setDate(local_date_from.getDate());
server_date_to = convertToServerTime(local_date_to, local_tz);
var kostenplaats_key = getFParamInt("account", -1);
var sql = "SELECT COALESCE(res_ruimte_begintijd, " + S("res_t1") + ") begintijd"
+ " , COALESCE(res_ruimte_eindtijd, " + S("res_t2") + ") eindtijd"
+ " , rr.res_ruimte_begintijdblok"
@@ -302,12 +317,12 @@ if (restype == "R")
abort_with_warning(L("lcl_res_room_min_duration").format(min_duur));
}
if (startdatum && startdatum >= date_to)
if (startdatum && startdatum >= local_date_to)
{
oRs.Close();
abort_with_warning(L("lcl_res_room_notavailable").format(toDateString(startdatum))); // Deze ruimte is beschikbaar per {0}. Kies een andere ruimte of een ander tijdstip!
}
if (vervaldatum && vervaldatum < date_to)
if (vervaldatum && vervaldatum < local_date_to)
{
oRs.Close();
abort_with_warning(L("lcl_res_room_expired").format(toDateString(vervaldatum))); // Deze ruimte is vervallen per {0}. Kies een andere ruimte of een ander tijdstip!
@@ -319,8 +334,8 @@ if (restype == "R")
abort_with_warning(L("lcl_res_kpks_validatie"));
}
// Openingstijden ruimte
var df = date_from.getHours() + date_from.getMinutes()/60;
var dt = date_to.getHours() + date_to.getMinutes()/60;
var df = local_date_from.getHours() + local_date_from.getMinutes()/60;
var dt = local_date_to.getHours() + local_date_to.getMinutes()/60;
// TODO: De case dat ik mobiel reserveer "tot 10:00" en het is nu nog voor de openingstijd
// dan wil ik natuurlijk dat het vanaf de openingstijd wordt gereserveerd in plaats
@@ -348,8 +363,8 @@ if (restype == "R")
// Te last-minute voor de ruimte zelf
if (rsv_ruimte_key == -1 && !adhoc) // (update controle komt later wel)
{
var discipline_expire = res.discipline_expire(disc_key, (S("res_247organisation")==1?2:0));
if (date_from < discipline_expire.addFloatHours(0)) // addFloatHours rond af naar voorgaande kwartier
var discipline_expire = res.discipline_expire(disc_key, (S("res_247organisation")==1?2:0), local_tz);
if (server_date_from < discipline_expire.addFloatHours(0)) // addFloatHours rond af naar voorgaande kwartier
{
if (urole == "fe") // nieuwe is nooit canChangeFEExtended
{
@@ -392,10 +407,10 @@ if (resdateChanged)
mindate.setDate(mindate.getDate() - theMinLimiet - 1);
maxdate.setDate(maxdate.getDate() + theMaxLimiet + 1);
if (theMinLimiet >= 0 && date_from < mindate)
if (theMinLimiet >= 0 && server_date_from < mindate)
abort_with_warning(L("lcl_res_error_date").format(theMinLimiet));
if (theMaxLimiet > 0 && date_to > maxdate && met_eindtijd)
if (theMaxLimiet > 0 && server_date_to > maxdate && met_eindtijd)
abort_with_warning(L("lcl_res_error_date").format(theMaxLimiet));
// Van reserveringen met children mag je de tijden niet zo krap
@@ -413,7 +428,7 @@ if (resdateChanged)
{
var child_van = new Date(oRs("res_rsv_ruimte_van").Value);
var child_tot = new Date(oRs("res_rsv_ruimte_tot").Value);
if (date_from > child_van || date_to < child_tot)
if (server_date_from > child_van || server_date_to < child_tot)
{
abort_with_warning(L("lcl_res_children_outsidetime").format(toDateTimeString(child_van), toDateTimeString(child_tot)));
}
@@ -507,10 +522,10 @@ if (master_act_key > 0) // we zouden kunnen controleren of master_key wijst naar
if (!rsv_ruimte_externnr || (S("msgraph_sync_level") & 6)) // Begin- en enddatum van reserveringen die extern (via Exchange) zijn gemaakt niet aanpassen, tenzij ReadWrite koppeling
{
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", frm: "date_from", track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")) });
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")) });
fields.push({ dbs: "res_rsv_ruimte_omschrijving", typ: "varchar", frm: "descript", track: L("lcl_descr") });
fields.push({ dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 });
fields.push({ dbs: "res_rsv_ruimte_van", typ: "datetime", val: server_date_from, track: (restype=="CV"? L("lcl_res_starttime_CV") : L("lcl_res_starttime")) });
fields.push({ dbs: "res_rsv_ruimte_tot", typ: "datetime", val: server_date_to, track: (restype=="CV"? L("lcl_res_endtime_CV") : L("lcl_res_endtime")) });
fields.push({ dbs: "res_rsv_ruimte_omschrijving", typ: "varchar", frm: "descript", track: L("lcl_descr") });
fields.push({ dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 });
}
if (opstel_key < 0) // Voorkomen dat beide gezet raken
@@ -586,9 +601,9 @@ if (setNoshowEnddate)
{
var nu = new Date();
nu.setSeconds(0);
if (nu < date_to) date_to = nu;
if (date_from > date_to) date_to = date_from;
fields[4].val = date_to;
if (nu < server_date_to) server_date_to = nu;
if (server_date_from > server_date_to) server_date_to = server_date_from;
fields[4].val = server_date_to;
}
var pResult = {};
@@ -729,10 +744,10 @@ if (isNew) // Nieuw, dan moeten we ook nog een res_reservering record aanmaken
+ ", res_rsv_deel_tot"
+ ", res_rsv_deel_aantal)"
+ " VALUES(" + rsv_ruimte_key
+ "," + res_deel_key
+ "," + date_from.toSQL(true) // Vooralsnog geen eigen tijdstippen
+ "," + date_to.toSQL(true)
+ ", 1);"
+ " ," + res_deel_key
+ " ," + server_date_from.toSQL(true, true) // Vooralsnog geen eigen tijdstippen
+ " ," + server_date_to.toSQL(true, true)
+ " , 1);"
+ " res.set_delen_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden?
}
@@ -768,11 +783,11 @@ else // update
if (restype == "R" && urole == "fe" && (act_key != act_key_old || opstel_key != opstel_key_old))
{
var discipline_expire = res.discipline_expire(disc_key, (S("res_247organisation")==1?2:0));
if (date_from < discipline_expire.addFloatHours(0)) // addFloatHours rond af naar voorgaande kwartier
if (server_date_from < discipline_expire.addFloatHours(0)) // addFloatHours rond af naar voorgaande kwartier
abort_with_warning(L("lcl_res_lastmin")); // te laat
}
// Bij wijzigen tijdstip ruimte (naar voren) schuiven voorzieningen mogelijk mee.
if (date_from < this_res.earliest_expire_change && this_res.canChange) // canChangeFEExtended kon toch niet bewerken
if (server_date_from < this_res.earliest_expire_change && this_res.canChange) // canChangeFEExtended kon toch niet bewerken
{
if (this_res.canChangeFEOnly)
abort_with_warning(L("lcl_res_lastmin")); // te laat

View File

@@ -186,6 +186,7 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
oRs.Close();
rrr.restype = restype;
var local_tz = S("fac_server_timezone");
if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
{ // Get the existing res_rsv_ruimte information
@@ -203,6 +204,8 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
rrr.alg_locatie_key = oRs("alg_locatie_key").Value;
rrr.res_ruimte_extern = rrr.res_ruimte_extern || oRs("res_ruimte_extern_id").Value != null;
oRs.close();
local_tz = res.getTimezoneByRuimte(rrr.res_ruimte_key, "RES");
}
else if (restype == "O") // zal rrr.mld_opdr_key gevuld zijn
{
@@ -230,6 +233,8 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
rrr.alg_ruimte_key = oRs("alg_ruimte_key").value;
oRs.Close();
local_tz = res.getTimezoneByRuimte(rrr.alg_ruimte_key, "ALG");
sql = "SELECT COUNT(DISTINCT ra.res_discipline_key) cat"
+ " FROM res_arrangement_artikel aa, res_artikel ra"
+ " WHERE aa.res_artikel_key = ra.res_artikel_key";
@@ -237,6 +242,11 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
rrr.catering_mogelijk = oRs("cat").Value > 0;
oRs.Close();
}
if (local_tz != S("fac_server_timezone")) {
rrr.rsv_ruimte_van = convertToLocalTime(rrr.rsv_ruimte_van, local_tz);
rrr.rsv_ruimte_tot = convertToLocalTime(rrr.rsv_ruimte_tot, local_tz);
}
}
%>
<script type="text/javascript">
@@ -491,16 +501,21 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
res_ruimte_data = res.res_ruimte_info(rrr.res_ruimte_key);
}
var params = {};
if (local_tz != S("fac_server_timezone") || local_tz != Session("time_zone")) {
params.hint_tz = true; // Hint-tekst tbv de tijdszone
}
__DoLog(rrr.rsv_ruimte_van);
if (rrr.rsv_ruimte_tot.midnight().getTime() == rrr.rsv_ruimte_van.midnight().getTime())
{
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van));
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot) : "");
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van) + v_tot);
ROFIELDTR("fldDateTime", L("lcl_date"), toDateString(rrr.rsv_ruimte_van, undefined, undefined, true), params);
var v_tot = (rrr.met_eindtijd ? " "+ L("lcl_tot") + " " + toTimeString(rrr.rsv_ruimte_tot, undefined, true) : "");
ROFIELDTR("fldDateTime", L("lcl_time"), toTimeString(rrr.rsv_ruimte_van, undefined, true) + v_tot, params);
}
else // meerdaags
{
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van));
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot));
ROFIELDTR("fldDateTime", L("lcl_date"), toDateTimeString(rrr.rsv_ruimte_van, undefined, undefined, undefined, true), params);
ROFIELDTR("fldDateTime", L("lcl_res_endtime"), toDateTimeString(rrr.rsv_ruimte_tot, undefined, undefined, undefined, true), params);
}
// if this_res.canReadNoShow??
@@ -530,8 +545,7 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
startlevel: 2, /*locatie*/
eindlevel: 2, /*locatie*/
moreinfo: user.has("WEB_ALGMAN"),
readonly: true,
no_table: true
readonly: true
});
var date_from = rrr.rsv_ruimte_van;
var vervaldatum = res_ruimte_data.vervaldatum;
@@ -556,8 +570,7 @@ FCLTHeader.Requires({plugins: ["jQuery"]})
startlevel: 2, /*locatie*/
eindlevel: 5, /*ruimte*/
moreinfo: user.has("WEB_ALGMAN"),
readonly: true,
no_table: true
readonly: true
});
}
ROFIELDTR("fldresdesc", L("lcl_descr"), rrr.descript, { suppressEmpty: true });

View File

@@ -1543,7 +1543,7 @@ function toDateString(jsDate, noDay, pretty, isLocalDate)
return resstr;
}
function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight)
function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight, isLocalDate)
{
if (jsDate===null)
return "";
@@ -1554,7 +1554,10 @@ function toDateTimeString(jsDate, bWithSeconds, noDay, prettyday, noMidnight)
if (typeof jsDate == "date") // een oRs("datum").value
jsDate = new Date(jsDate);
jsDate = convertToLocalTime(jsDate);
if (!isLocalDate) {
jsDate = convertToLocalTime(jsDate);
}
if (noMidnight && jsDate.getTime() == jsDate.midnight().getTime())
return toDateString(jsDate, noDay, prettyday, true)
else

View File

@@ -1795,7 +1795,7 @@ td.label div:not(.res_remark, .resartflexedit, .time-holder),
div#insLSF table > tbody tr div {
display: inline-block;
}
td.hashint span.hint::after {
td.hashint span:is(.hint, .hint_tz)::after {
content: attr(data-title);
position: absolute;
opacity: 0;
@@ -1813,7 +1813,7 @@ td.hashint span.hint::after {
background-color: #FFFFFF;
transition: opacity .2s ease-in-out; /* .2s fadeOut bij het verbergen */
}
td.hashint span.hint:hover::after {
td.hashint span:is(.hint, .hint_tz):hover::after {
opacity: 1;
transition: opacity 0s linear; /* Geen fadeIn bij het tonen */
}

View File

@@ -805,7 +805,7 @@ function ROFIELD_HTML(pclass, plabel, pvalue, params)
if (plabel || params.labelbutton) {
resultstr +=
"<td class='label" + (params.labelhint ? " hashint" : "") + "'>"
"<td class='label" + (params.hint_tz ? " hashint" : "") + "'>"
+ " <label" + (params && params.id? " for='" + params.id + "'" : "") + ">"
+ (plabel ? plabel : "")
+ " </label>"
@@ -816,10 +816,10 @@ function ROFIELD_HTML(pclass, plabel, pvalue, params)
+ " </span>"
+ " </span>"
: "")
+ (params.labelhint
+ (params.hint_tz
? " <span class='labelextra'>"
+ " <span class='hint' data-title='" + safe.htmlattr(params.labelhint) + "'>"
+ I("fa-map-marker")
+ " <span class='hint_tz' data-title='" + safe.htmlattr(L("lcl_timezone_is_local")) + "'>"
+ I("fa-earth-americas")
+ " </span>"
+ " </span>"
: "")