├── README.md
├── app
├── class
│ ├── ajax.php
│ ├── app.php
│ ├── codes.php
│ ├── config.php
│ ├── install.txt
│ ├── page.php
│ ├── plug
│ │ ├── fsemmsg.php
│ │ └── wxmsg.php
│ └── upload.php
└── db
│ └── de2c9b0e78a8.db
├── assets
├── file
│ └── 2020
│ │ └── 02
│ │ └── s_171704_17358.jpg
├── js
│ ├── admin.js
│ ├── ajax.js
│ ├── highlightjs
│ │ ├── dark.css
│ │ └── highlight.min.js
│ ├── jquery.min.js
│ ├── laydate
│ │ ├── laydate.js
│ │ └── theme
│ │ │ └── default
│ │ │ ├── font
│ │ │ ├── iconfont.eot
│ │ │ ├── iconfont.svg
│ │ │ ├── iconfont.ttf
│ │ │ └── iconfont.woff
│ │ │ └── laydate.css
│ ├── layer.js
│ ├── need
│ │ └── layer.css
│ └── wangeditor
│ │ ├── css
│ │ └── wangEditor.min.css
│ │ ├── fonts
│ │ ├── icomoon.eot
│ │ ├── icomoon.svg
│ │ ├── icomoon.ttf
│ │ └── icomoon.woff
│ │ └── wangEditor.min.js
└── qblog
│ ├── archive.php
│ ├── foot.php
│ ├── head.php
│ ├── images
│ ├── iconfont.eot
│ ├── iconfont.svg
│ ├── iconfont.ttf
│ └── iconfont.woff
│ ├── index.php
│ ├── login.php
│ ├── plist.php
│ ├── post.php
│ ├── right.php
│ ├── setting.php
│ ├── style.css
│ ├── target.php
│ ├── theme.php
│ ├── view.php
│ └── widget.php
├── index.php
├── readme.txt
├── v3tov4.1.1.php
└── v4to4.1.1.php
/README.md:
--------------------------------------------------------------------------------
1 | # 无名轻博客PHP版
2 |
3 |
4 |
5 | #### 介绍
6 |
7 | 无名轻博客v4.1.1正式版发布
8 | 运行环境:PHP>=5.6 pdo_sqlite
9 |
10 | #### 更新如下:
11 |
12 | - 1、见readme.txt
13 |
14 | #### 使用前请执行安装程序
15 |
16 |
17 | - 1、密码:安装时随机生成
18 | - 2、如果从V3.0升级请运行v3tov4.1.1.php
19 | - 3、如果从v4升级请运行v4to4.1.1.php
20 | - 4、全新安装请删除v3tov4.1.1.php、v4to4.1.1.php
21 |
22 | #### 官网及演示
23 |
24 | 官方网站:https://www.bb6.cn
25 |
--------------------------------------------------------------------------------
/app/class/ajax.php:
--------------------------------------------------------------------------------
1 | getdata("select `pic`,`pics` from `Log` where id=:id", array(
12 | 'id' => $id
13 | ));
14 | $b = $db->runsql("delete from `Log` where id=:id",array("id"=>$id));
15 | $b = $db->runsql("delete from `Pl` where cid=:id",array("id"=>$id));
16 | delpic($v[0]['pics']);
17 | delpic($v[0]['pic']);
18 | logmsg($b);
19 | break;
20 |
21 | case 'addpl':
22 | if($set['safecode'] ==1){
23 | $code = $_POST['pcode'];
24 | if($code!=$_SESSION['code']){
25 | logmsg(0,'验证码错误!');
26 | }
27 | }
28 | $v = $db->getdata("select * from `Log` where id=:id",array('id'=>$id));
29 | if(empty($v[0]) || $v[0]['lock']==1 || $v[0]['hide']==1){
30 | logmsg(0,'评论失败!');
31 | }
32 | $arr['cid'] = $id;
33 | $arr['purl'] = mb_substr(strip_tags(trim($_POST['purl'])),0,50,'utf-8');
34 | $arr['pname'] = mb_substr(strip_tags(trim($_POST['pname'])),0,20,'utf-8');
35 | $arr['pmail'] = mb_substr(strip_tags(trim($_POST['pmail'])),0,30,'utf-8');
36 | if(empty($arr['pname'])){$arr['pname'] ='匿名网友';}
37 | $arr['pcontent'] = mb_substr(strip_tags(trim($_POST['pcontent'])),0,250,'utf-8');
38 | if(empty($arr['pname']) or empty($arr['pcontent'])) logmsg(0,'昵称/内容为空!');
39 | $arr['isn'] = $set['plsh'];
40 | if($admin !=1){
41 | if($arr['pname'] == $set['webuser']){ $arr['pname']='网友';}
42 | }
43 | $b = $db->runsql("insert into `Pl` (cid,pname,pmail,pcontent,isn,purl)values(:cid,:pname,:pmail,:pcontent,:isn,:purl)",$arr);
44 | if($b){$db->runsql("update `Log` set num=num+1 where id=:id",array("id"=>$arr['cid']));}
45 | $arr['ptime'] = date('Y-m-d H:i:s');
46 | $str = pl_str($b,$arr);
47 | setcookie('pname',$arr['pname'],time()+3600*24*30,'/');
48 | setcookie('pmail',$arr['pmail'],time()+3600*24*30,'/');
49 | setcookie('purl',$arr['purl'],time()+3600*24*30,'/');
50 | $_SESSION[KEY.'add'] = $arr;
51 | logmsg($b,$str);
52 | break;
53 | case 'pltz':
54 | if(empty($_SESSION[KEY.'add'])){
55 | logmsg(0,'非法请求!');
56 | }else{
57 | $arr = $_SESSION[KEY.'add'];
58 | unset($_SESSION[KEY.'add']);
59 | $arr['r'] = $_POST['r'];
60 | if(empty($arr['rcontent'])){
61 | run_hook('addpl',$arr);
62 | }else{
63 | $arr['pmail'] = $_POST['pmail'];
64 | run_hook('plsave',$arr);
65 | }
66 | }
67 | break;
68 | case 'shpl':
69 | chkadm();
70 | $b = $db->runsql("update `Pl` set isn=0 where id=:id",array("id"=>$id));
71 | logmsg($b);
72 | break;
73 | case 'plsave':
74 | chkadm();
75 | $arr['id'] = $id;
76 | $arr['rcontent'] = $_POST['rcontent'];
77 | $b = $db->runsql("update `Pl` set rcontent=:rcontent,isn=0 where id=:id",$arr);
78 | $_SESSION[KEY.'add'] = $arr;
79 | logmsg($b);
80 | break;
81 |
82 | case 'ckpass':
83 | $ps = isset($_POST['ps'])?$_POST['ps']:'';
84 | $rs = $db->getdata("select content,pass from `Log` where id=:id",array('id'=>$id));
85 | $_ps = $rs[0]['pass'];
86 | if($_ps==$ps){
87 | logmsg(1,$rs[0]['content']);
88 | }else{
89 | logmsg(0,'密码错误!');
90 | }
91 | break;
92 |
93 | case 'delpl':
94 | chkadm();
95 | $cid = isset($_GET['cid'])?intval($_GET['cid']):0;
96 | $b = $db->runsql("delete from `Pl` where id=:id",array("id"=>$id));
97 | if($b){$db->runsql("update `Log` set num=num-1 where id=:id",array("id"=>$cid));}
98 | logmsg($b);
99 | break;
100 |
101 | case 'saveset':
102 | chkadm();
103 | $arr = $_POST;
104 | $_SESSION[KEY.'set'] = '';
105 | if(empty($arr['webpass'])){
106 | unset($arr['webpass']);
107 | }else{
108 | $arr['webpass'] = md5(md5(KEY.$arr['webpass']));
109 | }
110 | $sql = arr_sql('Set','update',$arr);
111 | $arr['id'] = 1;
112 | $b = $db->runsql($sql,$arr);
113 | logmsg($b);
114 | break;
115 |
116 | case 'savewid':
117 | chkadm();
118 | $arr = $_POST;
119 | if($id >0){
120 | $arr['id'] = $id;
121 | $b = $db->runsql("update `Wid` set title=:title,html=:html,ord=:ord where id=:id",$arr);
122 | }else{
123 | $b = $db->runsql("insert into `Wid`(title,html,ord)values(:title,:html,:ord)",$arr);
124 | }
125 | logmsg($b);
126 | break;
127 |
128 | case 'delwid':
129 | chkadm();
130 | //if($id>4){
131 | $b = $db->runsql("delete from `Wid` where id=:id",array('id'=>$id));
132 | logmsg(1);
133 | //}else{
134 | //logmsg(0,'系统侧栏不能删除!');
135 | //}
136 | break;
137 |
138 | case 'delpic':
139 | chkadm();
140 | $pic = $_POST['pic'];
141 | delpic($pic);
142 | break;
143 |
144 | case 'thum':
145 | chkadm();
146 | if(!empty($d)){
147 | if(strpos($d,'/b_')>1){
148 | $Image = ROOT_PATH.$d;
149 | $imgInfo = @getimagesize($Image);
150 | $saveImage = str_replace('/b_','/s_',$Image);
151 | createImg($Image,$saveImage,$imgInfo,ImgW,ImgH,1);
152 | $thum = str_replace(ROOT_PATH,'',$saveImage);
153 | logmsg(1,$thum);
154 | }else{
155 | logmsg(0,'图片地址错误!');
156 | }
157 | }else{
158 | logmsg(0,'图片地址错误!');
159 | }
160 | break;
161 |
162 | case 'savelog':
163 | chkadm();
164 | $arr = $_POST;
165 | $c = $arr['c'];
166 | $id = intval($arr['id']);
167 | unset($arr['c']);
168 | unset($arr['id']);
169 | if(empty($arr['pass'])){
170 | if(empty($arr['sum'])){
171 | $arr['sum'] = mb_substr(strip_tags($arr['content']),0,100,'utf-8');
172 | if(empty($arr['sum'])){
173 | if(strpos($arr['content'],'
runsql($sql,$arr);
188 | }else{
189 | $sql = arr_sql('Log','update',$arr);
190 | $arr['id'] = $id;
191 | $b = $db->runsql($sql,$arr);
192 | if($b==1) {
193 | $db->runsql("update `Pl` set `hide`=:hide where `cid`=:cid",array("hide"=>$arr['hide'],"cid"=>$id));
194 | $b=$arr['id'];
195 | }
196 | }
197 | logmsg($b);
198 | break;
199 |
200 | case 'zdlog':
201 | chkadm();
202 | $arr['id'] = $id;
203 | $arr['ist'] = intval($d);
204 | $b = $db->runsql("update `Log` set ist=:ist where id=:id",$arr);
205 | $msg = $d==0?'置顶':'取消';
206 | logmsg($b,$msg);
207 | break;
208 | case 'upcache':
209 | chkadm();
210 | unset($_SESSION[KEY.'set']);
211 | unset($_SESSION[KEY.'hooks']);
212 | $db->runsql("VACUUM");
213 | logmsg(1,'更新完成,请刷新页面!');
214 | break;
215 | case 'aplug':
216 | chkadm();
217 | $f = 'plug/'.str_replace('..','',$d);
218 | if(is_file($f)) {
219 | require_once $f;
220 | $func = str_replace('.php','',$d).'_init';
221 | if(function_exists($func)){
222 | $init = $func();
223 | $arr['init'] = serialize($init);
224 | if(empty($init['error'])){
225 | $arr['title'] = $init['title'];
226 | $arr['hook'] = $init['func'];
227 | $sql = arr_sql('Plug','insert',$arr);
228 | $b = $db->runsql($sql,$arr);
229 | unset($_SESSION[KEY.'hooks']);
230 | logmsg($b);
231 | }else{
232 | logmsg(0,$init['error']);
233 | }
234 | }
235 | }
236 | else{
237 | logmsg(0,'安装失败!');
238 | }
239 | break;
240 | case 'eplug':
241 | chkadm();
242 | $app_hooks = get_hooks();
243 | $cfg = $app_hooks[$id]['cfg'];
244 | $str = '
';
251 | logmsg(1,$str);
252 | break;
253 | case 'splug':
254 | chkadm();
255 | $arr['id'] = $id;
256 | $args = $_POST['args'];
257 | foreach($args as $v){
258 | if(empty($v)){
259 | logmsg(0,'请输入完整后提交');
260 | }
261 | }
262 | $arr['args'] = serialize($args);
263 | $b = $db->runsql("update `Plug` set args=:args where id=:id",$arr);
264 | unset($_SESSION[KEY.'hooks']);
265 | logmsg($b);
266 | break;
267 | case 'kgplug':
268 | chkadm();
269 | $arr['id'] = $id;
270 | $arr['lock'] = intval($d);
271 | $b = $db->runsql("update `Plug` set lock=:lock where id=:id",$arr);
272 | $msg = $d==0?'开启':'关闭';
273 | unset($_SESSION[KEY.'hooks']);
274 | logmsg($b,$msg);
275 | break;
276 | case 'dplug':
277 | chkadm();
278 | $b = $db->runsql("delete from `Plug` where id=:id",array('id'=>$id));
279 | unset($_SESSION[KEY.'hooks'][$id]);
280 | logmsg($b);
281 | break;
282 | default:
283 | logmsg(0);
284 | }
285 | //end switch
286 |
287 |
--------------------------------------------------------------------------------
/app/class/app.php:
--------------------------------------------------------------------------------
1 | '发布','set'=>'设置','wid'=>'边栏','logout'=>'退出');
77 | global $webmenu,$admin,$file,$widget,$set;
78 | echo $webmenu;
79 | if($admin === 0 ){
80 | $q = $_SERVER['QUERY_STRING'];
81 | if(empty($set['lstr'])){
82 | echo '登录';
83 | }else{
84 | if($q==$set['lstr']){@header('Location:' . $file.'?act=login&l='.$q);}
85 | }
86 | }else{
87 | foreach($menu as $k=>$v){
88 | if ($widget=="0" && $k=='wid') continue;
89 | echo ''.$v.'';
90 | }
91 | }
92 | }
93 |
94 | function _class(){
95 | global $class;
96 | if(empty($class[0])) return '';
97 | $i = 0;
98 | $str = '';
99 | foreach($class as $v){
100 | $str .= ''.$v.'';
101 | $i++;
102 | }
103 | return $str;
104 | }
105 |
106 | function view_admin($id,$ist,$v=0){
107 | global $admin,$file;
108 | $txt = $ist==1?'取消':'置顶';
109 | $str = "{$txt} 编辑 删除";
110 | $def = "";
111 | if($v==0){
112 | $def = "返回 我要评论";
113 | }else if($v==1){
114 | $def = "返回";
115 | }
116 | echo $admin==1?$str:$def;
117 | }
118 |
119 | function pl_admin($id,$cid,$isn,$pmail){
120 | global $admin;
121 | $str = "回复 删除";
122 | if($isn==1){
123 | $str .= " 审核";
124 | }
125 | echo $admin==1?$str:'';
126 | }
127 |
128 | function getset(){
129 | $db = new DbHelpClass();
130 | if(empty($_SESSION[KEY.'set'])){
131 | $rs = $db->getdata("select * from `Set` where id=1");
132 | $set = $rs[0];
133 | $_SESSION[KEY.'set'] = $set;
134 | }else{
135 | $set = $_SESSION[KEY.'set'];
136 | }
137 | return $set;
138 | }
139 |
140 | function logmsg($b,$msg='操作成功!'){
141 | if($b>0){
142 | $arr['result'] = 200;
143 | $arr['message'] = $msg;
144 | }else{
145 | $arr['result'] = 500;
146 | if(empty($msg)){
147 | $arr['message'] = '操作失败!';
148 | }else{
149 | $arr['message'] = $msg;
150 | }
151 | }
152 | $arr['id'] = $b;
153 | echo json_encode($arr);exit();
154 | }
155 |
156 | function chkadm(){
157 | if($_SESSION[KEY.'admin']!=1){
158 | logmsg(0,'未登录!');
159 | exit();
160 | }
161 | }
162 |
163 | function jsmsg($n,$m){
164 | $arr['errno'] = $n;
165 | $arr['data'] = $m;
166 | echo json_encode($arr);
167 | }
168 |
169 |
170 | function vurl($id){
171 | global $rewrite;
172 | $url = $rewrite?'post-'.$id.'.html':self().'?act=pl&id='.$id;
173 | return $url;
174 | }
175 |
176 | function vcls($tid){
177 | global $rewrite;
178 | $url = $rewrite?'list-'.$tid.'.html':self().'?tid='.$tid;
179 | return $url;
180 | }
181 |
182 | function vmenu($menu){
183 | global $rewrite;
184 | $menu = str_replace('@class',_class(),$menu);
185 | return $rewrite?str_replace(array('@index','@comment','@archives'),array('index.html','comment.html','archives.html'),$menu):str_replace(array('@index','@comment','@archives'),array(self(),self().'?act=plist',self().'?act=archives'),$menu);
186 | }
187 |
188 | function target($v,$file){
189 | $pattern="#(http|https)://(.*\.)?.*\..*#i";
190 | if(preg_match($pattern,$v)){
191 | return ' target="_blank" href="'.$file.'?act=target&s='.rawurlencode($v).'"';
192 | }else{
193 | return '';
194 | }
195 | }
196 |
197 | function pv($id){
198 | if(isset($_SESSION['pv_'.$id])){
199 | }else{
200 | $_SESSION['pv_'.$id] = 1;
201 | $db = new DbHelpClass();
202 | $db->runsql("update `Log` set pv=pv+1 where id=:id",array("id"=>$id));
203 | }
204 | }
205 |
206 | function self(){
207 | $self = $_SERVER['PHP_SELF'];
208 | $php_self=substr($self,strrpos($self,'/')+1);
209 | return $php_self;
210 | }
211 |
212 | function agent(){
213 | if (isset($_SERVER['HTTP_USER_AGENT'])) {
214 | if (preg_match("/(ios|iPad|iPhone|iPod|Android)/i", $_SERVER['HTTP_USER_AGENT'])) {
215 | return '手机';
216 | }elseif(preg_match("/(MicroMessenger)/i", $_SERVER['HTTP_USER_AGENT'])){
217 | return '微信';
218 | }else{
219 | return '网页';
220 | }
221 | }else{
222 | return '网页';
223 | }
224 | }
225 |
226 | function get_hooks(){
227 | $db = new DbHelpClass();
228 | if(empty($_SESSION[KEY.'hooks'])){
229 | $rs = $db->getdata("select * from `Plug`");
230 | foreach($rs as $v){
231 | $arr_plug = unserialize($v['init']);
232 | $arr_plug['args'] = unserialize($v['args']);
233 | $arr_plug['lock'] = $v['lock'];
234 | $app_hooks[$v['id']] = $arr_plug;
235 | }
236 | $_SESSION[KEY.'hooks'] = $app_hooks;
237 | return $app_hooks;
238 | }else{
239 | return $_SESSION[KEY.'hooks'];
240 | }
241 | }
242 |
243 | function run_hook($act,$arr) {
244 | $app_hooks = get_hooks();
245 | foreach($app_hooks as $hook) {
246 | if($hook['lock']==1) continue;
247 | $arr_hook = explode(',',$hook['act']);
248 | if(in_array($act,$arr_hook)) {
249 | $file = 'plug/'.$hook['file'];
250 | if(file_exists($file)) {
251 | require_once $file;
252 | $arr['act'] = $act;
253 | $arr['args'] = $hook['args'];
254 | call_user_func($hook['func'].'_run',$arr);
255 | }else {
256 | return false;
257 | }
258 | }
259 | }
260 | }
261 |
262 | function createImg($oldImg,$newImg,$imgInfo,$maxWidth=200,$maxHeight=200,$cut=false)
263 | {
264 | $_n_w = $maxWidth;
265 | $_n_h = $maxHeight;
266 | if( $maxWidth > $imgInfo[0] || $maxHeight > $imgInfo[1] )
267 | {
268 | $maxWidth = $imgInfo[0];
269 |
270 | $maxHeight = $imgInfo[1];
271 | }
272 | else
273 | {
274 | if ( $imgInfo[0] < $imgInfo[1] )
275 | $maxWidth = ($maxHeight / $imgInfo[1]) * $imgInfo[0];
276 | else
277 | $maxHeight = ($maxWidth / $imgInfo[0]) * $imgInfo[1];
278 | }
279 |
280 | $cw = 0;
281 | $ch = 0;
282 | if($cut){
283 |
284 |
285 | if ($maxWidth < $_n_w) { //如果新高度小于新容器高度
286 | $r = $_n_w / $maxWidth; //按长度求出等比例因子
287 | $maxWidth *= $r; //扩展填充后的长度
288 | $maxHeight *= $r; //扩展填充后的高度
289 | $ch = ($maxHeight - $_n_h) / 2; //求出裁剪点的高度
290 | }
291 |
292 | if ($maxHeight < $_n_h) { //如果新高度小于容器高度
293 | $r = $_n_h / $maxHeight; //按高度求出等比例因子
294 | $maxWidth *= $r; //扩展填充后的长度
295 | $maxHeight *= $r; //扩展填充后的高度
296 | $cw = ($maxWidth - $_n_w) / 2; //求出裁剪点的长度
297 | }
298 | $image_p = imagecreatetruecolor($_n_w, $_n_h);
299 | } else{
300 | $image_p = imagecreatetruecolor($maxWidth, $maxHeight);
301 | }
302 |
303 |
304 | switch($imgInfo[2])
305 | {
306 | case 1:
307 | $image = imagecreatefromgif($oldImg);
308 | break;
309 | case 2:
310 | $image = imagecreatefromjpeg($oldImg);
311 | break;
312 | case 3:
313 | $image = imagecreatefrompng($oldImg);
314 | break;
315 | }
316 |
317 | imagecopyresampled($image_p, $image, 0, 0, $cw , $ch , $maxWidth, $maxHeight, $imgInfo[0], $imgInfo[1]);
318 |
319 | imagejpeg($image_p, $newImg);
320 |
321 | imagedestroy($image_p);
322 |
323 | imagedestroy($image);
324 |
325 | return true;
326 | }
327 |
328 | class DbHelpClass
329 | {
330 | private $conn;
331 | private $qxId;
332 | private $ret;
333 |
334 | function __construct()
335 | {
336 | try{
337 | $this->conn = new PDO('sqlite:'.DB);
338 | }
339 | catch(Exception $errinfo){
340 | die ("PDO Connection faild.(可能空间不支持pdo_sqlite,详细错误信息:)".$errinfo);
341 | }
342 |
343 | }
344 |
345 | /*读取*/
346 | function getdata($sql,$params=array())
347 | {
348 | $bind=$this->conn->prepare($sql);
349 | $arrKeys=array_keys($params);
350 | foreach($arrKeys as $row)
351 | {
352 | if(strpos($sql,"like")>-1){
353 | $bind->bindValue(":".$row,'%'.$params[$row].'%');
354 | }else{
355 | $bind->bindValue(":".$row,$params[$row]);
356 | }
357 | }
358 | $bind->execute();// or die('sql error:'.$sql);
359 | $result=$bind->fetchAll(PDO::FETCH_ASSOC);
360 | return $result;
361 | }
362 |
363 | function total($tab_name,$tj='')//求总记录数目
364 | {
365 | $bind = $this->conn->prepare('SELECT count(id) as c FROM '.$tab_name.' '.$tj);
366 | $bind->execute();
367 | $result = $bind->fetchAll();
368 | return $result[0]['c'];
369 | }
370 | /*添加,修改需调用此方法*/
371 | function runsql($sql,$params=array())
372 | {
373 | $bind=$this->conn->prepare($sql);
374 | $arrKeys=array_keys($params);
375 | foreach($arrKeys as $row)
376 | {
377 |
378 | $bind->bindValue(":".$row,$params[$row]);
379 |
380 | }
381 | $a = $bind->execute();//or die('sql error');
382 | if(strpos($sql,"insert")>-1){
383 | return $this->conn->lastInsertId();
384 | }else{
385 | return $a;
386 | }
387 | }
388 | }
389 | function arr_sql($tab,$run,$arr){
390 | //unset($arr['id']);
391 | $k =array_keys($arr);
392 | if($run == 'insert'){
393 | $sql = "insert into `{$tab}`(".join(',',$k).")values(:".join(',:',$k).")";
394 | }else{
395 | //$k =array_keys($arr);
396 | foreach($k as $v){
397 | $s[] = $v.'=:'.$v;
398 | }
399 | $sql = "update `{$tab}` set ".join(',',$s)." where id=:id";
400 | }
401 | return $sql;
402 | }
--------------------------------------------------------------------------------
/app/class/codes.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/class/config.php:
--------------------------------------------------------------------------------
1 |
6 | * @copyright Copyright(C)2010, heyue
7 | * @link http://code.google.com/p/yunphp4sae/
8 | * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
9 | * @version YunPHP4SAE version 1.0.0
10 | * @the class is changed from CodeIgniter
11 | */
12 | class Page {
13 |
14 |
15 | var $base_url = ''; // 最基础的url,分页函数在最后加上页码
16 | var $total_rows = ''; // 总数
17 | var $per_page = 10; // 每页显示的数量
18 | var $num_links = 2; // 显示在当前页左右的有几个,比如例子中就是2个
19 | var $cur_page = 1; // 默认当前页
20 |
21 | var $first_link = '首页'; //第一页的文字
22 | var $next_link = '>'; //下一页的文字
23 | var $prev_link = '<'; //上一页的文字
24 | var $last_link = '尾页'; //最后一页的文字
25 |
26 | var $full_tag_open = ''; //如果你想在page外面包一层div,css的标签请用这个
27 | var $full_tag_close = ''; //后标签
28 |
29 | var $first_tag_open = ''; //第一页的左边的div css 标签
30 | var $first_tag_close = ''; //第一页右边的div css 标签,下面同
31 |
32 | var $last_tag_open = ''; //最后一页
33 | var $last_tag_close = '';
34 |
35 | var $cur_tag_open = ''; //当前页
36 | var $cur_tag_close = '';
37 |
38 | var $next_tag_open = ''; //下一页
39 | var $next_tag_close = '';
40 | var $prev_tag_open = '';
41 | var $prev_tag_close = '';
42 |
43 | var $num_tag_open = ''; //总数
44 | var $num_tag_close = '';
45 |
46 | var $page_tab_open = ''; //其他不是当前页的页码的div css
47 | var $page_tab_close = '';
48 |
49 | var $uri_segmentation = ''; //从配置文件中读取分隔符。本分页函数将在url最后加上页码
50 | var $page_uri = ''; //标准生成的uri
51 |
52 | var $suffix = '';
53 | //处理url stu/list/1 /stu-list-2
54 | function create_links(){
55 | if($this->total_rows == 0 OR $this->per_page == 0){
56 | return '';
57 | }
58 | $num_pages = ceil($this->total_rows / $this->per_page);
59 | if($num_pages == 1){
60 | return '';
61 | }
62 |
63 | $pre_page = $this->cur_page-1;
64 | $next_page = $this->cur_page +1;
65 |
66 | if($this->cur_page >=$num_pages){
67 | $this->cur_page = $num_pages;
68 | $next_page = $num_pages;
69 | }
70 | if($this->cur_page <= 1){
71 | $this->cur_page = 1;
72 | $pre_page = 1;
73 | }
74 |
75 | $output = '';
76 | $output .= "$this->full_tag_open";
77 | $output .= "{$this->first_tag_open}$this->first_link{$this->first_tag_close}";
78 | $output .="{$this->prev_tag_open}$this->prev_link{$this->prev_tag_close}";
79 | $show_nums = $this->num_links*2+1;// 显示页码的个数,比如前后2个,加上自己一个,共 5 个
80 | if($num_pages <= $show_nums){
81 | for($i = 1;$i<=$num_pages;$i++){
82 | if($i == $this->cur_page){
83 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close;
84 | }else{
85 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}";
86 | }
87 | }
88 | }else{
89 | if($this->cur_page < (1+$this->num_links)){
90 | for($i = 1;$i<=$show_nums;$i++){
91 | if($i == $this->cur_page){
92 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close;
93 | }else{
94 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}";
95 | }
96 | }
97 | }else if($this->cur_page >= ($num_pages - $this->num_links)){
98 | for($i = $num_pages - $show_nums ; $i <= $num_pages ; $i++){
99 | if($i == $this->cur_page){
100 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close;
101 | }else{
102 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}";
103 | }
104 | }
105 | }else{
106 | $start_page = $this->cur_page - $this->num_links;
107 | $end_page = $this->cur_page + $this->num_links;
108 | for($i = $start_page ; $i<=$end_page ; $i++){
109 | if($i == $this->cur_page){
110 | $output .= $this->cur_tag_open.$i.$this->cur_tag_close;
111 | }else{
112 | $output .= "{$this->page_tab_open}$i{$this->page_tab_close}";
113 | }
114 | }
115 | }
116 | }
117 |
118 | $output .="{$this->next_tag_open}$this->next_link{$this->next_tag_close}";
119 | $output .= "{$this->last_tag_open}$this->last_link{$this->last_tag_close}";
120 | //$output .="{$this->num_tag_open}$total_rows{$this->num_tag_close}";
121 | $output .= $this->full_tag_close;
122 | return $output;
123 | }
124 | /**
125 | * Constructor
126 | *
127 | * @access public
128 | * @param array initialization parameters
129 | */
130 | function __construct($params = array())
131 | {
132 | $this->uri_segmentation = '';//Configure::getItem('uri_segmentation','config');
133 | if (count($params) > 0)
134 | {
135 | $this->initialize($params);
136 | }
137 | }
138 | /**
139 | * 初始化分页函数
140 | *
141 | * @param unknown_type $params
142 | */
143 | function initialize($params = array()){
144 | if(count($params) > 0){
145 | foreach ($params as $k => $v){
146 | if(isset($this->$k)){
147 | $this->$k = $v;
148 | }
149 | }
150 | }
151 | if(substr($this->base_url,-1) != $this->uri_segmentation){
152 | $this->base_url .= $this->uri_segmentation;
153 | }
154 | }
155 |
156 |
157 | }
158 |
--------------------------------------------------------------------------------
/app/class/plug/fsemmsg.php:
--------------------------------------------------------------------------------
1 | '邮箱密码','端口');
10 | if(!function_exists("fsockopen")) {
11 | $config['error'] = "服务器不支持fsockopen!";
12 | }
13 | return $config;
14 | }
15 |
16 | function fsemmsg_run($arr){
17 | global $set;
18 | $arg = $arr['args'];
19 | if($arr['act']=='plsave'){
20 | $email = $arr['pmail'];
21 | if(filter_var($email, FILTER_VALIDATE_EMAIL)==false) return 'pmail empty';
22 | $text = '您在'.$set['webtitle'].'评论被回复
回复内容:'.$arr['rcontent'];
23 | $title = '评论回复通知';
24 | }else{
25 | $email = empty($set['webmail'])?$arg[1] : $set['webmail'];
26 | $text = '评论地址:'.$set['webtitle'].'
评论昵称:'.$arr['pname'].'
评论内容:'.$arr['pcontent'];
27 | $title = '您的博客收到新的评论';
28 | }
29 | send_mail($email, $title, $text ,$set['webuser'],$arg);
30 | }
31 |
32 |
33 | function send_mail($to, $subject = 'No subject', $body ,$loc='站长',$arg) {
34 | $loc_host = $loc; //发信名
35 | $smtp_host = $arg[0]; //SMTP服务器地址
36 | $smtp_acc = $arg[1]; //Smtp认证的用户名,
37 | $smtp_pass = $arg[2]; //Smtp认证的密码
38 | $smtp_port = $arg[3];
39 | $from = $arg[1]; //发信人Email地址,你的发信信箱地址
40 | $headers = "Content-Type: text/html; charset=\"utf-8\"\r\nContent-Transfer-Encoding: base64";
41 | $lb="\r\n"; //linebreak
42 |
43 | $hdr = explode($lb,$headers); //解析后的hdr
44 | if($body) {
45 | $bdy = preg_replace("/^\./","..",explode($lb,$body)); //解析后的Body
46 | }
47 |
48 | $smtp = array(
49 | //1、EHLO,期待返回220或者250
50 | array("EHLO ".$loc_host.$lb,"220,250","HELO error: "),
51 | //2、发送Auth Login,期待返回334
52 | array("AUTH LOGIN".$lb,"334","AUTH error:"),
53 | //3、发送经过Base64编码的用户名,期待返回334
54 | array(base64_encode($smtp_acc).$lb,"334","AUTHENTIFICATION error : "),
55 | //4、发送经过Base64编码的密码,期待返回235
56 | array(base64_encode($smtp_pass).$lb,"235","AUTHENTIFICATION error : ")
57 | );
58 | //5、发送Mail From,期待返回250
59 | $smtp[] = array("MAIL FROM: <".$from.">".$lb,"250","MAIL FROM error: ");
60 | //6、发送Rcpt To。期待返回250
61 | $smtp[] = array("RCPT TO: <".$to.">".$lb,"250","RCPT TO error: ");
62 | //7、发送DATA,期待返回354
63 | $smtp[] = array("DATA".$lb,"354","DATA error: ");
64 | //8.0、发送From
65 | $smtp[] = array("From: ".$from.$lb,"","");
66 | //8.2、发送To
67 | $smtp[] = array("To: ".$to.$lb,"","");
68 | //8.1、发送标题
69 | $smtp[] = array("Subject: ".$subject.$lb,"","");
70 | //8.3、发送其他Header内容
71 | foreach($hdr as $h) {$smtp[] = array($h.$lb,"","");}
72 | //8.4、发送一个空行,结束Header发送
73 | $smtp[] = array($lb,"","");
74 | //8.5、发送信件主体
75 | if($bdy) {foreach($bdy as $b) {$smtp[] = array(base64_encode($b.$lb).$lb,"","");}}
76 | //9、发送“.”表示信件结束,期待返回250
77 | $smtp[] = array(".".$lb,"250","DATA(end)error: ");
78 | //10、发送Quit,退出,期待返回221
79 | $smtp[] = array("QUIT".$lb,"221","QUIT error: ");
80 |
81 | //打开smtp服务器端口
82 | //$fp = @fsockopen($smtp_host, $arg[3]);
83 |
84 |
85 | if ($smtp_port == "465") {
86 | //SSL加密通信
87 | $fp = @fsockopen('ssl://'. $smtp_host, $smtp_port);
88 | }
89 | else {
90 | //普通无加密通信
91 | $fp = @fsockopen($smtp_host, $smtp_port);
92 | }
93 |
94 | if (!$fp) echo "Error: Cannot conect to ".$smtp_host."";
95 | while($result = @fgets($fp, 1024)){
96 | if(substr($result,3,1) == " ") { break; }
97 | }
98 |
99 | $result_str="";
100 | //发送smtp数组中的命令/数据
101 | foreach($smtp as $req){
102 | //发送信息
103 | @fputs($fp, $req[0]);
104 | //如果需要接收服务器返回信息,则
105 | if($req[1]){
106 | //接收信息
107 | while($result = @fgets($fp, 1024)){
108 | if(substr($result,3,1) == " ") { break; }
109 | };
110 | if (!strstr($req[1],substr($result,0,3))){
111 | $result_str.=$req[2].$result."";
112 | }
113 | }
114 | }
115 | //关闭连接
116 | @fclose($fp);
117 | return $result_str;
118 | }
--------------------------------------------------------------------------------
/app/class/plug/wxmsg.php:
--------------------------------------------------------------------------------
1 | 'token');
9 | return $config;
10 | }
11 |
12 | function wxmsg_run($arr){
13 | $token = $arr['args'][0];
14 | if(!empty($token)){
15 | $pst['t'] = $token;
16 | $pst['n'] = $arr['pname'];
17 | $pst['p'] = $arr['pcontent'];
18 | $pst['r'] = $arr['r'];
19 | $rawData = http_build_query($pst);
20 |
21 | $ch = curl_init();
22 | curl_setopt($ch, CURLOPT_URL, 'https://g.fpx.ink/send/');
23 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
24 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
25 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
26 | curl_setopt($ch,CURLOPT_HEADER,0);
27 | if($rawData){
28 | curl_setopt($ch, CURLOPT_POST, 1);
29 | curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData);
30 | }
31 | $output = curl_exec($ch);
32 | curl_close($ch);
33 | echo $output;
34 | }
35 | }
--------------------------------------------------------------------------------
/app/class/upload.php:
--------------------------------------------------------------------------------
1 | 5242880 )
16 | {
17 |
18 | upmsg(1,'图片不能超过5M');
19 | }
20 | else
21 | {
22 | $imgInfo = @getimagesize($_FILES['picture']['tmp_name']);
23 |
24 | if( !$imgInfo || !in_array($imgInfo[2], array(1,2,3)) )
25 | {
26 | upmsg(1,'您上传的不是一张有效的图片');
27 | exit();
28 | }
29 | switch($imgInfo[2])
30 | {
31 | case 1:
32 | $fileType = ".gif";
33 | break;
34 | case 2:
35 | $fileType = ".jpg";
36 | break;
37 | case 3:
38 | $fileType = ".png";
39 | break;
40 | }
41 |
42 | $savePath = date('Y/m');
43 | $saveName = "_".date('His')."_".rand().$fileType;
44 |
45 | mkDirs(ROOT_PATH."assets/file/".$savePath);
46 |
47 |
48 | if($act == 'thum'){ $saveImage = ROOT_PATH."assets/file/".$savePath."/s".$saveName;}else{
49 | $saveImage = ROOT_PATH."assets/file/".$savePath."/b".$saveName;
50 | }
51 |
52 | if( @move_uploaded_file($_FILES['picture']['tmp_name'], $saveImage) )
53 | {
54 | if($act == 'thum'){
55 | createImg($saveImage,$saveImage,$imgInfo,ImgW,ImgH,1);
56 | }else{
57 | if( $imgInfo[0] > $set['width'] || $imgInfo[1] > $set['width'] )
58 | {
59 | createImg($saveImage,$saveImage,$imgInfo,$set['width'],$set['width']);
60 |
61 | }
62 | //echo $saveImage;
63 | run_hook('upload',array('img'=>$saveImage));
64 | }
65 | $resImage = str_replace(ROOT_PATH,'',$saveImage);
66 | upmsg(0,'',$resImage);
67 | }
68 | else
69 | {
70 | upmsg(1,'上传失败');
71 | }
72 |
73 | } //end login else
74 | }
75 | }
76 |
77 | function upmsg($e,$m,$u=''){
78 | $arr['error'] = $e;
79 | $arr['message'] = $m;
80 | $arr['url']=$u;
81 | echo json_encode($arr);
82 | exit();
83 | }
--------------------------------------------------------------------------------
/app/db/de2c9b0e78a8.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/app/db/de2c9b0e78a8.db
--------------------------------------------------------------------------------
/assets/file/2020/02/s_171704_17358.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/file/2020/02/s_171704_17358.jpg
--------------------------------------------------------------------------------
/assets/js/admin.js:
--------------------------------------------------------------------------------
1 | var upic = '',pics='',pic_arr='',editor='';
2 | var apic = 0;
3 | function saveset(){
4 | var data = $("#formset")._serialize();
5 | $.post("./app/class/ajax.php?act=saveset",data , function(data) {
6 | errmsg(data.message)
7 | }, 'json');
8 |
9 | }
10 | function savewid(id){
11 | var el = $("#formwid"+id+" input[name='title']")
12 | var data = $("#formwid"+id).serialize();
13 | if(el.val()=='') {
14 | el.focus();
15 | errmsg("标题不能为空!","#formwid"+id+" ");
16 | return false
17 | };
18 | $.post("./app/class/ajax.php?act=savewid&id="+id,data , function(data) {
19 | errmsg(data.message,"#formwid"+id+" ")
20 | }, 'json');
21 |
22 | }
23 | function delwid(id){
24 | layer.open({
25 | content: '您确定要删除吗?'
26 | ,btn: ['确定', '取消']
27 | ,yes: function(index){
28 | $.get("./app/class/ajax.php?act=delwid&id="+id,function(data){if(data.result=='200'){ window.location.reload();}else{myalert(data.message);}},'json');
29 | }
30 | });
31 | }
32 |
33 | function fplug(){
34 | layer.open({
35 | type: 1
36 | ,content: '文件名:
'
37 | ,anim: 'up'
38 | ,style: 'width:300px;padding:10px; border:none;'
39 | });
40 | }
41 | function dplug(id){
42 | layer.open({
43 | content: '您确定要删除吗?'
44 | ,btn: ['确定', '取消']
45 | ,yes: function(index){
46 | $.get("./app/class/ajax.php?act=dplug&id="+id,function(data){if(data.result=='200'){ layer.close(index);$('#plug'+id).remove();}else{myalert(data.message);}},'json');
47 | }
48 | });
49 | }
50 | function kgplug(id){
51 | //var that = this;
52 | // console.log(that)
53 | var kgtxt = $('#kg'+id).text();
54 | var d = kgtxt=='开启'?1:0;
55 | $.get("./app/class/ajax.php?act=kgplug&id="+id+"&d="+d, function(data) {
56 | //layer.closeAll();
57 | $('#kg'+id).text(data.message);
58 | mymsg(data.message+'成功');
59 |
60 | }, 'json');
61 | }
62 | function aplug(){
63 | var f = $("#fplug").val();
64 | $.get("./app/class/ajax.php?act=aplug&d="+f, function(data) {
65 | if(data.result=='200'){
66 | window.location.reload();
67 | }else{
68 | myalert(data.message);
69 | }
70 | }, 'json');
71 | }
72 | function splug(id){
73 | var arg = $("#eplug"+id).serialize();
74 | $.post("./app/class/ajax.php?act=splug&id="+id, arg , function(data) {
75 | layer.closeAll();
76 | mymsg(data.message);
77 | }, 'json');
78 | }
79 | function eplug(id){
80 | $.get("./app/class/ajax.php?act=eplug&id="+id,function(data){
81 | layer.open({
82 | type: 1
83 | ,content: data.message
84 | ,anim: 'up'
85 | ,style: 'width:300px;padding:10px; border:none;'
86 | });
87 | },'json');
88 |
89 | }
90 |
91 | function upCache(){
92 | $.get("./app/class/ajax.php?act=upcache",function(data){mymsg(data.message);},'json');
93 | }
94 |
95 | function savelog() {
96 | var data = $("#post").serializeArray();
97 | var pic = upic,
98 | pics = pic_arr.join(','),
99 | log = editor.$txt.html();
100 | log = log.replace(/[
]*<\/p>/g,''),
101 | hide = $('#hide').prop("checked")?1:0,
102 | lock = $('#lock').prop("checked")?1:0;
103 | data.push({name: 'pic', value: upic},{name: 'pics', value:pics},{name:'content', value: log},{name:'hide', value: hide},{name:'lock', value: lock});
104 | if(log =="" && pic =="" ){
105 | errmsg("写点什么吧!");
106 | $("#log").focus();
107 | return false;
108 | }
109 | layer.open({
110 | type: 2,
111 | shadeClose: false,
112 | content: '保存中...'
113 | });
114 | //$("#addpost").attr("disabled",true);
115 | $.post("./app/class/ajax.php?act=savelog", $.param(data), function(data) {
116 |
117 | if (data.result == '200') {
118 | window.location.href = 'index.php?act=pl&id='+data.id;
119 | }else{
120 | errmsg(data.message);
121 | layer.closeAll();
122 | }
123 | }, 'json');
124 | }
125 |
126 | function dellog(id,v){
127 | layer.open({
128 | content: '您确定要删除吗?'
129 | ,btn: ['确定', '取消']
130 | ,yes: function(index){
131 | $.get("./app/class/ajax.php?act=dellog&id="+id,function(data){if(data.result=='200'){ layer.close(index);if(v=='1'){location.href="./";}else{$("#log-"+id).fadeOut();} }else{myalert(data.message);}},'json');
132 | }
133 | });
134 | }
135 | function delpl(id,pid){
136 | layer.open({
137 | content: '您确定要删除吗?'
138 | ,btn: ['确定', '取消']
139 | ,yes: function(index){
140 | $.get("./app/class/ajax.php?act=delpl&id="+id+"&cid="+pid,function(data){if(data.result=='200'){layer.close(index);$("#Com-"+id).fadeOut();}else{myalert(data.message);}},'json');
141 | }
142 | });
143 | }
144 | function shpl(id){
145 | $.get("./app/class/ajax.php?act=shpl&id="+id,function(data){if(data.result=='200'){$("#sh-"+id).fadeOut();}else{myalert(data.message);}},'json');
146 | }
147 | function zdlog(id){
148 | var zdobj=$("#zd-"+id);
149 | var xval=0;
150 | if(zdobj.text()=='置顶'){xval=1};
151 | $.get("./app/class/ajax.php?act=zdlog&id="+id+"&d="+xval,function(data){if(data.result=='200'){zdobj.text(data.message);}else{myalert(data.message);}},'json');
152 | }
153 |
154 | function showImg(input) {
155 | var fd = new FormData();
156 | fd.append("picture",input.files[0]);
157 | $.ajax({
158 | url: 'app/class/upload.php?act=thum',
159 | type: 'post',
160 | dataType:'json',
161 | processData: false,
162 | contentType: false,
163 | data: fd,
164 | success: function (ret) {
165 | delpic($("#pic"));
166 | upic = ret.url;
167 | apic++;
168 | console.log(upic);
169 | $("#pic").attr("src",upic).show();
170 | $('#delpic').show();
171 | }
172 | })
173 | }
174 |
175 | function delpic(e){
176 | var p = e.attr('src');
177 | $.post("app/class/ajax.php?act=delpic", {pic: p}, function(ret){}, 'json');
178 | }
179 |
180 | function getUrlParam(name)
181 | {
182 | var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
183 | var r = window.location.search.substr(1).match(reg);
184 | if (r!=null) return unescape(r[2]); return null;
185 | }
186 |
187 | function tab(act){
188 | var num = sessionStorage.getItem("tabLiNum")||0;
189 | if(act=='wid') num = 0;
190 | $('.tabtitle li').eq(num).addClass('on');
191 | $('.tabcontent').eq(num).show().siblings('.tabcontent').hide();
192 | $('.tabtitle li').click(function () {
193 | var index = $(this).index();
194 | $(this).addClass('on').siblings('li').removeClass('on');
195 | $('.tabcontent').eq(index).show().siblings('.tabcontent').hide();
196 | if(act=='set') sessionStorage.setItem("tabLiNum",index);
197 | })
198 | }
199 |
200 | $(document).ready(function() {
201 | var act = getUrlParam('act');
202 | if (act == 'set' || act == 'wid') {
203 | tab(act);
204 | } else if (act == 'add' || act == 'edit') {
205 | if (act == 'edit') laydate.render({
206 | elem: '#atime',
207 | type: 'datetime'
208 | });
209 |
210 | pics = $('#post').data("pics");
211 | pic_arr = pics == '' ? [] : pics.split(',');
212 | upic = $('#post').data("pic");
213 | if (upic != '') {
214 | $("#pic").attr("src", upic).show();$('#delpic').show()
215 | }
216 | editor = new wangEditor('log');
217 | editor.config.menuFixed = false;
218 | editor.config.menus = ['source', 'bold', 'strikethrough', 'eraser', 'forecolor', 'quote', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'img', 'video', 'insertcode', ];
219 | editor.config.uploadImgUrl = 'app/class/upload.php';
220 | editor.config.uploadImgFileName = 'picture';
221 | editor.config.uploadImgFns.onload = function(resultText, xhr) {
222 | var obj = JSON.parse(resultText);
223 | if (obj.error == 0) {
224 | pic_arr.push(obj.url);
225 | if (upic == '' && apic == 0) {
226 | $.get("./app/class/ajax.php?act=thum&d=" + obj.url,
227 | function(data) {
228 | if (data.result == '200') {
229 | upic = data.message;
230 | $("#pic").attr("src", upic).show();
231 | $('#delpic').show();
232 | } else {
233 | myalert(data.message);
234 | }
235 | },
236 | 'json');
237 | }
238 | apic++;
239 | editor.command(null, 'insertHtml', '
');
240 | } else {
241 | myalert(obj.message);
242 | }
243 | };
244 | editor.create();
245 | $('#delpic').on('click',
246 | function() {
247 | delpic($("#pic"));
248 | upic = '';
249 | $("#pic").attr("src", '').hide();
250 | $('#delpic').hide()
251 | })
252 | }
253 | })
--------------------------------------------------------------------------------
/assets/js/ajax.js:
--------------------------------------------------------------------------------
1 | $.fn._serialize = function () {
2 | var da = this.serializeArray();
3 | var $elrc = $('input[type=checkbox]', this);
4 | $.each($elrc, function() {
5 | if ($("input[name='" + this.name + "']:checked").length == 0) {
6 | da.push({name: this.name, value:0});
7 | }
8 | });
9 | return jQuery.param(da);
10 | }
11 |
12 | function ckradd(e,f){
13 | var val=$("#"+e+"pcontent").val();
14 | var url=$("#"+e+"purl").val();
15 | var mail=$("#"+e+"pmail").val();
16 | var url_reg = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
17 | var mail_reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
18 | if(val.length<5 || val.length>200){
19 | errmsg("评论内容必须在5-200字之间!");
20 | $("#"+e+"pcontent").focus();
21 | return false;
22 | }
23 | if(mail.length>0){
24 | if(!mail_reg.test(mail)){
25 | errmsg("请正确输入邮箱!");
26 | return false;
27 | }
28 | }
29 | if(url.length>0){
30 | if(!url_reg.test(url)){
31 | errmsg("请正确输入网址!");
32 | return false;
33 | }
34 | }
35 | var code=$("#pcode").val();
36 | if (f=='1'&&code==''){
37 | errmsg("请正确输入右侧答案!");$("#pcode").focus();return false;
38 | }
39 | return true
40 | }
41 |
42 | function errmsg(s,el){
43 | if(!arguments[1]) el = "";
44 | $(el+'#errmsg').show().text(s).fadeOut(2000);
45 | }
46 | function myalert(str){
47 | layer.open({
48 | content: str
49 | ,btn: '确定'
50 | });
51 | }
52 | function mymsg(str){
53 | layer.open({
54 | content: str
55 | ,skin: 'msg'
56 | ,time: 2 //2秒后自动关闭
57 | });
58 | }
59 |
60 | function StopButton(id,s){
61 | $("#"+id).attr("disabled",true);
62 | $("#"+id).text("提交("+s+")");
63 | if(--s>0){
64 | setTimeout("StopButton('"+id+"',"+s+")",1000);
65 | }
66 | if(s<=0){
67 | $("#"+id).text(' 提 交 ');
68 | $("#"+id).removeAttr("disabled");
69 | }
70 | }
71 | function addpl(id,f){
72 | var ck = ckradd('',f);
73 | if (ck ===false)
74 | {
75 | return ck;
76 | }
77 | //var npname = $("#pname").val(),npurl = $("#purl").val(),nplog = $("#plog").val(),pmail = $("#pmail").val(),nscode=$("#pcode").val();
78 | var pldata = $("#formpl").serialize();
79 | //console.log(pldata);
80 | StopButton('add',9);
81 | $.post("./app/class/ajax.php?act=addpl&id="+id, pldata , function(data) {
82 | if(data.result == '200')
83 | {
84 | pldata += "&r="+encodeURIComponent(window.location.href);
85 | $.post("./app/class/ajax.php?act=pltz&d=addpl&id="+id,pldata);
86 | $(".comment_list").append(data.message);$("#pcontent").val('');$("#pcode").val('');reloadcode();
87 | errmsg('');
88 | }else{
89 | errmsg(data.message);$("#pcode").val('');reloadcode();$("#pcode").focus();
90 | }
91 | },'json');
92 | }
93 | function repl(pid,cid,pmail){
94 | var ore = $('#Ctext-'+pid).find('.re span').text();
95 | var x = 1;
96 | if (ore == ""){x=0;}
97 | var rebox = '
';
98 | $('.rebox').remove();
99 | $('#Ctext-'+pid).append(rebox);
100 | }
101 | function capl(){
102 | $('.rebox').remove();
103 | }
104 | function plsave(id,pid,x,pmail){
105 | var rlog = $("#rlog").val();
106 | if(rlog==''){
107 | $("#rlog").focus();
108 | return false;
109 | }
110 | $.post("./app/class/ajax.php?act=plsave&id=" + pid + "&cid=" + id, {
111 | rcontent: rlog
112 | }, function(data) {
113 | capl();
114 | if (data.result == '200') {
115 | if(x==1){
116 | $('#Ctext-'+pid).find('.re span').text(rlog);
117 | }else{
118 | $('#Ctext-'+pid).append(' 回复:'+rlog+'
');
119 | }
120 | $.post("./app/class/ajax.php?act=pltz&d=plsave&id="+pid,{rcontent:rlog,pmail:pmail,r:window.location.href});
121 | } else {
122 | myalert(data.message);
123 | }
124 | }, 'json');}
125 |
126 | function ckpass(id){
127 | var ps= $("#password").val();
128 | if (ps!=''){
129 | $.post("./app/class/ajax.php?act=ckpass&id="+id, {ps:ps}, function(data) {if(data.result=='200'){ $("#article .text").html(data.message)}else{myalert(data.message);}},'json');}else{
130 | $("#password").focus();
131 | }
132 | }
133 |
134 | function DotRoll(elm) {
135 | $("body,html").animate({ scrollTop: $(elm).offset().top }, 500);
136 | }
137 |
138 | function reloadcode(){$('#codeimg').attr('src','./app/class/codes.php?t='+Math.random());}
139 |
140 | $(document).ready(function () {
141 |
142 | $('.textPost').on("click",function(e){
143 | window.location.href = $(this).data('url');
144 | });
145 |
146 | $('#menu_toggle').on("click",function(e){
147 | e.preventDefault();
148 | $('#menu').toggleClass('close');
149 | $('.collapse').slideToggle();
150 | });
151 |
152 | $('#pcontent').on("focus",function(e){
153 | $('#pl_other').fadeIn();
154 | });
155 |
156 | /*$(window).resize(function(){
157 | var w = $(window).width();
158 | if(w>650) {$('#nav').show();}else{
159 | $('#menu').removeClass('close');
160 | $('.collapse').hide();
161 | }
162 | });
163 | */
164 | var url = String(window.location);
165 | var last = url.charAt(url.length - 1);
166 | $("#nav li a").each(function(e){
167 | if(last=='/'){
168 | $(this).addClass("on");
169 | return false;
170 | }
171 | else if(url==$(this)[0].href){
172 | $(this).addClass("on");
173 | return false;
174 | }
175 |
176 | });
177 | })
--------------------------------------------------------------------------------
/assets/js/highlightjs/dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | white-space: pre-wrap;
10 | word-wrap: break-word;
11 | padding: 0.5em;
12 | background: #444;
13 | -webkit-text-size-adjust: none;
14 | }
15 |
16 | .hljs-keyword,
17 | .hljs-literal,
18 | .hljs-change,
19 | .hljs-winutils,
20 | .hljs-flow,
21 | .nginx .hljs-title,
22 | .tex .hljs-special {
23 | color: white;
24 | }
25 |
26 | .hljs,
27 | .hljs-subst {
28 | color: #ddd;
29 | }
30 |
31 | .hljs-string,
32 | .hljs-title,
33 | .hljs-type,
34 | .ini .hljs-title,
35 | .hljs-tag .hljs-value,
36 | .css .hljs-rule .hljs-value,
37 | .hljs-preprocessor,
38 | .hljs-pragma,
39 | .ruby .hljs-symbol,
40 | .ruby .hljs-symbol .hljs-string,
41 | .ruby .hljs-class .hljs-parent,
42 | .hljs-built_in,
43 | .django .hljs-template_tag,
44 | .django .hljs-variable,
45 | .smalltalk .hljs-class,
46 | .ruby .hljs-string,
47 | .django .hljs-filter .hljs-argument,
48 | .smalltalk .hljs-localvars,
49 | .smalltalk .hljs-array,
50 | .hljs-attr_selector,
51 | .hljs-pseudo,
52 | .hljs-addition,
53 | .hljs-stream,
54 | .hljs-envvar,
55 | .apache .hljs-tag,
56 | .apache .hljs-cbracket,
57 | .tex .hljs-command,
58 | .hljs-prompt,
59 | .coffeescript .hljs-attribute,
60 | .hljs-name {
61 | color: #d88;
62 | }
63 |
64 | .hljs-comment,
65 | .hljs-annotation,
66 | .hljs-decorator,
67 | .hljs-pi,
68 | .hljs-doctype,
69 | .hljs-deletion,
70 | .hljs-shebang,
71 | .apache .hljs-sqbracket,
72 | .tex .hljs-formula {
73 | color: #777;
74 | }
75 |
76 | .hljs-keyword,
77 | .hljs-literal,
78 | .hljs-title,
79 | .css .hljs-id,
80 | .hljs-doctag,
81 | .hljs-type,
82 | .vbscript .hljs-built_in,
83 | .rsl .hljs-built_in,
84 | .smalltalk .hljs-class,
85 | .diff .hljs-header,
86 | .hljs-chunk,
87 | .hljs-winutils,
88 | .bash .hljs-variable,
89 | .apache .hljs-tag,
90 | .tex .hljs-special,
91 | .hljs-request,
92 | .hljs-status {
93 | font-weight: bold;
94 | }
95 |
96 | .coffeescript .javascript,
97 | .javascript .xml,
98 | .tex .hljs-formula,
99 | .xml .javascript,
100 | .xml .vbscript,
101 | .xml .css,
102 | .xml .hljs-cdata {
103 | opacity: 0.5;
104 | }
105 |
--------------------------------------------------------------------------------
/assets/js/laydate/laydate.js:
--------------------------------------------------------------------------------
1 | /*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */
2 | ;!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3)},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
"+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e=t&&e=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=[""+r.time[e]+"
"];w.each(new Array(t),function(t){i.push("- "+w.digit(t,2)+"
")}),a.innerHTML=i.join("")+"
",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s
2 |
3 |
6 |
46 |
--------------------------------------------------------------------------------
/assets/js/laydate/theme/default/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/laydate/theme/default/font/iconfont.ttf
--------------------------------------------------------------------------------
/assets/js/laydate/theme/default/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/laydate/theme/default/font/iconfont.woff
--------------------------------------------------------------------------------
/assets/js/laydate/theme/default/laydate.css:
--------------------------------------------------------------------------------
1 | /*! laydate-v5.0.9 日期与时间组件 MIT License http://www.layui.com/laydate/ By 贤心 */
2 | .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}@font-face{font-family:laydate-icon;src:url(font/iconfont.eot);src:url(font/iconfont.eot#iefix) format('embedded-opentype'),url(font/iconfont.svg#iconfont) format('svg'),url(font/iconfont.woff) format('woff'),url(font/iconfont.ttf) format('truetype')}.laydate-icon{font-family:laydate-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
--------------------------------------------------------------------------------
/assets/js/layer.js:
--------------------------------------------------------------------------------
1 | /*! layer mobile-v2.0 弹层组件移动版 License LGPL http://layer.layui.com/mobile By 贤心 */
2 | ;!function(a){"use strict";var b=document,c="querySelectorAll",d="getElementsByClassName",e=function(a){return b[c](a)},f={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},g={extend:function(a){var b=JSON.parse(JSON.stringify(f));for(var c in a)b[c]=a[c];return b},timer:{},end:{}};g.touch=function(a,b){a.addEventListener("click",function(a){b.call(this,a)},!1)};var h=0,i=["layui-m-layer"],j=function(a){var b=this;b.config=g.extend(a),b.view()};j.prototype.view=function(){var a=this,c=a.config,f=b.createElement("div");a.id=f.id=i[0]+h,f.setAttribute("class",i[0]+" "+i[0]+(c.type||0)),f.setAttribute("index",h);var g=function(){var a="object"==typeof c.title;return c.title?''+(a?c.title[0]:c.title)+"
":""}(),j=function(){"string"==typeof c.btn&&(c.btn=[c.btn]);var a,b=(c.btn||[]).length;return 0!==b&&c.btn?(a=''+c.btn[0]+"",2===b&&(a=''+c.btn[1]+""+a),''+a+"
"):""}();if(c.fixed||(c.top=c.hasOwnProperty("top")?c.top:100,c.style=c.style||"",c.style+=" top:"+(b.body.scrollTop+c.top)+"px"),2===c.type&&(c.content=''+(c.content||"")+"
"),c.skin&&(c.anim="up"),"msg"===c.skin&&(c.shade=!1),f.innerHTML=(c.shade?"':"")+'",!c.type||2===c.type){var k=b[d](i[0]+c.type),l=k.length;l>=1&&layer.close(k[0].getAttribute("index"))}document.body.appendChild(f);var m=a.elem=e("#"+a.id)[0];c.success&&c.success(m),a.index=h++,a.action(c,m)},j.prototype.action=function(a,b){var c=this;a.time&&(g.timer[c.index]=setTimeout(function(){layer.close(c.index)},1e3*a.time));var e=function(){var b=this.getAttribute("type");0==b?(a.no&&a.no(),layer.close(c.index)):a.yes?a.yes(c.index):layer.close(c.index)};if(a.btn)for(var f=b[d]("layui-m-layerbtn")[0].children,h=f.length,i=0;h>i;i++)g.touch(f[i],e);if(a.shade&&a.shadeClose){var j=b[d]("layui-m-layershade")[0];g.touch(j,function(){layer.close(c.index,a.end)})}a.end&&(g.end[c.index]=a.end)},a.layer={v:"2.0",index:h,open:function(a){var b=new j(a||{});return b.index},close:function(a){var c=e("#"+i[0]+a)[0];c&&(c.innerHTML="",b.body.removeChild(c),clearTimeout(g.timer[a]),delete g.timer[a],"function"==typeof g.end[a]&&g.end[a](),delete g.end[a])},closeAll:function(){for(var a=b[d](i[0]),c=0,e=a.length;e>c;c++)layer.close(0|a[0].getAttribute("index"))}},"function"==typeof define?define(function(){return layer}):function(){var a=document.scripts,c=a[a.length-1],d=c.src,e=d.substring(0,d.lastIndexOf("/")+1);c.getAttribute("merge")||document.head.appendChild(function(){var a=b.createElement("link");return a.href=e+"need/layer.css?2.0",a.type="text/css",a.rel="styleSheet",a.id="layermcss",a}())}()}(window);
--------------------------------------------------------------------------------
/assets/js/need/layer.css:
--------------------------------------------------------------------------------
1 | .layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}.layui-m-layer0 .layui-m-layerchild{min-width:320px;max-width:640px;}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;/*bottom:-150px;*/background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}
--------------------------------------------------------------------------------
/assets/js/wangeditor/css/wangEditor.min.css:
--------------------------------------------------------------------------------
1 | .txt-toolbar a,.wangEditor-drop-list a,.wangEditor-drop-panel a,.wangEditor-menu-container a{text-decoration:none}.wangEditor-container{position:relative;background-color:#fff;border:1px solid #ccc;z-index:1;width:100%}.wangEditor-container img,.wangEditor-container textarea{border:none}.wangEditor-container a:focus,.wangEditor-container button:focus{outline:0}.wangEditor-container,.wangEditor-container *{margin:0;padding:0;box-sizing:border-box;line-height:1}.wangEditor-container .clearfix:after{content:'';display:table;clear:both}.wangEditor-container textarea:focus{outline:0}.wangEditor-container .height-tip{position:absolute;width:3px;background-color:#ccc;left:0;transition:top .2s}.wangEditor-container .txt-toolbar{position:absolute;background-color:#fff;padding:3px 5px;border-top:2px solid #666;box-shadow:1px 3px 3px #999;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9}.wangEditor-container .txt-toolbar .tip-triangle{display:block;position:absolute;width:0;height:0;border:5px solid;border-color:transparent transparent #666;top:-12px;left:50%;margin-left:-5px}.wangEditor-container .txt-toolbar a{color:#666;display:inline-block;margin:0 3px;padding:5px;text-decoration:none;border-radius:3px}.wangEditor-container .txt-toolbar a:hover{background-color:#f1f1f1}.wangEditor-container .img-drag-point{display:block;position:absolute;width:12px;height:12px;border-radius:50%;cursor:se-resize;background-color:#666;margin-left:-6px;margin-top:-6px;box-shadow:1px 1px 5px #999}.wangEditor-container .wangEditor-upload-progress{position:absolute;height:1px;background:#1e88e5;width:0;display:none;-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.wangEditor-fullscreen{position:fixed;top:0;bottom:0;left:0;right:0}.wangEditor-container .code-textarea{resize:none;width:100%;font-size:14px;line-height:1.5;font-family:Verdana;color:#333;padding:0 15px}.wangEditor-menu-container{width:100%;border-bottom:1px solid #f1f1f1;background-color:#fff}.wangEditor-menu-container .menu-item .active,.wangEditor-menu-container .menu-item:hover{background-color:#f1f1f1}.wangEditor-menu-container .menu-group{float:left;}.wangEditor-menu-container .menu-item{float:left;position:relative;text-align:center;width:35px}.wangEditor-menu-container .menu-item a{display:block;text-align:center;color:#666;width:100%;padding:8px 0;font-size:.9em}.wangEditor-menu-container .menu-item .selected{color:#1e88e5}.wangEditor-menu-container .menu-item .disable{opacity:.5;filter:alpha(opacity=50)}.wangEditor-menu-container .menu-tip{position:absolute;z-index:20;width:60px;text-align:center;background-color:#666;color:#fff;padding:7px 0;font-size:12px;top:100%;left:50%;margin-left:-30px;border-radius:2px;box-shadow:1px 1px 5px #999;display:none}.wangEditor-menu-container .menu-tip-40{width:40px;margin-left:-20px}.wangEditor-menu-container .menu-tip-50{width:50px;margin-left:-25px}.wangEditor-menu-shadow{border-bottom:1px\9 solid\9 #f1f1f1\9;box-shadow:0 1px 3px #999}.wangEditor-container .wangEditor-txt{width:100%;text-align:left;padding:0 8px 8px;margin-top:5px;overflow-y:auto}.wangEditor-container .wangEditor-txt h1,.wangEditor-container .wangEditor-txt h2,.wangEditor-container .wangEditor-txt h3,.wangEditor-container .wangEditor-txt h4,.wangEditor-container .wangEditor-txt h5,.wangEditor-container .wangEditor-txt p{line-height:1.8}.wangEditor-container .wangEditor-txt h1 *,.wangEditor-container .wangEditor-txt h2 *,.wangEditor-container .wangEditor-txt h3 *,.wangEditor-container .wangEditor-txt h4 *,.wangEditor-container .wangEditor-txt h5 *,.wangEditor-container .wangEditor-txt p *{line-height:1.8}.wangEditor-container .wangEditor-txt ol,.wangEditor-container .wangEditor-txt ul{padding-left:20px}.wangEditor-container .wangEditor-txt img{cursor:pointer}.wangEditor-container .wangEditor-txt img.clicked,.wangEditor-container .wangEditor-txt table.clicked{box-shadow:1px 1px 10px #999}.wangEditor-container .wangEditor-txt pre code{line-height:1.5}.wangEditor-container .wangEditor-txt:focus{outline:0}.wangEditor-container .wangEditor-txt blockquote{display:block;border-left:8px solid #d0e5f2;padding:5px 10px;margin:10px 0;line-height:1.4;font-size:100%;background-color:#f1f1f1}.wangEditor-container .wangEditor-txt table{border:none;border-collapse:collapse}.wangEditor-container .wangEditor-txt table td,.wangEditor-container .wangEditor-txt table th{border:1px solid #999;padding:3px 5px;min-width:50px;height:20px}.wangEditor-container .wangEditor-txt pre{border:1px solid #ccc;background-color:#f8f8f8;padding:10px;margin:5px 0;font-size:.8em;border-radius:3px}.txt-toolbar,.wangEditor-drop-list,.wangEditor-drop-panel{z-index:10;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9;box-shadow:1px 3px 3px #999;position:absolute}.wangEditor-drop-list{display:none;background-color:#fff;overflow:hidden;transition:height .7s;border-top:1px solid #f1f1f1}.wangEditor-drop-list a{display:block;color:#666;padding:3px 5px}.wangEditor-drop-list a:hover{background-color:#f1f1f1}.txt-toolbar,.wangEditor-drop-panel{display:none;padding:10px;font-size:14px;background-color:#fff;border-top:2px solid #666}.txt-toolbar .tip-triangle,.wangEditor-drop-panel .tip-triangle{display:block;position:absolute;width:0;height:0;border:5px solid;border-color:transparent transparent #666;top:-12px;left:50%;margin-left:-5px}.txt-toolbar input[type=text],.wangEditor-drop-panel input[type=text]{border:none;border-bottom:1px solid #ccc;font-size:14px;height:20px;color:#333;padding:3px 0}.txt-toolbar input[type=text]:focus,.wangEditor-drop-panel input[type=text]:focus{outline:0;border-bottom:2px solid #1e88e5}.txt-toolbar input[type=text].block,.wangEditor-drop-panel input[type=text].block{display:block;width:100%}.txt-toolbar textarea,.wangEditor-drop-panel textarea{border:1px solid #ccc}.txt-toolbar textarea:focus,.wangEditor-drop-panel textarea:focus{outline:0;border-color:#1e88e5}.txt-toolbar button,.wangEditor-drop-panel button{font-size:14px;color:#1e88e5;border:none;padding:10px;background-color:#fff;cursor:pointer;border-radius:3px}.txt-toolbar button:hover,.wangEditor-drop-panel button:hover{background-color:#f1f1f1}.txt-toolbar button:focus,.wangEditor-drop-panel button:focus{outline:0}.txt-toolbar button.right,.wangEditor-drop-panel button.right{float:right;margin-left:10px}.txt-toolbar button.gray,.wangEditor-drop-panel button.gray{color:#999}.txt-toolbar button.link,.wangEditor-drop-panel button.link{padding:5px 10px}.txt-toolbar button.link:hover,.wangEditor-drop-panel button.link:hover{background-color:#fff;text-decoration:underline}.txt-toolbar .color-item:hover,.txt-toolbar .list-menu-item:hover,.wangEditor-drop-panel .color-item:hover,.wangEditor-drop-panel .list-menu-item:hover{background-color:#f1f1f1}.txt-toolbar .color-item,.wangEditor-drop-panel .color-item{display:block;float:left;width:25px;height:25px;text-align:center;padding:2px;border-radius:2px;text-decoration:underline}.txt-toolbar .list-menu-item,.wangEditor-drop-panel .list-menu-item{display:block;float:left;color:#333;padding:5px;border-radius:2px}.txt-toolbar table.choose-table,.wangEditor-drop-panel table.choose-table{border:none;border-collapse:collapse}.txt-toolbar table.choose-table td,.wangEditor-drop-panel table.choose-table td{border:1px solid #ccc;width:16px;height:12px}.txt-toolbar table.choose-table td.active,.wangEditor-drop-panel table.choose-table td.active{background-color:#ccc;opacity:.5;filter:alpha(opacity=50)}.txt-toolbar .panel-tab .tab-container,.wangEditor-drop-panel .panel-tab .tab-container{margin-bottom:5px}.txt-toolbar .panel-tab .tab-container a,.wangEditor-drop-panel .panel-tab .tab-container a{display:inline-block;color:#999;text-align:center;margin:0 5px;padding:5px}.txt-toolbar .panel-tab .tab-container a.selected,.wangEditor-drop-panel .panel-tab .tab-container a.selected{color:#1e88e5;border-bottom:2px solid #1e88e5}.txt-toolbar .panel-tab .content-container .content,.wangEditor-drop-panel .panel-tab .content-container .content{display:none}.txt-toolbar .panel-tab .content-container .content a,.wangEditor-drop-panel .panel-tab .content-container .content a{display:inline-block;margin:2px;padding:2px;border-radius:2px}.txt-toolbar .panel-tab .content-container .content a:hover,.wangEditor-drop-panel .panel-tab .content-container .content a:hover{background-color:#f1f1f1}.txt-toolbar .panel-tab .content-container .selected,.wangEditor-drop-panel .panel-tab .content-container .selected{display:block}.txt-toolbar .panel-tab .emotion-content-container,.wangEditor-drop-panel .panel-tab .emotion-content-container{height:200px;overflow-y:auto}.txt-toolbar .upload-icon-container,.wangEditor-drop-panel .upload-icon-container{color:#ccc;text-align:center;margin:20px 20px 15px!important;padding:5px!important;font-size:65px;cursor:pointer;border:2px dotted #f1f1f1;display:block!important}.txt-toolbar .upload-icon-container:hover,.wangEditor-drop-panel .upload-icon-container:hover{color:#666;border-color:#ccc}.wangEditor-modal{position:absolute;top:50%;left:50%;background-color:#fff;border-top:1px solid #f1f1f1;box-shadow:1px 3px 3px #999;border-top:1px\9 solid\9 #ccc\9;border-left:1px\9 solid\9 #ccc\9;border-bottom:1px\9 solid\9 #999\9;border-right:1px\9 solid\9 #999\9}.wangEditor-modal .wangEditor-modal-close{position:absolute;top:0;right:0;margin-top:-25px;margin-right:-25px;font-size:1.5em;color:#666;cursor:pointer}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?-qdfu1s);src:url(../fonts/icomoon.eot?#iefix-qdfu1s) format('embedded-opentype'),url(../fonts/icomoon.ttf?-qdfu1s) format('truetype'),url(../fonts/icomoon.woff?-qdfu1s) format('woff'),url(../fonts/icomoon.svg?-qdfu1s#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" wangeditor-menu-img-"],[class^=wangeditor-menu-img-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wangeditor-menu-img-link:before{content:"\e800"}.wangeditor-menu-img-unlink:before{content:"\e801"}.wangeditor-menu-img-code:before{content:"\e802"}.wangeditor-menu-img-cancel:before{content:"\e803"}.wangeditor-menu-img-terminal:before{content:"\e804"}.wangeditor-menu-img-angle-down:before{content:"\e805"}.wangeditor-menu-img-font:before{content:"\e806"}.wangeditor-menu-img-bold:before{content:"\e807"}.wangeditor-menu-img-italic:before{content:"\e808"}.wangeditor-menu-img-header:before{content:"\e809"}.wangeditor-menu-img-align-left:before{content:"\e80a"}.wangeditor-menu-img-align-center:before{content:"\e80b"}.wangeditor-menu-img-align-right:before{content:"\e80c"}.wangeditor-menu-img-list-bullet:before{content:"\e80d"}.wangeditor-menu-img-indent-left:before{content:"\e80e"}.wangeditor-menu-img-indent-right:before{content:"\e80f"}.wangeditor-menu-img-list-numbered:before{content:"\e810"}.wangeditor-menu-img-underline:before{content:"\e811"}.wangeditor-menu-img-table:before{content:"\e812"}.wangeditor-menu-img-eraser:before{content:"\e813"}.wangeditor-menu-img-text-height:before{content:"\e814"}.wangeditor-menu-img-brush:before{content:"\e815"}.wangeditor-menu-img-pencil:before{content:"\e816"}.wangeditor-menu-img-minus:before{content:"\e817"}.wangeditor-menu-img-picture:before{content:"\e818"}.wangeditor-menu-img-file-image:before{content:"\e819"}.wangeditor-menu-img-cw:before{content:"\e81a"}.wangeditor-menu-img-ccw:before{content:"\e81b"}.wangeditor-menu-img-music:before{content:"\e911"}.wangeditor-menu-img-play:before{content:"\e912"}.wangeditor-menu-img-location:before{content:"\e947"}.wangeditor-menu-img-happy:before{content:"\e9df"}.wangeditor-menu-img-sigma:before{content:"\ea67"}.wangeditor-menu-img-enlarge2:before{content:"\e98b"}.wangeditor-menu-img-shrink2:before{content:"\e98c"}.wangeditor-menu-img-newspaper:before{content:"\e904"}.wangeditor-menu-img-camera:before{content:"\e90f"}.wangeditor-menu-img-video-camera:before{content:"\e914"}.wangeditor-menu-img-file-zip:before{content:"\e92b"}.wangeditor-menu-img-stack:before{content:"\e92e"}.wangeditor-menu-img-credit-card:before{content:"\e93f"}.wangeditor-menu-img-address-book:before{content:"\e944"}.wangeditor-menu-img-envelop:before{content:"\e945"}.wangeditor-menu-img-drawer:before{content:"\e95c"}.wangeditor-menu-img-download:before{content:"\e960"}.wangeditor-menu-img-upload:before{content:"\e961"}.wangeditor-menu-img-lock:before{content:"\e98f"}.wangeditor-menu-img-unlocked:before{content:"\e990"}.wangeditor-menu-img-wrench:before{content:"\e991"}.wangeditor-menu-img-eye:before{content:"\e9ce"}.wangeditor-menu-img-eye-blocked:before{content:"\e9d1"}.wangeditor-menu-img-command:before{content:"\ea4e"}.wangeditor-menu-img-font2:before{content:"\ea5c"}.wangeditor-menu-img-libreoffice:before{content:"\eade"}.wangeditor-menu-img-quotes-left:before{content:"\e977"}.wangeditor-menu-img-strikethrough:before{content:"\ea65"}.wangeditor-menu-img-desktop:before{content:"\f108"}.wangeditor-menu-img-tablet:before{content:"\f10a"}.wangeditor-menu-img-search-plus:before{content:"\f00e"}.wangeditor-menu-img-search-minus:before{content:"\f010"}.wangeditor-menu-img-trash-o:before{content:"\f014"}.wangeditor-menu-img-align-justify:before{content:"\f039"}.wangeditor-menu-img-arrows-v:before{content:"\f07d"}.wangeditor-menu-img-sigma2:before{content:"\ea68"}.wangeditor-menu-img-omega:before{content:"\e900"}.wangeditor-menu-img-cancel-circle:before{content:"\e901"}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}
--------------------------------------------------------------------------------
/assets/js/wangeditor/fonts/icomoon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.eot
--------------------------------------------------------------------------------
/assets/js/wangeditor/fonts/icomoon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/js/wangeditor/fonts/icomoon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.ttf
--------------------------------------------------------------------------------
/assets/js/wangeditor/fonts/icomoon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/allures/wmqbk-Php/f35bfa8767653545133db57bd3c9985f2518d3d0/assets/js/wangeditor/fonts/icomoon.woff
--------------------------------------------------------------------------------
/assets/qblog/archive.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
style="background:#fff;padding:15px;box-sizing:border-box;">
5 |
6 | ';
9 | foreach($archives as $v){
10 | $year_tmp = date('Y',strtotime($v['atime']));
11 | $mon_tmp = date('m',strtotime($v['atime']));
12 | $y=$year; $m=$mon;
13 | if ($mon != $mon_tmp && $mon > 0) $output .= '';
14 | if ($year != $year_tmp && $year > 0) $output .= '';
15 | if ($year != $year_tmp) {
16 | $year = $year_tmp;
17 | $output .= '
'. $year .' 年
';
18 | }
19 | if ($mon != $mon_tmp) {
20 | $mon = $mon_tmp;
21 | $output .= '- '. $mon .' 月
';
22 | }
23 | $title = $v['title'] == '' ? mb_substr(strip_tags($v['sum']) , 0, 25, 'utf-8') : $v['title'];
24 | $output .= '- '.date('d日: ',strtotime($v['atime'])).''. $title .' ('. $v['num'].' 评论)
';
25 | }
26 | $output .= '
';
27 | echo $output;
28 |
29 | ?>
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |