From c4143c78057d13b07c75c3e4954a8a235ec52872 Mon Sep 17 00:00:00 2001 From: Verabird Date: Mon, 22 Dec 2014 15:19:53 -0500 Subject: [PATCH 1/3] added variable for date display and checking line ending issue --- views/shared/tasks/task.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 0466ff91e1..e8050f1f90 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -4,7 +4,7 @@ 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)}') {{moment(task.date).format(env.t('shortdate'))}} // Streak |   span(ng-show='task.streak') {{task.streak}}  From 42cb93c67313f90be3de84dc8f0201603d2abb67 Mon Sep 17 00:00:00 2001 From: Verabird Date: Mon, 22 Dec 2014 22:23:11 -0500 Subject: [PATCH 2/3] Add variables for medium-length date display --- views/shared/modals/members.jade | 4 ++-- views/shared/tasks/task.jade | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 595929c819..ba0f1449aa 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:env.t('mediumdate')}} - li(ng-show='::profile.auth.timestamps.loggedin') |  =env.t('lastLoggedIn') |  - | {{::timestamp(profile.auth.timestamps.loggedin)}} - + | {{::profile.auth.timestamps.loggedin | date:env.t('mediumdate')}} - 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 e8050f1f90..9a6a7e8561 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -184,7 +184,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=env.t('mediumdate'), ng-model='task.date', is-open='datepickerOpened', ng-click='datepickerOpened = true') // Tags fieldset.option-group(ng-if='!$state.includes("options.social.challenges")') From 03f12a371855138ae14bfe401e0058d39a4b00e4 Mon Sep 17 00:00:00 2001 From: Verabird Date: Wed, 24 Dec 2014 22:18:50 -0500 Subject: [PATCH 3/3] Make it possible to choose between MM/dd and dd/MM date format --- public/js/controllers/settingsCtrl.js | 7 +++++++ src/models/user.js | 1 + views/options/settings.jade | 6 ++++++ views/options/social/chat-message.jade | 2 +- views/shared/modals/members.jade | 4 ++-- views/shared/tasks/task.jade | 5 +++-- 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/public/js/controllers/settingsCtrl.js b/public/js/controllers/settingsCtrl.js index 0c0123d1f3..fb1efe6a12 100644 --- a/public/js/controllers/settingsCtrl.js +++ b/public/js/controllers/settingsCtrl.js @@ -65,6 +65,13 @@ habitrpg.controller('SettingsCtrl', User.set({'preferences.language': $scope.language.code}); } + $scope.availableFormats = ['MM/dd/yyyy','dd/MM/yyyy','yyyy/MM/dd']; + $scope.changeDateFormat = function(){ + + var dateFormat= User.user.preferences.dateFormat; + User.set({'preferences.dateFormat': dateFormat}); + } + $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 ef2727b4f6..85f731bd4c 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -36,6 +36,12 @@ 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='changeDateFormat()') + + .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 89ebc181e6..edfd3b476e 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -12,7 +12,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 ba0f1449aa..9f127f9f61 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') |  - | {{::profile.auth.timestamps.created | date:env.t('mediumdate')}} - + | {{::profile.auth.timestamps.created | date:user.preferences.dateFormat}} - li(ng-show='::profile.auth.timestamps.loggedin') |  =env.t('lastLoggedIn') |  - | {{::profile.auth.timestamps.loggedin | date:env.t('mediumdate')}} - + | {{::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 9a6a7e8561..6649113941 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(env.t('shortdate'))}} + span(ng-class='{"label label-danger":(moment(task.date).isBefore(_today, "days") && !task.completed)}') {{task.date | date:user.preferences.dateFormat.substr(0,5)}} + //{{::profile.auth.timestamps.created | date:user.preferences.dateFormat}} // Streak |   span(ng-show='task.streak') {{task.streak}}  @@ -184,7 +185,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=env.t('mediumdate'), 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")')