Check for category uniqueness before saving
This commit is contained in:
parent
5983db1a77
commit
238b9e4c85
10 changed files with 47 additions and 12 deletions
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package locale
|
||||||
|
|
||||||
|
@ -137,12 +137,14 @@ var Translations = map[string]string{
|
||||||
"no": "non",
|
"no": "non",
|
||||||
"Are you sure?": "Êtes-vous sûr ?",
|
"Are you sure?": "Êtes-vous sûr ?",
|
||||||
"Work in progress...": "Travail en cours...",
|
"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{
|
var TranslationsChecksums = map[string]string{
|
||||||
"en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897",
|
"en_US": "6fe95384260941e8a5a3c695a655a932e0a8a6a572c1e45cb2b1ae8baa01b897",
|
||||||
"fr_FR": "bfa4a8bb15bd6016da8b9b5f851121a4ae278e2a195cd2edc4737ff075d28f02",
|
"fr_FR": "5c8c2c5e35a17a7dd3c30596b73342f70950a3bbce00786d43ccba01b96ea672",
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,5 +121,7 @@
|
||||||
"no": "non",
|
"no": "non",
|
||||||
"Are you sure?": "Êtes-vous sûr ?",
|
"Are you sure?": "Êtes-vous sûr ?",
|
||||||
"Work in progress...": "Travail en cours...",
|
"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."
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package static
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package static
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package static
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package template
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package template
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,11 @@ package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"log"
|
||||||
|
|
||||||
"github.com/miniflux/miniflux2/model"
|
"github.com/miniflux/miniflux2/model"
|
||||||
"github.com/miniflux/miniflux2/server/core"
|
"github.com/miniflux/miniflux2/server/core"
|
||||||
"github.com/miniflux/miniflux2/server/ui/form"
|
"github.com/miniflux/miniflux2/server/ui/form"
|
||||||
"log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *Controller) ShowCategories(ctx *core.Context, request *core.Request, response *core.Response) {
|
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
|
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}
|
category := model.Category{Title: categoryForm.Title, UserID: user.ID}
|
||||||
err = c.store.CreateCategory(&category)
|
err = c.store.CreateCategory(&category)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -158,6 +172,13 @@ func (c *Controller) UpdateCategory(ctx *core.Context, request *core.Request, re
|
||||||
return
|
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))
|
err = c.store.UpdateCategory(categoryForm.Merge(category))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by go generate; DO NOT EDIT.
|
// 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
|
package sql
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,21 @@ import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/miniflux/miniflux2/helper"
|
"github.com/miniflux/miniflux2/helper"
|
||||||
"github.com/miniflux/miniflux2/model"
|
"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 {
|
func (s *Storage) CategoryExists(userID, categoryID int64) bool {
|
||||||
defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:CategoryExists] userID=%d, categoryID=%d", userID, categoryID))
|
defer helper.ExecutionTime(time.Now(), fmt.Sprintf("[Storage:CategoryExists] userID=%d, categoryID=%d", userID, categoryID))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue