Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
纵之格
ShopXO
提交
17438dbd
ShopXO
项目概览
纵之格
/
ShopXO
通知
394
Star
16
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
17438dbd
编写于
7月 22, 2021
作者:
D
Devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
细节优化
上级
46159284
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
39 addition
and
564 deletion
+39
-564
app/admin/route/.gitignore
app/admin/route/.gitignore
+1
-0
app/common.php
app/common.php
+3
-3
app/route/route.config
app/route/route.config
+0
-0
app/service/ConfigService.php
app/service/ConfigService.php
+32
-25
extend/base/Excel.php
extend/base/Excel.php
+1
-1
extend/base/Qrcode.php
extend/base/Qrcode.php
+2
-0
tpl/think_exception.tpl
tpl/think_exception.tpl
+0
-535
未找到文件。
app/admin/route/.gitignore
0 → 100644
浏览文件 @
17438dbd
route.php
\ No newline at end of file
app/common.php
浏览文件 @
17438dbd
...
...
@@ -1486,13 +1486,13 @@ function MyUrl($path, $params = [])
// 避免非当前目录生成url索引错误
if
(
$script_name
!=
'index.php'
&&
$is_index
)
{
// 替换索引为 index.php
if
(
$url_model
==
0
)
{
// 替换索引为 index.php
$url
=
str_replace
(
$script_name
,
'index.php'
,
$url
);
}
else
{
//
url模式!=兼容模式 则
去除入口和?s=
$url
=
str_replace
(
$script_name
.
'?s='
,
''
,
$url
);
// 去除入口和?s=
$url
=
str_replace
(
[
$script_name
.
'?s='
,
'/'
.
$script_name
]
,
''
,
$url
);
}
}
// 替换索引为 api.php
...
...
app/
index/
route/route.config
→
app/route/route.config
浏览文件 @
17438dbd
文件已移动
app/service/ConfigService.php
浏览文件 @
17438dbd
...
...
@@ -297,41 +297,48 @@ class ConfigService
{
if
(
isset
(
$params
[
'home_seo_url_model'
]))
{
$route_file
=
APP_PATH
.
'
index'
.
DS
.
'
route'
.
DS
.
'route.config'
;
$route_
file_php
=
APP_PATH
.
'index'
.
DS
.
'route'
.
DS
.
'route.php'
;
$route_file
=
APP_PATH
.
'route'
.
DS
.
'route.config'
;
$route_
arr
=
[
'admin'
,
'index'
]
;
//
文件目录
if
(
!
is_writable
(
APP_PATH
.
'index'
.
DS
.
'route'
)
)
//
后端+前端都生成对应的路由定义规则、为了后台进入前端url保持一致
foreach
(
$route_arr
as
$module
)
{
return
DataReturn
(
'路由目录没有操作权限'
.
'[./route]'
,
-
11
);
}
// 路配置文件权限
if
(
file_exists
(
$route_file_php
)
&&
!
is_writable
(
$route_file_php
))
{
return
DataReturn
(
'路由配置文件没有操作权限'
.
'[./route/route.php]'
,
-
11
);
}
// 生成路由文件
$route_file_php
=
APP_PATH
.
$module
.
DS
.
'route'
.
DS
.
'route.php'
;
// pathinfo+短地址模式
if
(
$params
[
'home_seo_url_model'
]
==
2
)
{
if
(
!
file_exists
(
$route_file
))
// 文件目录
if
(
!
is_writable
(
APP_PATH
.
$module
.
DS
.
'route'
))
{
return
DataReturn
(
'路由
规则文件不存在'
.
'[./route/route.config]'
,
-
14
);
return
DataReturn
(
'路由
目录没有操作权限'
.
'[./app/'
.
$module
.
'/route]'
,
-
11
);
}
//
开始生成规则文件
if
(
file_
put_contents
(
$route_file_php
,
file_get_contents
(
$route_file
))
===
false
)
//
路配置文件权限
if
(
file_
exists
(
$route_file_php
)
&&
!
is_writable
(
$route_file_php
)
)
{
return
DataReturn
(
'路由
规则文件生成失败'
,
-
10
);
return
DataReturn
(
'路由
配置文件没有操作权限'
.
'[./app/'
.
$module
.
'/route/route.php]'
,
-
11
);
}
// 兼容模式+pathinfo模式
}
else
{
if
(
file_exists
(
$route_file_php
)
&&
@
unlink
(
$route_file_php
)
===
false
)
// pathinfo+短地址模式
if
(
$params
[
'home_seo_url_model'
]
==
2
)
{
return
DataReturn
(
'路由规则处理失败'
,
-
10
);
if
(
!
file_exists
(
$route_file
))
{
return
DataReturn
(
'路由规则文件不存在'
.
'[./app/route/route.config]'
,
-
14
);
}
// 开始生成规则文件
if
(
file_put_contents
(
$route_file_php
,
file_get_contents
(
$route_file
))
===
false
)
{
return
DataReturn
(
'路由规则文件生成失败'
,
-
10
);
}
// 兼容模式+pathinfo模式
}
else
{
if
(
file_exists
(
$route_file_php
)
&&
@
unlink
(
$route_file_php
)
===
false
)
{
return
DataReturn
(
'路由规则处理失败'
,
-
10
);
}
}
}
return
DataReturn
(
'处理成功'
,
0
);
...
...
extend/base/Excel.php
浏览文件 @
17438dbd
...
...
@@ -210,7 +210,7 @@ class Excel
header
(
'Expires: 0'
);
header
(
'Cache-Control:must-revalidate, post-check=0, pre-check=0'
);
header
(
'Content-Type:application/force-download'
);
header
(
'Content-Type:
application/'
.
$this
->
file_type
.
';charset='
.
$charset
);
header
(
'Content-Type:application/'
.
$this
->
file_type
.
';charset='
.
$charset
);
header
(
'Content-Type:application/octet-stream'
);
header
(
'Content-Type:application/download'
);
header
(
'Content-Disposition:attachment;filename='
.
$this
->
filename
.
'.'
.
$this
->
suffix
);
...
...
extend/base/Qrcode.php
浏览文件 @
17438dbd
...
...
@@ -206,6 +206,8 @@ class Qrcode
header
(
'Cache-Control: must-revalidate, post-check=0, pre-check=0'
);
header
(
'Cache-Control: private'
,
false
);
header
(
'Content-Type: application/octet-stream;charset=utf-8'
);
header
(
'Content-Type: application/download'
);
header
(
'Content-Type: application/force-download'
);
header
(
'Content-Disposition: attachment; filename="'
.
$filename
.
'"'
);
header
(
'Content-Transfer-Encoding: binary'
);
header
(
'Connection: close'
);
...
...
tpl/think_exception.tpl
已删除
100644 → 0
浏览文件 @
46159284
<
?
php
/
**
@
var
array
$
traces
*
/
if
(!
function_exists
('
parse_padding
'))
{
function
parse_padding
($
source
)
{
$
length =
strlen(strval(count($source['source'])
+
$
source
['
first
']));
return
40
+
($
length
-
1)
*
8;
}
}
if
(!
function_exists
('
parse_class
'))
{
function
parse_class
($
name
)
{
$
names =
explode('\\',
$
name
);
return
'<
abbr
title=
"'.$name.'"
>
'.end($names).'
</abbr>
';
}
}
if (!function_exists('parse_file')) {
function parse_file($file, $line)
{
return '
<a
class=
"toggle"
title=
"'."
{
$file
}
line
{
$line
}
".'"
>
'.basename($file)." line
{
$line
}
".'
</a>
';
}
}
if (!function_exists('parse_args')) {
function parse_args($args)
{
$result = [];
foreach ($args as $key => $item) {
switch (true) {
case is_object($item):
$value = sprintf('
<em>
object
</em>
(%s)', parse_class(get_class($item)));
break;
case is_array($item):
if (count($item) > 3) {
$value = sprintf('[%s, ...]', parse_args(array_slice($item, 0, 3)));
} else {
$value = sprintf('[%s]', parse_args($item));
}
break;
case is_string($item):
if (strlen($item) > 20) {
$value = sprintf(
'\'
<a
class=
"toggle"
title=
"%s"
>
%s...
</a>
\'',
htmlentities($item),
htmlentities(substr($item, 0, 20))
);
} else {
$value = sprintf("'%s'", htmlentities($item));
}
break;
case is_int($item):
case is_float($item):
$value = $item;
break;
case is_null($item):
$value = '
<em>
null
</em>
';
break;
case is_bool($item):
$value = '
<em>
' . ($item ? 'true' : 'false') . '
</em>
';
break;
case is_resource($item):
$value = '
<em>
resource
</em>
';
break;
default:
$value = htmlentities(str_replace("\n", '', var_export(strval($item), true)));
break;
}
$result[] = is_int($key) ? $value : "'
{
$key
}
' =>
{
$value
}
";
}
return implode(', ', $result);
}
}
if (!function_exists('echo_value')) {
function echo_value($val)
{
if (is_array($val) || is_object($val)) {
echo htmlentities(json_encode($val, JSON_PRETTY_PRINT));
} elseif (is_bool($val)) {
echo $val ? 'true' : 'false';
} elseif (is_scalar($val)) {
echo htmlentities($val);
} else {
echo 'Resource';
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title>
系统发生错误
</title>
<meta
name=
"robots"
content=
"noindex,nofollow"
/>
<style>
/* Base */
body
{
color
:
#333
;
font
:
16px
Verdana
,
"Helvetica Neue"
,
helvetica
,
Arial
,
'Microsoft YaHei'
,
sans-serif
;
margin
:
0
;
padding
:
0
20px
20px
;
}
h1
{
margin
:
10px
0
0
;
font-size
:
28px
;
font-weight
:
500
;
line-height
:
32px
;
}
h2
{
color
:
#4288ce
;
font-weight
:
400
;
padding
:
6px
0
;
margin
:
6px
0
0
;
font-size
:
18px
;
border-bottom
:
1px
solid
#eee
;
}
h3
{
margin
:
12px
;
font-size
:
16px
;
font-weight
:
bold
;
}
abbr
{
cursor
:
help
;
text-decoration
:
underline
;
text-decoration-style
:
dotted
;
}
a
{
color
:
#868686
;
cursor
:
pointer
;
}
a
:hover
{
text-decoration
:
underline
;
}
.line-error
{
background
:
#f8cbcb
;
}
.echo
table
{
width
:
100%
;
}
.echo
pre
{
padding
:
16px
;
overflow
:
auto
;
font-size
:
85%
;
line-height
:
1.45
;
background-color
:
#f7f7f7
;
border
:
0
;
border-radius
:
3px
;
font-family
:
Consolas
,
"Liberation Mono"
,
Menlo
,
Courier
,
monospace
;
}
.echo
pre
>
pre
{
padding
:
0
;
margin
:
0
;
}
/* Exception Info */
.exception
{
margin-top
:
20px
;
}
.exception
.message
{
padding
:
12px
;
border
:
1px
solid
#ddd
;
border-bottom
:
0
none
;
line-height
:
18px
;
font-size
:
16px
;
border-top-left-radius
:
4px
;
border-top-right-radius
:
4px
;
font-family
:
Consolas
,
"Liberation Mono"
,
Courier
,
Verdana
,
"微软雅黑"
,
serif
;
}
.exception
.error-message
h1
{
text-align
:
center
;
margin-top
:
10%
;
}
.exception
.code
{
float
:
left
;
text-align
:
center
;
color
:
#fff
;
margin-right
:
12px
;
padding
:
16px
;
border-radius
:
4px
;
background
:
#999
;
}
.exception
.source-code
{
padding
:
6px
;
border
:
1px
solid
#ddd
;
background
:
#f9f9f9
;
overflow-x
:
auto
;
}
.exception
.source-code
pre
{
margin
:
0
;
}
.exception
.source-code
pre
ol
{
margin
:
0
;
color
:
#4288ce
;
display
:
inline-block
;
min-width
:
100%
;
box-sizing
:
border-box
;
font-size
:
14px
;
font-family
:
"Century Gothic"
,
Consolas
,
"Liberation Mono"
,
Courier
,
Verdana
,
serif
;
padding-left
:
<?
php
echo
(
isset
(
$
source
)
&&
!
empty
(
$
source
))
?
parse_padding
(
$
source
)
:
40
;
?>px;
}
.exception
.source-code
pre
li
{
border-left
:
1px
solid
#ddd
;
height
:
18px
;
line-height
:
18px
;
}
.exception
.source-code
pre
code
{
color
:
#333
;
height
:
100%
;
display
:
inline-block
;
border-left
:
1px
solid
#fff
;
font-size
:
14px
;
font-family
:
Consolas
,
"Liberation Mono"
,
Courier
,
Verdana
,
"微软雅黑"
,
serif
;
}
.exception
.trace
{
padding
:
6px
;
border
:
1px
solid
#ddd
;
border-top
:
0
none
;
line-height
:
16px
;
font-size
:
14px
;
font-family
:
Consolas
,
"Liberation Mono"
,
Courier
,
Verdana
,
"微软雅黑"
,
serif
;
}
.exception
.trace
h2
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;
}
.exception
.trace
ol
{
margin
:
12px
;
}
.exception
.trace
ol
li
{
padding
:
2px
4px
;
}
.exception
div
:last-child
{
border-bottom-left-radius
:
4px
;
border-bottom-right-radius
:
4px
;
}
/* Exception Variables */
.exception-var
table
{
width
:
100%
;
margin
:
12px
0
;
box-sizing
:
border-box
;
table-layout
:
fixed
;
word-wrap
:
break-word
;
}
.exception-var
table
caption
{
text-align
:
left
;
font-size
:
16px
;
font-weight
:
bold
;
padding
:
6px
0
;
}
.exception-var
table
caption
small
{
font-weight
:
300
;
display
:
inline-block
;
margin-left
:
10px
;
color
:
#ccc
;
}
.exception-var
table
tbody
{
font-size
:
13px
;
font-family
:
Consolas
,
"Liberation Mono"
,
Courier
,
"微软雅黑"
,
serif
;
}
.exception-var
table
td
{
padding
:
0
6px
;
vertical-align
:
top
;
word-break
:
break-all
;
}
.exception-var
table
td
:first-child
{
width
:
28%
;
font-weight
:
bold
;
white-space
:
nowrap
;
}
.exception-var
table
td
pre
{
margin
:
0
;
}
/* Copyright Info */
.copyright
{
margin-top
:
30px
;
padding
:
12px
0
;
text-align
:
center
;
}
.copyright
a
{
color
:
#F44336
;
cursor
:
pointer
;
text-decoration
:
none
;
padding
:
10px
15px
;
border
:
1px
solid
#F44336
;
border-radius
:
3px
;
}
.copyright
a
:hover
{
background
:
#F44336
;
color
:
#fff
;
}
.copyright-version
{
margin-top
:
20px
;
}
.copyright-version
span
{
color
:
#999
;
}
.copyright-version
span
:not
(
:last-child
)
{
margin-right
:
20px
;
}
/* SPAN elements with the classes below are added by prettyprint. */
pre
.prettyprint
.pln
{
color
:
#000
}
/* plain text */
pre
.prettyprint
.str
{
color
:
#080
}
/* string content */
pre
.prettyprint
.kwd
{
color
:
#008
}
/* a keyword */
pre
.prettyprint
.com
{
color
:
#800
}
/* a comment */
pre
.prettyprint
.typ
{
color
:
#606
}
/* a type name */
pre
.prettyprint
.lit
{
color
:
#066
}
/* a literal value */
/* punctuation, lisp open bracket, lisp close bracket */
pre
.prettyprint
.pun
,
pre
.prettyprint
.opn
,
pre
.prettyprint
.clo
{
color
:
#660
}
pre
.prettyprint
.tag
{
color
:
#008
}
/* a markup tag name */
pre
.prettyprint
.atn
{
color
:
#606
}
/* a markup attribute name */
pre
.prettyprint
.atv
{
color
:
#080
}
/* a markup attribute value */
pre
.prettyprint
.dec
,
pre
.prettyprint
.var
{
color
:
#606
}
/* a declaration; a variable name */
pre
.prettyprint
.fun
{
color
:
red
}
/* a function name */
</style>
</head>
<body>
<?php if (\think\facade\App::isDebug()) { ?>
<?php foreach ($traces as $index => $trace) { ?>
<div
class=
"exception"
>
<div
class=
"message"
>
<div
class=
"info"
>
<div>
<h2><
?
php
echo
"
#
{
$index
}
[
{
$trace
[
'code'
]
}
]"
.
sprintf
('%
s
in
%
s
',
parse_class
($
trace
['
name
']),
parse_file
($
trace
['
file
'],
$
trace
['
line
']));
?
></h2>
</div>
<div><h1>
<?php echo nl2br(htmlentities($trace['message'])); ?>
</h1></div>
</div>
</div>
<?php if (!empty($trace['source'])) { ?>
<div
class=
"source-code"
>
<pre
class=
"prettyprint lang-php"
><ol
start=
"<?php echo $trace['source']['first']; ?>"
>
<?php foreach ((array) $trace['source']['source'] as $key => $value) { ?>
<li
class=
"line-<?php echo "
{
$index
}
-
";
echo
$
key
+
$
trace
['
source
']['
first
'];
echo
$
trace
['
line
'
] =
==
$
key
+
$
trace
['
source
']['
first
']
?
'
line-error
'
:
'';
?
>
">
<code>
<?php echo htmlentities($value); ?>
</code></li>
<?php } ?>
</ol></pre>
</div>
<?php }?>
<div
class=
"trace"
>
<h2
data-expand=
"<?php echo 0 === $index ? '1' : '0'; ?>"
>
Call Stack
</h2>
<ol>
<li>
<?php echo sprintf('in %s', parse_file($trace['file'], $trace['line'])); ?>
</li>
<?php foreach ((array) $trace['trace'] as $value) { ?>
<li>
<?php
// Show Function
if ($value['function']) {
echo sprintf(
'at %s%s%s(%s)',
isset($value['class']) ? parse_class($value['class']) : '',
isset($value['type']) ? $value['type'] : '',
$value['function'],
isset($value['args'])?parse_args($value['args']):''
);
}
// Show line
if (isset($value['file']) && isset($value['line'])) {
echo sprintf(' in %s', parse_file($value['file'], $value['line']));
}
?>
</li>
<?php } ?>
</ol>
</div>
</div>
<?php } ?>
<?php } else { ?>
<div
class=
"exception"
>
<div
class=
"info error-message"
><h1>
<?php echo htmlentities($message); ?>
</h1></div>
</div>
<?php } ?>
<?php if (!empty($datas)) { ?>
<div
class=
"exception-var"
>
<h2>
Exception Datas
</h2>
<?php foreach ((array) $datas as $label => $value) { ?>
<table>
<?php if (empty($value)) { ?>
<caption>
<?php echo $label; ?>
<small>
empty
</small></caption>
<?php } else { ?>
<caption>
<?php echo $label; ?>
</caption>
<tbody>
<?php foreach ((array) $value as $key => $val) { ?>
<tr>
<td>
<?php echo htmlentities($key); ?>
</td>
<td>
<?php echo_value($val); ?>
</td>
</tr>
<?php } ?>
</tbody>
<?php } ?>
</table>
<?php } ?>
</div>
<?php } ?>
<?php if (!empty($tables)) { ?>
<div
class=
"exception-var"
>
<h2>
Environment Variables
</h2>
<?php foreach ((array) $tables as $label => $value) { ?>
<table>
<?php if (empty($value)) { ?>
<caption>
<?php echo $label; ?>
<small>
empty
</small></caption>
<?php } else { ?>
<caption>
<?php echo $label; ?>
</caption>
<tbody>
<?php foreach ((array) $value as $key => $val) { ?>
<tr>
<td>
<?php echo htmlentities($key); ?>
</td>
<td>
<?php echo_value($val); ?>
</td>
</tr>
<?php } ?>
</tbody>
<?php } ?>
</table>
<?php } ?>
</div>
<?php } ?>
<?php if (\think\facade\App::isDebug()) { ?>
<div
class=
"copyright"
>
<a
title=
"<?php echo implode('', ['S','h','o','p','X','O','企','业','级','免','费','开','源','商','城','系','统']); ?>"
href=
"<?php echo implode('', ['h','t','t','p','s',':','/','/','s','h','o','p','x','o','.','n','e','t','/']); ?>"
target=
"_blank"
>
<?php echo implode('', ['S','h','o','p','X','O','企','业','级','免','费','开','源','商','城','系','统']); ?>
</a>
<p
class=
"copyright-version"
>
<span>
thinkphp v
<?php echo \think\facade\App::version(); ?>
</span>
<span>
shopxo
<?php echo APPLICATION_VERSION; ?>
</span>
</p>
</div>
<?php } else { ?>
<div
class=
"copyright"
>
<a
title=
"<?php echo implode('', ['S','h','o','p','X','O','企','业','级','免','费','开','源','商','城','系','统']); ?>"
href=
"<?php echo implode('', ['h','t','t','p','s',':','/','/','a','s','k','.','s','h','o','p','x','o','.','n','e','t','/','q','u','e','s','t','i','o','n','/','7']); ?>"
target=
"_blank"
>
<?php echo implode('', ['查','看','解','决','方','案']); ?>
</a>
</div>
<?php } ?>
<?php if (\think\facade\App::isDebug()) { ?>
<script>
function
$
(
selector
,
node
){
var
elements
;
node
=
node
||
document
;
if
(
document
.
querySelectorAll
){
elements
=
node
.
querySelectorAll
(
selector
);
}
else
{
switch
(
selector
.
substr
(
0
,
1
)){
case
'
#
'
:
elements
=
[
node
.
getElementById
(
selector
.
substr
(
1
))];
break
;
case
'
.
'
:
if
(
document
.
getElementsByClassName
){
elements
=
node
.
getElementsByClassName
(
selector
.
substr
(
1
));
}
else
{
elements
=
get_elements_by_class
(
selector
.
substr
(
1
),
node
);
}
break
;
default
:
elements
=
node
.
getElementsByTagName
();
}
}
return
elements
;
function
get_elements_by_class
(
search_class
,
node
,
tag
)
{
var
elements
=
[],
eles
,
pattern
=
new
RegExp
(
'
(^|
\\
s)
'
+
search_class
+
'
(
\\
s|$)
'
);
node
=
node
||
document
;
tag
=
tag
||
'
*
'
;
eles
=
node
.
getElementsByTagName
(
tag
);
for
(
var
i
=
0
;
i
<
eles
.
length
;
i
++
)
{
if
(
pattern
.
test
(
eles
[
i
].
className
))
{
elements
.
push
(
eles
[
i
])
}
}
return
elements
;
}
}
$
.
getScript
=
function
(
src
,
func
){
var
script
=
document
.
createElement
(
'
script
'
);
script
.
async
=
'
async
'
;
script
.
src
=
src
;
script
.
onload
=
func
||
function
(){};
$
(
'
head
'
)[
0
].
appendChild
(
script
);
}
;(
function
(){
var
files
=
$
(
'
.toggle
'
);
var
ol
=
$
(
'
ol
'
,
$
(
'
.prettyprint
'
)[
0
]);
var
li
=
$
(
'
li
'
,
ol
[
0
]);
// 短路径和长路径变换
for
(
var
i
=
0
;
i
<
files
.
length
;
i
++
){
files
[
i
].
ondblclick
=
function
(){
var
title
=
this
.
title
;
this
.
title
=
this
.
innerHTML
;
this
.
innerHTML
=
title
;
}
}
(
function
()
{
var
expand
=
function
(
dom
,
expand
)
{
var
ol
=
$
(
'
ol
'
,
dom
.
parentNode
)[
0
];
expand
=
undefined
===
expand
?
dom
.
attributes
[
'
data-expand
'
].
value
===
'
0
'
:
undefined
;
if
(
expand
)
{
dom
.
attributes
[
'
data-expand
'
].
value
=
'
1
'
;
ol
.
style
.
display
=
'
none
'
;
dom
.
innerText
=
'
Call Stack (展开)
'
;
}
else
{
dom
.
attributes
[
'
data-expand
'
].
value
=
'
0
'
;
ol
.
style
.
display
=
'
block
'
;
dom
.
innerText
=
'
Call Stack (折叠)
'
;
}
};
var
traces
=
$
(
'
.trace
'
);
for
(
var
i
=
0
;
i
<
traces
.
length
;
i
++
)
{
var
h2
=
$
(
'
h2
'
,
traces
[
i
])[
0
];
expand
(
h2
);
h2
.
onclick
=
function
()
{
expand
(
this
);
};
}
})();
$
.
getScript
(
'
//cdn.bootcss.com/prettify/r298/prettify.min.js
'
,
function
(){
prettyPrint
();
});
})();
</script>
<?php } ?>
</body>
</html>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录