切换导航条
此项目
正在载入...
登录
何书鹏
/
recruit
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
Karson
8 years ago
提交
a0a9590134625edaf1c1f65b27273dec5b02f31e
1 个父辈
26f95f19
修复前台显示关键配置的BUG
修复打包压缩后的JS未更新的BUG
隐藏空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
61 行增加
和
22 行删除
application/common/controller/Frontend.php
public/assets/js/require-backend.min.js
application/common/controller/Frontend.php
查看文件 @
a0a9590
...
...
@@ -51,9 +51,11 @@ class Frontend extends Controller
// 语言检测
$lang
=
Lang
::
detect
();
$site
=
Config
::
get
(
"site"
);
// 配置信息
$config
=
[
'site'
=>
Config
::
get
(
"site"
),
'site'
=>
array_intersect_key
(
$site
,
array_flip
([
'name'
,
'cdnurl'
,
'version'
,
'timezone'
,
'languages'
])
),
'upload'
=>
Configvalue
::
upload
(),
'modulename'
=>
$modulename
,
'controllername'
=>
$controllername
,
...
...
@@ -63,7 +65,7 @@ class Frontend extends Controller
'language'
=>
$lang
];
$this
->
loadlang
(
$controllername
);
$this
->
assign
(
'site'
,
Config
::
get
(
"site"
)
);
$this
->
assign
(
'site'
,
$site
);
$this
->
assign
(
'config'
,
$config
);
}
...
...
public/assets/js/require-backend.min.js
查看文件 @
a0a9590
...
...
@@ -6530,15 +6530,10 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f
});
},
open
:
function
(
url
,
title
,
options
)
{
title
=
title
==
undefined
?
""
:
title
;
title
=
title
?
title
:
""
;
url
=
Backend
.
api
.
fixurl
(
url
);
url
=
url
+
(
url
.
indexOf
(
"?"
)
>
-
1
?
"&"
:
"?"
)
+
"dialog=1"
;
var
area
;
if
(
$
(
window
).
width
()
<
800
)
{
area
=
[
"95%"
,
"95%"
];
}
else
{
area
=
[
'800px'
,
'600px'
];
}
var
area
=
[
$
(
window
).
width
()
>
800
?
'800px'
:
'95%'
,
$
(
window
).
height
()
>
600
?
'600px'
:
'95%'
];
Backend
.
api
.
layer
.
open
(
$
.
extend
({
type
:
2
,
title
:
title
,
...
...
@@ -6599,7 +6594,7 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f
var
btnHeight
=
layero
.
find
(
'.layui-layer-btn'
).
outerHeight
()
||
0
;
var
oldheg
=
heg
+
titHeight
+
btnHeight
;
var
maxheg
=
600
;
var
maxheg
=
$
(
window
).
height
()
<
600
?
$
(
window
).
height
()
:
600
;
if
(
frame
.
outerWidth
()
<
768
||
that
.
area
[
0
].
indexOf
(
"%"
)
>
-
1
)
{
maxheg
=
$
(
window
).
height
();
}
...
...
@@ -7313,14 +7308,23 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
htmlForm
.
push
(
sprintf
(
'<select class="form-control" name="%s" %s>%s</select>'
,
vObjCol
.
field
,
style
,
sprintf
(
'<option value="">%s</option>'
,
that
.
options
.
formatCommonChoose
())));
(
function
(
vObjCol
,
that
)
{
$
.
when
(
vObjCol
.
searchList
).
done
(
function
(
ret
)
{
var
isArray
=
false
;
if
(
ret
.
data
&&
ret
.
data
.
searchlist
&&
$
.
isArray
(
ret
.
data
.
searchlist
))
{
var
optionList
=
[]
;
var
resultlist
=
{}
;
$
.
each
(
ret
.
data
.
searchlist
,
function
(
key
,
value
)
{
var
isSelect
=
value
.
id
===
vObjCol
.
defaultValue
?
'selected'
:
''
;
optionList
.
push
(
sprintf
(
"<option value='"
+
value
.
id
+
"' %s>"
+
value
.
name
+
"</option>"
,
isSelect
));
resultlist
[
value
.
id
]
=
value
.
name
;
});
$
(
"form.form-commonsearch select[name='"
+
vObjCol
.
field
+
"']"
,
that
.
$container
).
append
(
optionList
.
join
(
''
));
}
else
if
(
ret
.
constructor
===
Array
||
ret
.
constructor
===
Object
)
{
var
resultlist
=
ret
;
isArray
=
ret
.
constructor
===
Array
?
true
:
isArray
;
}
var
optionList
=
[];
$
.
each
(
resultlist
,
function
(
key
,
value
)
{
var
isSelect
=
(
isArray
?
value
:
key
)
==
vObjCol
.
defaultValue
?
'selected'
:
''
;
optionList
.
push
(
sprintf
(
"<option value='"
+
(
isArray
?
value
:
key
)
+
"' %s>"
+
value
+
"</option>"
,
isSelect
));
});
$
(
"form.form-commonsearch select[name='"
+
vObjCol
.
field
+
"']"
,
that
.
$container
).
append
(
optionList
.
join
(
''
));
});
})(
vObjCol
,
that
);
}
else
if
(
typeof
vObjCol
.
searchList
==
'function'
)
{
...
...
@@ -7330,7 +7334,7 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
var
searchList
=
[];
searchList
.
push
(
sprintf
(
'<option value="">%s</option>'
,
that
.
options
.
formatCommonChoose
()));
$
.
each
(
vObjCol
.
searchList
,
function
(
key
,
value
)
{
var
isSelect
=
(
isArray
?
value
:
key
)
==
=
vObjCol
.
defaultValue
?
'selected'
:
''
;
var
isSelect
=
(
isArray
?
value
:
key
)
==
vObjCol
.
defaultValue
?
'selected'
:
''
;
searchList
.
push
(
sprintf
(
"<option value='"
+
(
isArray
?
value
:
key
)
+
"' %s>"
+
value
+
"</option>"
,
isSelect
));
});
htmlForm
.
push
(
sprintf
(
'<select class="form-control" name="%s" %s>%s</select>'
,
vObjCol
.
field
,
style
,
searchList
.
join
(
''
)));
...
...
@@ -7600,13 +7604,26 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/
!
function
(){
function
a
(
a
){
return
a
.
replace
(
t
,
""
).
replace
(
u
,
","
).
replace
(
v
,
""
).
replace
(
w
,
""
).
replace
(
x
,
""
).
split
(
y
)}
function
b
(
a
){
return
"'"
+
a
.
replace
(
/
(
'|
\\)
/g
,
"\\$1"
).
replace
(
/
\r
/g
,
"\\r"
).
replace
(
/
\n
/g
,
"\\n"
)
+
"'"
}
function
c
(
c
,
d
){
function
e
(
a
){
return
m
+=
a
.
split
(
/
\n
/
).
length
-
1
,
k
&&
(
a
=
a
.
replace
(
/
\s
+/g
,
" "
).
replace
(
/<!--
[\w\W]
*
?
-->/g
,
""
)),
a
&&
(
a
=
s
[
1
]
+
b
(
a
)
+
s
[
2
]
+
"\n"
),
a
}
function
f
(
b
){
var
c
=
m
;
if
(
j
?
b
=
j
(
b
,
d
):
g
&&
(
b
=
b
.
replace
(
/
\n
/g
,
function
(){
return
m
++
,
"$line="
+
m
+
";"
})),
0
===
b
.
indexOf
(
"="
)){
var
e
=
l
&&!
/^=
[
=#
]
/
.
test
(
b
);
if
(
b
=
b
.
replace
(
/^=
[
=#
]?
|
[\s
;
]
*$/g
,
""
),
e
){
var
f
=
b
.
replace
(
/
\s
*
\([^\)]
+
\)
/
,
""
);
n
[
f
]
||
/^
(
include|print
)
$/
.
test
(
f
)
||
(
b
=
"$escape("
+
b
+
")"
)}
else
b
=
"$string("
+
b
+
")"
;
b
=
s
[
1
]
+
b
+
s
[
2
]}
return
g
&&
(
b
=
"$line="
+
c
+
";"
+
b
),
r
(
a
(
b
),
function
(
a
){
if
(
a
&&!
p
[
a
]){
var
b
;
b
=
"print"
===
a
?
u
:
"include"
===
a
?
v
:
n
[
a
]?
"$utils."
+
a
:
o
[
a
]?
"$helpers."
+
a
:
"$data."
+
a
,
w
+=
a
+
"="
+
b
+
","
,
p
[
a
]
=!
0
}}),
b
+
"\n"
}
var
g
=
d
.
debug
,
h
=
d
.
openTag
,
i
=
d
.
closeTag
,
j
=
d
.
parser
,
k
=
d
.
compress
,
l
=
d
.
escape
,
m
=
1
,
p
=
{
$data
:
1
,
$filename
:
1
,
$utils
:
1
,
$helpers
:
1
,
$out
:
1
,
$line
:
1
},
q
=
""
.
trim
,
s
=
q
?[
"$out='';"
,
"$out+="
,
";"
,
"$out"
]:[
"$out=[];"
,
"$out.push("
,
");"
,
"$out.join('')"
],
t
=
q
?
"$out+=text;return $out;"
:
"$out.push(text);"
,
u
=
"function(){var text=''.concat.apply('',arguments);"
+
t
+
"}"
,
v
=
"function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"
+
t
+
"}"
,
w
=
"'use strict';var $utils=this,$helpers=$utils.$helpers,"
+
(
g
?
"$line=0,"
:
""
),
x
=
s
[
0
],
y
=
"return new String("
+
s
[
3
]
+
");"
;
r
(
c
.
split
(
h
),
function
(
a
){
a
=
a
.
split
(
i
);
var
b
=
a
[
0
],
c
=
a
[
1
];
1
===
a
.
length
?
x
+=
e
(
b
):(
x
+=
f
(
b
),
c
&&
(
x
+=
e
(
c
)))});
var
z
=
w
+
x
+
y
;
g
&&
(
z
=
"try{"
+
z
+
"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"
+
b
(
c
)
+
".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}"
);
try
{
var
A
=
new
Function
(
"$data"
,
"$filename"
,
z
);
return
A
.
prototype
=
n
,
A
}
catch
(
a
){
throw
a
.
temp
=
"function anonymous($data,$filename) {"
+
z
+
"}"
,
a
}}
var
d
=
function
(
a
,
b
){
return
"string"
==
typeof
b
?
q
(
b
,{
filename
:
a
}):
g
(
a
,
b
)};
d
.
version
=
"3.0.0"
,
d
.
config
=
function
(
a
,
b
){
e
[
a
]
=
b
};
var
e
=
d
.
defaults
=
{
openTag
:
"<%"
,
closeTag
:
"%>"
,
escape
:
!
0
,
cache
:
!
0
,
compress
:
!
1
,
parser
:
null
},
f
=
d
.
cache
=
{};
d
.
render
=
function
(
a
,
b
){
return
q
(
a
)(
b
)};
var
g
=
d
.
renderFile
=
function
(
a
,
b
){
var
c
=
d
.
get
(
a
)
||
p
({
filename
:
a
,
name
:
"Render Error"
,
message
:
"Template not found"
});
return
b
?
c
(
b
):
c
};
d
.
get
=
function
(
a
){
var
b
;
if
(
f
[
a
])
b
=
f
[
a
];
else
if
(
"object"
==
typeof
document
){
var
c
=
document
.
getElementById
(
a
);
if
(
c
){
var
d
=
(
c
.
value
||
c
.
innerHTML
).
replace
(
/^
\s
*|
\s
*$/g
,
""
);
b
=
q
(
d
,{
filename
:
a
})}}
return
b
};
var
h
=
function
(
a
,
b
){
return
"string"
!=
typeof
a
&&
(
b
=
typeof
a
,
"number"
===
b
?
a
+=
""
:
a
=
"function"
===
b
?
h
(
a
.
call
(
a
)):
""
),
a
},
i
=
{
"<"
:
"<"
,
">"
:
">"
,
'"'
:
"""
,
"'"
:
"'"
,
"&"
:
"&"
},
j
=
function
(
a
){
return
i
[
a
]},
k
=
function
(
a
){
return
h
(
a
).
replace
(
/&
(?![\w
#
]
+;
)
|
[
<>"'
]
/g
,
j
)},
l
=
Array
.
isArray
||
function
(
a
){
return
"[object Array]"
===
{}.
toString
.
call
(
a
)},
m
=
function
(
a
,
b
){
var
c
,
d
;
if
(
l
(
a
))
for
(
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
b
.
call
(
a
,
a
[
c
],
c
,
a
);
else
for
(
c
in
a
)
b
.
call
(
a
,
a
[
c
],
c
)},
n
=
d
.
utils
=
{
$helpers
:{},
$include
:
g
,
$string
:
h
,
$escape
:
k
,
$each
:
m
};
d
.
helper
=
function
(
a
,
b
){
o
[
a
]
=
b
};
var
o
=
d
.
helpers
=
n
.
$helpers
;
d
.
onerror
=
function
(
a
){
var
b
=
"Template Error\n\n"
;
for
(
var
c
in
a
)
b
+=
"<"
+
c
+
">\n"
+
a
[
c
]
+
"\n\n"
;
"object"
==
typeof
console
&&
console
.
error
(
b
)};
var
p
=
function
(
a
){
return
d
.
onerror
(
a
),
function
(){
return
"{Template Error}"
}},
q
=
d
.
compile
=
function
(
a
,
b
){
function
d
(
c
){
try
{
return
new
i
(
c
,
h
)
+
""
}
catch
(
d
){
return
b
.
debug
?
p
(
d
)():(
b
.
debug
=!
0
,
q
(
a
,
b
)(
c
))}}
b
=
b
||
{};
for
(
var
g
in
e
)
void
0
===
b
[
g
]
&&
(
b
[
g
]
=
e
[
g
]);
var
h
=
b
.
filename
;
try
{
var
i
=
c
(
a
,
b
)}
catch
(
a
){
return
a
.
filename
=
h
||
"anonymous"
,
a
.
name
=
"Syntax Error"
,
p
(
a
)}
return
d
.
prototype
=
i
.
prototype
,
d
.
toString
=
function
(){
return
i
.
toString
()},
h
&&
b
.
cache
&&
(
f
[
h
]
=
d
),
d
},
r
=
n
.
$each
,
s
=
"break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined"
,
t
=
/
\/\*[\w\W]
*
?\*\/
|
\/\/[^\n]
*
\n
|
\/\/[^\n]
*$|"
(?:[^
"
\\]
|
\\[\w\W])
*"|'
(?:[^
'
\\]
|
\\[\w\W])
*'|
\s
*
\.\s
*
[
$
\w\.]
+/g
,
u
=
/
[^\w
$
]
+/g
,
v
=
new
RegExp
([
"\\b"
+
s
.
replace
(
/,/g
,
"\\b|\\b"
)
+
"\\b"
].
join
(
"|"
),
"g"
),
w
=
/^
\d[^
,
]
*|,
\d[^
,
]
*/g
,
x
=
/^,+|,+$/g
,
y
=
/^$|,+/
;
"object"
==
typeof
exports
&&
"undefined"
!=
typeof
module
?
module
.
exports
=
d
:
"function"
==
typeof
define
?
define
(
'template'
,[],
function
(){
return
d
}):
this
.
template
=
d
}();
/**
* 将BootstrapTable的行使用自定义的模板来渲染
*
* @author: karson
* @version: v0.0.1
*
* @update 2017-06-24 <http://github.com/karsonzhang/fastadmin>
*/
!
function
(
$
)
{
'use strict'
;
$
.
extend
(
$
.
fn
.
bootstrapTable
.
defaults
,
{
//是否启用模板渲染
templateView
:
false
,
//数据格式化的模板ID或格式函数
templateFormatter
:
"itemtpl"
,
//添加的父类的class
templateParentClass
:
"row row-flex"
,
//向table添加的class
templateTableClass
:
"table-template"
,
});
...
...
@@ -7632,14 +7649,14 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
showFooter
:
!
that
.
options
.
templateView
?
$
.
fn
.
bootstrapTable
.
defaults
.
showFooter
:
false
,
});
$
(
that
.
$el
).
toggleClass
(
that
.
options
.
templateTableClass
,
that
.
options
.
templateView
);
_initBody
.
apply
(
this
,
Array
.
prototype
.
slice
.
apply
(
arguments
));
if
(
!
that
.
options
.
templateView
)
{
return
;
}
else
{
//由于Bootstrap是基于Table的,添加一个父类容器
$
(
"> *"
,
that
.
$body
).
wrapAll
(
$
(
"<div />"
).
addClass
(
that
.
options
.
templateParentClass
));
$
(
"> *
:not(.no-records-found)
"
,
that
.
$body
).
wrapAll
(
$
(
"<div />"
).
addClass
(
that
.
options
.
templateParentClass
));
}
};
...
...
@@ -7889,6 +7906,10 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
$
(
table
).
on
(
"click"
,
"input[data-id][name='checkbox']"
,
function
(
e
)
{
table
.
trigger
(
'fa.event.check'
);
});
$
(
table
).
on
(
"click"
,
"[data-id].btn-change"
,
function
(
e
)
{
e
.
preventDefault
();
Table
.
api
.
multi
(
$
(
this
).
data
(
"action"
)
?
$
(
this
).
data
(
"action"
)
:
''
,
[
$
(
this
).
data
(
"id"
)],
table
,
this
);
});
$
(
table
).
on
(
"click"
,
"[data-id].btn-edit"
,
function
(
e
)
{
e
.
preventDefault
();
Backend
.
api
.
open
(
options
.
extend
.
edit_url
+
"/ids/"
+
$
(
this
).
data
(
"id"
),
__
(
'Edit'
));
...
...
@@ -7915,9 +7936,11 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
// 批量操作请求
multi
:
function
(
action
,
ids
,
table
,
element
)
{
var
options
=
table
.
bootstrapTable
(
'getOptions'
);
var
url
=
action
==
"del"
?
options
.
extend
.
del_url
:
options
.
extend
.
multi_url
;
var
data
=
element
?
$
(
element
).
data
()
:
{};
var
url
=
typeof
data
.
url
!==
"undefined"
?
data
.
url
:
(
action
==
"del"
?
options
.
extend
.
del_url
:
options
.
extend
.
multi_url
);
url
=
url
+
"/ids/"
+
(
$
.
isArray
(
ids
)
?
ids
.
join
(
","
)
:
ids
);
var
options
=
{
url
:
url
,
data
:
{
action
:
action
,
ids
:
ids
,
params
:
element
?
$
(
element
).
data
(
"params"
)
:
''
}};
var
params
=
typeof
data
.
params
!==
"undefined"
?
(
typeof
data
.
params
==
'object'
?
$
.
param
(
data
.
params
)
:
data
.
params
)
:
''
;
var
options
=
{
url
:
url
,
data
:
{
action
:
action
,
ids
:
ids
,
params
:
params
}};
Backend
.
api
.
ajax
(
options
,
function
(
data
)
{
Toastr
.
success
(
__
(
'Operation completed'
));
table
.
bootstrapTable
(
'refresh'
);
...
...
@@ -7927,10 +7950,12 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
events
:
{
operate
:
{
'click .btn-editone'
:
function
(
e
,
value
,
row
,
index
)
{
e
.
stopPropagation
();
var
options
=
$
(
this
).
closest
(
'table'
).
bootstrapTable
(
'getOptions'
);
Backend
.
api
.
open
(
options
.
extend
.
edit_url
+
"/ids/"
+
row
[
options
.
pk
],
__
(
'Edit'
));
},
'click .btn-delone'
:
function
(
e
,
value
,
row
,
index
)
{
e
.
stopPropagation
();
var
that
=
this
;
var
top
=
$
(
that
).
offset
().
top
-
$
(
window
).
scrollTop
();
var
left
=
$
(
that
).
offset
().
left
-
$
(
window
).
scrollLeft
()
-
260
;
...
...
@@ -7950,7 +7975,6 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
Backend
.
api
.
layer
.
close
(
index
);
}
);
}
}
},
...
...
@@ -8018,6 +8042,18 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
});
return
html
.
join
(
' '
);
},
label
:
function
(
value
,
row
,
index
,
custom
)
{
var
colorArr
=
[
'success'
,
'warning'
,
'danger'
,
'info'
];
//渲染Flag
var
html
=
[];
var
arr
=
value
.
split
(
','
);
$
.
each
(
arr
,
function
(
i
,
value
)
{
value
=
value
.
toString
();
var
color
=
colorArr
[
i
%
colorArr
.
length
];
html
.
push
(
'<span class="label label-'
+
color
+
'">'
+
__
(
value
)
+
'</span>'
);
});
return
html
.
join
(
' '
);
},
datetime
:
function
(
value
,
row
,
index
)
{
return
value
?
Moment
(
parseInt
(
value
)
*
1000
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
:
__
(
'None'
);
},
...
...
@@ -11050,8 +11086,6 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'
return
false
;
},
bindevent
:
function
(
form
,
onBeforeSubmit
,
onAfterSubmit
)
{
//移除提交按钮的disabled类
$
(
".layer-footer .btn.disabled"
,
form
).
removeClass
(
"disabled"
);
//绑定表单事件
form
.
validator
(
$
.
extend
({
validClass
:
'has-success'
,
...
...
@@ -11088,6 +11122,9 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'
return
false
;
}
},
form
.
data
(
"validator-options"
)
||
{}));
//移除提交按钮的disabled类
$
(
".layer-footer .btn.disabled"
,
form
).
removeClass
(
"disabled"
);
//绑定select元素事件
if
(
$
(
".selectpicker"
,
form
).
size
()
>
0
)
{
...
...
请
注册
或
登录
后发表评论