mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-14 18:24:14 +01:00
a43ea22479
Co-author: @wxiaoguang Close #25096 The way to fix it in this PR is to change form submit to fetch using formData, and add flags to avoid post repeatedly. Should be able to apply to more forms that have the same issue after this PR. In the demo below, 'approve' is clicked several times, and then 'comment' is clicked several time after 'request changes' clicked. After: https://github.com/go-gitea/gitea/assets/17645053/beabeb1d-fe66-4b76-b048-4f022b4e83a0 Update: screenshots from /devtest > ![image](https://user-images.githubusercontent.com/2114189/245680011-ee4231e0-a53d-4c2a-a9c2-71ccd98005cc.png) > > ![image](https://user-images.githubusercontent.com/2114189/245680057-9215d348-63d8-406d-8828-17e171163aaa.png) > > ![image](https://user-images.githubusercontent.com/2114189/245680148-89d7b3d1-d7b6-442f-b69e-eadaee112482.png) --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package devtest
|
|
|
|
import (
|
|
"net/http"
|
|
"path"
|
|
"strings"
|
|
"time"
|
|
|
|
"code.gitea.io/gitea/modules/base"
|
|
"code.gitea.io/gitea/modules/context"
|
|
"code.gitea.io/gitea/modules/templates"
|
|
)
|
|
|
|
// List all devtest templates, they will be used for e2e tests for the UI components
|
|
func List(ctx *context.Context) {
|
|
templateNames, err := templates.AssetFS().ListFiles("devtest", true)
|
|
if err != nil {
|
|
ctx.ServerError("AssetFS().ListFiles", err)
|
|
return
|
|
}
|
|
var subNames []string
|
|
for _, tmplName := range templateNames {
|
|
subName := strings.TrimSuffix(tmplName, ".tmpl")
|
|
if subName != "list" {
|
|
subNames = append(subNames, subName)
|
|
}
|
|
}
|
|
ctx.Data["SubNames"] = subNames
|
|
ctx.HTML(http.StatusOK, "devtest/list")
|
|
}
|
|
|
|
func FetchActionTest(ctx *context.Context) {
|
|
_ = ctx.Req.ParseForm()
|
|
ctx.Flash.Info(ctx.Req.Method + " " + ctx.Req.RequestURI + "<br>" +
|
|
"Form: " + ctx.Req.Form.Encode() + "<br>" +
|
|
"PostForm: " + ctx.Req.PostForm.Encode(),
|
|
)
|
|
time.Sleep(2 * time.Second)
|
|
ctx.JSONRedirect("")
|
|
}
|
|
|
|
func Tmpl(ctx *context.Context) {
|
|
now := time.Now()
|
|
ctx.Data["TimeNow"] = now
|
|
ctx.Data["TimePast5s"] = now.Add(-5 * time.Second)
|
|
ctx.Data["TimeFuture5s"] = now.Add(5 * time.Second)
|
|
ctx.Data["TimePast2m"] = now.Add(-2 * time.Minute)
|
|
ctx.Data["TimeFuture2m"] = now.Add(2 * time.Minute)
|
|
ctx.Data["TimePast1y"] = now.Add(-1 * 366 * 86400 * time.Second)
|
|
ctx.Data["TimeFuture1y"] = now.Add(1 * 366 * 86400 * time.Second)
|
|
|
|
ctx.HTML(http.StatusOK, base.TplName("devtest"+path.Clean("/"+ctx.Params("sub"))))
|
|
}
|