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.Use(static.Serve("/static/", static.LocalFile("./static", true)))
|
||||||
router.GET("/", func(c *gin.Context) {
|
router.GET("/", func(c *gin.Context) {
|
||||||
if s.DefaultPage != "" {
|
if s.DefaultPage != "" {
|
||||||
c.Redirect(302, "/"+s.DefaultPage+"/read")
|
c.Redirect(302, "/page/"+s.DefaultPage+"/read")
|
||||||
} else {
|
} else {
|
||||||
c.Redirect(302, "/"+randomAlliterateCombo())
|
c.Redirect(302, "/page/"+randomAlliterateCombo())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
router.POST("/uploads", s.handleUpload)
|
router.POST("/uploads", s.handleUpload)
|
||||||
|
|
||||||
router.GET("/:page", func(c *gin.Context) {
|
router.GET("/favicon.ico", func(c *gin.Context) {
|
||||||
page := c.Param("page")
|
data, _ := Asset("/static/img/cowyo/favicon.ico")
|
||||||
c.Redirect(302, "/"+page+"/")
|
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("/update", s.handlePageUpdate)
|
||||||
router.POST("/relinquish", s.handlePageRelinquish) // relinquish returns the page no matter what (and destroys if nessecary)
|
router.POST("/relinquish", s.handlePageRelinquish) // relinquish returns the page no matter what (and destroys if nessecary)
|
||||||
router.POST("/exists", s.handlePageExists)
|
router.POST("/exists", s.handlePageExists)
|
||||||
@ -380,9 +437,9 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
|||||||
p := s.Open(page)
|
p := s.Open(page)
|
||||||
if len(command) < 2 {
|
if len(command) < 2 {
|
||||||
if p.IsPublished {
|
if p.IsPublished {
|
||||||
c.Redirect(302, "/"+page+"/read")
|
c.Redirect(302, "/page/"+page+"/read")
|
||||||
} else {
|
} else {
|
||||||
c.Redirect(302, "/"+page+"/edit")
|
c.Redirect(302, "/page/"+page+"/edit")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -399,7 +456,7 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
|||||||
// Disallow anything but viewing locked/encrypted pages
|
// Disallow anything but viewing locked/encrypted pages
|
||||||
if (p.IsEncrypted || isLocked) &&
|
if (p.IsEncrypted || isLocked) &&
|
||||||
(command[0:2] != "/v" && command[0:2] != "/r") {
|
(command[0:2] != "/v" && command[0:2] != "/r") {
|
||||||
c.Redirect(302, "/"+page+"/view")
|
c.Redirect(302, "/page/"+page+"/view")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -416,9 +473,9 @@ func (s *Site) handlePageRequest(c *gin.Context) {
|
|||||||
if command == "/erase" {
|
if command == "/erase" {
|
||||||
if !isLocked && !p.IsEncrypted {
|
if !isLocked && !p.IsEncrypted {
|
||||||
p.Erase()
|
p.Erase()
|
||||||
c.Redirect(302, "/"+page+"/edit")
|
c.Redirect(302, "/page/"+page+"/edit")
|
||||||
} else {
|
} else {
|
||||||
c.Redirect(302, "/"+page+"/view")
|
c.Redirect(302, "/page/"+page+"/view")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -71,9 +71,9 @@
|
|||||||
<a href="#" id="menuLink1" class="pure-menu-link">{{ .Page }}</a>
|
<a href="#" id="menuLink1" class="pure-menu-link">{{ .Page }}</a>
|
||||||
<ul class="pure-menu-children">
|
<ul class="pure-menu-children">
|
||||||
{{ if .DiaryMode }}
|
{{ 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 }}
|
{{ 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 }}
|
{{ end }}
|
||||||
<li class="pure-menu-item"><a href="https://github.com/schollz/cowyo" class="pure-menu-link">Source</a></li>
|
<li class="pure-menu-item"><a href="https://github.com/schollz/cowyo" class="pure-menu-link">Source</a></li>
|
||||||
{{ if .EditPage }}
|
{{ if .EditPage }}
|
||||||
@ -90,7 +90,7 @@
|
|||||||
{{ else }}
|
{{ 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="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="#" 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>
|
<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="selfDestructPage">Self-destruct</a></li>
|
||||||
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="erasePage">Erase</a></li>
|
<li class="pure-menu-item"><a href="#" class="pure-menu-link" id="erasePage">Erase</a></li>
|
||||||
@ -99,10 +99,10 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover {{ with .ViewPage }}pure-menu-selected{{ end }}">
|
<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">
|
<ul class="pure-menu-children">
|
||||||
<li class="pure-menu-item">
|
<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>
|
</li>
|
||||||
{{ range .RecentlyEdited}}
|
{{ range .RecentlyEdited}}
|
||||||
<li class="pure-menu-item"><a class="pure-menu-link" href="/{{.}}/read">{{.}}</a></li>
|
<li class="pure-menu-item"><a class="pure-menu-link" href="/{{.}}/read">{{.}}</a></li>
|
||||||
@ -122,9 +122,9 @@
|
|||||||
{{ if .ListPage }}
|
{{ 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>
|
<li class="pure-menu-item {{ with .ListPage }}pure-menu-selected{{ end }}"><a href="#" class="pure-menu-link" id="clearOld">Clear done</a></li>
|
||||||
{{ else }}
|
{{ 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 }}
|
{{ 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}}
|
{{end}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -183,11 +183,11 @@
|
|||||||
<ul>
|
<ul>
|
||||||
{{range $i, $e := .Versions}}
|
{{range $i, $e := .Versions}}
|
||||||
<li style="list-style: none;">
|
<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>
|
{{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}}
|
{{end}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user