1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-04 10:06:24 -07:00

Add wordfilters manage page

This commit is contained in:
Eggbertx 2022-01-31 09:47:19 -08:00
parent b180db94dc
commit f85959c8e3
4 changed files with 80 additions and 14 deletions

View file

@ -374,11 +374,9 @@ func GetWordFilters() ([]WordFilter, error) {
); err != nil {
return wfs, err
}
if dirsStr == "*" {
// wordfilter applies to all boards
continue
if dirsStr != "*" {
wf.BoardDirs = strings.Split(dirsStr, ",")
}
wf.BoardDirs = strings.Split(dirsStr, ",")
wfs = append(wfs, wf)
}
return wfs, err
@ -405,6 +403,14 @@ func (wf *WordFilter) OnBoard(dir string) bool {
return false
}
func (wf *WordFilter) StaffName() string {
staff, err := getStaffByID(wf.StaffID)
if err != nil {
return "?"
}
return staff.Username
}
//getDatabaseVersion gets the version of the database, or an error if none or multiple exist
func getDatabaseVersion(componentKey string) (int, error) {
const sql = `SELECT version FROM DBPREFIXdatabase_version WHERE component = ?`

View file

@ -23,6 +23,7 @@ var (
ManageConfig *template.Template
ManageDashboard *template.Template
ManageRecentPosts *template.Template
ManageWordfilters *template.Template
ManageLogin *template.Template
ManageStaff *template.Template
PageHeader *template.Template
@ -160,6 +161,12 @@ func templateLoading(t string, buildAll bool) error {
return templateError("manage_recentposts.html", err)
}
}
if buildAll || t == "managewordfilters" {
ManageWordfilters, err = loadTemplate("manage_wordfilters.html")
if err != nil {
return templateError("manage_wordfilters.html", err)
}
}
if buildAll || t == "managestaff" {
ManageStaff, err = loadTemplate("manage_staff.html")
if err != nil {

View file

@ -580,19 +580,51 @@ var actions = []Action{
post, err := gcsql.GetSpecificPost(gcutil.HackyStringToInt(request.FormValue("postid")), false)
return post, err
}},
// {
// ID: "tempposts",
// Title: "Temporary posts lists",
// Permissions: AdminPerms,
// Callback: func(writer http.ResponseWriter, request *http.Request, wantsJSON bool) (output interface{}, err error) {
// outputStr := ""
// if len(gcsql.TempPosts) == 0 {
// outputStr += "No temporary posts<br />"
// return
// }
// for p, post := range gcsql.TempPosts {
// outputStr += fmt.Sprintf("Post[%d]: %#v<br />", p, post)
// }
// return outputStr, nil
// }},
{
ID: "tempposts",
Title: "Temporary posts lists",
ID: "wordfilters",
Title: "Wordfilters",
Permissions: AdminPerms,
Callback: func(writer http.ResponseWriter, request *http.Request, wantsJSON bool) (output interface{}, err error) {
outputStr := ""
if len(gcsql.TempPosts) == 0 {
outputStr += "No temporary posts<br />"
return
managePageBuffer := bytes.NewBufferString("")
editIDstr := request.FormValue("edit")
wordfilters, err := gcsql.GetWordFilters()
if err != nil {
return wordfilters, nil
}
for p, post := range gcsql.TempPosts {
outputStr += fmt.Sprintf("Post[%d]: %#v<br />", p, post)
var editFilter *gcsql.WordFilter
if editIDstr != "" {
editID := gcutil.HackyStringToInt(editIDstr)
for _, filter := range wordfilters {
if filter.ID == editID {
editFilter = &filter
break
}
}
}
return outputStr, nil
}},
filterMap := map[string]interface{}{
"wordfilters": wordfilters,
"edit": editFilter,
}
err = serverutil.MinifyTemplate(gctemplates.ManageWordfilters,
filterMap, managePageBuffer, "text/html")
return managePageBuffer.String(), err
},
},
}

View file

@ -0,0 +1,21 @@
(currently a work in progress)
<h2>{{with $.edit}}Edit filter{{else}}Create new{{end}}</h2>
<form action="{{.webroot}}manage?action=wordfilters" method="GET">
<input type="hidden" name="action" value="boards">
{{with $.edit}}<input type="hidden" name="edit" value="{{$.edit.ID}}">{{end}}
<table>
<tr><td>Find text:</td><td><input type="text" name="find" id="findfilter" value="{{with $.edit}}{{$.edit.Search}}{{end}}"/></td></tr>
<tr><td>Replace with:</td><td><input type="text" name="replace" id="replacefilter" value="{{with $.edit}}{{$.edit.ChangeTo}}{{end}}"/></td></tr>
<tr><td>Is regular expression:</td><td><input type="checkbox" name="isregex" id="isregex" {{with $.edit}}{{if $.edit.IsRegex}}checked="checked"{{end}}{{end}}/></td></tr>
<tr><td>Board dirs(ex: dir1,dir2. * for all):</td><td><input type="text" name="boarddirs" id="boarddirs" value="{{with $.edit}}{{$.edit.BoardsString}}{{end}}"/></td></tr>
<tr><td><input type="submit" value="" disabled="disabled"/></td></tr>
</table>
</form>
<hr/>
<table width="100%" border="1">
<colgroup><col width="5%"><col width="10%"><col width="10%"><col width="5%"><col width="15%"><col width="10%"></colgroup>
<tr><th></th><th>Search</th><th>Replace with</th><th>Regex</th><th>Dirs</th><th>Staff</th></tr>
{{- range $f,$filter := .wordfilters}}
<tr><td><a href="{{$.webroot}}manage?action=wordfilters&edit={{$filter.ID}}">Edit</a></td><td>{{$filter.Search}}</td><td>{{$filter.ChangeTo}}</td><td>{{if $filter.IsRegex}}yes{{else}}no{{end}}</td><td>{{$filter.BoardsString}}</td><td>{{$filter.StaffName}}</td></tr>
{{end -}}
</table>