diff --git a/internal/web/actions/default/servers/server/settings/pages/createPopup.go b/internal/web/actions/default/servers/server/settings/pages/createPopup.go index b480484c..9ee59043 100644 --- a/internal/web/actions/default/servers/server/settings/pages/createPopup.go +++ b/internal/web/actions/default/servers/server/settings/pages/createPopup.go @@ -6,6 +6,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/types" ) @@ -19,12 +20,18 @@ func (this *CreatePopupAction) Init() { } func (this *CreatePopupAction) RunGet(params struct{}) { + this.Data["bodyTypes"] = shared.FindAllBodyTypes() + this.Show() } func (this *CreatePopupAction) RunPost(params struct { - Status string - URL string `alias:"url"` + Status string + BodyType string + + URL string `alias:"url"` + Body string + NewStatus int Must *actions.Must }) { @@ -32,13 +39,24 @@ func (this *CreatePopupAction) RunPost(params struct { params.Must. Field("status", params.Status). - Require("请输入响应状态码"). - Field("url", params.URL). - Require("请输入要显示的URL") + Require("请输入响应状态码") + + switch params.BodyType { + case shared.BodyTypeURL: + params.Must. + Field("url", params.URL). + Require("请输入要显示的URL") + case shared.BodyTypeHTML: + params.Must. + Field("body", params.Body). + Require("请输入要显示的HTML内容") + } createResp, err := this.RPC().HTTPPageRPC().CreateHTTPPage(this.AdminContext(), &pb.CreateHTTPPageRequest{ StatusList: []string{params.Status}, + BodyType: params.BodyType, Url: params.URL, + Body: params.Body, NewStatus: types.Int32(params.NewStatus), }) if err != nil { diff --git a/internal/web/actions/default/servers/server/settings/pages/updatePopup.go b/internal/web/actions/default/servers/server/settings/pages/updatePopup.go index 15764f33..84e7ece7 100644 --- a/internal/web/actions/default/servers/server/settings/pages/updatePopup.go +++ b/internal/web/actions/default/servers/server/settings/pages/updatePopup.go @@ -6,6 +6,7 @@ import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/types" ) @@ -21,6 +22,8 @@ func (this *UpdatePopupAction) Init() { func (this *UpdatePopupAction) RunGet(params struct { PageId int64 }) { + this.Data["bodyTypes"] = shared.FindAllBodyTypes() + configResp, err := this.RPC().HTTPPageRPC().FindEnabledHTTPPageConfig(this.AdminContext(), &pb.FindEnabledHTTPPageConfigRequest{PageId: params.PageId}) if err != nil { this.ErrorPage(err) @@ -41,8 +44,12 @@ func (this *UpdatePopupAction) RunGet(params struct { func (this *UpdatePopupAction) RunPost(params struct { PageId int64 - Status string - URL string `alias:"url"` + Status string + + BodyType string + URL string `alias:"url"` + Body string + NewStatus int Must *actions.Must @@ -52,14 +59,25 @@ func (this *UpdatePopupAction) RunPost(params struct { params.Must. Field("status", params.Status). - Require("请输入响应状态码"). - Field("url", params.URL). - Require("请输入要显示的URL") + Require("请输入响应状态码") + + switch params.BodyType { + case shared.BodyTypeURL: + params.Must. + Field("url", params.URL). + Require("请输入要显示的URL") + case shared.BodyTypeHTML: + params.Must. + Field("body", params.Body). + Require("请输入要显示的HTML内容") + } _, err := this.RPC().HTTPPageRPC().UpdateHTTPPage(this.AdminContext(), &pb.UpdateHTTPPageRequest{ PageId: params.PageId, StatusList: []string{params.Status}, + BodyType: params.BodyType, Url: params.URL, + Body: params.Body, NewStatus: types.Int32(params.NewStatus), }) if err != nil { diff --git a/web/public/js/components/server/http-pages-and-shutdown-box.js b/web/public/js/components/server/http-pages-and-shutdown-box.js index 545b21b7..dc213058 100644 --- a/web/public/js/components/server/http-pages-and-shutdown-box.js +++ b/web/public/js/components/server/http-pages-and-shutdown-box.js @@ -8,10 +8,18 @@ Vue.component("http-pages-and-shutdown-box", { let shutdownConfig = { isPrior: false, isOn: false, + bodyType: "url", url: "", + body: "", status: 0 } if (this.vShutdownConfig != null) { + if (this.vShutdownConfig.body == null) { + this.vShutdownConfig.body = "" + } + if (this.vShutdownConfig.bodyType == null) { + this.vShutdownConfig.bodyType = "url" + } shutdownConfig = this.vShutdownConfig } @@ -40,7 +48,7 @@ Vue.component("http-pages-and-shutdown-box", { addPage: function () { let that = this teaweb.popup("/servers/server/settings/pages/createPopup", { - height: "22em", + height: "26em", callback: function (resp) { that.pages.push(resp.data.page) } @@ -49,7 +57,7 @@ Vue.component("http-pages-and-shutdown-box", { updatePage: function (pageIndex, pageId) { let that = this teaweb.popup("/servers/server/settings/pages/updatePopup?pageId=" + pageId, { - height: "22em", + height: "26em", callback: function (resp) { Vue.set(that.pages, pageIndex, resp.data.page) } @@ -60,6 +68,23 @@ Vue.component("http-pages-and-shutdown-box", { teaweb.confirm("确定要移除此页面吗?", function () { that.pages.$remove(pageIndex) }) + }, + addShutdownHTMLTemplate: function () { + this.shutdownConfig.body = ` + +
+\t为了给您提供更好的服务,我们正在升级网站,请稍后重新访问。
+ + + + +` } }, template: `页面文件是相对于节点安装目录的页面文件比如pages/40x.html,或者一个完整的URL。
[使用模板]。填写页面的HTML内容,支持请求变量。
+比如404,或者50x。
页面文件是相对于节点安装目录的页面文件比如web/pages/40x.html,或者一个完整的URL。
[使用模板]。填写页面的HTML内容,支持请求变量。
+内容
+ + + + +` + } +}) \ No newline at end of file diff --git a/web/views/@default/servers/server/settings/pages/updatePopup.html b/web/views/@default/servers/server/settings/pages/updatePopup.html index cc18e2c3..b6517331 100644 --- a/web/views/@default/servers/server/settings/pages/updatePopup.html +++ b/web/views/@default/servers/server/settings/pages/updatePopup.html @@ -10,13 +10,28 @@比如404,或者50x。
页面文件是相对于节点安装目录的页面文件比如web/pages/40x.html,或者一个完整的URL。
[使用模板]。填写页面的HTML内容,支持请求变量。
+内容
+ + + + +` + } }) \ No newline at end of file