diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 0c0123d1f3..70d8b148a8 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']; + $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..1c97b34a4e 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'], '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 f96b33cb57..9feeb87a11 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")')