2014-10-08 18:29:18 -04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
2019-04-20 06:15:19 +02:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 13:20:29 -05:00
// SPDX-License-Identifier: MIT
2014-10-08 18:29:18 -04:00
package admin
import (
2021-04-05 17:30:52 +02:00
"net/http"
2020-12-25 09:59:32 +00:00
"strconv"
2023-12-25 21:25:29 +01:00
"code.gitea.io/gitea/models/db"
2022-10-17 07:29:26 +08:00
system_model "code.gitea.io/gitea/models/system"
2016-11-10 17:24:48 +01:00
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
2024-12-22 23:33:19 +08:00
"code.gitea.io/gitea/modules/templates"
2024-02-27 15:12:22 +08:00
"code.gitea.io/gitea/services/context"
2014-10-08 18:29:18 -04:00
)
const (
2024-12-22 23:33:19 +08:00
tplNotices templates . TplName = "admin/notice"
2014-10-08 18:29:18 -04:00
)
2016-11-21 11:21:24 +08:00
// Notices show notices for admin
2016-03-11 11:56:52 -05:00
func Notices ( ctx * context . Context ) {
2014-10-08 18:29:18 -04:00
ctx . Data [ "Title" ] = ctx . Tr ( "admin.notices" )
ctx . Data [ "PageIsAdminNotices" ] = true
2023-10-03 12:30:41 +02:00
total := system_model . CountNotices ( ctx )
2021-07-29 09:42:15 +08:00
page := ctx . FormInt ( "page" )
2015-09-25 18:13:38 +02:00
if page <= 1 {
page = 1
}
2015-09-25 12:58:39 -04:00
2023-09-25 15:17:37 +02:00
notices , err := system_model . Notices ( ctx , page , setting . UI . Admin . NoticePagingNum )
2014-10-08 18:29:18 -04:00
if err != nil {
2018-01-10 22:34:17 +01:00
ctx . ServerError ( "Notices" , err )
2014-10-08 18:29:18 -04:00
return
}
ctx . Data [ "Notices" ] = notices
2015-09-25 12:58:39 -04:00
2015-09-25 18:13:38 +02:00
ctx . Data [ "Total" ] = total
2019-04-20 06:15:19 +02:00
ctx . Data [ "Page" ] = context . NewPagination ( int ( total ) , setting . UI . Admin . NoticePagingNum , page , 5 )
2021-04-05 17:30:52 +02:00
ctx . HTML ( http . StatusOK , tplNotices )
2014-10-08 18:29:18 -04:00
}
2016-11-21 11:21:24 +08:00
// DeleteNotices delete the specific notices
2016-03-11 11:56:52 -05:00
func DeleteNotices ( ctx * context . Context ) {
2021-07-29 09:42:15 +08:00
strs := ctx . FormStrings ( "ids[]" )
2015-12-05 01:09:14 -05:00
ids := make ( [ ] int64 , 0 , len ( strs ) )
for i := range strs {
2020-12-25 09:59:32 +00:00
id , _ := strconv . ParseInt ( strs [ i ] , 10 , 64 )
2015-12-05 01:09:14 -05:00
if id > 0 {
ids = append ( ids , id )
}
}
2023-12-25 21:25:29 +01:00
if err := db . DeleteByIDs [ system_model . Notice ] ( ctx , ids ... ) ; err != nil {
2015-12-05 01:09:14 -05:00
ctx . Flash . Error ( "DeleteNoticesByIDs: " + err . Error ( ) )
2022-03-23 05:54:07 +01:00
ctx . Status ( http . StatusInternalServerError )
2015-12-05 01:09:14 -05:00
} else {
ctx . Flash . Success ( ctx . Tr ( "admin.notices.delete_success" ) )
2022-03-23 05:54:07 +01:00
ctx . Status ( http . StatusOK )
2014-10-08 18:29:18 -04:00
}
2015-12-01 23:33:08 -05:00
}
2016-11-21 11:21:24 +08:00
// EmptyNotices delete all the notices
2016-03-11 11:56:52 -05:00
func EmptyNotices ( ctx * context . Context ) {
2023-09-25 15:17:37 +02:00
if err := system_model . DeleteNotices ( ctx , 0 , 0 ) ; err != nil {
2018-01-10 22:34:17 +01:00
ctx . ServerError ( "DeleteNotices" , err )
2015-12-01 23:33:08 -05:00
return
}
2022-03-22 08:03:22 +01:00
log . Trace ( "System notices deleted by admin (%s): [start: %d]" , ctx . Doer . Name , 0 )
2014-10-08 18:29:18 -04:00
ctx . Flash . Success ( ctx . Tr ( "admin.notices.delete_success" ) )
2024-10-10 12:56:49 +08:00
ctx . Redirect ( setting . AppSubURL + "/-/admin/notices" )
2014-10-08 18:29:18 -04:00
}