Files
pear-admin-flask/plugins/navManager/templates/system/nav/edit.html
T
bwstudio 0ffc103e46 feat(plugins): 4 个业务插件代码 + 前台公开页面改造
plugins/navManager:导航 CRUD + 导航分类 CRUD(独立 blueprint)
plugins/friendManager:友情链接 CRUD
plugins/aboutManager:关于本站 CRUD
plugins/siteStats:访问统计主页 + JSON 接口 + /site/* GET 埋点 + nav 卡片点击埋点

applications/view/public/nav.py:导航聚合页 / 分类详情 / JSON 接口,支持 visit_count 注入
applications/view/public/about.py:关于本站公开页
applications/view/public/friend.py:友情链接公开页

templates/public/base.html:响应式首页(搜索框 / 分类抽屉 / 5 主题切换 / footer 隐私小字)
templates/public/index.html / category.html:卡片右下角访问次数
templates/public/about.html / friend.html:关于 + 友链前台页

docs/plugins-development.md:插件开发完整指南(生命周期 + 4 个示例 + FAQ + framework 迁移)

scripts/:探针与端到端验证脚本(probe_*/verify_*/test_*)
2026-09-06 18:18:06 +08:00

100 lines
3.9 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>编辑导航</title>
{% include 'system/common/header.html' %}
</head>
<body>
<div class="layui-form" lay-filter="nav-form" style="padding: 20px 30px 0 0;">
<input type="hidden" name="id" value="{{ nav.id }}">
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-block">
<input type="text" name="category" required lay-verify="required" value="{{ nav.category }}"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">标题</label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="{{ nav.title }}"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接 URL</label>
<div class="layui-input-block">
<input type="text" name="url" required lay-verify="required|url" value="{{ nav.url }}"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">简介</label>
<div class="layui-input-block">
<textarea name="description" class="layui-textarea">{{ nav.description or '' }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-block">
<input type="text" name="icon" value="{{ nav.icon }}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="number" name="sort" value="{{ nav.sort }}" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型</label>
<div class="layui-input-block">
<input type="radio" name="isExternal" value="1" title="外链(新窗口)" {% if nav.is_external == 1 %}checked{% endif %}>
<input type="radio" name="isExternal" value="0" title="站内(当前窗口)" {% if nav.is_external != 1 %}checked{% endif %}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="enable" value="1" title="启用" {% if nav.enable == 1 %}checked{% endif %}>
<input type="radio" name="enable" value="0" title="禁用" {% if nav.enable != 1 %}checked{% endif %}>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="nav-submit">保存</button>
<button type="button" class="layui-btn layui-btn-primary" onclick="parent.layer.closeAll();">取消</button>
</div>
</div>
</div>
{% include 'system/common/footer.html' %}
<script>
layui.use(['form', 'layer'], function(){
var form = layui.form;
var layer = layui.layer;
var $ = layui.$;
form.on('submit(nav-submit)', function(data){
$.ajax({
url: '/system/nav/update',
type: 'PUT',
contentType: 'application/json',
data: JSON.stringify(data.field),
success: function(res){
if (res.success) {
layer.msg(res.msg, {icon: 1});
parent.layui.table.reload('nav-table');
setTimeout(function(){ parent.layer.closeAll(); }, 800);
} else {
layer.msg(res.msg, {icon: 2});
}
}
});
return false;
});
});
</script>
</body>
</html>