Fix parsing of 'yesterday'/'today'/'tomorrow' in access date field
Regression from 5.0.78
This commit is contained in:
parent
9c380c362a
commit
0b9f463b9f
2 changed files with 28 additions and 12 deletions
|
@ -1920,6 +1920,9 @@
|
||||||
if (value != '') {
|
if (value != '') {
|
||||||
switch (fieldName) {
|
switch (fieldName) {
|
||||||
case 'accessDate':
|
case 'accessDate':
|
||||||
|
// Parse 'yesterday'/'today'/'tomorrow'
|
||||||
|
value = Zotero.Date.parseDescriptiveString(value);
|
||||||
|
|
||||||
// Allow "now" to use current time
|
// Allow "now" to use current time
|
||||||
if (value == 'now') {
|
if (value == 'now') {
|
||||||
value = Zotero.Date.dateToSQL(new Date(), true);
|
value = Zotero.Date.dateToSQL(new Date(), true);
|
||||||
|
@ -1964,18 +1967,8 @@
|
||||||
default:
|
default:
|
||||||
// TODO: generalize to all date rows/fields
|
// TODO: generalize to all date rows/fields
|
||||||
if (Zotero.ItemFields.isFieldOfBase(fieldName, 'date')) {
|
if (Zotero.ItemFields.isFieldOfBase(fieldName, 'date')) {
|
||||||
// Parse 'yesterday'/'today'/'tomorrow' and convert to dates,
|
// Parse 'yesterday'/'today'/'tomorrow'
|
||||||
// since it doesn't make sense for those to be actual metadata values
|
value = Zotero.Date.parseDescriptiveString(value);
|
||||||
var lc = value.toLowerCase();
|
|
||||||
if (lc == 'yesterday' || lc == Zotero.getString('date.yesterday')) {
|
|
||||||
value = Zotero.Date.dateToSQL(new Date(new Date().getTime() - 86400000)).substr(0, 10);
|
|
||||||
}
|
|
||||||
else if (lc == 'today' || lc == Zotero.getString('date.today')) {
|
|
||||||
value = Zotero.Date.dateToSQL(new Date()).substr(0, 10);
|
|
||||||
}
|
|
||||||
else if (lc == 'tomorrow' || lc == Zotero.getString('date.tomorrow')) {
|
|
||||||
value = Zotero.Date.dateToSQL(new Date(new Date().getTime() + 86400000)).substr(0, 10);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -708,6 +708,29 @@ Zotero.Date = new function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert 'yesterday'/'today'/'tomorrow' to SQL date, or else return original string
|
||||||
|
*
|
||||||
|
* @param {String} str
|
||||||
|
* @return {String}
|
||||||
|
*/
|
||||||
|
this.parseDescriptiveString = function (str) {
|
||||||
|
// Parse 'yesterday'/'today'/'tomorrow' and convert to dates,
|
||||||
|
// since it doesn't make sense for those to be actual metadata values
|
||||||
|
var lc = str.toLowerCase().trim();
|
||||||
|
if (lc == 'yesterday' || lc == Zotero.getString('date.yesterday')) {
|
||||||
|
str = Zotero.Date.dateToSQL(new Date(new Date().getTime() - 86400000)).substr(0, 10);
|
||||||
|
}
|
||||||
|
else if (lc == 'today' || lc == Zotero.getString('date.today')) {
|
||||||
|
str = Zotero.Date.dateToSQL(new Date()).substr(0, 10);
|
||||||
|
}
|
||||||
|
else if (lc == 'tomorrow' || lc == Zotero.getString('date.tomorrow')) {
|
||||||
|
str = Zotero.Date.dateToSQL(new Date(new Date().getTime() + 86400000)).substr(0, 10);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
function isSQLDate(str, allowZeroes) {
|
function isSQLDate(str, allowZeroes) {
|
||||||
if (allowZeroes) {
|
if (allowZeroes) {
|
||||||
return _sqldateWithZeroesRE.test(str);
|
return _sqldateWithZeroesRE.test(str);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue