(js) Fix computation of week number

Fixes #3973, 3976
This commit is contained in:
Francis Lachapelle 2017-01-05 12:00:55 -05:00
parent e7e1283fb3
commit 02a1ad48fc
2 changed files with 19 additions and 2 deletions

1
NEWS
View file

@ -34,6 +34,7 @@ Bug fixes
- [web] append ics file extension when importing events (#2308) - [web] append ics file extension when importing events (#2308)
- [web] handle URI in vCard photos (#2683) - [web] handle URI in vCard photos (#2683)
- [web] handle semicolon in values during LDIF import (#1760) - [web] handle semicolon in values during LDIF import (#1760)
- [web] fixed computation of week number (#3973, #3976)
- [eas] properly skip folders we don't want to synchronize (#3943) - [eas] properly skip folders we don't want to synchronize (#3943)
- [eas] fixed 30 mins freebusy offset with S Planner - [eas] fixed 30 mins freebusy offset with S Planner
- [eas] now correctly handles reminders on tasks (#3964) - [eas] now correctly handles reminders on tasks (#3964)

View file

@ -325,6 +325,22 @@ Date.prototype.beginOfDay = function() {
return beginOfDay; return beginOfDay;
}; };
/**
* See [SOGoUser dayOfWeekForDate:]
*/
Date.prototype.dayOfWeek = function(localeProvider) {
var offset, baseDayOfWeek, dayOfWeek;
offset = localeProvider.firstDayOfWeek;
baseDayOfWeek = this.getDay();
if (offset > baseDayOfWeek)
baseDayOfWeek += 7;
dayOfWeek = baseDayOfWeek - offset;
return dayOfWeek;
};
/** /**
* See [SOGoUser firstWeekOfYearForDate:] * See [SOGoUser firstWeekOfYearForDate:]
*/ */
@ -336,10 +352,10 @@ Date.prototype.firstWeekOfYearForDate = function(localeProvider) {
januaryFirst = new Date(this.getTime()); januaryFirst = new Date(this.getTime());
januaryFirst.setMonth(0); januaryFirst.setMonth(0);
januaryFirst.setDate(1); januaryFirst.setDate(1);
dayOfWeek = januaryFirst.getDay(); dayOfWeek = januaryFirst.dayOfWeek(localeProvider);
if (firstWeekRule == 'First4DayWeek') { if (firstWeekRule == 'First4DayWeek') {
if ((dayOfWeek + localeProvider.firstDayOfWeek) % 7 < 4) if (dayOfWeek < 4)
firstWeek = januaryFirst.beginOfWeek(localeProvider.firstDayOfWeek); firstWeek = januaryFirst.beginOfWeek(localeProvider.firstDayOfWeek);
else else
firstWeek = januaryFirst.addDays(7).beginOfWeek(localeProvider.firstDayOfWeek); firstWeek = januaryFirst.addDays(7).beginOfWeek(localeProvider.firstDayOfWeek);