From cfd2e4a40462dfbf0079cb7ef6a235d27c48967b Mon Sep 17 00:00:00 2001 From: vynmera <39674991+vynmera@users.noreply.github.com> Date: Sat, 16 Jun 2018 19:17:58 +0000 Subject: [PATCH 1/3] it shows the time in a cute format --- .../chatpal-search/client/template/result.js | 9 ++++++++- packages/rocketchat-api/server/v1/users.js | 1 + packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++ .../client/messageAttachment.js | 18 ++++++++++++++++-- .../client/page/snippetPage.js | 9 ++++++++- .../client/accountPreferences.html | 13 +++++++++++++ .../client/accountPreferences.js | 1 + .../client/tabs/uploadedFilesList.js | 9 ++++++++- .../client/tabs/userInfo.js | 9 ++++++++- .../rocketchat-ui-message/client/message.js | 18 ++++++++++++++++-- server/methods/saveUserPreferences.js | 1 + tests/data/user.js | 1 + 12 files changed, 83 insertions(+), 8 deletions(-) diff --git a/packages/chatpal-search/client/template/result.js b/packages/chatpal-search/client/template/result.js index b78a899560aa..e415f940a4a2 100644 --- a/packages/chatpal-search/client/template/result.js +++ b/packages/chatpal-search/client/template/result.js @@ -100,7 +100,14 @@ Template.ChatpalSearchSingleMessage.helpers({ }, time() { - return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(this.created).format('h:mm A'); + case 2: + return moment(this.created).format('H:mm'); + default: + return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat')); + } }, date() { return moment(this.created).format(RocketChat.settings.get('Message_DateFormat')); diff --git a/packages/rocketchat-api/server/v1/users.js b/packages/rocketchat-api/server/v1/users.js index 496833312557..b8f12a72b467 100644 --- a/packages/rocketchat-api/server/v1/users.js +++ b/packages/rocketchat-api/server/v1/users.js @@ -321,6 +321,7 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, { data: Match.ObjectIncluding({ newRoomNotification: Match.Maybe(String), newMessageNotification: Match.Maybe(String), + clockMode: Match.Maybe(Number), useEmojis: Match.Maybe(Boolean), convertAsciiEmoji: Match.Maybe(Boolean), saveMobileBandwidth: Match.Maybe(Boolean), diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 8b65d06cd259..1a1c2bb444bf 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1,7 +1,9 @@ { "#channel": "#channel", "0_Errors_Only": "0 - Errors Only", + "12_Hour": "12-hour clock", "1_Errors_and_Information": "1 - Errors and Information", + "24_Hour": "24-hour clock", "2_Erros_Information_and_Debug": "2 - Errors, Information and Debug", "403": "Forbidden", "500": "Internal Server Error", diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js index 37acc16c00ba..55e524200ddf 100644 --- a/packages/rocketchat-message-attachments/client/messageAttachment.js +++ b/packages/rocketchat-message-attachments/client/messageAttachment.js @@ -50,9 +50,23 @@ Template.messageAttachment.helpers({ const messageDate = new Date(this.ts); const today = new Date(); if (messageDate.toDateString() === today.toDateString()) { - return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(this.ts).format('h:mm A'); + case 2: + return moment(this.ts).format('H:mm'); + default: + return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); + } } else { - return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(this.ts).format('MMMM D, Y h:mm A'); + case 2: + return moment(this.ts).format('MMMM D, Y H:mm'); + default: + return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat')); + } } }, injectIndex(data, previousIndex, index) { diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.js b/packages/rocketchat-message-snippet/client/page/snippetPage.js index 0700dcf9d611..da729e01467f 100644 --- a/packages/rocketchat-message-snippet/client/page/snippetPage.js +++ b/packages/rocketchat-message-snippet/client/page/snippetPage.js @@ -23,7 +23,14 @@ Template.snippetPage.helpers({ time() { const snippet = SnippetedMessages.findOne({ _id: FlowRouter.getParam('snippetId') }); if (snippet !== undefined) { - return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(snippet.ts).format('h:mm A'); + case 2: + return moment(snippet.ts).format('H:mm'); + default: + return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat')); + } } } }); diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html index 54f5fc161b85..8ed576631b88 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.html +++ b/packages/rocketchat-ui-account/client/accountPreferences.html @@ -144,6 +144,19 @@

{{_ "Messages"}}

+
+ +
+
+ + {{> icon block="rc-select__arrow" icon="arrow-down" }} +
+
+
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 16bf02b97894..1007d006fec3 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -142,6 +142,7 @@ Template.accountPreferences.onCreated(function() { data.newRoomNotification = $('select[name=newRoomNotification]').val(); data.newMessageNotification = $('select[name=newMessageNotification]').val(); + data.clockMode = parseInt($('#clockMode').find('select').val()); data.useEmojis = JSON.parse($('input[name=useEmojis]:checked').val()); data.convertAsciiEmoji = JSON.parse($('input[name=convertAsciiEmoji]:checked').val()); data.saveMobileBandwidth = JSON.parse($('input[name=saveMobileBandwidth]:checked').val()); diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js index 75aededa69b7..a7ffa451e21d 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js +++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js @@ -63,7 +63,14 @@ Template.uploadedFilesList.helpers({ } }, format(timestamp) { - return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL'); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(timestamp).format('MMMM D, Y h:mm A'); + case 2: + return moment(timestamp).format('MMMM D, Y H:mm'); + default: + return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL'); + } }, files() { return roomFiles.find({ rid: this.rid }, { sort: { uploadedAt: -1 } }); diff --git a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js index 11e3adf68950..2e09500b88ae 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js +++ b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js @@ -111,7 +111,14 @@ Template.userInfo.helpers({ userTime() { const user = Template.instance().user.get(); if (user && user.utcOffset != null) { - return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return Template.instance().now.get().utcOffset(user.utcOffset).format('h:mm A'); + case 2: + return Template.instance().now.get().utcOffset(user.utcOffset).format('H:mm'); + default: + return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat')); + } } }, diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js index 6cc3c7c855e7..57f22b429da2 100644 --- a/packages/rocketchat-ui-message/client/message.js +++ b/packages/rocketchat-ui-message/client/message.js @@ -98,7 +98,14 @@ Template.message.helpers({ } }, time() { - return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(this.ts).format('h:mm A'); + case 2: + return moment(this.ts).format('H:mm'); + default: + return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); + } }, date() { return moment(this.ts).format(RocketChat.settings.get('Message_DateFormat')); @@ -139,7 +146,14 @@ Template.message.helpers({ }, editTime() { if (Template.instance().wasEdited) { - return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`); + switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { + case 1: + return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } h:mm A`); + case 2: + return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } H:mm`); + default: + return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`); + } } }, editedBy() { diff --git a/server/methods/saveUserPreferences.js b/server/methods/saveUserPreferences.js index f0516a11cf9f..e5d86868f680 100644 --- a/server/methods/saveUserPreferences.js +++ b/server/methods/saveUserPreferences.js @@ -4,6 +4,7 @@ Meteor.methods({ language: Match.Optional(String), newRoomNotification: Match.Optional(String), newMessageNotification: Match.Optional(String), + clockMode: Match.Optional(Number), useEmojis: Match.Optional(Boolean), convertAsciiEmoji: Match.Optional(Boolean), saveMobileBandwidth: Match.Optional(Boolean), diff --git a/tests/data/user.js b/tests/data/user.js index 5fb7c0983c99..12c10bf832c6 100644 --- a/tests/data/user.js +++ b/tests/data/user.js @@ -10,6 +10,7 @@ export const preferences = { newRoomNotification: 'door', newMessageNotification: 'chime', muteFocusedConversations: true, + clockMode: 0, useEmojis: true, convertAsciiEmoji: true, saveMobileBandwidth: true, From 727367247bf5a9648ad155e9fb0ee47964ec07af Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 18 Sep 2018 14:37:29 -0300 Subject: [PATCH 2/3] moment abstraction --- .../chatpal-search/client/template/result.js | 13 +++------- .../rocketchat-lib/client/lib/formatDate.js | 24 +++++++++++++++++++ packages/rocketchat-lib/client/lib/index.js | 2 ++ .../client/messageAttachment.js | 21 +++------------- .../client/page/snippetPage.js | 12 ++-------- .../client/tabs/uploadedFilesList.js | 13 +++------- .../client/tabs/userInfo.js | 10 ++------ .../rocketchat-ui-message/client/message.js | 21 ++++------------ 8 files changed, 43 insertions(+), 73 deletions(-) create mode 100644 packages/rocketchat-lib/client/lib/formatDate.js diff --git a/packages/chatpal-search/client/template/result.js b/packages/chatpal-search/client/template/result.js index 7951d612d9b1..b188e21b8a94 100644 --- a/packages/chatpal-search/client/template/result.js +++ b/packages/chatpal-search/client/template/result.js @@ -1,4 +1,4 @@ -import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; Template.ChatpalSearchResultTemplate.onCreated(function() { this.badRequest = new ReactiveVar(false); @@ -100,17 +100,10 @@ Template.ChatpalSearchSingleMessage.helpers({ }, time() { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(this.created).format('h:mm A'); - case 2: - return moment(this.created).format('H:mm'); - default: - return moment(this.created).format(RocketChat.settings.get('Message_TimeFormat')); - } + return DateFormat.formatTime(this.created); }, date() { - return moment(this.created).format(RocketChat.settings.get('Message_DateFormat')); + return DateFormat.formatDate(this.created); }, }); diff --git a/packages/rocketchat-lib/client/lib/formatDate.js b/packages/rocketchat-lib/client/lib/formatDate.js new file mode 100644 index 000000000000..94f6afa4a62c --- /dev/null +++ b/packages/rocketchat-lib/client/lib/formatDate.js @@ -0,0 +1,24 @@ +import moment from 'moment'; +export const formatTime = (time) => { + switch (RocketChat.getUserPreference(Meteor.userId(), 'clockMode', false)) { + case 1: + return moment(time).format('h:mm A'); + case 2: + return moment(time).format('H:mm'); + default: + return moment(time).format(RocketChat.settings.get('Message_TimeFormat')); + } +}; + +export const formatDateAndTime = (time) => { + switch (RocketChat.getUserPreference(Meteor.userId(), 'clockMode', false)) { + case 1: + return moment(time).format('MMMM D, Y h:mm A'); + case 2: + return moment(time).format('MMMM D, Y H:mm'); + default: + return moment(time).format(RocketChat.settings.get('Message_TimeAndDateFormat')); + } +}; + +export const formatDate = (time) => moment(time).format(RocketChat.settings.get('Message_DateFormat')); diff --git a/packages/rocketchat-lib/client/lib/index.js b/packages/rocketchat-lib/client/lib/index.js index 1a77c5a97164..4684347c02a1 100644 --- a/packages/rocketchat-lib/client/lib/index.js +++ b/packages/rocketchat-lib/client/lib/index.js @@ -12,6 +12,7 @@ import { RoomSettingsEnum, RoomTypeConfig, RoomTypeRouteConfig, UiTextContext } import { hide, leave, erase } from './ChannelActions'; import { call } from './callMethod'; import { LoginPresence } from './LoginPresence'; +import * as DateFormat from './formatDate'; export { call, @@ -25,4 +26,5 @@ export { UiTextContext, RocketChatAnnouncement, LoginPresence, + DateFormat, }; diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.js b/packages/rocketchat-message-attachments/client/messageAttachment.js index c3b87bcb3bd9..73438fdd78e2 100644 --- a/packages/rocketchat-message-attachments/client/messageAttachment.js +++ b/packages/rocketchat-message-attachments/client/messageAttachment.js @@ -1,4 +1,4 @@ -import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; import { fixCordova } from 'meteor/rocketchat:lazy-load'; const colors = { good: '#35AC19', @@ -58,24 +58,9 @@ Template.messageAttachment.helpers({ const messageDate = new Date(this.ts); const today = new Date(); if (messageDate.toDateString() === today.toDateString()) { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(this.ts).format('h:mm A'); - case 2: - return moment(this.ts).format('H:mm'); - default: - return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); - } - } else { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(this.ts).format('MMMM D, Y h:mm A'); - case 2: - return moment(this.ts).format('MMMM D, Y H:mm'); - default: - return moment(this.ts).format(RocketChat.settings.get('Message_TimeAndDateFormat')); - } + return DateFormat.formatTime(this.ts); } + return DateFormat.formatDateAndTime(this.ts); }, injectIndex(data, previousIndex, index) { data.index = `${ previousIndex }.attachments.${ index }`; diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.js b/packages/rocketchat-message-snippet/client/page/snippetPage.js index dbd50faf51d4..a5242ccb3f06 100644 --- a/packages/rocketchat-message-snippet/client/page/snippetPage.js +++ b/packages/rocketchat-message-snippet/client/page/snippetPage.js @@ -1,5 +1,5 @@ /* global SnippetedMessages */ -import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; Template.snippetPage.helpers({ snippet() { @@ -23,14 +23,7 @@ Template.snippetPage.helpers({ time() { const snippet = SnippetedMessages.findOne({ _id: FlowRouter.getParam('snippetId') }); if (snippet !== undefined) { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(snippet.ts).format('h:mm A'); - case 2: - return moment(snippet.ts).format('H:mm'); - default: - return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat')); - } + return DateFormat.formatTime(snippet.ts); } }, }); @@ -41,4 +34,3 @@ Template.snippetPage.onCreated(function() { Meteor.subscribe('snippetedMessage', snippetId); }); }); - diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js index 41600e04af3e..a32fc21b7d28 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js +++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js @@ -1,5 +1,5 @@ import { fixCordova } from 'meteor/rocketchat:lazy-load'; -import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; import _ from 'underscore'; const roomFiles = new Mongo.Collection('room_files'); @@ -43,14 +43,7 @@ Template.uploadedFilesList.helpers({ } }, format(timestamp) { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(timestamp).format('MMMM D, Y h:mm A'); - case 2: - return moment(timestamp).format('MMMM D, Y H:mm'); - default: - return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL'); - } + return DateFormat.formatDateAndTime(timestamp); }, fileTypeIcon() { const [, extension] = this.name.match(/.*?\.(.*)$/); @@ -96,7 +89,7 @@ Template.uploadedFilesList.helpers({ }, formatTimestamp(timestamp) { - return moment(timestamp).format(RocketChat.settings.get('Message_TimeAndDateFormat') || 'LLL'); + return DateFormat.formatDateAndTime(timestamp); }, hasMore() { diff --git a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js index 3d24fae9a06b..cfd4295d951e 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js +++ b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js @@ -2,6 +2,7 @@ import _ from 'underscore'; import s from 'underscore.string'; import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; import { getActions } from './userActions'; @@ -113,14 +114,7 @@ Template.userInfo.helpers({ userTime() { const user = Template.instance().user.get(); if (user && user.utcOffset != null) { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return Template.instance().now.get().utcOffset(user.utcOffset).format('h:mm A'); - case 2: - return Template.instance().now.get().utcOffset(user.utcOffset).format('H:mm'); - default: - return Template.instance().now.get().utcOffset(user.utcOffset).format(RocketChat.settings.get('Message_TimeFormat')); - } + return DateFormat.formatTime(Template.instance().now.get().utcOffset(user.utcOffset)); } }, diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js index 80ebb2b134a2..d2b1201989ef 100644 --- a/packages/rocketchat-ui-message/client/message.js +++ b/packages/rocketchat-ui-message/client/message.js @@ -1,6 +1,7 @@ /* globals renderEmoji renderMessageBody */ import _ from 'underscore'; import moment from 'moment'; +import { DateFormat } from 'meteor/rocketchat:lib'; Template.message.helpers({ encodeURI(text) { @@ -98,17 +99,10 @@ Template.message.helpers({ } }, time() { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(this.ts).format('h:mm A'); - case 2: - return moment(this.ts).format('H:mm'); - default: - return moment(this.ts).format(RocketChat.settings.get('Message_TimeFormat')); - } + return DateFormat.formatTime(this.ts); }, date() { - return moment(this.ts).format(RocketChat.settings.get('Message_DateFormat')); + return DateFormat.formatDate(this.ts); }, isTemp() { if (this.temp === true) { @@ -146,14 +140,7 @@ Template.message.helpers({ }, editTime() { if (Template.instance().wasEdited) { - switch (RocketChat.getUserPreference(Meteor.user(), 'clockMode', false)) { - case 1: - return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } h:mm A`); - case 2: - return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } H:mm`); - default: - return moment(this.editedAt).format(`${ RocketChat.settings.get('Message_DateFormat') } ${ RocketChat.settings.get('Message_TimeFormat') }`); - } + return DateFormat.formatDateAndTime(this.editedAt); } }, editedBy() { From 0586b494cfddff1f6da7dbda713e09e3f0caf7fa Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 19 Sep 2018 11:08:35 -0300 Subject: [PATCH 3/3] removed default value --- packages/rocketchat-lib/server/models/Users.js | 4 ++++ packages/rocketchat-ui-account/client/accountPreferences.js | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index 5d31e45087bd..aec91942c376 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -465,6 +465,10 @@ class ModelUsers extends RocketChat.models._Base { const update = { $set: settings, }; + if (![1, 2].includes(parseInt(settings.preferences.clockMode))) { + delete update.$set['settings.preferences.clockMode']; + update.$unset = { 'settings.preferences.clockMode': 1 }; + } return this.update(_id, update); } diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 98b0a13d86f0..c0c07c8c57ff 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -141,7 +141,7 @@ Template.accountPreferences.onCreated(function() { data.newRoomNotification = $('select[name=newRoomNotification]').val(); data.newMessageNotification = $('select[name=newMessageNotification]').val(); - data.clockMode = parseInt($('#clockMode').find('select').val()); + data.clockMode = parseInt($('select[name=clockMode]').val()); data.useEmojis = JSON.parse($('input[name=useEmojis]:checked').val()); data.convertAsciiEmoji = JSON.parse($('input[name=convertAsciiEmoji]:checked').val()); data.saveMobileBandwidth = JSON.parse($('input[name=saveMobileBandwidth]:checked').val());