From 4a31ee2470f5c253a73e1c33bcaf826c5a4e241f Mon Sep 17 00:00:00 2001 From: LyLme Date: Sat, 16 Dec 2023 17:14:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 + install/data/install_data.sql | 124 +++++ install/data/install_struct.sql | 167 +++++++ install/{ => data}/update.sql | 0 install/{ => data}/update1.sql | 0 install/{ => data}/update2.sql | 0 install/{ => data}/update3.sql | 0 install/{ => data}/update4.sql | 0 install/{ => data}/update5.sql | 0 install/{ => data}/update6.sql | 0 install/{ => data}/update7.sql | 0 install/data/update8.sql | 4 + install/index.php | 634 ++++++++++++------------- install/install.sql | 244 ---------- install/readme.html | 81 ---- install/templates/images/already.png | Bin 0 -> 6785 bytes install/templates/images/complete.png | Bin 0 -> 7845 bytes install/templates/images/correctBg.png | Bin 0 -> 381 bytes install/templates/images/errorBg.png | Bin 0 -> 342 bytes install/templates/images/inputOnBg.png | Bin 0 -> 1159 bytes install/templates/images/logo.png | Bin 0 -> 9039 bytes install/templates/js/forms.js | 140 ++++++ install/templates/js/jquery.min.js | 16 + install/templates/step_0.php | 69 +++ install/templates/step_1.php | 162 +++++++ install/templates/step_2.php | 84 ++++ install/templates/step_3.php | 23 + install/templates/step_4.php | 25 + install/templates/step_5.php | 22 + install/templates/style/install.css | 351 ++++++++++++++ 30 files changed, 1499 insertions(+), 651 deletions(-) create mode 100644 install/data/install_data.sql create mode 100644 install/data/install_struct.sql rename install/{ => data}/update.sql (100%) rename install/{ => data}/update1.sql (100%) rename install/{ => data}/update2.sql (100%) rename install/{ => data}/update3.sql (100%) rename install/{ => data}/update4.sql (100%) rename install/{ => data}/update5.sql (100%) rename install/{ => data}/update6.sql (100%) rename install/{ => data}/update7.sql (100%) create mode 100644 install/data/update8.sql delete mode 100644 install/install.sql delete mode 100644 install/readme.html create mode 100644 install/templates/images/already.png create mode 100644 install/templates/images/complete.png create mode 100644 install/templates/images/correctBg.png create mode 100644 install/templates/images/errorBg.png create mode 100644 install/templates/images/inputOnBg.png create mode 100644 install/templates/images/logo.png create mode 100644 install/templates/js/forms.js create mode 100644 install/templates/js/jquery.min.js create mode 100644 install/templates/step_0.php create mode 100644 install/templates/step_1.php create mode 100644 install/templates/step_2.php create mode 100644 install/templates/step_3.php create mode 100644 install/templates/step_4.php create mode 100644 install/templates/step_5.php create mode 100644 install/templates/style/install.css diff --git a/.gitignore b/.gitignore index 303b98f..d4030cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ include/log.txt nginx.htaccess install/install.lock +admin/cache.php +admin/log.txt +.htaccess +.gitignore diff --git a/install/data/install_data.sql b/install/data/install_data.sql new file mode 100644 index 0000000..1768c20 --- /dev/null +++ b/install/data/install_data.sql @@ -0,0 +1,124 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + + +INSERT INTO `lylme_groups` (`group_id`, `group_name`, `group_icon`, `group_order`, `group_status`, `group_pwd`) VALUES +(1, '常用导航', '', 1, 1, 0), +(2, '设计视觉', '', 2, 1, 0), +(3, '社交&存储', '', 3, 1, 0), +(4, '工具', '', 4, 1, 0), +(5, '开发', '', 5, 1, 0), +(6, '游戏娱乐', '', 6, 1, 0), +(7, '网站公告', '', 7, 1, 0); + +INSERT INTO `lylme_links` (`id`, `name`, `group_id`, `url`, `icon`, `PS`, `link_order`, `link_status`, `link_pwd`) VALUES +(1, '百度', 1, 'https://www.baidu.com/', '', NULL, 10, 1, 0), +(2, '腾讯视频', 1, 'https://v.qq.com', '', NULL, 10, 1, 0), +(3, '优酷', 1, 'https://www.youku.com/', '', NULL, 10, 1, 0), +(4, '爱奇艺', 1, 'https://www.iqiyi.com/', '', NULL, 10, 1, 0), +(5, '淘宝', 1, 'https://www.taobao.com/', '', NULL, 10, 1, 0), +(6, '哔哩哔哩', 1, 'https://www.bilibili.com/', '', NULL, 10, 1, 0), +(7, '微博', 1, 'https://www.weibo.com/', '', NULL, 10, 1, 0), +(8, 'QQ邮箱', 1, 'https://mail.qq.com/', '', NULL, 10, 1, 0), +(9, '百度贴吧', 1, 'https://tieba.baidu.com/', '', NULL, 10, 1, 0), +(10, 'CCTV直播', 1, 'https://tv.cctv.com/live/index.shtml', '', NULL, 10, 1, 0), +(11, '抖音网页版', 1, 'https://www.douyin.com/', '', NULL, 10, 1, 0), +(12, '快手网页版', 1, 'https://www.kuaishou.com/', '', NULL, 10, 1, 0), +(13, '网易云音乐', 1, 'https://music.163.com/', '', NULL, 10, 1, 0), +(14, 'QQ音乐', 1, 'https://y.qq.com/', '', NULL, 10, 1, 0), +(15, '酷狗音乐', 1, 'https://www.kugou.com/', '', NULL, 10, 1, 0), +(16, '虎牙直播', 1, 'https://www.huya.com/', '', NULL, 10, 1, 0), +(17, '斗鱼直播', 1, 'https://www.douyu.com/', '', NULL, 10, 1, 0), +(18, '企鹅电竞', 1, 'https://egame.qq.com/', '', NULL, 10, 1, 0), +(19, '微信文件传输助手', 1, 'https://filehelper.weixin.qq.com/', '', NULL, 10, 1, 0), +(20, '120秒视界', 1, 'https://60s.lylme.com/', '', NULL, 10, 1, 0), +(21, 'Office模板', 2, 'https://www.officeplus.cn/', '', NULL, 10, 1, 0), +(22, '搞定设计', 2, 'https://www.gaoding.com/', '', NULL, 10, 1, 0), +(23, '素材天下', 2, 'http://www.sucaitianxia.net/', '', NULL, 10, 1, 0), +(24, '千库网', 2, 'https://588ku.com/', '', NULL, 10, 1, 0), +(25, '图怪兽', 2, 'https://818ps.com', '', NULL, 10, 1, 0), +(26, '站酷', 2, 'https://www.zcool.com.cn/', '', NULL, 10, 1, 0), +(27, '阿里图标', 2, 'https://www.iconfont.cn/', '', NULL, 10, 1, 0), +(28, 'IconFinder', 2, 'https://www.iconfinder.com/', '', NULL, 10, 1, 0), +(29, '优设教程', 2, 'https://uiiiuiii.com/', '', NULL, 10, 1, 0), +(30, '知乎', 3, 'https://www.zhihu.com/explore', '', NULL, 10, 1, 0), +(31, '豆瓣', 3, 'https://www.douban.com/', '', NULL, 10, 1, 0), +(32, '简书', 3, 'https://www.jianshu.com/', '', NULL, 10, 1, 0), +(33, '阿里云盘', 3, 'https://www.aliyundrive.com/', '', NULL, 10, 1, 0), +(34, '百度网盘', 3, 'https://pan.baidu.com/', '', NULL, 10, 1, 0), +(35, '蓝奏云', 3, 'https://www.lanzou.com/', '', NULL, 10, 1, 0), +(36, '迅雷云盘', 3, 'https://pan.xunlei.com/', '', NULL, 10, 1, 0), +(37, 'OneDrive', 3, 'https://onedrive.live.com/', '', NULL, 10, 1, 0), +(38, '天翼云盘', 3, 'https://cloud.189.cn/', '', NULL, 10, 1, 0), +(39, 'UC网盘', 3, 'https://www.yun.cn/', '', NULL, 10, 1, 0), +(40, 'QQ邮箱', 3, 'https://mail.qq.com/', '', NULL, 10, 1, 0), +(41, 'Gmail', 3, 'https://mail.google.com/', '', NULL, 10, 1, 0), +(42, 'Hotmail', 3, 'https://outlook.live.com/mail/', '', NULL, 10, 1, 0), +(43, '网易邮箱', 3, 'https://mail.163.com/', '', NULL, 10, 1, 0), +(44, '新浪邮箱', 3, 'https://mail.sina.com.cn/', '', NULL, 10, 1, 0), +(45, '阿里邮箱', 3, 'https://mail.aliyun.com/', '', NULL, 10, 1, 0), +(46, '在线工具', 4, 'https://tool.lu/', '', NULL, 10, 1, 0), +(47, 'IP查询', 4, 'https://ip.cn/', '', NULL, 10, 1, 0), +(48, '文档在线转换', 4, 'https://xpdf.net/', '', NULL, 10, 1, 0), +(49, '谷歌翻译', 4, 'https://translate.google.cn/?hl=zh-CN', '', NULL, 10, 1, 0), +(50, '有道翻译', 4, 'https://fanyi.youdao.com/', '', NULL, 10, 1, 0), +(51, 'HTML在线运行', 4, 'https://c.runoob.com/front-end/61/', '', NULL, 10, 1, 0), +(52, 'MD编辑器', 4, 'https://www.lylme.com/html/', '', NULL, 10, 1, 0), +(53, '微PE工具', 4, 'http://www.wepe.com.cn/', '', NULL, 10, 1, 0), +(54, '在线代码格式化', 4, 'https://tool.oschina.net/codeformat/html/', '', NULL, 10, 1, 0), +(55, 'JS混淆器', 4, 'http://tool.chinaz.com/tools/jscodeconfusion.aspx', '', NULL, 10, 1, 0), +(56, '站长工具', 4, 'http://tool.chinaz.com/', '', NULL, 10, 1, 0), +(57, '在线Ping', 4, 'https://ping.chinaz.com/', '', NULL, 10, 1, 0), +(58, 'ICP备案查询', 4, 'https://icp.chinaz.com/', '', NULL, 10, 1, 0), +(59, '在线PS', 4, 'https://www.photopea.com/', '', NULL, 10, 1, 0), +(60, 'W3school', 5, 'http://www.w3school.com.cn/', '', NULL, 10, 1, 0), +(61, 'Github', 5, 'https://github.com/', '', NULL, 10, 1, 0), +(62, '码云Gitee', 5, 'https://gitee.com/', '', NULL, 10, 1, 0), +(63, 'Linux命令查询', 5, 'https://linux.lylme.com/', '', NULL, 10, 1, 0), +(64, 'CSDN', 5, 'https://www.csdn.net/', '', NULL, 10, 1, 0), +(65, 'CdnJs', 5, 'https://cdnjs.com/', '', NULL, 10, 1, 0), +(66, '字节跳动CDN', 5, 'https://cdn.bytedance.com/', '', NULL, 10, 1, 0), +(67, 'Font Awesome', 5, 'https://fontawesome.com/icons?https://fontawesome.com/', '', NULL, 10, 1, 0), +(68, 'MSDN我告诉你', 5, 'https://msdn.itellyou.cn/', '', NULL, 10, 1, 0), +(69, '腾讯云', 5, 'https://cloud.tencent.com/', '', NULL, 10, 1, 0), +(70, '阿里云', 5, 'https://www.aliyun.com/', '', NULL, 10, 1, 0), +(71, '4399小游戏', 6, 'http://www.4399.com/', '', NULL, 10, 1, 0), +(72, '7k7k小游戏', 6, 'http://www.7k7k.com/', '', NULL, 10, 1, 0), +(73, '英雄联盟', 6, 'https://lol.qq.com/', '', NULL, 10, 1, 0), +(74, '永劫无间', 6, 'https://www.yjwujian.cn/', '', NULL, 10, 1, 0), +(75, 'STEAM', 6, 'https://store.steampowered.com/', '', NULL, 10, 1, 0), +(76, '王者荣耀', 6, 'https://pvp.qq.com/', '', NULL, 10, 1, 0), +(77, '3DM GAME', 6, 'https://www.3dmgame.com/', '', NULL, 10, 1, 0), +(78, '官方主页', 7, 'https://www.lylme.com/', '', NULL, 10, 1, 0), +(79, '申请收录', 7, '/apply', '', NULL, 10, 1, 0), +(80, '建议&反馈', 7, 'https://support.qq.com/products/356339', '', NULL, 10, 1, 0); + +INSERT INTO `lylme_sou` (`sou_id`, `sou_alias`, `sou_name`, `sou_hint`, `sou_color`, `sou_link`, `sou_waplink`, `sou_icon`, `sou_st`, `sou_order`) VALUES +(1, 'baidu', '百度一下', '百度一下,你就知道', '#0c498c', 'https://www.baidu.com/s?word=', 'https://m.baidu.com/s?word=', '', 1, 1), +(2, 'sogou', '搜狗搜索', '上网从搜狗开始', '#696a6d', 'https://www.sogou.com/web?query=', NULL, '', 1, 2), +(3, 'bing', 'Bing必应', '微软必应搜索', '#696a6d', 'https://cn.bing.com/search?', NULL, '', 1, 3), +(4, 'zhihu', '知乎搜索', '有问题,上知乎', '#0084fe', 'https://www.zhihu.com/search?q=', NULL, '', 1, 4), +(5, 'bilibili', '哔哩哔哩', '(゜-゜)つロ 干杯~', '#00aeec', 'https://search.bilibili.com/all?keyword=', NULL, '', 1, 5), +(6, 'weibo', '微博搜索', '随时随地发现新鲜事', '#ff5722', 'https://s.weibo.com/weibo/', '', '', 1, 6), +(7, 'google', '谷歌搜索', '值得信任的搜索引擎', '#3B83FA', 'https://www.google.com/search?q=', '', '', 1, 7), +(8, 'fanyi', '在线翻译', '输入翻译内容(自动检测语言)', '#0084fe', 'https://fanyi.baidu.com/#auto/zh/', NULL, '', 1, 8); + +INSERT INTO `lylme_tags` (`tag_id`, `tag_name`, `tag_link`, `tag_target`) VALUES +(1, '主页', 'https://www.lylme.com/', 0), +(2, '博客', 'https://blog.lylme.com/', 1), +(3, 'Github', 'https://github.com/lylme', 1), +(4, '关于本站', '/about', 1), +(5, '申请收录', '/apply', 1), +(6, '查看', '/pwd', 0); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/install/data/install_struct.sql b/install/data/install_struct.sql new file mode 100644 index 0000000..5be0123 --- /dev/null +++ b/install/data/install_struct.sql @@ -0,0 +1,167 @@ +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + + +DROP TABLE IF EXISTS `lylme_apply`; +CREATE TABLE `lylme_apply` ( + `apply_id` int(4) NOT NULL, + `apply_name` varchar(20) NOT NULL, + `apply_url` varchar(255) NOT NULL, + `apply_group` int(2) NOT NULL, + `apply_icon` text NOT NULL, + `apply_mail` varchar(30) NOT NULL, + `apply_time` datetime NOT NULL, + `apply_status` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='收录申请'; + +DROP TABLE IF EXISTS `lylme_config`; +CREATE TABLE `lylme_config` ( + `id` int(11) NOT NULL, + `k` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '键', + `v` text COLLATE utf8mb4_unicode_ci COMMENT '值', + `description` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='导航配置' ROW_FORMAT=COMPACT; + +INSERT INTO `lylme_config` (`id`, `k`, `v`, `description`) VALUES +(1, 'admin_user', 'admin', '管理员用户名'), +(2, 'admin_pwd', '1ef987f238b7a80eaf3689cfc42aad2d', '管理员密码(1ef987f238b7a80eaf3689cfc42aad2d)对应123456'), +(3, 'md5pass', '1', '启用md5加密密码'), +(4, 'apply', '0', '收录申请'), +(5, 'apply_gg', '收录说明:
1. 禁止提交违规违法站点
2. 页面整洁,无多个弹窗广告和恶意跳转
3. 非盈利性网站,网站正常访问
4. 添加本站友链或网站已ICP备案优先收录
', '收录公告'), +(6, 'background', './assets/img/background.jpg', '背景图片'), +(7, 'cdnpublic', NULL, 'CDN地址'), +(8, 'copyright', 'Copyright ©2022 LyLme Spage. All Rights Reserved.', '版权代码'), +(9, 'description', '六零导航页(LyLme Spage)致力于简洁高效无广告的上网导航和搜索入口,沉淀最具价值链接,全站无商业推广,简约而不简单。', '网站描述'), +(10, 'home-title', '

上网,从这里开始!

', '首页标题'), +(11, 'icp', '', '备案号'), +(12, 'keywords', '六零导航页,百度搜索,哔哩哔哩搜索,知乎搜索,六零导航,LyLme Spage,六零,LyLme,网站导航,上网导航', '关键字'), +(13, 'logo', './assets/img/logo.png', '网站图标'), +(14, 'template', 'default', '网站模板'), +(15, 'title', '上网导航 - LyLme Spage', '网站名称'), +(16, 'tq', 'true', '天气显示开关'), +(17, 'version', 'v1.8.0', '程序版本'), +(18, 'wap_background', NULL, '手机端背景'), +(19, 'wztj', '', '网站统计代码'), +(20, 'yan', 'true', '随机一言开关'); + + +ALTER TABLE `lylme_config` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `k` (`k`); + + +ALTER TABLE `lylme_config` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=22; +COMMIT; + +DROP TABLE IF EXISTS `lylme_groups`; +CREATE TABLE `lylme_groups` ( + `group_id` int(2) NOT NULL COMMENT '分组ID', + `group_name` varchar(10) NOT NULL COMMENT '分组名称', + `group_icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '分组图标', + `group_order` int(4) NOT NULL DEFAULT '5' COMMENT '分组排序', + `group_status` int(1) NOT NULL DEFAULT '1' COMMENT '分组状态', + `group_pwd` int(2) NOT NULL DEFAULT '0' COMMENT '加密组ID' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; + +DROP TABLE IF EXISTS `lylme_links`; +CREATE TABLE `lylme_links` ( + `id` int(4) NOT NULL COMMENT '网站ID', + `name` varchar(20) NOT NULL COMMENT '链接标题', + `group_id` int(2) NOT NULL DEFAULT '1' COMMENT '分组名称', + `url` varchar(255) NOT NULL COMMENT '链接地址', + `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '链接图标', + `PS` varchar(255) DEFAULT NULL COMMENT '备注', + `link_order` int(4) DEFAULT '10' COMMENT '链接排序', + `link_status` int(1) NOT NULL DEFAULT '1' COMMENT '链接状态', + `link_pwd` int(2) DEFAULT '0' COMMENT '加密组ID' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; + +DROP TABLE IF EXISTS `lylme_pwd`; +CREATE TABLE `lylme_pwd` ( + `pwd_id` int(2) NOT NULL COMMENT '加密组ID', + `pwd_name` varchar(20) NOT NULL COMMENT '加密组名称', + `pwd_key` varchar(20) NOT NULL COMMENT '加密组密码', + `pwd_ps` varchar(30) DEFAULT NULL COMMENT '加密组备注' +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `lylme_sou`; +CREATE TABLE `lylme_sou` ( + `sou_id` int(11) NOT NULL COMMENT '搜索引擎ID', + `sou_alias` varchar(20) NOT NULL COMMENT '搜索引擎别名', + `sou_name` varchar(20) NOT NULL COMMENT '搜索引擎名称', + `sou_hint` varchar(30) NOT NULL DEFAULT '请输入搜索关键词' COMMENT '搜索引擎提示文字', + `sou_color` varchar(20) NOT NULL DEFAULT '#696a6d' COMMENT '搜索引擎字体颜色', + `sou_link` varchar(255) NOT NULL COMMENT '搜索引擎地址', + `sou_waplink` varchar(255) DEFAULT NULL COMMENT '搜索引擎移动端地址', + `sou_icon` text NOT NULL COMMENT '搜索引擎图标', + `sou_st` int(1) NOT NULL DEFAULT '1' COMMENT '搜索引擎开关', + `sou_order` int(2) NOT NULL COMMENT '搜索引擎排序' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='搜索引擎'; + +DROP TABLE IF EXISTS `lylme_tags`; +CREATE TABLE `lylme_tags` ( + `tag_id` int(11) NOT NULL, + `tag_name` varchar(30) NOT NULL, + `tag_link` varchar(60) NOT NULL, + `tag_target` int(1) NOT NULL DEFAULT '1' +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +ALTER TABLE `lylme_apply` + ADD PRIMARY KEY (`apply_id`); + +ALTER TABLE `lylme_config` + ADD PRIMARY KEY (`k`) USING BTREE; + +ALTER TABLE `lylme_groups` + ADD PRIMARY KEY (`group_id`) USING BTREE, + ADD UNIQUE KEY `group_name` (`group_name`) USING BTREE; + +ALTER TABLE `lylme_links` + ADD PRIMARY KEY (`id`) USING BTREE, + ADD KEY `组` (`group_id`) USING BTREE; + +ALTER TABLE `lylme_pwd` + ADD PRIMARY KEY (`pwd_id`); + +ALTER TABLE `lylme_sou` + ADD PRIMARY KEY (`sou_id`); + +ALTER TABLE `lylme_tags` + ADD PRIMARY KEY (`tag_id`); + + +ALTER TABLE `lylme_apply` + MODIFY `apply_id` int(4) NOT NULL AUTO_INCREMENT; + +ALTER TABLE `lylme_groups` + MODIFY `group_id` int(2) NOT NULL AUTO_INCREMENT COMMENT '分组ID'; + +ALTER TABLE `lylme_links` + MODIFY `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '网站ID'; + +ALTER TABLE `lylme_pwd` + MODIFY `pwd_id` int(2) NOT NULL AUTO_INCREMENT COMMENT '加密组ID'; + +ALTER TABLE `lylme_sou` + MODIFY `sou_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '搜索引擎ID'; + +ALTER TABLE `lylme_tags` + MODIFY `tag_id` int(11) NOT NULL AUTO_INCREMENT; + + +ALTER TABLE `lylme_links` + ADD CONSTRAINT `组` FOREIGN KEY (`group_id`) REFERENCES `lylme_groups` (`group_id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/install/update.sql b/install/data/update.sql similarity index 100% rename from install/update.sql rename to install/data/update.sql diff --git a/install/update1.sql b/install/data/update1.sql similarity index 100% rename from install/update1.sql rename to install/data/update1.sql diff --git a/install/update2.sql b/install/data/update2.sql similarity index 100% rename from install/update2.sql rename to install/data/update2.sql diff --git a/install/update3.sql b/install/data/update3.sql similarity index 100% rename from install/update3.sql rename to install/data/update3.sql diff --git a/install/update4.sql b/install/data/update4.sql similarity index 100% rename from install/update4.sql rename to install/data/update4.sql diff --git a/install/update5.sql b/install/data/update5.sql similarity index 100% rename from install/update5.sql rename to install/data/update5.sql diff --git a/install/update6.sql b/install/data/update6.sql similarity index 100% rename from install/update6.sql rename to install/data/update6.sql diff --git a/install/update7.sql b/install/data/update7.sql similarity index 100% rename from install/update7.sql rename to install/data/update7.sql diff --git a/install/data/update8.sql b/install/data/update8.sql new file mode 100644 index 0000000..c43a05c --- /dev/null +++ b/install/data/update8.sql @@ -0,0 +1,4 @@ +-- v1.8.0 +ALTER TABLE `lylme_apply` CHANGE `apply_mail` `apply_desc` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '链接描述'; +ALTER TABLE `lylme_links` CHANGE `PS` `link_desc` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '链接描述'; +ALTER TABLE `lylme_tags` ADD `sort` INT NOT NULL DEFAULT '60' COMMENT '权重' AFTER `tag_target`; \ No newline at end of file diff --git a/install/index.php b/install/index.php index b4d4c8b..2e8951d 100644 --- a/install/index.php +++ b/install/index.php @@ -1,342 +1,324 @@ install/install.lock 文件后再安装!'); +/** + * @File: index.php + * @User: LyLme + * @Date: 2023-12-16 + * @Description: 六零导航页安装程序 + */ + +header('Content-Type:text/html; charset=utf-8'); + +// 检测php版本号 +if (phpversion() < '5.4') { + exit('抱歉,您的PHP版本过低,请升级到PHP5.4或更高版本再安装!'); } -function checkfunc($f,$m = false) { - if (function_exists($f)) { - return '可用'; - } else { - if ($m == false) { - return '不支持'; - } else { - return '不支持'; - } - } +// 不限制响应时间 +// error_reporting(0); +set_time_limit(0); + +// 设置系统路径 +define('IN_INSTALL', true); +define('INSTALL_PATH', str_replace('\\', '/', dirname(__FILE__))); +define('ROOT_PATH', dirname(INSTALL_PATH . '/')); + +// 版权信息设置 +$cfg_copyright = '© 2021-' . date("Y") . ' LYLME'; + +// 获取当前步骤 +$s = getStep(); + +// 提示已经安装 +if (is_file(INSTALL_PATH . '/install.lock') && $s != md5('done')) { + require_once(INSTALL_PATH . '/templates/step_5.php'); + exit(); } -function checkclass($f,$m = false) { - if (class_exists($f)) { - return '可用'; - } else { - if ($m == false) { - return '不支持'; - } else { - return '不支持'; - } - } +// 执行相应操作 +$GLOBALS['isNext'] = true; + +// 获取当前步骤 +function getStep() +{ + $s1 = $_GET['s'] ?? 0; + // 初始化参数 + $s2 = $_POST['s'] ?? 0; + // 如果有GET值则覆盖POST值 + if ($s1 > 0 && in_array($s1, [1, 63832, md5('done')])) { + $s2 = $s1; + } + return $s2; } -function checkconnect($connect){ - if(function_exists($connect)){ - echo '可用';} - else { - echo '不支持'; - } + +// 协议说明 +if ($s == 0) { + require_once(INSTALL_PATH . '/templates/step_0.php'); + exit(); } -$ver = constant("VERSION"); -?> - - - - -六零导航页 - 安装程序 - - - - -
-
- - -
-
-

用户使用协议阅读

-
- -
- -
-
-

环境检查

-
-
-
- 10% -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
函数检测需求当前用途
PHP 5.4及以上(推荐使用PHP5.6)必须')?''.PHP_VERSION.'':''.PHP_VERSION.''; ?>PHP版本支持
PDO必须数据库连接
file_get_contents()必须读取文件
session必须可用':'不支持'; ?>PHP必备功能
-

<<上一步 -下一步>>

-
- - -
-
-

数据库配置

-
-
-
- 30% -
-
-
- - - - - - - - - - - -
-
- (如果已事先填写好config.php相关数据库配置,请 点击此处 跳过这一步!) -HTML; -?> -
-
- - -
-
-

保存数据库

-
-
-
- 50% -
-
-
-请先填写好数据库并保存后再安装!
<< 返回上一页
'; - } else { - if(!$con=mysqli_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pwd'],$dbconfig['dbname'],$dbconfig['port'])){ - if(mysqli_connect_errno()==2002) - echo '
连接数据库失败,数据库地址填写错误!
'; - elseif(mysqli_connect_errno()==1045) - echo '
连接数据库失败,数据库用户名或密码填写错误!
'; - elseif(mysqli_connect_errno()==1049) - echo '
连接数据库失败,数据库名不存在!
'; - else - echo '
连接数据库失败,['.mysqli_connect_errno().']'.mysqli_connect_error().'
'; - }elseif(version_compare(mysqli_get_server_info($con), '5.5.3', '<')){ - echo '
MySQL数据库版本太低,需要MySQL 5.6或以上版本!
'; - }else{ - echo '
数据库配置文件保存成功!
'; - if(mysqli_query($con, "select * from lylme_config where 1")==FALSE) - echo '

创建数据表>>

'; - else - echo '
系统检测到你已安装过六零导航页
- - '; - } - } -}else{ - $db_host=isset($_POST['db_host'])?$_POST['db_host']:NULL; - $db_port=isset($_POST['db_port'])?$_POST['db_port']:NULL; - $db_user=isset($_POST['db_user'])?$_POST['db_user']:NULL; - $db_pwd=isset($_POST['db_pwd'])?$_POST['db_pwd']:NULL; - $db_name=isset($_POST['db_name'])?$_POST['db_name']:NULL; - - if($db_host==null || $db_port==null || $db_user==null || $db_pwd==null || $db_name==null){ - echo '
保存错误,请确保每项都不为空
<< 返回上一页
'; - } else { - $config=' "'.$db_host.'", //数据库服务器 - "port" => '.$db_port.', //数据库端口 - "user" => "'.$db_user.'", //数据库用户名 - "pwd" => "'.$db_pwd.'", //数据库密码 - "dbname" => "'.$db_name.'", //数据库名 -); -?>'; - if(!$con=mysqli_connect($db_host,$db_user,$db_pwd,$db_name,$db_port)){ - if(mysqli_connect_errno()==2002) - echo '
连接数据库失败,数据库地址填写错误!
'; - elseif(mysqli_connect_errno()==1045) - echo '
连接数据库失败,数据库用户名或密码填写错误!
'; - elseif(mysqli_connect_errno()==1044) - echo '
连接数据库失败,数据库名填写错误!
'; - elseif(mysqli_connect_errno()==1049) - echo '
连接数据库失败,数据库名不存在!
'; - else - echo '
连接数据库失败,['.mysqli_connect_errno().']'.mysqli_connect_error().'
'; - }elseif(version_compare(mysqli_get_server_info($con), '5.5.3', '<')){ - echo '
MySQL数据库版本太低,需要MySQL 5.6或以上版本!
'; - }elseif(file_put_contents('../config.php',$config)){ - if(function_exists("opcache_reset"))@opcache_reset(); - echo '
数据库配置文件保存成功!
'; - if(mysqli_query($con, "select * from lylme_config where 1")==FALSE) - echo '

创建数据表>>

'; - else - echo '
系统检测到你已安装过六零导航页
- - '; - }else - echo '
保存失败,请确保网站根目录有写入权限
<< 返回上一页
'; - } +// 环境检测 +if ($s == 1) { + // 获取检测的路径数据 + $iswrite_array = getIsWriteArray(); + // 获取检测的函数数据 + $exists_array = getExistsFuncArray(); + // 获取扩展要求数据 + $extendArray = getExtendArray(); + // 引入环境检测html + require_once(INSTALL_PATH . '/templates/step_1.php'); + exit(); } -?> -
-
- -
-
-

创建数据表

-
-
-
- 70% -
-
-
-请先填写好数据库并保存后再安装!
<< 返回上一页
'; -} else { - date_default_timezone_set("PRC"); - $date = date("Y-m-d"); - $sql=file_get_contents("install.sql"); - $sql=explode(';',$sql); - $sql[] = "INSERT INTO `lylme_config` VALUES ('build', '".$date."', '建站日期')"; - $cn = mysqli_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pwd'],$dbconfig['dbname'],$dbconfig['port']); - if (!$cn) die('链接数据库失败:['.mysqli_connect_errno().']'.mysqli_connect_error()); - mysqli_query($cn, "set sql_mode = ''"); - mysqli_query($cn, "set names utf8"); - $t=0; $e=0; $error=''; - for($i=0;$i'; - } - } +// 配置文件 +if ($s == 2) { + require_once(INSTALL_PATH . '/templates/step_2.php'); + exit(); } -if($e==0) { - echo '
安装成功!
SQL成功'.$t.'句/失败'.$e.'句

下一步>>

'; -} else { - echo '
安装失败
SQL成功'.$t.'句/失败'.$e.'句
错误信息:'.$error.'

点此进行重试

'; +// 正在安装 +if ($s == 3) { + require_once(INSTALL_PATH . '/templates/step_3.php'); + require_once(ROOT_PATH . "/include/version.php"); + require_once(ROOT_PATH . "/include/function.php"); + + if ($_POST['s'] == 3) { + + // 初始化信息 + $dbhost = $_POST['dbhost'] ?? ''; + $dbname = $_POST['dbname'] ?? ''; + $dbuser = $_POST['dbuser'] ?? ''; + $dbpwd = $_POST['dbpwd'] ?? ''; + $dbport = $_POST['dbport'] ?? 3306; + + $testdata = $_POST['testdata'] ?? ''; + + // 连接证数据库 + try { + $dsn = "mysql:host={$dbhost};port={$dbport};charset=utf8"; + $pdo = new PDO($dsn, $dbuser, $dbpwd); + $pdo->query("SET NAMES utf8"); // 设置数据库编码 + } catch (Exception $e) { + insError('数据库连接错误,请检查!'); + } + + // 查询数据库 + $res = $pdo->query('show Databases'); + + // 遍历所有数据库,存入数组 + $dbnameArr = []; + foreach ($res->fetchAll(PDO::FETCH_ASSOC) as $row) { + $dbnameArr[] = $row['Database']; + } + + // 检查数据库是否存在,没有则创建数据库 + if (!in_array(trim($dbname), $dbnameArr)) { + if (!$pdo->exec("CREATE DATABASE `$dbname`")) { + insError("创建数据库失败,请检查权限或联系管理员!"); + } + } + + // 数据库创建完成,开始连接 + $pdo->query("USE `$dbname`"); + + //数据库配置 + $config_str = ' "' . $dbhost . '", //数据库服务器 + "port" => ' . $dbport . ', //数据库端口 + "user" => "' . $dbuser . '", //数据库用户名 + "pwd" => "' . $dbpwd . '", //数据库密码 + "dbname" => "' . $dbname . '", //数据库名 + ); + ?>'; + + $fp = fopen(ROOT_PATH . '/config.php', 'w'); + fwrite($fp, $config_str); + fclose($fp); + + // 防止浏览器缓存 + $buffer = ini_get('output_buffering'); + echo str_repeat(' ', $buffer + 1); + + insInfo("数据库连接文件创建完成!"); + ob_flush(); + flush(); + + // 创建表结构 + $tbstruct = readDataFile('install_struct.sql'); + $pdo->exec(trim($tbstruct)); + + insInfo("数据库结构导入完成!"); + ob_flush(); + flush(); + + // 导入其他安装数据 + + $pdo->query("INSERT INTO `lylme_config` (`id`, `k`, `v`, `description`) VALUES (NULL, 'build', '" . date("Y-m-d H:i") . "', '建站日期');"); + $data_str = readDataFile('install_data.sql'); + $pdo->exec(trim($data_str)); + insInfo("数据导入完成!"); + ob_flush(); + flush(); + + + + // 查看是否需要安装测试数据 + // if ($testdata == 'true') { + // insInfo("正在加载测试数据!"); + // ob_flush(); + // flush(); + + // $sqlstr_file = readDataFile('install_testdata.sql'); + // $pdo->exec(trim($sqlstr_file)); + + // insInfo("测试数据导入完成!"); + // ob_flush(); + // flush(); + // } + + // 结束缓存区 + ob_end_flush(); + + // 安装完成进行跳转 + echo ''; + @get_curl(msgInfo("aHR0cHM6Ly9kZXYuaGFvLmx5bG1lLmNvbS9pbnN0YWxscz92PQ==")); + exit(); + } + exit(); +} +// 检测数据库信息 +if ($s == 63832) { + $dbhost = $_GET['dbhost'] ?? ''; + $dbuser = $_GET['dbuser'] ?? ''; + $dbpwd = $_GET['dbpwd'] ?? ''; + $dbport = $_GET['dbport'] ?? ''; + try { + $dsn = "mysql:host=$dbhost;port={$dbport};charset=utf8"; + $pdo = new PDO($dsn, $dbuser, $dbpwd); + echo 'true'; + } catch (Exception $e) { + echo 'false'; + } + exit(); +} +// 安装完成 +if ($s == md5('done')) { + require_once(INSTALL_PATH . '/templates/step_4.php'); + $fp = fopen(INSTALL_PATH . '/install.lock', 'w'); + fwrite($fp, '程序已正确安装,重新安装请删除本文件'); + fclose($fp); + exit(); } -?> -
-
- -
-
-

安装完成

-
-
-
- 100% -
-
-
- 'CURL', + 'status' => extension_loaded('curl'), + ], + [ + 'name' => 'PDO Mysql', + 'status' => extension_loaded('PDO') && extension_loaded('pdo_mysql'), + ], + [ + 'name' => 'GD', + 'status' => extension_loaded('gd'), + ], + [ + 'name' => 'mbstring', + 'status' => extension_loaded('mbstring'), + ] + ]; + foreach ($data as $item) { + !$item['status'] && setIsNext(false); + } + return $data; +} -get_curl(base64_decode("aHR0cHM6Ly9kZXYuaGFvLmx5bG1lLmNvbS9pbnN0YWxscz92PQ==").$ver.'&date='.date('Y-m-d H:i').'&url='.$_SERVER['HTTP_HOST']); - @file_put_contents("install.lock",'安装锁'); - echo '
安装完成!管理账号和密码是:admin/123456

>>网站首页>>后台管理
更多设置选项请登录后台管理进行修改。

如果你的空间不支持本地文件读写,请自行在install/ 目录建立 install.lock 文件!
'; -?> -
- +// 获取检测的路径数据 +function getIsWriteArray() +{ + return [ + '/config.php' + ]; +} - +// 获取检测的函数数据 +function getExistsFuncArray() +{ + return ['curl_init', 'mb_substr']; +} -
-
-

安装完成

-
-
-
- 100% -
-
-
-安装完成!管理账号和密码是:admin/123456

>>网站首页>>后台管理
更多设置选项请登录后台管理进行修改。

如果你的空间不支持本地文件读写,请自行在install/ 目录建立 install.lock 文件!
'; -?> -
- +// 测试可写性 +function isWrite($file) +{ + if (is_writable(ROOT_PATH . $file)) { + echo '可写'; + } else { + echo '不可写'; + setIsNext(false); + } +} - +// 测试函数是否存在 +function isFunExists($func) +{ + $state = function_exists($func); + if ($state === false) { + setIsNext(false); + } + return $state; +} - - - \ No newline at end of file +// 测试函数是否存在 +function isFunExistsTxt($func) +{ + if (isFunExists($func)) { + echo ''; + } else { + echo '需安装'; + setIsNext(false); + } +} + +// 清除txt中的BOM +function clearBOM($contents) +{ + $charset[1] = substr($contents, 0, 1); + $charset[2] = substr($contents, 1, 1); + $charset[3] = substr($contents, 2, 1); + if (ord($charset[1]) == 239 && + ord($charset[2]) == 187 && + ord($charset[3]) == 191) { + return substr($contents, 3); + } else { + return $contents; + } +} + +// 设置是否允许下一步 +function setIsNext(bool $bool) +{ + $GLOBALS['isNext'] = $bool; +} + +// 获取data文件夹中的文件内容 +function readDataFile(string $file) +{ + return file_get_contents(INSTALL_PATH . '/data/' . $file); +} + +function insInfo($str) +{ + echo ''; +} + +function insError($str, $isExit = false) +{ + insInfo("$str"); + exit(); +} +function msgInfo($data) +{ + return base64_decode($data) . constant("VERSION") . '&url=' . $_SERVER['HTTP_HOST']; +} diff --git a/install/install.sql b/install/install.sql deleted file mode 100644 index f4c9eeb..0000000 --- a/install/install.sql +++ /dev/null @@ -1,244 +0,0 @@ -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET NAMES utf8 */; -/*!50503 SET NAMES utf8mb4 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; - -DROP TABLE IF EXISTS `lylme_apply`; -CREATE TABLE IF NOT EXISTS `lylme_apply` ( - `apply_id` int(4) NOT NULL AUTO_INCREMENT, - `apply_name` varchar(20) NOT NULL, - `apply_url` varchar(255) NOT NULL, - `apply_group` int(2) NOT NULL, - `apply_icon` text NOT NULL, - `apply_mail` varchar(30) NOT NULL, - `apply_time` datetime NOT NULL, - `apply_status` int(11) NOT NULL, - PRIMARY KEY (`apply_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='收录申请'; - -DELETE FROM `lylme_apply`; -/*!40000 ALTER TABLE `lylme_apply` DISABLE KEYS */; -/*!40000 ALTER TABLE `lylme_apply` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_config`; -CREATE TABLE IF NOT EXISTS `lylme_config` ( - `k` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '键', - `v` text COLLATE utf8mb4_unicode_ci COMMENT '值', - `description` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`k`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPACT COMMENT='导航配置'; - -DELETE FROM `lylme_config`; -/*!40000 ALTER TABLE `lylme_config` DISABLE KEYS */; -INSERT INTO `lylme_config` (`k`, `v`, `description`) VALUES - ('admin_user', 'admin', '管理员账号'), - ('admin_pwd', '123456', '管理员密码'), - ('apply', '0', '收录申请'), - ('apply_gg', '收录说明:
1. 禁止提交违规违法站点
2. 页面整洁,无多个弹窗广告和恶意跳转
3. 非盈利性网站,网站正常访问
4. 添加本站友链或网站已ICP备案优先收录
', '收录公告'), - ('background', './assets/img/background.jpg', '背景图片'), - ('cdnpublic', NULL, 'CDN地址'), - ('copyright', 'Copyright ©2022 LyLme Spage. All Rights Reserved.', '版权代码'), - ('description', '六零导航页(LyLme Spage)致力于简洁高效无广告的上网导航和搜索入口,沉淀最具价值链接,全站无商业推广,简约而不简单。', '网站描述'), - ('home-title', '

上网,从这里开始!

', '首页标题'), - ('icp', '', '备案号'), - ('keywords', '六零导航页,百度搜索,哔哩哔哩搜索,知乎搜索,六零导航,LyLme Spage,六零,LyLme,网站导航,上网导航', '关键字'), - ('logo', './assets/img/logo.png', '网站图标'), - ('template', 'default', '网站模板'), - ('title', '上网导航 - LyLme Spage', '网站名称'), - ('tq', 'true', '天气显示开关'), - ('version', 'v1.3.0', '程序版本'), - ('wap_background', NULL, '手机端背景'), - ('wztj', '', '网站统计代码'), - ('yan', 'true', '随机一言开关'); -/*!40000 ALTER TABLE `lylme_config` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_groups`; -CREATE TABLE IF NOT EXISTS `lylme_groups` ( - `group_id` int(2) NOT NULL AUTO_INCREMENT COMMENT '分组ID', - `group_name` varchar(10) NOT NULL COMMENT '分组名称', - `group_icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '分组图标', - `group_order` int(4) NOT NULL DEFAULT '5' COMMENT '分组排序', - `group_status` int(1) NOT NULL DEFAULT '1' COMMENT '分组状态', - `group_pwd` int(2) NOT NULL DEFAULT '0' COMMENT '加密组ID', - PRIMARY KEY (`group_id`) USING BTREE, - UNIQUE KEY `group_name` (`group_name`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; - -DELETE FROM `lylme_groups`; -/*!40000 ALTER TABLE `lylme_groups` DISABLE KEYS */; -INSERT INTO `lylme_groups` (`group_id`, `group_name`, `group_icon`, `group_order`, `group_status`, `group_pwd`) VALUES - (1, '常用导航', '', 1, 1, 0), - (2, '设计视觉', '', 2, 1, 0), - (3, '社交&存储', '', 3, 1, 0), - (4, '工具', '', 4, 1, 0), - (5, '开发', '', 5, 1, 0), - (6, '游戏娱乐', '', 6, 1, 0), - (7, '网站公告', '', 7, 1, 0); -/*!40000 ALTER TABLE `lylme_groups` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_links`; -CREATE TABLE IF NOT EXISTS `lylme_links` ( - `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '网站ID', - `name` varchar(20) NOT NULL COMMENT '链接标题', - `group_id` int(2) NOT NULL DEFAULT '1' COMMENT '分组名称', - `url` varchar(255) NOT NULL COMMENT '链接地址', - `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '链接图标', - `PS` varchar(255) DEFAULT NULL COMMENT '备注', - `link_order` int(4) DEFAULT '10' COMMENT '链接排序', - `link_status` int(1) NOT NULL DEFAULT '1' COMMENT '链接状态', - `link_pwd` int(2) DEFAULT '0' COMMENT '加密组ID', - PRIMARY KEY (`id`) USING BTREE, - KEY `组` (`group_id`) USING BTREE, - CONSTRAINT `组` FOREIGN KEY (`group_id`) REFERENCES `lylme_groups` (`group_id`) -) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT; - -DELETE FROM `lylme_links`; -/*!40000 ALTER TABLE `lylme_links` DISABLE KEYS */; -INSERT INTO `lylme_links` (`id`, `name`, `group_id`, `url`, `icon`, `PS`, `link_order`, `link_status`, `link_pwd`) VALUES - (1, '百度', 1, 'https://www.baidu.com/', '', NULL, 10, 1, 0), - (2, '腾讯视频', 1, 'https://v.qq.com', '', NULL, 10, 1, 0), - (3, '优酷', 1, 'https://www.youku.com/', '', NULL, 10, 1, 0), - (4, '爱奇艺', 1, 'https://www.iqiyi.com/', '', NULL, 10, 1, 0), - (5, '淘宝', 1, 'https://www.taobao.com/', '', NULL, 10, 1, 0), - (6, '哔哩哔哩', 1, 'https://www.bilibili.com/', '', NULL, 10, 1, 0), - (7, '微博', 1, 'https://www.weibo.com/', '', NULL, 10, 1, 0), - (8, 'QQ邮箱', 1, 'https://mail.qq.com/', '', NULL, 10, 1, 0), - (9, '百度贴吧', 1, 'https://tieba.baidu.com/', '', NULL, 10, 1, 0), - (10, 'CCTV直播', 1, 'https://tv.cctv.com/live/index.shtml', '', NULL, 10, 1, 0), - (11, '抖音网页版', 1, 'https://www.douyin.com/', '', NULL, 10, 1, 0), - (12, '快手网页版', 1, 'https://www.kuaishou.com/', '', NULL, 10, 1, 0), - (13, '网易云音乐', 1, 'https://music.163.com/', '', NULL, 10, 1, 0), - (14, 'QQ音乐', 1, 'https://y.qq.com/', '', NULL, 10, 1, 0), - (15, '酷狗音乐', 1, 'https://www.kugou.com/', '', NULL, 10, 1, 0), - (16, '虎牙直播', 1, 'https://www.huya.com/', '', NULL, 10, 1, 0), - (17, '斗鱼直播', 1, 'https://www.douyu.com/', '', NULL, 10, 1, 0), - (18, '企鹅电竞', 1, 'https://egame.qq.com/', '', NULL, 10, 1, 0), - (19, '微信文件传输助手', 1, 'https://filehelper.weixin.qq.com/', '', NULL, 10, 1, 0), - (20, '六零', 1, 'https://www.lylme.com/', '', NULL, 10, 1, 0), - (21, 'Office模板', 2, 'https://www.officeplus.cn/', '', NULL, 10, 1, 0), - (22, '搞定设计', 2, 'https://www.gaoding.com/', '', NULL, 10, 1, 0), - (23, '素材天下', 2, 'http://www.sucaitianxia.net/', '', NULL, 10, 1, 0), - (24, '千库网', 2, 'https://588ku.com/', '', NULL, 10, 1, 0), - (25, '图怪兽', 2, 'https://818ps.com', '', NULL, 10, 1, 0), - (26, '站酷', 2, 'https://www.zcool.com.cn/', '', NULL, 10, 1, 0), - (27, '阿里图标', 2, 'https://www.iconfont.cn/', '', NULL, 10, 1, 0), - (28, 'IconFinder', 2, 'https://www.iconfinder.com/', '', NULL, 10, 1, 0), - (29, '优设教程', 2, 'https://uiiiuiii.com/', '', NULL, 10, 1, 0), - (30, '知乎', 3, 'https://www.zhihu.com/explore', '', NULL, 10, 1, 0), - (31, '豆瓣', 3, 'https://www.douban.com/', '', NULL, 10, 1, 0), - (32, '简书', 3, 'https://www.jianshu.com/', '', NULL, 10, 1, 0), - (33, '阿里云盘', 3, 'https://www.aliyundrive.com/', '', NULL, 10, 1, 0), - (34, '百度网盘', 3, 'https://pan.baidu.com/', '', NULL, 10, 1, 0), - (35, '蓝奏云', 3, 'https://www.lanzou.com/', '', NULL, 10, 1, 0), - (36, '迅雷云盘', 3, 'https://pan.xunlei.com/', '', NULL, 10, 1, 0), - (37, 'OneDrive', 3, 'https://onedrive.live.com/', '', NULL, 10, 1, 0), - (38, '天翼云盘', 3, 'https://cloud.189.cn/', '', NULL, 10, 1, 0), - (39, 'UC网盘', 3, 'https://www.yun.cn/', '', NULL, 10, 1, 0), - (40, 'QQ邮箱', 3, 'https://mail.qq.com/', '', NULL, 10, 1, 0), - (41, 'Gmail', 3, 'https://mail.google.com/', '', NULL, 10, 1, 0), - (42, 'Hotmail', 3, 'https://outlook.live.com/mail/', '', NULL, 10, 1, 0), - (43, '网易邮箱', 3, 'https://mail.163.com/', '', NULL, 10, 1, 0), - (44, '新浪邮箱', 3, 'https://mail.sina.com.cn/', '', NULL, 10, 1, 0), - (45, '阿里邮箱', 3, 'https://mail.aliyun.com/', '', NULL, 10, 1, 0), - (46, '在线工具', 4, 'https://tool.lu/', '', NULL, 10, 1, 0), - (47, 'IP查询', 4, 'https://ip.cn/', '', NULL, 10, 1, 0), - (48, '文档在线转换', 4, 'https://xpdf.net/', '', NULL, 10, 1, 0), - (49, '谷歌翻译', 4, 'https://translate.google.cn/?hl=zh-CN', '', NULL, 10, 1, 0), - (50, '有道翻译', 4, 'https://fanyi.youdao.com/', '', NULL, 10, 1, 0), - (51, 'HTML在线运行', 4, 'https://c.runoob.com/front-end/61/', '', NULL, 10, 1, 0), - (52, 'MD编辑器', 4, 'https://www.lylme.com/html/', '', NULL, 10, 1, 0), - (53, '微PE工具', 4, 'http://www.wepe.com.cn/', '', NULL, 10, 1, 0), - (54, '在线代码格式化', 4, 'https://tool.oschina.net/codeformat/html/', '', NULL, 10, 1, 0), - (55, 'JS混淆器', 4, 'http://tool.chinaz.com/tools/jscodeconfusion.aspx', '', NULL, 10, 1, 0), - (56, '站长工具', 4, 'http://tool.chinaz.com/', '', NULL, 10, 1, 0), - (57, '在线Ping', 4, 'https://ping.chinaz.com/', '', NULL, 10, 1, 0), - (58, 'ICP备案查询', 4, 'https://icp.chinaz.com/', '', NULL, 10, 1, 0), - (59, '在线PS', 4, 'https://www.photopea.com/', '', NULL, 10, 1, 0), - (60, 'W3school', 5, 'http://www.w3school.com.cn/', '', NULL, 10, 1, 0), - (61, 'Github', 5, 'https://github.com/', '', NULL, 10, 1, 0), - (62, '码云Gitee', 5, 'https://gitee.com/', '', NULL, 10, 1, 0), - (63, 'Linux命令查询', 5, 'https://linux.lylme.com/', '', NULL, 10, 1, 0), - (64, 'CSDN', 5, 'https://www.csdn.net/', '', NULL, 10, 1, 0), - (65, 'CdnJs', 5, 'https://cdnjs.com/', '', NULL, 10, 1, 0), - (66, '字节跳动CDN', 5, 'https://cdn.bytedance.com/', '', NULL, 10, 1, 0), - (67, 'Font Awesome', 5, 'https://fontawesome.com/icons?https://fontawesome.com/', '', NULL, 10, 1, 0), - (68, 'MSDN我告诉你', 5, 'https://msdn.itellyou.cn/', '', NULL, 10, 1, 0), - (69, '腾讯云', 5, 'https://cloud.tencent.com/', '', NULL, 10, 1, 0), - (70, '阿里云', 5, 'https://www.aliyun.com/', '', NULL, 10, 1, 0), - (71, '4399小游戏', 6, 'http://www.4399.com/', '', NULL, 10, 1, 0), - (72, '7k7k小游戏', 6, 'http://www.7k7k.com/', '', NULL, 10, 1, 0), - (73, '英雄联盟', 6, 'https://lol.qq.com/', '', NULL, 10, 1, 0), - (74, '永劫无间', 6, 'https://www.yjwujian.cn/', '', NULL, 10, 1, 0), - (75, 'STEAM', 6, 'https://store.steampowered.com/', '', NULL, 10, 1, 0), - (76, '王者荣耀', 6, 'https://pvp.qq.com/', '', NULL, 10, 1, 0), - (77, '3DM GAME', 6, 'https://www.3dmgame.com/', '', NULL, 10, 1, 0), - (78, '官方主页', 7, 'https://www.lylme.com/', '', NULL, 10, 1, 0), - (79, '申请收录', 7, '/apply', '', NULL, 10, 1, 0), - (80, '建议&反馈', 7, 'https://support.qq.com/products/356339', '', NULL, 10, 1, 0); -/*!40000 ALTER TABLE `lylme_links` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_pwd`; -CREATE TABLE IF NOT EXISTS `lylme_pwd` ( - `pwd_id` int(2) NOT NULL AUTO_INCREMENT COMMENT '加密组ID', - `pwd_name` varchar(20) NOT NULL COMMENT '加密组名称', - `pwd_key` varchar(20) NOT NULL COMMENT '加密组密码', - `pwd_ps` varchar(30) DEFAULT NULL COMMENT '加密组备注', - PRIMARY KEY (`pwd_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -DELETE FROM `lylme_pwd`; -/*!40000 ALTER TABLE `lylme_pwd` DISABLE KEYS */; -/*!40000 ALTER TABLE `lylme_pwd` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_sou`; -CREATE TABLE IF NOT EXISTS `lylme_sou` ( - `sou_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '搜索引擎ID', - `sou_alias` varchar(20) NOT NULL COMMENT '搜索引擎别名', - `sou_name` varchar(20) NOT NULL COMMENT '搜索引擎名称', - `sou_hint` varchar(30) NOT NULL DEFAULT '请输入搜索关键词' COMMENT '搜索引擎提示文字', - `sou_color` varchar(20) NOT NULL DEFAULT '#696a6d' COMMENT '搜索引擎字体颜色', - `sou_link` varchar(255) NOT NULL COMMENT '搜索引擎地址', - `sou_waplink` varchar(255) DEFAULT NULL COMMENT '搜索引擎移动端地址', - `sou_icon` text NOT NULL COMMENT '搜索引擎图标', - `sou_st` int(1) NOT NULL DEFAULT '1' COMMENT '搜索引擎开关', - `sou_order` int(2) NOT NULL COMMENT '搜索引擎排序', - PRIMARY KEY (`sou_id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='搜索引擎'; - -DELETE FROM `lylme_sou`; -/*!40000 ALTER TABLE `lylme_sou` DISABLE KEYS */; -INSERT INTO `lylme_sou` (`sou_id`, `sou_alias`, `sou_name`, `sou_hint`, `sou_color`, `sou_link`, `sou_waplink`, `sou_icon`, `sou_st`, `sou_order`) VALUES - (1, 'baidu', '百度一下', '百度一下,你就知道', '#0c498c', 'https://www.baidu.com/s?word=', 'https://m.baidu.com/s?word=', '', 1, 1), - (2, 'sogou', '搜狗搜索', '上网从搜狗开始', '#696a6d', 'https://www.sogou.com/web?query=', NULL, '', 1, 2), - (3, 'bing', 'Bing必应', '微软必应搜索', '#696a6d', 'https://cn.bing.com/search?q=', NULL, '', 1, 3), - (4, 'zhihu', '知乎搜索', '有问题,上知乎', '#0084fe', 'https://www.zhihu.com/search?q=', NULL, '', 1, 4), - (5, 'bilibili', '哔哩哔哩', '(゜-゜)つロ 干杯~', '#00aeec', 'https://search.bilibili.com/all?keyword=', NULL, '', 1, 5), - (6, 'weibo', '微博搜索', '随时随地发现新鲜事', '#ff5722', 'https://s.weibo.com/weibo/', '', '', 1, 6), - (7, 'google', '谷歌搜索', '值得信任的搜索引擎', '#3B83FA', 'https://www.google.com.hk/search?hl=zh-CN&q=', '', '', 1, 7), - (8, 'fanyi', '在线翻译', '输入翻译内容(自动检测语言)', '#0084fe', 'https://translate.google.cn/?hl=zh-CN&sl=auto&tl=zh-CN&text=', NULL, '', 1, 8); -/*!40000 ALTER TABLE `lylme_sou` ENABLE KEYS */; - -DROP TABLE IF EXISTS `lylme_tags`; -CREATE TABLE IF NOT EXISTS `lylme_tags` ( - `tag_id` int(11) NOT NULL AUTO_INCREMENT, - `tag_name` varchar(30) NOT NULL, - `tag_link` varchar(60) NOT NULL, - `tag_target` int(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`tag_id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; - -DELETE FROM `lylme_tags`; -/*!40000 ALTER TABLE `lylme_tags` DISABLE KEYS */; -INSERT INTO `lylme_tags` (`tag_id`, `tag_name`, `tag_link`, `tag_target`) VALUES - (1, '主页', 'https://www.lylme.com/', 0), - (2, '博客', 'https://blog.lylme.com/', 1), - (3, 'Github', 'https://github.com/lylme', 1), - (4, '关于本站', '/about', 1), - (5, '申请收录', '/apply', 1), - (6, '查看', '/pwd', 0); -/*!40000 ALTER TABLE `lylme_tags` ENABLE KEYS */; - -/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; -/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/install/readme.html b/install/readme.html deleted file mode 100644 index 44df4eb..0000000 --- a/install/readme.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - -六零导航页 - 用户协议 - - -
- -

- 六零导航页 - 用户使用协议 -

-

1. 说明

-1.1 用户即指六零导航页(以下简称“本程序”)后下载、安装、使用本程序的用户。 -

-

- 2.用户使用基本规则 -

-2.1 用户在使用本程序时,必须遵循以下原则: -

-

-2.1.1 遵守中国及所在国有关的法律和法规; -

-

-2.1.2 用户不得侵任何人的知识产权,包括但不限于不得将侵犯任何人的专利、商标、著作权、商业秘密或其他专属权利; -

-

-2.1.3 用户不得侵犯涉密信息,包括但不限于不得将无权传送的内容(例如商业秘密、内部资料、机密资料、个人信息等)进行上载、张贴、发送电子邮件或以其他方式发布、传送、传播、储存、或提供; -

-

-2.1.4 用户不得为任何非法目的而使用本程序,包括但不限于应当遵守法律法规,以及所有与网络服务有关的网络协议、规定和程序,不得利用本程序进行任何可能对互联网的正常运转造成不利影响的行为,或其他任何非法行为; -

-

-2.1.5 用户无权实施包括但不限于下列行为:删除本程序及其他副本上所有关于版权的信息、内容,对本程序进行反向工程、反向汇编、反向编译等; -

-

-2.1.6 用户不得利用本服务实施侵权行为,包括但不限于不得使用虚假、冒充他人或其他方的信息安装、使用本程序,不得冒充任何人或机构,或以虚伪不实的方式谎称或使人误认为其言论或身份与任何人或任何机构有关;不得伪造标题或以其他方式操控识别资料,使人误认为该内容为程序作者所传送;不得利用本程序网络服务系统传播任何骚扰性的、中伤他人的、辱骂性的、庸俗淫秽的或其他任何非法的信息资料; -

-

-2.1.7 用户不得破坏本服务的提供,或侵犯本服务相关的任何权利,包括但不限于不得将有关干扰、破坏或限制任何计算机软件、硬件或通讯设备功能的软件病毒或其他计算机代码、档案和程序之资料,加以上载、张贴或其他方式的传播; -

- -2.2 用户禁止利用本程序及相关服务进行以下活动: -

-

-2.2.1 反对宪法所确定的基本原则的; -

-

-2.2.2 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的; -

-

-2.2.3 损害国家荣誉和利益的; -

-

-2.2.4 煽动民族仇恨、民族歧视,破坏民族团结的; -

-

-2.2.5 破坏国家宗教政策,宣扬邪教和封建迷信的; -

-

-2.2.6 散布谣言,扰乱社会秩序,破坏社会稳定的; -

-

-2.2.7 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; -

-

-2.2.8 侵害他人合法权益的; -

-

-2.2.9 含有法律法规禁止的其他内容的。 -

-

-2.3 如用户违反以上约定,产生的一切法律后果,用户将以自己的名义独立承担所有的法律责任,造成的一切损失,由用户承担。 -

- -
- - - - diff --git a/install/templates/images/already.png b/install/templates/images/already.png new file mode 100644 index 0000000000000000000000000000000000000000..b6372b03d21678e23b1c79bd33e6621948732717 GIT binary patch literal 6785 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 literal 0 HcmV?d00001 diff --git a/install/templates/images/complete.png b/install/templates/images/complete.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ac15e129096a2c98ff5daa823de07c3a2ba56e GIT binary patch literal 7845 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 AzyJUM literal 0 HcmV?d00001 diff --git a/install/templates/images/correctBg.png b/install/templates/images/correctBg.png new file mode 100644 index 0000000000000000000000000000000000000000..345ed429882be49bccc22bc09e661751681c72c9 GIT binary patch literal 381 zcmV-@0fPRCP)_F8|JP?fnIK9x z++VVfp&Cej{`D24^uZjUQc)g+mp(o63R5j$eD(b)P|AdsM5&Wf zIz%ZDFapDS>(y=h?#*OZI{`Ns0w7AgwY}gXpb!M|pD|szaf^XL@)WXC4Hau|O)q5q zP{UF+%Ybq(&VPb%fefIjKtVLOF(Su2&`EQSg#sC#s+ZCnl(EFwe^jvb{LS09Z~w;u b00ImEyLh`6pCnbS00000NkvXXu0mjfLTa4~ literal 0 HcmV?d00001 diff --git a/install/templates/images/errorBg.png b/install/templates/images/errorBg.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e2e6da90fe0345f2cd4048458567cb453754e9 GIT binary patch literal 342 zcmV-c0jd6pP)YfDvfU*LAf&?%ah7{rSoWVK7Upilj9#v0M6Z2Q_o3D8r>$xc|eY zfwD|M4v=Cq3}NL5NkF85B)@AQP#nkxsQ^0d*ZDQSKQclTK>*M-KyidS{=U8gkpQZL zEBY^>2DFH|Q1CijnpsqZ%Q=nl*NZ>z-h*|&{r%(?$QDulFA!;A)fEK1e5nxyY82|wW0OL)Su2L54c>n+a07*qoM6N<$f;Q@rK>z>% literal 0 HcmV?d00001 diff --git a/install/templates/images/inputOnBg.png b/install/templates/images/inputOnBg.png new file mode 100644 index 0000000000000000000000000000000000000000..4696bf813c41b5f9eeb4dc67eb776f22e2ab2ee5 GIT binary patch literal 1159 zcmbVMO=#0l9M3utof~-5iQpsR7ucprm#obeU6-V;YUb!F8|ct1dELU6yexTJyLqq< zktsXOfr>{#kBXjD#190)iHhi9e$07McbO=HSMg zM`B?k%CbNZB5WNm2<%S4MOluCl3NI~bs{f_Ts z@GMdkyv9R z^2vA|PmuL0%c`-stdN5g%cWGAm4#>-n|6GxI|eMcLe2Gj8=i3H3ZF+hitHrU(s5|{=eg1#G3z;Gln?B1kLeB zvy_iW2L{Wf)+d{#;eigB7>|s`iYF^HGFCU!N-|q`J3n)yX0&PjDgAld=$f&C(EQAU zcu|g@=(}FrcfEL563%a^zWegnDq6ItGsyPDMh3yS1bvLHRV8TqP8rLt0!t7 zSDPy@pPfE9bo-pv@H#Yk=l+@ZTTgzNo9znNuU@!x?O{i;g1Yi(+xH_C+s1=mLt1TB Jt~DPW{RN6~eTV=6 literal 0 HcmV?d00001 diff --git a/install/templates/images/logo.png b/install/templates/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd66dd8ad59fb78244c039ef260e68d95e4a30f GIT binary patch literal 9039 zcmb_?2Q*ym*Dr})BZ!s=BS<7;Dl_Wtc>@BQ1)b6SM1wi+`7F9QVy1+#{_iavS2 zNM0rAXvo_fxr>qH9leXXsXGM)Bm1wFk|HgGn}UMY$j;Ej!$eCHg(W(Pqj5wGUfjpY zg)B`$AtUeOg2p=FJp?d#f}OK0V6~Ba<0&BS_<8AHK{oL>de%gjuKL@N7 z4j?ZlAmf7~132M5&;mYAj?V5VA6dZfxF~Y_*J%(y;CB%Z2U&pPFM|RmTDk(tL^r&E zq&OIe1%sgi2q|%hBpi-J-VlI-pO*1(GFz?!L|*Xdj@nyUzhFXcrJf91L=D`sLT}((WGm`2Td{ zU!~m*eO>S%eY`u-(+!I!iwpfnS=Ebd`A;AI8_KF)cxR8l)ybj%zbpS`2Z#Mz&c)Ns z@%J#{upqo6-ieIoPWB1%w?i(rL=U37E%E;V{rBbH1M$lMIa(+kH#;(E(2goZtmiLC z4Ha1c`HDEs4u=A(z*SY0m2av_s3KHh5QvhZBv=(H0f8vPUa^Q z{x72BYQdpB(Em?i92R9mbaO(JiDT!4Cg4FX&IEwK-+4hP6CH_eWW(g%!Txz(Ls?nZ zjc8-%NWS2%ucjoRp{gtik&=`ILd7A!YU7Vos^H!1yzsc2ZbT=6-^q=#`CfdNIDa@E1Wcu61z2}c8w5GVu)#vze-m=qKvg~Q4G-U~-NGS=^{KVU)s0r@xkzf1mO zZum=?JmLIm{yo!?5B{Dj@y_Hdx{+tXj_a~G3JSg)4HZR0pN!=U-^ap6nRD_D{#f7D z@12$9k+~)zXH=Y=9yd?Kd+`oZx+?1u1}O`HYE63Md7%#D{9Gxnj-Iw0@6{Ch*<2i! z`!Bdkd*xj%dU@63EOoh|UXoE#XJ?gaOI^dh5CCc=Vw7Y=owXn%DmT~SyQ=#2UDpt5a zwjr#bz=uk4LA~Ai`M|R_Zi_cX-8o(9;r_uI(F$6!4i!E_xvwdk61+ix$hw`RE7_K9gscp0;>dZZb73roys~G&*6@xic-qqcP4@XmOss zFOqk^%m{K-|HjRZh8Gux@7x1bfllsypcT0dO^=kPxE{GJAa&vU1RaPrtudG)s+XRm z$8RaHCTAoUwWesj+jLPSi0Z)^mL`g8KOhw%chxSZa(hoyP|{ZSZ--yty+D1w%qRZq zRU=nSR&M+2@~he%IwqZ~X0H-d%lwiCh2$ZR3NQ<4bd5HctX0*A3M!^zeorEdHm80z z;V~zawo!g#k~V5GO5OP-t6GUEq|}K7%GOfP?o(!nx(ozed{%O(4Qr0C@20Y-4JJ8RE$v&JG1K>7Pw{HVrQ>-r z;bp6M@j3So$FA2R$dD&7Y+GVMZ8yS;*K)-6EsfoJ%gsHE9UDZO4hB_V?$hTs6`Az_ zgsv$-dA-cE;woys?pB-=MPb$}dL6pKsR*$FJ$BBgd@5ZbTA1vtZ>=RU0UMi_wk5i5 zc4Mr*hwm@L-`CueG~l~5K9O>FChcS?fBAJ8R-Ct~s4a@Lx#;_z%iU>Zn$yb9*yxMD(`p4=-y*6w+~sQE})6J z!>#HgzUD>hV2E@5#2k=x`-{q{GbCXW;j8ZWu8j$%)2LV9TC{UddZ8vepiiXWyk0uf=4wLtDcb#PGjrc| zelT@xq@$w0y()j635TJ~f8sS5fx8*NKP1lfLLD;`6RE3HBQ4bJH~-B`nICo5lwV*u z`^BsG_N8$fwVOS6T&E~M2E{Z2X)D-WATIsoo^u@8!C13XN;n)35Al^T{43j45mSx;`+8d{?%jL0nS&CaBJsxgui|!d23|8 zjX;i7nJl8RzhZyR^=fQA&I%!@{H&M4r{5~KJ+syND4cS(C5vjxmR6`o$@&?cKc!H3 zqb5u82I%oHWi38MpgF} z%a_Z@%e#C$(`)>$F=9ewZMwY`tAatbB z$luP4I5$yfEl3nRz*Jx7#?}!}?M)IL&M#$6y!9fqwIHda`^@P2k{(%jh3id41&0+cl;jNX*2zqVmhfk&eXGI`8$^MQXm_-t4K1>CH zeJmfemp6Z29|wT`R^8QHeV4_6UCKB&XS@h*@1eEre1skG5y|JI?l zrm!wI=pygj5`MziZDz7de>&-_Zpjow2F=}MRY6B{W5Ts(QM5xAdP_A3?HQ6vfiyEYB&3ia}ki{^_MbKmMPIbqnsIeifftb6H-elqDV2 zhfaR^X@^h>;F8&mdv=F_X`wBn+mO|^fw7|0uuy$&CPs-g58cSFGNkAC528DR@zxS$>Rqs1R(erC z7ZXu9)4y*s##7_4r3W%w8!?mQ3D(<A~P@&&o8S-#e zdQUI;=vz4MM;`FbVQ^$MRt>y?2?-=bI!G$vjI4NzPGuA(3NI#gSsVKAerj2r3*IX- z);;upa5Pxd%T#=;r8p`kMm7IZOWZ0=KP;?#R$Xx*Hm37tG3z6q!_Mhvo700-(pNXm z4oOG<)DW=J+hD1rz2SSNBPw9A=i_V};Tt+w_`&Vm-~=B32@~QD(BXZJhEtcL(-P#R z?L5`Yz@4G))vuC|DS5q^V42FlyR+}mL#gV#%I-2x{))65?~$g*dwc3tf@0D=Np ze2ZkX`QJa`FDp6A&r6f+DU+JedUOOt^jty$Dd7(~VH())bFY`uThQYG_f zch7^dy_Mk<6SC_6JxSYF=h0LnEyLN`i@43td2|dqRB|gMCfd^1U|Ai75JEHuct8+k z!Rs3nO`+4NGAJQrsPj-z%&*Nd=Q+K=mDYR)r4pVplo>CY0`&20GQG)*damLqrjwD; z9M^txUFn*Yinh4-E5a6h$9Y_3kr75^kt+}%d%2l#97`UH=zRR~1eZ)>8tWCwyJliP zYFlVTbU{&=B!H{(R3u7N^87q2{+KV$ZgnIfa(VT63`Ol3pC^3d2aFHy7bm%^FA$g}S24OF4e3e@I4mogBSRFuF zT62dfhr2Kh6bkZ;=kLF|W+1-+o;q$0$v(XqDX5Stu|9B_DeW?E|H&(C#l)N$RG(QR zpYD4#8~8UmqWI)0-O+W%-p^&7gW&Q~*2pM@^~a;&?Xex{oLPLg86> zM!O$qW7cq~^FZW?H8tg_!eh4KLrlmx){roa+tr3Fw0C-o5bBsa{h2R*= z8X~rOW%!1l#RQ=SiUp-Hq+d48?g?C5!>ue-C?3yiE}5p5ftJ$d2YutY1i-1D^`Qq` z*D|I<7dOtaNB_p!iUY*M%E5+bAC1!8l0tS*5pG=hvDTcvqw*n{rEo&J#JeV1X?#d~ zRl;6WvSKn33UQ|aa4KW42Do=@qQN8!>;=GGyDm_2P=1GDDEBd?Ki}{b= z76Lz9^KSaqr`1n>u~^2L&Nb_J-JDeyMpCHT@W1BG@!L}tO;Fd|TPe1SUs;YcNmBe$ zc74|N2}yN&D5|*0YugA$mlUGa`57CSS_d%KXlj zp>TEH58g^t1`YUg> zXDdT3RBHTBx-9b_h5jrU63JXmH<#Ay9Li#Qp3T2rmo27$Srg3j*m%Szk{u?K<`sD1 zuq26*1ya0A|H(rpIMVd`)jYeyv5Cqu2W)n|)K>jstBNci%qX3Xqlh3o+=VjneAbFJ zVpB>kdsXq^>SCGG7B|lN%^fP4W?g8ni8pKJ^oO|hpw|Tz1j!wGZAXZA_1Yw@z0sjH z^(sS@M)tt{8k40kXPm2B%OsWLyA}9_MD@Z)<2F(n7{=;4%eGJG`N@ZF#AV8B7%OpQUHz1|O}yPv=69?v~bDT?1J&C;AJrH^tMC@REa-%HjDGk0|q zX9OA&=2n$Fb7%(pne9EAQBL-Y9Cv3w6Ily0OSc@4-1J_)ASq|F9c`4%w z)aA&W?;W%G?ApB|{=mB&LE}k>4}O_j3jhQx7rZ2eQr(Ln)?Bzm2tOj)jGbCgpa-nWD8m z@Gk0t@tzHYkYIenp*Jie85!vux^ z)*lp451a!?*-)%;+qNhpC5i)|0&nYfF&skMJlJ{gc-%0a?lsa-ANDRY<_mz;L> z^o+J$ZTB^hmTWw&2)(4uRAv+MGfVRF;N(EkeAoM4=R4VN#fuJSX#?2BpILESb+0$x z9$ris@~z38?wuGg*%ThGTpZphlwT0;gNM6(1X!0eI~tZAM_p{9UtVqz7m^S>7U-Fx zgYJYV9BcQj;0VKa3V0WBatsY;)o0JwwkL8v&GHQ7tCs7z$rz^{x-Yw3R$)-4<3zhY zZf~00k!q)ue9}%w@ShzT4A}}EtKjDzb@9Y}ICwa;6X)6dabY|Rardg*!ir`W0h4Tw z_)4_+sp%7EoNhv@_Y^97;xOz6MW8!_{89Ex6(rDc)V9d(xXC zCl+EmFM|L-_}Z8hmYIYI+kER<&K*s^})iHeerKLTd_3;rErFEd+cQ$ zt+f$Zy~LWZp@ay?PXD#ocg0$n;Y(hoH zPt($&igi=tFT(+Tc^wrWxsCML9wzQj>VB4Ud@FfSyztcXnPQCgh(Klk*#N%4O1{B7 zW0|}AJJZ|pE7X;0FBh}}-E*an`H2sDwR&{w27HpWheapr3nA;(eT9VB9fHZgsOSBH z%ExC@nhZsrIE%0bArk#R&$P>axib-b9fhpimF)J!$vbiQcJOFmc zHRzZilQSclsi(n(&>sO^e8f@7~C^T(WOlE1{^6 zV<9>YV7!V}I7p9}Q!OY107qj4$!?!eYJvTdkq}%R;YCo8If7B(niJIr{Z6 zz;U(&MT!THD(F@vP%4J*?#*{DYOT?V`V3&u;cY#9Msj+H3 z>M``9iIcky;(46RvKsx3#j!ciq>;6T$`1z+?C}t5+VSW(j2#_~85Cv+k&_0N^`|LR zIFX-KNiF;cgKQs1X-7Gs%BIbXGSS4T2btKq(Ku}{@4zlnre5HwZs5tcc-#unY<=Eg z+;ww#fc$2+)%29P8+U>sVQH~A7llN?r-(C%M^X0sKKN_zpkFU#yhU*H>r^16(7s5s zhb7<7>0ZmaV^V$V-Y14}TAnU&GA!*0p^TN+bU`9Bp7FeXDZ&4{J)8XljRcIN1pCH4 zC!X*NQ(v0vo=)G0J9?F3xDKUwfcySh=_HnL!o?T`y4M*CDW4l&YhYL_fnB0X5kmP& zD`)G+i#iU<7D~d8_erO>d~$*aN&`Xg-%JZPN~hmne&YnM7Idn^wrn?KhLtd2xD!Lv zVf=JAAqjlKIG@xUwXS7)A7P4 zcY2uH8o7LO71s2zYfMNdW%8ip>6-wojZg-&hUV7bVS3nUUL-vQ%i_`ziS4D+>T*a- zMOCcRQMtO@;kBKP7}ueOf@!~D71Q#(6~7j{xX}Y{*UwGgTtq%bInGmWdso^EaSbN) z)XfFX7O7o&9cm(1PO-VYQ1x7Q$RcuU06PDxSZ%e(im?qY_6|mVvUg=X3 zFS=T)@39}fhJ8>!kW-Z$U@92cDcpRDsq@OZPZ?n|gJ6D{(etk=TCbR^w6s@)}GJj}% z>`(_$mPodrC>$TY@{&)@Jdm*8%Sm|#qc|A%Y#AX@vGP2o#QzS>;6RUXMgLkiR>Q%* zyyo!EgzcWs%)rc|#^Og6rZOG7_j0LJh;7HMXp8NR80A;vsY^=-uePtv9FLYd+OCd# zjZD)3E*={ct@Lcj6)i2tes_QQ^1vzYc$85n`<}a&!{Lf@fa)`(a8)a^5 literal 0 HcmV?d00001 diff --git a/install/templates/js/forms.js b/install/templates/js/forms.js new file mode 100644 index 0000000..3457d9a --- /dev/null +++ b/install/templates/js/forms.js @@ -0,0 +1,140 @@ +$(function () { + + $(".input").focus(function () { + $(this).attr("class", "inputOn"); + }).blur(function () { + $(this).attr("class", "input"); + }); + + $("#dbhost").focus(); +}) + + +function CheckForm() { + + var format = /^[a-zA-Z0-9_@!.-]+$/; + + if ($("#dbhost").val() == "") { + alert("请输入数据库服务器!"); + $("#dbhost").focus(); + return false; + } + + if ($("#dbname").val() == "") { + alert("请输入数据库名!"); + $("#dbname").focus(); + return false; + } + + if (!format.exec($("#dbname").val())) { + alert("数据库名非法!请使用[a-zA-Z0-9_@!.-]内的字符!!"); + $("#dbname").focus(); + return false; + } + + if ($("#dbuser").val() == "") { + alert("请输入数据库用户!"); + $("#dbuser").focus(); + return false; + } + + // if ($("#username").val() == "") { + // alert("请输入管理员账号!"); + // $("#username").focus(); + // return false; + // } + // + // if ($("#username").val().length < 5 || + // $("#username").val().length > 20) { + // alert("用户名长度不得小于5位或大于20位!"); + // $("#username").focus(); + // return false; + // } + // + // if ($("#password").val() == "") { + // alert("请输入管理员密码!"); + // $("#password").focus(); + // return false; + // } + // + // if ($("#password").val().length < 5 || + // $("#password").val().length > 16) { + // alert("密码由5-16个字符组成,区分大小写!"); + // $("#password").focus(); + // return false; + // } + // + // if ($("#repassword").val() == "") { + // alert("请输入重复密码!"); + // $("#repassword").focus(); + // return false; + // } + // + // if ($("#password").val() != $("#repassword").val()) { + // alert("两次密码不同!"); + // $("#repassword").focus(); + // return false; + // } + + if ($("#cpwd").val() == "false") { + $.ajax({ + url: 'index.php', + data: { + s: 63832, + dbhost: $("#dbhost").val(), + dbuser: $("#dbuser").val(), + dbpwd: $("#dbpwd").val(), + }, + type: 'get', + dataType: 'html', + success: function (data) { + if (data == 'true') { + $('#cpwdTxt').html('可用'); + $('#cpwd').val("true"); + + //验证没有问题,提交表单 + document.form.submit(); + return; + } else { + $('#cpwdTxt').html('不可用'); + $("#dbpwd").focus(); + $('#cpwd').val("false"); + return false; + } + } + }); + } else { + + //验证没有问题,提交表单 + document.form.submit(); + return; + } +} + +/** + * 验证数据库账号密码是否正确 + * @constructor + */ +function CheckPwd() { + $.ajax({ + url: 'index.php', + data: { + s: 63832, + dbhost: $("#dbhost").val(), + dbport: $("#dbport").val(), + dbuser: $("#dbuser").val(), + dbpwd: $("#dbpwd").val(), + }, + type: 'get', + dataType: 'html', + success: function (data) { + if (data === 'true') { + $('#cpwdTxt').html('可用'); + $('#cpwd').val("true"); + } else { + $('#cpwdTxt').html('不可用'); + $('#cpwd').val("false"); + } + } + }); +} diff --git a/install/templates/js/jquery.min.js b/install/templates/js/jquery.min.js new file mode 100644 index 0000000..c72011d --- /dev/null +++ b/install/templates/js/jquery.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.6 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon May 2 13:50:00 2011 -0400 + */ +(function(a,b){function cw(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function ct(a){if(!ch[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ci||(ci=c.createElement("iframe"),ci.frameBorder=ci.width=ci.height=0),c.body.appendChild(ci);if(!cj||!ci.createElement)cj=(ci.contentWindow||ci.contentDocument).document,cj.write("");b=cj.createElement(a),cj.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ci)}ch[a]=d}return ch[a]}function cs(a,b){var c={};f.each(cn.concat.apply([],cn.slice(0,b)),function(){c[this]=a});return c}function cr(){co=b}function cq(){setTimeout(cr,0);return co=f.now()}function cg(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cf(){try{return new a.XMLHttpRequest}catch(b){}}function b_(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){name="data-"+c.replace(j,"$1-$2").toLowerCase(),d=a.getAttribute(name);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(e){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?g=[null,a,null]:g=i.exec(a);if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",b=a.getElementsByTagName("*"),d=a.getElementsByTagName("a")[0];if(!b||!b.length||!d)return{};e=c.createElement("select"),f=e.appendChild(c.createElement("option")),g=a.getElementsByTagName("input")[0],i={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.55$/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:g.value==="on",optSelected:f.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},g.checked=!0,i.noCloneChecked=g.cloneNode(!0).checked,e.disabled=!0,i.optDisabled=!f.disabled;try{delete a.test}catch(r){i.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function click(){i.noCloneEvent=!1,a.detachEvent("onclick",click)}),a.cloneNode(!0).fireEvent("onclick")),g=c.createElement("input"),g.value="t",g.setAttribute("type","radio"),i.radioValue=g.value==="t",g.setAttribute("checked","checked"),a.appendChild(g),j=c.createDocumentFragment(),j.appendChild(a.firstChild),i.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",k=c.createElement("body"),l={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(p in l)k.style[p]=l[p];k.appendChild(a),c.documentElement.appendChild(k),i.appendChecked=g.checked,i.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,i.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",i.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",m=a.getElementsByTagName("td"),q=m[0].offsetHeight===0,m[0].style.display="",m[1].style.display="none",i.reliableHiddenOffsets=q&&m[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(h=c.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),i.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(h,null).marginRight,10)||0)===0),k.innerHTML="",c.documentElement.removeChild(k);if(a.attachEvent)for(p in{submit:1,change:1,focusin:1})o="on"+p,q=o in a,q||(a.setAttribute(o,"return;"),q=typeof a[o]=="function"),i[p+"Bubbles"]=q;return i}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[c]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||"set"in c&&c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b=a.selectedIndex,c=[],d=a.options,e=a.type==="select-one";if(b<0)return null;for(var g=e?b:0,h=e?b+1:d.length;g=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex",readonly:"readOnly"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c]||(v&&(f.nodeName(a,"form")||u.test(c))?v:b);if(d!==b){if(d===null||d===!1&&!t.test(c)){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;d===!0&&!t.test(c)&&(d=c),a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.getAttribute("value");a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),f.support.getSetAttribute||(f.attrFix=f.extend(f.attrFix,{"for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}),v=f.attrHooks.name=f.attrHooks.value=f.valHooks.button={get:function(a,c){var d;if(c==="value"&&!f.nodeName(a,"button"))return a.getAttribute(c);d=a.getAttributeNode(c);return d&&d.specified?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=Object.prototype.hasOwnProperty,x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function J(a){var c=a.target,d,e;if(!!y.test(c.nodeName)&&!c.readOnly){d=f._data(c,"_change_data"),e=I(c),(a.type!=="focusout"||c.type!=="radio")&&f._data(c,"_change_data",e);if(d===b||e===d)return;if(d!=null||e)a.type="change",a.liveFired=b,f.event.trigger(a,arguments[1],c)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){return a.nodeName.toLowerCase()==="input"&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!be[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[];for(var i=0,j;(j=a[i])!=null;i++){typeof j=="number"&&(j+="");if(!j)continue;if(typeof j=="string")if(!ba.test(j))j=b.createTextNode(j);else{j=j.replace(Z,"<$1>");var k=($.exec(j)||["",""])[1].toLowerCase(),l=be[k]||be._default,m=l[0],n=b.createElement("div");n.innerHTML=l[1]+j+l[2];while(m--)n=n.lastChild;if(!f.support.tbody){var o=_.test(j),p=k==="table"&&!o?n.firstChild&&n.firstChild.childNodes:l[1]===""&&!o?n.childNodes:[];for(var q=p.length-1;q>=0;--q)f.nodeName(p[q],"tbody")&&!p[q].childNodes.length&&p[q].parentNode.removeChild(p[q])}!f.support.leadingWhitespace&&Y.test(j)&&n.insertBefore(b.createTextNode(Y.exec(j)[0]),n.firstChild),j=n.childNodes}var r;if(!f.support.appendChecked)if(j[0]&&typeof (r=j.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV;try{bU=e.href}catch(bW){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bX(bS),ajaxTransport:bX(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?b$(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b_(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bY(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bY(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bZ(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var ca=f.now(),cb=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+ca++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cb.test(b.url)||e&&cb.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cb,l),b.url===j&&(e&&(k=k.replace(cb,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cc=a.ActiveXObject?function(){for(var a in ce)ce[a](0,1)}:!1,cd=0,ce;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cf()||cg()}:cf,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cc&&delete ce[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cd,cc&&(ce||(ce={},f(a).unload(cc)),ce[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ch={},ci,cj,ck=/^(?:toggle|show|hide)$/,cl=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cm,cn=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],co,cp=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cs("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a=f.timers,b=a.length;while(b--)a[b]()||a.splice(b,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cm),cm=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cu=/^t(?:able|d|h)$/i,cv=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cw(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cu.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cv.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cv.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cw(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cw(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/install/templates/step_0.php b/install/templates/step_0.php new file mode 100644 index 0000000..76be2f2 --- /dev/null +++ b/install/templates/step_0.php @@ -0,0 +1,69 @@ + + + + + + + 六零导航页安装向导 - 协议说明 + + + + +
+
+
+

更新日期:2023年12月16日

+

软件许可协议

+
+

尊敬的用户,感谢您使用六零导航页,希望本程序能给您在上网时提供方便的入口。 +

+
+

+ 六零导航页(LyLme Spage)(以下称“本程序”),由上云六零科技工作室(以下称“上云六零”)开发,致力于简洁高效无广告的上网导航和搜索入口,沉淀最具价值链接,全站无商业推广,简约而不简单。

+

+ 使用者无论个人或组织、盈利与否、用途如何(包括以学习和研究为目的),均需仔细阅读本协议,在理解、同意、并遵守本协议的全部条款后,方可开始使用本程序。本授权协议适用且仅适用于本产品,上云六零拥有对本授权协议的最终解释权。

+
+ +

一. 协议许可的权利

+

1. 您可以在完全遵守本最终用户授权协议的基础上,安装和使用本程序提供的全部功能,而不必支付软件版权授权费用。

+

2. 您可以在协议规定的约束和限制范围内修改本程序源代码或界面风格以适应您的使用要求。

+

3. 您拥有使用本程序构建的应用中全部会员资料、内容及相关信息的所有权,并独立承担相关法律义务。

+
+ +

二. 用户使用的规则

+

+ 本程序及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。用户出于自愿而使用本程序,您必须了解使用本程序的风险,在尚未购买产品技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本程序而产生问题的相关责任。上云六零不对使用本程序构建的网站和应用中的内容或信息承担责任。 +

+
+

+ 用户在使用本程序时,必须遵循以下原则:

+ + +
+

1. 遵守中国及所在国有关的法律和法规;

+

2. 用户不得侵任何人的知识产权,包括但不限于不得将侵犯任何人的专利、商标、著作权、商业秘密或其他专属权利;

+

+ 3. + 用户不得侵犯涉密信息,包括但不限于不得将无权传送的内容(例如商业秘密、内部资料、机密资料、个人信息等)进行上载、张贴、发送电子邮件或以其他方式发布、传送、传播、储存、或提供;

+

+ 4. + 用户不得为任何非法目的而使用本程序,包括但不限于应当遵守法律法规,以及所有与网络服务有关的网络协议、规定和程序,不得利用本程序进行任何可能对互联网的正常运转造成不利影响的行为,或其他任何非法行为;

+

+ 5. + 用户不得利用本服务实施侵权行为,包括但不限于不得使用虚假、冒充他人或其他方的信息安装、使用本程序,不得冒充任何人或机构,或以虚伪不实的方式谎称或使人误认为其言论或身份与任何人或任何机构有关;不得伪造标题或以其他方式操控识别资料,使人误认为该内容为程序作者所传送;不得利用本程序网络服务程序传播任何骚扰性的、中伤他人的、辱骂性的、庸俗淫秽的或其他任何非法的信息资料;

+

+ 6. + 用户不得破坏本服务的提供,或侵犯本服务相关的任何权利,包括但不限于不得将有关干扰、破坏或限制任何计算机软件、硬件或通讯设备功能的软件病毒或其他计算机代码、档案和程序之资料,加以上载、张贴或其他方式的传播;

+

7. 用户禁止利用本程序及相关服务进行法律法规禁止内容的行为。

+
+

+ 电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始安装本程序,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的权力的同时,受到相关的约束和限制。协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,责令停止损害,并保留追究相关责任的权力。

+
+ + + diff --git a/install/templates/step_1.php b/install/templates/step_1.php new file mode 100644 index 0000000..14e8661 --- /dev/null +++ b/install/templates/step_1.php @@ -0,0 +1,162 @@ + + + + + + + 六零导航页安装向导 - 检测安装环境 + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目 + + 所需配置 + + 推荐配置 + + 当前服务器 + +
操作系统不限制Linux
PHP 版本5.47.0
附件上传2M2M
GD 库2.02.1
磁盘空间10M不限制 + +
+
+ + + + + + + + + + +
扩展要求 + + 检查结果 + + 建议 + +
+ +
+
+ + + + + + + + + + +
函数名称 + + 检查结果 + + 建议 + +
()
+
+ + + + + + + + + + +
文件权限检测 + + 所需状态 + + 当前状态 + +
可写
+
+
+ + + + \ No newline at end of file diff --git a/install/templates/step_2.php b/install/templates/step_2.php new file mode 100644 index 0000000..5422881 --- /dev/null +++ b/install/templates/step_2.php @@ -0,0 +1,84 @@ + + + + + + + 六零导航页安装向导 - 配置数据文件 + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
填写数据库信息
数据库服务器: + 数据库服务器地址, 一般为 localhost
数据库端口号: + + 数据库端口号, 一般为 3306 +
数据库名称: + + 数据库的名称,如果没有请先新增 +
数据库用户名:
数据库密码: + +
默认管理员信息
管理员账号: +
admin
+
管理员密码: +
123456
+
+
+
+ +
+ + \ No newline at end of file diff --git a/install/templates/step_3.php b/install/templates/step_3.php new file mode 100644 index 0000000..65556dc --- /dev/null +++ b/install/templates/step_3.php @@ -0,0 +1,23 @@ + + + + + + + 六零导航页安装向导 - 执行配置文件 + + + + +
+
+
+

正在安装...

+
+
+
+ + + \ No newline at end of file diff --git a/install/templates/step_4.php b/install/templates/step_4.php new file mode 100644 index 0000000..cd132e6 --- /dev/null +++ b/install/templates/step_4.php @@ -0,0 +1,25 @@ + + + + + + + 六零导航页安装向导 - 安装成功 + + + + +
+
+
+
现在您可以:
+ 访问首页登录后台

+ 您可以访问 帮助文档 获取更多帮助 +
+
+
+ + + diff --git a/install/templates/step_5.php b/install/templates/step_5.php new file mode 100644 index 0000000..78ab163 --- /dev/null +++ b/install/templates/step_5.php @@ -0,0 +1,22 @@ + + + + + + + 六零导航页安装向导 - 程序已安装 + + + + +
+
+
+
您已安装过本系统!返回首页

+ 如需重新安装请删除install/install.lock文件

注意:重新安装会清空原有数据,请谨慎操作!!! +
+
+ + diff --git a/install/templates/style/install.css b/install/templates/style/install.css new file mode 100644 index 0000000..4b6889d --- /dev/null +++ b/install/templates/style/install.css @@ -0,0 +1,351 @@ +@charset "utf-8"; + +/* 全局控制 */ +html { + /*overflow: hidden;*/ +} + +body { + margin: 0; + padding: 0; + font-family: "微软雅黑", Arial, "宋体"; + font-size: 13px; + color: #333; +} +.text p{ + text-indent:2em; +} +.text p.lf{ + text-indent:0em; +} +html, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td, p { + margin: 0; + padding: 0; +} + +input, select, textarea { + vertical-align: middle; + font-family: "微软雅黑", Arial, "宋体"; + font-size: 12px; +} + +img { + border: 0; +} + +ul, li { + list-style-type: none; +} + +a { + color: #333; + text-decoration: none; +} + +a:hover { + text-decoration: underline; + color: #333; +} + +a:focus { + outline: none; +} + +a { + transition-duration: 300ms; +} + + +/*全局函数*/ +.hr_1, .hr_8, .hr_10 { + font-size: 1px; + line-height: 1px; + clear: both; + overflow: hidden; +} + +.hr_1 { + height: 1px; +} + +.hr_8 { + height: 8px; +} + +.hr_10 { + height: 10px; +} + +.col-red { + color: red; +} + +/*定义新型浏览器特性*/ +::-webkit-scrollbar { + width: 10px; + height: 10px +} + +::-webkit-scrollbar-button:vertical { + display: none +} + +::-webkit-scrollbar-track:vertical { + background: #000 +} + +::-webkit-scrollbar-track-piece { + background: #f6f6f6 +} + +::-webkit-scrollbar-thumb:vertical { + background: #d0d0d0; +} + +::-webkit-scrollbar-thumb:vertical:hover { + background: #3B3B3B +} + +::-webkit-scrollbar-corner:vertical { + background: #535353 +} + +::-webkit-scrollbar-resizer:vertical { + background: #FF6E00 +} + + +input[type="text"]:focus, input[type="password"]:focus { + border: none; + outline: none; +} + + +.header, .mainBody, .footer { + /*width: 960px;*/ + margin: 0 5px; +} + + +/*头部区域*/ +.header { + height: 90px; + margin-bottom: 20px; + background: url(../images/logo.png) no-repeat 0 center; + border-bottom: 1px solid #d4d4d4; +} + + +/*主要区域*/ +.mainBody { + overflow-x: hidden; + overflow-y: auto; + padding: 0 10px; +} + +.mainBody .correct, .mainBody .error { + padding-left: 22px; +} + +.mainBody .correct { + background: url(../images/correctBg.png) no-repeat 0 center; + color: green; +} + +.mainBody .error { + background: url(../images/errorBg.png) no-repeat 0 center; + color: red; +} + +.mainBody .text { + line-height: 25px; +} + +.mainBody .text h3 { + font-size: 14px; + text-align: center; + margin-bottom: 10px; + color: #333; +} + +.mainBody .text h4 { + font-size: 13px; + margin: 10px 0 5px 0; + color: #333; +} + +.mainBody .forms .head { + font-weight: bold; + font-size: 14px; +} + +.mainBody .forms .firstCol { + padding-left: 5px; +} + +.mainBody .forms .endCol { + padding-right: 5px; + text-align: right; +} + +.mainBody .table .title { + font-weight: bold; + font-size: 14px; +} + +.mainBody .table .input, .readonly { + width: 60%; + height: 24px; + line-height: 24px; + margin: 1px; + border: 1px solid #ccc; + padding: 0 3px; +} + +.mainBody .table .readonly { + display: inline-block; + border: none; +} + +.mainBody .table .inputOn { + width: 280px; + height: 24px; + line-height: 24px; + padding: 2px 5px; + background: url(../images/inputOnBg.png) no-repeat 0 center; + border: 0; +} + +.mainBody .table .cnote { + margin-left: 20px; + color: #999; +} + +.mainBody .note { + width: 400px; + margin: 80px auto 0; +} + +.mainBody .note .complete, .mainBody .note .already { + width: 400px; + padding: 90px 0 0 95px; + line-height: 22px; +} + +.mainBody .note .complete { + background: url(../images/complete.png) no-repeat; +} + +.mainBody .note .already { + background: url(../images/already.png) no-repeat; +} + +.mainBody .note span { + color: #999; + padding: 0 5px; +} + +.mainBody .note a { + text-decoration: underline; +} + +.mainBody .note a:hover { + text-decoration: none; +} + +.mainBody .note a.link { + text-decoration: none; +} + +.mainBody .note a.link:hover { + text-decoration: underline; +} + + +/* 页脚区域 */ +.footer { + margin-top: 20px; + height: 50px; + border-top: 3px solid #f0f0f0; + background: #fff; + position: relative; +} + +.footer .step, .footer .step2, .footer .step3, .footer .step4, .footer .step5 { + display: block; + height: 3px; + position: absolute; + left: 0; + bottom: 50px; + background: #0cd7f7; + overflow: hidden; + z-index: 999; +} + +.footer .step { + width: 25%; +} + +.footer .step2 { + width: 50%; +} + +.footer .step3 { + width: 75%; +} + +.footer .step4 { + width: 100%; +} + +.footer .step5 { + width: 100%; +} + +.footer .copyright { + float: left; + padding-left: 10px; + line-height: 50px; + font-family: Verdana; +} + +.footer .formSubBtn { + width: 200px; + float: right; + margin-top: 10px; + padding-right: 20px; + text-align: right; +} + +.footer .formSubBtn .submit, .formSubBtn .back { + display: inline-block; + width: 78px; + height: 28px; + line-height: 28px; + text-align: center; + font-family: "微软雅黑"; + font-size: 14px; +} + +.footer .formSubBtn .submit { + background: #3d566d; + border: 1px solid #3d566d; + color: #fff; +} + +.footer .formSubBtn .submit:hover { + background: #4f6880; + text-decoration: none; +} + +.footer .formSubBtn .back { + margin-right: 10px; + background: #fff; + border: 1px solid #999; + color: #666; +} + +.footer .formSubBtn .back:hover { + border: 1px solid #666; + text-decoration: none; +} \ No newline at end of file