Skip to content
Closed
7 changes: 7 additions & 0 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3296,6 +3296,13 @@ config.send_test_mail_submit = Send
config.test_mail_failed = Failed to send a testing email to "%s": %v
config.test_mail_sent = A testing email has been sent to "%s".

config.incoming_mail_config = Incoming Mail Configuration
config.incoming_mail_enabled = Enabled
config.incoming_mail_test = Test Incoming Mail
config.incoming_mail_test_btn = Test
config.incoming_mail_description = Test Description
config.incoming_mail_result = Test Result

config.oauth_config = OAuth Configuration
config.oauth_enabled = Enabled

Expand Down
33 changes: 31 additions & 2 deletions routers/web/admin/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"net/url"
"strconv"
"strings"
"time"

system_model "code.gitea.io/gitea/models/system"
"code.gitea.io/gitea/modules/base"
Expand All @@ -26,10 +27,16 @@ import (
)

const (
tplConfig base.TplName = "admin/config"
tplConfigSettings base.TplName = "admin/config_settings"
tplConfig base.TplName = "admin/config"
tplConfigIncomingMailTestResult base.TplName = "admin/config_incoming_mail_test_result"
tplConfigSettings base.TplName = "admin/config_settings"
)

var incomingMailResult struct {
Time int64
Result string
}

// SendTestMail send test mail to confirm mail service is OK
func SendTestMail(ctx *context.Context) {
email := ctx.FormString("email")
Expand All @@ -43,6 +50,21 @@ func SendTestMail(ctx *context.Context) {
ctx.Redirect(setting.AppSubURL + "/-/admin/config")
}

// TestIncomingMail ...
func TestIncomingMail(ctx *context.Context) {
log.Trace("call TestIncomingMail")
incomingMailResult.Time = time.Now().Unix()
incomingMailResult.Result = "ok"
ctx.Redirect(setting.AppSubURL + "/-/admin/config")
}

// IncomingMail ...
func IncomingMail(ctx *context.Context) {
log.Trace("call IncomingMail")
ctx.Data["IncomingMailResult"] = incomingMailResult
ctx.HTML(http.StatusOK, tplConfigIncomingMailTestResult)
}

// TestCache test the cache settings
func TestCache(ctx *context.Context) {
elapsed, err := cache.Test()
Expand Down Expand Up @@ -152,6 +174,13 @@ func Config(ctx *context.Context) {
ctx.Data["Mailer"] = setting.MailService
}

ctx.Data["IncomingMailEnabled"] = false
if setting.MailService != nil && setting.IncomingEmail.Enabled {
ctx.Data["IncomingMailEnabled"] = true
}
ctx.Data["IncomingMail"] = setting.IncomingEmail
ctx.Data["IncomingMailResult"] = incomingMailResult

ctx.Data["CacheAdapter"] = setting.CacheService.Adapter
ctx.Data["CacheInterval"] = setting.CacheService.Interval

Expand Down
8 changes: 6 additions & 2 deletions routers/web/web.go
Original file line number Diff line number Diff line change
Expand Up @@ -712,8 +712,12 @@ func registerRoutes(m *web.Router) {
m.Group("/config", func() {
m.Get("", admin.Config)
m.Post("", admin.ChangeConfig)
m.Post("/test_mail", admin.SendTestMail)
m.Post("/test_cache", admin.TestCache)
m.Group("/test", func() {
m.Post("/mail", admin.SendTestMail)
m.Get("/incoming-mail", admin.IncomingMail)
m.Post("/incoming-mail", admin.TestIncomingMail)
m.Post("/cache", admin.TestCache)
})
m.Get("/settings", admin.ConfigSettings)
})

Expand Down
30 changes: 28 additions & 2 deletions templates/admin/config.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
<div class="divider"></div>
<dt class="tw-py-1 tw-flex tw-items-center">{{ctx.Locale.Tr "admin.config.send_test_mail"}}</dt>
<dd class="tw-py-0">
<form class="ui form ignore-dirty" action="{{AppSubUrl}}/-/admin/config/test_mail" method="post">
<form class="ui form ignore-dirty" action="{{AppSubUrl}}/-/admin/config/test/mail" method="post">
{{.CsrfTokenHtml}}
<div class="ui tiny input">
<input type="email" name="email" placeholder="{{ctx.Locale.Tr "admin.config.test_email_placeholder"}}" size="29" required>
Expand All @@ -243,6 +243,32 @@
</dl>
</div>

<h4 class="ui top attached header">
{{ctx.Locale.Tr "admin.config.incoming_mail_config"}}
</h4>
<div class="ui attached table segment">
<dl class="admin-dl-horizontal">
<dt>{{ctx.Locale.Tr "admin.config.incoming_mail_enabled"}}</dt>
<dd>{{svg (Iif .IncomingMailEnabled "octicon-check" "octicon-x")}}</dd>
{{if .IncomingMailEnabled}}
<div class="divider"></div>
<dt>{{ctx.Locale.Tr "admin.config.incoming_mail_test"}}</dt>
<dd class="tw-py-0">
<form class="ui form" action="{{AppSubUrl}}/-/admin/config/test/incoming-mail" method="post">
{{.CsrfTokenHtml}}
<button class="ui tiny primary button" data-tooltip-placement="top" data-tooltip-content={{ctx.Locale.Tr "admin.config.incoming_mail_description"}} data-tooltip-follow-cursor="horizontal">
{{ctx.Locale.Tr "admin.config.incoming_mail_test_btn"}}
</button>
</form>
</dd>
<dt class="tw-py-1 tw-flex tw-items-center">{{ctx.Locale.Tr "admin.config.incoming_mail_result"}}</dt>
<dd hx-get="{{$.Link}}/test/incoming-mail" hx-swap="morph:innerHTML" hx-trigger="every 5s" hx-indicator=".no-loading-indicator">
{{template "admin/config_incoming_mail_test_result" .}}
</dd>
{{end}}
</dl>
</div>

<h4 class="ui top attached header">
{{ctx.Locale.Tr "admin.config.cache_config"}}
</h4>
Expand All @@ -263,7 +289,7 @@
<div class="divider"></div>
<dt class="tw-py-1 tw-flex tw-items-center">{{ctx.Locale.Tr "admin.config.cache_test"}}</dt>
<dd class="tw-py-0">
<form class="ui form ignore-dirty" action="{{AppSubUrl}}/-/admin/config/test_cache" method="post">
<form class="ui form ignore-dirty" action="{{AppSubUrl}}/-/admin/config/test/cache" method="post">
{{.CsrfTokenHtml}}
<button class="ui tiny primary button">{{ctx.Locale.Tr "test"}}</button>
</form>
Expand Down
8 changes: 8 additions & 0 deletions templates/admin/config_incoming_mail_test_result.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{{if gt .IncomingMailResult.Time 0}}
<pre class="tw-m-0">
{
"time": {{.IncomingMailResult.Time}},
"result": {{.IncomingMailResult.Result}}
}
</pre>
{{end}}
Loading