59 lines
2.6 KiB
PHP
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 || ""
|
|
});
|
|
}
|
|
%> |