From 1fd5b9fafe58b32fe7f3783963aa29bb7483cb1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Mon, 17 Jul 2017 08:19:53 -0300 Subject: [PATCH 01/11] Setting user preferences so notifications volume. --- packages/rocketchat-i18n/i18n/es.i18n.json | 3 +- packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 1 + .../client/views/pushNotificationsFlexTab.js | 15 +++-- .../client/accountPreferences.html | 6 ++ .../client/accountPreferences.js | 9 +++ .../rocketchat-ui/client/lib/notification.js | 67 ++++++++++++------- server/methods/saveUserPreferences.js | 4 ++ 7 files changed, 75 insertions(+), 30 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/es.i18n.json b/packages/rocketchat-i18n/i18n/es.i18n.json index 915652d16149..522ab29c00ec 100644 --- a/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/packages/rocketchat-i18n/i18n/es.i18n.json @@ -872,6 +872,7 @@ "Nothing_found": "No se encontró nada", "Notification_Duration": "Duración de la notificación", "Notifications": "Notificaciones", + "Notifications_Sound_Volume": "Notifications sound volume", "Notify_all_in_this_room": "Notificar a todos en este canal", "Num_Agents": "# de Agentes", "Number_of_messages": "Número de mensajes", @@ -1362,4 +1363,4 @@ "Your_mail_was_sent_to_s": "Su correo electrónico fue enviado a %s", "Your_password_is_wrong": "Su contraseña es incorrecta!", "Your_push_was_sent_to_s_devices": "Su push fue enviado a los dispositivos %s" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index dd6d9b984607..4654ae41052d 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -817,6 +817,7 @@ "Nothing": "Nada", "Nothing_found": "Nada encontrado", "Notifications": "Notificações", + "Notifications_Sound_Volume": "Volume do som de notificações", "Notify_all_in_this_room": "Notificar todos nesta sala", "Num_Agents": "# Agentes", "Number_of_messages": "Número de mensagens", diff --git a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js index fe793bae3c70..d13fdf51e1cf 100644 --- a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js +++ b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js @@ -262,11 +262,16 @@ Template.pushNotificationsFlexTab.events({ $audio[0].play(); } } else { - audio = Meteor.user() && Meteor.user().settings && Meteor.user().settings.preferences && Meteor.user().settings.preferences.newMessageNotification || 'chime'; - if (audio && audio !== 'none') { - const $audio = $(`audio#${ audio }`); - if ($audio && $audio[0] && $audio[0].play) { - $audio[0].play(); + const user = Meteor.user() + if (user && user.settings && user.settings.preferences) { + audio = user.settings.preferences.newMessageNotification || 'chime'; + const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; + if (audio && audio !== 'none') { + const $audio = $(`audio#${ audio }`); + if ($audio && $audio[0] && $audio[0].play) { + $audio[0].volume = audioVolume/100; + $audio[0].play(); + } } } } diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html index 8d3bd2116dbc..9a0a62469d85 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.html +++ b/packages/rocketchat-ui-account/client/accountPreferences.html @@ -212,6 +212,12 @@

{{_ "Sound"}}

+
+ +
+ +
+
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index d86d2cef6ada..07da8a89dc5c 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -68,6 +68,10 @@ Template.accountPreferences.helpers({ }, showRoles() { return RocketChat.settings.get('UI_DisplayRoles'); + }, + notificationsSoundVolume() { + const user = Meteor.user(); + return user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100; } }); @@ -82,6 +86,7 @@ Template.accountPreferences.onCreated(function() { this.useEmojis = new ReactiveVar(user.settings.preferences.desktopNotificationDuration == null || user.settings.preferences.useEmojis); } let instance = this; + this.autorun(() => { if (instance.useEmojis && instance.useEmojis.get()) { Tracker.afterFlush(() => $('#convertAsciiEmoji').show()); @@ -89,9 +94,11 @@ Template.accountPreferences.onCreated(function() { Tracker.afterFlush(() => $('#convertAsciiEmoji').hide()); } }); + this.clearForm = function() { this.find('#language').value = localStorage.getItem('userLanguage'); }; + this.save = function() { instance = this; const data = {}; @@ -123,6 +130,8 @@ Template.accountPreferences.onCreated(function() { })); data.desktopNotificationDuration = $('input[name=desktopNotificationDuration]').val(); data.unreadAlert = $('#unreadAlert').find('input:checked').val(); + data.notificationsSoundVolume = parseInt($('input[name=notificationsSoundVolume]').val()); + Meteor.call('saveUserPreferences', data, function(error, results) { if (results) { toastr.success(t('Preferences_saved')); diff --git a/packages/rocketchat-ui/client/lib/notification.js b/packages/rocketchat-ui/client/lib/notification.js index 726544ab14fe..f2713d3d5037 100644 --- a/packages/rocketchat-ui/client/lib/notification.js +++ b/packages/rocketchat-ui/client/lib/notification.js @@ -79,15 +79,27 @@ const KonchatNotification = { newMessage(rid) { if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy')) { const user = Meteor.user(); - const newMessageNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newMessageNotification || 'chime'; - const sub = ChatSubscription.findOne({ rid }, { fields: { audioNotification: 1 } }); - if (sub && sub.audioNotification !== 'none') { - if (sub && sub.audioNotification) { - const [audio] = $(`audio#${ sub.audioNotification }`); - return audio && audio.play && audio.play(); - } else if (newMessageNotification !== 'none') { - const [audio] = $(`audio#${ newMessageNotification }`); - return audio && audio.play && audio.play(); + + if (user && user.settings && user.settings.preferences) { + const newMessageNotification = user.settings.preferences.newMessageNotification || 'chime'; + const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; + + const sub = ChatSubscription.findOne({ rid }, { fields: { audioNotification: 1 } }); + + if (sub && sub.audioNotification !== 'none') { + if (sub && sub.audioNotification) { + const [audio] = $(`audio#${ sub.audioNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); + } + } else if (newMessageNotification !== 'none') { + const [audio] = $(`audio#${ newMessageNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); + } + } } } } @@ -117,22 +129,29 @@ const KonchatNotification = { Tracker.autorun(function() { const user = Meteor.user(); - const newRoomNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newRoomNotification || 'door'; - if ((Session.get('newRoomSound') || []).length > 0) { - Tracker.nonreactive(function() { - if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy') && newRoomNotification !== 'none') { - const [audio] = $(`audio#${ newRoomNotification }`); - return audio && audio.play && audio.play(); + if (user && user.settings && user.settings.preferences) { + const newRoomNotification = user.settings.preferences.newRoomNotification || 'door'; + const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; + + if ((Session.get('newRoomSound') || []).length > 0) { + Tracker.nonreactive(function() { + if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy') && newRoomNotification !== 'none') { + const [audio] = $(`audio#${ newRoomNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); + } + } + }); + } else { + const [room] = $(`audio#${ newRoomNotification }`); + if (!room) { + return; + } + if (room.pause) { + room.pause(); + return room.currentTime = 0; } - }); - } else { - const [room] = $(`audio#${ newRoomNotification }`); - if (!room) { - return; - } - if (room.pause) { - room.pause(); - return room.currentTime = 0; } } }); diff --git a/server/methods/saveUserPreferences.js b/server/methods/saveUserPreferences.js index 2d951fd35a66..ef3d56b9d2d6 100644 --- a/server/methods/saveUserPreferences.js +++ b/server/methods/saveUserPreferences.js @@ -55,6 +55,10 @@ Meteor.methods({ preferences.unreadAlert = settings.unreadAlert === '1' ? true : false; } + if (settings.notificationsSoundVolume) { + preferences.notificationsSoundVolume = settings.notificationsSoundVolume; + } + preferences.desktopNotificationDuration = settings.desktopNotificationDuration - 0; preferences.viewMode = settings.viewMode || 0; preferences.hideUsernames = settings.hideUsernames === '1'; From 145ec7ca3f598fb5079669bf17cde8566e6868fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Tue, 18 Jul 2017 07:34:45 -0300 Subject: [PATCH 02/11] Internal package for notifications sound volume control UI. --- .meteor/packages | 2 + .meteor/versions | 2 + package.json | 214 +++++++++--------- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + packages/rocketchat-i18n/i18n/sq.i18n.json | 3 +- .../app/client/lib/_visitor.js | 5 +- .../client/views/pushNotificationsFlexTab.js | 29 +-- packages/rocketchat-slider/README.md | 0 packages/rocketchat-slider/package.js | 17 ++ .../rocketchat-slider/rocketchat-slider.html | 6 + .../rocketchat-slider/rocketchat-slider.js | 20 ++ .../rocketchat-slider/rocketchat-slider.scss | 121 ++++++++++ .../rocketchat-theme/client/vendor/jscolor.js | 30 +-- .../client/accountPreferences.html | 2 +- .../client/accountPreferences.js | 3 +- 15 files changed, 316 insertions(+), 139 deletions(-) create mode 100644 packages/rocketchat-slider/README.md create mode 100644 packages/rocketchat-slider/package.js create mode 100644 packages/rocketchat-slider/rocketchat-slider.html create mode 100644 packages/rocketchat-slider/rocketchat-slider.js create mode 100644 packages/rocketchat-slider/rocketchat-slider.scss diff --git a/.meteor/packages b/.meteor/packages index 5f061393f71e..aaa63c620e2b 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -110,6 +110,7 @@ rocketchat:slashcommands-mute rocketchat:slashcommands-open rocketchat:slashcommands-topic rocketchat:slashcommands-unarchive +rocketchat:slider rocketchat:smarsh-connector rocketchat:spotify rocketchat:statistics @@ -173,3 +174,4 @@ yasinuslu:blaze-meta deepwell:bootstrap-datepicker2 rocketchat:postcss dynamic-import +fourseven:scss diff --git a/.meteor/versions b/.meteor/versions index cadd1f98c7c3..cd5ca95fee99 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -44,6 +44,7 @@ email@1.2.3 emojione:emojione@3.0.3 facebook-oauth@1.3.2 fastclick@1.0.13 +fourseven:scss@4.5.4 francocatena:status@1.5.3 geojson-utils@1.0.10 github-oauth@1.2.0 @@ -203,6 +204,7 @@ rocketchat:slashcommands-mute@0.0.1 rocketchat:slashcommands-open@0.0.1 rocketchat:slashcommands-topic@0.0.1 rocketchat:slashcommands-unarchive@0.0.1 +rocketchat:slider@0.0.1 rocketchat:smarsh-connector@0.0.1 rocketchat:sms@0.0.1 rocketchat:spotify@0.0.1 diff --git a/package.json b/package.json index 2b19b57bce9b..7a1ed39f9e61 100644 --- a/package.json +++ b/package.json @@ -1,109 +1,109 @@ { - "name": "Rocket.Chat", - "description": "The Ultimate Open Source WebChat Platform", - "version": "0.57.0-develop", - "author": { - "name": "Rocket.Chat", - "url": "https://rocket.chat/" - }, - "contributors": [ - { - "name": "Aaron Ogle", - "email": "aaron.ogle@rocket.chat" - }, - { - "name": "Bradley Hilton", - "email": "bradley.hilton@rocket.chat" - }, - { - "name": "Diego Sampaio", - "email": "diego.sampaio@rocket.chat" - }, - { - "name": "Gabriel Engel", - "email": "gabriel.engel@rocket.chat" - }, - { - "name": "Marcelo Schmidt", - "email": "marcelo.schmidt@rocket.chat" - }, - { - "name": "Rodrigo Nascimento", - "email": "rodrigo.nascimento@rocket.chat" - }, - { - "name": "Sing Li", - "email": "sing.li@rocket.chat" - } - ], - "mocha": { - "tests": [ - "packages/**/*.tests.js" - ], - "files": [ - "packages/**/*.js", - "!packages/**/*.tests.js" - ] - }, - "keywords": [ - "rocketchat", - "rocket", - "chat" - ], - "scripts": { - "start": "meteor npm i && meteor", - "lint": "eslint .", - "lint-fix": "eslint . --fix", - "stylelint": "stylelint packages/**/*.{less,css}", - "test": "node .scripts/start.js", - "deploy": "npm run build && pm2 startOrRestart pm2.json", - "chimp-watch": "chimp --ddp=http://localhost:3000 --watch --mocha --path=tests/end-to-end", - "chimp-test": "chimp tests/chimp-config.js", - "postinstall": "cd packages/rocketchat-katex && npm i", - "testunit-watch": "mocha --watch --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", - "coverage": "nyc -r html mocha --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", - "testunit": "mocha --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", - "version": "node .scripts/version.js", - "set-version": "node .scripts/set-version.js", - "release": "npm run set-version --silent" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/RocketChat/Rocket.Chat.git" - }, - "bugs": { - "url": "https://github.com/RocketChat/Rocket.Chat/issues", - "email": "support@rocket.chat" - }, - "devDependencies": { - "babel-mocha-es6-compiler": "^0.1.0", - "babel-plugin-array-includes": "^2.0.3", - "chimp": "^0.49.0", - "conventional-changelog-cli": "^1.3.1", - "eslint": "^4.1.1", - "postcss-cssnext": "^2.11.0", - "postcss-smart-import": "^0.7.4", - "simple-git": "^1.73.0", - "stylelint": "^7.12.0", - "supertest": "^3.0.0" - }, - "dependencies": { - "@google-cloud/storage": "^1.1.1", - "aws-sdk": "^2.80.0", - "babel-runtime": "^6.23.0", - "bcrypt": "^1.0.2", - "codemirror": "^5.27.4", - "file-type": "^5.2.0", - "highlight.js": "^9.12.0", - "jquery": "^3.2.1", - "mime-db": "^1.28.0", - "mime-type": "^3.0.5", - "moment": "^2.18.1", - "moment-timezone": "^0.5.13", - "photoswipe": "^4.1.2", - "prom-client": "^9.1.1", - "semver": "^5.3.0", - "toastr": "^2.1.2" - } + "name": "Rocket.Chat", + "description": "The Ultimate Open Source WebChat Platform", + "version": "0.57.0-develop", + "author": { + "name": "Rocket.Chat", + "url": "https://rocket.chat/" + }, + "contributors": [ + { + "name": "Aaron Ogle", + "email": "aaron.ogle@rocket.chat" + }, + { + "name": "Bradley Hilton", + "email": "bradley.hilton@rocket.chat" + }, + { + "name": "Diego Sampaio", + "email": "diego.sampaio@rocket.chat" + }, + { + "name": "Gabriel Engel", + "email": "gabriel.engel@rocket.chat" + }, + { + "name": "Marcelo Schmidt", + "email": "marcelo.schmidt@rocket.chat" + }, + { + "name": "Rodrigo Nascimento", + "email": "rodrigo.nascimento@rocket.chat" + }, + { + "name": "Sing Li", + "email": "sing.li@rocket.chat" + } + ], + "mocha": { + "tests": [ + "packages/**/*.tests.js" + ], + "files": [ + "packages/**/*.js", + "!packages/**/*.tests.js" + ] + }, + "keywords": [ + "rocketchat", + "rocket", + "chat" + ], + "scripts": { + "start": "meteor npm i && meteor", + "lint": "eslint .", + "lint-fix": "eslint . --fix", + "stylelint": "stylelint packages/**/*.{less,css}", + "test": "node .scripts/start.js", + "deploy": "npm run build && pm2 startOrRestart pm2.json", + "chimp-watch": "chimp --ddp=http://localhost:3000 --watch --mocha --path=tests/end-to-end", + "chimp-test": "chimp tests/chimp-config.js", + "postinstall": "cd packages/rocketchat-katex && npm i", + "testunit-watch": "mocha --watch --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", + "coverage": "nyc -r html mocha --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", + "testunit": "mocha --opts ./mocha.opts \"`node -e \"console.log(require('./package.json').mocha.tests.join(' '))\"`\"", + "version": "node .scripts/version.js", + "set-version": "node .scripts/set-version.js", + "release": "npm run set-version --silent" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/RocketChat/Rocket.Chat.git" + }, + "bugs": { + "url": "https://github.com/RocketChat/Rocket.Chat/issues", + "email": "support@rocket.chat" + }, + "devDependencies": { + "babel-mocha-es6-compiler": "^0.1.0", + "babel-plugin-array-includes": "^2.0.3", + "chimp": "^0.49.0", + "conventional-changelog-cli": "^1.3.1", + "eslint": "^4.1.1", + "postcss-cssnext": "^2.11.0", + "postcss-smart-import": "^0.7.4", + "simple-git": "^1.73.0", + "stylelint": "^7.12.0", + "supertest": "^3.0.0" + }, + "dependencies": { + "@google-cloud/storage": "^1.1.1", + "aws-sdk": "^2.80.0", + "babel-runtime": "^6.23.0", + "bcrypt": "^1.0.2", + "codemirror": "^5.27.4", + "file-type": "^5.2.0", + "highlight.js": "^9.12.0", + "jquery": "^3.2.1", + "mime-db": "^1.28.0", + "mime-type": "^3.0.5", + "moment": "^2.18.1", + "moment-timezone": "^0.5.13", + "photoswipe": "^4.1.2", + "prom-client": "^9.1.1", + "semver": "^5.3.0", + "toastr": "^2.1.2" + } } diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 6e05354aa88f..3adfc7fa094f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1100,6 +1100,7 @@ "Notification_Duration": "Notification Duration", "Notifications": "Notifications", "Notifications_Muted_Description": "If you choose to mute everything, you won't see the room highlight in the list when there are new messages, except for mentions. Muting notifications will override notifications settings.", + "Notifications_Sound_Volume": "Notifications sound volume", "Notify_all_in_this_room": "Notify all in this room", "Notify_active_in_this_room": "Notify active users in this room", "Num_Agents": "# Agents", diff --git a/packages/rocketchat-i18n/i18n/sq.i18n.json b/packages/rocketchat-i18n/i18n/sq.i18n.json index 0da84a902bdd..1050a63016af 100644 --- a/packages/rocketchat-i18n/i18n/sq.i18n.json +++ b/packages/rocketchat-i18n/i18n/sq.i18n.json @@ -748,6 +748,7 @@ "Nothing": "asgjë", "Nothing_found": "Asgjë për të gjetur", "Notifications": "Njoftime", + "Notifications_Sound_Volume": "Notifications sound volume", "Notify_all_in_this_room": "Njoftojë të gjithë në këtë dhomë", "Num_Agents": "# Agents", "Number_of_messages": "Numri i mesazheve", @@ -1219,4 +1220,4 @@ "Your_mail_was_sent_to_s": "maili juaj u dërgua në %s", "Your_password_is_wrong": "Fjalëkalimi juaj është e gabuar!", "Your_push_was_sent_to_s_devices": "shtytje juaj u dërgua në pajisjet %s" -} \ No newline at end of file +} diff --git a/packages/rocketchat-livechat/app/client/lib/_visitor.js b/packages/rocketchat-livechat/app/client/lib/_visitor.js index 21080388f652..08891024b22f 100644 --- a/packages/rocketchat-livechat/app/client/lib/_visitor.js +++ b/packages/rocketchat-livechat/app/client/lib/_visitor.js @@ -58,7 +58,10 @@ this.visitor = new class { // notification sound if (Session.equals('sound', true) && msg.u._id !== Meteor.userId()) { - $('#chatAudioNotification')[0].play(); + const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; + const audio = $('#chatAudioNotification')[0]; + audio.volume = Number((audioVolume/100).toPrecision(2)); + audio.play(); } } }); diff --git a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js index d13fdf51e1cf..00aa7d165559 100644 --- a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js +++ b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js @@ -255,34 +255,37 @@ Template.pushNotificationsFlexTab.events({ 'click [data-play]'(e) { e.preventDefault(); + let audio = $(e.currentTarget).data('play'); + + if (!audio || audio === 'none') { + audio = Meteor.user().settings.preferences.newMessageNotification || 'chime'; + } + if (audio && audio !== 'none') { + + const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; const $audio = $(`audio#${ audio }`); + if ($audio && $audio[0] && $audio[0].play) { + $audio[0].volume = Number((audioVolume/100).toPrecision(2)); $audio[0].play(); } - } else { - const user = Meteor.user() - if (user && user.settings && user.settings.preferences) { - audio = user.settings.preferences.newMessageNotification || 'chime'; - const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; - if (audio && audio !== 'none') { - const $audio = $(`audio#${ audio }`); - if ($audio && $audio[0] && $audio[0].play) { - $audio[0].volume = audioVolume/100; - $audio[0].play(); - } - } - } } }, 'change select[name=audioNotification]'(e) { e.preventDefault(); + const audio = $(e.currentTarget).val(); + if (audio && audio !== 'none') { + + const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; const $audio = $(`audio#${ audio }`); + if ($audio && $audio[0] && $audio[0].play) { + $audio[0].volume = Number((audioVolume/100).toPrecision(2)); $audio[0].play(); } } diff --git a/packages/rocketchat-slider/README.md b/packages/rocketchat-slider/README.md new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/rocketchat-slider/package.js b/packages/rocketchat-slider/package.js new file mode 100644 index 000000000000..6f98da06a6cc --- /dev/null +++ b/packages/rocketchat-slider/package.js @@ -0,0 +1,17 @@ +Package.describe({ + name: 'rocketchat:slider', + version: '0.0.1', + summary: 'UI slider component for input range.', + git: '', + documentation: 'README.md' +}); + +Package.onUse(function(api) { + api.use('ecmascript'); + api.use('templating', 'client'); + api.use('fourseven:scss'); + + api.addFiles('rocketchat-slider.scss', 'client'); + api.addFiles('rocketchat-slider.html', 'client'); + api.addFiles('rocketchat-slider.js', 'client'); +}); diff --git a/packages/rocketchat-slider/rocketchat-slider.html b/packages/rocketchat-slider/rocketchat-slider.html new file mode 100644 index 000000000000..9d43cfe7960f --- /dev/null +++ b/packages/rocketchat-slider/rocketchat-slider.html @@ -0,0 +1,6 @@ + diff --git a/packages/rocketchat-slider/rocketchat-slider.js b/packages/rocketchat-slider/rocketchat-slider.js new file mode 100644 index 000000000000..eeb7ed47035e --- /dev/null +++ b/packages/rocketchat-slider/rocketchat-slider.js @@ -0,0 +1,20 @@ +import './rocketchat-slider.scss'; +import './rocketchat-slider.html'; + +Template.slider.onRendered(function() { + const params = this.data; + + const rangeSlider = function() { + + const range = $('#' + params.id); + const labelValue = $('#' + params.id + '__value'); + + labelValue.html(params.value); + + range.on('input', function() { + labelValue.html(this.value); + }); + }; + + rangeSlider(); +}); diff --git a/packages/rocketchat-slider/rocketchat-slider.scss b/packages/rocketchat-slider/rocketchat-slider.scss new file mode 100644 index 000000000000..360fab717f62 --- /dev/null +++ b/packages/rocketchat-slider/rocketchat-slider.scss @@ -0,0 +1,121 @@ +// Base Colors +$shade-10: #04436a !default; +$shade-1: #d7dcdf !default; +$shade-0: #fff !default; +$teal: #1abc9c !default; + +// Reset +* { + &, + &:before, + &:after { + box-sizing: border-box; + } +} + +.range-slider { + margin: 0 0 0 0%; +} + +$range-width: 100% !default; + +$range-handle-color: $shade-10 !default; +$range-handle-color-hover: $teal !default; +$range-handle-size: 20px !default; + +$range-track-color: $shade-1 !default; +$range-track-height: 10px !default; + +$range-label-color: $shade-10 !default; +$range-label-width: 60px !default; + +.range-slider { + width: $range-width; +} + +.range-slider__range { + -webkit-appearance: none; + width: calc(100% - (#{$range-label-width + 13px})); + height: $range-track-height; + border-radius: 5px; + background: $range-track-color; + outline: none; + padding: 0; + margin: 0; + + // Range Handle + &::-webkit-slider-thumb { + appearance: none; + width: $range-handle-size; + height: $range-handle-size; + border-radius: 50%; + background: $range-handle-color; + cursor: pointer; + transition: background .15s ease-in-out; + + &:hover { + background: $range-handle-color-hover; + } + } + + &:active::-webkit-slider-thumb { + background: $range-handle-color-hover; + } + + &::-moz-range-thumb { + width: $range-handle-size; + height: $range-handle-size; + border: 0; + border-radius: 50%; + background: $range-handle-color; + cursor: pointer; + transition: background .15s ease-in-out; + + &:hover { + background: $range-handle-color-hover; + } + } + + &:active::-moz-range-thumb { + background: $range-handle-color-hover; + } +} + + +// Range Label +.range-slider__value { + display: inline-block; + position: relative; + width: $range-label-width; + color: $shade-0; + line-height: 20px; + text-align: center; + border-radius: 3px; + background: $range-label-color; + padding: 5px 10px; + margin-left: 8px; + + &:after { + position: absolute; + top: 8px; + left: -7px; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid $range-label-color; + border-bottom: 7px solid transparent; + content: ''; + } +} + + +// Firefox Overrides +::-moz-range-track { + background: $range-track-color; + border: 0; +} + +input::-moz-focus-inner, +input::-moz-focus-outer { + border: 0; +} diff --git a/packages/rocketchat-theme/client/vendor/jscolor.js b/packages/rocketchat-theme/client/vendor/jscolor.js index 8d65d83740ef..b7b6bd95233d 100644 --- a/packages/rocketchat-theme/client/vendor/jscolor.js +++ b/packages/rocketchat-theme/client/vendor/jscolor.js @@ -619,7 +619,7 @@ var jsc = { switch (controlName) { case 'pad': - // if the slider is at the bottom, move it up + // if the rocketchat-slider is at the bottom, move it up switch (jsc.getSliderComponent(thisObj)) { case 's': if (thisObj.hsv[1] === 0) { thisObj.fromHSV(null, 100, null); }; break; case 'v': if (thisObj.hsv[2] === 0) { thisObj.fromHSV(null, null, 100); }; break; @@ -1387,10 +1387,10 @@ var jsc = { sldB : document.createElement('div'), // border sldM : document.createElement('div'), // mouse/touch area sldGrad : jsc.createSliderGradient(), - sldPtrS : document.createElement('div'), // slider pointer spacer - sldPtrIB : document.createElement('div'), // slider pointer inner border - sldPtrMB : document.createElement('div'), // slider pointer middle border - sldPtrOB : document.createElement('div'), // slider pointer outer border + sldPtrS : document.createElement('div'), // rocketchat-slider pointer spacer + sldPtrIB : document.createElement('div'), // rocketchat-slider pointer inner border + sldPtrMB : document.createElement('div'), // rocketchat-slider pointer middle border + sldPtrOB : document.createElement('div'), // rocketchat-slider pointer outer border btn : document.createElement('div'), btnT : document.createElement('span') // text }; @@ -1540,15 +1540,15 @@ var jsc = { p.crossLX.style.left = THIS.pointerBorderWidth + 'px'; - // slider + // rocketchat-slider p.sld.style.overflow = 'hidden'; p.sld.style.width = THIS.sliderSize + 'px'; p.sld.style.height = THIS.height + 'px'; - // slider gradient + // rocketchat-slider gradient p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000'); - // slider border + // rocketchat-slider border p.sldB.style.display = displaySlider ? 'block' : 'none'; p.sldB.style.position = 'absolute'; p.sldB.style.right = THIS.padding + 'px'; @@ -1556,7 +1556,7 @@ var jsc = { p.sldB.style.border = THIS.insetWidth + 'px solid'; p.sldB.style.borderColor = THIS.insetColor; - // slider mouse area + // rocketchat-slider mouse area p.sldM._jscInstance = THIS; p.sldM._jscControlName = 'sld'; p.sldM.style.display = displaySlider ? 'block' : 'none'; @@ -1567,20 +1567,20 @@ var jsc = { p.sldM.style.height = dims[1] + 'px'; p.sldM.style.cursor = 'default'; - // slider pointer inner and outer border + // rocketchat-slider pointer inner and outer border p.sldPtrIB.style.border = p.sldPtrOB.style.border = THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor; - // slider pointer outer border + // rocketchat-slider pointer outer border p.sldPtrOB.style.position = 'absolute'; p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px'; p.sldPtrOB.style.top = '0'; - // slider pointer middle border + // rocketchat-slider pointer middle border p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor; - // slider pointer spacer + // rocketchat-slider pointer spacer p.sldPtrS.style.width = THIS.sliderSize + 'px'; p.sldPtrS.style.height = sliderPtrSpace + 'px'; @@ -1655,7 +1655,7 @@ var jsc = { jsc.picker.cross.style.left = (x + ofs) + 'px'; jsc.picker.cross.style.top = (y + ofs) + 'px'; - // redraw the slider + // redraw the rocketchat-slider switch (jsc.getSliderComponent(THIS)) { case 's': var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]); @@ -1686,7 +1686,7 @@ var jsc = { function redrawSld () { var sldComponent = jsc.getSliderComponent(THIS); if (sldComponent) { - // redraw the slider pointer + // redraw the rocketchat-slider pointer switch (sldComponent) { case 's': var yComponent = 1; break; case 'v': var yComponent = 2; break; diff --git a/packages/rocketchat-ui-account/client/accountPreferences.html b/packages/rocketchat-ui-account/client/accountPreferences.html index 9a0a62469d85..8789d6376a83 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.html +++ b/packages/rocketchat-ui-account/client/accountPreferences.html @@ -215,7 +215,7 @@

{{_ "Sound"}}

- + {{> slider id="notificationsSoundVolume" min="0" max="100" value=notificationsSoundVolume}}
diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 07da8a89dc5c..29771f0793f1 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -1,5 +1,6 @@ /*globals defaultUserLanguage, KonchatNotification */ import toastr from 'toastr'; + Template.accountPreferences.helpers({ audioAssets() { return (RocketChat.CustomSounds && RocketChat.CustomSounds.getList && RocketChat.CustomSounds.getList()) || []; @@ -130,7 +131,7 @@ Template.accountPreferences.onCreated(function() { })); data.desktopNotificationDuration = $('input[name=desktopNotificationDuration]').val(); data.unreadAlert = $('#unreadAlert').find('input:checked').val(); - data.notificationsSoundVolume = parseInt($('input[name=notificationsSoundVolume]').val()); + data.notificationsSoundVolume = parseInt($('#notificationsSoundVolume').val()); Meteor.call('saveUserPreferences', data, function(error, results) { if (results) { From fc0df6c49ae7a56249b889b223facb0353b9d114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Tue, 18 Jul 2017 08:58:33 -0300 Subject: [PATCH 03/11] Solving eslint problems for improve pull request quality. --- packages/rocketchat-slider/package.js | 10 +- .../rocketchat-slider/rocketchat-slider.js | 4 +- .../rocketchat-slider/rocketchat-slider.scss | 169 +++++++++--------- 3 files changed, 87 insertions(+), 96 deletions(-) diff --git a/packages/rocketchat-slider/package.js b/packages/rocketchat-slider/package.js index 6f98da06a6cc..8120e6642c6e 100644 --- a/packages/rocketchat-slider/package.js +++ b/packages/rocketchat-slider/package.js @@ -1,9 +1,9 @@ Package.describe({ - name: 'rocketchat:slider', - version: '0.0.1', - summary: 'UI slider component for input range.', - git: '', - documentation: 'README.md' + name: 'rocketchat:slider', + version: '0.0.1', + summary: 'UI slider component for input range.', + git: '', + documentation: 'README.md' }); Package.onUse(function(api) { diff --git a/packages/rocketchat-slider/rocketchat-slider.js b/packages/rocketchat-slider/rocketchat-slider.js index eeb7ed47035e..d08bc6fafd36 100644 --- a/packages/rocketchat-slider/rocketchat-slider.js +++ b/packages/rocketchat-slider/rocketchat-slider.js @@ -6,8 +6,8 @@ Template.slider.onRendered(function() { const rangeSlider = function() { - const range = $('#' + params.id); - const labelValue = $('#' + params.id + '__value'); + const range = $(`#${ params.id }`); + const labelValue = $(`#${ params.id }__value`); labelValue.html(params.value); diff --git a/packages/rocketchat-slider/rocketchat-slider.scss b/packages/rocketchat-slider/rocketchat-slider.scss index 360fab717f62..6ae9f885f617 100644 --- a/packages/rocketchat-slider/rocketchat-slider.scss +++ b/packages/rocketchat-slider/rocketchat-slider.scss @@ -1,24 +1,23 @@ -// Base Colors $shade-10: #04436a !default; $shade-1: #d7dcdf !default; -$shade-0: #fff !default; +$shade-0: #ffffff !default; $teal: #1abc9c !default; -// Reset * { - &, - &:before, - &:after { - box-sizing: border-box; - } + &, + &::before, + &::after { + box-sizing: border-box; + } } +$range-width: 100% !default; + .range-slider { - margin: 0 0 0 0%; + margin: 0 0 0 0%; + width: $range-width; } -$range-width: 100% !default; - $range-handle-color: $shade-10 !default; $range-handle-color-hover: $teal !default; $range-handle-size: 20px !default; @@ -29,93 +28,85 @@ $range-track-height: 10px !default; $range-label-color: $shade-10 !default; $range-label-width: 60px !default; -.range-slider { - width: $range-width; -} - .range-slider__range { - -webkit-appearance: none; - width: calc(100% - (#{$range-label-width + 13px})); - height: $range-track-height; - border-radius: 5px; - background: $range-track-color; - outline: none; - padding: 0; - margin: 0; - - // Range Handle - &::-webkit-slider-thumb { - appearance: none; - width: $range-handle-size; - height: $range-handle-size; - border-radius: 50%; - background: $range-handle-color; - cursor: pointer; - transition: background .15s ease-in-out; - - &:hover { - background: $range-handle-color-hover; - } - } - - &:active::-webkit-slider-thumb { - background: $range-handle-color-hover; - } - - &::-moz-range-thumb { - width: $range-handle-size; - height: $range-handle-size; - border: 0; - border-radius: 50%; - background: $range-handle-color; - cursor: pointer; - transition: background .15s ease-in-out; - - &:hover { - background: $range-handle-color-hover; - } - } - - &:active::-moz-range-thumb { - background: $range-handle-color-hover; - } + -webkit-appearance: none; + width: calc(100% - (#{$range-label-width + 13px})); + height: $range-track-height; + border-radius: 5px; + background: $range-track-color; + outline: none; + padding: 0; + margin: 0; + + // Range Handle + &::-webkit-slider-thumb { + appearance: none; + width: $range-handle-size; + height: $range-handle-size; + border-radius: 50%; + background: $range-handle-color; + cursor: pointer; + transition: background 0.15s ease-in-out; + + &:hover { + background: $range-handle-color-hover; + } + } + + &:active::-webkit-slider-thumb { + background: $range-handle-color-hover; + } + + &::-moz-range-thumb { + width: $range-handle-size; + height: $range-handle-size; + border: 0; + border-radius: 50%; + background: $range-handle-color; + cursor: pointer; + transition: background 0.15s ease-in-out; + + &:hover { + background: $range-handle-color-hover; + } + } + + &:active::-moz-range-thumb { + background: $range-handle-color-hover; + } } - -// Range Label .range-slider__value { - display: inline-block; - position: relative; - width: $range-label-width; - color: $shade-0; - line-height: 20px; - text-align: center; - border-radius: 3px; - background: $range-label-color; - padding: 5px 10px; - margin-left: 8px; - - &:after { - position: absolute; - top: 8px; - left: -7px; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-right: 7px solid $range-label-color; - border-bottom: 7px solid transparent; - content: ''; - } + display: inline-block; + position: relative; + width: $range-label-width; + color: $shade-0; + line-height: 20px; + text-align: center; + border-radius: 3px; + background: $range-label-color; + padding: 5px 10px; + margin-left: 8px; + + &::after { + position: absolute; + top: 8px; + left: -7px; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid $range-label-color; + border-bottom: 7px solid transparent; + content: ''; + } } - -// Firefox Overrides ::-moz-range-track { - background: $range-track-color; - border: 0; + background: $range-track-color; + border: 0; } input::-moz-focus-inner, input::-moz-focus-outer { - border: 0; + border: 0; } From 5d09a50b8b579c69ba61c5db62845290cc5dcec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Wed, 19 Jul 2017 07:58:06 -0300 Subject: [PATCH 04/11] Merge remote-tracking branch 'upstream/develop' into develop # Conflicts: # .meteor/packages # package.json # packages/rocketchat-ui/client/lib/notification.js --- .meteor/packages | 2 ++ .meteor/versions | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.meteor/packages b/.meteor/packages index 744827792453..36fe3a6d4b63 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -110,6 +110,7 @@ rocketchat:slashcommands-mute rocketchat:slashcommands-open rocketchat:slashcommands-topic rocketchat:slashcommands-unarchive +rocketchat:slider rocketchat:smarsh-connector rocketchat:spotify rocketchat:statistics @@ -173,3 +174,4 @@ yasinuslu:blaze-meta deepwell:bootstrap-datepicker2 rocketchat:postcss dynamic-import@0.1.1 +fourseven:scss diff --git a/.meteor/versions b/.meteor/versions index c5fa715f0b70..56f9b2cad3f9 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -106,7 +106,7 @@ oauth1@1.1.11 oauth2@1.1.11 observe-sequence@1.0.16 ordered-dict@1.0.9 -ostrio:cookies@2.2.1 +ostrio:cookies@2.2.2 pauli:accounts-linkedin@2.1.3 pauli:linkedin-oauth@1.1.0 percolate:synced-cron@1.3.2 From e309670706a5e6a11315e2839a71e9897893e2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Fri, 21 Jul 2017 08:25:56 -0300 Subject: [PATCH 05/11] Implementing the administration setting for the frequency of notifications about changing user's password. #2995 --- .gitignore | 1 + packages/rocketchat-i18n/i18n/en.i18n.json | 5 +++++ packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 5 +++++ packages/rocketchat-i18n/i18n/pt.i18n.json | 5 +++++ .../server/functions/saveUser.js | 1 + .../rocketchat-lib/server/models/Users.js | 2 +- .../rocketchat-lib/server/startup/settings.js | 20 +++++++++++++++++++ .../client/accountProfile.js | 1 + server/methods/saveUserProfile.js | 4 +++- 9 files changed, 42 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 644cb6d42cfb..3f7fd5b8134e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ .env .externalToolBuilders .idea +.vscode .loadpath .map .metadata diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index fb716e6c9152..9bb653cf0edf 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -106,6 +106,11 @@ "Accounts_PasswordReset": "Password Reset", "Accounts_OAuth_Proxy_host": "Proxy Host", "Accounts_OAuth_Proxy_services": "Proxy Services", + "Accounts_ReceivePasswordChangeLog": "Receive password change log by email", + "Accounts_ReceivePasswordChangeLog_Dismiss": "Disabled", + "Accounts_ReceivePasswordChangeLog_Immediately": "Immediately with each change", + "Accounts_ReceivePasswordChangeLog_Daily": "Daily summary", + "Accounts_ReceivePasswordChangeLog_Weekly": "Weekly summary", "Accounts_Registration_AuthenticationServices_Default_Roles": "Default Roles for Authentication Services", "Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Default roles (comma-separated) users will be given when registering through authentication services", "Accounts_Registration_AuthenticationServices_Enabled": "Registration with Authentication Services", diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index 4654ae41052d..dd0618533e6b 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -94,6 +94,11 @@ "Accounts_OAuth_Wordpress_id": "WordPress ID", "Accounts_OAuth_Wordpress_secret": "WordPress Secret", "Accounts_PasswordReset": "Resetar senha", + "Accounts_ReceivePasswordChangeLog": "Receber log das alterações de senha por e-mail", + "Accounts_ReceivePasswordChangeLog_Dismiss": "Desativado", + "Accounts_ReceivePasswordChangeLog_Immediately": "Imediatamente a cada alteração", + "Accounts_ReceivePasswordChangeLog_Daily": "Resumo diário", + "Accounts_ReceivePasswordChangeLog_Weekly": "Resumo semanal", "Accounts_Registration_AuthenticationServices_Enabled": "Registro com os Serviços de Autenticação", "Accounts_RegistrationForm": "Formulário de Registro", "Accounts_RegistrationForm_Disabled": "Desativado", diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json index f2aefa5cdf3b..a2158b6f46ed 100644 --- a/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -102,6 +102,11 @@ "Accounts_PasswordReset": "Resetar senha", "Accounts_OAuth_Proxy_host": "Host de Proxy", "Accounts_OAuth_Proxy_services": "Serviços de Proxy", + "Accounts_ReceivePasswordChangeLog": "Receber log das alterações de senha por e-mail", + "Accounts_ReceivePasswordChangeLog_Dismiss": "Desativado", + "Accounts_ReceivePasswordChangeLog_Immediately": "Imediatamente a cada alteração", + "Accounts_ReceivePasswordChangeLog_Daily": "Resumo diário", + "Accounts_ReceivePasswordChangeLog_Weekly": "Resumo semanal", "Accounts_Registration_AuthenticationServices_Enabled": "Registro com os Serviços de Autenticação", "Accounts_RegistrationForm": "Formulário de Registro", "Accounts_RegistrationForm_Disabled": "Desativado", diff --git a/packages/rocketchat-lib/server/functions/saveUser.js b/packages/rocketchat-lib/server/functions/saveUser.js index fade4261aaff..60e2808b7f36 100644 --- a/packages/rocketchat-lib/server/functions/saveUser.js +++ b/packages/rocketchat-lib/server/functions/saveUser.js @@ -149,6 +149,7 @@ RocketChat.saveUser = function(userId, userData) { } if (userData.password && userData.password.trim() && RocketChat.authz.hasPermission(userId, 'edit-other-user-password')) { + // TODO #2995 Accounts.setPassword(userData._id, userData.password.trim()); } diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index fe3b0d88c392..c7669fded5e5 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -397,7 +397,7 @@ class ModelUsers extends RocketChat.models._Base { requirePasswordChangeReason } }; - + // TODO #2995 return this.update(_id, update); } diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index d93b106c04f5..8227cbf167e9 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -70,6 +70,26 @@ RocketChat.settings.addGroup('Accounts', function() { type: 'boolean', 'public': true }); + // TODO: Implementing #2995 + this.add('Accounts_ReceivePasswordChangeLog', '', { + type: 'select', + 'public': true, + values: [ + { + key: '', + i18nLabel: 'Accounts_ReceivePasswordChangeLog_Dismiss' + }, { + key: 'immediately', + i18nLabel: 'Accounts_ReceivePasswordChangeLog_Immediately' + }, { + key: 'daily', + i18nLabel: 'Accounts_ReceivePasswordChangeLog_Daily' + }, { + key: 'weekly', + i18nLabel: 'Accounts_ReceivePasswordChangeLog_Weekly' + } + ] + }); this.section('Registration', function() { this.add('Accounts_DefaultUsernamePrefixSuggestion', 'user', { diff --git a/packages/rocketchat-ui-account/client/accountProfile.js b/packages/rocketchat-ui-account/client/accountProfile.js index 2038b340d2de..ff4ca31286bb 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.js +++ b/packages/rocketchat-ui-account/client/accountProfile.js @@ -63,6 +63,7 @@ Template.accountProfile.onCreated(function() { typedPassword }; if (_.trim($('#password').val()) && RocketChat.settings.get('Accounts_AllowPasswordChange')) { + // TODO #2995 data.newPassword = $('#password').val(); } if (_.trim($('#realname').val())) { diff --git a/server/methods/saveUserProfile.js b/server/methods/saveUserProfile.js index 7f78f1c99e39..e37f47634de3 100644 --- a/server/methods/saveUserProfile.js +++ b/server/methods/saveUserProfile.js @@ -50,7 +50,7 @@ Meteor.methods({ Meteor.call('setEmail', settings.email); } - // Should be the last chack to prevent error when trying to check password for users without password + // Should be the last check to prevent error when trying to check password for users without password if ((settings.newPassword) && RocketChat.settings.get('Accounts_AllowPasswordChange') === true) { if (!checkPassword(user, settings.typedPassword)) { throw new Meteor.Error('error-invalid-password', 'Invalid password', { @@ -58,6 +58,8 @@ Meteor.methods({ }); } + // TODO: #2995 + Accounts.setPassword(Meteor.userId(), settings.newPassword, { logout: false }); From 9635a06084dee64b0f8719602bb850a49f20427c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Mon, 24 Jul 2017 12:31:57 -0300 Subject: [PATCH 06/11] Removing code of #2995 mistakenly included in #6087. --- packages/rocketchat-i18n/i18n/en.i18n.json | 5 ----- packages/rocketchat-i18n/i18n/pt-BR.i18n.json | 5 ----- packages/rocketchat-i18n/i18n/pt.i18n.json | 5 ----- .../rocketchat-lib/server/startup/settings.js | 22 +------------------ 4 files changed, 1 insertion(+), 36 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 9bb653cf0edf..fb716e6c9152 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -106,11 +106,6 @@ "Accounts_PasswordReset": "Password Reset", "Accounts_OAuth_Proxy_host": "Proxy Host", "Accounts_OAuth_Proxy_services": "Proxy Services", - "Accounts_ReceivePasswordChangeLog": "Receive password change log by email", - "Accounts_ReceivePasswordChangeLog_Dismiss": "Disabled", - "Accounts_ReceivePasswordChangeLog_Immediately": "Immediately with each change", - "Accounts_ReceivePasswordChangeLog_Daily": "Daily summary", - "Accounts_ReceivePasswordChangeLog_Weekly": "Weekly summary", "Accounts_Registration_AuthenticationServices_Default_Roles": "Default Roles for Authentication Services", "Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Default roles (comma-separated) users will be given when registering through authentication services", "Accounts_Registration_AuthenticationServices_Enabled": "Registration with Authentication Services", diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index dd0618533e6b..4654ae41052d 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -94,11 +94,6 @@ "Accounts_OAuth_Wordpress_id": "WordPress ID", "Accounts_OAuth_Wordpress_secret": "WordPress Secret", "Accounts_PasswordReset": "Resetar senha", - "Accounts_ReceivePasswordChangeLog": "Receber log das alterações de senha por e-mail", - "Accounts_ReceivePasswordChangeLog_Dismiss": "Desativado", - "Accounts_ReceivePasswordChangeLog_Immediately": "Imediatamente a cada alteração", - "Accounts_ReceivePasswordChangeLog_Daily": "Resumo diário", - "Accounts_ReceivePasswordChangeLog_Weekly": "Resumo semanal", "Accounts_Registration_AuthenticationServices_Enabled": "Registro com os Serviços de Autenticação", "Accounts_RegistrationForm": "Formulário de Registro", "Accounts_RegistrationForm_Disabled": "Desativado", diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json index a2158b6f46ed..f2aefa5cdf3b 100644 --- a/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -102,11 +102,6 @@ "Accounts_PasswordReset": "Resetar senha", "Accounts_OAuth_Proxy_host": "Host de Proxy", "Accounts_OAuth_Proxy_services": "Serviços de Proxy", - "Accounts_ReceivePasswordChangeLog": "Receber log das alterações de senha por e-mail", - "Accounts_ReceivePasswordChangeLog_Dismiss": "Desativado", - "Accounts_ReceivePasswordChangeLog_Immediately": "Imediatamente a cada alteração", - "Accounts_ReceivePasswordChangeLog_Daily": "Resumo diário", - "Accounts_ReceivePasswordChangeLog_Weekly": "Resumo semanal", "Accounts_Registration_AuthenticationServices_Enabled": "Registro com os Serviços de Autenticação", "Accounts_RegistrationForm": "Formulário de Registro", "Accounts_RegistrationForm_Disabled": "Desativado", diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index 8227cbf167e9..141a5fe7ee00 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -70,27 +70,7 @@ RocketChat.settings.addGroup('Accounts', function() { type: 'boolean', 'public': true }); - // TODO: Implementing #2995 - this.add('Accounts_ReceivePasswordChangeLog', '', { - type: 'select', - 'public': true, - values: [ - { - key: '', - i18nLabel: 'Accounts_ReceivePasswordChangeLog_Dismiss' - }, { - key: 'immediately', - i18nLabel: 'Accounts_ReceivePasswordChangeLog_Immediately' - }, { - key: 'daily', - i18nLabel: 'Accounts_ReceivePasswordChangeLog_Daily' - }, { - key: 'weekly', - i18nLabel: 'Accounts_ReceivePasswordChangeLog_Weekly' - } - ] - }); - + // TODO: #2995 this.section('Registration', function() { this.add('Accounts_DefaultUsernamePrefixSuggestion', 'user', { type: 'string' From dadde155f8eda95b3cf7df240690e5713641bac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Mon, 24 Jul 2017 12:41:11 -0300 Subject: [PATCH 07/11] Removing code of #2995 mistakenly included in #6087. --- packages/rocketchat-lib/server/functions/saveUser.js | 1 - packages/rocketchat-lib/server/models/Users.js | 1 - packages/rocketchat-ui-account/client/accountProfile.js | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/rocketchat-lib/server/functions/saveUser.js b/packages/rocketchat-lib/server/functions/saveUser.js index 60e2808b7f36..fade4261aaff 100644 --- a/packages/rocketchat-lib/server/functions/saveUser.js +++ b/packages/rocketchat-lib/server/functions/saveUser.js @@ -149,7 +149,6 @@ RocketChat.saveUser = function(userId, userData) { } if (userData.password && userData.password.trim() && RocketChat.authz.hasPermission(userId, 'edit-other-user-password')) { - // TODO #2995 Accounts.setPassword(userData._id, userData.password.trim()); } diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index c7669fded5e5..acc11292155f 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -397,7 +397,6 @@ class ModelUsers extends RocketChat.models._Base { requirePasswordChangeReason } }; - // TODO #2995 return this.update(_id, update); } diff --git a/packages/rocketchat-ui-account/client/accountProfile.js b/packages/rocketchat-ui-account/client/accountProfile.js index ff4ca31286bb..2038b340d2de 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.js +++ b/packages/rocketchat-ui-account/client/accountProfile.js @@ -63,7 +63,6 @@ Template.accountProfile.onCreated(function() { typedPassword }; if (_.trim($('#password').val()) && RocketChat.settings.get('Accounts_AllowPasswordChange')) { - // TODO #2995 data.newPassword = $('#password').val(); } if (_.trim($('#realname').val())) { From a95087b7fa76df767af77b3f54e4968b82535f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Mon, 24 Jul 2017 12:44:42 -0300 Subject: [PATCH 08/11] Removing code of #2995 mistakenly included in #6087. --- packages/rocketchat-lib/server/startup/settings.js | 1 - server/methods/saveUserProfile.js | 2 -- 2 files changed, 3 deletions(-) diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index 141a5fe7ee00..0379dd2d983d 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -70,7 +70,6 @@ RocketChat.settings.addGroup('Accounts', function() { type: 'boolean', 'public': true }); - // TODO: #2995 this.section('Registration', function() { this.add('Accounts_DefaultUsernamePrefixSuggestion', 'user', { type: 'string' diff --git a/server/methods/saveUserProfile.js b/server/methods/saveUserProfile.js index e37f47634de3..bc2ef91d9506 100644 --- a/server/methods/saveUserProfile.js +++ b/server/methods/saveUserProfile.js @@ -58,8 +58,6 @@ Meteor.methods({ }); } - // TODO: #2995 - Accounts.setPassword(Meteor.userId(), settings.newPassword, { logout: false }); From 5ae0f43f9585852d310b4b958b491b708763d13c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Wed, 26 Jul 2017 17:07:41 -0300 Subject: [PATCH 09/11] Solving requested changes by rodrigok and karlprieb at PR #7517 --- .meteor/packages | 1 - packages/rocketchat-i18n/i18n/es.i18n.json | 2 +- packages/rocketchat-i18n/i18n/sq.i18n.json | 2 +- .../rocketchat-lib/server/models/Users.js | 1 + .../rocketchat-lib/server/startup/settings.js | 1 + .../app/client/lib/_visitor.js | 2 +- packages/rocketchat-slider/package.js | 3 +- .../rocketchat-slider/rocketchat-slider.js | 3 - .../rocketchat-slider/rocketchat-slider.scss | 112 ------------------ .../client/imports/slider.css | 72 +++++++++++ packages/rocketchat-theme/client/main.css | 2 +- .../rocketchat-theme/client/vendor/jscolor.js | 30 ++--- packages/rocketchat-theme/server/colors.less | 47 ++++++++ 13 files changed, 141 insertions(+), 137 deletions(-) delete mode 100644 packages/rocketchat-slider/rocketchat-slider.scss create mode 100644 packages/rocketchat-theme/client/imports/slider.css diff --git a/.meteor/packages b/.meteor/packages index 36fe3a6d4b63..8b41bacd1420 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -174,4 +174,3 @@ yasinuslu:blaze-meta deepwell:bootstrap-datepicker2 rocketchat:postcss dynamic-import@0.1.1 -fourseven:scss diff --git a/packages/rocketchat-i18n/i18n/es.i18n.json b/packages/rocketchat-i18n/i18n/es.i18n.json index 522ab29c00ec..04ce087edc90 100644 --- a/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/packages/rocketchat-i18n/i18n/es.i18n.json @@ -872,7 +872,7 @@ "Nothing_found": "No se encontró nada", "Notification_Duration": "Duración de la notificación", "Notifications": "Notificaciones", - "Notifications_Sound_Volume": "Notifications sound volume", + "Notifications_Sound_Volume": "Volumen del sonido de las notificaciones", "Notify_all_in_this_room": "Notificar a todos en este canal", "Num_Agents": "# de Agentes", "Number_of_messages": "Número de mensajes", diff --git a/packages/rocketchat-i18n/i18n/sq.i18n.json b/packages/rocketchat-i18n/i18n/sq.i18n.json index 1050a63016af..5fd532bb7f58 100644 --- a/packages/rocketchat-i18n/i18n/sq.i18n.json +++ b/packages/rocketchat-i18n/i18n/sq.i18n.json @@ -748,7 +748,7 @@ "Nothing": "asgjë", "Nothing_found": "Asgjë për të gjetur", "Notifications": "Njoftime", - "Notifications_Sound_Volume": "Notifications sound volume", + "Notifications_Sound_Volume": "Vëllimi i tingullit të njoftimeve", "Notify_all_in_this_room": "Njoftojë të gjithë në këtë dhomë", "Num_Agents": "# Agents", "Number_of_messages": "Numri i mesazheve", diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index acc11292155f..fe3b0d88c392 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -397,6 +397,7 @@ class ModelUsers extends RocketChat.models._Base { requirePasswordChangeReason } }; + return this.update(_id, update); } diff --git a/packages/rocketchat-lib/server/startup/settings.js b/packages/rocketchat-lib/server/startup/settings.js index 0379dd2d983d..d93b106c04f5 100644 --- a/packages/rocketchat-lib/server/startup/settings.js +++ b/packages/rocketchat-lib/server/startup/settings.js @@ -70,6 +70,7 @@ RocketChat.settings.addGroup('Accounts', function() { type: 'boolean', 'public': true }); + this.section('Registration', function() { this.add('Accounts_DefaultUsernamePrefixSuggestion', 'user', { type: 'string' diff --git a/packages/rocketchat-livechat/app/client/lib/_visitor.js b/packages/rocketchat-livechat/app/client/lib/_visitor.js index 08891024b22f..491af4746e66 100644 --- a/packages/rocketchat-livechat/app/client/lib/_visitor.js +++ b/packages/rocketchat-livechat/app/client/lib/_visitor.js @@ -59,7 +59,7 @@ this.visitor = new class { // notification sound if (Session.equals('sound', true) && msg.u._id !== Meteor.userId()) { const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; - const audio = $('#chatAudioNotification')[0]; + const audio = document.getElementById('chatAudioNotification'); audio.volume = Number((audioVolume/100).toPrecision(2)); audio.play(); } diff --git a/packages/rocketchat-slider/package.js b/packages/rocketchat-slider/package.js index 8120e6642c6e..8f6e4ea8e327 100644 --- a/packages/rocketchat-slider/package.js +++ b/packages/rocketchat-slider/package.js @@ -9,9 +9,8 @@ Package.describe({ Package.onUse(function(api) { api.use('ecmascript'); api.use('templating', 'client'); - api.use('fourseven:scss'); + api.use('rocketchat:theme'); - api.addFiles('rocketchat-slider.scss', 'client'); api.addFiles('rocketchat-slider.html', 'client'); api.addFiles('rocketchat-slider.js', 'client'); }); diff --git a/packages/rocketchat-slider/rocketchat-slider.js b/packages/rocketchat-slider/rocketchat-slider.js index d08bc6fafd36..26ddf0d9d360 100644 --- a/packages/rocketchat-slider/rocketchat-slider.js +++ b/packages/rocketchat-slider/rocketchat-slider.js @@ -1,6 +1,3 @@ -import './rocketchat-slider.scss'; -import './rocketchat-slider.html'; - Template.slider.onRendered(function() { const params = this.data; diff --git a/packages/rocketchat-slider/rocketchat-slider.scss b/packages/rocketchat-slider/rocketchat-slider.scss deleted file mode 100644 index 6ae9f885f617..000000000000 --- a/packages/rocketchat-slider/rocketchat-slider.scss +++ /dev/null @@ -1,112 +0,0 @@ -$shade-10: #04436a !default; -$shade-1: #d7dcdf !default; -$shade-0: #ffffff !default; -$teal: #1abc9c !default; - -* { - &, - &::before, - &::after { - box-sizing: border-box; - } -} - -$range-width: 100% !default; - -.range-slider { - margin: 0 0 0 0%; - width: $range-width; -} - -$range-handle-color: $shade-10 !default; -$range-handle-color-hover: $teal !default; -$range-handle-size: 20px !default; - -$range-track-color: $shade-1 !default; -$range-track-height: 10px !default; - -$range-label-color: $shade-10 !default; -$range-label-width: 60px !default; - -.range-slider__range { - -webkit-appearance: none; - width: calc(100% - (#{$range-label-width + 13px})); - height: $range-track-height; - border-radius: 5px; - background: $range-track-color; - outline: none; - padding: 0; - margin: 0; - - // Range Handle - &::-webkit-slider-thumb { - appearance: none; - width: $range-handle-size; - height: $range-handle-size; - border-radius: 50%; - background: $range-handle-color; - cursor: pointer; - transition: background 0.15s ease-in-out; - - &:hover { - background: $range-handle-color-hover; - } - } - - &:active::-webkit-slider-thumb { - background: $range-handle-color-hover; - } - - &::-moz-range-thumb { - width: $range-handle-size; - height: $range-handle-size; - border: 0; - border-radius: 50%; - background: $range-handle-color; - cursor: pointer; - transition: background 0.15s ease-in-out; - - &:hover { - background: $range-handle-color-hover; - } - } - - &:active::-moz-range-thumb { - background: $range-handle-color-hover; - } -} - -.range-slider__value { - display: inline-block; - position: relative; - width: $range-label-width; - color: $shade-0; - line-height: 20px; - text-align: center; - border-radius: 3px; - background: $range-label-color; - padding: 5px 10px; - margin-left: 8px; - - &::after { - position: absolute; - top: 8px; - left: -7px; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-right: 7px solid $range-label-color; - border-bottom: 7px solid transparent; - content: ''; - } -} - -::-moz-range-track { - background: $range-track-color; - border: 0; -} - -input::-moz-focus-inner, -input::-moz-focus-outer { - border: 0; -} diff --git a/packages/rocketchat-theme/client/imports/slider.css b/packages/rocketchat-theme/client/imports/slider.css new file mode 100644 index 000000000000..4bb54c5e7f2a --- /dev/null +++ b/packages/rocketchat-theme/client/imports/slider.css @@ -0,0 +1,72 @@ +*, +*::before, +*::after { + box-sizing: border-box; +} + +.range-slider { + margin: 0 0 0 0%; + width: 100%; +} + +.range-slider__range { + -webkit-appearance: none; + width: calc(100% - (73px)); + height: 10px; + border-radius: 5px; + outline: none; + padding: 0; + margin: 0; +} + +.range-slider__range::-webkit-slider-thumb { + -webkit-appearance: none; + width: 20px; + height: 20px; + border-radius: 50%; + cursor: pointer; + -webkit-transition: background 0.15s ease-in-out; + transition: background 0.15s ease-in-out; +} + +.range-slider__range::-moz-range-thumb { + width: 20px; + height: 20px; + border: 0; + border-radius: 50%; + cursor: pointer; + -webkit-transition: background 0.15s ease-in-out; + transition: background 0.15s ease-in-out; +} + +.range-slider__value { + display: inline-block; + position: relative; + width: 60px; + line-height: 20px; + text-align: center; + border-radius: 3px; + padding: 5px 10px; + margin-left: 8px; +} + +.range-slider__value::after { + position: absolute; + top: 8px; + left: -7px; + width: 0; + height: 0; + border-top: 7px solid; + border-right: 7px solid; + border-bottom: 7px solid; + content: ''; +} + +::-moz-range-track { + border: 0; +} + +input::-moz-focus-inner, +input::-moz-focus-outer { + border: 0; +} diff --git a/packages/rocketchat-theme/client/main.css b/packages/rocketchat-theme/client/main.css index f7b298262b52..dc3585a18e9f 100644 --- a/packages/rocketchat-theme/client/main.css +++ b/packages/rocketchat-theme/client/main.css @@ -5,4 +5,4 @@ @import 'imports/forms.css'; @import 'imports/base.css'; @import 'imports/rtl.css'; - +@import 'imports/slider.css'; diff --git a/packages/rocketchat-theme/client/vendor/jscolor.js b/packages/rocketchat-theme/client/vendor/jscolor.js index b7b6bd95233d..8d65d83740ef 100644 --- a/packages/rocketchat-theme/client/vendor/jscolor.js +++ b/packages/rocketchat-theme/client/vendor/jscolor.js @@ -619,7 +619,7 @@ var jsc = { switch (controlName) { case 'pad': - // if the rocketchat-slider is at the bottom, move it up + // if the slider is at the bottom, move it up switch (jsc.getSliderComponent(thisObj)) { case 's': if (thisObj.hsv[1] === 0) { thisObj.fromHSV(null, 100, null); }; break; case 'v': if (thisObj.hsv[2] === 0) { thisObj.fromHSV(null, null, 100); }; break; @@ -1387,10 +1387,10 @@ var jsc = { sldB : document.createElement('div'), // border sldM : document.createElement('div'), // mouse/touch area sldGrad : jsc.createSliderGradient(), - sldPtrS : document.createElement('div'), // rocketchat-slider pointer spacer - sldPtrIB : document.createElement('div'), // rocketchat-slider pointer inner border - sldPtrMB : document.createElement('div'), // rocketchat-slider pointer middle border - sldPtrOB : document.createElement('div'), // rocketchat-slider pointer outer border + sldPtrS : document.createElement('div'), // slider pointer spacer + sldPtrIB : document.createElement('div'), // slider pointer inner border + sldPtrMB : document.createElement('div'), // slider pointer middle border + sldPtrOB : document.createElement('div'), // slider pointer outer border btn : document.createElement('div'), btnT : document.createElement('span') // text }; @@ -1540,15 +1540,15 @@ var jsc = { p.crossLX.style.left = THIS.pointerBorderWidth + 'px'; - // rocketchat-slider + // slider p.sld.style.overflow = 'hidden'; p.sld.style.width = THIS.sliderSize + 'px'; p.sld.style.height = THIS.height + 'px'; - // rocketchat-slider gradient + // slider gradient p.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000'); - // rocketchat-slider border + // slider border p.sldB.style.display = displaySlider ? 'block' : 'none'; p.sldB.style.position = 'absolute'; p.sldB.style.right = THIS.padding + 'px'; @@ -1556,7 +1556,7 @@ var jsc = { p.sldB.style.border = THIS.insetWidth + 'px solid'; p.sldB.style.borderColor = THIS.insetColor; - // rocketchat-slider mouse area + // slider mouse area p.sldM._jscInstance = THIS; p.sldM._jscControlName = 'sld'; p.sldM.style.display = displaySlider ? 'block' : 'none'; @@ -1567,20 +1567,20 @@ var jsc = { p.sldM.style.height = dims[1] + 'px'; p.sldM.style.cursor = 'default'; - // rocketchat-slider pointer inner and outer border + // slider pointer inner and outer border p.sldPtrIB.style.border = p.sldPtrOB.style.border = THIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor; - // rocketchat-slider pointer outer border + // slider pointer outer border p.sldPtrOB.style.position = 'absolute'; p.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px'; p.sldPtrOB.style.top = '0'; - // rocketchat-slider pointer middle border + // slider pointer middle border p.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor; - // rocketchat-slider pointer spacer + // slider pointer spacer p.sldPtrS.style.width = THIS.sliderSize + 'px'; p.sldPtrS.style.height = sliderPtrSpace + 'px'; @@ -1655,7 +1655,7 @@ var jsc = { jsc.picker.cross.style.left = (x + ofs) + 'px'; jsc.picker.cross.style.top = (y + ofs) + 'px'; - // redraw the rocketchat-slider + // redraw the slider switch (jsc.getSliderComponent(THIS)) { case 's': var rgb1 = HSV_RGB(THIS.hsv[0], 100, THIS.hsv[2]); @@ -1686,7 +1686,7 @@ var jsc = { function redrawSld () { var sldComponent = jsc.getSliderComponent(THIS); if (sldComponent) { - // redraw the rocketchat-slider pointer + // redraw the slider pointer switch (sldComponent) { case 's': var yComponent = 1; break; case 'v': var yComponent = 2; break; diff --git a/packages/rocketchat-theme/server/colors.less b/packages/rocketchat-theme/server/colors.less index 0c191b7c3f1a..5a77602ac4f6 100755 --- a/packages/rocketchat-theme/server/colors.less +++ b/packages/rocketchat-theme/server/colors.less @@ -911,3 +911,50 @@ label.required::after { opacity: inherit; } } + +/** ---------------------------------------------------------------------------- + * Input Range Slider + */ + +.range-slider__range { + background-color: @tertiary-background-color; +} + +.range-slider__range::-webkit-slider-thumb { + background-color: @primary-background-color; +} + +.range-slider__range::-webkit-slider-thumb:hover { + background-color: darken(@success-color, 30%); +} + +.range-slider__range:active::-webkit-slider-thumb { + background-color: darken(@success-color, 10%); +} + +.range-slider__range::-moz-range-thumb { + background-color: @primary-background-color; +} + +.range-slider__range::-moz-range-thumb:hover { + background-color: darken(@success-color, 30%); +} + +.range-slider__range:active::-moz-range-thumb { + background-color: darken(@success-color, 10%); +} + +.range-slider__value { + color: lighten(@tertiary-background-color, 50%); + background-color: @primary-background-color; +} + +.range-slider__value::after { + border-top-color: transparent; + border-right-color: @primary-background-color; + border-bottom-color: transparent; +} + +::-moz-range-track { + background-color: @tertiary-background-color; +} From f269229ab635ada94b12449cd4006bdbbec28c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Thu, 27 Jul 2017 00:53:43 -0300 Subject: [PATCH 10/11] Solving requested changes by rodrigok and karlprieb at PR #7517 --- .meteor/versions | 1 - .../client/views/pushNotificationsFlexTab.js | 10 +++--- .../rocketchat-slider/rocketchat-slider.html | 4 +-- .../rocketchat-slider/rocketchat-slider.js | 2 +- .../client/imports/slider.css | 35 +++++++------------ packages/rocketchat-theme/server/colors.less | 22 +++++------- .../client/accountPreferences.js | 4 --- 7 files changed, 29 insertions(+), 49 deletions(-) diff --git a/.meteor/versions b/.meteor/versions index 56f9b2cad3f9..a1a798b5057e 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -44,7 +44,6 @@ email@1.2.3 emojione:emojione@3.0.3 facebook-oauth@1.3.2 fastclick@1.0.13 -fourseven:scss@4.5.4 francocatena:status@1.5.3 geojson-utils@1.0.10 github-oauth@1.2.0 diff --git a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js index 00aa7d165559..1251aa226576 100644 --- a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js +++ b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js @@ -257,14 +257,14 @@ Template.pushNotificationsFlexTab.events({ e.preventDefault(); let audio = $(e.currentTarget).data('play'); + const user = Meteor.user(); if (!audio || audio === 'none') { - audio = Meteor.user().settings.preferences.newMessageNotification || 'chime'; + audio = user && user.settings && user.settings.preferences && user.settings.preferences.newMessageNotification || 'chime'; } if (audio && audio !== 'none') { - - const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; + const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100; const $audio = $(`audio#${ audio }`); if ($audio && $audio[0] && $audio[0].play) { @@ -278,10 +278,10 @@ Template.pushNotificationsFlexTab.events({ e.preventDefault(); const audio = $(e.currentTarget).val(); + const user = Meteor.user(); if (audio && audio !== 'none') { - - const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; + const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100; const $audio = $(`audio#${ audio }`); if ($audio && $audio[0] && $audio[0].play) { diff --git a/packages/rocketchat-slider/rocketchat-slider.html b/packages/rocketchat-slider/rocketchat-slider.html index 9d43cfe7960f..067087ea23a8 100644 --- a/packages/rocketchat-slider/rocketchat-slider.html +++ b/packages/rocketchat-slider/rocketchat-slider.html @@ -1,6 +1,6 @@ diff --git a/packages/rocketchat-slider/rocketchat-slider.js b/packages/rocketchat-slider/rocketchat-slider.js index 26ddf0d9d360..49341e759006 100644 --- a/packages/rocketchat-slider/rocketchat-slider.js +++ b/packages/rocketchat-slider/rocketchat-slider.js @@ -4,7 +4,7 @@ Template.slider.onRendered(function() { const rangeSlider = function() { const range = $(`#${ params.id }`); - const labelValue = $(`#${ params.id }__value`); + const labelValue = $(`#${ params.id }_value`); labelValue.html(params.value); diff --git a/packages/rocketchat-theme/client/imports/slider.css b/packages/rocketchat-theme/client/imports/slider.css index 4bb54c5e7f2a..c2cdb16ac25b 100644 --- a/packages/rocketchat-theme/client/imports/slider.css +++ b/packages/rocketchat-theme/client/imports/slider.css @@ -1,17 +1,11 @@ -*, -*::before, -*::after { - box-sizing: border-box; -} - .range-slider { - margin: 0 0 0 0%; + margin: 0; width: 100%; } -.range-slider__range { - -webkit-appearance: none; - width: calc(100% - (73px)); +.range-slider-range { + appearance: none; + width: calc(100% - 73px); height: 10px; border-radius: 5px; outline: none; @@ -19,27 +13,25 @@ margin: 0; } -.range-slider__range::-webkit-slider-thumb { - -webkit-appearance: none; +.range-slider-range::-webkit-slider-thumb { + appearance: none; width: 20px; height: 20px; border-radius: 50%; cursor: pointer; - -webkit-transition: background 0.15s ease-in-out; transition: background 0.15s ease-in-out; } -.range-slider__range::-moz-range-thumb { +.range-slider-range::-moz-range-thumb { width: 20px; height: 20px; border: 0; border-radius: 50%; cursor: pointer; - -webkit-transition: background 0.15s ease-in-out; transition: background 0.15s ease-in-out; } -.range-slider__value { +.range-slider-value { display: inline-block; position: relative; width: 60px; @@ -50,7 +42,7 @@ margin-left: 8px; } -.range-slider__value::after { +.range-slider-value::after { position: absolute; top: 8px; left: -7px; @@ -62,11 +54,8 @@ content: ''; } -::-moz-range-track { - border: 0; -} - -input::-moz-focus-inner, -input::-moz-focus-outer { +.range-slider-range::-moz-range-track, +.range-slider-range::-moz-focus-inner, +.range-slider-range::-moz-focus-outer { border: 0; } diff --git a/packages/rocketchat-theme/server/colors.less b/packages/rocketchat-theme/server/colors.less index 5a77602ac4f6..1fdf5de45c1c 100755 --- a/packages/rocketchat-theme/server/colors.less +++ b/packages/rocketchat-theme/server/colors.less @@ -916,45 +916,41 @@ label.required::after { * Input Range Slider */ -.range-slider__range { - background-color: @tertiary-background-color; -} - -.range-slider__range::-webkit-slider-thumb { +.range-slider-range::-webkit-slider-thumb { background-color: @primary-background-color; } -.range-slider__range::-webkit-slider-thumb:hover { +.range-slider-range::-webkit-slider-thumb:hover { background-color: darken(@success-color, 30%); } -.range-slider__range:active::-webkit-slider-thumb { +.range-slider-range:active::-webkit-slider-thumb { background-color: darken(@success-color, 10%); } -.range-slider__range::-moz-range-thumb { +.range-slider-range::-moz-range-thumb { background-color: @primary-background-color; } -.range-slider__range::-moz-range-thumb:hover { +.range-slider-range::-moz-range-thumb:hover { background-color: darken(@success-color, 30%); } -.range-slider__range:active::-moz-range-thumb { +.range-slider-range:active::-moz-range-thumb { background-color: darken(@success-color, 10%); } -.range-slider__value { +.range-slider-value { color: lighten(@tertiary-background-color, 50%); background-color: @primary-background-color; } -.range-slider__value::after { +.range-slider-value::after { border-top-color: transparent; border-right-color: @primary-background-color; border-bottom-color: transparent; } -::-moz-range-track { +.range-slider-range::-moz-range-track { background-color: @tertiary-background-color; } diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index 29771f0793f1..ddaceedc71c8 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -1,6 +1,5 @@ /*globals defaultUserLanguage, KonchatNotification */ import toastr from 'toastr'; - Template.accountPreferences.helpers({ audioAssets() { return (RocketChat.CustomSounds && RocketChat.CustomSounds.getList && RocketChat.CustomSounds.getList()) || []; @@ -87,7 +86,6 @@ Template.accountPreferences.onCreated(function() { this.useEmojis = new ReactiveVar(user.settings.preferences.desktopNotificationDuration == null || user.settings.preferences.useEmojis); } let instance = this; - this.autorun(() => { if (instance.useEmojis && instance.useEmojis.get()) { Tracker.afterFlush(() => $('#convertAsciiEmoji').show()); @@ -95,11 +93,9 @@ Template.accountPreferences.onCreated(function() { Tracker.afterFlush(() => $('#convertAsciiEmoji').hide()); } }); - this.clearForm = function() { this.find('#language').value = localStorage.getItem('userLanguage'); }; - this.save = function() { instance = this; const data = {}; From 48cad72aa29e2068472e46bc76d86ee256d2bea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lindo=C3=A9lio=20L=C3=A1zaro?= Date: Thu, 27 Jul 2017 12:20:46 -0300 Subject: [PATCH 11/11] Solving requested changes by rodrigok at PR #7517 --- .../app/client/lib/_visitor.js | 2 +- .../rocketchat-ui/client/lib/notification.js | 73 +++++++++---------- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/packages/rocketchat-livechat/app/client/lib/_visitor.js b/packages/rocketchat-livechat/app/client/lib/_visitor.js index 491af4746e66..4439cd99953e 100644 --- a/packages/rocketchat-livechat/app/client/lib/_visitor.js +++ b/packages/rocketchat-livechat/app/client/lib/_visitor.js @@ -58,7 +58,7 @@ this.visitor = new class { // notification sound if (Session.equals('sound', true) && msg.u._id !== Meteor.userId()) { - const audioVolume = Meteor.user().settings.preferences.notificationsSoundVolume || 100; + const audioVolume = Meteor.user() && Meteor.user().settings && Meteor.user().settings.preferences && Meteor.user().settings.preferences.notificationsSoundVolume || 100; const audio = document.getElementById('chatAudioNotification'); audio.volume = Number((audioVolume/100).toPrecision(2)); audio.play(); diff --git a/packages/rocketchat-ui/client/lib/notification.js b/packages/rocketchat-ui/client/lib/notification.js index f2713d3d5037..e94ae6556a4a 100644 --- a/packages/rocketchat-ui/client/lib/notification.js +++ b/packages/rocketchat-ui/client/lib/notification.js @@ -79,26 +79,23 @@ const KonchatNotification = { newMessage(rid) { if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy')) { const user = Meteor.user(); + const newMessageNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newMessageNotification || 'chime'; + const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100; - if (user && user.settings && user.settings.preferences) { - const newMessageNotification = user.settings.preferences.newMessageNotification || 'chime'; - const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; + const sub = ChatSubscription.findOne({ rid }, { fields: { audioNotification: 1 } }); - const sub = ChatSubscription.findOne({ rid }, { fields: { audioNotification: 1 } }); - - if (sub && sub.audioNotification !== 'none') { - if (sub && sub.audioNotification) { - const [audio] = $(`audio#${ sub.audioNotification }`); - if (audio && audio.play) { - audio.volume = Number((audioVolume/100).toPrecision(2)); - return audio.play(); - } - } else if (newMessageNotification !== 'none') { - const [audio] = $(`audio#${ newMessageNotification }`); - if (audio && audio.play) { - audio.volume = Number((audioVolume/100).toPrecision(2)); - return audio.play(); - } + if (sub && sub.audioNotification !== 'none') { + if (sub && sub.audioNotification) { + const [audio] = $(`audio#${ sub.audioNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); + } + } else if (newMessageNotification !== 'none') { + const [audio] = $(`audio#${ newMessageNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); } } } @@ -129,29 +126,27 @@ const KonchatNotification = { Tracker.autorun(function() { const user = Meteor.user(); - if (user && user.settings && user.settings.preferences) { - const newRoomNotification = user.settings.preferences.newRoomNotification || 'door'; - const audioVolume = user.settings.preferences.notificationsSoundVolume || 100; - - if ((Session.get('newRoomSound') || []).length > 0) { - Tracker.nonreactive(function() { - if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy') && newRoomNotification !== 'none') { - const [audio] = $(`audio#${ newRoomNotification }`); - if (audio && audio.play) { - audio.volume = Number((audioVolume/100).toPrecision(2)); - return audio.play(); - } + const newRoomNotification = user && user.settings && user.settings.preferences && user.settings.preferences.newRoomNotification || 'door'; + const audioVolume = user && user.settings && user.settings.preferences && user.settings.preferences.notificationsSoundVolume || 100; + + if ((Session.get('newRoomSound') || []).length > 0) { + Tracker.nonreactive(function() { + if (!Session.equals(`user_${ Meteor.userId() }_status`, 'busy') && newRoomNotification !== 'none') { + const [audio] = $(`audio#${ newRoomNotification }`); + if (audio && audio.play) { + audio.volume = Number((audioVolume/100).toPrecision(2)); + return audio.play(); } - }); - } else { - const [room] = $(`audio#${ newRoomNotification }`); - if (!room) { - return; - } - if (room.pause) { - room.pause(); - return room.currentTime = 0; } + }); + } else { + const [room] = $(`audio#${ newRoomNotification }`); + if (!room) { + return; + } + if (room.pause) { + room.pause(); + return room.currentTime = 0; } } });