Skip to content

Commit 6d15167

Browse files
committed
fix: refresh manage lists and include hidden posts
- Refresh manage list after delete and keep paging consistent - Refresh settings nav list after delete - Ensure manage queries include hidden posts in pagination
1 parent 0b8b131 commit 6d15167

4 files changed

Lines changed: 82 additions & 14 deletions

File tree

assets/js/manage.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@ function logOut() {
4141
}
4242

4343
function toggleEye(id) {
44-
let hide = $(`#eye-${id}`).hasClass("btn-hide");
45-
fetch(`${Article}/${id}?hide=${!hide}`, {method: 'PUT'}).then(function(j) {
44+
let isHidden = $(`#eye-${id}`).hasClass("btn-show");
45+
fetch(`${Article}/${id}?hide=${!isHidden}`, {method: 'PUT'}).then(function(j) {
4646
return j.json();
4747
}).then(function(res) {
4848
if(res.code !== 0) {
4949
throw res.error;
5050
}
51-
if(hide) {
52-
$(`#eye-${id}`).removeClass("btn-hide").addClass("btn-show").text("Show");
51+
if(isHidden) {
52+
$(`#eye-${id}`).removeClass("btn-show").addClass("btn-hide").text("Hide");
5353
}
5454
else {
55-
$(`#eye-${id}`).removeClass("btn-show").addClass("btn-hide").text("Hide");
55+
$(`#eye-${id}`).removeClass("btn-hide").addClass("btn-show").text("Show");
5656
}
5757
}).catch(function(e) {
5858
alert(e);
@@ -67,18 +67,23 @@ function confirmDelete(element, id) {
6767

6868
function deleteArticle() {
6969
let id = deleteTarget.id;
70-
let element = deleteTarget.element;
7170

7271
fetch(`${Article}/${id}`, {method: 'DELETE'}).then(function(j) {
7372
return j.json();
7473
}).then(function(res) {
7574
if(res.code !== 0) {
7675
throw res.error;
7776
}
78-
let p = element.parentNode.parentNode;
79-
p.parentNode.removeChild(p);
77+
allPosts = allPosts.filter(function(post) {
78+
return post.id !== id;
79+
});
80+
81+
let maxPage = Math.max(1, Math.ceil(allPosts.length / pageSize));
82+
if(currentPage > maxPage) {
83+
currentPage = maxPage;
84+
}
85+
8086
$('#deleteModal').modal('hide');
81-
// Reload current page after delete
8287
loadPage(currentPage);
8388
}).catch(function(e) {
8489
alert(e);

assets/js/setting.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,14 @@ function confirmDelete(element, id) {
136136

137137
function deleteNavi() {
138138
let id = deleteTarget.id;
139-
let element = deleteTarget.element;
140139

141140
fetch(`${Navi}?id=${id}`, {method: 'DELETE'}).then(function(j) {
142141
return j.json();
143142
}).then(function(res) {
144143
if(res.code !== 0) {
145144
throw res.error;
146145
}
147-
var p = element.parentNode.parentNode;
148-
p.parentNode.removeChild(p);
146+
initNavi();
149147
$('#deleteModal').modal('hide');
150148
}).catch(function(e) {
151149
showErr(e);

dbutil/dao.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,47 @@ func (d *Dao) HideArticle(id int, hide bool) error {
237237
}
238238

239239
func (d *Dao) GetPosts() (*model.ManageData, error) {
240-
return d.GetPostsByPage(0, 0)
240+
return d.GetAllPostsByPage(0, 0)
241+
}
242+
243+
// GetAllPostsByPage returns posts including hidden ones
244+
func (d *Dao) GetAllPostsByPage(page, pageSize int) (*model.ManageData, error) {
245+
var rows *sql.Rows
246+
var err error
247+
248+
if pageSize > 0 {
249+
offset := page * pageSize
250+
rows, err = d.db.Query(`select id, title, create_time, last_modified, tags, hide from posts order by create_time desc limit ? offset ?`, pageSize, offset)
251+
} else {
252+
rows, err = d.db.Query(`select id, title, create_time, last_modified, tags, hide from posts order by create_time desc`)
253+
}
254+
255+
if err != nil {
256+
return nil, err
257+
}
258+
259+
posts := make([]model.PostInfo, 0)
260+
for rows.Next() {
261+
post := model.PostInfo{}
262+
tags := ""
263+
err = rows.Scan(&post.Id, &post.Title, &post.CreateTime, &post.LastModified, &tags, &post.Hidden)
264+
if err != nil {
265+
return nil, err
266+
}
267+
rawTags := strings.Split(tags, ",")
268+
post.Tags = make([]string, 0, len(rawTags))
269+
for _, tag := range rawTags {
270+
tag = strings.TrimSpace(tag)
271+
if tag != "" {
272+
post.Tags = append(post.Tags, tag)
273+
}
274+
}
275+
posts = append(posts, post)
276+
}
277+
res := &model.ManageData{
278+
Posts: posts,
279+
}
280+
return res, nil
241281
}
242282

243283
func (d *Dao) GetPostsByPage(page, pageSize int) (*model.ManageData, error) {

dbutil/gorm_dao.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,32 @@ func (d *GormDao) HideArticle(id int, hide bool) error {
117117

118118
// GetPosts retrieves all posts (for backward compatibility)
119119
func (d *GormDao) GetPosts() (*model.ManageData, error) {
120-
return d.GetPostsByPage(0, 0)
120+
return d.GetAllPostsByPage(0, 0)
121+
}
122+
123+
// GetAllPostsByPage retrieves posts including hidden ones
124+
func (d *GormDao) GetAllPostsByPage(page, pageSize int) (*model.ManageData, error) {
125+
var posts []model.DBPost
126+
query := d.db.Order("create_time desc")
127+
128+
if pageSize > 0 {
129+
offset := page * pageSize
130+
query = query.Offset(offset).Limit(pageSize)
131+
}
132+
133+
result := query.Find(&posts)
134+
if result.Error != nil {
135+
return nil, result.Error
136+
}
137+
138+
postInfos := make([]model.PostInfo, 0, len(posts))
139+
for _, post := range posts {
140+
postInfos = append(postInfos, dbPostToPostInfo(&post))
141+
}
142+
143+
return &model.ManageData{
144+
Posts: postInfos,
145+
}, nil
121146
}
122147

123148
// GetPostsByPage retrieves posts with pagination

0 commit comments

Comments
 (0)