|
@@ -1,13 +1,15 @@
|
|
|
package modules
|
|
|
|
|
|
import (
|
|
|
- //"html"
|
|
|
+ "database/sql"
|
|
|
+ "html"
|
|
|
+ "strings"
|
|
|
|
|
|
"golang-fave/assets"
|
|
|
"golang-fave/consts"
|
|
|
"golang-fave/engine/builder"
|
|
|
"golang-fave/engine/wrapper"
|
|
|
- //"golang-fave/utils"
|
|
|
+ "golang-fave/utils"
|
|
|
)
|
|
|
|
|
|
func (this *Modules) RegisterModule_Blog() *Module {
|
|
@@ -17,7 +19,7 @@ func (this *Modules) RegisterModule_Blog() *Module {
|
|
|
Name: "Blog",
|
|
|
Order: 1,
|
|
|
System: false,
|
|
|
- Icon: assets.SysSvgIconPage,
|
|
|
+ Icon: assets.SysSvgIconList,
|
|
|
Sub: &[]MISub{
|
|
|
{Mount: "default", Name: "List of posts", Show: true, Icon: assets.SysSvgIconList},
|
|
|
{Mount: "add", Name: "Add new post", Show: true, Icon: assets.SysSvgIconPlus},
|
|
@@ -43,25 +45,81 @@ func (this *Modules) RegisterModule_Blog() *Module {
|
|
|
wrap,
|
|
|
"blog_cats",
|
|
|
"id",
|
|
|
- "DESC",
|
|
|
+ "ASC",
|
|
|
&[]builder.DataTableRow{
|
|
|
{
|
|
|
- DBField: "id",
|
|
|
- NameInTable: "Id",
|
|
|
+ DBField: "id",
|
|
|
+ // NameInTable: "id",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ DBField: "user",
|
|
|
+ // NameInTable: "user",
|
|
|
},
|
|
|
{
|
|
|
DBField: "name",
|
|
|
NameInTable: "Name",
|
|
|
+ CallBack: func(values *[]string) string {
|
|
|
+ sub := strings.Repeat("— ", utils.StrToInt((*values)[4]))
|
|
|
+ name := `<a href="/cp/` + wrap.CurrModule + `/categories-modify/` + (*values)[0] + `/">` + sub + html.EscapeString((*values)[2]) + `</a>`
|
|
|
+ // alias := html.EscapeString((*values)[3])
|
|
|
+ // return `<div>` + name + `</div><div><small>` + alias + `</small></div>`
|
|
|
+ return `<div>` + name + `</div>`
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ DBField: "alias",
|
|
|
+ // NameInTable: "Alias",
|
|
|
},
|
|
|
{
|
|
|
- DBField: "alias",
|
|
|
- NameInTable: "Alias",
|
|
|
+ DBField: "depth",
|
|
|
+ // NameInTable: "depth",
|
|
|
},
|
|
|
},
|
|
|
- nil,
|
|
|
+ func(values *[]string) string {
|
|
|
+ return builder.DataTableAction(&[]builder.DataTableActionRow{
|
|
|
+ {
|
|
|
+ Icon: assets.SysSvgIconEdit,
|
|
|
+ Href: "/cp/" + wrap.CurrModule + "/categories-modify/" + (*values)[0] + "/",
|
|
|
+ Hint: "Edit",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Icon: assets.SysSvgIconRemove,
|
|
|
+ Href: "javascript:fave.ActionDataTableDelete(this,'blog-categories-delete','" +
|
|
|
+ (*values)[0] + "','Are you sure want to delete category?');",
|
|
|
+ Hint: "Delete",
|
|
|
+ Classes: "delete",
|
|
|
+ },
|
|
|
+ })
|
|
|
+ },
|
|
|
"/cp/"+wrap.CurrModule+"/"+wrap.CurrSubModule+"/",
|
|
|
- nil,
|
|
|
- nil,
|
|
|
+ func() (int, error) {
|
|
|
+ var num int
|
|
|
+ var err error
|
|
|
+ err = wrap.DB.QueryRow("SELECT COUNT(*) FROM `blog_cats`;").Scan(&num)
|
|
|
+ return num, err
|
|
|
+ },
|
|
|
+ func(limit_offset int, pear_page int) (*sql.Rows, error) {
|
|
|
+ return wrap.DB.Query(
|
|
|
+ `SELECT
|
|
|
+ node.id,
|
|
|
+ node.user,
|
|
|
+ node.name,
|
|
|
+ node.alias,
|
|
|
+ (COUNT(parent.id) - 1) AS depth
|
|
|
+ FROM
|
|
|
+ blog_cats AS node,
|
|
|
+ blog_cats AS parent
|
|
|
+ WHERE
|
|
|
+ node.lft BETWEEN parent.lft AND parent.rgt
|
|
|
+ GROUP BY
|
|
|
+ node.id
|
|
|
+ ORDER BY
|
|
|
+ node.lft ASC
|
|
|
+ LIMIT ?, ?;`,
|
|
|
+ limit_offset,
|
|
|
+ pear_page,
|
|
|
+ )
|
|
|
+ },
|
|
|
)
|
|
|
} else if wrap.CurrSubModule == "add" || wrap.CurrSubModule == "modify" {
|
|
|
if wrap.CurrSubModule == "add" {
|