From 5b6925aafaa0cfcdf1eec6bf0fdf0f51a706f600 Mon Sep 17 00:00:00 2001 From: "MI15\\Win" <10359480+tznb@user.noreply.gitee.com> Date: Tue, 25 Apr 2023 17:14:13 +0800 Subject: [PATCH] v2.0.16-20230425 --- index.php | 2 +- system/UseFew/export_data.php | 12 +- system/admin.php | 10 +- system/api.php | 12 +- system/api_root.php | 1 + system/index.php | 25 +- system/login.php | 4 + system/version.txt | 2 +- templates/admin/js/home-root.js | 4 +- .../js/lay-module/tableSelect/tableSelect.js | 2 +- templates/admin/js/link.js | 2 +- templates/admin/js/link_list.js | 2 +- templates/admin/js/link_sort.js | 2 +- templates/admin/page/LoginDevice.php | 2 +- templates/admin/page/SiteSetting.php | 6 +- templates/admin/page/data_control.php | 2 +- templates/admin/page/expand/apply-admin.php | 2 +- templates/admin/page/home.php | 2 + templates/admin/page/pwd_group.php | 2 +- templates/admin/page/root/import_data.php | 4 +- templates/admin/page/root/reg_control.php | 2 +- templates/admin/page/root/sys_log.php | 2 +- templates/admin/page/root/sys_setting.php | 14 +- templates/admin/page/root/user_control.php | 2 +- templates/admin/page/share.php | 2 +- templates/admin/page/theme_guide.php | 84 ++++ templates/admin/page/theme_home.php | 2 +- templates/admin/page/updatelog.php | 18 + templates/guide/default/config.php | 78 ++++ templates/guide/default/index.php | 39 ++ templates/guide/default/info.json | 13 + templates/guide/default/main.css | 419 ++++++++++++++++++ templates/guide/default/screenshot.jpg | Bin 0 -> 38909 bytes templates/login/default/index.php | 4 +- templates/transit/default/index.php | 77 ++-- 35 files changed, 781 insertions(+), 75 deletions(-) create mode 100644 templates/admin/page/theme_guide.php create mode 100644 templates/guide/default/config.php create mode 100644 templates/guide/default/index.php create mode 100644 templates/guide/default/info.json create mode 100644 templates/guide/default/main.css create mode 100644 templates/guide/default/screenshot.jpg diff --git a/index.php b/index.php index 46ccddd..9a69120 100644 --- a/index.php +++ b/index.php @@ -38,7 +38,7 @@ define('libs',$global_config['Libs']); define('SysVer',Get_Version()); define('Debug',$global_config['Debug'] == 1); -if($c !== $global_config["Register"]){ +if($c != $global_config["Register"]){ $u = Get('u'); if(empty($u) && $global_config['Sub_domain'] == 1 && is_subscribe('bool')){ $cut = explode('.',$_SERVER["HTTP_HOST"]); diff --git a/system/UseFew/export_data.php b/system/UseFew/export_data.php index deb4f2a..c9f4b89 100644 --- a/system/UseFew/export_data.php +++ b/system/UseFew/export_data.php @@ -21,8 +21,8 @@ if($_GET['type'] == 'create' ){ msg(-1,'导出失败'); } } - $_SESSION['download'][$key] = $tempnam; - msgA(['code'=>1,'msg'=>'success','key'=>$key,'name'=>$tempnam]); + $_SESSION['download']["$key"] = $tempnam; + msgA(['code'=>1,'msg'=>'success','key'=>$key]); }else{ msg(-1,'密码错误'); } @@ -30,7 +30,7 @@ if($_GET['type'] == 'create' ){ //验证Key if(!is_file($_SESSION['download'][$_GET['key']])){ - exit("Key错误,请在后台重新导出!"); + exit("Key错误,请在后台重新导出!".$_SESSION['download']["{$_GET['key']}"]); }else{ if($_GET['type'] == 'html' ){ header("Cache-Control: public"); @@ -59,7 +59,8 @@ if(!is_file($_SESSION['download'][$_GET['key']])){ //生成数据 function create_data(){ if($_POST['type'] == 'html' ){ - $tempnam = tempnam(null,'export_html_'); + $key = md5(uniqid().Get_Rand_Str(8)); + $tempnam = DIR ."/data/temp/export_html_{$key}.html"; $file = fopen($tempnam, "w") or msg(-1,'载入临时文件失败'); fwrite($file,base64_decode("PCFET0NUWVBFIE5FVFNDQVBFLUJvb2ttYXJrLWZpbGUtMT4NCjwhLS0gVGhpcyBpcyBhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlLg0KICAgICBJdCB3aWxsIGJlIHJlYWQgYW5kIG92ZXJ3cml0dGVuLg0KICAgICBETyBOT1QgRURJVCEgLS0+DQo8TUVUQSBIVFRQLUVRVUlWPSJDb250ZW50LVR5cGUiIENPTlRFTlQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+DQo8VElUTEU+T25lTmF2IEV4dGVuZCBCb29rbWFya3M8L1RJVExFPg0KPEgxPk9uZU5hdiBFeHRlbmQgQm9va21hcmtzPC9IMT4NCjxETD48cD4NCg==")); fwrite($file,'

书签栏

'."\n"); @@ -94,7 +95,8 @@ function create_data(){ } if($_POST['type'] == 'db3'){ - $tempnam = tempnam(null,'export_db3_'); + $key = md5(uniqid().Get_Rand_Str(8)); + $tempnam = DIR ."/data/temp/export_db3_{$key}.db3"; try { //初始化数据库 class MyDB extends SQLite3 {function __construct() {} } $MyDB = new MyDB(); diff --git a/system/admin.php b/system/admin.php index 655bb2c..c02e073 100644 --- a/system/admin.php +++ b/system/admin.php @@ -68,7 +68,7 @@ if($page == 'config_home'){ $theme_config = empty($theme_config['config']) ? []:$theme_config['config']; //读取用户主题配置 - if(!in_array($_GET['fn'],['home','login','register','transit'])){ + if(!in_array($_GET['fn'],['home','login','register','transit','guide'])){ msg(-1,"参数错误"); } $theme_config_db = get_db('user_config','v',['t'=>'theme_'.$_GET['fn'],'k'=>$theme,'uid'=>UID]); @@ -79,7 +79,7 @@ if($page == 'config_home'){ $theme_config = array_merge ($theme_config,$theme_config_db); } //配置为空 - if(empty($theme_config)){ + if(empty($theme_config) || !check_purview('theme_in',1) || !check_purview('theme_set',1)){ exit("

获取主题配置失败

"); } require $config_path; @@ -87,7 +87,11 @@ if($page == 'config_home'){ } //主题设置页面 -if( $page == 'theme_home' || $page == 'theme_login' || $page == 'theme_transit' || $page == 'theme_register') { +if( $page == 'theme_home' || $page == 'theme_login' || $page == 'theme_transit' || $page == 'theme_register' || $page == 'theme_guide') { + if(!check_purview('theme_in',1)){ + require(DIR.'/templates/admin/page/404.php'); + exit; + } $fn = str_replace('theme_','',$page); $dirs = get_dir_list(DIR.'/templates/'.$fn); diff --git a/system/api.php b/system/api.php index bb3bc69..6d91139 100644 --- a/system/api.php +++ b/system/api.php @@ -1104,7 +1104,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'])){msg(-1,'fn参数错误');} + $fn = $_POST['fn'];if($_GET['type'] != 'config' && !in_array($fn,['home','login','transit','register','guide'])){msg(-1,'fn参数错误');} if($_GET['type'] == 'download'){ is_root(); if($global_config['offline']){msg(-1,"离线模式禁止下载主题!");} //离线模式 @@ -1191,13 +1191,16 @@ function write_theme(){ $type = $_POST['type']; $name = $_POST['name']; //如果是注册模板则必须是root权限 - if($fn == 'register'){is_root();} + if($fn == 'register' || $fn == 'guide'){is_root();} //相关检测 if ( !preg_match("/^[a-zA-Z0-9_-]{1,64}$/",$name) ) { msg(-1,"主题名称不合法!"); }elseif(!is_dir(DIR."/templates/$fn/".$name)){ msg(-1,'主题不存在'); + }elseif(!check_purview('theme_in',1)){ + msg(-1,'无权限'); } + //读取用户模板配置 require DIR."/system/templates.php"; //判断设置的类型 @@ -1219,6 +1222,9 @@ function write_theme(){ }elseif($fn == 'register'){ $global_templates['register'] = $name; update_db('global_config',['v'=>$global_templates],['k'=>'s_templates'],[1,'注册模板设置成功']); + }elseif($fn == 'guide'){ + $global_templates['guide'] = $name; + update_db('global_config',['v'=>$global_templates],['k'=>'s_templates'],[1,'引导页模板设置成功']); } //更新数据 update_db('user_config',['v'=>$s_templates],['uid'=>UID,'k'=>'s_templates'],[1,'设置成功']); @@ -1237,7 +1243,7 @@ function write_theme(){ msg(-1,"获取模板类型错误"); } $fn = empty($GET['fn']) ? $_GET['template_type'] : $GET['fn']; - if(!in_array($fn,['home','login','register','transit'])){ + if(!in_array($fn,['home','login','register','transit','guide'])){ msg(-1,"参数错误"); } //0420 END diff --git a/system/api_root.php b/system/api_root.php index 5b4cd9b..03263cb 100644 --- a/system/api_root.php +++ b/system/api_root.php @@ -500,6 +500,7 @@ function write_sys_settings(){ 'Maintenance'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'维护模式参数错误'], 'Sub_domain'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'二级域名参数错误'], 'Privacy'=>['int'=>true,'min'=>0,'max'=>1,'msg'=>'强制私有参数错误'], + 'default_page'=>['int'=>true,'min'=>0,'max'=>2,'msg'=>'默认页面参数错误'], 'copyright'=>['empty'=>true], 'global_header'=>['empty'=>true], 'global_footer'=>['empty'=>true], diff --git a/system/index.php b/system/index.php index 96d107b..86c7d67 100644 --- a/system/index.php +++ b/system/index.php @@ -5,7 +5,7 @@ define('is_login',is_login()); //判断用户组,是否允许未登录时访问主页 if(!is_login && ($global_config['Privacy'] == 1 || !check_purview('Common_home',1))){ header("HTTP/1.1 302 Moved Permanently"); - header("Location: ./?c=admin"); + header("Location: ./?c=admin&u=".U); exit; } //载入站点设置 @@ -15,11 +15,32 @@ $site['Title'] = $site['title'].(empty($site['subtitle'])?'':' - '.$site['subt $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"; +//引导页 +if(!empty($global_config['default_page']) && $global_config['default_page'] == 2){ + if(empty(Get('u')) && empty($_COOKIE['Default_User'])){ + $theme = $global_templates['guide']; + $dir_path = DIR.'/templates/guide/'.$global_templates['guide']; + $index_path = $dir_path.'/index.php'; + if(!is_file($index_path)){ + $dir_path= DIR.'/templates/guide/default'; + $index_path = $dir_path.'/index.php'; + } + $theme_dir = str_replace(DIR.'/templates/guide',"./templates/guide",$dir_path); + $theme_info = json_decode(@file_get_contents($dir_path.'/info.json'),true); + $theme_config = empty($theme_info['config']) ? []:$theme_info['config']; + $theme_config_db = get_db('user_config','v',['t'=>'theme_guide','k'=>$theme,'uid'=>UID]); + $theme_config_db = unserialize($theme_config_db); + $theme_config = empty($theme_config_db) ? $theme_config : array_merge ($theme_config,$theme_config_db); + require($index_path); + exit; + } +} //参数指定主题优先 $theme = trim(@$_GET['theme']); -if ( !empty ($theme) ){ +if ( !empty ($theme) && check_purview('theme_in',1)){ $dir_path = DIR.'/templates/home/'.$theme; $index_path = $dir_path.'/index.php'; }else{ diff --git a/system/login.php b/system/login.php index 8762e77..4670fcd 100644 --- a/system/login.php +++ b/system/login.php @@ -48,6 +48,10 @@ if(Get_MD5_Password($Password,$USER_DB["RegTime"]) === $USER_DB["Password"]){ }else{ $url = preg_match('/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i',$_SERVER['HTTP_USER_AGENT']) ? "./?c=index&u={$USER_DB['User']}" : "./?c=admin&u={$USER_DB['User']}"; } + //默认页面 + if(!empty($global_config['default_page'])){ + setcookie('Default_User', $User, strtotime("+360 day"),"/",'',false,false); + } msgA(['code'=>1,'msg'=>'登录成功','url'=>$url]); }else{ update_db("user_log", ["description" => "请求登录>账户或密码错误"], ["id"=>$log_id]); diff --git a/system/version.txt b/system/version.txt index c1c6da4..e9ae985 100644 --- a/system/version.txt +++ b/system/version.txt @@ -1 +1 @@ -v2.0.15-20230422 \ No newline at end of file +v2.0.16-20230425 \ No newline at end of file diff --git a/templates/admin/js/home-root.js b/templates/admin/js/home-root.js index 765758d..54f23e2 100644 --- a/templates/admin/js/home-root.js +++ b/templates/admin/js/home-root.js @@ -48,7 +48,7 @@ layui.use(['layer','miniTab'], function(){ //如果失败 if(up_info.code != 1){ layer.closeAll(); - layer.alert(up_info.msg ?? "错误代码:404",{icon:2,title:'更新失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); + layer.alert(up_info.msg || "错误代码:404",{icon:2,title:'更新失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); return; } //设为异步模式 @@ -70,7 +70,7 @@ layui.use(['layer','miniTab'], function(){ request_update(); }else{ layer.closeAll(); - layer.alert(data.msg ?? "未知错误,请联系开发者!",{icon:5,title:up_info.info[i-1],anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); + layer.alert(data.msg || "未知错误,请联系开发者!",{icon:5,title:up_info.info[i-1],anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); } }); } diff --git a/templates/admin/js/lay-module/tableSelect/tableSelect.js b/templates/admin/js/lay-module/tableSelect/tableSelect.js index 53dc2d0..3e3a1ed 100644 --- a/templates/admin/js/lay-module/tableSelect/tableSelect.js +++ b/templates/admin/js/lay-module/tableSelect/tableSelect.js @@ -47,7 +47,7 @@ layui.define(['table', 'jquery', 'form'], function (exports) { //判断是否多搜索条件 if(opt.searchType == 'more'){ $.each(opt.searchList, function (index, item) { - tableBox += ''; + tableBox += ''; }); }else{ tableBox += ''; diff --git a/templates/admin/js/link.js b/templates/admin/js/link.js index d182d52..7e42b2d 100644 --- a/templates/admin/js/link.js +++ b/templates/admin/js/link.js @@ -79,7 +79,7 @@ layui.use(['form','upload','miniTab'], function () { form_data.icon = res.icon; $("#icon").val(res.icon); }else{ - layer.msg(res.msg ?? '上传失败', {icon: 5}); + layer.msg(res.msg || '上传失败', {icon: 5}); } },error: function(){ diff --git a/templates/admin/js/link_list.js b/templates/admin/js/link_list.js index e4b0314..9c285d3 100644 --- a/templates/admin/js/link_list.js +++ b/templates/admin/js/link_list.js @@ -7,7 +7,7 @@ layui.use(['form','table','dropdown','miniTab'], function () { var categorys = []; var IDs = []; var api = get_api('read_link_list'); //列表接口 - var limit = localStorage.getItem(u + "_limit")??50; //尝试读取本地记忆数据,没有就默认50 + var limit = localStorage.getItem(u + "_limit") || 50; //尝试读取本地记忆数据,没有就默认50 var pwds = []; miniTab.listen(); //渲染表格 diff --git a/templates/admin/js/link_sort.js b/templates/admin/js/link_sort.js index cbf629f..73a2ad6 100644 --- a/templates/admin/js/link_sort.js +++ b/templates/admin/js/link_sort.js @@ -3,7 +3,7 @@ layui.use(['form','table'], function () { var table = layui.table; var data_tr,table_page; var api = get_api('read_link_list'); //列表接口 - var limit = localStorage.getItem(u + "_limit")??50; //尝试读取本地记忆数据,没有就默认50 + var limit = localStorage.getItem(u + "_limit") || 50; //尝试读取本地记忆数据,没有就默认50 var cols=[[ //表头 {type:'radio'} //开启单选框 diff --git a/templates/admin/page/LoginDevice.php b/templates/admin/page/LoginDevice.php index ac47c30..b32a57c 100644 --- a/templates/admin/page/LoginDevice.php +++ b/templates/admin/page/LoginDevice.php @@ -18,7 +18,7 @@ layui.use(['form','table'], function () { var table = layui.table; var form = layui.form; var api = get_api('read_login_info'); //列表接口 - var limit = localStorage.getItem(u + "_limit")??50; //尝试读取本地记忆数据,没有就默认50 + var limit = localStorage.getItem(u + "_limit") || 50; //尝试读取本地记忆数据,没有就默认50 var cols=[[ //表头 {field: 'id', title: 'ID', width:60, sort: true,hide:true} diff --git a/templates/admin/page/SiteSetting.php b/templates/admin/page/SiteSetting.php index 84dbd94..b346c28 100644 --- a/templates/admin/page/SiteSetting.php +++ b/templates/admin/page/SiteSetting.php @@ -134,9 +134,9 @@
- + - +
@@ -184,7 +184,7 @@ layui.use(['jquery','form','upload'], function () { $.removeCookie("Default_User"); $("#sdhp").text('设为默认主页') }else{ - $.cookie("Default_User",u); + $.cookie("Default_User",u,{expires: 360}); $("#sdhp").text('取消默认主页') } layer.msg("设置成功", {icon: 1}); diff --git a/templates/admin/page/data_control.php b/templates/admin/page/data_control.php index 41e170b..eb68f2d 100644 --- a/templates/admin/page/data_control.php +++ b/templates/admin/page/data_control.php @@ -303,7 +303,7 @@ layui.use(['layer','element','upload','form','table'], function(){ if(res.code == 1){ $("#imp_link button").removeClass("layui-btn-disabled"); }else{ - layer.alert(res.msg ?? "上传异常,请刷新重试
若无法解决请联系技术支持",{icon:5,title:'上传失败',anim: 2,closeBtn: 0,btn: ['刷新页面']},function () {location.reload();}); + layer.alert(res.msg || "上传异常,请刷新重试
若无法解决请联系技术支持",{icon:5,title:'上传失败',anim: 2,closeBtn: 0,btn: ['刷新页面']},function () {location.reload();}); } },error: function(){ layer.alert("上传异常,请刷新重试
若无法解决请联系技术支持",{icon:5,title:'错误',anim: 2,closeBtn: 0,btn: ['刷新页面']},function () {location.reload();}); diff --git a/templates/admin/page/expand/apply-admin.php b/templates/admin/page/expand/apply-admin.php index e68ad1f..0d73e77 100644 --- a/templates/admin/page/expand/apply-admin.php +++ b/templates/admin/page/expand/apply-admin.php @@ -179,7 +179,7 @@ layui.use(['element','table','layer','form','util','dropdown'], function(){ var form = layui.form; var dropdown = layui.dropdown; var layer = layui.layer; - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; form.val('conf', ); //表头 diff --git a/templates/admin/page/home.php b/templates/admin/page/home.php index 4c55470..de2522f 100644 --- a/templates/admin/page/home.php +++ b/templates/admin/page/home.php @@ -171,12 +171,14 @@ require 'header.php'; 站点设置 +
主题设置
+
diff --git a/templates/admin/page/pwd_group.php b/templates/admin/page/pwd_group.php index abcc764..9e565ba 100644 --- a/templates/admin/page/pwd_group.php +++ b/templates/admin/page/pwd_group.php @@ -29,7 +29,7 @@ layui.use(['form','table'], function () { var table = layui.table; var form = layui.form; var api = get_api('read_pwd_group_list'); //列表接口 - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; var load_list = function () { table.render({ diff --git a/templates/admin/page/root/import_data.php b/templates/admin/page/root/import_data.php index 75795c9..5c8c8ab 100644 --- a/templates/admin/page/root/import_data.php +++ b/templates/admin/page/root/import_data.php @@ -94,7 +94,7 @@ layui.use(['layer','form','miniTab'], function () { layer.msg('导入完毕', {icon: 1}); }else{ layer.closeAll(); - layer.alert(data.msg ?? "未知错误,请联系开发者!",{icon:5,title:'导入失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); + layer.alert(data.msg || "未知错误,请联系开发者!",{icon:5,title:'导入失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); } }); return; @@ -110,7 +110,7 @@ layui.use(['layer','form','miniTab'], function () { request_import(); }else{ layer.closeAll(); - layer.alert(data.msg ?? "未知错误,请联系开发者!",{icon:5,title:'导入失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); + layer.alert(data.msg || "未知错误,请联系开发者!",{icon:5,title:'导入失败',anim: 2,shadeClose: false,closeBtn: 0,btn: ['知道了']}); } }); } diff --git a/templates/admin/page/root/reg_control.php b/templates/admin/page/root/reg_control.php index 463d364..44769d7 100644 --- a/templates/admin/page/root/reg_control.php +++ b/templates/admin/page/root/reg_control.php @@ -78,7 +78,7 @@ layui.use(['table','layer','form'], function(){ var table = layui.table; var form = layui.form; var layer = layui.layer; - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; var cols=[[ //表头 diff --git a/templates/admin/page/root/sys_log.php b/templates/admin/page/root/sys_log.php index 23a992e..5163da0 100644 --- a/templates/admin/page/root/sys_log.php +++ b/templates/admin/page/root/sys_log.php @@ -49,7 +49,7 @@ layui.use(['table','layer','form'], function () { var form = layui.form; var table = layui.table; var layer = layui.layer; - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; var api = get_api('read_log'); var IDs = []; diff --git a/templates/admin/page/root/sys_setting.php b/templates/admin/page/root/sys_setting.php index 06ba2ed..4a3f4a4 100644 --- a/templates/admin/page/root/sys_setting.php +++ b/templates/admin/page/root/sys_setting.php @@ -16,7 +16,19 @@ $title='系统设置';require(dirname(__DIR__).'/header.php');
默认主页的账号,优先级:Get>Cookie/Host>默认用户>admin
- + +
+ +
+ +
+
直接访问域名不带任何参数时显示的页面
+
+
diff --git a/templates/admin/page/root/user_control.php b/templates/admin/page/root/user_control.php index 67ee4d5..f96a20f 100644 --- a/templates/admin/page/root/user_control.php +++ b/templates/admin/page/root/user_control.php @@ -54,7 +54,7 @@ layui.use(['table','layer','form'], function () { var form = layui.form; var table = layui.table; var layer = layui.layer; - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; var api = get_api('read_user_list','list'); var IDs = []; diff --git a/templates/admin/page/share.php b/templates/admin/page/share.php index 1476a29..088949a 100644 --- a/templates/admin/page/share.php +++ b/templates/admin/page/share.php @@ -149,7 +149,7 @@ layui.use(['form','table','laydate','tableSelect'], function () { var $ = layui.jquery,table = layui.table,form = layui.form,laydate = layui.laydate,tableSelect = layui.tableSelect; var api = get_api('read_share','share_list'); - var limit = localStorage.getItem(u + "_limit")??50; + var limit = localStorage.getItem(u + "_limit") || 50; var index,temp_date,type='category'; var isSupported = ClipboardJS.isSupported(); var baseUrl = Get_baseUrl(); diff --git a/templates/admin/page/theme_guide.php b/templates/admin/page/theme_guide.php new file mode 100644 index 0000000..a6665c6 --- /dev/null +++ b/templates/admin/page/theme_guide.php @@ -0,0 +1,84 @@ + + + +
+
+
;padding: 6px;"> + + 刷新数据 + +
+
+
+ $theme) { +$online = !empty($theme['info']['md5']); //在线主题! +if($global_templates['guide'] == $key){ + $icon =' '; +}else{ + $icon =''; +} +$color = ($global_templates['guide'] == $key ?"color: #03a9f4;":""); +?> + +
+
+
+
+
+
+
+
+
+
+
+
+下载'."\n"; + }elseif($theme['info']['up'] == 1){ //如果有更新则同时显示下载和使用 + echo $Space.''."\n"; + echo $Space.''."\n"; + }else{ //其他情况仅显示使用 + echo $Space.''."\n"; + } + echo $Space.''."\n"; + if(!$online){ //本地主题显示预览 + //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 dafea04..e80f5cf 100644 --- a/templates/admin/page/theme_home.php +++ b/templates/admin/page/theme_home.php @@ -18,7 +18,7 @@ 登录模板 过渡模板 注册模板';} ?> - + 引导页模板';} ?>
diff --git a/templates/admin/page/updatelog.php b/templates/admin/page/updatelog.php index eab7458..96acc23 100644 --- a/templates/admin/page/updatelog.php +++ b/templates/admin/page/updatelog.php @@ -2,6 +2,24 @@
+
  • + +
    +

    v2.0.16-20230425

    +
      +
    • [优化] 调整部分代码,使其能够兼容一些老旧的浏览器(如2345加速浏览器,都2023年了居然还在用2018年的内核)
    • +
    • [优化] 调整书签导出临时数据的存放路径为自身的temp,避免部分环境无法在/tmp写入数据造成导出异常
    • +
    • [优化] 默认过渡页
    • +
    • [优化] 默认登录模板(注册码注册时显示注册入口)
    • +
    • [新增] 主题商城新增引导页模板
    • +
    • [新增] 网站管理>系统设置>默认页面 (公开使用可以选择引导页面)
    • +
    • [修复] 站点设置>设为默认主页关闭浏览器后失效的问题
    • +
    • [修复] 站点设置在表单输入按回车弹出帮助页面的问题
    • +
    • [修复] 用户组主题设置权限问题
    • +
    • [修复] 其他已知问题
    • +
    +
    +
  • diff --git a/templates/guide/default/config.php b/templates/guide/default/config.php new file mode 100644 index 0000000..4370a82 --- /dev/null +++ b/templates/guide/default/config.php @@ -0,0 +1,78 @@ + + + + + + <?php echo $theme;?> - 主题配置 + + + +
    +
    +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + \ No newline at end of file diff --git a/templates/guide/default/index.php b/templates/guide/default/index.php new file mode 100644 index 0000000..e45cec1 --- /dev/null +++ b/templates/guide/default/index.php @@ -0,0 +1,39 @@ + + + + + <?php echo $site['Title'];?> + + + + + + + + + +
    + +
    + + +
    +
    +
    + + \ No newline at end of file diff --git a/templates/guide/default/info.json b/templates/guide/default/info.json new file mode 100644 index 0000000..f35edbd --- /dev/null +++ b/templates/guide/default/info.json @@ -0,0 +1,13 @@ +{ + "name": "默认", + "description": "模板来自于html5up.net", + "homepage": "https://gitee.com/tznb/TwoNav", + "version": "2.0.0", + "update": "2023/04/25", + "author": "TwoNav", + "config": { + "title":"", + "p1":"", + "bg_img":"" + } +} \ No newline at end of file diff --git a/templates/guide/default/main.css b/templates/guide/default/main.css new file mode 100644 index 0000000..ff529f6 --- /dev/null +++ b/templates/guide/default/main.css @@ -0,0 +1,419 @@ + +/* Dimension by HTML5 UP html5up.net | @ajlkn Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) */ + html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} + body { + line-height: 1; + -webkit-text-size-adjust: none; +} +ul { + list-style: none; +} + +/* Basic */ + @-ms-viewport { + width: device-width; +} + @media screen and (max-width: 480px) { + html, body { + min-width: 320px; + } +} + html { + box-sizing: border-box; +} + *, *:before, *:after { + box-sizing: inherit; +} + body { + background: #1b1f22; +} +/* Type */ + html { + font-size: 16pt; +} + @media screen and (max-width: 1680px) { + html { + font-size: 12pt; + } +} + @media screen and (max-width: 736px) { + html { + font-size: 11pt; + } +} + @media screen and (max-width: 360px) { + html { + font-size: 10pt; + } +} + body, input, select, textarea { + color: #ffffff; + font-family: "Source Sans Pro", sans-serif; + font-weight: 300; + font-size: 1rem; + line-height: 1.65; +} + a { + -moz-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out; + text-decoration: none; + color: inherit; +} + a:hover { + border-bottom-color: transparent; +} + p { + margin: 0 0 2rem 0; +} + h1, h2, h3, h4, h5, h6 { + color: #ffffff; + font-weight: 600; + line-height: 1.5; + margin: 0 0 1rem 0; + text-transform: uppercase; + letter-spacing: 0.2rem; +} + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; +} + h3 { + font-size: 1rem; +} +/* BG */ + #bg { + -moz-transform: scale(1.0); + -webkit-transform: scale(1.0); + -ms-transform: scale(1.0); + transform: scale(1.0); + -webkit-backface-visibility: hidden; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100vh; + z-index: 1; +} + #bg:before, #bg:after { + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + #bg:before { + -moz-transition: background-color 2.5s ease-in-out; + -webkit-transition: background-color 2.5s ease-in-out; + -ms-transition: background-color 2.5s ease-in-out; + transition: background-color 2.5s ease-in-out; + -moz-transition-delay: 0.75s; + -webkit-transition-delay: 0.75s; + -ms-transition-delay: 0.75s; + transition-delay: 0.75s; + background-image: linear-gradient(to top, rgba(19, 21, 25, 0.5), rgba(19, 21, 25, 0.5)), url("data:image/png;base64,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yLICl59onN/WfzfM899nypd8ghOMds/3Yuq9vPedxdh2v/EA8iNcP4Bc7/3+v+3Tfn+71/v/tift97d7vf9ve9J+f7vX+/+2R+//y97v/9s+7fe3e9J+f7sn7fe3e73/L/sJ+v+2T/v97X6C/r/s9f6/7dN+f7sn7fe3e/T+v+3n6P97foL+v+z1/r/t9f6/7fX+v+wn6P+7Xu//256039/uSfv97Z6039/uSfv97d7v/9ve7/+rfoL+v+3Tfn+7J+33t3u9/2970n5/u0fv/8ve7//bPu33t3v8/r/r/f6/7PX+v+31/r/t0fv/ttf7/7LX+/+2J+33t3v0/r/t035/uyft97d70n5/uyft97d70n5/uyft97d7Juj/u17v/9s+7fe3e7//b/u039/uSfv97Z6039/uSfv97d7v/9s+7fe3+wn6/7LX+/+2T/v97Z6039/u9f6/7dH7/7ZP+/3tXu//256039/uSfv97Z6039/u9f6/7fX+v+1J+/3tnrTf3+71/r/sJ+j/2z7t97d7vf9ve9J+f7vX+/+2J+33t3u9/+/6Cfr/tift97d7vf9ve/T+v+3Tfn+71/v/tift97d7vf9ve73/b3vSfn+71/v/tkfv/8te7//bfoL+v+z1/r/s9f6/7fX+v+1J+/3tXu//217v/9sevf//Sd0dEwAAwDAIq3/VE8HBEBANsT39++t+9O+v+9G/v+5H//66n/7/257+/XU///93vf//257+/XU///+XPf37637076/70b+/7kf//rof/fvrfvTvr/vRv7/u9f9f9g/+f9vTv7/u9f/f9qN/f93r/7/tR//+utf/f9tP//9l7///tqd/f92P/v11P/r3173+/8v+wf9ve/r31/2D/1/2+v9ve/r31/3o31/30/9/2//4/z3/4P+Xvf7/217//22v//+yf/D/u17//20/+vfX/ejfX/ejf3/dj/79de///7b3/3/VP/j/bU///rof/fvrXv//bT/699f99P9f9v7/b3v699f9/P/f9f7/L3v9/7e9/v/bfvr/b3v9/5e9/v/bfvTvr/vp/7/t6d9f96N/f92P/v11P/r31/3o31/3o39/3e/B/+96/f+3Pf37697//21P//66H/37637076/70b+/7v3/3/b076/7B/+/7PX/3/b076/70b+/7vX/3/bT/3/b07+/7vX/3/ajf3/dj/79dT/699e9/v/bXv//bT/699f96N9f9/r/L/sH/7/t6d9f9/r/b/vRv7/u9f/f9qN/f93r/7/rH/z/th/9++te//9tP/3/tz39++te//9tP/r3173+/9te//9tP/r3173+/9t++v8ve/3/t/2D/1/2+v8ve/3/t73+/9t+9O+ve/3/t73+/9t++v9ve/r31/3o31/3o39/3Y/+/XU//f+3Pf37637+/+96//+3Pf37637+/y97+vfX/ejfX/ejf3/dj/79dT/699f96N9f96N/f93r/7/sH/z/tqd/f93r/7/tR//+utf/f9uP/v11r///tp/+/8ve//9tT//+uh/9++t+9O+ve/3/l/2D/9/29O+v+wf/v+z1/9/29O+v+9G/v+6n//+2//H/e/7B/y97/f+3vf7/217//2X/4P93vf7/237076/70b+/7kf//rof/fvr3v//be///6p/8P/bnv79dT/699e9/v/bfvTvr/vp/7/s/f/f9vTvr/v5/7/r/f9f9vr/b3v9/7f99P/f9vr/L3v9/7f96N9f99P/f9vTv7/uR//+uh/9++t+9O+v+9G/v+5H//6634P/3/X6/297+vfXvf//257+/XU/+vfX/ejfX/ejf3/d+/+/7enfX/cP/n/Z6/+/7enfX/ejf3/d6/+/7af//7anf3/d6/+/7Uf//rof/fvrfvTvr3v9/7e9/v/bfvTvr/vRv7/u9f9f9g/+f9vTv7/u9f/f9qN/f93r/7/tR//+utf/f9c/+P9tP/r31/1Vd8cEAAAwCIDsn3ohPJgByAD//7UP//+1b//+dc//f+3T/v3rnv//2vP/X/u0f/+65/+/9uH/P/b8/9f+wf+PPf//sef/v/b8/9c+7d+/7vn/rz3//7UP//+1b//+dZ/271/3af/+dZ/271/34f+/9u3fv+7j/3/r/f+vffv3r/v4/x/79u9f92n//nWf9u9f92n//nWf9u9f92n//nWf9u9f9/z/1/4AuzlkoYASx08AAAAASUVORK5CYII="); + background-size: auto,256px 256px; + background-position: center,center; + background-repeat: no-repeat,repeat; + z-index: 2; +} + #bg:after { + -moz-transform: scale(1.125); + -webkit-transform: scale(1.125); + -ms-transform: scale(1.125); + transform: scale(1.125); + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out; + transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out; + background-position: center; + background-size: cover; + background-repeat: no-repeat; + z-index: 1; +} +/* Wrapper */ + #wrapper { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + -moz-justify-content: space-between; + -webkit-justify-content: space-between; + -ms-justify-content: space-between; + justify-content: space-between; + position: relative; + min-height: 100vh; + width: 100%; + padding: 4rem 2rem; + z-index: 3; +} + #wrapper:before { + content: ''; + display: block; +} + @media screen and (max-width: 1680px) { + #wrapper { + padding: 3rem 2rem; + } +} + @media screen and (max-width: 736px) { + #wrapper { + padding: 2rem 1rem; + } +} + @media screen and (max-width: 480px) { + #wrapper { + padding: 1rem; + } +} +/* Header */ + #header { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + background-image: -moz-radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%); + background-image: -webkit-radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%); + background-image: -ms-radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%); + background-image: radial-gradient(rgba(0, 0, 0, 0.25) 25%, rgba(0, 0, 0, 0) 55%); + max-width: 100%; + text-align: center; +} + #header > * { + -moz-transition: opacity 0.325s ease-in-out; + -webkit-transition: opacity 0.325s ease-in-out; + -ms-transition: opacity 0.325s ease-in-out; + transition: opacity 0.325s ease-in-out; + position: relative; + margin-top: 3.5rem; +} + #header > *:before { + content: ''; + display: block; + position: absolute; + top: calc(-3.5rem - 1px); + left: calc(50% - 1px); + width: 1px; + height: calc(3.5rem + 1px); + background: #ffffff; +} + #header > :first-child { + margin-top: 0; +} + #header > :first-child:before { + display: none; +} + #header .logo { + width: 5.5rem; + height: 5.5rem; + line-height: 5.5rem; + border: solid 1px #ffffff; + border-radius: 100%; +} + #header .logo .icon:before { + font-size: 2rem; +} + #header .content { + border-style: solid; + border-color: #ffffff; + border-top-width: 1px; + border-bottom-width: 1px; + max-width: 100%; +} + #header .content .inner { + -moz-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + -webkit-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + -ms-transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + transition: max-height 0.75s ease, padding 0.75s ease, opacity 0.325s ease-in-out; + -moz-transition-delay: 0.25s; + -webkit-transition-delay: 0.25s; + -ms-transition-delay: 0.25s; + transition-delay: 0.25s; + padding: 3rem 2rem; + max-height: 40rem; + overflow: hidden; +} + #header .content .inner > :last-child { + margin-bottom: 0; +} + #header .content p { + /*text-transform: uppercase; + */ + letter-spacing: 0.2rem; + font-size: 0.8rem; + line-height: 2; +} + #header nav ul { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + margin-bottom: 0; + list-style: none; + padding-left: 0; + border: solid 1px #ffffff; + border-radius: 4px; +} + #header nav ul li { + padding-left: 0; + border-left: solid 1px #ffffff; +} + #header nav ul li:first-child { + border-left: 0; +} + #header nav ul li a { + display: block; + min-width: 7.5rem; + height: 2.75rem; + line-height: 2.75rem; + padding: 0 1.25rem 0 1.45rem; + text-transform: uppercase; + letter-spacing: 0.2rem; + font-size: 0.8rem; + border-bottom: 0; +} + #header nav ul li a:hover { + background-color: rgba(255, 255, 255, 0.075); +} + #header nav ul li a:active { + background-color: rgba(255, 255, 255, 0.175); +} + @media screen and (max-width: 980px) { + #header .content p br { + display: none; + } +} + @media screen and (max-width: 736px) { + #header > * { + margin-top: 2rem; + } + #header > *:before { + top: calc(-2rem - 1px); + height: calc(2rem + 1px); + } + #header .logo { + width: 4.75rem; + height: 4.75rem; + line-height: 4.75rem; + } + #header .logo .icon:before { + font-size: 1.75rem; + } + #header .content .inner { + padding: 2.5rem 1rem; + } + #header .content p { + line-height: 1.875; + } +} + @media screen and (max-width: 480px) { + #header { + padding: 1.5rem 0; + } + #header .content .inner { + padding: 2.5rem 0; + } + #header nav ul { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + min-width: 10rem; + max-width: 100%; + } + #header nav ul li { + border-left: 0; + border-top: solid 1px #ffffff; + } + #header nav ul li:first-child { + border-top: 0; + } + #header nav ul li a { + height: 3rem; + line-height: 3rem; + min-width: 0; + width: 100%; + } +} +/* Main */ + #main { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + max-width: 100%; + z-index: 3; +} +/* Footer */ + #footer { + -moz-transition: -moz-transform 0.325s ease-in-out, -moz-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -webkit-transition: -webkit-transform 0.325s ease-in-out, -webkit-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + -ms-transition: -ms-transform 0.325s ease-in-out, -ms-filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + transition: transform 0.325s ease-in-out, filter 0.325s ease-in-out, opacity 0.325s ease-in-out; + width: 100%; + max-width: 100%; + margin-top: 2rem; + text-align: center; +} + #footer .copyright { + letter-spacing: 0.2rem; + font-size: 0.6rem; + opacity: 0.75; + margin-bottom: 0; + text-transform: uppercase; +} + \ No newline at end of file diff --git a/templates/guide/default/screenshot.jpg b/templates/guide/default/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f5f000618452093a3a6ec47ab16efa9bcd73761 GIT binary patch literal 38909 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 m+JjW5y*xiW9&>wk@U-NhYQg@_yw|@pJWMs 0){ echo '没有账号?立即注册'; } ?> @@ -91,7 +91,7 @@ data.Password = $.md5(data.Password); $.post('./index.php?c=&u='+data.User,data,function(re,status){ if(re.code == 1) { - window.location.href = re.url ?? './index.php?c=admin&u='+ data.User; + window.location.href = re.url; }else{ layer.msg(re.msg, {icon: 5}); } diff --git a/templates/transit/default/index.php b/templates/transit/default/index.php index f7b6edb..42ce689 100644 --- a/templates/transit/default/index.php +++ b/templates/transit/default/index.php @@ -11,12 +11,6 @@ @@ -40,7 +54,7 @@ if( empty($link['url_standby']) ) {
    -

    链接信息:

    - - - - - - - - - - - - - - +

    链接信息:

    +
      +
    • + 标 题 +
    • +
    • + 描 述 +
    • +
    • + 链 接 +
    • $url_standby){ @@ -95,21 +101,18 @@ foreach ($link['url_standby'] as $key => $url_standby){ $url = $url_standby; } ?> -
    - - - +
  • + 备用 +
  • + - -
    标题
    描述
    链接 -
    - -
    -
    备用链接 -
    - -
    -
    + + +
    即将打开,请稍等... -
    +
    存在备用链接,请手动点击您要打开的链接!