Files
Facilitor/APPL/Shared/timezoneselector.inc
Koen Reefman c202441bc3 FCLT#91497 Timezone-verschil automatisch aanpassen
svn path=/Website/branches/v2025.4/; revision=71119
2025-12-02 16:09:39 +00:00

59 lines
2.6 KiB
PHP

<% /*
$Revision$
$Id$
File: timezoneselector.inc
Description: Algemene interface functie om een timezone te kiezen
Deze moet je kunnen includen en aanroepen.
Als iemand vindt dat het een Suggest zou moeten zijn heeft die gelijk
parameters fieldName: veldnaam van het srtperslidKey veld. Dit veld wordt gesubmit.
params: object met meegegeven parameters.
*/ %>
<!-- #include file="../Shared/selector.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"] });
function FCLTtimezoneselector(fieldName, params)
{
if (typeof params == "undefined") params = {};
// Wat we opslaan is een IANA string. Door readonly hier te ondersteunen regelen we de presentatie centraal
var sql = "SELECT tzname,"
+ " '(UTC ' || RTRIM(TZ_OFFSET(tzname), CHR(0)) || ') ' || tzname AS label"
+ " FROM V$TIMEZONE_NAMES"
+ ((params.readonly && params.initVal != "") // als die NULL is, levert dit -terecht- ook niks op, gewenst sideeffect
? " WHERE tzname = " + safe.quoted_sql(params.initVal) // alleen de initVal tonen, dit is geen key
: " WHERE NOT tzname LIKE '%GMT%'" // filter aliassen
+ " AND ("
+ " tzname LIKE 'Europe/%' OR"
+ " tzname LIKE 'America/%' OR"
+ " tzname LIKE 'Asia/%' OR"
+ " tzname LIKE 'Australia/%' OR"
+ " tzname LIKE 'Africa/%' OR"
+ " tzname LIKE 'Pacific/%'" // En deze dan; [Antarctica, Atlantic, Arctic, Brazil, Canada, Chile, Indian, Mexico, US] ?
+ " )"
+ " GROUP BY tzname, TZ_OFFSET(tzname)"
+ " ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
+ " || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
+ " tzname"
);
// de FCLTselector doet het niet lekker met initVal, readonly en suppressEmpty
// daarom doen we dat hier zelf
if (params.readonly)
{
oRs = Oracle.Execute(sql);
if (!oRs.eof)
ROFIELDTR("fld", L("lcl_prs_person_timezone"), oRs("label").value, {suppressEmpty: true});
oRs.close();
}
else
FCLTselector(fieldName, sql,
{ label: params.label||L("lcl_timezone"),
initKey: params.initVal || "", // of de servertijdzone?
emptyKey: params.emptyKey || "",
emptyOption: params.emptyOption || ""
});
}
%>