aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--locale/translations.go8
-rw-r--r--locale/translations/fr_FR.json4
-rw-r--r--server/static/bin.go2
-rw-r--r--server/static/css.go2
-rw-r--r--server/static/js.go2
-rw-r--r--server/template/common.go2
-rw-r--r--server/template/views.go2
-rw-r--r--server/ui/controller/category.go23
-rw-r--r--sql/sql.go2
-rw-r--r--storage/category.go12
10 files changed, 47 insertions, 12 deletions
diff --git a/locale/translations.go b/locale/translations.go
index a437654..bbe62d3 100644
--- a/locale/translations.go
+++ b/locale/translations.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.654499991 -0800 PST m=+0.006321563
+// 2017-11-21 14:55:14.456403496 -0800 PST m=+0.037949400
package locale
@@ -137,12 +137,14 @@ var Translations = map[string]string{
"no": "non",
"Are you sure?": "Êtes-vous sûr ?",
"Work in progress...": "Travail en cours...",
- "This user already exists.": "Cet utilisateur existe déjà."
+ "This user already exists.": "Cet utilisateur existe déjà.",
+ "This category already exists.": "Cette catégorie existe déjà.",
+ "Unable to update this category.": "Impossible de mettre à jour cette catégorie."
}
`,
}
var TranslationsChecksums = map[string]string{
"en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897",
- "fr_FR": "bfa4a8bb15bd6016da8b9b5f851121a4ae278e2a195cd2edc4737ff075d28f02",
+ "fr_FR": "5c8c2c5e35a17a7dd3c30596b73342f70950a3bbce00786d43ccba01b96ea672",
}
diff --git a/locale/translations/fr_FR.json b/locale/translations/fr_FR.json
index 8ba010c..9cbe220 100644
--- a/locale/translations/fr_FR.json
+++ b/locale/translations/fr_FR.json
@@ -121,5 +121,7 @@
"no": "non",
"Are you sure?": "Êtes-vous sûr ?",
"Work in progress...": "Travail en cours...",
- "This user already exists.": "Cet utilisateur existe déjà."
+ "This user already exists.": "Cet utilisateur existe déjà.",
+ "This category already exists.": "Cette catégorie existe déjà.",
+ "Unable to update this category.": "Impossible de mettre à jour cette catégorie."
}
diff --git a/server/static/bin.go b/server/static/bin.go
index af1c085..dc411fa 100644
--- a/server/static/bin.go
+++ b/server/static/bin.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.651098874 -0800 PST m=+0.002920446
+// 2017-11-21 14:55:14.42928305 -0800 PST m=+0.010828954
package static
diff --git a/server/static/css.go b/server/static/css.go
index e632be5..e2d14e3 100644
--- a/server/static/css.go
+++ b/server/static/css.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.651532115 -0800 PST m=+0.003353687
+// 2017-11-21 14:55:14.43289693 -0800 PST m=+0.014442834
package static
diff --git a/server/static/js.go b/server/static/js.go
index 2a9ed37..f6e8970 100644
--- a/server/static/js.go
+++ b/server/static/js.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.652422004 -0800 PST m=+0.004243576
+// 2017-11-21 14:55:14.43700259 -0800 PST m=+0.018548494
package static
diff --git a/server/template/common.go b/server/template/common.go
index 24e2a97..8c6db15 100644
--- a/server/template/common.go
+++ b/server/template/common.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.654164863 -0800 PST m=+0.005986435
+// 2017-11-21 14:55:14.455330256 -0800 PST m=+0.036876160
package template
diff --git a/server/template/views.go b/server/template/views.go
index c9d845e..0611d6c 100644
--- a/server/template/views.go
+++ b/server/template/views.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.652925155 -0800 PST m=+0.004746727
+// 2017-11-21 14:55:14.438565193 -0800 PST m=+0.020111097
package template
diff --git a/server/ui/controller/category.go b/server/ui/controller/category.go
index dbc8067..48c77c3 100644
--- a/server/ui/controller/category.go
+++ b/server/ui/controller/category.go
@@ -6,10 +6,11 @@ package controller
import (
"errors"
+ "log"
+
"github.com/miniflux/miniflux2/model"
"github.com/miniflux/miniflux2/server/core"
"github.com/miniflux/miniflux2/server/ui/form"
- "log"
)
func (c *Controller) ShowCategories(ctx *core.Context, request *core.Request, response *core.Response) {
@@ -104,6 +105,19 @@ func (c *Controller) SaveCategory(ctx *core.Context, request *core.Request, resp
return
}
+ duplicateCategory, err := c.store.GetCategoryByTitle(user.ID, categoryForm.Title)
+ if err != nil {
+ response.Html().ServerError(err)
+ return
+ }
+
+ if duplicateCategory != nil {
+ response.Html().Render("create_category", args.Merge(tplParams{
+ "errorMessage": "This category already exists.",
+ }))
+ return
+ }
+
category := model.Category{Title: categoryForm.Title, UserID: user.ID}
err = c.store.CreateCategory(&category)
if err != nil {
@@ -158,6 +172,13 @@ func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, re
return
}
+ if c.store.AnotherCategoryExists(user.ID, category.ID, categoryForm.Title) {
+ response.Html().Render("edit_category", args.Merge(tplParams{
+ "errorMessage": "This category already exists.",
+ }))
+ return
+ }
+
err = c.store.UpdateCategory(categoryForm.Merge(category))
if err != nil {
log.Println(err)
diff --git a/sql/sql.go b/sql/sql.go
index 967aa38..198779b 100644
--- a/sql/sql.go
+++ b/sql/sql.go
@@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT.
-// 2017-11-21 14:38:46.650534269 -0800 PST m=+0.002355841
+// 2017-11-21 14:55:14.420877594 -0800 PST m=+0.002423498
package sql
diff --git a/storage/category.go b/storage/category.go
index 3d08c4d..e1986b7 100644
--- a/storage/category.go
+++ b/storage/category.go
@@ -8,11 +8,21 @@ import (
"database/sql"
"errors"
"fmt"
+ "time"
+
"github.com/miniflux/miniflux2/helper"
"github.com/miniflux/miniflux2/model"
- "time"
)
+func (s *Storage) AnotherCategoryExists(userID, categoryID int64, title string) bool {
+ defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:AnotherCategoryExists] userID=%d, categoryID=%d, title=%s", userID, categoryID, title))
+
+ var result int
+ query := `SELECT count(*) as c FROM categories WHERE user_id=$1 AND id != $2 AND title=$3`
+ s.db.QueryRow(query, userID, categoryID, title).Scan(&result)
+ return result >= 1
+}
+
func (s *Storage) CategoryExists(userID, categoryID int64) bool {
defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:CategoryExists] userID=%d, categoryID=%d", userID, categoryID))