From 1d379543f5876a96791bf4821b04572183978cb1 Mon Sep 17 00:00:00 2001 From: "MI15\\Win" <10359480+tznb@user.noreply.gitee.com> Date: Fri, 28 Jul 2023 00:19:25 +0800 Subject: [PATCH] v2.0.32-20230727 --- index.php | 2 +- system/MySQL/20230723.php | 40 ++ system/MySQL/install.sql | 42 ++- system/SQLite/20230723.php | 40 ++ system/SQLite/install.sql | 39 +- system/admin.php | 13 +- system/api.php | 67 +++- system/api_article.php | 210 +++++++++++ system/api_compatible.php | 56 ++- system/api_root.php | 26 +- system/expand/article.php | 58 +++ system/firewall.php | 4 +- system/index.php | 11 +- system/public.php | 14 +- system/version.txt | 2 +- templates/admin/js/link.js | 22 ++ templates/admin/js/link_list.js | 3 +- templates/admin/page/expand/article-edit.php | 252 +++++++++++++ templates/admin/page/expand/article-list.php | 372 +++++++++++++++++++ templates/admin/page/link_extend.php | 25 +- templates/admin/page/root/mail_set.php | 9 + templates/admin/page/root/sys_setting.php | 12 + templates/admin/page/theme_article.php | 83 +++++ templates/admin/page/theme_home.php | 1 + templates/admin/page/updatelog.php | 16 + templates/article/default/index.css | 145 ++++++++ templates/article/default/index.php | 46 +++ templates/article/default/info.json | 9 + templates/article/default/screenshot.jpg | Bin 0 -> 94001 bytes 29 files changed, 1580 insertions(+), 39 deletions(-) create mode 100644 system/MySQL/20230723.php create mode 100644 system/SQLite/20230723.php create mode 100644 system/api_article.php create mode 100644 system/expand/article.php create mode 100644 templates/admin/page/expand/article-edit.php create mode 100644 templates/admin/page/expand/article-list.php create mode 100644 templates/admin/page/theme_article.php create mode 100644 templates/article/default/index.css create mode 100644 templates/article/default/index.php create mode 100644 templates/article/default/info.json create mode 100644 templates/article/default/screenshot.jpg diff --git a/index.php b/index.php index 2e7bf6c..105927c 100644 --- a/index.php +++ b/index.php @@ -74,7 +74,7 @@ if(empty($c) || $c == 'index'){ require "./system/login.php";//登陆 }elseif(in_array($c,['admin','click','api','ico','icon','verify'])){ require "./system/{$c}.php"; -}elseif(in_array($c,['apply','guestbook'])){ +}elseif(in_array($c,['apply','guestbook','article'])){ if($global_config['Maintenance'] != 0){Amsg(-1,'网站正在进行维护,请稍后再试!');} require "./system/expand/{$c}.php"; }else{ diff --git a/system/MySQL/20230723.php b/system/MySQL/20230723.php new file mode 100644 index 0000000..7893907 --- /dev/null +++ b/system/MySQL/20230723.php @@ -0,0 +1,40 @@ +$file_name,'update_time'=>time(),'status'=>'TRUE','extra'=>'']); +}else{ + msg(-1,'数据库更新失败'); +} diff --git a/system/MySQL/install.sql b/system/MySQL/install.sql index de1de6a..07d45c8 100644 --- a/system/MySQL/install.sql +++ b/system/MySQL/install.sql @@ -26,7 +26,8 @@ CREATE TABLE IF NOT EXISTS `user_count` ( `uid` int(10) UNSIGNED NOT NULL COMMENT '用户ID', `k` varchar(32) NOT NULL COMMENT '键', `v` bigint(10) UNSIGNED DEFAULT '0' COMMENT '值', - `t` varchar(32) NOT NULL COMMENT '类型' + `t` varchar(32) NOT NULL COMMENT '类型', + `e` text NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -46,7 +47,8 @@ INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALU INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230420.php', '1681977368', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230518.php', '1684393068', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230522.php', '1684762253', 'TRUE', ''); -INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1684762253', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1689427853', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230723.php', '1690119053', 'TRUE', ''); -- 创建用户表 DROP TABLE IF EXISTS `global_user`; @@ -195,7 +197,9 @@ INSERT INTO `purview_list` (`code`, `name`, `description`) VALUES ('link_extend', '链接扩展', '允许使用链接扩展字段'), ('theme_in', '主题设置', '后台显示主题设置菜单'), ('theme_set', '主题配置', '允许自定义主题配置'), -('icon_pull', '图标拉取', '允许用户拉取链接图标'); +('icon_pull', '图标拉取', '允许用户拉取链接图标'), +('article', '文章管理', '允许使用文章管理功能'), +('article_image', '文章图片', '允许在文章编辑器上传图片'); -- 注册码列表 DROP TABLE IF EXISTS `regcode_list`; @@ -274,4 +278,34 @@ CREATE TABLE IF NOT EXISTS `global_icon` ( `file_mime` text NOT NULL COMMENT 'MIME类型', `extend` text NOT NULL COMMENT '预留扩展', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; \ No newline at end of file +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; + +-- 用户文章分类 +CREATE TABLE IF NOT EXISTS `user_article_categorys` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `uid` varchar(32) NOT NULL COMMENT '用户id', + `name` varchar(64) NOT NULL COMMENT '名称', + `weight` int(11) NOT NULL DEFAULT '0' COMMENT '权重', + `add_time` int(10) UNSIGNED NOT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; + +-- 用户文章列表 +CREATE TABLE IF NOT EXISTS `user_article_list` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `uid` varchar(32) NOT NULL COMMENT '用户id', + `title` text NOT NULL COMMENT '标题', + `category` int(10) UNSIGNED NOT NULL COMMENT '分类id', + `state` int(10) UNSIGNED NOT NULL COMMENT '状态', + `password` text NOT NULL COMMENT '访问密码', + `top` int(10) UNSIGNED NOT NULL COMMENT '置顶', + `add_time` int(10) UNSIGNED NOT NULL COMMENT '创建时间', + `up_time` int(10) UNSIGNED NOT NULL COMMENT '修改时间', + `browse_count` int(10) UNSIGNED NOT NULL COMMENT '浏览次数', + `summary` text NOT NULL COMMENT '摘要', + `content` text NOT NULL COMMENT '内容', + `cover` text NOT NULL COMMENT '封面', + `extend` text NOT NULL COMMENT '扩展', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; + diff --git a/system/SQLite/20230723.php b/system/SQLite/20230723.php new file mode 100644 index 0000000..dbd2959 --- /dev/null +++ b/system/SQLite/20230723.php @@ -0,0 +1,40 @@ +$file_name,'update_time'=>time(),'status'=>'TRUE','extra'=>'']); +}else{ + msg(-1,'数据库更新失败'); +} \ No newline at end of file diff --git a/system/SQLite/install.sql b/system/SQLite/install.sql index 01c0659..c3e5a8b 100644 --- a/system/SQLite/install.sql +++ b/system/SQLite/install.sql @@ -23,7 +23,8 @@ CREATE TABLE IF NOT EXISTS "user_count" ( "uid" integer(10) NOT NULL, "k" text(32) NOT NULL DEFAULT "", "v" integer(10) NOT NULL DEFAULT 0, - "t" text(32) NOT NULL DEFAULT "" + "t" text(32) NOT NULL DEFAULT "", + "e" text NOT NULL DEFAULT "" ); -- 数据库升级记录 @@ -38,7 +39,9 @@ CREATE TABLE IF NOT EXISTS "updatadb_logs" ( INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230417.php', '1681719049', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230420.php', '1681977368', 'TRUE', ''); INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230522.php', '1684762253', 'TRUE', ''); -INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1684762253', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230715.php', '1689427853', 'TRUE', ''); +INSERT INTO "updatadb_logs" ("file_name", "update_time", "status", "extra") VALUES ('20230723.php', '1690119053', 'TRUE', ''); + -- 创建用户表 CREATE TABLE IF NOT EXISTS "global_user" ( @@ -167,7 +170,9 @@ INSERT INTO `purview_list` (`code`, `name`, `description`) VALUES ('link_extend', '链接扩展', '允许使用链接扩展字段'), ('theme_in', '主题设置', '后台显示主题设置菜单'), ('theme_set', '主题配置', '允许自定义主题配置'), -('icon_pull', '图标拉取', '允许用户拉取链接图标'); +('icon_pull', '图标拉取', '允许用户拉取链接图标'), +('article', '文章管理', '允许使用文章管理功能'), +('article_image', '文章图片', '允许在文章编辑器上传图片'); -- 注册码列表 CREATE TABLE IF NOT EXISTS "regcode_list" ( @@ -240,4 +245,30 @@ CREATE TABLE IF NOT EXISTS "global_icon" ( "extend" text NOT NULL DEFAULT "", CONSTRAINT "id" UNIQUE ("id" ASC) ); - +-- 用户文章分类 +CREATE TABLE IF NOT EXISTS "user_article_categorys" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "uid" integer(10) NOT NULL, + "name" text NOT NULL DEFAULT "", + "weight" integer NOT NULL, + "add_time" integer(10) NOT NULL, + CONSTRAINT "id" UNIQUE ("id" ASC) +); +-- 用户文章列表 +CREATE TABLE "user_article_list" ( + "id" integer PRIMARY KEY AUTOINCREMENT, + "uid" integer(10) NOT NULL, + "title" TEXT NOT NULL DEFAULT "", + "category" integer NOT NULL, + "state" integer(1) DEFAULT 0, + "password" TEXT NOT NULL DEFAULT "", + "top" integer(10), + "add_time" integer(10), + "up_time" integer(10), + "browse_count" integer DEFAULT 0, + "summary" TEXT, + "content" TEXT, + "cover" TEXT, + "extend" TEXT, + CONSTRAINT "id" UNIQUE ("id" ASC) +); \ No newline at end of file diff --git a/system/admin.php b/system/admin.php index 83ff638..f970311 100644 --- a/system/admin.php +++ b/system/admin.php @@ -83,7 +83,7 @@ if($page == 'config_home'){ } //主题设置页面 -if( $page == 'theme_home' || $page == 'theme_login' || $page == 'theme_transit' || $page == 'theme_register' || $page == 'theme_guide') { +if( $page == 'theme_home' || $page == 'theme_login' || $page == 'theme_transit' || $page == 'theme_register' || $page == 'theme_guide' || $page == 'theme_article') { if(!check_purview('theme_in',1)){ require(DIR.'/templates/admin/page/404.php'); exit; @@ -208,7 +208,9 @@ if ($page == 'menu') { if($global_config['guestbook'] == 1 && check_purview('guestbook',1)){ array_push($extend,['title'=>'留言管理','href'=>'expand/guestbook-admin','icon'=>'fa fa-commenting-o']); } - + if($global_config['article'] == 1 && check_purview('article',1)){ + array_push($extend,['title'=>'文章管理','href'=>'expand/article-list','icon'=>'fa fa-file-text-o']); + } if(!empty($extend)){ $extend = ['title'=>'扩展功能','icon'=>'fa fa-folder-open-o','href'=>'','child'=> $extend]; array_push($menu,$extend); @@ -242,6 +244,13 @@ if(empty($page)){ exit; } +// 插件编辑链接跳转 +if($page === 'edit_link' && !empty($_GET['id'])){ + header("HTTP/1.1 302 Moved Permanently"); + header("Location: ./index.php?c=admin&page=link_edit&u=".U."&id=".$_GET['id']); + exit; +} + //页面文件不存在时载入404 if(!empty($page)){ if(!is_file(DIR.'/templates/admin/page/'.$page.'.php')){ diff --git a/system/api.php b/system/api.php index 0476906..e079aca 100644 --- a/system/api.php +++ b/system/api.php @@ -5,9 +5,10 @@ header("Access-Control-Allow-Headers: Access-Control-Allow-Private-Network,Conte AccessControl(); //鉴权验证 Cookie验证通过,验证二级密码,Cookie验证失败时尝试验证token +if(!empty(trim($_REQUEST['token']))){ $_COOKIE = []; } //兼容浏览器插件,避免干扰 + //获取请求方法 $method = htmlspecialchars(trim($_GET['method']),ENT_QUOTES); - $LoginConfig = unserialize($USER_DB['LoginConfig']); if(!is_login()){ //没登录,根据API模式来限制 @@ -21,7 +22,7 @@ if(!is_login()){ if($api_model != 'compatible+open'){ Amsg(-1,'非开放模式,token不能为空!'); } - if(in_array($method,['link_list','get_a_link','q_category_link','category_list','get_a_category','check_login'])){ + if(in_array($method,['link_list','get_a_link','q_category_link','category_list','get_a_category','check_login','app_info'])){ define('Access_Type','open'); //数据访问类型:仅开放 require 'api_compatible.php'; exit; @@ -462,7 +463,10 @@ function write_link(){ @unlink($_FILES["file"]["tmp_name"]); msg(-1,'文件格式不被支持!'); } - + //限制文件大小 + if(filesize($_FILES["file"]["tmp_name"]) > 1 * 1024 * 1024){ + msg(-1,'文件大小超限'); + } session_start(); $sid = $_POST['page_sid']; //添加链接 @@ -516,7 +520,39 @@ function write_link(){ }else{ msg(-1,'参数错误'); } - + //扩展上传图片 + }elseif($_GET['type'] == 'extend_up_img'){ + //权限检测 + if(!check_purview('Upload_icon',1)){ + msg(-1,'您的用户组无权限上传图片'); + }elseif(empty($_FILES["file"]) || $_FILES["file"]["error"] > 0){ + msg(-1,'文件上传失败'); + } + + //取后缀并判断是否支持 + $suffix = strtolower(end(explode('.',$_FILES["file"]["name"]))); + if(!preg_match('/^(jpg|jpeg|png|ico|bmp|svg)$/',$suffix)){ + @unlink($_FILES["file"]["tmp_name"]); + msg(-1,'文件格式不被支持!'); + } + //限制文件大小 + if(filesize($_FILES["file"]["tmp_name"]) > 1 * 1024 * 1024){ + msg(-1,'文件大小超限'); + } + //文件临时路径 + $path = DIR . "/data/user/{$u}/upload"; + //检测目录,不存在则创建! + if(!Check_Path($path)){ + msg(-1,'创建upload目录失败,请检查权限'); + } + $tmp_name = 'LE_'.uniqid().'.'.$suffix; + //移动文件 + if(!move_uploaded_file($_FILES["file"]["tmp_name"],"{$path}/{$tmp_name}")) { + msg(-1,'上传失败,请检查目录权限'); + }else{ + msgA(['code'=>1,'msg'=>'上传成功','url'=>"./data/user/".U.'/upload/'.$tmp_name]); + } + //删除图标 }elseif($_GET['type'] === 'del_images'){ session_start(); @@ -875,7 +911,7 @@ function write_link(){ if(empty($data['name']) || check_xss($data['name']) || !preg_match('/^[A-Za-z0-9]{3,18}$/',$data['name'])){ msgA( ['code' => -1,'msg' => '字段名错误,请输入长度3-18的字母/数字'] ); } - if(!in_array($data['type'],['text','textarea'])){ + if(!in_array($data['type'],['text','textarea','up_img'])){ msgA( ['code' => -1,'msg' => '类型错误'] ); } } @@ -889,7 +925,7 @@ function write_link(){ $datas = []; foreach ($lists as $key => $data ){ - array_push($datas,['title'=>$data['title'],'name'=>$data['name'],'weight'=>$data['weight'],'type'=>$data['type'],'default'=> "{$data['default']}"]); + array_push($datas,['title'=>$data['title'],'name'=>$data['name'],'weight'=>$data['weight'],'type'=>$data['type'],'default'=> "{$data['default']}",'tip'=>$data['tip']]); } //根据序号排序 usort($datas, function($a, $b) { @@ -1272,7 +1308,7 @@ function other_testing_link(){ //主题下载/更新/删除 function write_theme(){ global $global_config; - $fn = $_POST['fn'];if($_GET['type'] != 'config' && !in_array($fn,['home','login','transit','register','guide'])){msg(-1,'fn参数错误');} + $fn = $_POST['fn'];if($_GET['type'] != 'config' && !in_array($fn,['home','login','transit','register','guide','article'])){msg(-1,'fn参数错误');} if($_GET['type'] == 'download'){ is_root(); if($global_config['offline']){msg(-1,"离线模式禁止下载主题!");} //离线模式 @@ -1393,6 +1429,8 @@ function write_theme(){ $s_templates['login'] = $name; }elseif($fn == 'transit'){ $s_templates['transit'] = $name; + }elseif($fn == 'article'){ + $s_templates['article'] = $name; }elseif($fn == 'register'){ $global_templates['register'] = $name; update_db('global_config',['v'=>$global_templates],['k'=>'s_templates'],[1,'注册模板设置成功']); @@ -1417,7 +1455,7 @@ function write_theme(){ msg(-1,"获取模板类型错误"); } $fn = empty($GET['fn']) ? $_GET['template_type'] : $GET['fn']; - if(!in_array($fn,['home','login','register','transit','guide'])){ + if(!in_array($fn,['home','login','register','transit','guide','article'])){ msg(-1,"参数错误"); } //0420 END @@ -1617,6 +1655,8 @@ function read_data(){ curl_setopt($ch, CURLOPT_URL, $_POST['url']); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + $start = microtime(true); $response = curl_exec($ch); $end = microtime(true); @@ -1735,6 +1775,17 @@ function other_local_backup(){ require DIR . '/system/UseFew/local_backup.php'; exit; } +//读文章 +function read_article(){ + require DIR . '/system/api_article.php'; + exit; +} +//写文章 +function write_article(){ + require DIR . '/system/api_article.php'; + exit; +} + //获取链接信息 function other_get_link_info(){ global $global_config; diff --git a/system/api_article.php b/system/api_article.php new file mode 100644 index 0000000..a052fa6 --- /dev/null +++ b/system/api_article.php @@ -0,0 +1,210 @@ +> '.$type); +} + +//上传图片 +function uploadImage(){ + global $u; + //权限检测 + if(!check_purview('article_image',1)){ + msgA(['errno'=>-1,'message'=>'您的用户组无权限上传图片']); + }elseif(empty($_FILES["file"]) || $_FILES["file"]["error"] > 0){ + msgA(['errno'=>-1,'message'=>'文件上传失败']); + } + + //取后缀并判断是否支持 + $suffix = strtolower(end(explode('.',$_FILES["file"]["name"]))); + if(!preg_match('/^(jpg|png|gif|bmp|jpeg|svg)$/',$suffix)){ + @unlink($_FILES["file"]["tmp_name"]); + msgA(['errno'=>-1,'message'=>'文件格式不被支持']); + } + //限制文件大小 + if(filesize($_FILES["file"]["tmp_name"]) > 5 * 1024 * 1024){ + msgA(['errno'=>-1,'message'=>'文件大小超限']); + } + //文件临时路径 + $ym = date("Ym"); + $path = DIR . "/data/user/{$u}/upload/{$ym}/"; + //检测目录,不存在则创建! + if(!Check_Path($path)){ + msgA(['errno'=>-1,'message'=>'创建upload目录失败,请检查权限']); + } + $tmp_name = 'AI_'.uniqid().'.'.$suffix; + //移动文件 + if(!move_uploaded_file($_FILES["file"]["tmp_name"],"{$path}/{$tmp_name}")) { + msgA(['errno'=>-1,'message'=>'上传失败,请检查目录权限']); + }else{ + msgA(['errno'=>0,'data'=>['url'=>"./data/user/{$u}/upload/{$ym}/$tmp_name",'alt'=>$_FILES["file"]["name"],'href'=>''],'message'=>'上传成功']); + } +} + +//上传视频 +function uploadVideo(){ + msgA(['errno'=>-1,'message'=>'未开放']); + global $u; + //权限检测 + if(!check_purview('article_image',1)){ + msgA(['errno'=>-1,'message'=>'您的用户组无权限上传视频']); + }elseif(empty($_FILES["file"]) || $_FILES["file"]["error"] > 0){ + msgA(['errno'=>-1,'message'=>'文件上传失败']); + } + + //取后缀并判断是否支持 + $suffix = strtolower(end(explode('.',$_FILES["file"]["name"]))); + if(!preg_match('/^(avi|mp4|wma|rmvb|rm|flash|3gp|flv)$/',$suffix)){ + @unlink($_FILES["file"]["tmp_name"]); + msgA(['errno'=>-1,'message'=>'文件格式不被支持']); + } + //限制文件大小 + if(filesize($_FILES["file"]["tmp_name"]) > 20 * 1024 * 1024){ + msgA(['errno'=>-1,'message'=>'文件大小超限']); + } + //文件临时路径 + $ym = date("Ym"); + $path = DIR . "/data/user/{$u}/upload/{$ym}/"; + //检测目录,不存在则创建! + if(!Check_Path($path)){ + msgA(['errno'=>-1,'message'=>'创建upload目录失败,请检查权限']); + } + $tmp_name = 'AV_'.uniqid().'.'.$suffix; + //移动文件 + if(!move_uploaded_file($_FILES["file"]["tmp_name"],"{$path}/{$tmp_name}")) { + msgA(['errno'=>-1,'message'=>'上传失败,请检查目录权限']); + }else{ + msgA(['errno'=>0,'data'=>['url'=>"./data/user/{$u}/upload/{$ym}/$tmp_name",'alt'=>$_FILES["file"]["name"],'href'=>''],'message'=>'上传成功']); + } +} + +//获取文章列表 +function article_list(){ + $where['uid'] = UID; + //分类筛选 + if(intval(@$_POST['category']) > 0){ + $where['AND']['category'] = intval(@$_POST['category']); + } + //状态筛选 + if(intval(@$_POST['state']) > 0){ + $where['AND']['state'] = intval(@$_POST['state']); + } + //关键字筛选 + $query = $_POST['keyword']; + if(!empty($query)){ + $where['AND']['OR'] = ["title[~]" => $query,"summary[~]" => $query,"content[~]" => $query]; + } + //统计条数 + $count = count_db('user_article_list',$where); + //分页 + $page = empty(intval($_REQUEST['page'])) ? 1 : intval($_REQUEST['page']); + $limit = empty(intval($_REQUEST['limit'])) ? 50 : intval($_REQUEST['limit']); + $offset = ($page - 1) * $limit; //起始行号 + $where['LIMIT'] = [$offset,$limit]; + $where['ORDER']['weight'] = 'ASC'; + + $datas = select_db('user_article_list',['id','title','category','category_name','state','password','top','add_time','up_time','browse_count','summary'],$where); + + $categorys = select_db('user_article_categorys',['id','name'],['uid'=>UID]); + + foreach (select_db('user_article_categorys',['id','name'],['uid'=>UID]) as $data) { + $categorys[$data['id']] = $data['name']; + } + + foreach ($datas as &$data) { + $data['category_name'] = $categorys[$data['category']]; + } + msgA(['code'=>1,'count'=>$count,'data'=>$datas]); +} + +//保存文章 +function save_article(){ + check_category($_POST['category']);$time = time(); + if(empty($_POST['id'])){ + insert_db('user_article_list',[ + 'uid'=>UID, + 'title'=>$_POST['title'], + 'category'=>$_POST['category'], + 'state'=>$_POST['state'], + 'password'=>'', + 'top'=>0, + 'add_time'=>$time, + 'up_time'=>$time, + 'browse_count'=>0, + 'summary'=>$_POST['summary'], + 'content'=>$_POST['content'], + 'cover'=>'', + 'extend'=>'' + ],[1,'保存成功']); + }else{ + if(!has_db('user_article_list',['uid'=>UID,'id'=>$_POST['id']])){ + msg(-1,'文章id错误'); + } + update_db('user_article_list',[ + 'title'=>$_POST['title'], + 'category'=>$_POST['category'], + 'state'=>$_POST['state'], + 'up_time'=>$time, + 'summary'=>$_POST['summary'], + 'content'=>$_POST['content'], + ],['uid'=>UID,'id'=>$_POST['id']],[1,'保存成功']); + } + + +} +//删除文章 +function del_article(){ + $id = json_decode($_POST['id']); + delete_db('user_article_list',['uid'=>UID,'id'=>$id],[1,'删除成功']); +} +//分类列表 +function category_list(){ + $where['uid'] = UID; + $where['ORDER']['weight'] = 'ASC'; + $data = select_db('user_article_categorys',['id','name','weight','add_time'],$where); + msgA(['code'=>1,'count'=>count($data),'data'=>$data]); +} +//添加分类 +function add_category(){ + $name = trim($_POST['name']); + $time = time(); + if(empty($name)){ + msg(-1,'分类名称不能为空'); + } + if(has_db('user_article_categorys',['uid'=>UID,'name'=>$name])){ + msg(-1,'分类名称已存在'); + } + insert_db('user_article_categorys',[ + 'uid'=>UID, + 'name'=>$name, + 'weight'=>0, + 'add_time'=>$time + ],[1,'添加成功']); + msg(-1,'添加失败'); +} +//删除分类 +function del_category(){ + check_category($_POST['id']); + delete_db('user_article_categorys',['uid'=>UID,'id'=>$_POST['id']],[1,'删除成功']); +} +//保存分类 +function save_category(){ + check_category($_POST['id']); + update_db('user_article_categorys',['name'=>$_POST['name'],'weight'=>$_POST['weight']],['uid'=>UID,'id'=>$_POST['id']],[1,'更新成功']); +} +//检查分类 +function check_category($id){ + if(empty($id)){ + msg(-1,'分类ID不能为空'); + } + if(!has_db('user_article_categorys',['uid'=>UID,'id'=>$id])){ + msg(-1,'分类不存在'); + } +} + diff --git a/system/api_compatible.php b/system/api_compatible.php index 799b81c..147e467 100644 --- a/system/api_compatible.php +++ b/system/api_compatible.php @@ -1,6 +1,6 @@ > '.$method); @@ -42,6 +42,50 @@ function add_link(){ insert_db('user_links',$data); msgA(['code'=>0,'id'=>$lid]); } +//删除链接 +function del_link(){ + $lid = intval(trim($_REQUEST['id'])); + if(empty($lid)){ + msg(-1,'id不能为空'); + } + $where['lid'] = $lid; + $where['uid'] = UID; + if(!has_db('user_links',$where)){ + msg(-1,'链接id不存在'); + } + delete_db('user_links',$where,[0,'删除成功']); +} + +//搜索链接 +function global_search(){ + $keyword = htmlspecialchars($_REQUEST['keyword']); + + if( strlen($keyword) < 2 ) { + msg(-2000,'关键字的长度太短'); + }elseif( strlen($keyword) > 32 ) { + msg(-2000,'关键字长度过长'); + } + + $where['uid'] = UID; + $where['status'] = 1; + $where['AND']['OR'] = ["title[~]" => $keyword,"url[~]" => $keyword, "url_standby[~]" => $keyword,"description[~]" => $keyword]; + $where['ORDER'] = ['weight'=>'DESC']; + $field = ['lid(id)','fid','status','property','title','url','url_standby','weight','description','click','add_time','up_time']; + $data = select_db('user_links',$field,$where); + + // 查询出分类名称 + $categorys = select_db('user_categorys',['cid(id)','name'],['uid'=>UID,'status'=>1]); + // 遍历分类,以id作为键名 + foreach ($categorys as $category) { + $newCategorys[$category['id']] = $category['name']; + } + // 遍历查询的数据,然后添加父级分类名称 + foreach ($data as $key => $value) { + $data[$key]['category_name'] = $newCategorys[$value['fid']]; + } + + msgA(['code'=>0,'msg'=>'获取成功','count'=>count($data),'data'=>$data]); +} //查询链接列表 function link_list(){ $page = empty(intval($_REQUEST['page'])) ? 1 : intval($_REQUEST['page']); @@ -68,7 +112,6 @@ function get_a_link(){ $lid = intval(trim($_REQUEST['id'])); if(empty($lid)){ msg(-1,'id不能为空'); - } $where['lid'] = $lid; $where['uid'] = UID; @@ -135,6 +178,15 @@ function get_a_category(){ } } +function app_info(){ + $data['php_version'] = floatval(PHP_VERSION); + $data['onenav_version'] = SysVer; + $data['cat_num'] = count_db('user_categorys',['uid'=>UID])??0; + $data['link_num'] = count_db('user_links',['uid'=>UID])??0; + $data['username'] = U; + msgA(['code'=>200,'msg'=>'success','data'=>$data]); +} + //是否已登录 function check_login(){ if(Access_Type == 'open'){ diff --git a/system/api_root.php b/system/api_root.php index 341c93d..95b22d5 100644 --- a/system/api_root.php +++ b/system/api_root.php @@ -555,6 +555,7 @@ function write_sys_settings(){ 'apply'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'收录管理参数错误'], 'guestbook'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'留言管理参数错误'], 'link_extend'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'链接扩展参数错误'], + 'article'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'文章管理参数错误'] ]; $o_config = []; foreach ($datas as $key => $data){ @@ -575,9 +576,30 @@ function write_sys_settings(){ if($_POST['apply'] == 1){$o_config['apply'] = 0;$filter = true;} if($_POST['guestbook'] == 1){$o_config['guestbook'] = 0;$filter = true;} if($_POST['link_extend'] == 1){$o_config['link_extend'] = 0;$filter = true;} + if($_POST['article'] == 1){$o_config['article'] = 0;$filter = true;} + } + //检测于下载文章管理依赖资源 + clearstatcache(); + if($o_config['article'] == 1 && ( !is_file('./static/wangEditor/wangEditor.js') || !is_file('./static/wangEditor/wangEditor.css'))){ + $filePath = "./data/temp/wangEdito.tar.gz"; + if(downFile('https://update.lm21.top/TwoNav/updata/wangEdito.tar.gz','wangEdito.tar.gz','./data/temp/')){ + $file_md5 = md5_file($filePath); + if($file_md5 != "95f830656ba8972cca39a1ddd6ebaeda"){ + unlink($filePath); + msg(-1,'效验wangEdito失败
!'); + } + }else{ + msg(-1,'下载wangEdito失败,请重试!
如需手动安装可联系技术支持!'); + } + try { + $phar = new PharData($filePath); + $phar->extractTo('./static/', null, true); + unlink($filePath); + clearstatcache(); + } catch (Exception $e) { + msg(-1,'安装wangEdito失败'); + } } - - update_db("global_config", ["v" => $o_config], ["k" => "o_config"],[1,($filter ?"保存成功,未检测到有效授权,带*号的配置无法为你保存":"保存成功")]); } diff --git a/system/expand/article.php b/system/expand/article.php new file mode 100644 index 0000000..58485a6 --- /dev/null +++ b/system/expand/article.php @@ -0,0 +1,58 @@ +UID,'k'=>'s_site'])); +$site['Title'] = $site['title'].(empty($site['subtitle'])?'':' - '.$site['subtitle']); +//免费用户请保留版权,谢谢! +$copyright = empty($global_config['copyright'])?'Copyright © TwoNav':$global_config['copyright']; +$ICP = empty($global_config['ICP'])?'':''.$global_config['ICP'].''; +$favicon = ( !empty($site['site_icon_file'])) ? $site['site_icon'] : './favicon.ico'; + + +//取模板信息 +require DIR ."/system/templates.php"; +$dir_path = DIR.'/templates/article/'.$s_templates['article']; +$theme_dir = str_replace(DIR.'/templates/article',"./templates/article",$dir_path); +$path = $dir_path.'/index.php'; +//检查是否存在,不存在则使用默认 +if(!is_file($path)){ + $path= DIR.'/templates/article/default/index.php'; +} + +//统计点击数 +update_db("user_article_list", ["browse_count[+]"=>1],['uid'=>UID,'id'=>$id]); + +//读取用户主题配置 +$theme_config_db = unserialize(get_db('user_config','v',['t'=>'theme_article','k'=>$s_templates['article'],'uid'=>UID])); + +//读取默认主题配置 +$theme_info = json_decode(@file_get_contents($dir_path.'/info.json'),true); +$theme_config = empty($theme_info['config']) ? []:$theme_info['config']; +$theme_ver = !Debug?$theme_info['version']:$theme_info['version'].'.'.time(); + +//合并配置数据 +$theme_config = empty($theme_config_db) ? $theme_config : array_merge ($theme_config??[],$theme_config_db??[]); + +require $path; +exit; + +//返回404 +function Not_Found() { + header('HTTP/1.1 404 Not Found');header("status: 404 Not Found");exit; +} \ No newline at end of file diff --git a/system/firewall.php b/system/firewall.php index 8b3dd8f..dded5c8 100644 --- a/system/firewall.php +++ b/system/firewall.php @@ -11,7 +11,9 @@ foreach($_POST as $key =>$value){ if($method =='write_site_setting' && ($key =='custom_header' || $key =='custom_footer')){ continue; } - + if($method == 'write_article'){ + continue; + } if(preg_match('/<(iframe|script|body|img|layer|div|meta|style|base|object|input)/i',$value)){ $code = 2001; }elseif(preg_match('/(onmouseover|onerror|onload)\=/i',$value)){ diff --git a/system/index.php b/system/index.php index a29cda7..3b16941 100644 --- a/system/index.php +++ b/system/index.php @@ -163,7 +163,7 @@ function get_links($fid) { $where['LIMIT'] = $site['max_link']; $max_link = true; } - $links = select_db('user_links',['lid(id)','fid','property','title','url(real_url)','url_standby','description','icon','click','pid'],$where); + $links = select_db('user_links',['lid(id)','fid','property','title','url(real_url)','url_standby','description','icon','click','pid','extend'],$where); foreach ($links as $key => $link) { $click = false; $lock = false; @@ -198,6 +198,15 @@ function get_links($fid) { //获取图标链接 $links[$key]['ico'] = $lock ? $GLOBALS['libs'].'/Other/lock.svg' : geticourl($site['link_icon'],$link); } + //处理扩展信息 + if($GLOBALS['global_config']['link_extend'] == 1 && check_purview('link_extend',1) && in_array($GLOBALS['theme_info']['support']['link_extend'],["true","1"])){ + foreach ($links as &$link) { + if(!empty($link['extend'])){ + $link = array_merge ($link,unserialize($link['extend'])); + } + } + + } if($max_link && $count > $site['max_link']){ $oc_url = "./index.php?u={$u}&oc={$fid}" . (empty($_GET['theme']) ? '':"&theme={$_GET['theme']}"); array_push($links,['id'=>0,'title'=>'查看全部','url'=>$oc_url,'real_url'=>$oc_url,'description'=>'该分类共有'.$count.'条数据','ico'=>'./favicon.ico']); diff --git a/system/public.php b/system/public.php index 630e45b..fb7189e 100644 --- a/system/public.php +++ b/system/public.php @@ -445,10 +445,10 @@ function is_subscribe($type = 'bool'){ $count = count($host); if($count != 2){ $data['host'] = $host[$count-2].'.'.$host[$count-1]; - //如果存在端口则去除 - if(preg_match("/(.+):\d+/",$data['host'],$host)) { - $data['host'] = $host[1]; - } + } + //如果存在端口则去除 + if(preg_match("/(.+):\d+/",$data['host'],$host)) { + $data['host'] = $host[1]; } } if(!stristr($data['domain'],$data['host'])){ @@ -745,15 +745,15 @@ function send_email($config){ function count_ip(){ $ip = Get_IP(); //取访客IP $k = date('Ymd'); $t = 'ip_list'; - $ip_list = get_db('user_count','v',['uid'=>UID,'k'=>$k,'t'=>$t]); //取列表 + $ip_list = get_db('user_count','e',['uid'=>UID,'k'=>$k,'t'=>$t]); //取列表 $ip_list = empty($ip_list) ? [] : unserialize($ip_list); //反序列化 //判断IP是否存在列表中 if(!in_array($ip, $ip_list)){ $ip_list[] = $ip; //加入列表 if(!has_db('user_count',['uid'=>UID,'t'=>$t,'k'=>$k])){ - insert_db("user_count", ['uid'=>UID,"k"=>$k,"v"=>$ip_list,'t'=>$t]); + insert_db("user_count", ['uid'=>UID,"k"=>$k,"e"=>$ip_list,'t'=>$t]); }else{ - update_db("user_count", ["v"=>$ip_list],['uid'=>UID,'t'=>$t,'k'=>$k]); + update_db("user_count", ["e"=>$ip_list],['uid'=>UID,'t'=>$t,'k'=>$k]); } write_user_count($k,'ip_count');//访问ip数+1 } diff --git a/system/version.txt b/system/version.txt index da0400a..449d313 100644 --- a/system/version.txt +++ b/system/version.txt @@ -1 +1 @@ -v2.0.31-20230720 \ No newline at end of file +v2.0.32-20230727 \ No newline at end of file diff --git a/templates/admin/js/link.js b/templates/admin/js/link.js index ee1ef72..1614187 100644 --- a/templates/admin/js/link.js +++ b/templates/admin/js/link.js @@ -204,6 +204,28 @@ layui.use(module, function () { } } + + //链接扩展上传图片 + upload.render({ + elem: '.extend_up_img' + ,url: get_api('write_link','extend_up_img') + ,exts: 'jpg|jpeg|png|ico|bmp|svg' + ,acceptMime: 'image/*' + ,accept: 'file' + ,size: 1024 + ,done: function(res){ + if(res.code == 1){ + let inpu = this.item.closest('.layui-form-item').find('input[name^="_"]'); + inpu.val(res.url); + }else{ + layer.msg(res.msg || '上传失败', {icon: 5}); + } + },error: function(){ + layer.msg("上传异常,请刷新重试", {icon: 5}); + } + }); + + //layui>end }); diff --git a/templates/admin/js/link_list.js b/templates/admin/js/link_list.js index 5da3ffb..fefc3d8 100644 --- a/templates/admin/js/link_list.js +++ b/templates/admin/js/link_list.js @@ -376,6 +376,7 @@ layui.use(['form','table','dropdown','miniTab'], function () { ,{field:'name',title:'字段名',edit:'text',width:256} ,{field:'type',title:'类型',edit:'text',width:256} ,{field:'default',title:'默认值',edit:'text',width:256} + ,{field:'tip',title:'提示内容',edit:'text',width:256} ,{ title:'操作',toolbar:'#link_extend_toolbar',align:'center',width:118} ]] }); @@ -530,7 +531,7 @@ layui.use(['form','table','dropdown','miniTab'], function () { "title": "请输入标题", "name":"请输入字段名(大小写字母或数字)", "weight":(max_weight + 1), - "type":"请输入 text 或 textarea", + "type":"请输入 text 或 textarea 或 up_img", "default":"" }); table.reload('link_extend_list', {data: data}); diff --git a/templates/admin/page/expand/article-edit.php b/templates/admin/page/expand/article-edit.php new file mode 100644 index 0000000..91efb4d --- /dev/null +++ b/templates/admin/page/expand/article-edit.php @@ -0,0 +1,252 @@ +UID,'id'=>$article_id])){ + $data = get_db('user_article_list','*',['uid'=>UID,'id'=>$article_id]); + //var_dump($data); + }else{ + $mode = 'add'; + } + +} + +$title = $mode == 'add' ? '添加文章' : '编辑文章'; + +function echo_article_category(){ + $where['uid'] = UID; + foreach (select_db('user_article_categorys','*',$where) as $category) { + echo ""; + } +} + +require dirname(__DIR__).'/header.php' ?> + + + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/templates/admin/page/expand/article-list.php b/templates/admin/page/expand/article-list.php new file mode 100644 index 0000000..1e8eb4f --- /dev/null +++ b/templates/admin/page/expand/article-list.php @@ -0,0 +1,372 @@ +{$category['name']}"; + } +} +require dirname(__DIR__).'/header.php' ?> + +
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/templates/admin/page/link_extend.php b/templates/admin/page/link_extend.php index 7913551..719200f 100644 --- a/templates/admin/page/link_extend.php +++ b/templates/admin/page/link_extend.php @@ -18,15 +18,17 @@ if(!empty($list)){ echo_text($data); }elseif($data['type'] == 'textarea'){ echo_textarea($data); + }elseif($data['type'] == 'up_img'){ + echo_up_img($data); } } } function echo_text($data){ ?>
- +
- +
function echo_textarea($data){ ?>
- +
- +
+
+ +
+ +
+ 上传 +
+
+
+ diff --git a/templates/admin/page/root/mail_set.php b/templates/admin/page/root/mail_set.php index 9fa11f7..d2de5b5 100644 --- a/templates/admin/page/root/mail_set.php +++ b/templates/admin/page/root/mail_set.php @@ -17,18 +17,21 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
+
邮箱账号,例如: admin@qq.com
+
邮箱密码,也可能是独立密码或者授权码
+
例如: smtp.qq.com
@@ -36,6 +39,7 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
+
通常是: 465或587
@@ -46,6 +50,7 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
+
通常是: ssl
@@ -53,6 +58,7 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
+
例如: TwoNav书签<test@qq.com>
@@ -60,6 +66,7 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
+
例如:user@qq.com
注册参数
@@ -71,12 +78,14 @@ $title='系统设置';require(dirname(__DIR__).'/header.php'); +
开启时用户注册需通过邮箱接收验证码
+
为了避免被恶意发送,建议不低于30秒
diff --git a/templates/admin/page/root/sys_setting.php b/templates/admin/page/root/sys_setting.php index 40698ec..1ccf60f 100644 --- a/templates/admin/page/root/sys_setting.php +++ b/templates/admin/page/root/sys_setting.php @@ -251,6 +251,16 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
自定义链接的扩展信息(需自行添加字段,目前仅用于自定义过渡页)
+
+ +
+ +
+
简易文章管理功能 ( 请勿和专业的比,暂无前端模板支持,视情况逐渐优化 )
+
相关限制
程序采用UTF8编码,一个汉字约占用3个字节!英文字母和数组占用1个字节!值为0表示不限制!
添加或编辑时长度超限则不允许添加,批量识别时超限则截断
@@ -335,7 +345,9 @@ layui.use(['jquery','form','miniTab'], function () { }); //监听提交 form.on('submit(save)', function (data) { + layer.msg('正在保存中,请稍后...', {icon: 16,time: 1000*300,shadeClose: false}); $.post('./index.php?c=api&method=write_sys_settings&u='+u,data.field,function(data,status){ + layer.closeAll(); if(data.code == 1) { if(data.msg!="保存成功"){ layer.alert(data.msg) diff --git a/templates/admin/page/theme_article.php b/templates/admin/page/theme_article.php new file mode 100644 index 0000000..0e92093 --- /dev/null +++ b/templates/admin/page/theme_article.php @@ -0,0 +1,83 @@ +UID,'k'=>'s_site'])); +?> + + +
+
+
;padding: 6px;"> + + 刷新数据 + +
+
+
+ $theme) { +$online = !empty($theme['info']['md5']); //在线主题! +if($s_templates['article'] == $key){ + $icon =' '; +}else{ + $icon =''; +} +$color = ($s_templates['article'] == $key ?"color: #03a9f4;":""); +?> + +
+
+
+
+
+
+
+
+
+
+
+
+下载'."\n"; + }elseif($theme['info']['up'] == 1){ //如果有更新则同时显示下载和使用 + echo $Space.''."\n"; + echo $Space.''."\n"; + }else{ //其他情况仅显示使用 + echo $Space.''."\n"; + } + echo $Space.''."\n"; + if($theme['info']['config'] == '1'){ //支持配置的主题显示配置 + echo $Space.''."\n"; + } + if($USER_DB['UserGroup'] === 'root' && !$online){ //管理员&本地主题>显示删除 + echo $Space.''."\n"; + } +?> +
+
+
+
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/templates/admin/page/theme_home.php b/templates/admin/page/theme_home.php index e80f5cf..0dfadeb 100644 --- a/templates/admin/page/theme_home.php +++ b/templates/admin/page/theme_home.php @@ -17,6 +17,7 @@ 刷新数据 登录模板 过渡模板 + 文章模板 注册模板';} ?> 引导页模板';} ?> diff --git a/templates/admin/page/updatelog.php b/templates/admin/page/updatelog.php index cedef23..da9b9b3 100644 --- a/templates/admin/page/updatelog.php +++ b/templates/admin/page/updatelog.php @@ -2,6 +2,22 @@
+
  • + +
    +

    v2.0.32-20230727

    +
      +
    • [新增] 扩展功能新增简易文章管理 [ 半成品,尚未完善 ]
    • +
    • [新增] 链接自定义字段类型新增up_img,该类型支持上传1M大小的图片,权限于上传图标共享
    • +
    • [新增] 链接自定义字段新增提示内容
    • +
    • [变更] 主页模板前置处理,若模板支持链接扩展时提供扩展信息
    • +
    • [跟进] 支持onenav新版浏览器插件的兼容
    • +
    • [修复] ip统计存在异常的问题
    • +
    • [修复] 上传链接图标后端接口未限制大小
    • +
    • [修复] 在使用CDN的情况下可能出现授权验证问题
    • +
    +
    +
  • diff --git a/templates/article/default/index.css b/templates/article/default/index.css new file mode 100644 index 0000000..e65477e --- /dev/null +++ b/templates/article/default/index.css @@ -0,0 +1,145 @@ +@charset "utf-8"; +html{height: 100%;} +body{margin: 0;background: #0D1721;font-family:'pingfang SC','helvetica neue',arial,'hiragino sans gb','microsoft yahei ui','microsoft yahei',simsun,sans-serif;font-size:16px;line-height: 140%;color: #ddd;} +ul, ol, li,dt,dd{margin:0; padding:0;list-style: none;} +dl{margin-top:0; margin-bottom:0;} +p{margin:0 0 10px;} +img{border: 0; vertical-align:middle;max-width: 100%;} +img.img-responsive{width: 100%;} +input{outline: medium none;outline: none;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);} +input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #8A8A8A;} +input:focus{border-color:#FF9900; -webkit-box-shadow:inset 0 1px 1px rgba(255,136,0,.075),0 0 8px rgba(255,136,0,.6);} + +/* container */ +*{-webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box} +:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} +.container {width: 75%;position: relative;padding-right: 15px;padding-left: 15px;margin: 0 auto;} +.row{position: relative; margin-right: -15px; margin-left: -15px;} +.container:before,.container:after,.row:before,.row:after,.clearfix:before, .clearfix:after{ display: table; content: " "; clear: both;} + +/* text */ +h1{ font-size:22px; line-height: 28px;} +h2{ font-size:20px; line-height: 26px;} +h3{ font-size:18px; line-height: 24px;} +h4{ font-size:16px; line-height: 22px;} +h5{ font-size:14px; line-height: 20px;} +h6{ font-size:12px; line-height: 18px;} +h1,h2,h3,h4,h5,h6{ font-weight: 400; margin-top:10px; margin-bottom:10px} +a,button{ text-decoration:none; outline:none; -webkit-tap-highlight-color:rgba(0,0,0,0)} +a,h1, h2, h3, h4, h5, h6{ color: #8A8A8A;} +a,h1{color: #ffffff;} +a{color: #b1edff;} + +a:focus,a:hover,a:active{text-decoration:none;color: #FF9900;} + +.col-pd{ padding: 15px 20px;} +.text-muted{ color: #999;} +.split-line{display: inline-block; margin-left: 12px; margin-right: 12px; width: 1px; height: 14px; vertical-align: -2px; background: #636060;} +.news-title{ + border-bottom: 1px solid #4f4f4f !important; + padding-bottom: 12px; +} +/* header */ +.newbui-header__top{position: relative;height: 100px;padding: 0 20px;} +.newbui-header__logo{float:left; margin-right: 120px;} +.newbui-header__logo{width: auto;margin-top: 20px;} +.newbui-header__logo .logo{display:block;width: auto;height:60px;} +.newbui-header__search{float: right;position:relative;width:280px;margin-top: 32px;} +.newbui-header__search .form-control{display:block;width:100%;height: 35px;padding:6px 45px 6px 10px;font-size:12px;line-height:32px;border-radius: 5px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;background: #2D2F36;color: #8A8A8A;-webkit-text-fill-color: #8A8A8A;border: 0;} +.newbui-header__search .submit{display:block; position:absolute; top: 0; right: 0; width:35px; height:35px; border: 0; cursor: pointer; background: url(img/icon_seacrh.png) center no-repeat;} + +.newbui-header__bar{position:relative;margin: 0;background: #223855;color: #191A20;box-shadow: 0 5px 10px #000;} +.newbui-header__menu > li{ position: relative; float:left;} +.newbui-header__menu > li > a{display:inline-block; padding: 15px 30px; font-size:15px; color: #fff;} +.newbui-header__menu > li > a:hover {background: #191A20;color: #FF9900;} +.newbui-header__menu > li.active > a{background: #191A20; color: #fff;} +.newbui-header__menu li .dropdown{display: none;width: 100%;position: absolute;z-index: 999;top: 100%;right: 0;text-align: center;font-size: 12px;color: #999;background: #2D2F36;box-shadow: 0 2px 8px rgba(0,0,0,.1);} +.newbui-header__menu li .dropdown li{ padding: 8px 0; border-top: 1px solid #2D2F36;} +.newbui-header__menu li .dropdown li:first-child{ padding-top: 15px; border-top: 0;} +.newbui-header__menu li .dropdown li:last-child{ padding-bottom: 15px;} +.newbui-header__menu li a{ font-size: 14px;} +.newbui-header__menu li:hover .dropdown{ display: block;} +.newbui-header__more{float: left;padding-top: 20px;width: 250px;} +.newbui-header__more li{margin-bottom: 5px;color: #ddd;} +.newbui-header__more li .text{ display: inline-block; width: 60px; color: #fff;} + + +/* pannel */ +.newbui-pannel{position: relative;margin-top: 30px;background: #0D1721;border-radius: 5px;border: 1px solid #2D2F36;} +.newbui-pannel-left{ float: left; width: 70%;} +.newbui-pannel-side{ float: left; width: 30%;} +.newbui-pannel__head{padding: 15px 20px;line-height: 25px;border-bottom: 1px solid #2D2F36;} +.newbui-pannel__head .title{ margin: 0;} +.newbui-pannel__foot{ padding: 15px 20px;} + +/* more */ +.margin-0{ margin: 0 !important;} +.padding-0{ padding: 0 !important;} +.pull-left{ float: left !important;} +.pull-right{ float: right !important;} +.hide,.visible-lg, .visible-md, .visible-sm, .visible-xs, .visible-mi{ display: none !important;} +.newbui-foot{ padding: 20px; text-align: center; color: #999;} + + +.pc{display: block!important;} +.m{display: none!important;} +.navbar-light { + color: #fff !important; + font-size: 16px; + /*font-weight: bold;*/ + text-shadow: 0px 1px 0px #000 +} + +@media (min-width: 1200px){ + .visible-lg { display: block !important;} + .hidden-lg {display: none !important;} +} + +@media (max-width: 1199px) and (min-width: 992px){ + .visible-md { display: block !important;} + .hidden-md {display: none!important;} +} + +@media (max-width: 991px) and (min-width: 768px){ + .visible-sm{ display: block !important;} + .hidden-sm {display: none !important;} +} + +@media (max-width: 1023px){ + .container{ width: 100%; padding-right: 30px; padding-left: 30px;} +} + +@media (max-width:767px){ + .visible-xs { display: block !important;} + .hidden-xs {display: none!important;} + .container{ padding: 0;} + .row{ margin: 0;} + .col-pd{ padding: 10px;} + + /* header */ + .newbui-header__top{ height: 60px; padding:0 10px;} + .newbui-header__logo{margin: 12px 0 0;padding: 0;} + .newbui-header__logo .logo{width: 148px; height:35px;} + .newbui-header__search{ float: none; width: auto; margin: 0; position: absolute; top: 15px; right: 10px; left: 168px;} + .newbui-header__search .form-control{ height: 30px; line-height: 30px; border-radius: 5px; padding:6px 40px 6px 10px; border: 0;} + .newbui-header__search .submit{ width: 30px; height: 30px;} + .newbui-header__bar{ box-shadow: none;} + .newbui-header__menu { position:relative; margin: 0; overflow: auto; white-space:nowrap; overflow-y:hidden;overflow-x:scroll; -webkit-overflow-scrolling:touch} + .newbui-header__menu > li{ float: none; display: inline-block;} + .newbui-header__menu > li > a{ padding: 10px 15px; font-size: 14px;} + .newbui-header__menu li:hover .dropdown{ display: none;} + + /* pannel */ + .newbui-pannel{ margin-top: 10px; border: 0; border-radius: 0; box-shadow: none;} + .newbui-pannel__head{ padding: 10px; line-height: 25px; border-bottom: 1px solid #2D2F36;} + .newbui-pannel__head .title{ font-size: 16px;} + .newbui-pannel__foot{ padding: 10px;} + + .pc{ + display: none!important; + } + .m{ + display: block!important; + } + +} \ No newline at end of file diff --git a/templates/article/default/index.php b/templates/article/default/index.php new file mode 100644 index 0000000..51ca461 --- /dev/null +++ b/templates/article/default/index.php @@ -0,0 +1,46 @@ + + + + + + + <?php echo $data['title'];?> + + + + + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    + +
    +
    +
    +
    +
    +
    +
    +

    + + +

    + + +
    + + \ No newline at end of file diff --git a/templates/article/default/info.json b/templates/article/default/info.json new file mode 100644 index 0000000..ef9db8f --- /dev/null +++ b/templates/article/default/info.json @@ -0,0 +1,9 @@ +{ + "name":"默认", + "description":"待优化", + "homepage":"https://gitee.com/tznb/TwoNav", + "version":"2.0.0", + "update":"2023/07/27", + "author":"TwoNav", + "screenshot":"https://s3.bmp.ovh/imgs/2022/04/17/8cac968a8cc8135c.png" +} \ No newline at end of file diff --git a/templates/article/default/screenshot.jpg b/templates/article/default/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b3e91e1f0491874601f3f9534c6febbad02a95b GIT binary patch literal 94001 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