Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6175c77478 | |||
| 742f42115f | |||
| 9e7914c9a1 | |||
| fe9d8e71f4 |
@@ -1,9 +1,11 @@
|
|||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -32,6 +34,12 @@ func NewBookmarkManager(db *DB) *BookmarkManager {
|
|||||||
// if this bookmark already exists (based on URL match).
|
// if this bookmark already exists (based on URL match).
|
||||||
// The entity.Bookmark ID field will be updated.
|
// The entity.Bookmark ID field will be updated.
|
||||||
func (m *BookmarkManager) AddBookmark(bm *entity.Bookmark) error {
|
func (m *BookmarkManager) AddBookmark(bm *entity.Bookmark) error {
|
||||||
|
|
||||||
|
if strings.Index(bm.URL, "https://") != 0 &&
|
||||||
|
strings.Index(bm.URL, "http://") != 0 {
|
||||||
|
return errors.New("URL must begin with http:// or https://")
|
||||||
|
}
|
||||||
|
|
||||||
existing := entity.Bookmark{}
|
existing := entity.Bookmark{}
|
||||||
err := m.db.store.FindOne(&existing, bolthold.Where("URL").Eq(bm.URL))
|
err := m.db.store.FindOne(&existing, bolthold.Where("URL").Eq(bm.URL))
|
||||||
if err != bolthold.ErrNotFound {
|
if err != bolthold.ErrNotFound {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"golang.org/x/mod/semver"
|
"golang.org/x/mod/semver"
|
||||||
)
|
)
|
||||||
|
|
||||||
const Tag = "v0.0.25"
|
const Tag = "v0.0.27"
|
||||||
|
|
||||||
var versionInfo struct {
|
var versionInfo struct {
|
||||||
Local struct {
|
Local struct {
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
|
|
||||||
<form onsubmit="return false">
|
<form onsubmit="return false">
|
||||||
<div class="grid-x grid-padding-x">
|
<div class="grid-x grid-padding-x">
|
||||||
<div class="large-6 cell">
|
<div class="medium-6 cell">
|
||||||
<label>URL</label>
|
<label>URL</label>
|
||||||
<input type="text" name="url" value="{{ .url }}"
|
<input type="text" name="url" value="{{ .url }}"
|
||||||
hx-trigger=""
|
hx-trigger=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="large-6 cell">
|
<div class="medium-6 cell">
|
||||||
{{ template "tags_widget.html" . }}
|
{{ template "tags_widget.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div id="label-widget" >
|
<div id="label-widget" >
|
||||||
<div class="grid-x grid-padding-x">
|
<div class="grid-x grid-padding-x">
|
||||||
<div class="small-9 medium-10 large-5 cell"
|
<div class="small-6 cell"
|
||||||
hx-post="/tags"
|
hx-post="/tags"
|
||||||
hx-target="#label-widget"
|
hx-target="#label-widget"
|
||||||
hx-trigger="change queue:first">
|
hx-trigger="change queue:first">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<input id="tag-entry" type="text" name="tag" placeholder="enter tags" />
|
<input id="tag-entry" type="text" name="tag" placeholder="enter tags" />
|
||||||
</div>
|
</div>
|
||||||
<div class="small-12 large-6 cell" id="tags-list">
|
<div class="small-6 cell" id="tags-list">
|
||||||
{{ range .tags }}
|
{{ range .tags }}
|
||||||
<a href="#"
|
<a href="#"
|
||||||
class=""
|
class=""
|
||||||
|
|||||||
@@ -205,6 +205,13 @@ func Create(bmm *db.BookmarkManager, cmm *db.ConfigManager) *Server {
|
|||||||
"bm": bm,
|
"bm": bm,
|
||||||
"error": err,
|
"error": err,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
data["url"] = url
|
||||||
|
data["tags"] = tags
|
||||||
|
data["tags_hidden"] = c.PostForm("tags_hidden")
|
||||||
|
}
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "add_url_form.html", data)
|
c.HTML(http.StatusOK, "add_url_form.html", data)
|
||||||
})
|
})
|
||||||
r.POST("/add_bulk", func(c *gin.Context) {
|
r.POST("/add_bulk", func(c *gin.Context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user