diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 0c0123d1f3..4481ed2480 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -65,6 +65,8 @@ habitrpg.controller('SettingsCtrl', User.set({'preferences.language': $scope.language.code}); } + $scope.availableFormats = ['MM/dd/yyyy','dd/MM/yyyy', 'yyyy/MM/dd']; + $scope.reroll = function(){ User.user.ops.reroll({}); $rootScope.$state.go('tasks'); diff --git a/src/models/user.js b/src/models/user.js index 3dbb7f0f29..a9527cd512 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -278,6 +278,7 @@ var UserSchema = new Schema({ automaticAllocation: Boolean, allocationMode: {type:String, enum: ['flat','classbased','taskbased'], 'default': 'flat'}, costume: Boolean, + dateFormat: {type: String, enum:['MM/dd/yyyy', 'dd/MM/yyyy', 'yyyy/MM/dd'], 'default': 'MM/dd/yyyy'}, sleep: {type: Boolean, 'default': false}, stickyHeader: {type: Boolean, 'default': true}, disableClasses: {type: Boolean, 'default': false}, diff --git a/views/options/settings.jade b/views/options/settings.jade index 57708bf362..e8e50b2405 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -36,6 +36,10 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') br strong !=env.t('helpWithTranslation') + + .form-horizontal + h5=env.t('dateFormat') + select.form-control(ng-model='user.preferences.dateFormat', ng-options='DF for DF in availableFormats', ng-change='set({"preferences.dateFormat": user.preferences.dateFormat})') .checkbox label input(type='checkbox', ng-click='hideHeader() ', ng-checked='user.preferences.hideHeader!==true') diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index e93f304b7d..34ff439004 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -14,7 +14,7 @@ mixin chatMessages(inbox) // this invisible username label is here to push the message text far enough right that the visible label can be floated to this point without covering up any of the text markdown(ng-model='::message.text') | - - span.muted.time(from-now='::message.timestamp' tooltip="{{::message.timestamp | date:'short'}}") + span.muted.time(from-now='::message.timestamp' tooltip="{{::message.timestamp | date:user.preferences.dateFormat.concat(' HH:mm:ss')}}") unless inbox span a.label.label-default(ng-show='countExists(message.likes)', ng-class='{"label-success":message.likes[user._id]}', ng-click='likeChatMessage(group,message)') +{{countExists(message.likes)}} diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 0255ab8e6d..4fe8e2821a 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -15,12 +15,12 @@ script(type='text/ng-template', id='modals/member.html') |  =env.t('memberSince') |  - | {{::timestamp(profile.auth.timestamps.created)}} - + | {{::profile.auth.timestamps.created | date:user.preferences.dateFormat}} - li(ng-show='::profile.auth.timestamps.loggedin') |  =env.t('lastLoggedIn') |  - | {{::timestamp(profile.auth.timestamps.loggedin)}} - + | {{::profile.auth.timestamps.loggedin | date:user.preferences.dateFormat}} - h3=env.t('stats') .label.label-info {{:: {warrior:env.t("warrior"), wizard:env.t("mage"), rogue:env.t("rogue"), healer:env.t("healer")}[profile.stats.class] }} include ../profiles/stats diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index d72248528d..e3cf0b5cac 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -4,7 +4,8 @@ li(bindonce='list', id='task-{{::task.id}}', ng-repeat='task in obj[list.type+"s // Due Date span(ng-if='task.type=="todo" && task.date') - span(ng-class='{"label label-danger":(moment(task.date).isBefore(_today, "days") && !task.completed)}') {{moment(task.date).format('MM/DD')}} + span(ng-class='{"label label-danger":(moment(task.date).isBefore(_today, "days") && !task.completed)}') {{task.date | date:user.preferences.dateFormat.substr(0,5)}} + // Streak |   span(ng-show='task.streak') {{task.streak}}  @@ -190,7 +191,7 @@ li(bindonce='list', id='task-{{::task.id}}', ng-repeat='task in obj[list.type+"s // if Todos, the due date fieldset.option-group(ng-if='task.type=="todo" && !task.challenge.id') legend.option-title=env.t('dueDate') - input.option-content.datepicker(type='text', datepicker-popup='MM/dd/yyyy', ng-model='task.date', is-open='datepickerOpened', ng-click='datepickerOpened = true') + input.option-content.datepicker(type='text', datepicker-popup='{{user.preferences.dateFormat}}', ng-model='task.date', is-open='datepickerOpened', ng-click='datepickerOpened = true') // Tags fieldset.option-group(ng-if='!$state.includes("options.social.challenges")')