- 在 applications/config.py 中通过 PLUGIN_ENABLE_FOLDERS 启用 4 个业务插件
- 删除 framework 内 applications/view/system/nav.py 与 templates/system/nav/* 模板
- applications/extensions/init_plugs 移除重复的 broadcast_execute('event_init'/'event_finish')
(由 init_bps / init_script 触发,避免 Blueprint 注册冲突)
- applications/view/system/index.py:未登录访问 / 直接渲染前台公开聚合页
- templates/system/index.html:移动端首屏即折叠侧边栏
- 新增 5 个 model(Nav 字段 status→enable 兼容、NavCategory、About、Friend、VisitLog/PageStat、NavClick)
- 新增 2 个 schema(NavCategorySchema、FriendOutSchema/ManageSchema)
- admin_about/admin_friend/admin_nav_category 在 init.json 中以「网站管理」分组挂载
- .gitignore 补充一次性备份、调试截图、探针截图不入库
69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
"""
|
|
前台公开导航模型。
|
|
|
|
Nav 用于「公开访问的导航聚合页」,与 admin_power 表完全解耦:
|
|
- admin_power 控制后台管理菜单,需要登录
|
|
- public_nav 控制前台公开导航,无需登录
|
|
|
|
后续若要做前台用户(收藏、提交链接),只需加独立 User 模型,
|
|
不需要碰 RBAC。
|
|
"""
|
|
import datetime
|
|
from applications.extensions import db
|
|
|
|
|
|
class Nav(db.Model):
|
|
__tablename__ = 'public_nav'
|
|
|
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='导航ID')
|
|
|
|
# 分类名(如"开发工具"/"AI"/"设计资源"),用于首页聚合展示
|
|
category = db.Column(db.String(50), nullable=False, comment='分类', index=True)
|
|
|
|
# 单条导航的标题
|
|
title = db.Column(db.String(100), nullable=False, comment='标题')
|
|
|
|
# 链接 URL(站内或外链)
|
|
url = db.Column(db.String(255), nullable=False, comment='链接')
|
|
|
|
# 简短描述(鼠标悬停时可见)
|
|
description = db.Column(db.String(255), default='', comment='简介')
|
|
|
|
# layui-icon 的 class 名,例如 "layui-icon-website"
|
|
icon = db.Column(db.String(100), default='layui-icon-link', comment='图标')
|
|
|
|
# 同分类下的显示顺序
|
|
sort = db.Column(db.Integer, default=0, comment='排序')
|
|
|
|
# 1=启用,0=禁用(禁用后前台不再展示,后台列表仍可见)
|
|
enable = db.Column(db.Integer, default=1, comment='状态(1启用,0关闭)')
|
|
|
|
# 1=外链(新窗口打开),0=站内(当前窗口)
|
|
is_external = db.Column(db.Integer, default=1, comment='是否外链')
|
|
|
|
# 创建者(后台管理员用户名,便于追溯),非空约束放宽以便匿名维护
|
|
create_by = db.Column(db.String(50), default='admin', comment='创建者')
|
|
|
|
create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')
|
|
update_at = db.Column(
|
|
db.DateTime,
|
|
default=datetime.datetime.now,
|
|
onupdate=datetime.datetime.now,
|
|
comment='更新时间',
|
|
)
|
|
|
|
def to_dict(self):
|
|
"""方便模板直接读取"""
|
|
return {
|
|
'id': self.id,
|
|
'category': self.category,
|
|
'title': self.title,
|
|
'url': self.url,
|
|
'description': self.description or '',
|
|
'icon': self.icon or 'layui-icon-link',
|
|
'sort': self.sort or 0,
|
|
'enable': self.enable,
|
|
'is_external': self.is_external,
|
|
'create_by': self.create_by,
|
|
'create_at': self.create_at.strftime('%Y-%m-%d %H:%M:%S') if self.create_at else '',
|
|
} |