mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 09:27:31 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
90
mailnews/base/util/templateUtils.js
Normal file
90
mailnews/base/util/templateUtils.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
var EXPORTED_SYMBOLS = ["PluralStringFormatter", "makeFriendlyDateAgo"];
|
||||
|
||||
var Cc = Components.classes;
|
||||
var Ci = Components.interfaces;
|
||||
var Cr = Components.results;
|
||||
var Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/PluralForm.jsm");
|
||||
Cu.import("resource:///modules/StringBundle.js");
|
||||
|
||||
function PluralStringFormatter(aBundleURI) {
|
||||
this._bundle = new StringBundle(aBundleURI);
|
||||
}
|
||||
|
||||
PluralStringFormatter.prototype = {
|
||||
get: function(aStringName, aReplacements, aPluralCount) {
|
||||
let str = this._bundle.get(aStringName);
|
||||
if (aPluralCount !== undefined)
|
||||
str = PluralForm.get(aPluralCount, str);
|
||||
if (aReplacements !== undefined) {
|
||||
for (let i = 0; i < aReplacements.length; i++)
|
||||
str = str.replace("#" + (i+1), aReplacements[i]);
|
||||
}
|
||||
return str;
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
var gTemplateUtilsStrings = new PluralStringFormatter(
|
||||
"chrome://messenger/locale/templateUtils.properties"
|
||||
);
|
||||
|
||||
/**
|
||||
* Helper function to generate a localized "friendly" representation of
|
||||
* time relative to the present. If the time input is "today", it returns
|
||||
* a string corresponding to just the time. If it's yesterday, it returns
|
||||
* "yesterday" (localized). If it's in the last week, it returns the day
|
||||
* of the week. If it's before that, it returns the date.
|
||||
*
|
||||
* @param time
|
||||
* the time (better be in the past!)
|
||||
* @return The string with a "human-friendly" representation of that time
|
||||
* relative to now.
|
||||
*/
|
||||
function makeFriendlyDateAgo(time)
|
||||
{
|
||||
let dts = Cc["@mozilla.org/intl/scriptabledateformat;1"]
|
||||
.getService(Ci.nsIScriptableDateFormat);
|
||||
|
||||
// Figure out when today begins
|
||||
let now = new Date();
|
||||
let today = new Date(now.getFullYear(), now.getMonth(),
|
||||
now.getDate());
|
||||
|
||||
// Get the end time to display
|
||||
let end = time;
|
||||
|
||||
// Figure out if the end time is from today, yesterday,
|
||||
// this week, etc.
|
||||
let dateTime;
|
||||
let kDayInMsecs = 24 * 60 * 60 * 1000;
|
||||
let k6DaysInMsecs = 6 * kDayInMsecs;
|
||||
if (end >= today) {
|
||||
// activity finished after today started, show the time
|
||||
dateTime = dts.FormatTime("", dts.timeFormatNoSeconds,
|
||||
end.getHours(), end.getMinutes(),0);
|
||||
} else if (today - end < kDayInMsecs) {
|
||||
// activity finished after yesterday started, show yesterday
|
||||
dateTime = gTemplateUtilsStrings.get("yesterday");
|
||||
} else if (today - end < k6DaysInMsecs) {
|
||||
// activity finished after last week started, show day of week
|
||||
dateTime = end.toLocaleFormat("%A");
|
||||
} else if (now.getFullYear() == end.getFullYear()) {
|
||||
// activity must have been from some time ago.. show month/day
|
||||
let month = end.toLocaleFormat("%B");
|
||||
// Remove leading 0 by converting the date string to a number
|
||||
let date = Number(end.toLocaleFormat("%d"));
|
||||
dateTime = gTemplateUtilsStrings.get("monthDate", [month, date]);
|
||||
} else {
|
||||
// not this year, so show full date format
|
||||
dateTime = dts.FormatDate("", dts.dateFormatShort,
|
||||
end.getFullYear(), end.getMonth() + 1,
|
||||
end.getDate());
|
||||
}
|
||||
return dateTime;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue