diff --git a/packages/rocketchat-lib/i18n/de.i18n.json b/packages/rocketchat-lib/i18n/de.i18n.json index eb63c53bde0..b468b8efd2a 100644 --- a/packages/rocketchat-lib/i18n/de.i18n.json +++ b/packages/rocketchat-lib/i18n/de.i18n.json @@ -183,6 +183,7 @@ "Client_Secret" : "Client-Secret", "close" : "Schließen", "Closed" : "Geschlossen", + "Collapse_Embedded_Media_By_Default": "Eingebettete Medien standardmäßig ausblenden", "coming_soon" : "kommt bald", "Commands" : "Befehle", "Compact_View" : "Kompaktansicht", @@ -1017,4 +1018,4 @@ "Your_Open_Source_solution" : "Deine eigene Open-Source-Chat-Lösung.", "Your_password_is_wrong" : "Falsches Passwort", "Your_push_was_sent_to_s_devices" : "Die Push-Nachricht wurde an %s Geräte gesendet." -} \ No newline at end of file +} diff --git a/packages/rocketchat-lib/i18n/en.i18n.json b/packages/rocketchat-lib/i18n/en.i18n.json index 47cad58a453..2b1f3439156 100644 --- a/packages/rocketchat-lib/i18n/en.i18n.json +++ b/packages/rocketchat-lib/i18n/en.i18n.json @@ -189,6 +189,7 @@ "Clients_will_refresh_in_a_few_seconds" : "Clients will refresh in a few seconds", "close" : "close", "Closed" : "Closed", + "Collapse_Embedded_Media_By_Default": "Collapse embedded media by default", "coming_soon" : "coming soon", "Commands" : "Commands", "Compact_View" : "Compact View", diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.coffee b/packages/rocketchat-message-attachments/client/messageAttachment.coffee index a7c9876ca9a..ef64e4365d4 100644 --- a/packages/rocketchat-message-attachments/client/messageAttachment.coffee +++ b/packages/rocketchat-message-attachments/client/messageAttachment.coffee @@ -13,7 +13,7 @@ Template.messageAttachment.helpers parsedText: -> renderMessageBody { msg: this.text } - showImage: -> + loadImage: -> if Meteor.user()?.settings?.preferences?.autoImageLoad is false and this.downloadImages? is not true return false @@ -31,3 +31,9 @@ Template.messageAttachment.helpers when 'warning' then return '#FCB316' when 'danger' then return '#D30230' else return @color + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-message-attachments/client/messageAttachment.html b/packages/rocketchat-message-attachments/client/messageAttachment.html index d7b8a365c4a..8105c024eb4 100644 --- a/packages/rocketchat-message-attachments/client/messageAttachment.html +++ b/packages/rocketchat-message-attachments/client/messageAttachment.html @@ -22,20 +22,23 @@ {{/if}} {{/if}} - {{#if title}} - {{#if title_link}} -
+
+ {{#if title_link}} {{title}} {{#if title_link_download}} {{/if}} -
{{else}} -
{{title}}
+ {{title}} + {{/if}} + {{#if collapsed}} + + {{else}} + {{/if}} +
{{/if}} -
{{#if thumb_url}}
@@ -51,8 +54,9 @@
{{#if image_url}} -
- {{#if showImage}} + {{#unless collapsed}} + +
+ {{/unless}} {{/if}} {{#if audio_url}} -
- -
+ {{#unless collapsed}} +
+ +
+ {{/unless}} {{/if}} {{#if video_url}} -
- -
+ {{#unless collapsed}} +
+ +
+ {{/unless}} {{/if}} {{#if fields}} diff --git a/packages/rocketchat-oembed/client/oembedAudioWidget.coffee b/packages/rocketchat-oembed/client/oembedAudioWidget.coffee new file mode 100644 index 00000000000..03756dc6da5 --- /dev/null +++ b/packages/rocketchat-oembed/client/oembedAudioWidget.coffee @@ -0,0 +1,7 @@ +Template.oembedAudioWidget.helpers + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedAudioWidget.html b/packages/rocketchat-oembed/client/oembedAudioWidget.html index 9130198ede8..1b5ef1da923 100644 --- a/packages/rocketchat-oembed/client/oembedAudioWidget.html +++ b/packages/rocketchat-oembed/client/oembedAudioWidget.html @@ -1,12 +1,17 @@ diff --git a/packages/rocketchat-oembed/client/oembedFrameWidget.coffee b/packages/rocketchat-oembed/client/oembedFrameWidget.coffee new file mode 100644 index 00000000000..d589454c1e8 --- /dev/null +++ b/packages/rocketchat-oembed/client/oembedFrameWidget.coffee @@ -0,0 +1,7 @@ +Template.oembedFrameWidget.helpers + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedFrameWidget.html b/packages/rocketchat-oembed/client/oembedFrameWidget.html index de1f2d79534..a9d9bb8e6ad 100644 --- a/packages/rocketchat-oembed/client/oembedFrameWidget.html +++ b/packages/rocketchat-oembed/client/oembedFrameWidget.html @@ -1,25 +1,32 @@ diff --git a/packages/rocketchat-oembed/client/oembedImageWidget.coffee b/packages/rocketchat-oembed/client/oembedImageWidget.coffee index 5a89715dc17..79444211117 100644 --- a/packages/rocketchat-oembed/client/oembedImageWidget.coffee +++ b/packages/rocketchat-oembed/client/oembedImageWidget.coffee @@ -1,5 +1,5 @@ Template.oembedImageWidget.helpers - showImage: -> + loadImage: -> if Meteor.user()?.settings?.preferences?.autoImageLoad is false and this.downloadImages? is not true return false @@ -8,3 +8,10 @@ Template.oembedImageWidget.helpers return false return true + + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedImageWidget.html b/packages/rocketchat-oembed/client/oembedImageWidget.html index 144dd766521..e6722a760ce 100644 --- a/packages/rocketchat-oembed/client/oembedImageWidget.html +++ b/packages/rocketchat-oembed/client/oembedImageWidget.html @@ -1,20 +1,23 @@ diff --git a/packages/rocketchat-oembed/client/oembedUrlWidget.coffee b/packages/rocketchat-oembed/client/oembedUrlWidget.coffee index af25e7464ed..b9effa91f1d 100644 --- a/packages/rocketchat-oembed/client/oembedUrlWidget.coffee +++ b/packages/rocketchat-oembed/client/oembedUrlWidget.coffee @@ -34,3 +34,9 @@ Template.oembedUrlWidget.helpers show: -> return getDescription(this)? or getTitle(this)? + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedVideoWidget.coffee b/packages/rocketchat-oembed/client/oembedVideoWidget.coffee index 65a616e4a02..399e57e57de 100644 --- a/packages/rocketchat-oembed/client/oembedVideoWidget.coffee +++ b/packages/rocketchat-oembed/client/oembedVideoWidget.coffee @@ -14,3 +14,9 @@ Template.oembedVideoWidget.helpers title: -> return getTitle @ + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedVideoWidget.html b/packages/rocketchat-oembed/client/oembedVideoWidget.html index 5377b5bf837..9d2c3dc9701 100644 --- a/packages/rocketchat-oembed/client/oembedVideoWidget.html +++ b/packages/rocketchat-oembed/client/oembedVideoWidget.html @@ -2,11 +2,16 @@ {{#if parsedUrl}}
{{parsedUrl.host}}
-
{{title}}
- + {{title}} + {{#if collapsed}} + + {{else}} +
+ + {{/if}}
{{/if}} diff --git a/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee b/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee new file mode 100644 index 00000000000..c848a17f455 --- /dev/null +++ b/packages/rocketchat-oembed/client/oembedYoutubeWidget.coffee @@ -0,0 +1,7 @@ +Template.oembedYoutubeWidget.helpers + + collapsed: -> + if this.collapsed? + return this.collapsed + else + return Meteor.user()?.settings?.preferences?.collapseMediaByDefault is true diff --git a/packages/rocketchat-oembed/client/oembedYoutubeWidget.html b/packages/rocketchat-oembed/client/oembedYoutubeWidget.html index b4007b8301a..f96719583b0 100644 --- a/packages/rocketchat-oembed/client/oembedYoutubeWidget.html +++ b/packages/rocketchat-oembed/client/oembedYoutubeWidget.html @@ -1,9 +1,14 @@ \ No newline at end of file + diff --git a/packages/rocketchat-oembed/package.js b/packages/rocketchat-oembed/package.js index e93c20f9d4a..2ab26579052 100644 --- a/packages/rocketchat-oembed/package.js +++ b/packages/rocketchat-oembed/package.js @@ -28,16 +28,19 @@ Package.onUse(function(api) { api.addFiles('client/oembedImageWidget.coffee', 'client'); api.addFiles('client/oembedAudioWidget.html', 'client'); + api.addFiles('client/oembedAudioWidget.coffee', 'client'); api.addFiles('client/oembedVideoWidget.html', 'client'); api.addFiles('client/oembedVideoWidget.coffee', 'client'); api.addFiles('client/oembedYoutubeWidget.html', 'client'); + api.addFiles('client/oembedYoutubeWidget.coffee', 'client'); api.addFiles('client/oembedUrlWidget.html', 'client'); api.addFiles('client/oembedUrlWidget.coffee', 'client'); api.addFiles('client/oembedFrameWidget.html', 'client'); + api.addFiles('client/oembedFrameWidget.coffee', 'client'); api.addFiles('server/server.coffee', 'server'); api.addFiles('server/providers.coffee', 'server'); diff --git a/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html b/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html index aefa8172fd8..d11214b612e 100644 --- a/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html +++ b/packages/rocketchat-spotify/lib/client/oembedSpotifyWidget.html @@ -3,11 +3,16 @@
Spotify
{{#if match meta.ogAudio "spotify:artist:\\S+"}} - {{{meta.ogTitle}}}
+ {{{meta.ogTitle}}} {{else}} - {{{replace meta.ogDescription ", an? (?:song|album) by (.+?) on Spotify" " - $1" regex=true}}}
+ {{{replace meta.ogDescription ", an? (?:song|album) by (.+?) on Spotify" " - $1" regex=true}}} + {{/if}} + {{#if collapsed}} + + {{else}} + +
{{/if}} -
{{/if}} diff --git a/packages/rocketchat-theme/assets/stylesheets/base.less b/packages/rocketchat-theme/assets/stylesheets/base.less index 6f25e83346d..9b3d88c108a 100644 --- a/packages/rocketchat-theme/assets/stylesheets/base.less +++ b/packages/rocketchat-theme/assets/stylesheets/base.less @@ -2817,8 +2817,8 @@ a.github-fork { } // .message-dropdown { - // top: 100%; - // left: 0; + // top: 100%; + // left: 0; // } &:hover { @@ -4765,3 +4765,16 @@ body:not(.is-cordova) { top: -5px; opacity: .6; } + +.collapse-switch { + cursor: pointer; +} + +// kinda hacky, needed in oembedFrageWidget.html +br.only-after-a { + display: none; +} + +a + br.only-after-a { + display: block; +} \ No newline at end of file diff --git a/packages/rocketchat-ui-account/account/accountPreferences.coffee b/packages/rocketchat-ui-account/account/accountPreferences.coffee index dcee173ddf4..91a328eef8a 100644 --- a/packages/rocketchat-ui-account/account/accountPreferences.coffee +++ b/packages/rocketchat-ui-account/account/accountPreferences.coffee @@ -67,6 +67,7 @@ Template.accountPreferences.onCreated -> data.useEmojis = $('input[name=useEmojis]:checked').val() data.convertAsciiEmoji = $('input[name=convertAsciiEmoji]:checked').val() data.saveMobileBandwidth = $('input[name=saveMobileBandwidth]:checked').val() + data.collapseMediaByDefault = $('input[name=collapseMediaByDefault]:checked').val() data.compactView = $('input[name=compactView]:checked').val() data.unreadRoomsMode = $('input[name=unreadRoomsMode]:checked').val() data.autoImageLoad = $('input[name=autoImageLoad]:checked').val() diff --git a/packages/rocketchat-ui-account/account/accountPreferences.html b/packages/rocketchat-ui-account/account/accountPreferences.html index a361d811259..ab267d83428 100644 --- a/packages/rocketchat-ui-account/account/accountPreferences.html +++ b/packages/rocketchat-ui-account/account/accountPreferences.html @@ -70,6 +70,13 @@
+
+ +
+ + +
+
diff --git a/packages/rocketchat-ui/views/app/room.coffee b/packages/rocketchat-ui/views/app/room.coffee index 49ed9c6e635..effe492f795 100644 --- a/packages/rocketchat-ui/views/app/room.coffee +++ b/packages/rocketchat-ui/views/app/room.coffee @@ -418,6 +418,14 @@ Template.room.events ChatMessage.update {_id: this._arguments[1]._id, 'urls.url': $(event.currentTarget).data('url')}, {$set: {'urls.$.downloadImages': true}} ChatMessage.update {_id: this._arguments[1]._id, 'attachments.image_url': $(event.currentTarget).data('url')}, {$set: {'attachments.$.downloadImages': true}} + 'click .collapse-switch': (e) -> + url = $(e.currentTarget).data('url') + collapsed = $(e.currentTarget).data('collapsed') + id = @_arguments[1]._id + ChatMessage.update {_id: id, 'urls.url': url}, {$set: {'urls.$.collapsed': !collapsed}} + for type in ['image_url', 'audio_url', 'video_url'] + ChatMessage.update {_id: id, "attachments.#{type}": url}, {$set: {'attachments.$.collapsed': !collapsed}} + 'dragenter .dropzone': (e) -> e.currentTarget.classList.add 'over' diff --git a/server/methods/saveUserPreferences.coffee b/server/methods/saveUserPreferences.coffee index 9480a6f48cd..2429f83144b 100644 --- a/server/methods/saveUserPreferences.coffee +++ b/server/methods/saveUserPreferences.coffee @@ -21,6 +21,9 @@ Meteor.methods if settings.saveMobileBandwidth? preferences.saveMobileBandwidth = if settings.saveMobileBandwidth is "1" then true else false + if settings.collapseMediaByDefault? + preferences.collapseMediaByDefault = if settings.collapseMediaByDefault is "1" then true else false + if settings.compactView? preferences.compactView = if settings.compactView is "1" then true else false