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:
@@ -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;
|
||||
},
|
||||
|
||||
@@ -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)
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
@@ -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>"
|
||||
: "")
|
||||
|
||||
Reference in New Issue
Block a user