diff options
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/components/about_build_modal.jsx | 6 | ||||
-rw-r--r-- | webapp/components/admin_console/legal_and_support_settings.jsx | 17 | ||||
-rw-r--r-- | webapp/components/admin_console/license_settings.jsx | 64 | ||||
-rw-r--r-- | webapp/components/signup_team_complete/components/team_signup_welcome_page.jsx | 6 | ||||
-rw-r--r-- | webapp/components/suggestion/command_provider.jsx | 4 | ||||
-rw-r--r-- | webapp/components/suggestion/suggestion_box.jsx | 3 | ||||
-rw-r--r-- | webapp/components/textbox.jsx | 1 | ||||
-rw-r--r-- | webapp/components/user_settings/manage_command_hooks.jsx | 313 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_advanced.jsx | 4 | ||||
-rw-r--r-- | webapp/i18n/en.json | 89 | ||||
-rw-r--r-- | webapp/i18n/es.json | 44 | ||||
-rw-r--r-- | webapp/i18n/pt.json | 6 | ||||
-rw-r--r-- | webapp/utils/async_client.jsx | 6 | ||||
-rw-r--r-- | webapp/utils/client.jsx | 5 | ||||
-rw-r--r-- | webapp/utils/constants.jsx | 34 |
15 files changed, 274 insertions, 328 deletions
diff --git a/webapp/components/about_build_modal.jsx b/webapp/components/about_build_modal.jsx index e2fefc44e..e73d842d0 100644 --- a/webapp/components/about_build_modal.jsx +++ b/webapp/components/about_build_modal.jsx @@ -24,7 +24,7 @@ export default class AboutBuildModal extends React.Component { let title = ( <FormattedMessage id='about.teamEditiont0' - defaultMessage='Team Edition T0' + defaultMessage='Team Edition' /> ); @@ -33,14 +33,14 @@ export default class AboutBuildModal extends React.Component { title = ( <FormattedMessage id='about.teamEditiont1' - defaultMessage='Team Edition T1' + defaultMessage='Enterprise Edition' /> ); if (license.IsLicensed === 'true') { title = ( <FormattedMessage id='about.enterpriseEditione1' - defaultMessage='Enterprise Edition E1' + defaultMessage='Enterprise Edition' /> ); licensee = ( diff --git a/webapp/components/admin_console/legal_and_support_settings.jsx b/webapp/components/admin_console/legal_and_support_settings.jsx index 4997a1385..bbbb3713c 100644 --- a/webapp/components/admin_console/legal_and_support_settings.jsx +++ b/webapp/components/admin_console/legal_and_support_settings.jsx @@ -81,7 +81,22 @@ class LegalAndSupportSettings extends React.Component { return ( <div className='wrapper--fixed'> - + <div className='banner'> + <div className='banner__content'> + <h4 className='banner__heading'> + <FormattedMessage + id='admin.support.noteTitle' + defaultMessage='Note:' + /> + </h4> + <p> + <FormattedMessage + id='admin.support.noteDescription' + defaultMessage='If linking to an external site, URLs should begin with http:// or https://.' + /> + </p> + </div> + </div> <h3> <FormattedMessage id='admin.support.title' diff --git a/webapp/components/admin_console/license_settings.jsx b/webapp/components/admin_console/license_settings.jsx index 5aa0dba7e..ad310d8e0 100644 --- a/webapp/components/admin_console/license_settings.jsx +++ b/webapp/components/admin_console/license_settings.jsx @@ -105,36 +105,27 @@ class LicenseSettings extends React.Component { let licenseType; let licenseKey; + const issued = Utils.displayDate(parseInt(global.window.mm_license.IssuedAt, 10)) + ' ' + Utils.displayTime(parseInt(global.window.mm_license.IssuedAt, 10), true); + const startsAt = Utils.displayDate(parseInt(global.window.mm_license.StartsAt, 10)); + const expiresAt = Utils.displayDate(parseInt(global.window.mm_license.ExpiresAt, 10)); + if (global.window.mm_license.IsLicensed === 'true') { - edition = ( - <FormattedMessage - id='admin.license.enterpriseEdition' - defaultMessage='Mattermost Enterprise Edition. Designed for enterprise-scale communication.' - /> - ); + // Note: DO NOT LOCALISE THESE STRINGS. Legally we can not since the license is in English. + edition = 'Mattermost Enterprise Edition. Enterprise features on this server have been unlocked with a license key and a valid subscription.'; licenseType = ( - <FormattedHTMLMessage - id='admin.license.enterpriseType' - values={{ - terms: global.window.mm_config.TermsOfServiceLink, - name: global.window.mm_license.Name, - company: global.window.mm_license.Company, - users: global.window.mm_license.Users, - issued: Utils.displayDate(parseInt(global.window.mm_license.IssuedAt, 10)) + ' ' + Utils.displayTime(parseInt(global.window.mm_license.IssuedAt, 10), true), - start: Utils.displayDate(parseInt(global.window.mm_license.StartsAt, 10)), - expires: Utils.displayDate(parseInt(global.window.mm_license.ExpiresAt, 10)), - ldap: global.window.mm_license.LDAP - }} - defaultMessage='<div><p>This compiled release of Mattermost platform is provided under a <a href="http://mattermost.com" target="_blank">commercial license</a> from Mattermost, Inc. based on your subscription level and is subject to the <a href="{terms}" target="_blank">Terms of Service.</a></p> - <p>Your subscription details are as follows:</p> - Name: {name}<br /> - Company or organization name: {company}<br/> - Number of users: {users}<br/> - License issued: {issued}<br/> - Start date of license: {start}<br/> - Expiry date of license: {expires}<br/> - LDAP: {ldap}<br/></div>' - /> + <div> + <p> + {'This software is offered under a commercial license.\n\nSee ENTERPRISE-EDITION-LICENSE.txt in your root install directory for details. See NOTICE.txt for information about open source software used in this system.\n\nYour subscription details are as follows:'} + </p> + {`Name: ${global.window.mm_license.Name}`}<br/> + {`Company or organization name: ${global.window.mm_license.Company}`}<br/> + {`Number of users: ${global.window.mm_license.Users}`}<br/> + {`License issued: ${issued}`}<br/> + {`Start date of license: ${startsAt}`}<br/> + {`Expiry date of license: ${expiresAt}`}<br/> + <br/> + {'See also '}<a href='https://about.mattermost.com/enterprise-edition-terms/'>{'Enterprise Edition Terms of Service'}</a>{' and '}<a href='https://about.mattermost.com/privacy/'>{'Privacy Policy.'}</a> + </div> ); licenseKey = ( @@ -162,20 +153,15 @@ class LicenseSettings extends React.Component { </div> ); } else { + // Note: DO NOT LOCALISE THESE STRINGS. Legally we can not since the license is in English. edition = ( - <FormattedMessage - id='admin.license.teamEdition' - defaultMessage='Mattermost Team Edition. Designed for teams from 5 to 50 users.' - /> + <p> + {'Mattermost Enterprise Edition. Unlock enterprise features in this software through the purchase of a subscription from '} + <a href='https://mattermost.com/'>{'https://mattermost.com/'}</a> + </p> ); - licenseType = ( - <FormattedHTMLMessage - id='admin.license.teamType' - defaultMessage='<span><p>This compiled release of Mattermost platform is offered under an MIT license.</p> - <p>See MIT-COMPILED-LICENSE.txt in your root install directory for details. See NOTICES.txt for information about open source software used in this system.</p></span>' - /> - ); + licenseType = 'This software is offered under a commercial license.\n\nSee ENTERPRISE-EDITION-LICENSE.txt in your root install directory for details. See NOTICE.txt for information about open source software used in this system.'; let fileName; if (this.state.fileName) { diff --git a/webapp/components/signup_team_complete/components/team_signup_welcome_page.jsx b/webapp/components/signup_team_complete/components/team_signup_welcome_page.jsx index 99e633659..78d7cec47 100644 --- a/webapp/components/signup_team_complete/components/team_signup_welcome_page.jsx +++ b/webapp/components/signup_team_complete/components/team_signup_welcome_page.jsx @@ -96,7 +96,11 @@ class TeamSignupWelcomePage extends React.Component { } handleKeyPress(event) { if (event.keyCode === 13) { - this.submitNext(event); + if (this.state.useDiff) { + this.handleDiffSubmit(event); + } else { + this.submitNext(event); + } } } componentWillUnmount() { diff --git a/webapp/components/suggestion/command_provider.jsx b/webapp/components/suggestion/command_provider.jsx index 204f52483..36860fa66 100644 --- a/webapp/components/suggestion/command_provider.jsx +++ b/webapp/components/suggestion/command_provider.jsx @@ -37,9 +37,9 @@ CommandSuggestion.propTypes = { }; export default class CommandProvider { - handlePretextChanged(suggestionId, pretext, channelId) { + handlePretextChanged(suggestionId, pretext) { if (pretext.startsWith('/')) { - AsyncClient.getSuggestedCommands(pretext, channelId, suggestionId, CommandSuggestion); + AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion); } } } diff --git a/webapp/components/suggestion/suggestion_box.jsx b/webapp/components/suggestion/suggestion_box.jsx index 97c6c6cd9..e3ec63194 100644 --- a/webapp/components/suggestion/suggestion_box.jsx +++ b/webapp/components/suggestion/suggestion_box.jsx @@ -111,7 +111,7 @@ export default class SuggestionBox extends React.Component { handlePretextChanged(pretext) { for (const provider of this.props.providers) { - provider.handlePretextChanged(this.suggestionId, pretext, this.props.channelId); + provider.handlePretextChanged(this.suggestionId, pretext); } } @@ -160,7 +160,6 @@ SuggestionBox.propTypes = { value: React.PropTypes.string.isRequired, onUserInput: React.PropTypes.func, providers: React.PropTypes.arrayOf(React.PropTypes.object), - channelId: React.PropTypes.string, // explicitly name any input event handlers we override and need to manually call onChange: React.PropTypes.func, diff --git a/webapp/components/textbox.jsx b/webapp/components/textbox.jsx index 952026ed5..1a395072e 100644 --- a/webapp/components/textbox.jsx +++ b/webapp/components/textbox.jsx @@ -224,7 +224,6 @@ export default class Textbox extends React.Component { style={{visibility: this.state.preview ? 'hidden' : 'visible'}} listComponent={SuggestionList} providers={this.suggestionProviders} - channelId={this.props.channelId} /> <div ref='preview' diff --git a/webapp/components/user_settings/manage_command_hooks.jsx b/webapp/components/user_settings/manage_command_hooks.jsx index 9703664cc..ce353ad64 100644 --- a/webapp/components/user_settings/manage_command_hooks.jsx +++ b/webapp/components/user_settings/manage_command_hooks.jsx @@ -4,13 +4,9 @@ import LoadingScreen from '../loading_screen.jsx'; import * as Client from 'utils/client.jsx'; -import * as Utils from 'utils/utils.jsx'; -import Constants from 'utils/constants.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl'; -const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES; - const holders = defineMessages({ requestTypePost: { id: 'user.settings.cmds.request_type_post', @@ -63,7 +59,6 @@ export default class ManageCommandCmds extends React.Component { this.getCmds = this.getCmds.bind(this); this.addNewCmd = this.addNewCmd.bind(this); this.emptyCmd = this.emptyCmd.bind(this); - this.updateExternalManagement = this.updateExternalManagement.bind(this); this.updateTrigger = this.updateTrigger.bind(this); this.updateURL = this.updateURL.bind(this); this.updateMethod = this.updateMethod.bind(this); @@ -104,7 +99,7 @@ export default class ManageCommandCmds extends React.Component { addNewCmd(e) { e.preventDefault(); - if (this.state.cmd.url === '' || (this.state.cmd.trigger === '' && !this.state.external_management)) { + if (this.state.cmd.trigger === '' || this.state.cmd.url === '') { return; } @@ -194,12 +189,6 @@ export default class ManageCommandCmds extends React.Component { ); } - updateExternalManagement(e) { - var cmd = this.state.cmd; - cmd.external_management = e.target.checked; - this.setState(cmd); - } - updateTrigger(e) { var cmd = this.state.cmd; cmd.trigger = e.target.value; @@ -281,26 +270,11 @@ export default class ManageCommandCmds extends React.Component { ); } - let slashCommandAutocompleteDiv; - if (Utils.isFeatureEnabled(PreReleaseFeatures.SLASHCMD_AUTOCMP)) { - slashCommandAutocompleteDiv = ( - <div className='padding-top x2'> - <strong> - <FormattedMessage - id='user.settings.cmds.external_management' - defaultMessage='External management: ' - /> - </strong><span className='word-break--all'>{cmd.external_management ? this.props.intl.formatMessage(holders.autocompleteYes) : this.props.intl.formatMessage(holders.autocompleteNo)}</span> - </div> - ); - } - cmds.push( <div key={cmd.id} className='webhook__item webcmd__item' > - {slashCommandAutocompleteDiv} {triggerDiv} <div className='padding-top x2 webcmd__url'> <strong> @@ -442,188 +416,46 @@ export default class ManageCommandCmds extends React.Component { </div> ); - const disableButton = this.state.cmd.url === '' || (this.state.cmd.trigger === '' && !this.state.external_management); - - let triggerInput; - if (!this.state.cmd.external_management) { - triggerInput = ( - <div className='padding-top x2'> - <label className='control-label'> - <FormattedMessage - id='user.settings.cmds.trigger' - defaultMessage='Command Trigger Word: ' - /> - </label> - <div className='padding-top'> - <input - ref='trigger' - className='form-control' - value={this.state.cmd.trigger} - onChange={this.updateTrigger} - placeholder={this.props.intl.formatMessage(holders.addTriggerPlaceholder)} - /> - </div> - <div className='padding-top'> - <FormattedMessage - id='user.settings.cmds.trigger_desc' - defaultMessage='Examples: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug' - /> - </div> - </div> - ); - } - - let slashCommandAutocompleteCheckbox; - if (Utils.isFeatureEnabled(PreReleaseFeatures.SLASHCMD_AUTOCMP)) { - slashCommandAutocompleteCheckbox = ( - <div className='padding-top x2'> - <label className='control-label'> - <FormattedMessage - id='user.settings.cmds.external_management' - defaultMessage='External management: ' - /> - </label> - <div className='padding-top'> - <div className='checkbox'> - <label> - <input - type='checkbox' - checked={this.state.cmd.external_management} - onChange={this.updateExternalManagement} - /> - <FormattedMessage - id='user.settings.cmds.slashCmd_autocmp' - defaultMessage='Enable external application to offer autocomplete' - /> - </label> - </div> - </div> - </div> - - ); - } - - let autoCompleteSettings; - if (!this.state.cmd.external_management) { - autoCompleteSettings = ( - <div> - <div className='padding-top x2'> - <label className='control-label'> - <FormattedMessage - id='user.settings.cmds.auto_complete' - defaultMessage='Autocomplete: ' - /> - </label> - <div className='padding-top'> - <div className='checkbox'> - <label> - <input - type='checkbox' - checked={this.state.cmd.auto_complete} - onChange={this.updateAutoComplete} - /> - <FormattedMessage - id='user.settings.cmds.auto_complete_help' - defaultMessage=' Show this command in the autocomplete list.' - /> - </label> - </div> - </div> - </div> - - <div className='padding-top x2'> - <label className='control-label'> - <FormattedMessage - id='user.settings.cmds.auto_complete_hint' - defaultMessage='Autocomplete Hint: ' - /> - </label> - <div className='padding-top'> - <input - ref='autoCompleteHint' - className='form-control' - value={this.state.cmd.auto_complete_hint} - onChange={this.updateAutoCompleteHint} - placeholder={this.props.intl.formatMessage(holders.addAutoCompleteHintPlaceholder)} - /> - </div> - <div className='padding-top'> - <FormattedMessage - id='user.settings.cmds.auto_complete_hint_desc' - defaultMessage='Optional hint in the autocomplete list about parameters needed for command.' - /> - </div> - </div> + const disableButton = this.state.cmd.trigger === '' || this.state.cmd.url === ''; - <div className='padding-top x2'> - <label className='control-label'> - <FormattedMessage - id='user.settings.cmds.auto_complete_desc' - defaultMessage='Autocomplete Description: ' - /> - </label> - <div className='padding-top'> - <input - ref='autoCompleteDesc' - className='form-control' - value={this.state.cmd.auto_complete_desc} - onChange={this.updateAutoCompleteDesc} - placeholder={this.props.intl.formatMessage(holders.addAutoCompleteDescPlaceholder)} - /> - </div> - <div className='padding-top'> - <FormattedMessage - id='user.settings.cmds.auto_complete_desc_desc' - defaultMessage='Optional short description of slash command for the autocomplete list.' - /> - </div> - </div> + return ( + <div key='addCommandCmd'> + <FormattedHTMLMessage + id='user.settings.cmds.add_desc' + defaultMessage='Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href="http://docs.mattermost.com/developer/slash-commands.html">Slash commands documentation</a> for detailed instructions. View all slash commands configured on this team below.' + /> + <div><label className='control-label padding-top x2'> + <FormattedMessage + id='user.settings.cmds.add_new' + defaultMessage='Add a new command' + /> + </label></div> + <div className='padding-top divider-light'></div> + <div className='padding-top'> <div className='padding-top x2'> <label className='control-label'> <FormattedMessage - id='user.settings.cmds.display_name' - defaultMessage='Descriptive Label: ' + id='user.settings.cmds.trigger' + defaultMessage='Command Trigger Word: ' /> </label> <div className='padding-top'> <input - ref='displayName' + ref='trigger' className='form-control' - value={this.state.cmd.display_name} - onChange={this.updateDisplayName} - placeholder={this.props.intl.formatMessage(holders.addDisplayNamePlaceholder)} + value={this.state.cmd.trigger} + onChange={this.updateTrigger} + placeholder={this.props.intl.formatMessage(holders.addTriggerPlaceholder)} /> </div> <div className='padding-top'> <FormattedMessage - id='user.settings.cmds.cmd_display_name' - defaultMessage='Brief description of slash command to show in listings.' + id='user.settings.cmds.trigger_desc' + defaultMessage='Examples: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug' /> </div> - {addError} </div> - </div> - ); - } - - return ( - <div key='addCommandCmd'> - <FormattedHTMLMessage - id='user.settings.cmds.add_desc' - defaultMessage='Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href="http://docs.mattermost.com/developer/slash-commands.html">Slash commands documentation</a> for detailed instructions. View all slash commands configured on this team below.' - /> - <div><label className='control-label padding-top x2'> - <FormattedMessage - id='user.settings.cmds.add_new' - defaultMessage='Add a new command' - /> - </label></div> - <div className='padding-top divider-light'></div> - <div className='padding-top'> - - {slashCommandAutocompleteCheckbox} - {triggerInput} <div className='padding-top x2'> <label className='control-label'> @@ -728,7 +560,102 @@ export default class ManageCommandCmds extends React.Component { </div> </div> - {autoCompleteSettings} + <div className='padding-top x2'> + <label className='control-label'> + <FormattedMessage + id='user.settings.cmds.auto_complete' + defaultMessage='Autocomplete: ' + /> + </label> + <div className='padding-top'> + <div className='checkbox'> + <label> + <input + type='checkbox' + checked={this.state.cmd.auto_complete} + onChange={this.updateAutoComplete} + /> + <FormattedMessage + id='user.settings.cmds.auto_complete_help' + defaultMessage=' Show this command in the autocomplete list.' + /> + </label> + </div> + </div> + </div> + + <div className='padding-top x2'> + <label className='control-label'> + <FormattedMessage + id='user.settings.cmds.auto_complete_hint' + defaultMessage='Autocomplete Hint: ' + /> + </label> + <div className='padding-top'> + <input + ref='autoCompleteHint' + className='form-control' + value={this.state.cmd.auto_complete_hint} + onChange={this.updateAutoCompleteHint} + placeholder={this.props.intl.formatMessage(holders.addAutoCompleteHintPlaceholder)} + /> + </div> + <div className='padding-top'> + <FormattedMessage + id='user.settings.cmds.auto_complete_hint_desc' + defaultMessage='Optional hint in the autocomplete list about parameters needed for command.' + /> + </div> + </div> + + <div className='padding-top x2'> + <label className='control-label'> + <FormattedMessage + id='user.settings.cmds.auto_complete_desc' + defaultMessage='Autocomplete Description: ' + /> + </label> + <div className='padding-top'> + <input + ref='autoCompleteDesc' + className='form-control' + value={this.state.cmd.auto_complete_desc} + onChange={this.updateAutoCompleteDesc} + placeholder={this.props.intl.formatMessage(holders.addAutoCompleteDescPlaceholder)} + /> + </div> + <div className='padding-top'> + <FormattedMessage + id='user.settings.cmds.auto_complete_desc_desc' + defaultMessage='Optional short description of slash command for the autocomplete list.' + /> + </div> + </div> + + <div className='padding-top x2'> + <label className='control-label'> + <FormattedMessage + id='user.settings.cmds.display_name' + defaultMessage='Descriptive Label: ' + /> + </label> + <div className='padding-top'> + <input + ref='displayName' + className='form-control' + value={this.state.cmd.display_name} + onChange={this.updateDisplayName} + placeholder={this.props.intl.formatMessage(holders.addDisplayNamePlaceholder)} + /> + </div> + <div className='padding-top'> + <FormattedMessage + id='user.settings.cmds.cmd_display_name' + defaultMessage='Brief description of slash command to show in listings.' + /> + </div> + {addError} + </div> <div className='padding-top x2 padding-bottom'> <a diff --git a/webapp/components/user_settings/user_settings_advanced.jsx b/webapp/components/user_settings/user_settings_advanced.jsx index 40897e8c9..7c496f57b 100644 --- a/webapp/components/user_settings/user_settings_advanced.jsx +++ b/webapp/components/user_settings/user_settings_advanced.jsx @@ -51,10 +51,6 @@ const holders = defineMessages({ EMBED_TOGGLE: { id: 'user.settings.advance.embed_toggle', defaultMessage: 'Show toggle for all embed previews' - }, - SLASHCMD_AUTOCMP: { - id: 'user.settings.advance.slashCmd_autocmp', - defaultMessage: 'Enable external application to offer slash command autocomplete' } }); diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json index 9a9477557..e4485dc29 100644 --- a/webapp/i18n/en.json +++ b/webapp/i18n/en.json @@ -1,12 +1,12 @@ { "about.close": "Close", "about.date": "Build Date:", - "about.enterpriseEditione1": "Enterprise Edition E1", + "about.enterpriseEditione1": "Enterprise Edition", "about.hash": "Build Hash:", "about.licensed": "Licensed by:", "about.number": "Build Number:", - "about.teamEditiont0": "Team Edition T0", - "about.teamEditiont1": "Team Edition T1", + "about.teamEditiont0": "Team Edition", + "about.teamEditiont1": "Enterprise Edition", "about.title": "About Mattermost", "about.version": "Version:", "access_history.title": "Access History", @@ -24,6 +24,39 @@ "activity_log_modal.iphoneNativeApp": "iPhone Native App", "admin.audits.reload": "Reload", "admin.audits.title": "User Activity", + "admin.compliance.directoryDescription": "Directory to which compliance reports are written. If blank, will be set to ./data/.", + "admin.compliance.directoryExample": "Ex \"./data/\"", + "admin.compliance.directoryTitle": "Compliance Directory Location:", + "admin.compliance.enableDailyTitle": "Enable Daily Report:", + "admin.compliance.enableDesc": "When true, Mattermost will generate a daily compliance report.", + "admin.compliance.enableTitle": "Enable Compliance:", + "admin.compliance.false": "false", + "admin.compliance.noLicense": "<h4 class=\"banner__heading\">Note:</h4><p>Compliance is an enterprise feature. Your current license does not support Compliance. Click <a href=\"http://mattermost.com\" target=\"_blank\">here</a> for information and pricing on enterprise licenses.</p>", + "admin.compliance.save": "Save", + "admin.compliance.saving": "Saving Config...", + "admin.compliance.title": "Compliance Settings", + "admin.compliance.true": "true", + "admin.compliance_reports.desc": "Job Name:", + "admin.compliance_reports.desc_placeholder": "Ex \"Audit 445 for HR\"", + "admin.compliance_reports.emails": "Emails:", + "admin.compliance_reports.emails_placeholder": "Ex \"bill@example.com, bob@example.com\"", + "admin.compliance_reports.from": "From:", + "admin.compliance_reports.from_placeholder": "Ex \"2016-03-11\"", + "admin.compliance_reports.keywords": "Keywords:", + "admin.compliance_reports.keywords_placeholder": "Ex \"shorting stock\"", + "admin.compliance_reports.reload": "Reload", + "admin.compliance_reports.run": "Run", + "admin.compliance_reports.title": "Compliance Reports", + "admin.compliance_reports.to": "To:", + "admin.compliance_reports.to_placeholder": "Ex \"2016-03-15\"", + "admin.compliance_table.desc": "Description", + "admin.compliance_table.download": "Download", + "admin.compliance_table.params": "Params", + "admin.compliance_table.records": "Records", + "admin.compliance_table.status": "Status", + "admin.compliance_table.timestamp": "Timestamp", + "admin.compliance_table.type": "Type", + "admin.compliance_table.userId": "Requested By", "admin.email.allowEmailSignInDescription": "When true, Mattermost allows users to sign in using their email and password.", "admin.email.allowEmailSignInTitle": "Allow Sign In With Email: ", "admin.email.allowSignupDescription": "When true, Mattermost allows team creation and account signup using email and password. This value should be false only when you want to limit signup to a single-sign-on service like OAuth or LDAP.", @@ -195,51 +228,11 @@ "admin.ldap.uernameAttrDesc": "The attribute in the LDAP server that will be used to populate the username field in Mattermost. This may be the same as the ID Attribute.", "admin.ldap.usernameAttrEx": "Ex \"sAMAccountName\"", "admin.ldap.usernameAttrTitle": "Username Attribute:", - "admin.compliance.saving": "Saving Config...", - "admin.compliance.directoryExample": "Ex \"./data/\"", - "admin.compliance.noLicense": "<h4 class=\"banner__heading\">Note:</h4><p>Compliance is an enterprise feature. Your current license does not support Compliance. Click <a href=\"http://mattermost.com\" target=\"_blank\">here</a> for information and pricing on enterprise licenses.</p>", - "admin.compliance.title": "Compliance Settings", - "admin.compliance.enableTitle": "Enable Compliance:", - "admin.compliance.true": "true", - "admin.compliance.false": "false", - "admin.compliance.enableDesc": "When true, Mattermost allows compliance reporting", - "admin.compliance.directoryTitle": "Compliance Directory Location:", - "admin.compliance.directoryDescription": "Directory to which compliance reports are written. If blank, will be set to ./data/.", - "admin.compliance.enableDailyTitle": "Enable Daily Report:", - "admin.compliance.enableDesc": "When true, Mattermost will generate a daily compliance report.", - "admin.compliance.save": "Save", - "admin.compliance_reports.from": "From:", - "admin.compliance_reports.to": "To:", - "admin.compliance_reports.emails": "Emails:", - "admin.compliance_reports.keywords": "Keywords:", - "admin.compliance_table.download": "Download", - "admin.compliance_table.timestamp": "Timestamp", - "admin.compliance_table.status": "Status", - "admin.compliance_table.records": "Records", - "admin.compliance_table.type": "Type", - "admin.compliance_table.desc": "Description", - "admin.compliance_table.userId": "Requested By", - "admin.compliance_table.params": "Params", - "admin.compliance_reports.title": "Compliance Reports", - "admin.compliance_reports.desc": "Job Name:", - "admin.compliance_reports.desc_placeholder": "Ex \"Audit 445 for HR\"", - "admin.compliance_reports.from_placeholder": "Ex \"2016-03-11\"", - "admin.compliance_reports.to_placeholder": "Ex \"2016-03-15\"", - "admin.compliance_reports.emails_placeholder": "Ex \"bill@example.com, bob@example.com\"", - "admin.compliance_reports.keywords_placeholder": "Ex \"shorting stock\"", - "admin.compliance_reports.run": "Run", - "admin.compliance_reports.reload": "Reload", "admin.licence.keyMigration": "If you’re migrating servers you may need to remove your license key from this server in order to install it on a new server. To start, <a href=\"http://mattermost.com\" target=\"_blank\">disable all Enterprise Edition features on this server</a>. This will enable the ability to remove the license key and downgrade this server from Enterprise Edition to Team Edition.", "admin.license.chooseFile": "Choose File", - "admin.license.edition": "Edition: ", - "admin.license.enterpriseEdition": "Mattermost Enterprise Edition. Designed for enterprise-scale communication.", - "admin.license.enterpriseType": "<div><p>This compiled release of Mattermost platform is provided under a <a href=\"http://mattermost.com\" target=\"_blank\">commercial license</a> from Mattermost, Inc. based on your subscription level and is subject to the <a href=\"{terms}\" target=\"_blank\">Terms of Service.</a></p><p>Your subscription details are as follows:</p>Name: {name}<br />Company or organization name: {company}<br/>Number of users: {users}<br/>License issued: {issued}<br/>Start date of license: {start}<br/>Expiry date of license: {expires}<br/>LDAP: {ldap}<br/></div>", - "admin.license.key": "License Key: ", "admin.license.keyRemove": "Remove Enterprise License and Downgrade Server", "admin.license.noFile": "No file uploaded", "admin.license.removing": "Removing License...", - "admin.license.teamEdition": "Mattermost Team Edition. Designed for teams from 5 to 50 users.", - "admin.license.teamType": "<span><p>This compiled release of Mattermost platform is offered under an MIT license.</p><p>See MIT-COMPILED-LICENSE.txt in your root install directory for details. See NOTICES.txt for information about open source software used in this system.</p></span>", "admin.license.title": "Edition and License", "admin.license.type": "License: ", "admin.license.upload": "Upload", @@ -364,12 +357,12 @@ "admin.service.webhooksTitle": "Enable Incoming Webhooks: ", "admin.sidebar.addTeamSidebar": "Add team from sidebar menu", "admin.sidebar.audits": "Compliance and Auditing", + "admin.sidebar.compliance": "Compliance Settings", "admin.sidebar.email": "Email Settings", "admin.sidebar.file": "File Settings", "admin.sidebar.gitlab": "GitLab Settings", "admin.sidebar.ldap": "LDAP Settings", "admin.sidebar.license": "Edition and License", - "admin.sidebar.compliance": "Compliance Settings", "admin.sidebar.loading": "Loading", "admin.sidebar.log": "Log Settings", "admin.sidebar.logs": "Logs", @@ -426,6 +419,8 @@ "admin.support.termsDesc": "Link to Terms of Service available to users on desktop and on mobile. Leaving this blank will hide the option to display a notice.", "admin.support.termsTitle": "Terms of Service link:", "admin.support.title": "Legal and Support Settings", + "admin.support.noteTitle": "Note:", + "admin.support.noteDescription": "If linking to an external site, URLs should begin with http:// or https://.", "admin.system_analytics.activeUsers": "Active Users With Posts", "admin.system_analytics.title": "the System", "admin.system_analytics.totalPosts": "Total Posts", @@ -1130,7 +1125,6 @@ "tutorial_tip.seen": "Seen this before? ", "upload_overlay.info": "Drop a file to upload it.", "user.settings.advance.embed_preview": "Show preview snippet of links below message", - "user.settings.advance.slashCmd_autocmp": "Enable external application to offer slash command autocomplete", "user.settings.advance.embed_toggle": "Show toggle for all embed previews", "user.settings.advance.enabled": "enabled", "user.settings.advance.feature": " Feature ", @@ -1142,6 +1136,7 @@ "user.settings.advance.preReleaseTitle": "Preview pre-release features", "user.settings.advance.sendDesc": "If enabled 'Enter' inserts a new line and 'Ctrl + Enter' submits the message.", "user.settings.advance.sendTitle": "Send messages on Ctrl + Enter", + "user.settings.advance.slashCmd_autocmp": "Enable external application to offer slash command autocomplete", "user.settings.advance.title": "Advanced Settings", "user.settings.cmds.add": "Add", "user.settings.cmds.add_desc": "Create slash commands to send events to external integrations and receive a response. For example typing `/patient Joe Smith` could bring back search results from your internal health records management system for the name “Joe Smith”. Please see <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">Slash commands documentation</a> for detailed instructions. View all slash commands configured on this team below.", @@ -1170,6 +1165,7 @@ "user.settings.cmds.request_type_desc": "The type of command request issued to the Request URL.", "user.settings.cmds.request_type_get": "GET", "user.settings.cmds.request_type_post": "POST", + "user.settings.cmds.slashCmd_autocmp": "Enable external application to offer autocomplete", "user.settings.cmds.token": "Token: ", "user.settings.cmds.trigger": "Command Trigger Word: ", "user.settings.cmds.trigger_desc": "Examples: /patient, /client, /employee Reserved: /echo, /join, /logout, /me, /shrug", @@ -1178,7 +1174,6 @@ "user.settings.cmds.url_desc": "The callback URL to receive the HTTP POST or GET event request when the slash command is run.", "user.settings.cmds.username": "Response Username: ", "user.settings.cmds.username_desc": "Choose a username override for responses for this slash command. Usernames can consist of up to 22 characters consisting of lowercase letters, numbers and they symbols \"-\", \"_\", and \".\" .", - "user.settings.cmds.slashCmd_autocmp": "Enable external application to offer autocomplete", "user.settings.custom_theme.awayIndicator": "Away Indicator", "user.settings.custom_theme.buttonBg": "Button BG", "user.settings.custom_theme.buttonColor": "Button Text", @@ -1354,4 +1349,4 @@ "web.footer.terms": "Terms", "web.header.back": "Back", "web.root.singup_info": "All team communication in one place, searchable and accessible anywhere" -}
\ No newline at end of file +} diff --git a/webapp/i18n/es.json b/webapp/i18n/es.json index 457752b64..021b41051 100644 --- a/webapp/i18n/es.json +++ b/webapp/i18n/es.json @@ -24,6 +24,39 @@ "activity_log_modal.iphoneNativeApp": "iPhone App Nativa", "admin.audits.reload": "Recargar", "admin.audits.title": "Auditorías del Servidor", + "admin.compliance.directoryDescription": "Directorio en el que se escriben los informes de cumplimiento. Si se deja en blanco, se utilizará ./data/.", + "admin.compliance.directoryExample": "Ej \"./data/\"", + "admin.compliance.directoryTitle": "Ubicación del Directorio de Cumplimiento:", + "admin.compliance.enableDailyTitle": "Habilitar Informes Diarios:", + "admin.compliance.enableDesc": "Cuando es verdadero, Mattermost generará un informe diario de cumplimiento.", + "admin.compliance.enableTitle": "Habilitar el Cumplimiento:", + "admin.compliance.false": "falso", + "admin.compliance.noLicense": "<h4 class=\"banner__heading\">Nota:</h4><p>El Cumplimiento es una característica de la edición enterprise. Tu licencia actual no soporta Cumplimiento. Pincha <a href=\"http://mattermost.com\" target=\"_blank\">aquí</a> para información y precio de las licencias enterprise.</p>", + "admin.compliance.save": "Guardar", + "admin.compliance.saving": "Guardando...", + "admin.compliance.title": "Configuración de Cumplimiento", + "admin.compliance.true": "verdadero", + "admin.compliance_reports.desc": "Nombre del trabajo:", + "admin.compliance_reports.desc_placeholder": "Ej \"Auditoria 445 para RRHH\"", + "admin.compliance_reports.emails": "Correos electrónicos:", + "admin.compliance_reports.emails_placeholder": "Ej \"bill@ejemplo.com, bob@ejemplo.com\"", + "admin.compliance_reports.from": "Desde:", + "admin.compliance_reports.from_placeholder": "Ej \"2016-03-11\"", + "admin.compliance_reports.keywords": "Palabras clave:", + "admin.compliance_reports.keywords_placeholder": "Ej \"acortar inventario\"", + "admin.compliance_reports.reload": "Recargar", + "admin.compliance_reports.run": "Ejecutar", + "admin.compliance_reports.title": "Informes de Cumplimiento", + "admin.compliance_reports.to": "Hasta:", + "admin.compliance_reports.to_placeholder": "Ej \"2016-03-15\"", + "admin.compliance_table.desc": "Descripción", + "admin.compliance_table.download": "Descargar", + "admin.compliance_table.params": "Parámetros", + "admin.compliance_table.records": "Registros", + "admin.compliance_table.status": "Estado", + "admin.compliance_table.timestamp": "Marca de tiempo", + "admin.compliance_table.type": "Tipo", + "admin.compliance_table.userId": "Solicitado por", "admin.email.allowEmailSignInDescription": "Cuando es verdadero, Mattermost permite a los usuarios iniciar sesión utilizando el correo electrónico y contraseña.", "admin.email.allowEmailSignInTitle": "Permitir inicio de sesión con Correo electrónico: ", "admin.email.allowSignupDescription": "Cuando está en verdadero, Mattermost permite la creación de equipos y cuentas utilizando el correo electrónico y contraseña. Este valor debe estar en falso sólo cuando quieres limitar el inicio de sesión a través de servicios tipo OAuth o LDAP.", @@ -197,15 +230,9 @@ "admin.ldap.usernameAttrTitle": "Atributo Usuario:", "admin.licence.keyMigration": "Si estás migrando servidores es posible que necesites remover tu licencia de este servidor para poder instalarlo en un servidor nuevo. Para empezar, <a href=\"http://mattermost.com\" target=\"_blank\">deshabilita todas las características de la Edición Enterprise de este servidor</a>. Esta operación habilitará la opción para remover la licencia y degradar este servidor de la Edición Enterprise a la Edición Team.", "admin.license.chooseFile": "Escoger Archivo", - "admin.license.edition": "Edición: ", - "admin.license.enterpriseEdition": "Mattermost Edición Enterprise. Diseñada para comunicación de escala empresarial.", - "admin.license.enterpriseType": "<div><p>Esta versión compilada de la plataforma de Mattermost es provista bajo una <a href=\"http://mattermost.com\" target=\"_blank\">licencia comercial</a> de Mattermost, Inc. en función en su nivel de subscripción y bajo los <a href=\"{terms}\" target=\"_blank\">Términos del Servicio.</a></p><p>Los detalles de tu subscripción son los siguientes:</p>Nombre: {name}<br />Nombre compañía u organización: {company}<br/>Cantidad de usuarios: {users}<br/>Licencia emitida: {issued}<br/>Fecha de inicio: {start}<br/>Fecha de expiración: {expires}<br/>LDAP: {ldap}<br/></div>", - "admin.license.key": "Llave de la Licencia: ", "admin.license.keyRemove": "Remover la Licencia Enterprise y Degradar el Servidor", "admin.license.noFile": "No se subió ningún archivo", "admin.license.removing": "Removiendo Licencia...", - "admin.license.teamEdition": "Mattermost Edición Team. Diseñado para equipos desde 5 hasta 50 usuarios.", - "admin.license.teamType": "<span><p>Esta versión compilada de la plataforma de Mattermost es proporcionada bajo la licencia MIT.</p><p>Lea MIT-COMPILED-LICENSE.txt en el directorio raíz de la instalación para más detalles. Lea NOTICES.txt para información sobre software libre utilizado en este sistema.</p></span>", "admin.license.title": "Edición y Licencia", "admin.license.type": "Licencia: ", "admin.license.upload": "Subir", @@ -330,6 +357,7 @@ "admin.service.webhooksTitle": "Habilitar Webhooks de Entrada: ", "admin.sidebar.addTeamSidebar": "Agregar un equipo el menú lateral", "admin.sidebar.audits": "Auditorías", + "admin.sidebar.compliance": "Configuración de Cumplimiento", "admin.sidebar.email": "Configuración de correo", "admin.sidebar.file": "Configuracion de archivos", "admin.sidebar.gitlab": "Configuración de GitLab", @@ -1106,6 +1134,7 @@ "user.settings.advance.preReleaseTitle": "Previsualizar características de pre-lanzamiento", "user.settings.advance.sendDesc": "Si está habilitado 'Retorno' inserta una nueva linea y 'Ctrl + Retorno' envía el mensaje.", "user.settings.advance.sendTitle": "Enviar mensajes con Ctrl + Retorno", + "user.settings.advance.slashCmd_autocmp": "Habilitar que una aplicación externa ofrezca el autocompletado de los comandos de barra", "user.settings.advance.title": "Configuración Avanzada", "user.settings.cmds.add": "Agregar", "user.settings.cmds.add_desc": "Crea comandos de barra para enviar eventos a integraciones externas recibiendo una respuesta. Por ejemplo al escribir `/paciente Joe Smith` podría retornar los resultados de una búsqueda de los regístros de salud en tu sistema de administración para el nombre “Joe Smith”. Revisa la <a href=\"http://docs.mattermost.com/developer/slash-commands.html\">documentación de Comandos de Barra</a> para instrucciones detalladas. Ver todos los comandos de barra configurados para este equipo en la parte de abajo.", @@ -1134,6 +1163,7 @@ "user.settings.cmds.request_type_desc": "El tipo de comando que se utiliza al hacer una solicitud al URL.", "user.settings.cmds.request_type_get": "GET", "user.settings.cmds.request_type_post": "POST", + "user.settings.cmds.slashCmd_autocmp": "Habilitar que una aplicación externa ofrezca autocompletado", "user.settings.cmds.token": "Token: ", "user.settings.cmds.trigger": "Palabra Gatilladora del Comando: ", "user.settings.cmds.trigger_desc": "Ejemplos: /paciente, /cliente, /empleado Reservadas: /echo, /join, /logout, /me, /shrug", @@ -1317,4 +1347,4 @@ "web.footer.terms": "Términos", "web.header.back": "Atrás", "web.root.singup_info": "Todas las comunicaciones del equipo en un sólo lugar, con búsquedas y accesible desde cualquier parte" -}
\ No newline at end of file +} diff --git a/webapp/i18n/pt.json b/webapp/i18n/pt.json index 17ffe1b16..395994bab 100644 --- a/webapp/i18n/pt.json +++ b/webapp/i18n/pt.json @@ -1,12 +1,12 @@ { "about.close": "Fechar", "about.date": "Data De Criação:", - "about.enterpriseEditione1": "Enterprise Edition E1", + "about.enterpriseEditione1": "Enterprise Edition", "about.hash": "Hash de Compilação:", "about.licensed": "Licenciado pela:", "about.number": "O Número De Compilação:", - "about.teamEditiont0": "Team Edition T0", - "about.teamEditiont1": "Team Edition T1", + "about.teamEditiont0": "Team Edition", + "about.teamEditiont1": "Enterprise Edition", "about.title": "Sobre o Mattermost", "about.version": "Versão:", "access_history.title": "Histórico de Acesso", diff --git a/webapp/utils/async_client.jsx b/webapp/utils/async_client.jsx index 2392b50b9..d3f91bb0e 100644 --- a/webapp/utils/async_client.jsx +++ b/webapp/utils/async_client.jsx @@ -781,12 +781,12 @@ export function savePreferences(preferences, success, error) { ); } -export function getSuggestedCommands(command, channelId, suggestionId, component) { - client.listCommands({command: command, channelId: channelId}, +export function getSuggestedCommands(command, suggestionId, component) { + client.listCommands( (data) => { var matches = []; data.forEach((cmd) => { - if (('/' + cmd.trigger).indexOf(command) === 0 || cmd.external_management) { + if (('/' + cmd.trigger).indexOf(command) === 0) { let s = '/' + cmd.trigger; let hint = ''; if (cmd.auto_complete_hint && cmd.auto_complete_hint.length !== 0) { diff --git a/webapp/utils/client.jsx b/webapp/utils/client.jsx index 69bda4303..e29cf71d3 100644 --- a/webapp/utils/client.jsx +++ b/webapp/utils/client.jsx @@ -1031,13 +1031,12 @@ export function regenCommandToken(data, success, error) { }); } -export function listCommands(data, success, error) { +export function listCommands(success, error) { $.ajax({ url: '/api/v1/commands/list', dataType: 'json', contentType: 'application/json', - type: 'POST', - data: JSON.stringify(data), + type: 'GET', success, error: function onError(xhr, status, err) { var e = handleError('listCommands', xhr, status, err); diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx index 4ee934e11..872bdb8ab 100644 --- a/webapp/utils/constants.jsx +++ b/webapp/utils/constants.jsx @@ -429,6 +429,21 @@ export default { uiName: 'Mention Highlight Link' }, { + group: 'linkAndButtonElements', + id: 'linkColor', + uiName: 'Link Color' + }, + { + group: 'linkAndButtonElements', + id: 'buttonBg', + uiName: 'Button BG' + }, + { + group: 'linkAndButtonElements', + id: 'buttonColor', + uiName: 'Button Text' + }, + { group: 'centerChannelElements', id: 'codeTheme', uiName: 'Code Theme', @@ -458,21 +473,6 @@ export default { iconURL: monokaiIcon } ] - }, - { - group: 'linkAndButtonElements', - id: 'linkColor', - uiName: 'Link Color' - }, - { - group: 'linkAndButtonElements', - id: 'buttonBg', - uiName: 'Button BG' - }, - { - group: 'linkAndButtonElements', - id: 'buttonColor', - uiName: 'Button Text' } ], DEFAULT_CODE_THEME: 'github', @@ -595,10 +595,6 @@ export default { EMBED_TOGGLE: { label: 'embed_toggle', description: 'Show toggle for all embed previews' - }, - SLASHCMD_AUTOCMP: { - label: 'slashCmd_autocmp', - description: 'Enable external application to offer slash command autocomplete' } }, OVERLAY_TIME_DELAY: 400, |