diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-06 21:13:12 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-03-06 21:13:12 -0500 |
commit | e87f5c6cf912a4f650a056ee042f19268963177d (patch) | |
tree | 5bd573a645e8a3931ca2ee7131cac75d58871a5f /webapp | |
parent | f99658152ac2e188d8196758ef5c635eaa3b3ae7 (diff) | |
download | chat-e87f5c6cf912a4f650a056ee042f19268963177d.tar.gz chat-e87f5c6cf912a4f650a056ee042f19268963177d.tar.bz2 chat-e87f5c6cf912a4f650a056ee042f19268963177d.zip |
Add system console switch for enabling link previews (#5663)
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/actions/global_actions.jsx | 4 | ||||
-rw-r--r-- | webapp/components/admin_console/admin_sidebar.jsx | 10 | ||||
-rw-r--r-- | webapp/components/admin_console/link_previews_settings.jsx | 66 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_advanced.jsx | 17 | ||||
-rw-r--r-- | webapp/i18n/en.json | 4 | ||||
-rw-r--r-- | webapp/routes/route_admin_console.jsx | 5 |
6 files changed, 100 insertions, 6 deletions
diff --git a/webapp/actions/global_actions.jsx b/webapp/actions/global_actions.jsx index c4b29a231..e22c94294 100644 --- a/webapp/actions/global_actions.jsx +++ b/webapp/actions/global_actions.jsx @@ -623,6 +623,10 @@ export function redirectUserToDefaultTeam() { requestOpenGraphMetadata.openGraphMetadataOnGoingRequests = {}; // Format: {<url>: true} export function requestOpenGraphMetadata(url) { + if (global.mm_config.EnableLinkPreviews !== 'true') { + return; + } + const onself = requestOpenGraphMetadata; if (!onself.openGraphMetadataOnGoingRequests[url]) { diff --git a/webapp/components/admin_console/admin_sidebar.jsx b/webapp/components/admin_console/admin_sidebar.jsx index c53836ef6..2f299bdeb 100644 --- a/webapp/components/admin_console/admin_sidebar.jsx +++ b/webapp/components/admin_console/admin_sidebar.jsx @@ -690,6 +690,16 @@ export default class AdminSidebar extends React.Component { } /> <AdminSidebarSection + name='link_previews' + title={ + <FormattedMessage + id='admin.sidebar.linkPreviews' + defaultMessage='Link Previews' + /> + + } + /> + <AdminSidebarSection name='legal_and_support' title={ <FormattedMessage diff --git a/webapp/components/admin_console/link_previews_settings.jsx b/webapp/components/admin_console/link_previews_settings.jsx new file mode 100644 index 000000000..aea8a56f1 --- /dev/null +++ b/webapp/components/admin_console/link_previews_settings.jsx @@ -0,0 +1,66 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import AdminSettings from './admin_settings.jsx'; +import BooleanSetting from './boolean_setting.jsx'; +import {FormattedMessage} from 'react-intl'; +import SettingsGroup from './settings_group.jsx'; + +export default class LinkPreviewsSettings extends AdminSettings { + constructor(props) { + super(props); + + this.getConfigFromState = this.getConfigFromState.bind(this); + + this.renderSettings = this.renderSettings.bind(this); + } + + getConfigFromState(config) { + config.ServiceSettings.EnableLinkPreviews = this.state.enableLinkPreviews; + + return config; + } + + getStateFromConfig(config) { + return { + enableLinkPreviews: config.ServiceSettings.EnableLinkPreviews + }; + } + + renderTitle() { + return ( + <h3> + <FormattedMessage + id='admin.customization.linkPreviews' + defaultMessage='Link Previews' + /> + </h3> + ); + } + + renderSettings() { + return ( + <SettingsGroup> + <BooleanSetting + id='enableLinkPreviews' + label={ + <FormattedMessage + id='admin.customization.enableLinkPreviewsTitle' + defaultMessage='Enable Link Previews:' + /> + } + helpText={ + <FormattedMessage + id='admin.customization.enableLinkPreviewsDesc' + defaultMessage='Enable users to display a preview of website content below the message, if available. When true, website previews can be enabled from Account Settings > Advanced > Preview pre-release features.' + /> + } + value={this.state.enableLinkPreviews} + onChange={this.handleChange} + /> + </SettingsGroup> + ); + } +} diff --git a/webapp/components/user_settings/user_settings_advanced.jsx b/webapp/components/user_settings/user_settings_advanced.jsx index 6e3d488e1..3459af8b3 100644 --- a/webapp/components/user_settings/user_settings_advanced.jsx +++ b/webapp/components/user_settings/user_settings_advanced.jsx @@ -53,14 +53,19 @@ export default class AdvancedSettingsDisplay extends React.Component { ) }; - let enabledFeatures = 0; - for (const [name, value] of advancedSettings) { - const webrtcEnabled = global.mm_config.EnableWebrtc === 'true'; + const webrtcEnabled = global.mm_config.EnableWebrtc === 'true'; + const linkPreviewsEnabled = global.mm_config.EnableLinkPreviews === 'true'; - if (!webrtcEnabled) { - preReleaseFeaturesKeys = preReleaseFeaturesKeys.filter((f) => f !== 'WEBRTC_PREVIEW'); - } + if (!webrtcEnabled) { + preReleaseFeaturesKeys = preReleaseFeaturesKeys.filter((f) => f !== 'WEBRTC_PREVIEW'); + } + if (!linkPreviewsEnabled) { + preReleaseFeaturesKeys = preReleaseFeaturesKeys.filter((f) => f !== 'EMBED_PREVIEW'); + } + + let enabledFeatures = 0; + for (const [name, value] of advancedSettings) { for (const key of preReleaseFeaturesKeys) { const feature = PreReleaseFeatures[key]; diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json index cf04ccc0e..53f7a7f3e 100644 --- a/webapp/i18n/en.json +++ b/webapp/i18n/en.json @@ -1,4 +1,8 @@ { + "admin.customization.enableLinkPreviewsDesc": "Enable users to display a preview of website content below the message, if available. When true, website previews can be enabled from Account Settings > Advanced > Preview pre-release features.", + "admin.customization.enableLinkPreviewsTitle": "Enable Link Previews:", + "admin.customization.linkPreviews": "Link Previews", + "admin.sidebar.linkPreviews": "Link Previews", "multiselect.go": "Go", "multiselect.instructions": "Use up/down arrows to navigate and enter to select", "multiselect.placeholder": "Search and add members", diff --git a/webapp/routes/route_admin_console.jsx b/webapp/routes/route_admin_console.jsx index 5b0f5d28e..f983af9f5 100644 --- a/webapp/routes/route_admin_console.jsx +++ b/webapp/routes/route_admin_console.jsx @@ -35,6 +35,7 @@ import StorageSettings from 'components/admin_console/storage_settings.jsx'; import ImageSettings from 'components/admin_console/image_settings.jsx'; import CustomBrandSettings from 'components/admin_console/custom_brand_settings.jsx'; import CustomEmojiSettings from 'components/admin_console/custom_emoji_settings.jsx'; +import LinkPreviewsSettings from 'components/admin_console/link_previews_settings.jsx'; import LegalAndSupportSettings from 'components/admin_console/legal_and_support_settings.jsx'; import NativeAppLinkSettings from 'components/admin_console/native_app_link_settings.jsx'; import ComplianceSettings from 'components/admin_console/compliance_settings.jsx'; @@ -181,6 +182,10 @@ export default ( component={CustomEmojiSettings} /> <Route + path='link_previews' + component={LinkPreviewsSettings} + /> + <Route path='legal_and_support' component={LegalAndSupportSettings} /> |