diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -445,7 +445,7 @@ 'rsrc/js/core/behavior-device.js' => 'a205cf28', 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '6d49590e', 'rsrc/js/core/behavior-error-log.js' => '6882e80a', - 'rsrc/js/core/behavior-fancy-datepicker.js' => 'ea5cec5d', + 'rsrc/js/core/behavior-fancy-datepicker.js' => '3ee7ab37', 'rsrc/js/core/behavior-file-tree.js' => '88236f00', 'rsrc/js/core/behavior-form.js' => '5c54cbf3', 'rsrc/js/core/behavior-gesture.js' => '3ab51e2c', @@ -579,7 +579,7 @@ 'javelin-behavior-durable-column' => 'c72aa091', 'javelin-behavior-error-log' => '6882e80a', 'javelin-behavior-event-all-day' => '38dcf3c8', - 'javelin-behavior-fancy-datepicker' => 'ea5cec5d', + 'javelin-behavior-fancy-datepicker' => '3ee7ab37', 'javelin-behavior-global-drag-and-drop' => 'c8e57404', 'javelin-behavior-herald-rule-editor' => '7ebaeed3', 'javelin-behavior-high-security-warning' => 'a464fe03', @@ -1060,6 +1060,13 @@ 'javelin-stratcom', 'phabricator-tooltip', ), + '3ee7ab37' => array( + 'javelin-behavior', + 'javelin-util', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-vector', + ), '3f5d6dbf' => array( 'javelin-behavior', 'javelin-dom', @@ -1909,13 +1916,6 @@ 'javelin-dom', 'phabricator-draggable-list', ), - 'ea5cec5d' => array( - 'javelin-behavior', - 'javelin-util', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-vector', - ), 'ea681761' => array( 'javelin-behavior', 'javelin-aphlict', diff --git a/src/view/form/control/AphrontFormDateControl.php b/src/view/form/control/AphrontFormDateControl.php --- a/src/view/form/control/AphrontFormDateControl.php +++ b/src/view/form/control/AphrontFormDateControl.php @@ -259,8 +259,13 @@ ), $time_sel); + $preferences = $this->user->loadPreferences(); + $pref_week_start = PhabricatorUserPreferences::PREFERENCE_WEEK_START_DAY; + $week_start = $preferences->getPreference($pref_week_start, 0); + Javelin::initBehavior('fancy-datepicker', array( 'format' => $this->getDateFormat(), + 'week_start' => $week_start, )); $classes = array(); diff --git a/webroot/rsrc/js/core/behavior-fancy-datepicker.js b/webroot/rsrc/js/core/behavior-fancy-datepicker.js --- a/webroot/rsrc/js/core/behavior-fancy-datepicker.js +++ b/webroot/rsrc/js/core/behavior-fancy-datepicker.js @@ -46,6 +46,16 @@ return format; }; + var get_week_start = function() { + var week_start = config.week_start; + + if (week_start === null) { + week_start = 0; + } + + return week_start; + }; + var onopen = function(e) { e.kill(); @@ -277,9 +287,12 @@ // First, render the weekday names. var weekdays = 'SMTWTFS'; var weekday_names = []; - var ii; - for (ii = 0; ii < weekdays.length; ii++) { - weekday_names.push(cell(weekdays.charAt(ii), null, false, 'day-name')); + var week_start = parseInt(get_week_start(), 10); + var week_end = parseInt(weekdays.length,10) + week_start; + + for (var ii = week_start; ii < week_end; ii++) { + var index = ii%7; + weekday_names.push(cell(weekdays.charAt(index), null, false, 'day-name')); } weeks.push(JX.$N('tr', {}, weekday_names)); @@ -290,7 +303,7 @@ var start = new Date( valid_date.getYear() + 1900, valid_date.getMonth(), - 1).getDay(); + 1).getDay() - week_start; while (start--) { days.push(cell('', null, false, 'day-placeholder'));