* Refactored rendering of date formats
* Increased jQuery version to 1.4
This commit is contained in:
parent
5f0f4bcf72
commit
e35356ddfa
3 changed files with 59 additions and 43 deletions
|
@ -738,25 +738,39 @@ function formatNumber(number, pattern) {
|
|||
/**
|
||||
*
|
||||
* @param {Date} date
|
||||
* @param {pattern} pattern
|
||||
* @param {format} format
|
||||
* @returns {String} The formatted date string
|
||||
*/
|
||||
function formatDate(date, pattern) {
|
||||
function formatDate(date, format) {
|
||||
if (!date) {
|
||||
return null;
|
||||
}
|
||||
pattern || (pattern = "short");
|
||||
var site = res.handlers.site;
|
||||
var format = site.metadata.get(pattern.toLowerCase() + "DateFormat");
|
||||
if (!format) {
|
||||
format = global[pattern.toUpperCase() + "DATEFORMAT"] || pattern;
|
||||
var pattern, site = res.handlers.site;
|
||||
var locale = site.getLocale();
|
||||
var type = java.text.DateFormat.FULL;
|
||||
switch (format) {
|
||||
case null:
|
||||
pattern = java.text.DateFormat.getDateTimeInstance(type, type, locale).toPattern();
|
||||
break;
|
||||
case "date":
|
||||
pattern = java.text.DateFormat.getDateInstance(type, locale).toPattern();
|
||||
break;
|
||||
case "time":
|
||||
pattern = java.text.DateFormat.getTimeInstance(type, locale).toPattern();
|
||||
break;
|
||||
case "short":
|
||||
case "long":
|
||||
pattern = site[format.toLowerCase() + "DateFormat"];
|
||||
break;
|
||||
default:
|
||||
pattern = format;
|
||||
}
|
||||
try {
|
||||
return date.format(format, site.getLocale(), site.getTimeZone());
|
||||
return date.format(pattern, site.getLocale(), site.getTimeZone());
|
||||
} catch (ex) {
|
||||
return "[Macro error: Invalid date format]";
|
||||
return "[Invalid date format]";
|
||||
}
|
||||
return;
|
||||
return String.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -823,11 +837,11 @@ function getLocales(language) {
|
|||
locale = locales[i];
|
||||
localeString = locale.toString();
|
||||
if (!localeString.contains("_")) {
|
||||
result.push({
|
||||
value: localeString,
|
||||
display: locale.getDisplayName(locale),
|
||||
"class": jala.i18n.getCatalog(jala.i18n.getLocale(localeString)) ? "translated" : ""
|
||||
});
|
||||
result.push({
|
||||
value: localeString,
|
||||
display: locale.getDisplayName(locale),
|
||||
"class": jala.i18n.getCatalog(jala.i18n.getLocale(localeString)) ? "translated" : ""
|
||||
});
|
||||
}
|
||||
}
|
||||
result.sort(new String.Sorter("display"));
|
||||
|
@ -841,7 +855,7 @@ function getLocales(language) {
|
|||
*/
|
||||
function getTimeZones(language) {
|
||||
var result = [], timeZone, offset;
|
||||
var locale = getLocale(language);
|
||||
var locale = getLocale(language);
|
||||
var zones = java.util.TimeZone.getAvailableIDs();
|
||||
var now = new Date;
|
||||
var previousZone;
|
||||
|
@ -881,29 +895,31 @@ function getTimeZones(language) {
|
|||
/**
|
||||
*
|
||||
* @param {String} type
|
||||
* @param {String} language
|
||||
* @param {java.util.Locale} locale
|
||||
* @returns {Array[]} An array containing the corresponding date formats
|
||||
*/
|
||||
function getDateFormats(type, language) {
|
||||
var patterns;
|
||||
if (type === "short") {
|
||||
patterns = [SHORTDATEFORMAT, "yyyy/MM/dd HH:mm",
|
||||
"yyyy.MM.dd, HH:mm", "d. MMMM, HH:mm", "MMMM d, HH:mm",
|
||||
"d. MMM, HH:mm", "MMM d, HH:mm", "EEE, d. MMM, HH:mm",
|
||||
"EEE MMM d, HH:mm", "EEE, HH:mm", "EE, HH:mm", "HH:mm"];
|
||||
} else if (type === "long") {
|
||||
patterns = [LONGDATEFORMAT, "EEEE, MMMM dd, yyyy, HH:mm",
|
||||
"EE, d. MMM. yyyy, HH:mm", "EE MMM dd, yyyy, HH:mm",
|
||||
"EE yyyy-MM-dd HH:mm", "yyyy-MM-dd HH:mm", "d. MMMM yyyy, HH:mm",
|
||||
"MMMM d, yyyy, HH:mm", "d. MMM yyyy, HH:mm", "MMM d, yyyy, HH:mm"];
|
||||
}
|
||||
var result = [], sdf;
|
||||
var locale = getLocale(language);
|
||||
var now = new Date;
|
||||
for each (var pattern in patterns) {
|
||||
sdf = new java.text.SimpleDateFormat(pattern, locale);
|
||||
result.push([encodeForm(pattern), sdf.format(now)]);
|
||||
function getDateFormats(type, locale, timeZone) {
|
||||
type || (type = "short");
|
||||
locale || (locale = java.util.Locale.getDefault());
|
||||
timeZone || (timeZone = java.util.TimeZone.getDefault());
|
||||
var types = [type];
|
||||
types.push(type === "long" ? "full" : "medium");
|
||||
var now = new Date, result = [], patterns = {};
|
||||
for each (let dateType in types) {
|
||||
let dateFormat = java.text.DateFormat[dateType.toUpperCase()];
|
||||
for each (let timeType in ["short", "medium", "long", "full"]) {
|
||||
let timeFormat = java.text.DateFormat[timeType.toUpperCase()];
|
||||
let sdf = java.text.DateFormat.getDateTimeInstance(dateFormat, timeFormat, locale);
|
||||
let pattern = sdf.toPattern();
|
||||
if (patterns[pattern]) {
|
||||
continue;
|
||||
}
|
||||
patterns[pattern] = true;
|
||||
sdf.setTimeZone(timeZone);
|
||||
result.push([encodeForm(pattern), sdf.format(now)]);
|
||||
}
|
||||
}
|
||||
result.push([encodeForm(Date.ISOFORMAT), now.format(Date.ISOFORMAT, locale, timeZone)]);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -213,8 +213,8 @@ Site.prototype.constructor = function(name, title) {
|
|||
pageSize: 3,
|
||||
locale: root.getLocale().toString(),
|
||||
timeZone: root.getTimeZone().getID(),
|
||||
longDateFormat: LONGDATEFORMAT,
|
||||
shortDateFormat: SHORTDATEFORMAT
|
||||
longDateFormat: root.longDateFormat,
|
||||
shortDateFormat: root.shortDateFormat
|
||||
});
|
||||
|
||||
return this;
|
||||
|
@ -318,7 +318,7 @@ Site.prototype.getFormOptions = function(name) {
|
|||
case "layout":
|
||||
return this.getLayouts();
|
||||
case "longDateFormat":
|
||||
return getDateFormats("long", this.getLocale());
|
||||
return getDateFormats("long", this.getLocale(), this.getTimeZone());
|
||||
case "mode":
|
||||
return Site.getModes();
|
||||
case "notificationMode":
|
||||
|
@ -328,7 +328,7 @@ Site.prototype.getFormOptions = function(name) {
|
|||
case "status":
|
||||
return Site.getStatus();
|
||||
case "shortDateFormat":
|
||||
return getDateFormats("short", this.getLocale());
|
||||
return getDateFormats("short", this.getLocale(), this.getTimeZone());
|
||||
case "timeZone":
|
||||
return getTimeZones(this.getLocale());
|
||||
case "callbackMode":
|
||||
|
@ -406,7 +406,7 @@ Site.prototype.main_js_action = function() {
|
|||
res.dependsOn(Root.VERSION);
|
||||
res.digest();
|
||||
this.renderSkin("$Site#include",
|
||||
{href:"http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"});
|
||||
{href:"http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"});
|
||||
this.renderSkin("$Site#include", {href: root.getStaticUrl("antville-1.2.js")});
|
||||
this.renderSkin("$Site#include", {href: this.href("user.js")});
|
||||
return;
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
</form>
|
||||
|
||||
<% #date %>
|
||||
<div class="dayHeader"><% story.created "EEEE, d. MMMM yyyy" %></div>
|
||||
<div class="dayHeader"><% story.created date %></div>
|
||||
|
||||
<% #content %>
|
||||
<div class="storyTitle">
|
||||
|
@ -57,7 +57,7 @@
|
|||
</div>
|
||||
<div class="storyDate">
|
||||
<% story.creator link suffix=, %>
|
||||
<% story.created HH:mm suffix="h" %>
|
||||
<% story.created time %>
|
||||
</div>
|
||||
<div><% story.text | story.format %></div>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue