From 335b08c433f41aaa2d8990caa98230fc4dc66b1f Mon Sep 17 00:00:00 2001 From: Lucas Vanhalst Date: Sat, 5 Nov 2016 02:09:44 +0100 Subject: [PATCH 01/23] feat(OEmbed): Clear OEmbed cache after user-defined amount of time Should help keeping the database/backups a bit smaller. --- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + .../rocketchat-lib/server/startup/settings.coffee | 1 + .../server/models/OEmbedCache.coffee | 8 ++++++++ server/startup/cron.coffee | 13 +++++++++++++ 4 files changed, 23 insertions(+) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 8c8cd4ef2f6..ed0665b63ca 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -153,6 +153,7 @@ "API_Analytics": "Analytics", "API_Embed": "Embed Link Previews", "API_Embed_Description": "Whether embedded link previews are enabled or not when a user posts a link to a website.", + "API_EmbedCacheExpirationDays": "Embed cache expiration days", "API_EmbedDisabledFor": "Disable Embed for Users", "API_EmbedDisabledFor_Description": "Comma-separated list of usernames to disable the embedded link previews.", "API_EmbedIgnoredHosts": "Embed Ignored Hosts", diff --git a/packages/rocketchat-lib/server/startup/settings.coffee b/packages/rocketchat-lib/server/startup/settings.coffee index 0481211e144..7e017f71b17 100644 --- a/packages/rocketchat-lib/server/startup/settings.coffee +++ b/packages/rocketchat-lib/server/startup/settings.coffee @@ -185,6 +185,7 @@ RocketChat.settings.addGroup 'Message', -> @add 'Message_AudioRecorderEnabled', true, { type: 'boolean', public: true, i18nDescription: 'Message_AudioRecorderEnabledDescription' } @add 'Message_GroupingPeriod', 300, { type: 'int', public: true, i18nDescription: 'Message_GroupingPeriodDescription' } @add 'API_Embed', true, { type: 'boolean', public: true } + @add 'API_EmbedCacheExpirationDays', 30, { type: 'int', public: false } @add 'API_EmbedDisabledFor', '', { type: 'string', public: true, i18nDescription: 'API_EmbedDisabledFor_Description' } @add 'API_EmbedIgnoredHosts', 'localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16', { type: 'string', i18nDescription: 'API_EmbedIgnoredHosts_Description' } @add 'API_EmbedSafePorts', '80, 443', { type: 'string' } diff --git a/packages/rocketchat-oembed/server/models/OEmbedCache.coffee b/packages/rocketchat-oembed/server/models/OEmbedCache.coffee index 251eb3b6e6a..cdf8fbfbf27 100644 --- a/packages/rocketchat-oembed/server/models/OEmbedCache.coffee +++ b/packages/rocketchat-oembed/server/models/OEmbedCache.coffee @@ -1,6 +1,7 @@ RocketChat.models.OEmbedCache = new class extends RocketChat.models._Base constructor: -> super('oembed_cache') + @tryEnsureIndex { 'updatedAt': 1 } # FIND ONE @@ -20,3 +21,10 @@ RocketChat.models.OEmbedCache = new class extends RocketChat.models._Base record._id = @insert record return record + + # REMOVE + removeAfterDate: (date) -> + query = + updatedAt: + $lte: date + @remove query diff --git a/server/startup/cron.coffee b/server/startup/cron.coffee index dee6a59e444..f4a4391bc96 100644 --- a/server/startup/cron.coffee +++ b/server/startup/cron.coffee @@ -17,6 +17,12 @@ generateStatistics = -> logger.warn('Failed to send usage report') return +cacheCleanup = -> + date = new Date() + expirationDays = RocketChat.settings.get 'API_EmbedCacheExpirationDays' + date.setDate(date.getDate() - expirationDays) + RocketChat.models.OEmbedCache.removeAfterDate date + Meteor.startup -> Meteor.defer -> generateStatistics() @@ -28,4 +34,11 @@ Meteor.startup -> return parser.cron new Date().getMinutes() + ' * * * *' job: generateStatistics + SyncedCron.add + name: 'Cleanup OEmbed cache' + schedule: (parser) -> + now = new Date() + return parser.cron now.getMinutes() + ' ' + now.getHours() + ' * * *' + job: cacheCleanup + SyncedCron.start() From e95495555073f7faca81caea6da8c2d5e7a74c4a Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 14 Nov 2016 16:35:19 -0200 Subject: [PATCH 02/23] added option to disable file uploads in direct messages --- packages/rocketchat-file-upload/lib/FileUpload.js | 8 +++++++- .../rocketchat-file-upload/server/startup/settings.js | 5 +++++ packages/rocketchat-i18n/i18n/en.i18n.json | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-file-upload/lib/FileUpload.js b/packages/rocketchat-file-upload/lib/FileUpload.js index 8511b7a3e62..1891ee572f0 100644 --- a/packages/rocketchat-file-upload/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/lib/FileUpload.js @@ -13,11 +13,17 @@ FileUpload = { const user = Meteor.user(); const room = RocketChat.models.Rooms.findOneById(file.rid); + const directMessageAllow = RocketChat.settings.get('FileUpload_Enabled_Direct'); if (RocketChat.authz.canAccessRoom(room, user) !== true) { return false; } + if (!directMessageAllow && room.t === "d") { + const reason = TAPi18n.__('File_not_allowed_direct_messages', user.language); + throw new Meteor.Error('error-invalid-file-type', reason); + } + if (file.size > maxFileSize) { const reason = TAPi18n.__('File_exceeds_allowed_size_of_bytes', { size: filesize(maxFileSize) @@ -36,4 +42,4 @@ FileUpload = { RocketChat.settings.get('FileUpload_MaxFileSize', function(key, value) { maxFileSize = value; -}); +}); \ No newline at end of file diff --git a/packages/rocketchat-file-upload/server/startup/settings.js b/packages/rocketchat-file-upload/server/startup/settings.js index a947d747847..8e51b3fb407 100644 --- a/packages/rocketchat-file-upload/server/startup/settings.js +++ b/packages/rocketchat-file-upload/server/startup/settings.js @@ -106,4 +106,9 @@ RocketChat.settings.addGroup('FileUpload', function() { } }); }); + + this.add('FileUpload_Enabled_Direct', true, { + type: 'boolean', + public: true + }); }); diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index a5c4c0fb87a..c8d6790a5dc 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -479,9 +479,11 @@ "Field_removed": "Field removed", "Field_required": "Field required", "File_exceeds_allowed_size_of_bytes": "File exceeds allowed size of __size__.", + "File_not_allowed_direct_messages": "File sharing not allowed in direct messages.", "File_type_is_not_accepted": "File type is not accepted.", "FileUpload": "File Upload", "FileUpload_Enabled": "File Uploads Enabled", + "FileUpload_Enabled_Direct": "File Uploads Enabled in Direct Messages ", "FileUpload_File_Empty": "File empty", "FileUpload_FileSystemPath": "System Path", "FileUpload_MaxFileSize": "Maximum File Upload Size (in bytes)", From dad946012c8077ce8cc6633b188ab33c19618464 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 14 Nov 2016 16:55:01 -0200 Subject: [PATCH 03/23] added the feature to hide the file sharing btn and some fixes --- packages/rocketchat-file-upload/lib/FileUpload.js | 4 ++-- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + .../rocketchat-ui-message/message/messageBox.coffee | 7 +++++++ .../rocketchat-ui-message/message/messageBox.html | 11 +++++++---- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/rocketchat-file-upload/lib/FileUpload.js b/packages/rocketchat-file-upload/lib/FileUpload.js index 1891ee572f0..da6b72b65b4 100644 --- a/packages/rocketchat-file-upload/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/lib/FileUpload.js @@ -19,9 +19,9 @@ FileUpload = { return false; } - if (!directMessageAllow && room.t === "d") { + if (!directMessageAllow && room.t === 'd') { const reason = TAPi18n.__('File_not_allowed_direct_messages', user.language); - throw new Meteor.Error('error-invalid-file-type', reason); + throw new Meteor.Error('error-direct-message-not-allowed', reason); } if (file.size > maxFileSize) { diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index c8d6790a5dc..b7803a78400 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -425,6 +425,7 @@ "error-invalid-email": "Invalid email __email__", "error-invalid-file-height": "Invalid file height", "error-invalid-file-type": "Invalid file type", + "error-direct-message-not-allowed": "File sharing not allowed in direct messages", "error-invalid-file-width": "Invalid file width", "error-invalid-from-address": "You informed an invalid FROM address.", "error-invalid-integration": "Invalid integration", diff --git a/packages/rocketchat-ui-message/message/messageBox.coffee b/packages/rocketchat-ui-message/message/messageBox.coffee index 21384e0b924..332dd9317f5 100644 --- a/packages/rocketchat-ui-message/message/messageBox.coffee +++ b/packages/rocketchat-ui-message/message/messageBox.coffee @@ -86,6 +86,13 @@ Template.messageBox.helpers if not Template.instance().isMessageFieldEmpty.get() return 'show-send' + showFileUpload: -> + roomData = Session.get('roomData' + this._id) + if roomData?.t is 'd' + return RocketChat.settings.get('FileUpload_Enabled_Direct') + else + return true + showLocation: -> return RocketChat.Geolocation.get() isnt false diff --git a/packages/rocketchat-ui-message/message/messageBox.html b/packages/rocketchat-ui-message/message/messageBox.html index 0312fc16453..80a3ac1d837 100644 --- a/packages/rocketchat-ui-message/message/messageBox.html +++ b/packages/rocketchat-ui-message/message/messageBox.html @@ -13,10 +13,13 @@ {{#unless showSend}} -
- - -
+ {{#if showFileUpload}} +
+ + +
+ {{/if}} + {{#if showSandstorm}}
From e564dcbd0cf3b7d7b2e3f2cced311b273c32126f Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 14 Nov 2016 16:58:51 -0200 Subject: [PATCH 04/23] quick fix on the i18n --- packages/rocketchat-file-upload/lib/FileUpload.js | 2 +- packages/rocketchat-i18n/i18n/en.i18n.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-file-upload/lib/FileUpload.js b/packages/rocketchat-file-upload/lib/FileUpload.js index da6b72b65b4..beeef7cb91e 100644 --- a/packages/rocketchat-file-upload/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/lib/FileUpload.js @@ -21,7 +21,7 @@ FileUpload = { if (!directMessageAllow && room.t === 'd') { const reason = TAPi18n.__('File_not_allowed_direct_messages', user.language); - throw new Meteor.Error('error-direct-message-not-allowed', reason); + throw new Meteor.Error('error-direct-message-file-upload-not-allowed', reason); } if (file.size > maxFileSize) { diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index b7803a78400..2e06be08a5f 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -425,7 +425,7 @@ "error-invalid-email": "Invalid email __email__", "error-invalid-file-height": "Invalid file height", "error-invalid-file-type": "Invalid file type", - "error-direct-message-not-allowed": "File sharing not allowed in direct messages", + "error-direct-message-file-upload-not-allowed": "File sharing not allowed in direct messages", "error-invalid-file-width": "Invalid file width", "error-invalid-from-address": "You informed an invalid FROM address.", "error-invalid-integration": "Invalid integration", From 463fdcc83e980797ed33afca11ccc1d1c677907b Mon Sep 17 00:00:00 2001 From: Lucas Vanhalst Date: Tue, 15 Nov 2016 20:13:53 +0100 Subject: [PATCH 05/23] Add 'clear OEmbed cache now' button --- packages/rocketchat-i18n/i18n/en.i18n.json | 3 +++ .../server/startup/settings.coffee | 1 + server/methods/OEmbedCacheCleanup.js | 17 +++++++++++++++++ server/startup/cron.coffee | 9 +++------ 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 server/methods/OEmbedCacheCleanup.js diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index ed0665b63ca..5557d0c192c 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -228,6 +228,7 @@ "busy_male": "busy", "Busy_male": "Busy", "by": "by", + "cache_cleared": "Cache cleared", "Cancel": "Cancel", "Cancel_message_input": "Cancel", "Cannot_invite_users_to_direct_rooms": "Cannot invite users to direct rooms", @@ -271,6 +272,8 @@ "Choose_messages": "Choose messages", "Choose_the_alias_that_will_appear_before_the_username_in_messages": "Choose the alias that will appear before the username in messages.", "Choose_the_username_that_this_integration_will_post_as": "Choose the username that this integration will post as.", + "clear": "Clear", + "clear_cache_now": "Clear cache now", "Clear_all_unreads_question": "Clear all unreads?", "Click_here": "Click here", "Client_ID": "Client ID", diff --git a/packages/rocketchat-lib/server/startup/settings.coffee b/packages/rocketchat-lib/server/startup/settings.coffee index 7e017f71b17..c7224e3b77b 100644 --- a/packages/rocketchat-lib/server/startup/settings.coffee +++ b/packages/rocketchat-lib/server/startup/settings.coffee @@ -186,6 +186,7 @@ RocketChat.settings.addGroup 'Message', -> @add 'Message_GroupingPeriod', 300, { type: 'int', public: true, i18nDescription: 'Message_GroupingPeriodDescription' } @add 'API_Embed', true, { type: 'boolean', public: true } @add 'API_EmbedCacheExpirationDays', 30, { type: 'int', public: false } + @add 'API_Embed_clear_cache_now', 'OEmbedCacheCleanup', { type: 'action', actionText: 'clear', i18nLabel: 'clear_cache_now' } @add 'API_EmbedDisabledFor', '', { type: 'string', public: true, i18nDescription: 'API_EmbedDisabledFor_Description' } @add 'API_EmbedIgnoredHosts', 'localhost, 127.0.0.1, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16', { type: 'string', i18nDescription: 'API_EmbedIgnoredHosts_Description' } @add 'API_EmbedSafePorts', '80, 443', { type: 'string' } diff --git a/server/methods/OEmbedCacheCleanup.js b/server/methods/OEmbedCacheCleanup.js new file mode 100644 index 00000000000..82d0fb68cf0 --- /dev/null +++ b/server/methods/OEmbedCacheCleanup.js @@ -0,0 +1,17 @@ +Meteor.methods({ + OEmbedCacheCleanup: function() { + if (Meteor.userId() && !RocketChat.authz.hasRole(Meteor.userId(), 'admin')) { + throw new Meteor.Error('error-not-allowed', 'Not allowed', { + method: 'OEmbedCacheCleanup' + }); + } + + var date = new Date(); + var expirationDays = RocketChat.settings.get('API_EmbedCacheExpirationDays'); + date.setDate(date.getDate() - expirationDays); + RocketChat.models.OEmbedCache.removeAfterDate(date); + return { + message: 'cache_cleared' + }; + } +}); \ No newline at end of file diff --git a/server/startup/cron.coffee b/server/startup/cron.coffee index f4a4391bc96..41abfda37be 100644 --- a/server/startup/cron.coffee +++ b/server/startup/cron.coffee @@ -17,11 +17,8 @@ generateStatistics = -> logger.warn('Failed to send usage report') return -cacheCleanup = -> - date = new Date() - expirationDays = RocketChat.settings.get 'API_EmbedCacheExpirationDays' - date.setDate(date.getDate() - expirationDays) - RocketChat.models.OEmbedCache.removeAfterDate date +cleanupOEmbedCache = -> + Meteor.call('OEmbedCacheCleanup') Meteor.startup -> Meteor.defer -> @@ -39,6 +36,6 @@ Meteor.startup -> schedule: (parser) -> now = new Date() return parser.cron now.getMinutes() + ' ' + now.getHours() + ' * * *' - job: cacheCleanup + job: cleanupOEmbedCache SyncedCron.start() From f6d4e4fbedb2fa7cd24eaf7efe9e2ed7ce8e2452 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Fri, 18 Nov 2016 11:20:14 -0500 Subject: [PATCH 06/23] serve theme.css through WebApp.rawConnectHandlers --- packages/rocketchat-theme/server/server.coffee | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/rocketchat-theme/server/server.coffee b/packages/rocketchat-theme/server/server.coffee index 73b334ec3fe..d493a7ac9fe 100644 --- a/packages/rocketchat-theme/server/server.coffee +++ b/packages/rocketchat-theme/server/server.coffee @@ -8,17 +8,23 @@ logger = new Logger 'rocketchat:theme', type: 'info' +WebApp.rawConnectHandlers.use (req, res, next) -> + path = req.url.split("?")[0]; + if (path == '/__cordova/theme.css' || path == '/theme.css') + css = RocketChat.theme.getCss() + hash = crypto.createHash('sha1').update(css).digest('hex') + res.setHeader('Content-Type', 'text/css; charset=UTF-8') + res.setHeader('ETag', '"' + hash + '"') + res.write(css) + res.end(); + else + next() + calculateClientHash = WebAppHashing.calculateClientHash WebAppHashing.calculateClientHash = (manifest, includeFilter, runtimeConfigOverride) -> css = RocketChat.theme.getCss() if css.trim() isnt '' - WebAppInternals.staticFiles['/__cordova/theme.css'] = WebAppInternals.staticFiles['/theme.css'] = - cacheable: true - sourceMapUrl: undefined - type: 'css' - content: css - hash = crypto.createHash('sha1').update(css).digest('hex') themeManifestItem = _.find manifest, (item) -> return item.path is 'app/theme.css' From 069110a8e3bced64ecd0be7deaed71ba5585c2ca Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Fri, 18 Nov 2016 14:39:58 -0500 Subject: [PATCH 07/23] delete extraneous semicolons --- packages/rocketchat-theme/server/server.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-theme/server/server.coffee b/packages/rocketchat-theme/server/server.coffee index d493a7ac9fe..062339faf80 100644 --- a/packages/rocketchat-theme/server/server.coffee +++ b/packages/rocketchat-theme/server/server.coffee @@ -9,14 +9,14 @@ logger = new Logger 'rocketchat:theme', WebApp.rawConnectHandlers.use (req, res, next) -> - path = req.url.split("?")[0]; + path = req.url.split("?")[0] if (path == '/__cordova/theme.css' || path == '/theme.css') css = RocketChat.theme.getCss() hash = crypto.createHash('sha1').update(css).digest('hex') res.setHeader('Content-Type', 'text/css; charset=UTF-8') res.setHeader('ETag', '"' + hash + '"') res.write(css) - res.end(); + res.end() else next() From c257a5654e173a749928ef6abf759e2110000470 Mon Sep 17 00:00:00 2001 From: Alex Brazier Date: Sat, 19 Nov 2016 16:59:56 +0000 Subject: [PATCH 08/23] Fix windows issues on startup --- packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json | 4 ++-- packages/rocketchat-cas/package.js | 2 +- packages/rocketchat-i18n/package.js | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json index 7d1d73b53c3..a309abf87b3 100644 --- a/packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json +++ b/packages/rocketchat-cas/.npm/package/npm-shrinkwrap.json @@ -7,8 +7,8 @@ }, "cas": { "version": "0.0.5", - "resolved": "git+https://github.com/kcbanner/node-cas.git#fcd27dad333223b3b75a048bce27973fb3ca0f62", - "from": "cas@git+https://github.com/kcbanner/node-cas#fcd27dad333223b3b75a048bce27973fb3ca0f62" + "resolved": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62", + "from": "https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62" }, "cheerio": { "version": "0.19.0", diff --git a/packages/rocketchat-cas/package.js b/packages/rocketchat-cas/package.js index d1f75b1b08d..b584f5f9a92 100644 --- a/packages/rocketchat-cas/package.js +++ b/packages/rocketchat-cas/package.js @@ -27,5 +27,5 @@ Package.onUse(function(api) { }); Npm.depends({ - cas: 'git+https://github.com/kcbanner/node-cas#fcd27dad333223b3b75a048bce27973fb3ca0f62' + cas: 'https://github.com/kcbanner/node-cas/tarball/fcd27dad333223b3b75a048bce27973fb3ca0f62' }); diff --git a/packages/rocketchat-i18n/package.js b/packages/rocketchat-i18n/package.js index 3fbf409a726..de361dc9104 100644 --- a/packages/rocketchat-i18n/package.js +++ b/packages/rocketchat-i18n/package.js @@ -9,8 +9,9 @@ Package.onUse(function(api) { api.use('templating', 'client'); var fs = Npm.require('fs'); - fs.readdirSync(process.env.PWD + '/packages/rocketchat-i18n/i18n').forEach(function(filename) { - if (filename.indexOf('.json') > -1 && fs.statSync(process.env.PWD + '/packages/rocketchat-i18n/i18n/' + filename).size > 16) { + var workingDir = process.env.PWD || '.'; + fs.readdirSync(workingDir + '/packages/rocketchat-i18n/i18n').forEach(function(filename) { + if (filename.indexOf('.json') > -1 && fs.statSync(workingDir + '/packages/rocketchat-i18n/i18n/' + filename).size > 16) { api.addFiles('i18n/' + filename); } }); From 7367e2b93e0a8ea5a8fb02908dea76007e5cc57b Mon Sep 17 00:00:00 2001 From: Marcelo Schmidt Date: Mon, 21 Nov 2016 11:13:43 -0200 Subject: [PATCH 09/23] Fix border style of inputs --- packages/rocketchat-theme/assets/stylesheets/base.less | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/rocketchat-theme/assets/stylesheets/base.less b/packages/rocketchat-theme/assets/stylesheets/base.less index da66eb31f7a..20432850359 100644 --- a/packages/rocketchat-theme/assets/stylesheets/base.less +++ b/packages/rocketchat-theme/assets/stylesheets/base.less @@ -493,6 +493,7 @@ input[type='time'] { position: relative; width: 100%; outline: none; + border-style: solid; } input.input-forward { From 12a4ed9ef93884ddd127d8f10c81d801d1532389 Mon Sep 17 00:00:00 2001 From: Huljo Date: Mon, 21 Nov 2016 14:48:57 +0100 Subject: [PATCH 10/23] #4807 Fix hubot-help path --- packages/rocketchat-internal-hubot/hubot.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rocketchat-internal-hubot/hubot.coffee b/packages/rocketchat-internal-hubot/hubot.coffee index 9a258ef681f..9dbc5adf026 100644 --- a/packages/rocketchat-internal-hubot/hubot.coffee +++ b/packages/rocketchat-internal-hubot/hubot.coffee @@ -154,7 +154,7 @@ class HubotScripts for modulePath in modulesToLoad try Npm.require(modulePath)(robot) - robot.parseHelp __meteor_bootstrap__.serverDir+'/npm/rocketchat_internal-hubot/node_modules/'+modulePath + robot.parseHelp __meteor_bootstrap__.serverDir+'/npm/node_modules/meteor/rocketchat_internal-hubot/node_modules/'+modulePath console.log "Loaded #{modulePath}".green catch e console.log "can't load #{modulePath}".red From 6d377322e0f815078ac4534a75929fb397cba11f Mon Sep 17 00:00:00 2001 From: Olivier Lafleur Date: Mon, 21 Nov 2016 08:49:16 -0500 Subject: [PATCH 11/23] Update Autolinker to 1.3.2 --- packages/rocketchat-autolinker/package.js | 2 +- packages/rocketchat-livechat/app/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rocketchat-autolinker/package.js b/packages/rocketchat-autolinker/package.js index 619216d85ae..eca73cbc98c 100644 --- a/packages/rocketchat-autolinker/package.js +++ b/packages/rocketchat-autolinker/package.js @@ -6,7 +6,7 @@ Package.describe({ }); Npm.depends({ - autolinker: '1.2.0' + autolinker: '1.3.2' }); Package.onUse(function(api) { diff --git a/packages/rocketchat-livechat/app/package.json b/packages/rocketchat-livechat/app/package.json index ce4767e630c..1f43869f581 100644 --- a/packages/rocketchat-livechat/app/package.json +++ b/packages/rocketchat-livechat/app/package.json @@ -20,7 +20,7 @@ "email": "support@rocket.chat" }, "dependencies": { - "autolinker": "^1.2.1", + "autolinker": "^1.3.2", "babel-runtime": "^6.18.0" } } From ca4eb6e541782a253e19b9fbecc1ca22083efe78 Mon Sep 17 00:00:00 2001 From: Marcelo Schmidt Date: Mon, 21 Nov 2016 12:11:39 -0200 Subject: [PATCH 12/23] Default button colors and font-weight --- packages/rocketchat-theme/assets/stylesheets/base.less | 2 +- .../assets/stylesheets/utils/_colors.import.less | 6 ++++-- packages/rocketchat-ui-flextab/flex-tab/tabs/userEdit.html | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/rocketchat-theme/assets/stylesheets/base.less b/packages/rocketchat-theme/assets/stylesheets/base.less index 20432850359..40845dda529 100644 --- a/packages/rocketchat-theme/assets/stylesheets/base.less +++ b/packages/rocketchat-theme/assets/stylesheets/base.less @@ -596,7 +596,7 @@ label.required:after { &:extend(.unselectable); display: inline-block; padding: 9px 12px; - font-weight: 600; + font-weight: 500; font-size: 14px; text-align: center; text-transform: uppercase; diff --git a/packages/rocketchat-theme/assets/stylesheets/utils/_colors.import.less b/packages/rocketchat-theme/assets/stylesheets/utils/_colors.import.less index d77e10f5011..cac3ad22cd8 100755 --- a/packages/rocketchat-theme/assets/stylesheets/utils/_colors.import.less +++ b/packages/rocketchat-theme/assets/stylesheets/utils/_colors.import.less @@ -3,7 +3,9 @@ */ @primary-action-color: @action-buttons-color; -@secondary-action-color: @primary-font-color; +@secondary-action-color: lighten(@primary-action-color, 25%); +@default-action-color: darken(@secondary-background-color, 15%); +@default-action-contrast: contrast(@default-action-color, #444); @success-color: rgba(53, 172, 25, 1.0); @error-color: rgba(188, 32, 49, 1.0); @pending-color: #fcb316; @@ -229,7 +231,7 @@ label.required:after { // new layout buttons .button { - .buttonColors(@secondary-action-contrast, @secondary-action-color); + .buttonColors(@default-action-contrast, @default-action-color); &.primary { .buttonColors(@primary-action-contrast, @primary-action-color); } diff --git a/packages/rocketchat-ui-flextab/flex-tab/tabs/userEdit.html b/packages/rocketchat-ui-flextab/flex-tab/tabs/userEdit.html index 8aeb4fab0dd..7fd15324403 100644 --- a/packages/rocketchat-ui-flextab/flex-tab/tabs/userEdit.html +++ b/packages/rocketchat-ui-flextab/flex-tab/tabs/userEdit.html @@ -31,7 +31,7 @@
- +