summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaehyun, Park <kkamdooong@gmail.com>2017-06-29 23:38:56 +0900
committerHarrison Healey <harrisonmhealey@gmail.com>2017-06-29 10:38:56 -0400
commit50b662040c5c2e2544b3517dc766f1837c7f05e1 (patch)
tree00130bf07a32a644c7802ebb5a3184f0eb634881
parent94e734c1bdc2f7e377a469c57add45cf9261fba7 (diff)
downloadchat-50b662040c5c2e2544b3517dc766f1837c7f05e1.tar.gz
chat-50b662040c5c2e2544b3517dc766f1837c7f05e1.tar.bz2
chat-50b662040c5c2e2544b3517dc766f1837c7f05e1.zip
Add /help slash command (#6650)
* Add /help slash command * Fix copyright year * go fmt * Add help command test at api4 * Fix jasonblais's issue * Update test code * Fix unit test issue - keep config unchanged
-rw-r--r--api/command_help_test.go33
-rw-r--r--api4/command_help_test.go33
-rw-r--r--app/command_help.go44
-rw-r--r--i18n/en.json8
-rw-r--r--webapp/components/create_comment.jsx6
5 files changed, 123 insertions, 1 deletions
diff --git a/api/command_help_test.go b/api/command_help_test.go
new file mode 100644
index 000000000..20fa8c830
--- /dev/null
+++ b/api/command_help_test.go
@@ -0,0 +1,33 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package api
+
+import (
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ "testing"
+)
+
+func TestHelpCommand(t *testing.T) {
+ th := Setup().InitBasic()
+ Client := th.BasicClient
+ channel := th.BasicChannel
+
+ HelpLink := *utils.Cfg.SupportSettings.HelpLink
+ defer func() {
+ *utils.Cfg.SupportSettings.HelpLink = HelpLink
+ }()
+
+ *utils.Cfg.SupportSettings.HelpLink = ""
+ rs1 := Client.Must(Client.Command(channel.Id, "/help ")).Data.(*model.CommandResponse)
+ if rs1.GotoLocation != model.SUPPORT_SETTINGS_DEFAULT_HELP_LINK {
+ t.Fatal("failed to default help link")
+ }
+
+ *utils.Cfg.SupportSettings.HelpLink = "https://docs.mattermost.com/guides/user.html"
+ rs2 := Client.Must(Client.Command(channel.Id, "/help ")).Data.(*model.CommandResponse)
+ if rs2.GotoLocation != "https://docs.mattermost.com/guides/user.html" {
+ t.Fatal("failed to help link")
+ }
+}
diff --git a/api4/command_help_test.go b/api4/command_help_test.go
new file mode 100644
index 000000000..cb0f1b634
--- /dev/null
+++ b/api4/command_help_test.go
@@ -0,0 +1,33 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package api4
+
+import (
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ "testing"
+)
+
+func TestHelpCommand(t *testing.T) {
+ th := Setup().InitBasic()
+ Client := th.Client
+ channel := th.BasicChannel
+
+ HelpLink := *utils.Cfg.SupportSettings.HelpLink
+ defer func() {
+ *utils.Cfg.SupportSettings.HelpLink = HelpLink
+ }()
+
+ *utils.Cfg.SupportSettings.HelpLink = ""
+ rs1, _ := Client.ExecuteCommand(channel.Id, "/help ")
+ if rs1.GotoLocation != model.SUPPORT_SETTINGS_DEFAULT_HELP_LINK {
+ t.Fatal("failed to default help link")
+ }
+
+ *utils.Cfg.SupportSettings.HelpLink = "https://docs.mattermost.com/guides/user.html"
+ rs2, _ := Client.ExecuteCommand(channel.Id, "/help ")
+ if rs2.GotoLocation != "https://docs.mattermost.com/guides/user.html" {
+ t.Fatal("failed to help link")
+ }
+}
diff --git a/app/command_help.go b/app/command_help.go
new file mode 100644
index 000000000..e545865fc
--- /dev/null
+++ b/app/command_help.go
@@ -0,0 +1,44 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package app
+
+import (
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ goi18n "github.com/nicksnyder/go-i18n/i18n"
+)
+
+type HelpProvider struct {
+}
+
+const (
+ CMD_HELP = "help"
+)
+
+func init() {
+ RegisterCommandProvider(&HelpProvider{})
+}
+
+func (h *HelpProvider) GetTrigger() string {
+ return CMD_HELP
+}
+
+func (h *HelpProvider) GetCommand(T goi18n.TranslateFunc) *model.Command {
+ return &model.Command{
+ Trigger: CMD_HELP,
+ AutoComplete: true,
+ AutoCompleteDesc: T("api.command_help.desc"),
+ DisplayName: T("api.command_help.name"),
+ }
+}
+
+func (h *HelpProvider) DoCommand(args *model.CommandArgs, message string) *model.CommandResponse {
+ helpLink := *utils.Cfg.SupportSettings.HelpLink
+
+ if helpLink == "" {
+ helpLink = model.SUPPORT_SETTINGS_DEFAULT_HELP_LINK
+ }
+
+ return &model.CommandResponse{GotoLocation: helpLink}
+}
diff --git a/i18n/en.json b/i18n/en.json
index 6371522a4..ff34cf54f 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -872,6 +872,14 @@
"translation": "shrug"
},
{
+ "id": "api.command_help.desc",
+ "translation": "Open the Mattermost help page"
+ },
+ {
+ "id": "api.command_help.name",
+ "translation": "help"
+ },
+ {
"id": "api.compliance.init.debug",
"translation": "Initializing compliance API routes"
},
diff --git a/webapp/components/create_comment.jsx b/webapp/components/create_comment.jsx
index 56e9eb88f..2ddc828cc 100644
--- a/webapp/components/create_comment.jsx
+++ b/webapp/components/create_comment.jsx
@@ -203,7 +203,11 @@ export default class CreateComment extends React.Component {
(data) => {
this.setState({submitting: false});
if (data.goto_location && data.goto_location.length > 0) {
- browserHistory.push(data.goto_location);
+ if (data.goto_location.startsWith('/') || data.goto_location.includes(window.location.hostname)) {
+ browserHistory.push(data.goto_location);
+ } else {
+ window.open(data.goto_location);
+ }
}
},
(err) => {