mirror of
https://github.com/schollz/cowyo.git
synced 2023-08-10 21:13:00 +03:00
Make 'New' work even when you specify a default page.
This commit is contained in:
parent
9accd685c0
commit
3312ebd4af
File diff suppressed because one or more lines are too long
@ -159,19 +159,76 @@ func (s Site) Router() *gin.Engine {
|
||||
// router.Use(static.Serve("/static/", static.LocalFile("./static", true)))
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
if s.DefaultPage != "" {
|
||||
c.Redirect(302, "/"+s.DefaultPage+"/read")
|
||||
c.Redirect(302, "/page/"+s.DefaultPage+"/read")
|
||||
} else {
|
||||
c.Redirect(302, "/"+randomAlliterateCombo())
|
||||
c.Redirect(302, "/page/"+randomAlliterateCombo())
|
||||
}
|
||||
})
|
||||
|
||||
router.POST("/uploads", s.handleUpload)
|
||||
|
||||
router.GET("/:page", func(c *gin.Context) {
|
||||
page := c.Param("page")
|
||||
c.Redirect(302, "/"+page+"/")
|
||||
router.GET("/favicon.ico", func(c *gin.Context) {
|
||||
data, _ := Asset("/static/img/cowyo/favicon.ico")
|
||||
c.Data(http.StatusOK, contentType("/static/img/cowyo/favicon.ico"), data)
|
||||
})
|
||||
router.GET("/:page/*command", s.handlePageRequest)
|
||||
|
||||
router.GET("/static/*staticPage", func(c *gin.Context) {
|
||||
staticPage := c.Param("staticPage")
|
||||
filename := "static" + staticPage
|
||||
var data []byte
|
||||
if filename == "static/css/custom.css" {
|
||||
data = s.Css
|
||||
} else {
|
||||
fmt.Printf("Looking for %s\n", filename)
|
||||
var errAssset error
|
||||
data, errAssset = Asset(filename)
|
||||
if errAssset != nil {
|
||||
c.String(http.StatusInternalServerError, fmt.Sprintf("Could not find data: %s", errAssset))
|
||||
}
|
||||
}
|
||||
c.Data(http.StatusOK, contentType(filename), data)
|
||||
})
|
||||
|
||||
router.GET("/uploads/*upload", func(c *gin.Context) {
|
||||
upload := c.Param("upload")
|
||||
if len(upload) == 0 || upload == "/" || upload == "/edit" {
|
||||
if !s.Fileuploads {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("Uploads are disabled on this server"))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
upload = upload[1:]
|
||||
if !strings.HasSuffix(upload, ".upload") {
|
||||
upload = upload + ".upload"
|
||||
}
|
||||
pathname := path.Join(s.PathToData, upload)
|
||||
|
||||
if allowInsecureHtml {
|
||||
c.Header(
|
||||
"Content-Disposition",
|
||||
`inline; filename="`+c.DefaultQuery("filename", "upload")+`"`,
|
||||
)
|
||||
} else {
|
||||
// Prevent malicious html uploads by forcing type to plaintext and 'download-instead-of-view'
|
||||
c.Header("Content-Type", "text/plain")
|
||||
c.Header(
|
||||
"Content-Disposition",
|
||||
`attachment; filename="`+c.DefaultQuery("filename", "upload")+`"`,
|
||||
)
|
||||
}
|
||||
c.File(pathname)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
router.GET("/new", func(c *gin.Context) {
|
||||
c.Redirect(302, "/page/"+randomAlliterateCombo())
|
||||
})
|
||||
router.GET("/page/:page", func(c *gin.Context) {
|
||||
page := c.Param("page")
|
||||
c.Redirect(302, "/page/"+page+"/")
|
||||
})
|
||||
router.GET("/page/:page/*command", s.handlePageRequest)
|
||||
router.POST("/update", s.handlePageUpdate)
|
||||
router.POST("/relinquish", s.handlePageRelinquish) // relinquish returns the page no matter what (and destroys if nessecary)
|
||||
router.POST("/exists", s.handlePageExists)
|
||||
@ -380,9 +437,9 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
||||
p := s.Open(page)
|
||||
if len(command) < 2 {
|
||||
if p.IsPublished {
|
||||
c.Redirect(302, "/"+page+"/read")
|
||||
c.Redirect(302, "/page/"+page+"/read")
|
||||
} else {
|
||||
c.Redirect(302, "/"+page+"/edit")
|
||||
c.Redirect(302, "/page/"+page+"/edit")
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -399,7 +456,7 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
||||
// Disallow anything but viewing locked/encrypted pages
|
||||
if (p.IsEncrypted || isLocked) &&
|
||||
(command[0:2] != "/v" && command[0:2] != "/r") {
|
||||
c.Redirect(302, "/"+page+"/view")
|
||||
c.Redirect(302, "/page/"+page+"/view")
|
||||
return
|
||||
}
|
||||
|
||||
@ -416,9 +473,9 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
||||
if command == "/erase" {
|
||||
if !isLocked && !p.IsEncrypted {
|
||||
p.Erase()
|
||||
c.Redirect(302, "/"+page+"/edit")
|
||||
c.Redirect(302, "/page/"+page+"/edit")
|
||||
} else {
|
||||
c.Redirect(302, "/"+page+"/view")
|
||||
c.Redirect(302, "/page/"+page+"/view")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -71,9 +71,9 @@
|
||||
<a href="#" id="menuLink1" class="pure-menu-link">{{ .Page }}</a>
|
||||
<ul class="pure-menu-children">
|
||||
{{ if .DiaryMode }}
|
||||
<li class="pure-menu-item"><a href="/{{ .Date }}/edit" class="pure-menu-link">New</a></li>
|
||||
<li class="pure-menu-item"><a href="/page/{{ .Date }}/edit" class="pure-menu-link">New</a></li>
|
||||
{{ else }}
|
||||
<li class="pure-menu-item"><a href="/" class="pure-menu-link">New</a></li>
|
||||
<li class="pure-menu-item"><a href="/new" class="pure-menu-link">New</a></li>
|
||||
{{ end }}
|
||||
<li class="pure-menu-item"><a href="https://github.com/schollz/cowyo" class="pure-menu-link">Source</a></li>
|
||||
{{ if .EditPage }}
|
||||
@ -90,7 +90,7 @@
|
||||
{{ else }}
|
||||
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="encryptPage">{{ if .IsEncrypted }}Decrypt{{ else }}Encrypt{{end}}</a></li>
|
||||
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="lockPage">{{ if .IsLocked }}Unlock{{ else }}Lock{{end}}</a></li>
|
||||
<li class="pure-menu-item"><a href="/{{ .Page }}/history" class="pure-menu-link">History</a></li>
|
||||
<li class="pure-menu-item"><a href="/page/{{ .Page }}/history" class="pure-menu-link">History</a></li>
|
||||
<hr>
|
||||
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="selfDestructPage">Self-destruct</a></li>
|
||||
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="erasePage">Erase</a></li>
|
||||
@ -99,10 +99,10 @@
|
||||
</li>
|
||||
|
||||
<li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover {{ with .ViewPage }}pure-menu-selected{{ end }}">
|
||||
<a href="/{{ .Page }}/view" class="pure-menu-link">View</a>
|
||||
<a href="/page/{{ .Page }}/view" class="pure-menu-link">View</a>
|
||||
<ul class="pure-menu-children">
|
||||
<li class="pure-menu-item">
|
||||
<a href="/{{ .Page }}/read" class="pure-menu-link">Current</a>
|
||||
<a href="/page/{{ .Page }}/read" class="pure-menu-link">Current</a>
|
||||
</li>
|
||||
{{ range .RecentlyEdited}}
|
||||
<li class="pure-menu-item"><a class="pure-menu-link" href="/{{.}}/read">{{.}}</a></li>
|
||||
@ -122,9 +122,9 @@
|
||||
{{ if .ListPage }}
|
||||
<li class="pure-menu-item {{ with .ListPage }}pure-menu-selected{{ end }}"><a href="#" class="pure-menu-link" id="clearOld">Clear done</a></li>
|
||||
{{ else }}
|
||||
<li class="pure-menu-item {{ with .ListPage }}pure-menu-selected{{ end }}"><a href="/{{ .Page }}/list" class="pure-menu-link">List</a></li>
|
||||
<li class="pure-menu-item {{ with .ListPage }}pure-menu-selected{{ end }}"><a href="/page/{{ .Page }}/list" class="pure-menu-link">List</a></li>
|
||||
{{ end }}
|
||||
<li class="pure-menu-item {{ with .EditPage }}pure-menu-selected{{ end }}"><a href="/{{ .Page }}/edit" class="pure-menu-link"><span id="saveEditButton">Edit</span></a></li>
|
||||
<li class="pure-menu-item {{ with .EditPage }}pure-menu-selected{{ end }}"><a href="/page/{{ .Page }}/edit" class="pure-menu-link"><span id="saveEditButton">Edit</span></a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
@ -183,11 +183,11 @@
|
||||
<ul>
|
||||
{{range $i, $e := .Versions}}
|
||||
<li style="list-style: none;">
|
||||
<a href="/{{ $.Page }}/view?version={{$e}}">View</a>
|
||||
<a href="/page/{{ $.Page }}/view?version={{$e}}">View</a>
|
||||
|
||||
<a href="/{{ $.Page }}/list?version={{$e}}">List</a>
|
||||
<a href="/page/{{ $.Page }}/list?version={{$e}}">List</a>
|
||||
|
||||
<a href="/{{ $.Page }}/raw?version={{$e}}">Raw</a>
|
||||
<a href="/page/{{ $.Page }}/raw?version={{$e}}">Raw</a>
|
||||
|
||||
{{index $.VersionsText $i}} ({{if lt (index $.VersionsChangeSums $i) 0}}<span style="color:red">{{else}}<span style="color:green">+{{end}}{{index $.VersionsChangeSums $i}}</span>)</li>
|
||||
{{end}}
|
||||
|
Loading…
Reference in New Issue
Block a user