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,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIABAMAAAAGVsnJAAAAFVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAASAQCkAAAAB3RSTlMAGQQUEAgMhg+6UAAAELRJREFUeNrc3Tlz20YYxvH/swfqZwGS9cJyXINSnBqUndRgrhqMk3z/j5CZXGMngoR2NaNSv4aD6z0XcDTXAvWIE4EhwXHKiMUswrNQEVzxHE5DCsAKF2ukfR8BWPC9TuTLuZSJnoJEUcGVAFwKd4K6ziXA6RpxNZ6vat1zVwLMJ8tmqQSQuFgYBefvUsnkSwnmgWOskrRSsOVf4pHmPVkHwfgVvOkBgsMjaQ2y0jkAENzXkFMs0IM0z4gOpt9/r2rdY63AA5RSoXLQMhIyqN768wffYCkEJ9JKFeCCAIxN856JE4PDCpOJpgMAg0coHqwJ/PGsUHwWrrDwMxw0EnnTuqcYB95HjAJ1kSZcJgUD6pJiAGbigskFmysFiF6P1OY91II/uAIwChMrXSqhiixrBuh+/wUvZTahXwhjBRh5W/muef/EBaMfQ2HN8sxYC1VsX3Dte0lCrJBhqiTflTljptNpfljMgVj55Pk0AYROF63mlCl0qLTuqTK2XKwAFfCF4kKXjhSQj3BDKdsTQEaxlpUfh1IG1LrnL2WnggUe+XG9eOHHaiMN+N1aOSFLlK6eF8LZlaQbReTWPQGDZAwICcQJiBMqPQQ0mxUA8yH+nDCzYWTmu+b9vtuqzhgtg/NSxDXI+M/b6hX4zKJMh4dIMAOzYIRbvYGgLgQKYtUFKrIAJhQv67A+tO4BgYJR0ZkBjvPojqUkQi8HzN1Eb6Zwh1adeQdRcIYVXoH/4Rx8A1IKcX2bBt5DMp6RhCvfHY9LFCFxvsFasg3BqniRmvf7LqOaqp6+jFr3GAojACDRCyQC+QhSmMT0YIojA1xserIAVEP44NY9+6IL7Dsc41mkCqz/RhfNewAIzCv2fJ1AKEQScOSaWMbbZRT1aDOIUZquCEoHdnod3lY12FSuC//7vT4WocpigJ769iyQg3kFXnRI50e6CBlNMqxC0J2FJzOOlJrvhv42G38P3SIe3jFocvOeMySg+6EW1sBMIKJVkk2YBXTK5EcJXCaF3wP0i4HaDc37p5NoOnMAH/gBSKrbSbjmPcas7+RREwf0SwBNAPQYMScDsFpErBm4/fV38f0r8PF+1TQIzIqHQ2WdYGGgQIcxrDAjNFk935/P7w5CucJvzXvmd1FdX4sKUCSbAqkDLhVA+tZVmOrJtUepSx/hTAxncOse5/QJICNsvPqpfxYjM9FQuAUUAQRLaN0T+aFkjP7OkqC3MCnGumZfj0WwQuICIytDZ5i9vIcV9Ltb9zjYQzZGXpGYAaCmDinlATCewPCGXuRKLXbQVWhq3e+LrbECZPKK5i9i6/Y9ELhN0TADv93LHTVBZeKEXQR1I9eor9S+31N3tAxFCx0AIk3v11mkV+A/yydv/8bP5KNb93xWPnlvENMces1UuOnUqVMol2fKL617DJ2nBJBLdb0yMhg84Rm+5nDEziwCfZR/lTE5QVpAzXseIfKOeGZxsBywyAvjxVg5I0PXAbPmkH050ZN1CI9Af3brnn3dJstEDRidw3+6TZr3u/Lr2+/g9r3OoIgSxFmXRWLVSCUmcrKuCOBbwAJukRng2itkB7fueeLDWZDkZIUeelzx9od3+/6CEthWIN2uP0WqhnSUB4OLsPw9ytj5wWNnYJ7rN2G+THFp3+cMkPn5ewPBFRIiBx4x7jiYkHoAfLgGKMhgAvC2eY9hKTd9i22G4KyLXGyuXMZD5edZRQgAELAgIzMavmrew666G2FmWQCW/NsIMAZgxs37XenWX7djj+b9yLKjDTOgGgwS5sopcWOpcte8J7sW1J2TPgFQ14NPQusis1Js24zgAtIRlBAcdeYn2a37fa8Bth+jzfsq8Es5x4LowlqCBzRzqhUGANS6R/wyr2M0+OQbx0igCga/oS7z2agiFxT85opJE3ENAgDUuqf0oMKkibRdRC6AMfRIxmi6nO8nlr51z6646s4eS/RTudXWPfvSKuBPy5NpldY9z5XVIQDCbJflW/cA505LQAVR4zIJXEPGA9KAR+DB5hHoErxHcLVEtvwK/EudxsfgZzqVm/cXTPbyxiEia6liPHNbakUUOpgzy1gPBOhc1tWrx4MnfyqGsXUPHcbwyVYUoUdm5RNZRD8uccoOYbMHoX2vde6cA4U1OCt9ePKN4QpESnmESs8I2CK7dc++EZztXv3WPWa9LC/VHm9PDSQrWUWte/bFF+IAdP7z71BiRX/HF617uOYwUicKx4DD4O4YAlhmJbFkBF/WGqO6c4FwsNr3nw9Ycg8siQhwRYOFI4zL9oBm635fsxWyHdYnmq1egd/1TimC6AoK+vKd0rx/up4sBKq4IBieqUe37tnXZbTdgdK6R4Z5fSHtGM10Z5TCOvn2Ri4G2UXNe14YPA8PHCvD9uB68/6LWZOt2SK2Z1Va9y+tIBKTqZetFUbtez7vI+gLD4qOmWwAbnLHJ/RMH0Lrnh2B9bPDCa17Oq65XG06wDAXLnisqCqg0XHyWUz57EXw994m6Gcinu5b9zgmXkw41Us4H1hE1O3X+F5o5p54heb9520U2+vattswmvds9JZ29A4wzSwXjs8UIVr37EsuuSzgpxZRtO6x/fKKFv6ZQLyrKBJcPBInLffN+yfGa+rEDFqy5xxOh17zvDme8wr8uqv9YjsOad3vm8ePIAhV1XxPUPl3Hr95z861VHJFv3lS0JdrqVr3GzdNBBIFvo5Lhu2brnnPzhsrKCqo4nn9OPNZgqF1j3zkxU1d29vamvdIqJgAuJTriacmzSnC8pLWgcMHQQoJqK/AsxBA6JELEmChxf9ZRVworDBIH1MnJttR/RGl1v3OmYvNYe3mPfu+MLd3dDTvX+wxBGC7R7F1jzmKVBwmE7Y+GMRUxgV/CxXMoSZjvwbPro0ccbvu2Lp/aS25Bfdoc1CzeY+LsB3fdHznutFT+lTnGQbUvGfXagJtt+e07ndOJP5bY5njyXTyVcBI37zn5eMZHiW2j3do3u/6xF42B1Ob9/uaz//+NZ/YSfcK/MbxLF8+LraPd2neS3OegLm/B0+MeupElvkYTF2g78rd4dyZLA/W3LzfeHb852rZfvY079mVX67baajWPRkrYT+7vFrkYoIWMVM1zegHFpzVvN8XZkECkOUONPkwz6ujpOY9u8awKzCpHOr/x7Cb93sWUvJM+Nm6p9uzpegTfEM1AGB3b7vgM0i31j3b5RQloTc1FuHtckzrnl2NZ2wnY1v3gBn0wu5uIADYlAIVpHIsK6Tm/b4oY/u7q3UPew5v+F8DfhqGO7LGUtv3u44y3exNa9/vGct+7viO1v0f1N07TsNAGEXhMzxSO0X6VNTODqioswTY/yZAigQCksjSLc7cBXxyY9nWeOY/bBtJswxWHg4fwPH3SJp+f213NYc9J1gvn1e83HnJtHs2ra2M83Ir3dvu2bjl5HKFMRi7wTJ+tpy0e44AjDH2987WXRtLwfL+uqztnm17L2+Pdm/3LLvlyLICl59onN/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 0000000..8f5f000 Binary files /dev/null and b/templates/guide/default/screenshot.jpg differ diff --git a/templates/login/default/index.php b/templates/login/default/index.php index 5597127..cb5dfad 100644 --- a/templates/login/default/index.php +++ b/templates/login/default/index.php @@ -43,7 +43,7 @@
    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; } ?> -
    - - - +
  • + 备用 +
  • + - -
    标题
    描述
    链接 -
    - -
    -
    备用链接 -
    - -
    -
    + + +
    即将打开,请稍等... -
    +
    存在备用链接,请手动点击您要打开的链接!