Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15447516
D13262.id32054.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D13262.id32054.diff
View Options
diff --git a/src/applications/settings/panel/PhabricatorDateTimeSettingsPanel.php b/src/applications/settings/panel/PhabricatorDateTimeSettingsPanel.php
--- a/src/applications/settings/panel/PhabricatorDateTimeSettingsPanel.php
+++ b/src/applications/settings/panel/PhabricatorDateTimeSettingsPanel.php
@@ -19,6 +19,7 @@
$username = $user->getUsername();
$pref_time = PhabricatorUserPreferences::PREFERENCE_TIME_FORMAT;
+ $pref_date = PhabricatorUserPreferences::PREFERENCE_DATE_FORMAT;
$pref_week_start = PhabricatorUserPreferences::PREFERENCE_WEEK_START_DAY;
$preferences = $user->loadPreferences();
@@ -31,12 +32,16 @@
$errors[] = pht('The selected timezone is not a valid timezone.');
}
- $preferences->setPreference(
- $pref_time,
- $request->getStr($pref_time));
- $preferences->setPreference(
- $pref_week_start,
- $request->getStr($pref_week_start));
+ $preferences
+ ->setPreference(
+ $pref_time,
+ $request->getStr($pref_time))
+ ->setPreference(
+ $pref_date,
+ $request->getStr($pref_date))
+ ->setPreference(
+ $pref_week_start,
+ $request->getStr($pref_week_start));
if (!$errors) {
$preferences->save();
@@ -71,6 +76,17 @@
->setValue($preferences->getPreference($pref_time)))
->appendChild(
id(new AphrontFormSelectControl())
+ ->setLabel(pht('Date Format'))
+ ->setName($pref_date)
+ ->setOptions(array(
+ 'm/d/Y' => pht('US (2/28/2000)'),
+ 'd/m/Y' => pht('Little-Endian (28/2/2000)'),
+ ))
+ ->setCaption(
+ pht('Format used when rendering a date.'))
+ ->setValue($preferences->getPreference($pref_date)))
+ ->appendChild(
+ id(new AphrontFormSelectControl())
->setLabel(pht('Week Starts On'))
->setOptions($this->getWeekDays())
->setName($pref_week_start)
diff --git a/src/applications/settings/storage/PhabricatorUserPreferences.php b/src/applications/settings/storage/PhabricatorUserPreferences.php
--- a/src/applications/settings/storage/PhabricatorUserPreferences.php
+++ b/src/applications/settings/storage/PhabricatorUserPreferences.php
@@ -8,6 +8,7 @@
const PREFERENCE_MULTIEDIT = 'multiedit';
const PREFERENCE_TITLES = 'titles';
const PREFERENCE_MONOSPACED_TEXTAREAS = 'monospaced-textareas';
+ const PREFERENCE_DATE_FORMAT = 'date-format';
const PREFERENCE_TIME_FORMAT = 'time-format';
const PREFERENCE_WEEK_START_DAY = 'week-start-day';
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
@@ -13,6 +13,8 @@
private $isDisabled;
private $endDateID;
+ private $viewer;
+
public function setAllowNull($allow_null) {
$this->allowNull = $allow_null;
return $this;
@@ -127,7 +129,21 @@
}
private function getDateInputValue() {
- return $this->valueDate;
+ $date_format = $this->getDateFormat();
+ $timezone = $this->getTimezone();
+
+ $datetime = new DateTime("{$this->valueDate}", $timezone);
+ $date = $datetime->format($date_format);
+
+ return $date;
+ }
+
+ private function getDateFormat() {
+ $viewer = $this->getUser();
+ $preferences = $viewer->loadPreferences();
+ $pref_date_format = PhabricatorUserPreferences::PREFERENCE_DATE_FORMAT;
+
+ return $preferences->getPreference($pref_date_format, 'm/d/Y');
}
private function getTimeInputValue() {
@@ -242,7 +258,9 @@
),
$time_sel);
- Javelin::initBehavior('fancy-datepicker', array());
+ Javelin::initBehavior('fancy-datepicker', array(
+ 'format' => $this->getDateFormat(),
+ ));
$classes = array();
$classes[] = 'aphront-form-date-container';
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
@@ -7,7 +7,11 @@
* javelin-vector
*/
-JX.behavior('fancy-datepicker', function() {
+JX.behavior('fancy-datepicker', function(config, statics) {
+ if (statics.initialized) {
+ return;
+ }
+ statics.initialized = true;
var picker;
var root;
@@ -16,6 +20,21 @@
var value_m;
var value_d;
+ function getKeyMap() {
+ var format = getFormat();
+ return format.split('/');
+ }
+
+ function getFormat() {
+ var f = config.format;
+
+ if (f === null) {
+ f = 'm/d/Y';
+ }
+
+ return f;
+ }
+
var onopen = function(e) {
e.kill();
@@ -85,18 +104,60 @@
};
};
- var read_date = function() {
- var i = get_inputs();
- var date = i.d.value;
- var parts = date.split('/');
- value_y = +parts[2];
- value_m = +parts[0];
- value_d = +parts[1];
+ var read_date = function(){
+ var inputs = get_inputs();
+ var date = inputs.d.value;
+ var date_parts = date.split('/');
+ var map = getKeyMap();
+
+ for (var i=0; i < date_parts.length; i++) {
+ var key = map[i].toLowerCase();
+
+ switch (key) {
+ case 'y':
+ value_y = date_parts[i];
+ break;
+ case 'm':
+ value_m = date_parts[i];
+ break;
+ case 'd':
+ value_d = date_parts[i];
+ break;
+ }
+ }
};
var write_date = function() {
- var i = get_inputs();
- i.d.value = value_m + '/' + value_d + '/' + value_y;
+ var inputs = get_inputs();
+ var map = getKeyMap();
+ var arr_values = [];
+
+ for(var i=0; i < map.length; i++) {
+ switch (map[i].toLowerCase()) {
+ case 'y':
+ arr_values[i] = value_y;
+ break;
+ case 'm':
+ arr_values[i] = value_m;
+ break;
+ case 'd':
+ arr_values[i] = value_d;
+ break;
+ }
+ }
+
+ var text_value = '';
+
+ for(var j=0; j < arr_values.length; j++) {
+ var element = arr_values[j] ? arr_values[j] : '';
+ if (text_value.length === 0) {
+ text_value += element;
+ } else {
+ text_value = text_value + '/' + element;
+ }
+ }
+
+ inputs.d.value = text_value;
};
var render = function() {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Mar 29, 12:20 AM (3 d, 4 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7629826
Default Alt Text
D13262.id32054.diff (6 KB)
Attached To
Mode
D13262: Add date format preference and respect it in date selection controls
Attached
Detach File
Event Timeline
Log In to Comment