Browse Source

20250515

pull/223/head
xiaoz 7 days ago
parent
commit
1a10b2c758
  1. 19
      class/Api.php
  2. 4
      controller/admin.php
  3. 6
      data/update.log
  4. 107
      templates/admin/add_category_new.php
  5. 106
      templates/admin/add_link_new.php
  6. 59
      templates/admin/category_list.php
  7. 2
      templates/admin/link_list.php
  8. 34
      templates/admin/static/embed.js
  9. 2
      version.txt

19
class/Api.php

@ -156,9 +156,26 @@ class Api { @@ -156,9 +156,26 @@ class Api {
$count = $this->db->count("on_links", [
"fid" => $id
]);
// 获取分类信息
$category = $this->db->get("on_categorys", ["id", "fid"], ["id" => $id]);
// 如果分类不存在
if (empty($category)) {
$this->err_msg(-1007, 'The category does not exist!');
}
//检查该分类下是否还存在子分类
$sub_category_count = $this->db->count("on_categorys", [
"fid" => $id
]);
//如果存在子分类,则不允许删除
if($sub_category_count > 0) {
$this->err_msg(-2000,'请先删除下面的子分类!');
}
//如果分类目录下存在数据,则不允许删除
if($count > 0) {
$this->err_msg(-1006,'The category is not empty and cannot be deleted!');
$this->err_msg(-1006,'此分类下存在链接,不允许删除!');
}
else{
$data = $this->db->delete('on_categorys',[ 'id' => $id] );

4
controller/admin.php

@ -39,7 +39,7 @@ if( $page == 'index' ) { @@ -39,7 +39,7 @@ if( $page == 'index' ) {
}
//如果页面是修改edit_category
if ( ($page == 'edit_category') || ($page == 'edit_category_new') ) {
if ( ($page == 'edit_category') || ($page == 'edit_category_new') || ($page == 'add_category_new') ) {
//获取id
$id = intval($_GET['id']);
//查询单条分类信息
@ -137,7 +137,7 @@ if ( $page == "link_list" ) { @@ -137,7 +137,7 @@ if ( $page == "link_list" ) {
}
//如果页面是添加链接页面
if ( ($page == 'add_link') || ($page == 'add_link_tpl') || ($page == 'add_quick_tpl') || ($page == 'setting/share') ) {
if ( ($page == 'add_link') || ($page == 'add_link_tpl') || ($page == 'add_quick_tpl') || ($page == 'setting/share') || ($page == "add_link_new") ) {
//查询所有分类信息
$categorys = $db->select('on_categorys','*',[ 'ORDER' => ['weight' => 'DESC'] ]);
//checked按钮

6
data/update.log

@ -1,3 +1,9 @@ @@ -1,3 +1,9 @@
2025.05.15
1. 【后台 - 分类列表】,添加了添加分类按钮
2. 删除分类时,如果下面存在子分类,则不允许删除
3. 分类列表现在支持批量删除操作
4. 我的链接页面新增了添加分类和添加链接按钮
2025.03.07
1. 搜索支持Ctrl + Enter提交
2. 新增缓存函数

107
templates/admin/add_category_new.php

@ -0,0 +1,107 @@ @@ -0,0 +1,107 @@
<?php include_once('s_header.php'); ?>
<div class="layui-container">
<!-- 内容主体区域 -->
<div class="layui-row content-body place-holder">
<!-- 说明提示框 -->
<div class="layui-col-lg12">
<div class="setting-msg">
<p>注意:权重越大,分类排序越靠前</p>
</div>
</div>
<!-- 说明提示框END -->
<div class="layui-col-lg6">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<label class="layui-form-label">分类名称</label>
<div class="layui-input-block">
<input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label for="" class="layui-form-label">字体图标:</label>
<div class="layui-input-inline" style = "width:240px;">
<input name="font_icon" type="text" id="iconHhys2" value="" lay-filter="iconHhys2" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
图标对照表可参考:<a rel = "nofollow" target = "_blank" href="https://fontawesome.dashgame.com/">FontAwesome4</a>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">父级分类</label>
<div class="layui-input-block">
<select name="fid" lay-verify="">
<option value="0"></option>
<?php foreach ($categorys as $key => $category) {
?>
<option value="<?php echo $category['id']; ?>"><?php echo $category['name']; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权重</label>
<div class="layui-input-block">
<input type="number" name="weight" min = "0" max = "999" value = "0" required lay-verify="required|number" placeholder="权重越高,排名越靠前,范围为0-999" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否私有</label>
<div class="layui-input-inline" style = "width:200px;">
<input type="checkbox" name="property" value = "1" lay-skin="switch" lay-text="是|否">
</div>
<div class="layui-form-mid layui-word-aux">私有分类下的链接需要登录后才能查看。</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述(选填)</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn" lay-submit lay-filter="add_category">添加</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<!-- 内容主题区域END -->
</div>
<script>
//参考:https://gitee.com/luckygyl/iconFonts
layui.use(['iconHhysFa'], function(){
var iconHhysFa = layui.iconHhysFa;
iconHhysFa.render({
// 选择器,推荐使用input
elem: '#iconHhys2',
// 数据类型:fontClass/awesome,推荐使用fontClass
type: 'awesome',
// 是否开启搜索:true/false
search: true,
// fa 图标接口
url: './static/font-awesome/4.7.0/less/variables.less',
// 是否开启分页
page: true,
// 每页显示数量,默认12
limit: 30,
// 点击回调
value:'fa-bookmark-o', //自定义默认图标
click: function(data) {
console.log(data);
},
// 渲染成功后的回调
success: function(d) {
console.log(d);
}
});
})
</script>

106
templates/admin/add_link_new.php

@ -0,0 +1,106 @@ @@ -0,0 +1,106 @@
<?php include_once('s_header.php'); ?>
<div class="layui-container">
<!-- 内容主体区域 -->
<div class="layui-row content-body place-holder">
<!-- 说明提示框 -->
<div class="layui-col-lg12">
<div class="setting-msg">
<p>1. 权重越大,排序越靠前</p>
<p>2. 识别功能可以自动获取链接标题和描述信息,但不确保一定成功</p>
<p>3. 仅 default2/5iux/heimdall/tushan2/webstack 支持自定义图标,其余主题均自动获取链接图标。</p>
</div>
</div>
<!-- 说明提示框END -->
<div class="layui-col-lg12">
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<label class="layui-form-label">URL</label>
<div class="layui-input-block">
<input id = "url" name="url" required lay-verify="required" placeholder="请输入有效链接" autocomplete="off" class="layui-input">
</div>
</div>
<!-- 添加备用链接 -->
<div class="layui-col-lg12">
<div class="layui-form-item">
<label class="layui-form-label">备用URL</label>
<div class="layui-input-block">
<input type="url" id = "url_standby" name="url_standby" placeholder="请输入备用链接,如果没有,请留空" autocomplete="off" class="layui-input">
</div>
</div>
<!-- 备用链接END -->
<div class="layui-form-item">
<label class="layui-form-label">图标</label>
<div class="layui-input-inline" style="width:810px;">
<button type="button" id = "iconUpload" name="iconUpload" class="layui-btn"><i class="layui-icon">&#xe67c;</i>上传图标</button>
<button type="button" class="layui-btn layui-btn-danger" onclick="del_link_icon()">删除图标</button>
<!-- 显示图标 -->
<div id="show_icon">
<img src="static/images/white64.png" alt="">
</div>
<!-- 显示图标 -->
<div class="layui-form-mid layui-word-aux" style = "float:right;">图标最小尺寸建议为 64 * 64像素,大小不超过100KB,仅部分主题支持自定义图标!</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">图标链接</label>
<div class="layui-input-block">
<input type="url" id = "font_icon" name="font_icon" placeholder="请输入图标链接,如果没有,请留空(可输入外部https链接)" 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" id = "title" name="title" required lay-verify="required" placeholder="请输入链接名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">所属分类</label>
<div class="layui-input-block">
<select name="fid" lay-verify="required" lay-search>
<option value=""></option>
<?php foreach ($categorys as $category) {
# code...
?>
<option value="<?php echo $category['id'] ?>"><?php echo $category['name']; ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权重</label>
<div class="layui-input-block">
<input type="number" name="weight" min = "0" max = "999" value = "0" required lay-verify="required|number" placeholder="权重越高,排名越靠前,范围为0-999" 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="checkbox" name="property" value = "1" lay-skin="switch" lay-text="是|否">
</div>
<div class="layui-form-mid layui-word-aux">私有链接需要登录后才能查看!</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">描述(选填)</label>
<div class="layui-input-block">
<textarea name="description" id = "description" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<button class="layui-btn" id = "add_link" lay-submit lay-filter="add_link">添加</button>
<!-- <button class="layui-btn" lay-submit lay-filter="get_link_info">识别</button> -->
<a href="javascript:;" class="layui-btn" onclick="get_link_info()">识别</a>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<!-- 内容主题区域END -->
</div>

59
templates/admin/category_list.php

@ -22,8 +22,10 @@ @@ -22,8 +22,10 @@
<!-- 表头工具栏 -->
<script type="text/html" id="catToolbar">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="addCategory">添加分类</button>
<button class="layui-btn layui-btn-sm" lay-event="setPrivate">设为私有</button>
<button class="layui-btn layui-btn-sm" lay-event="setPublic">设为公开</button>
<button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delSelect">删除选中</button>
</div>
</script>
<!-- 表头工具栏END -->
@ -58,6 +60,63 @@ layui.use(['table','layer','form'], function(){ @@ -58,6 +60,63 @@ layui.use(['table','layer','form'], function(){
case 'setPublic':
// 设为公开,0
set_cat_batch(ids,0);
case 'addCategory':
// 添加分类
layer.open({
type: 2,
title: '添加分类',
shadeClose: true,
shade: 0.8,
area: ['700px', '780px'],
content: '/index.php?c=admin&page=add_category_new',
end: function(index, layero){
// 刷新分类数据页面
table.reloadData('category_list', {
where: {
abc: '123456',
},
scrollPos: 'fixed', // 保持滚动条位置不变 - v2.7.3 新增
});
layer.close(index);
}
});
case 'delSelect':
// 删除选中
if( ids.length === 0 ) {
layer.msg("请先选择分类!",{icon:5});
}
else{
let msg = `
确认删除选中的分类吗?
<ul>
<li>此操作只会删除空分类!</li>
<li>如果分类下存在链接会删除失败!</li>
<li>如果分类下存在子分类会删除失败!</li>
</ul>
`;
layer.confirm(msg,{icon: 3, title:'温馨提示!'}, function(index){
for (let i = 0; i < data.length; i++) {
$.ajax({
'url': '/index.php?c=api&method=del_category',
'type': 'POST',
'async': false,
'data':{'id':ids[i]}
});
}
layer.open({
title: '温馨提醒'
,content: '选中分类已删除!',
yes: function(index, layero){
window.location.reload();
layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
});
}
break;
};
});

2
templates/admin/link_list.php

@ -79,6 +79,8 @@ @@ -79,6 +79,8 @@
<button class="layui-btn layui-btn-sm" lay-event="set_private">设为私有</button>
<button class="layui-btn layui-btn-sm" lay-event="set_public">设为公有</button>
<button class="layui-btn layui-btn-sm" lay-event="reset_query">重置查询</button>
<button class="layui-btn layui-btn-sm" lay-event="addCategory">添加分类</button>
<button class="layui-btn layui-btn-sm" lay-event="addLink">添加链接</button>
<!-- <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
<button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button> -->
</div>

34
templates/admin/static/embed.js

@ -124,7 +124,7 @@ layui.use(['element','table','layer','form','upload','iconHhysFa'], function(){ @@ -124,7 +124,7 @@ layui.use(['element','table','layer','form','upload','iconHhysFa'], function(){
obj.del();
}
else{
layer.msg(data.err_msg);
layer.msg(data.err_msg,{icon:5});
}
});
layer.close(index);
@ -319,6 +319,38 @@ layui.use(['element','table','layer','form','upload','iconHhysFa'], function(){ @@ -319,6 +319,38 @@ layui.use(['element','table','layer','form','upload','iconHhysFa'], function(){
//调用函数设为公有
set_link_attribute(ids,0);
break;
case "addCategory":
//用户点击添加分类按钮,打开一个弹窗操作
// 添加分类
layer.open({
type: 2,
title: '添加分类',
shadeClose: true,
shade: 0.8,
area: ['700px', '780px'],
content: '/index.php?c=admin&page=add_category_new'
});
break;
case "addLink":
layer.open({
type: 2,
title: '添加链接',
shadeClose: true,
shade: 0.8,
area: ['1200px', '780px'],
content: '/index.php?c=admin&page=add_link_new',
end: function(index, layero){
// 刷新分类数据页面
table.reloadData('link_list', {
where: {
abc: '123456',
},
scrollPos: 'fixed', // 保持滚动条位置不变 - v2.7.3 新增
});
layer.close(index);
}
});
break;
case 'isAll':
layer.msg(checkStatus.isAll ? '全选': '未全选');
break;

2
version.txt

@ -1 +1 @@ @@ -1 +1 @@
v1.1.2-20250307
v1.1.3-20250515
Loading…
Cancel
Save