1
0
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:
Kyle Nusbaum 2019-01-31 19:14:00 -06:00
parent 9accd685c0
commit 3312ebd4af
3 changed files with 126 additions and 69 deletions

File diff suppressed because one or more lines are too long

View File

@ -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
}

View File

@ -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>
&nbsp;&nbsp;
<a href="/{{ $.Page }}/list?version={{$e}}">List</a>
<a href="/page/{{ $.Page }}/list?version={{$e}}">List</a>
&nbsp;&nbsp;
<a href="/{{ $.Page }}/raw?version={{$e}}">Raw</a>
<a href="/page/{{ $.Page }}/raw?version={{$e}}">Raw</a>
&nbsp;&nbsp;
{{index $.VersionsText $i}}&nbsp;({{if lt (index $.VersionsChangeSums $i) 0}}<span style="color:red">{{else}}<span style="color:green">+{{end}}{{index $.VersionsChangeSums $i}}</span>)</li>
{{end}}