Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
MCMS
Commits
a866cd37
Commit
a866cd37
authored
Jun 22, 2020
by
panpp
Browse files
static init
parent
5c8b50e7
Changes
501
Show whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 501+
files are displayed.
Plain diff
Email patch
src/main/webapp/static/plugins/seajs/3.0.0/standalone.js
0 → 100644
View file @
a866cd37
/*! Sea.js 3.0.0 | seajs.org/LICENSE.md */
var
define
,
require
;
!
function
(
a
,
b
){
function
c
(
a
){
return
function
(
b
){
return
{}.
toString
.
call
(
b
)
==
"
[object
"
+
a
+
"
]
"
}}
function
d
(){}
var
e
=
c
(
"
Function
"
),
f
=
{};
d
.
prototype
.
exec
=
function
(){
function
a
(
a
){
return
d
.
get
(
a
).
exec
()}
var
c
=
this
;
if
(
this
.
execed
)
return
c
.
exports
;
this
.
execed
=!
0
;
var
f
=
c
.
factory
,
g
=
e
(
f
)?
f
(
a
,
c
.
exports
=
{},
c
):
f
;
return
g
===
b
&&
(
g
=
c
.
exports
),
delete
c
.
factory
,
c
.
exports
=
g
,
g
},
define
=
function
(
a
,
b
,
c
){
var
e
=
{
id
:
a
,
deps
:
b
,
factory
:
c
};
d
.
save
(
e
)},
d
.
save
=
function
(
a
){
var
b
=
d
.
get
(
a
.
id
);
b
.
id
=
a
.
id
,
b
.
dependencies
=
a
.
deps
,
b
.
factory
=
a
.
factory
},
d
.
get
=
function
(
a
){
return
f
[
a
]
||
(
f
[
a
]
=
new
d
)},
require
=
function
(
a
){
var
b
=
d
.
get
(
a
);
return
b
.
execed
||
b
.
exec
(),
b
.
exports
}}(
this
);
\ No newline at end of file
src/main/webapp/static/plugins/share/iShare.js
0 → 100644
View file @
a866cd37
/**
* iShare.js
* @author singsong
* @email zhansingsong@gmail.com
* @date 2016.3.6
*/
;
(
function
(
root
,
factory
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
define
([],
factory
(
root
));
}
else
if
(
typeof
exports
===
'
object
'
)
{
module
.
exports
=
factory
(
root
);
}
else
{
root
.
iShare
=
factory
(
root
);
}
})(
typeof
global
!==
'
undefined
'
?
global
:
this
.
window
||
this
.
global
,
function
(
root
)
{
/**
* 严格模式
*/
'
use strict
'
;
/**
* Util 单例工具类
*/
var
Util
=
{
/**
* event 事件注册与注销
* addEvent 注册事件
* removeEvent 注销事件
*/
event
:
{
addEvent
:
function
(
element
,
type
,
handler
)
{
if
(
element
.
addEventListener
)
{
element
.
addEventListener
(
type
,
handler
,
false
);
}
else
if
(
element
.
attachEvent
)
{
element
.
attachEvent
(
'
on
'
+
type
,
handler
);
}
else
{
element
[
'
on
'
+
type
]
=
handler
;
}
},
removeEvent
:
function
(
element
,
type
,
handler
)
{
if
(
element
.
removeEventListener
)
{
element
.
removeEventListener
(
type
,
handler
,
false
);
}
else
if
(
element
.
detachEvent
)
{
element
.
detachEvent
(
'
on
'
+
type
,
handler
);
}
else
{
element
[
'
on
'
+
type
]
=
null
;
}
},
stopPropagation
:
function
(
event
)
{
if
(
event
.
stopPropagation
)
{
event
.
stopPropagation
();
}
else
{
event
.
cancelBubble
=
true
;
}
},
preventDefault
:
function
(
event
)
{
if
(
event
.
preventDefault
)
{
event
.
preventDefault
();
}
else
{
event
.
returnValue
=
false
;
}
}
},
/**
* trim
* @param {String} str 字符串
* @return {String}
*/
trim
:
function
(
str
)
{
if
(
String
.
prototype
.
trim
)
{
return
str
.
trim
();
}
return
str
.
replace
(
/^
\s
+|s+$/g
,
''
);
},
/**
* indexOf
* @param {Array} arr 数组
* @param {Object} item 项
* @return {Number} 索引
*/
indexOf
:
function
(
arr
,
item
)
{
if
(
!
this
.
isArray
(
arr
))
{
throw
new
Error
(
arr
.
toString
()
+
'
is a non-Array!
'
);
}
if
(
Array
.
prototype
.
indexOf
)
{
return
arr
.
indexOf
(
item
);
}
for
(
var
i
=
0
,
len
=
arr
.
length
;
i
<
len
;
i
++
)
{
if
(
arr
[
i
]
===
item
)
{
return
i
;
}
}
},
/**
* isArray 判断是否是数组
* @param {Ojbect} arr 被判断对象
* @return {Boolean}
*/
isArray
:
function
(
arr
)
{
if
(
Array
.
isArray
)
{
return
Array
.
isArray
(
arr
);
}
return
Object
.
prototype
.
toString
.
call
(
arr
)
===
'
[object Array]
'
;
},
/**
* validate 验证用户输入的有效性
* @param {Object} ref 参考对象
* @param {Object} o 验证对象
* @return {Array} 错误队列
*/
validate
:
function
(
ref
,
o
)
{
var
_key
,
_result
=
[];
if
(
this
.
isArray
(
o
))
{
for
(
var
i
=
0
,
item
;
item
=
o
[
i
++
];)
{
if
(
this
.
indexOf
(
ref
,
item
)
<
0
)
{
_result
.
push
(
item
);
}
}
}
else
{
for
(
_key
in
o
)
{
if
(
!
(
_key
in
ref
))
{
_result
.
push
(
_key
);
}
}
}
if
(
_result
.
length
!==
0
)
{
throw
new
Error
(
'
there is such no property:
'
+
_result
.
join
(
'
,
'
));
}
},
/**
* getElementTop 获取元素的offsetTop
* @param {DOMObject} element 元素
* @return {Number} offsetTop值
*/
getElementTop
:
function
(
element
)
{
var
_actualTop
=
element
.
offsetTop
,
_current
=
element
.
offsetParent
;
while
(
_current
!==
null
)
{
_actualTop
+=
_current
.
offsetTop
;
_current
=
_current
.
offsetParent
;
}
return
_actualTop
;
},
/**
* getElementLeft 获取元素的offsetLeft
* @param {DOMObject} element 元素
* @return {Number} offsetLeft值
*/
getElementLeft
:
function
(
element
)
{
var
_actualTop
=
element
.
offsetLeft
,
_current
=
element
.
offsetParent
;
while
(
_current
!==
null
)
{
_actualTop
+=
_current
.
offsetLeft
;
_current
=
_current
.
offsetParent
;
}
return
_actualTop
;
},
/**
* handleParameters 处理URL参数
* @param {Object} options 配置项
* @return {String}
*/
handleParameters
:
function
(
options
)
{
var
_str
=
''
;
for
(
var
key
in
options
)
{
_str
=
_str
+
key
+
'
=
'
+
encodeURIComponent
(
options
[
key
])
+
'
&
'
;
}
return
_str
;
},
/**
* extend mix-in
* @return {Ojbect}
*/
extend
:
function
()
{
var
_arg
,
_prop
,
_child
=
{};
for
(
_arg
=
0
;
_arg
<
arguments
.
length
;
_arg
++
)
{
for
(
_prop
in
arguments
[
_arg
])
{
if
(
arguments
[
_arg
].
hasOwnProperty
(
_prop
))
{
_child
[
_prop
]
=
arguments
[
_arg
][
_prop
];
}
}
}
return
_child
;
},
/**
* each 遍历数组
* @param {Array} o 数组
* @param {Function} callback 回调函数
* @return {Object}
*/
each
:
function
(
o
,
callback
)
{
if
(
!
o
)
{
return
;
}
var
_r
;
for
(
var
i
=
0
,
l
=
o
.
length
;
i
<
l
;
i
++
)
{
_r
=
callback
.
call
(
o
[
i
],
i
,
o
[
i
]);
}
return
_r
;
},
/**
* getElementByclassN 通过class获取元素
* @param {String} classNameStr 类名
* @param {Node} parent 父元素
* @return {DOMObject}
*
* @example
* getElementByclassN('.test');
*/
getElementByclassN
:
function
(
classNameStr
,
parent
)
{
if
(
!
classNameStr
)
{
return
;
}
var
_result
=
[];
if
(
!
parent
&&
document
.
querySelectorAll
)
{
_result
=
document
.
querySelectorAll
(
classNameStr
);
if
(
_result
.
length
>
0
)
{
return
_result
;
}
}
var
_cnArr
=
classNameStr
.
split
(
'
.
'
),
_prefix
=
_cnArr
[
0
]
||
'
*
'
,
_suffix
=
_cnArr
[
1
],
_parent
=
parent
?
parent
:
document
.
body
,
_elements
=
_parent
.
getElementsByTagName
(
_prefix
),
_classNames
,
_target
;
var
_me
=
this
;
this
.
each
(
_elements
,
function
(
index
,
item
)
{
if
(
item
.
nodeType
===
1
)
{
_classNames
=
item
.
className
.
split
(
/
\s
+/g
);
_target
=
item
;
_me
.
each
(
_classNames
,
function
(
cindex
,
citem
)
{
if
((
citem
+
''
)
===
_suffix
)
{
_result
.
push
(
_target
);
}
});
}
});
return
_result
;
},
/**
* getmeta 通过name获取对应meta的content值
* @param {String} name meta的name
* @return {String}
*/
getmeta
:
function
(
name
)
{
var
_metas
=
document
.
getElementsByTagName
(
'
meta
'
);
for
(
var
i
=
0
,
_item
;
_item
=
_metas
[
i
++
];)
{
if
(
_item
.
getAttribute
(
'
name
'
)
&&
_item
.
getAttribute
(
'
name
'
).
toLowerCase
()
===
name
)
{
return
_item
.
content
;
}
}
},
/**
* getimg 获取页面中第一张图片的URL
* @return {String}
*/
getimg
:
function
()
{
var
_imgs
=
this
.
convertToArray
(
document
.
body
.
getElementsByTagName
(
'
img
'
));
if
(
_imgs
.
length
===
0
)
{
return
;
}
return
encodeURIComponent
(
_imgs
[
0
].
src
);
},
/**
* getElement 获取指定元素
* @param {String} selector 选择器(仅支持class和id)
*/
getElement
:
function
(
selector
)
{
var
_node
;
if
(
selector
.
charAt
(
0
)
===
'
#
'
)
{
_node
=
document
.
getElementById
(
selector
);
}
else
{
_node
=
this
.
getElementByclassN
(
selector
)[
0
];
}
return
_node
;
},
/**
* parseUrl 解析URL
* @param {Object} tpl 模板
* @param {Object} data 数据
* @return {Object}
*/
parseUrl
:
function
(
tpl
,
data
)
{
var
_tplStr
=
{};
for
(
var
_name
in
tpl
)
{
_tplStr
[
_name
]
=
tpl
[
_name
].
replace
(
/{{
([
A-Z
]
*
)
}}/g
,
function
(
match
,
p1
)
{
var
_key
=
p1
.
toLowerCase
();
if
(
data
[
_key
])
{
return
encodeURIComponent
(
data
[
_key
]);
}
else
{
return
''
;
}
});
}
return
_tplStr
;
},
/**
* isWeixinBrowser 判断是否在微信中
* @return {Boolean}
*/
isWeixinBrowser
:
function
()
{
var
_ua
=
navigator
.
userAgent
.
toLowerCase
();
return
(
/micromessenger/
.
test
(
_ua
))
?
true
:
false
;
},
/**
* convertToArray 转换为数组
* @param {NodeList} nodes Nodes数组
* @return {Array}
*/
convertToArray
:
function
(
nodes
)
{
var
_array
=
null
;
try
{
_array
=
Array
.
prototype
.
slice
.
call
(
nodes
,
0
);
}
catch
(
ex
)
{
// 针对IE8及之前版本
_array
=
new
Array
();
for
(
var
i
=
0
,
len
=
nodes
.
length
;
i
<
len
;
i
++
)
{
_array
.
push
(
nodes
[
i
]);
}
}
return
_array
;
},
/**
* parseClassName 解析类名
* @param {String} className 类名
* @param {Object} tpl 模板数据
* @return {String}
*/
parseClassName
:
function
(
className
,
tpl
)
{
var
_result
=
null
;
var
_arr
=
className
.
split
(
/
\s
+/
);
for
(
var
i
=
0
,
item
;
item
=
_arr
[
i
++
];)
{
if
(
item
in
tpl
)
{
return
tpl
[
item
];
}
}
},
/**
* getWinDimension 获取可视页面的尺寸
* @return {Object}
*/
getWinDimension
:
function
()
{
var
_pageWidth
=
window
.
innerWidth
,
_pageHeight
=
window
.
innerHeight
;
if
(
typeof
_pageWidth
!==
'
number
'
)
{
if
(
document
.
compatMode
===
'
CSS1Compat
'
)
{
_pageWidth
=
document
.
documentElement
.
clientWidth
;
_pageHeight
=
document
.
documentElement
.
clientHeight
;
}
else
{
_pageWidth
=
document
.
body
.
clientWidth
;
_pageHeight
=
document
.
body
.
clientHeight
;
}
}
return
{
pageWidth
:
_pageWidth
,
pageHeight
:
_pageHeight
};
},
/**
* throttle 节流优化
* @param {Function} fn 回调函数
* @param {Number} delay 时间间隔
*/
throttle
:
function
(
fn
,
delay
)
{
var
timer
=
null
;
return
function
()
{
var
context
=
this
,
args
=
arguments
;
clearTimeout
(
timer
);
timer
=
setTimeout
(
function
()
{
fn
.
apply
(
context
,
args
);
},
delay
);
};
},
/**
* loadjs 加载js文件
* @param {String} url 路径
* @param {Function} callback 回调函数
*/
loadjs
:
function
()
{
var
ready
=
false
,
cb
=
[];
return
function
(
url
,
callback
)
{
var
head
=
document
.
getElementsByTagName
(
'
head
'
)[
0
],
node
=
document
.
createElement
(
'
script
'
),
isLoaded
=
document
.
getElementById
(
'
loaded
'
),
W3C
=
document
.
dispatchEvent
;
cb
.
push
(
callback
);
if
(
!
ready
)
{
node
.
setAttribute
(
'
type
'
,
'
text/javascript
'
);
node
.
setAttribute
(
'
id
'
,
'
loaded
'
);
node
.
setAttribute
(
'
src
'
,
url
);
node
[
W3C
?
'
onload
'
:
'
onreadystatechange
'
]
=
function
()
{
if
(
ready
)
{
return
;
}
if
(
W3C
||
/loaded|complete/i
.
test
(
node
.
readyState
))
{
ready
=
true
;
var
temp
;
while
(
temp
=
cb
.
pop
())
{
temp
();
}
}
};
(
!
isLoaded
)
&&
(
head
.
appendChild
(
node
));
}
else
{
if
(
callback
)
{
callback
();
}
}
}
}()
};
/**
* WX 微信类
* @param {DOMObject} element 微信按钮节点
* @param {object} options 配置项
*
*/
function
WX
(
element
,
URL
,
options
)
{
this
.
element
=
element
;
this
.
wxbox
=
document
.
createElement
(
'
div
'
);
// 配置项
this
.
URL
=
URL
;
this
.
settings
=
options
;
this
.
style
=
options
.
style
;
this
.
bgcolor
=
options
.
bgcolor
;
this
.
evenType
=
options
.
evenType
||
'
mouseover
'
;
// 默认触发方式
this
.
isTitleVisibility
=
(
options
.
isTitleVisibility
===
void
(
0
))
?
true
:
options
.
isTitleVisibility
;
// 是否有标题
this
.
title
=
options
.
title
||
'
分享到微信
'
;
this
.
isTipVisibility
=
(
options
.
isTipVisibility
===
void
(
0
))
?
true
:
options
.
isTipVisibility
;
// 是否有提示
this
.
tip
=
options
.
tip
||
'
“扫一扫” 即可将网页分享到朋友圈。
'
;
this
.
upDownFlag
=
''
;
// 保存up|down
this
.
status
=
false
;
// 保存状态
this
.
visibility
=
false
;
// 保存可见性
this
.
qrcode
=
null
;
// 保存二维码
}
WX
.
prototype
.
qrcode
=
null
;
// 保存二维码
WX
.
prototype
=
function
()
{
return
{
constructor
:
WX
,
init
:
function
()
{
//this.render();
this
.
init
=
this
.
show
;
this
.
bindEvent
();
},
loadQrcode
:
function
()
{
// 加载qrcode库
var
js
=
document
.
scripts
;
var
path
=
""
;
var
c
=
js
.
length
;
for
(
var
i
=
0
;
i
<
c
;
i
++
)
{
var
it
=
js
[
i
];
var
src
=
it
.
src
;
if
(
src
.
indexOf
(
"
iShare
"
)
>=
0
)
{
path
=
src
.
substring
(
0
,
src
.
lastIndexOf
(
'
/
'
)
+
1
)
}
}
Util
.
loadjs
(
path
+
'
qrcode.min.js
'
,
this
.
startQR
());
},
render
:
function
()
{
var
_upFlag
=
''
,
_downFlag
=
''
,
// _widthStyle = (!this.isTitleVisibility || !this.isTipVisibility) ? 'width: 110px;' : 'width : 150px;',
_imgStyle
=
''
,
//待定
_titleStyle
=
''
,
//待定
_tipStyle
=
''
,
//待定
_bgcolor
=
this
.
bgcolor
?
this
.
bgcolor
:
'
#ddd
'
,
_radius
=
''
;
// 判断上下
if
(
Util
.
getWinDimension
().
pageHeight
/
2
<
Util
.
getElementTop
(
this
.
element
))
{
_downFlag
=
''
;
_upFlag
=
'
display:none;
'
;
this
.
upDownFlag
=
'
down
'
;
_radius
=
'
border-bottom-left-radius: 0;
'
;
}
else
{
_downFlag
=
'
display:none;
'
;
_upFlag
=
''
;
this
.
upDownFlag
=
'
up
'
;
_radius
=
'
border-top-left-radius: 0;
'
;
}
var
_containerHTML
=
'
<div style="text-align: center;background-color:
'
+
_bgcolor
+
'
;box-shadow: 1px 1px 4px #888888;padding: 8px 8px 4px;border-radius: 4px;
'
+
_radius
+
'
">
'
,
_titleHTML
=
this
.
isTitleVisibility
?
'
<p class="tt" style="line-height:30px;margin:0; text-shadow: 1px 1px rgba(0,0,0,0.1);font-weight: 700;margin-bottom: 4px;
'
+
_titleStyle
+
'
">
'
+
this
.
title
+
'
</p>
'
:
''
,
_imgHTML
=
'
<div class="qrcode" style="width:
'
+
this
.
settings
.
qrcodeW
+
'
px; height:
'
+
this
.
settings
.
qrcodeH
+
'
px; overflow:hidden;"></div>
'
,
_tipHTML
=
this
.
isTipVisibility
?
'
<p style="line-height:20px;font-size: 12px; margin: 4px auto;width: 120px;
'
+
_tipStyle
+
'
">
'
+
this
.
tip
+
'
</p>
'
:
''
,
_upArrowHTML
=
'
<div style="
'
+
_upFlag
+
'
position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-bottom-color:
'
+
_bgcolor
+
'
;border-top: none;"></div>
'
,
_downArrowHTML
=
'
</div><div style="
'
+
_downFlag
+
'
position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-top-color:
'
+
_bgcolor
+
'
;border-bottom: none;"></div>
'
;
// 拼接WXHTML
var
WXSTR
=
_upArrowHTML
+
_containerHTML
+
_titleHTML
+
_imgHTML
+
_tipHTML
+
_downArrowHTML
;
this
.
wxbox
.
innerHTML
=
WXSTR
;
this
.
wxbox
.
style
.
cssText
=
'
position:absolute; left: -99999px;
'
;
this
.
element
.
appendChild
(
this
.
wxbox
);
this
.
loadQrcode
();
},
setLocation
:
function
(
flag
)
{
var
_boxH
=
this
.
wxbox
.
offsetHeight
,
_eW
=
this
.
element
.
offsetWidth
,
_eH
=
this
.
element
.
offsetHeight
,
_boxStyle
=
'
position:absolute; color: #000;z-index: 99999;
'
;
_boxStyle
=
_boxStyle
+
'
left:
'
+
(
_eW
/
2
-
12
)
+
'
px;
'
;
if
(
this
.
upDownFlag
===
'
down
'
)
{
_boxStyle
=
_boxStyle
+
'
bottom:
'
+
(
_eH
)
+
'
px;
'
;
}
else
{
_boxStyle
=
_boxStyle
+
'
top:
'
+
(
_eH
)
+
'
px;
'
;
}
this
.
wxbox
.
style
.
cssText
=
_boxStyle
+
this
.
style
;
flag
&&
(
this
.
hide
());
},
bindEvent
:
function
()
{
var
_me
=
this
;
if
(
this
.
evenType
===
'
click
'
)
{
Util
.
event
.
addEvent
(
this
.
element
,
'
click
'
,
function
(
e
)
{
var
event
=
e
||
window
.
event
;
Util
.
event
.
stopPropagation
(
event
);
Util
.
event
.
preventDefault
(
event
);
if
(
!
_me
.
visibility
)
{
_me
.
show
();
}
else
{
_me
.
hide
();
}
});
}
else
{
Util
.
event
.
addEvent
(
this
.
element
,
'
mouseover
'
,
function
(
e
)
{
var
event
=
e
||
window
.
event
;
// Util.event.stopPropagation(event);
_me
.
show
();
});
Util
.
event
.
addEvent
(
this
.
element
,
'
mouseout
'
,
function
(
e
)
{
var
event
=
e
||
window
.
event
;
// Util.event.stopPropagation(event);
_me
.
hide
();
});
}
},
startQR
:
function
()
{
var
me
=
this
;
return
function
()
{
if
(
!
me
.
qrcode
)
{
me
.
qrcode
=
new
QRCode
(
Util
.
getElementByclassN
(
'
.qrcode
'
,
me
.
wxbox
)[
0
],
{
text
:
me
.
URL
,
width
:
me
.
settings
.
qrcodeW
,
height
:
me
.
settings
.
qrcodeH
,
colorDark
:
me
.
settings
.
qrcodeFgc
,
colorLight
:
me
.
settings
.
qrcodeBgc
});
}
}
},
show
:
function
()
{
this
.
status
=
true
;
this
.
render
();
this
.
setLocation
(
true
);
this
.
wxbox
.
style
.
display
=
'
block
'
;
this
.
visibility
=
true
;
this
.
show
=
function
()
{
this
.
wxbox
.
style
.
display
=
'
block
'
;
this
.
visibility
=
true
;
}
},
hide
:
function
()
{
this
.
wxbox
.
style
.
display
=
'
none
'
;
this
.
visibility
=
false
;
}
};
}();
/**
* iShare 分享
* @param {Object} options 配置项
* @property container
* @property config
*
* @description 提供两种初始化方式
* #1 单例模式
* #2 实例化模式
*/
function
iShare
(
options
)
{
var
defaults
=
{
title
:
document
.
title
,
url
:
location
.
href
,
host
:
location
.
origin
||
''
,
description
:
Util
.
getmeta
(
'
description
'
),
image
:
Util
.
getimg
(),
sites
:
[
'
iShare_weibo
'
,
'
iShare_qq
'
,
'
iShare_wechat
'
,
'
iShare_tencent
'
,
'
iShare_douban
'
,
'
iShare_qzone
'
,
'
iShare_renren
'
,
'
iShare_youdaonote
'
,
'
iShare_facebook
'
,
'
iShare_linkedin
'
,
'
iShare_twitter
'
,
'
iShare_googleplus
'
,
'
iShare_tumblr
'
,
'
iShare_pinterest
'
],
initialized
:
true
,
isTitle
:
true
,
isAbroad
:
false
,
WXoptions
:
{
qrcodeW
:
120
,
qrcodeH
:
120
,
qrcodeBgc
:
'
#fff
'
,
qrcodeFgc
:
'
#000
'
,
bgcolor
:
'
#2BAD13
'
}
};
var
configuration
=
options
||
window
.
iShare_config
;
if
(
configuration
)
{
if
(
configuration
.
container
)
{
if
(
Util
.
getElement
(
configuration
.
container
))
{
this
.
container
=
Util
.
getElement
(
configuration
.
container
);
}
else
{
throw
new
Error
(
'
there is such no className|id: "
'
+
configuration
.
container
+
'
".
'
);
}
}
else
{
throw
new
Error
(
'
container property is required.
'
);
}
}
else
{
throw
new
Error
(
'
container property is required.
'
);
}
var
dataSites
=
this
.
container
.
getAttribute
(
'
data-sites
'
),
dataSitesArr
=
dataSites
?
dataSites
.
split
(
/
\s
*,
\s
*/g
)
:
null
;
/* 验证用户输入的有效性 */
(
dataSitesArr
)
&&
(
Util
.
validate
(
defaults
.
sites
,
dataSitesArr
));
(
configuration
.
config
)
&&
(
Util
.
validate
(
defaults
,
configuration
.
config
));
(
configuration
.
config
.
sites
)
&&
(
Util
.
validate
(
defaults
.
sites
,
configuration
.
config
.
sites
));
/* WX */
this
.
wx
=
null
;
/* 保存defaults */
this
.
defaults
=
defaults
;
this
.
dataSites
=
dataSitesArr
?
{
sites
:
dataSitesArr
}
:
{};
this
.
config
=
configuration
.
config
?
configuration
.
config
:
{};
// 处理isAbroad
if
((
this
.
config
.
isAbroad
===
void
(
0
)))
{
this
.
config
.
sites
=
this
.
defaults
.
sites
;
// 默认
}
else
{
if
(
this
.
config
.
isAbroad
)
{
this
.
config
.
sites
=
defaults
.
sites
.
slice
(
8
);
// 国外
}
else
{
this
.
config
.
sites
=
defaults
.
sites
.
slice
(
0
,
8
);
// 国内
}
}
/* 验证是否在微信中 */
if
(
Util
.
isWeixinBrowser
())
{
(
this
.
defaults
.
indexOf
(
'
iShare_wechat
'
)
>
-
1
)
&&
(
this
.
defaults
.
splice
(
this
.
defaults
.
indexOf
(
'
iShare_wechat
'
),
1
));
(
this
.
dataSites
.
indexOf
(
'
iShare_wechat
'
)
>
-
1
)
&&
(
this
.
dataSites
.
splice
(
this
.
dataSites
.
indexOf
(
'
iShare_wechat
'
),
1
));
(
this
.
config
.
indexOf
(
'
iShare_wechat
'
)
>
-
1
)
&&
(
this
.
config
.
splice
(
this
.
config
.
indexOf
(
'
iShare_wechat
'
),
1
));
}
this
.
settings
=
Util
.
extend
(
defaults
,
this
.
config
,
this
.
dataSites
);
this
.
settings
.
WXoptions
=
Util
.
extend
(
defaults
.
WXoptions
,
this
.
config
.
WXoptions
);
this
.
init
();
}
iShare
.
prototype
=
(
function
()
{
// 接口模板
var
_templates
=
{
iShare_qq
:
'
http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary=&pics={{IMAGE}}
'
,
iShare_qzone
:
'
http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&summary={{DESCRIPTION}}&pics={{IMAGE}}&desc=&site=
'
,
iShare_tencent
:
'
http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}
'
,
iShare_weibo
:
'
http://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}
'
,
iShare_wechat
:
''
,
iShare_douban
:
'
http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}
'
,
iShare_renren
:
'
http://widget.renren.com/dialog/share?resourceUrl={{URL}}&title={{TITLE}}&pic={{IMAGE}}&description={{DESCRIPTION}}
'
,
iShare_youdaonote
:
'
http://note.youdao.com/memory/?title={{TITLE}}&pic={{IMAGE}}&summary={{DESCRIPTION}}&url={{URL}}
'
,
iShare_linkedin
:
'
http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{DESCRIPTION}}&armin=armin
'
,
iShare_facebook
:
'
https://www.facebook.com/sharer/sharer.php?s=100&p[title]={{TITLE}}p[summary]={{DESCRIPTION}}&p[url]={{URL}}&p[images]={{IMAGE}}
'
,
iShare_twitter
:
'
https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}
'
,
iShare_googleplus
:
'
https://plus.google.com/share?url={{URL}}&t={{TITLE}}
'
,
iShare_pinterest
:
'
https://www.pinterest.com/pin/create/button/?url={{URL}}&description={{DESCRIPTION}}&media={{IMAGE}}
'
,
iShare_tumblr
:
'
https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&url={{URL}}&title={{TITLE}}
'
},
_names
=
{
iShare_qq
:
'
QQ好友
'
,
iShare_qzone
:
'
QQ空间
'
,
iShare_tencent
:
'
腾讯微博
'
,
iShare_weibo
:
'
新浪微博
'
,
iShare_wechat
:
'
微信
'
,
iShare_douban
:
'
豆瓣
'
,
iShare_renren
:
'
人人
'
,
iShare_youdaonote
:
'
有道笔记
'
,
iShare_linkedin
:
'
Linkedin
'
,
iShare_facebook
:
'
Facebook
'
,
iShare_twitter
:
'
Twitter
'
,
iShare_googleplus
:
'
Google+
'
,
iShare_pinterest
:
'
Pinterest
'
,
iShare_tumblr
:
'
Tumblr
'
},
_icons
=
{
iShare_qq
:
'
<i class="iconfont qq"></i>
'
,
iShare_qzone
:
'
<i class="iconfont qzone"></i>
'
,
iShare_tencent
:
'
<i class="iconfont tencent" style="vertical-align: -2px;"></i>
'
,
iShare_weibo
:
'
<i class="iconfont weibo"></i>
'
,
iShare_wechat
:
'
<i class="iconfont wechat" style="vertical-align: -2px;"></i>
'
,
iShare_douban
:
'
<i class="iconfont douban" style="vertical-align: -2px;"></i>
'
,
iShare_renren
:
'
<i class="iconfont renren"></i>
'
,
iShare_youdaonote
:
'
<i class="iconfont youdaonote" style="vertical-align: -2px;"></i>
'
,
iShare_linkedin
:
'
<i class="iconfont linkedin" style="vertical-align: 1px;"></i>
'
,
iShare_facebook
:
'
<i class="iconfont facebook" style="vertical-align: 1px;"></i>
'
,
iShare_twitter
:
'
<i class="iconfont twitter" style="vertical-align: 1px;"></i>
'
,
iShare_googleplus
:
'
<i class="iconfont googleplus" style="vertical-align: -2px;"></i>
'
,
iShare_pinterest
:
'
<i class="iconfont pinterest" style="vertical-align: -2px;"></i>
'
,
iShare_tumblr
:
'
<i class="iconfont tumblr" style="vertical-align: 0px;"></i>
'
};
/**
* _updateUrl 更新添加分享的A标签
*/
function
_updateUrl
()
{
if
(
!
this
.
container
.
hasChildNodes
())
{
return
;
}
var
_children
=
this
.
container
.
childNodes
,
_tempURL
;
for
(
var
i
=
0
,
item
;
item
=
_children
[
i
++
];)
{
if
(
item
.
nodeType
===
1
)
{
_tempURL
=
Util
.
parseClassName
(
item
.
className
,
Util
.
parseUrl
(
_templates
,
this
.
settings
));
if
((
item
.
className
).
indexOf
(
'
iShare_wechat
'
)
>
-
1
)
{
// this.wx = new WX(item, _tempURL, this.settings.WXoptions);
this
.
wx
=
new
WX
(
item
,
this
.
settings
.
url
,
this
.
settings
.
WXoptions
);
}
else
{
_tempURL
&&
(
item
.
href
=
_tempURL
);
item
.
target
=
'
_blank
'
;
}
}
}
}
/**
* _createShareElements 创建分享元素
* @param {String} url 分享接口
* @param {String} item key
* @param {Boolean} isWechat 是否是微信
* @return {DOMObject}
*/
function
_createShareElements
(
url
,
item
,
isWechat
)
{
var
_e
=
document
.
createElement
(
'
a
'
);
_e
.
innerHTML
=
_icons
[
item
];
if
(
this
.
settings
.
isTitle
)
{
_e
.
title
=
_names
[
item
];
}
if
(
isWechat
)
{
this
.
wx
=
new
WX
(
_e
,
url
,
this
.
settings
.
WXoptions
);
_e
.
href
=
'
javascript:void(0);
'
;
}
else
{
_e
.
href
=
url
;
_e
.
target
=
'
_blank
'
;
}
return
_e
;
}
/**
* _autoUpdate 动态创建分享
*/
function
_autoUpdate
()
{
var
_docfrag
=
document
.
createDocumentFragment
(),
_tpls
=
Util
.
parseUrl
(
_templates
,
this
.
settings
),
_element
,
_me
=
this
;
Util
.
each
(
_me
.
settings
.
sites
,
function
(
index
,
item
)
{
if
(
item
===
'
iShare_wechat
'
)
{
// _element = _createShareElements.call(_me, _tpls[item], item, true);
_element
=
_createShareElements
.
call
(
_me
,
_me
.
settings
.
url
,
item
,
true
);
}
else
{
_element
=
_createShareElements
.
call
(
_me
,
_tpls
[
item
],
item
);
}
_docfrag
.
appendChild
(
_element
);
});
this
.
container
.
innerHTML
=
''
;
this
.
container
.
appendChild
(
_docfrag
);
}
//prototype
return
{
constructor
:
iShare
,
init
:
function
()
{
if
(
this
.
settings
.
initialized
)
{
_autoUpdate
.
call
(
this
);
}
else
{
_updateUrl
.
call
(
this
);
}
if
(
this
.
wx
)
{
this
.
bindEvent
();
this
.
wx
.
init
();
}
},
bindEvent
:
function
()
{
var
me
=
this
;
// 只绑定一次,进行初始化
function
mouseenterCB
()
{
Util
.
event
.
removeEvent
(
me
.
container
,
'
mouseover
'
,
mouseenterCB
);
}
Util
.
event
.
addEvent
(
this
.
container
,
'
mouseover
'
,
mouseenterCB
);
}
}
})();
if
(
window
.
iShare_config
)
{
return
(
new
iShare
());
}
else
{
return
iShare
;
}
});
\ No newline at end of file
src/main/webapp/static/plugins/share/iShare_tidy.js
0 → 100644
View file @
a866cd37
/**
* iShare.js
* @author singsong
* @email zhansingsong@gmail.com
* @date 2016.3.6
*/
;
(
function
(
root
,
factory
)
{
if
(
typeof
define
===
'
function
'
&&
define
.
amd
)
{
define
([],
factory
(
root
));
}
else
if
(
typeof
exports
===
'
object
'
)
{
module
.
exports
=
factory
(
root
);
}
else
{
root
.
iShare
=
factory
(
root
);
}
})(
typeof
global
!==
'
undefined
'
?
global
:
this
.
window
||
this
.
global
,
function
(
root
)
{
/**
* 严格模式
*/
'
use strict
'
;
/**
* Util 单例工具类
*/
var
Util
=
{
/**
* event 事件注册与注销
* addEvent 注册事件
* removeEvent 注销事件
*/
event
:
{
addEvent
:
function
(
element
,
type
,
handler
){
if
(
element
.
addEventListener
){
element
.
addEventListener
(
type
,
handler
,
false
);
}
else
if
(
element
.
attachEvent
){
element
.
attachEvent
(
'
on
'
+
type
,
handler
);
}
else
{
element
[
'
on
'
+
type
]
=
handler
;
}
},
removeEvent
:
function
(
element
,
type
,
handler
){
if
(
element
.
removeEventListener
){
element
.
removeEventListener
(
type
,
handler
,
false
);
}
else
if
(
element
.
detachEvent
){
element
.
detachEvent
(
'
on
'
+
type
,
handler
);
}
else
{
element
[
'
on
'
+
type
]
=
null
;
}
},
stopPropagation
:
function
(
event
){
if
(
event
.
stopPropagation
)
{
event
.
stopPropagation
();
}
else
{
event
.
cancelBubble
=
true
;
}
},
preventDefault
:
function
(
event
){
if
(
event
.
preventDefault
){
event
.
preventDefault
();
}
else
{
event
.
returnValue
=
false
;
}
}
},
/**
* trim
* @param {String} str 字符串
* @return {String}
*/
trim
:
function
(
str
){
if
(
String
.
prototype
.
trim
){
return
str
.
trim
();
}
return
str
.
replace
(
/^
\s
+|s+$/g
,
''
);
},
/**
* indexOf
* @param {Array} arr 数组
* @param {Object} item 项
* @return {Number} 索引
*/
indexOf
:
function
(
arr
,
item
){
if
(
!
this
.
isArray
(
arr
)){
throw
new
Error
(
arr
.
toString
()
+
'
is a non-Array!
'
);
}
if
(
Array
.
prototype
.
indexOf
){
return
arr
.
indexOf
(
item
);
}
for
(
var
i
=
0
,
len
=
arr
.
length
;
i
<
len
;
i
++
){
if
(
arr
[
i
]
===
item
){
return
i
;
}
}
},
/**
* isArray 判断是否是数组
* @param {Ojbect} arr 被判断对象
* @return {Boolean}
*/
isArray
:
function
(
arr
)
{
if
(
Array
.
isArray
){
return
Array
.
isArray
(
arr
);
}
return
Object
.
prototype
.
toString
.
call
(
arr
)
===
'
[object Array]
'
;
},
/**
* validate 验证用户输入的有效性
* @param {Object} ref 参考对象
* @param {Object} o 验证对象
* @return {Array} 错误队列
*/
validate
:
function
(
ref
,
o
){
var
_key
,
_result
=
[];
if
(
this
.
isArray
(
o
)){
for
(
var
i
=
0
,
item
;
item
=
o
[
i
++
];){
if
(
this
.
indexOf
(
ref
,
item
)
<
0
){
_result
.
push
(
item
);
}
}
}
else
{
for
(
_key
in
o
){
if
(
!
(
_key
in
ref
)){
_result
.
push
(
_key
);
}
}
}
if
(
_result
.
length
!==
0
){
throw
new
Error
(
'
there is such no property:
'
+
_result
.
join
(
'
,
'
));
}
},
/**
* getElementTop 获取元素的offsetTop
* @param {DOMObject} element 元素
* @return {Number} offsetTop值
*/
getElementTop
:
function
(
element
)
{
var
_actualTop
=
element
.
offsetTop
,
_current
=
element
.
offsetParent
;
while
(
_current
!==
null
)
{
_actualTop
+=
_current
.
offsetTop
;
_current
=
_current
.
offsetParent
;
}
return
_actualTop
;
},
/**
* getElementLeft 获取元素的offsetLeft
* @param {DOMObject} element 元素
* @return {Number} offsetLeft值
*/
getElementLeft
:
function
(
element
)
{
var
_actualTop
=
element
.
offsetLeft
,
_current
=
element
.
offsetParent
;
while
(
_current
!==
null
)
{
_actualTop
+=
_current
.
offsetLeft
;
_current
=
_current
.
offsetParent
;
}
return
_actualTop
;
},
/**
* handleParameters 处理URL参数
* @param {Object} options 配置项
* @return {String}
*/
handleParameters
:
function
(
options
)
{
var
_str
=
''
;
for
(
var
key
in
options
){
_str
=
_str
+
key
+
'
=
'
+
encodeURIComponent
(
options
[
key
])
+
'
&
'
;
}
return
_str
;
},
/**
* extend mix-in
* @return {Ojbect}
*/
extend
:
function
()
{
var
_arg
,
_prop
,
_child
=
{};
for
(
_arg
=
0
;
_arg
<
arguments
.
length
;
_arg
++
)
{
for
(
_prop
in
arguments
[
_arg
]){
if
(
arguments
[
_arg
].
hasOwnProperty
(
_prop
)){
_child
[
_prop
]
=
arguments
[
_arg
][
_prop
];
}
}
}
return
_child
;
},
/**
* each 遍历数组
* @param {Array} o 数组
* @param {Function} callback 回调函数
* @return {Object}
*/
each
:
function
(
o
,
callback
)
{
if
(
!
o
){
return
;
}
var
_r
;
for
(
var
i
=
0
,
l
=
o
.
length
;
i
<
l
;
i
++
){
_r
=
callback
.
call
(
o
[
i
],
i
,
o
[
i
]);
}
return
_r
;
},
/**
* getElementByclassN 通过class获取元素
* @param {String} classNameStr 类名
* @param {Node} parent 父元素
* @return {DOMObject}
*
* @example
* getElementByclassN('.test');
*/
getElementByclassN
:
function
(
classNameStr
,
parent
)
{
if
(
!
classNameStr
){
return
;
}
var
_result
=
[];
if
(
!
parent
&&
document
.
querySelectorAll
){
_result
=
document
.
querySelectorAll
(
classNameStr
);
if
(
_result
.
length
>
0
){
return
_result
;
}
}
var
_cnArr
=
classNameStr
.
split
(
'
.
'
),
_prefix
=
_cnArr
[
0
]
||
'
*
'
,
_suffix
=
_cnArr
[
1
],
_parent
=
parent
?
parent
:
document
.
body
,
_elements
=
_parent
.
getElementsByTagName
(
_prefix
),
_classNames
,
_target
;
var
_me
=
this
;
this
.
each
(
_elements
,
function
(
index
,
item
){
if
(
item
.
nodeType
===
1
){
_classNames
=
item
.
className
.
split
(
/
\s
+/g
);
_target
=
item
;
_me
.
each
(
_classNames
,
function
(
cindex
,
citem
){
if
((
citem
+
''
)
===
_suffix
){
_result
.
push
(
_target
);
}
});
}
});
return
_result
;
},
/**
* getmeta 通过name获取对应meta的content值
* @param {String} name meta的name
* @return {String}
*/
getmeta
:
function
(
name
)
{
var
_metas
=
document
.
getElementsByTagName
(
'
meta
'
);
for
(
var
i
=
0
,
_item
;
_item
=
_metas
[
i
++
];){
if
(
_item
.
getAttribute
(
'
name
'
)
&&
_item
.
getAttribute
(
'
name
'
).
toLowerCase
()
===
name
){
return
_item
.
content
;
}
}
},
/**
* getimg 获取页面中第一张图片的URL
* @return {String}
*/
getimg
:
function
(){
var
_imgs
=
this
.
convertToArray
(
document
.
body
.
getElementsByTagName
(
'
img
'
));
if
(
_imgs
.
length
===
0
){
return
;
}
return
encodeURIComponent
(
_imgs
[
0
].
src
);
},
/**
* getElement 获取指定元素
* @param {String} selector 选择器(仅支持class和id)
*/
getElement
:
function
(
selector
){
var
_node
;
if
(
selector
.
charAt
(
0
)
===
'
#
'
){
_node
=
document
.
getElementById
(
selector
);
}
else
{
_node
=
this
.
getElementByclassN
(
selector
)[
0
];
}
return
_node
;
},
/**
* parseUrl 解析URL
* @param {Object} tpl 模板
* @param {Object} data 数据
* @return {Object}
*/
parseUrl
:
function
(
tpl
,
data
){
var
_tplStr
=
{};
for
(
var
_name
in
tpl
){
_tplStr
[
_name
]
=
tpl
[
_name
].
replace
(
/{{
([
A-Z
]
*
)
}}/g
,
function
(
match
,
p1
){
var
_key
=
p1
.
toLowerCase
();
if
(
data
[
_key
]){
return
encodeURIComponent
(
data
[
_key
]);
}
else
{
return
''
;
}
});
}
return
_tplStr
;
},
/**
* isWeixinBrowser 判断是否在微信中
* @return {Boolean}
*/
isWeixinBrowser
:
function
(){
var
_ua
=
navigator
.
userAgent
.
toLowerCase
();
return
(
/micromessenger/
.
test
(
_ua
))
?
true
:
false
;
},
/**
* convertToArray 转换为数组
* @param {NodeList} nodes Nodes数组
* @return {Array}
*/
convertToArray
:
function
(
nodes
){
var
_array
=
null
;
try
{
_array
=
Array
.
prototype
.
slice
.
call
(
nodes
,
0
);
}
catch
(
ex
){
// 针对IE8及之前版本
_array
=
new
Array
();
for
(
var
i
=
0
,
len
=
nodes
.
length
;
i
<
len
;
i
++
)
{
_array
.
push
(
nodes
[
i
]);
}
}
return
_array
;
},
/**
* parseClassName 解析类名
* @param {String} className 类名
* @param {Object} tpl 模板数据
* @return {String}
*/
parseClassName
:
function
(
className
,
tpl
){
var
_result
=
null
;
var
_arr
=
className
.
split
(
/
\s
+/
);
for
(
var
i
=
0
,
item
;
item
=
_arr
[
i
++
];){
if
(
item
in
tpl
){
return
tpl
[
item
];
}
}
},
/**
* getWinDimension 获取可视页面的尺寸
* @return {Object}
*/
getWinDimension
:
function
(){
var
_pageWidth
=
window
.
innerWidth
,
_pageHeight
=
window
.
innerHeight
;
if
(
typeof
_pageWidth
!==
'
number
'
){
if
(
document
.
compatMode
===
'
CSS1Compat
'
){
_pageWidth
=
document
.
documentElement
.
clientWidth
;
_pageHeight
=
document
.
documentElement
.
clientHeight
;
}
else
{
_pageWidth
=
document
.
body
.
clientWidth
;
_pageHeight
=
document
.
body
.
clientHeight
;
}
}
return
{
pageWidth
:
_pageWidth
,
pageHeight
:
_pageHeight
};
},
/**
* throttle 节流优化
* @param {Function} fn 回调函数
* @param {Number} delay 时间间隔
*/
throttle
:
function
(
fn
,
delay
){
var
timer
=
null
;
return
function
(){
var
context
=
this
,
args
=
arguments
;
clearTimeout
(
timer
);
timer
=
setTimeout
(
function
(){
fn
.
apply
(
context
,
args
);
},
delay
);
};
},
/**
* loadjs 加载js文件
* @param {String} url 路径
* @param {Function} callback 回调函数
*/
loadjs
:
function
()
{
var
ready
=
false
,
cb
=
[];
return
function
(
url
,
callback
){
var
head
=
document
.
getElementsByTagName
(
'
head
'
)[
0
],
node
=
document
.
createElement
(
'
script
'
),
isLoaded
=
document
.
getElementById
(
'
loaded
'
),
W3C
=
document
.
dispatchEvent
;
cb
.
push
(
callback
);
if
(
!
ready
){
node
.
setAttribute
(
'
type
'
,
'
text/javascript
'
);
node
.
setAttribute
(
'
id
'
,
'
loaded
'
);
node
.
setAttribute
(
'
src
'
,
url
);
node
[
W3C
?
'
onload
'
:
'
onreadystatechange
'
]
=
function
(){
if
(
ready
){
return
;
}
if
(
W3C
||
/loaded|complete/i
.
test
(
node
.
readyState
))
{
ready
=
true
;
var
temp
;
while
(
temp
=
cb
.
pop
()){
temp
();
}
}
};
(
!
isLoaded
)
&&
(
head
.
appendChild
(
node
));
}
else
{
if
(
callback
){
callback
();
}
}
}
}()
};
/**
* WX 微信类
* @param {DOMObject} element 微信按钮节点
* @param {object} options 配置项
*
*/
function
WX
(
element
,
URL
,
options
)
{
this
.
element
=
element
;
this
.
wxbox
=
document
.
createElement
(
'
div
'
);
// 配置项
this
.
URL
=
URL
;
this
.
settings
=
options
;
this
.
style
=
options
.
style
;
this
.
bgcolor
=
options
.
bgcolor
;
this
.
evenType
=
options
.
evenType
||
'
mouseover
'
;
// 默认触发方式
this
.
isTitleVisibility
=
(
options
.
isTitleVisibility
===
void
(
0
))
?
true
:
options
.
isTitleVisibility
;
// 是否有标题
this
.
title
=
options
.
title
||
'
分享到微信
'
;
this
.
isTipVisibility
=
(
options
.
isTipVisibility
===
void
(
0
))
?
true
:
options
.
isTipVisibility
;
// 是否有提示
this
.
tip
=
options
.
tip
||
'
“扫一扫” 即可将网页分享到朋友圈。
'
;
this
.
upDownFlag
=
''
;
// 保存up|down
this
.
status
=
false
;
// 保存状态
this
.
visibility
=
false
;
// 保存可见性
this
.
qrcode
=
null
;
// 保存二维码
}
WX
.
prototype
=
function
()
{
return
{
constructor
:
WX
,
init
:
function
()
{
this
.
render
();
this
.
init
=
this
.
show
;
this
.
bindEvent
();
},
render
:
function
(){
var
_upFlag
=
''
,
_downFlag
=
''
,
// _widthStyle = (!this.isTitleVisibility || !this.isTipVisibility) ? 'width: 110px;' : 'width : 150px;',
_imgStyle
=
''
,
//待定
_titleStyle
=
''
,
//待定
_tipStyle
=
''
,
//待定
_bgcolor
=
this
.
bgcolor
?
this
.
bgcolor
:
'
#ddd
'
,
_radius
=
''
;
// 判断上下
if
(
Util
.
getWinDimension
().
pageHeight
/
2
<
Util
.
getElementTop
(
this
.
element
))
{
_downFlag
=
''
;
_upFlag
=
'
display:none;
'
;
this
.
upDownFlag
=
'
down
'
;
_radius
=
'
border-bottom-left-radius: 0;
'
;
}
else
{
_downFlag
=
'
display:none;
'
;
_upFlag
=
''
;
this
.
upDownFlag
=
'
up
'
;
_radius
=
'
border-top-left-radius: 0;
'
;
}
var
_containerHTML
=
'
<div style="text-align: center;background-color:
'
+
_bgcolor
+
'
;box-shadow: 1px 1px 4px #888888;padding: 8px 8px 4px;border-radius: 4px;
'
+
_radius
+
'
">
'
,
_titleHTML
=
this
.
isTitleVisibility
?
'
<p class="tt" style="line-height: 30px;margin:0; text-shadow: 1px 1px rgba(0,0,0,0.1);font-weight: 700;margin-bottom: 4px;
'
+
_titleStyle
+
'
">
'
+
this
.
title
+
'
</p>
'
:
''
,
// _imgHTML = '<img style="font-size: 12px;line-height: 20px; -webkit-user-select: none;box-shadow: 1px 1px 2px rgba(0,0,0,0.4); ' + _imgStyle + '" src="' + this.URL + '">',
_imgHTML
=
'
<div class="qrcode" style="width:
'
+
this
.
settings
.
qrcodeW
+
'
px; height:
'
+
this
.
settings
.
qrcodeH
+
'
px; overflow:hidden;"></div>
'
,
_tipHTML
=
this
.
isTipVisibility
?
'
<p style="font-size: 12px;line-height: 20px; margin: 4px auto;width: 120px;
'
+
_tipStyle
+
'
">
'
+
this
.
tip
+
'
</p>
'
:
''
,
_upArrowHTML
=
'
<div style="
'
+
_upFlag
+
'
position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-bottom-color:
'
+
_bgcolor
+
'
;border-top: none;"></div>
'
,
_downArrowHTML
=
'
</div><div style="
'
+
_downFlag
+
'
position: relative;height: 0;width: 0;border-style: solid;border-width: 12px;border-color: transparent;border-top-color:
'
+
_bgcolor
+
'
;border-bottom: none;"></div>
'
;
// 拼接WXHTML
var
WXSTR
=
_upArrowHTML
+
_containerHTML
+
_titleHTML
+
_imgHTML
+
_tipHTML
+
_downArrowHTML
;
this
.
wxbox
.
innerHTML
=
WXSTR
;
this
.
wxbox
.
style
.
cssText
=
'
position:absolute; left: -99999px;
'
;
document
.
body
.
appendChild
(
this
.
wxbox
);
},
setLocation
:
function
(
flag
){
// 渲染后再调整位置
var
_boxW
=
this
.
wxbox
.
offsetWidth
,
_boxH
=
this
.
wxbox
.
offsetHeight
,
_eW
=
this
.
element
.
offsetWidth
,
_eH
=
this
.
element
.
offsetHeight
,
_eTop
=
Util
.
getElementTop
(
this
.
element
),
_eLeft
=
Util
.
getElementLeft
(
this
.
element
),
_boxStyle
=
'
position:absolute; color: #000;z-index: 99999;
'
;
_boxStyle
=
_boxStyle
+
'
left:
'
+
(
_eW
/
2
-
12
+
_eLeft
)
+
'
px;
'
;
if
(
this
.
upDownFlag
===
'
down
'
){
_boxStyle
=
_boxStyle
+
'
top:
'
+
(
_eTop
-
_boxH
)
+
'
px;
'
;
}
else
{
_boxStyle
=
_boxStyle
+
'
top:
'
+
(
_eTop
+
_eH
)
+
'
px;
'
;
}
this
.
wxbox
.
style
.
cssText
=
_boxStyle
+
this
.
style
;
flag
&&
(
this
.
hide
());
},
bindEvent
:
function
()
{
var
_me
=
this
;
if
(
this
.
evenType
===
'
click
'
){
Util
.
event
.
addEvent
(
this
.
element
,
'
click
'
,
function
(
e
){
var
event
=
e
||
window
.
event
;
Util
.
event
.
stopPropagation
(
event
);
Util
.
event
.
preventDefault
(
event
);
if
(
!
_me
.
visibility
){
_me
.
show
();
}
else
{
_me
.
hide
();
}
});
}
else
{
Util
.
event
.
addEvent
(
this
.
element
,
'
mouseover
'
,
function
(
e
){
var
event
=
e
||
window
.
event
;
// Util.event.stopPropagation(event);
_me
.
show
();
});
Util
.
event
.
addEvent
(
this
.
element
,
'
mouseout
'
,
function
(
e
){
var
event
=
e
||
window
.
event
;
// Util.event.stopPropagation(event);
_me
.
hide
();
});
}
Util
.
event
.
addEvent
(
window
,
'
resize
'
,
Util
.
throttle
(
function
(){
(
_me
.
status
)
&&
(
_me
.
visibility
)
&&
(
_me
.
setLocation
());
},
200
));
},
startQR
:
function
(){
var
me
=
this
;
return
function
(){
if
(
!
me
.
qrcode
){
me
.
qrcode
=
new
QRCode
(
Util
.
getElementByclassN
(
'
.qrcode
'
,
me
.
wxbox
)[
0
],
{
text
:
me
.
URL
,
width
:
me
.
settings
.
qrcodeW
,
height
:
me
.
settings
.
qrcodeH
,
colorDark
:
me
.
settings
.
qrcodeFgc
,
colorLight
:
me
.
settings
.
qrcodeBgc
});
}
}
},
show
:
function
(){
this
.
status
=
true
;
this
.
wxbox
.
style
.
display
=
'
block
'
;
this
.
visibility
=
true
;
this
.
show
=
function
(){
this
.
wxbox
.
style
.
display
=
'
block
'
;
this
.
visibility
=
true
;
}
},
hide
:
function
()
{
this
.
wxbox
.
style
.
display
=
'
none
'
;
this
.
visibility
=
false
;
}
};
}();
/**
* iShare 分享
*/
function
iShare
(
options
)
{
var
defaults
=
{
title
:
document
.
title
,
url
:
location
.
href
,
host
:
location
.
origin
||
''
,
description
:
Util
.
getmeta
(
'
description
'
),
image
:
Util
.
getimg
(),
WXoptions
:
{
qrcodeW
:
120
,
qrcodeH
:
120
,
qrcodeBgc
:
'
#fff
'
,
qrcodeFgc
:
'
#000
'
,
bgcolor
:
'
#2BAD13
'
}
};
var
configuration
=
options
||
window
.
iShare_config
;
if
(
configuration
){
if
(
configuration
.
container
){
if
(
Util
.
getElement
(
configuration
.
container
)){
this
.
container
=
Util
.
getElement
(
configuration
.
container
);
}
else
{
throw
new
Error
(
'
there is such no className|id: "
'
+
configuration
.
container
+
'
".
'
);
}
}
else
{
throw
new
Error
(
'
container property is required.
'
);
}
}
else
{
throw
new
Error
(
'
container property is required.
'
);
}
var
dataSites
=
this
.
container
.
getAttribute
(
'
data-sites
'
),
dataSitesArr
=
dataSites
?
dataSites
.
split
(
/
\s
*,
\s
*/g
)
:
null
;
/* 验证用户输入的有效性 */
(
dataSitesArr
)
&&
(
Util
.
validate
(
defaults
.
sites
,
dataSitesArr
));
(
configuration
.
config
)
&&
(
Util
.
validate
(
defaults
,
configuration
.
config
));
(
configuration
.
config
.
sites
)
&&
(
Util
.
validate
(
defaults
.
sites
,
configuration
.
config
.
sites
));
/* WX */
this
.
wx
=
null
;
/* 保存defaults */
this
.
defaults
=
defaults
;
this
.
dataSites
=
dataSitesArr
?
{
sites
:
dataSitesArr
}
:
{};
this
.
config
=
configuration
.
config
?
configuration
.
config
:
{};
this
.
settings
=
Util
.
extend
(
defaults
,
this
.
config
,
this
.
dataSites
);
this
.
settings
.
WXoptions
=
Util
.
extend
(
defaults
.
WXoptions
,
this
.
config
.
WXoptions
);
this
.
init
();
}
iShare
.
prototype
=
(
function
(){
var
_templates
=
{
iShare_qq
:
'
http://connect.qq.com/widget/shareqq/index.html?url={{URL}}&title={{TITLE}}&desc={{DESCRIPTION}}&summary=&pics={{IMAGE}}
'
,
iShare_qzone
:
'
http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITLE}}&summary={{DESCRIPTION}}&pics={{IMAGE}}&desc=&site=
'
,
iShare_tencent
:
'
http://share.v.t.qq.com/index.php?c=share&a=index&title={{TITLE}}&url={{URL}}&pic={{IMAGE}}
'
,
iShare_weibo
:
'
http://service.weibo.com/share/share.php?url={{URL}}&title={{TITLE}}&pic={{IMAGE}}
'
,
iShare_wechat
:
''
,
iShare_douban
:
'
http://shuo.douban.com/!service/share?href={{URL}}&name={{TITLE}}&text={{DESCRIPTION}}&image={{IMAGE}}
'
,
iShare_renren
:
'
http://widget.renren.com/dialog/share?resourceUrl={{URL}}&title={{TITLE}}&pic={{IMAGE}}&description={{DESCRIPTION}}
'
,
iShare_youdaonote
:
'
http://note.youdao.com/memory/?title={{TITLE}}&pic={{IMAGE}}&summary={{DESCRIPTION}}&url={{URL}}
'
,
iShare_linkedin
:
'
http://www.linkedin.com/shareArticle?mini=true&ro=true&title={{TITLE}}&url={{URL}}&summary={{DESCRIPTION}}&armin=armin
'
,
iShare_facebook
:
'
https://www.facebook.com/sharer/sharer.php?s=100&p[title]={{TITLE}}p[summary]={{DESCRIPTION}}&p[url]={{URL}}&p[images]={{IMAGE}}
'
,
iShare_twitter
:
'
https://twitter.com/intent/tweet?text={{TITLE}}&url={{URL}}
'
,
iShare_googleplus
:
'
https://plus.google.com/share?url={{URL}}&t={{TITLE}}
'
,
iShare_pinterest
:
'
https://www.pinterest.com/pin/create/button/?url={{URL}}&description={{DESCRIPTION}}&media={{IMAGE}}
'
,
iShare_tumblr
:
'
https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&url={{URL}}&title={{TITLE}}
'
};
/**
* _updateUrl 更新添加分享的A标签
*/
function
_updateUrl
(){
if
(
this
.
container
===
void
(
0
)
||
!
this
.
container
.
hasChildNodes
()){
return
;
}
var
_children
=
this
.
container
.
childNodes
,
_tempURL
;
for
(
var
i
=
0
,
item
;
item
=
_children
[
i
++
];){
if
(
item
.
nodeType
===
1
){
_tempURL
=
Util
.
parseClassName
(
item
.
className
,
Util
.
parseUrl
(
_templates
,
this
.
settings
));
/* 验证是否在微信中 */
if
((
item
.
className
).
indexOf
(
'
iShare_wechat
'
)
>
-
1
&&
!
(
Util
.
isWeixinBrowser
())){
// this.wx = new WX(item, _tempURL, this.settings.WXoptions);
this
.
wx
=
new
WX
(
item
,
this
.
settings
.
url
,
this
.
settings
.
WXoptions
);
}
else
{
_tempURL
&&
(
item
.
href
=
_tempURL
);
item
.
target
=
'
_blank
'
;
}
}
}
}
//prototype
return
{
constructor
:
iShare
,
init
:
function
()
{
_updateUrl
.
call
(
this
);
if
(
this
.
wx
){
this
.
bindEvent
();
this
.
wx
.
init
();
// 加载qrcode库
Util
.
loadjs
(
ms
.
base
+
'
/static/plugins/share/qrcode.min.js
'
,
this
.
wx
.
startQR
());
}
},
bindEvent
:
function
(){
var
me
=
this
;
// 只绑定一次,进行初始化
function
mouseenterCB
(){
me
.
wx
.
setLocation
(
true
);
Util
.
event
.
removeEvent
(
me
.
container
,
'
mouseover
'
,
mouseenterCB
);
}
Util
.
event
.
addEvent
(
this
.
container
,
'
mouseover
'
,
mouseenterCB
);
}
}
})();
if
(
window
.
iShare_config
){
return
(
new
iShare
());
}
else
{
return
iShare
;
}
});
\ No newline at end of file
src/main/webapp/static/plugins/share/qrcode.min.js
0 → 100644
View file @
a866cd37
var
QRCode
;
!
function
(){
function
a
(
a
){
this
.
mode
=
c
.
MODE_8BIT_BYTE
,
this
.
data
=
a
,
this
.
parsedData
=
[];
for
(
var
b
=
[],
d
=
0
,
e
=
this
.
data
.
length
;
e
>
d
;
d
++
){
var
f
=
this
.
data
.
charCodeAt
(
d
);
f
>
65536
?(
b
[
0
]
=
240
|
(
1835008
&
f
)
>>>
18
,
b
[
1
]
=
128
|
(
258048
&
f
)
>>>
12
,
b
[
2
]
=
128
|
(
4032
&
f
)
>>>
6
,
b
[
3
]
=
128
|
63
&
f
):
f
>
2048
?(
b
[
0
]
=
224
|
(
61440
&
f
)
>>>
12
,
b
[
1
]
=
128
|
(
4032
&
f
)
>>>
6
,
b
[
2
]
=
128
|
63
&
f
):
f
>
128
?(
b
[
0
]
=
192
|
(
1984
&
f
)
>>>
6
,
b
[
1
]
=
128
|
63
&
f
):
b
[
0
]
=
f
,
this
.
parsedData
=
this
.
parsedData
.
concat
(
b
)}
this
.
parsedData
.
length
!=
this
.
data
.
length
&&
(
this
.
parsedData
.
unshift
(
191
),
this
.
parsedData
.
unshift
(
187
),
this
.
parsedData
.
unshift
(
239
))}
function
b
(
a
,
b
){
this
.
typeNumber
=
a
,
this
.
errorCorrectLevel
=
b
,
this
.
modules
=
null
,
this
.
moduleCount
=
0
,
this
.
dataCache
=
null
,
this
.
dataList
=
[]}
function
i
(
a
,
b
){
if
(
void
0
==
a
.
length
)
throw
new
Error
(
a
.
length
+
"
/
"
+
b
);
for
(
var
c
=
0
;
c
<
a
.
length
&&
0
==
a
[
c
];)
c
++
;
this
.
num
=
new
Array
(
a
.
length
-
c
+
b
);
for
(
var
d
=
0
;
d
<
a
.
length
-
c
;
d
++
)
this
.
num
[
d
]
=
a
[
d
+
c
]}
function
j
(
a
,
b
){
this
.
totalCount
=
a
,
this
.
dataCount
=
b
}
function
k
(){
this
.
buffer
=
[],
this
.
length
=
0
}
function
m
(){
return
"
undefined
"
!=
typeof
CanvasRenderingContext2D
}
function
n
(){
var
a
=!
1
,
b
=
navigator
.
userAgent
;
return
/android/i
.
test
(
b
)
&&
(
a
=!
0
,
aMat
=
b
.
toString
().
match
(
/android
([
0-9
]\.[
0-9
])
/i
),
aMat
&&
aMat
[
1
]
&&
(
a
=
parseFloat
(
aMat
[
1
]))),
a
}
function
r
(
a
,
b
){
for
(
var
c
=
1
,
e
=
s
(
a
),
f
=
0
,
g
=
l
.
length
;
g
>=
f
;
f
++
){
var
h
=
0
;
switch
(
b
){
case
d
.
L
:
h
=
l
[
f
][
0
];
break
;
case
d
.
M
:
h
=
l
[
f
][
1
];
break
;
case
d
.
Q
:
h
=
l
[
f
][
2
];
break
;
case
d
.
H
:
h
=
l
[
f
][
3
]}
if
(
h
>=
e
)
break
;
c
++
}
if
(
c
>
l
.
length
)
throw
new
Error
(
"
Too long data
"
);
return
c
}
function
s
(
a
){
var
b
=
encodeURI
(
a
).
toString
().
replace
(
/
\%[
0-9a-fA-F
]{2}
/g
,
"
a
"
);
return
b
.
length
+
(
b
.
length
!=
a
?
3
:
0
)}
a
.
prototype
=
{
getLength
:
function
(){
return
this
.
parsedData
.
length
},
write
:
function
(
a
){
for
(
var
b
=
0
,
c
=
this
.
parsedData
.
length
;
c
>
b
;
b
++
)
a
.
put
(
this
.
parsedData
[
b
],
8
)}},
b
.
prototype
=
{
addData
:
function
(
b
){
var
c
=
new
a
(
b
);
this
.
dataList
.
push
(
c
),
this
.
dataCache
=
null
},
isDark
:
function
(
a
,
b
){
if
(
0
>
a
||
this
.
moduleCount
<=
a
||
0
>
b
||
this
.
moduleCount
<=
b
)
throw
new
Error
(
a
+
"
,
"
+
b
);
return
this
.
modules
[
a
][
b
]},
getModuleCount
:
function
(){
return
this
.
moduleCount
},
make
:
function
(){
this
.
makeImpl
(
!
1
,
this
.
getBestMaskPattern
())},
makeImpl
:
function
(
a
,
c
){
this
.
moduleCount
=
4
*
this
.
typeNumber
+
17
,
this
.
modules
=
new
Array
(
this
.
moduleCount
);
for
(
var
d
=
0
;
d
<
this
.
moduleCount
;
d
++
){
this
.
modules
[
d
]
=
new
Array
(
this
.
moduleCount
);
for
(
var
e
=
0
;
e
<
this
.
moduleCount
;
e
++
)
this
.
modules
[
d
][
e
]
=
null
}
this
.
setupPositionProbePattern
(
0
,
0
),
this
.
setupPositionProbePattern
(
this
.
moduleCount
-
7
,
0
),
this
.
setupPositionProbePattern
(
0
,
this
.
moduleCount
-
7
),
this
.
setupPositionAdjustPattern
(),
this
.
setupTimingPattern
(),
this
.
setupTypeInfo
(
a
,
c
),
this
.
typeNumber
>=
7
&&
this
.
setupTypeNumber
(
a
),
null
==
this
.
dataCache
&&
(
this
.
dataCache
=
b
.
createData
(
this
.
typeNumber
,
this
.
errorCorrectLevel
,
this
.
dataList
)),
this
.
mapData
(
this
.
dataCache
,
c
)},
setupPositionProbePattern
:
function
(
a
,
b
){
for
(
var
c
=-
1
;
7
>=
c
;
c
++
)
if
(
!
(
-
1
>=
a
+
c
||
this
.
moduleCount
<=
a
+
c
))
for
(
var
d
=-
1
;
7
>=
d
;
d
++
)
-
1
>=
b
+
d
||
this
.
moduleCount
<=
b
+
d
||
(
this
.
modules
[
a
+
c
][
b
+
d
]
=
c
>=
0
&&
6
>=
c
&&
(
0
==
d
||
6
==
d
)
||
d
>=
0
&&
6
>=
d
&&
(
0
==
c
||
6
==
c
)
||
c
>=
2
&&
4
>=
c
&&
d
>=
2
&&
4
>=
d
?
!
0
:
!
1
)},
getBestMaskPattern
:
function
(){
for
(
var
a
=
0
,
b
=
0
,
c
=
0
;
8
>
c
;
c
++
){
this
.
makeImpl
(
!
0
,
c
);
var
d
=
f
.
getLostPoint
(
this
);(
0
==
c
||
a
>
d
)
&&
(
a
=
d
,
b
=
c
)}
return
b
},
createMovieClip
:
function
(
a
,
b
,
c
){
var
d
=
a
.
createEmptyMovieClip
(
b
,
c
),
e
=
1
;
this
.
make
();
for
(
var
f
=
0
;
f
<
this
.
modules
.
length
;
f
++
)
for
(
var
g
=
f
*
e
,
h
=
0
;
h
<
this
.
modules
[
f
].
length
;
h
++
){
var
i
=
h
*
e
,
j
=
this
.
modules
[
f
][
h
];
j
&&
(
d
.
beginFill
(
0
,
100
),
d
.
moveTo
(
i
,
g
),
d
.
lineTo
(
i
+
e
,
g
),
d
.
lineTo
(
i
+
e
,
g
+
e
),
d
.
lineTo
(
i
,
g
+
e
),
d
.
endFill
())}
return
d
},
setupTimingPattern
:
function
(){
for
(
var
a
=
8
;
a
<
this
.
moduleCount
-
8
;
a
++
)
null
==
this
.
modules
[
a
][
6
]
&&
(
this
.
modules
[
a
][
6
]
=
0
==
a
%
2
);
for
(
var
b
=
8
;
b
<
this
.
moduleCount
-
8
;
b
++
)
null
==
this
.
modules
[
6
][
b
]
&&
(
this
.
modules
[
6
][
b
]
=
0
==
b
%
2
)},
setupPositionAdjustPattern
:
function
(){
for
(
var
a
=
f
.
getPatternPosition
(
this
.
typeNumber
),
b
=
0
;
b
<
a
.
length
;
b
++
)
for
(
var
c
=
0
;
c
<
a
.
length
;
c
++
){
var
d
=
a
[
b
],
e
=
a
[
c
];
if
(
null
==
this
.
modules
[
d
][
e
])
for
(
var
g
=-
2
;
2
>=
g
;
g
++
)
for
(
var
h
=-
2
;
2
>=
h
;
h
++
)
this
.
modules
[
d
+
g
][
e
+
h
]
=-
2
==
g
||
2
==
g
||-
2
==
h
||
2
==
h
||
0
==
g
&&
0
==
h
?
!
0
:
!
1
}},
setupTypeNumber
:
function
(
a
){
for
(
var
b
=
f
.
getBCHTypeNumber
(
this
.
typeNumber
),
c
=
0
;
18
>
c
;
c
++
){
var
d
=!
a
&&
1
==
(
1
&
b
>>
c
);
this
.
modules
[
Math
.
floor
(
c
/
3
)][
c
%
3
+
this
.
moduleCount
-
8
-
3
]
=
d
}
for
(
var
c
=
0
;
18
>
c
;
c
++
){
var
d
=!
a
&&
1
==
(
1
&
b
>>
c
);
this
.
modules
[
c
%
3
+
this
.
moduleCount
-
8
-
3
][
Math
.
floor
(
c
/
3
)]
=
d
}},
setupTypeInfo
:
function
(
a
,
b
){
for
(
var
c
=
this
.
errorCorrectLevel
<<
3
|
b
,
d
=
f
.
getBCHTypeInfo
(
c
),
e
=
0
;
15
>
e
;
e
++
){
var
g
=!
a
&&
1
==
(
1
&
d
>>
e
);
6
>
e
?
this
.
modules
[
e
][
8
]
=
g
:
8
>
e
?
this
.
modules
[
e
+
1
][
8
]
=
g
:
this
.
modules
[
this
.
moduleCount
-
15
+
e
][
8
]
=
g
}
for
(
var
e
=
0
;
15
>
e
;
e
++
){
var
g
=!
a
&&
1
==
(
1
&
d
>>
e
);
8
>
e
?
this
.
modules
[
8
][
this
.
moduleCount
-
e
-
1
]
=
g
:
9
>
e
?
this
.
modules
[
8
][
15
-
e
-
1
+
1
]
=
g
:
this
.
modules
[
8
][
15
-
e
-
1
]
=
g
}
this
.
modules
[
this
.
moduleCount
-
8
][
8
]
=!
a
},
mapData
:
function
(
a
,
b
){
for
(
var
c
=-
1
,
d
=
this
.
moduleCount
-
1
,
e
=
7
,
g
=
0
,
h
=
this
.
moduleCount
-
1
;
h
>
0
;
h
-=
2
)
for
(
6
==
h
&&
h
--
;;){
for
(
var
i
=
0
;
2
>
i
;
i
++
)
if
(
null
==
this
.
modules
[
d
][
h
-
i
]){
var
j
=!
1
;
g
<
a
.
length
&&
(
j
=
1
==
(
1
&
a
[
g
]
>>>
e
));
var
k
=
f
.
getMask
(
b
,
d
,
h
-
i
);
k
&&
(
j
=!
j
),
this
.
modules
[
d
][
h
-
i
]
=
j
,
e
--
,
-
1
==
e
&&
(
g
++
,
e
=
7
)}
if
(
d
+=
c
,
0
>
d
||
this
.
moduleCount
<=
d
){
d
-=
c
,
c
=-
c
;
break
}}}},
b
.
PAD0
=
236
,
b
.
PAD1
=
17
,
b
.
createData
=
function
(
a
,
c
,
d
){
for
(
var
e
=
j
.
getRSBlocks
(
a
,
c
),
g
=
new
k
,
h
=
0
;
h
<
d
.
length
;
h
++
){
var
i
=
d
[
h
];
g
.
put
(
i
.
mode
,
4
),
g
.
put
(
i
.
getLength
(),
f
.
getLengthInBits
(
i
.
mode
,
a
)),
i
.
write
(
g
)}
for
(
var
l
=
0
,
h
=
0
;
h
<
e
.
length
;
h
++
)
l
+=
e
[
h
].
dataCount
;
if
(
g
.
getLengthInBits
()
>
8
*
l
)
throw
new
Error
(
"
code length overflow. (
"
+
g
.
getLengthInBits
()
+
"
>
"
+
8
*
l
+
"
)
"
);
for
(
g
.
getLengthInBits
()
+
4
<=
8
*
l
&&
g
.
put
(
0
,
4
);
0
!=
g
.
getLengthInBits
()
%
8
;)
g
.
putBit
(
!
1
);
for
(;;){
if
(
g
.
getLengthInBits
()
>=
8
*
l
)
break
;
if
(
g
.
put
(
b
.
PAD0
,
8
),
g
.
getLengthInBits
()
>=
8
*
l
)
break
;
g
.
put
(
b
.
PAD1
,
8
)}
return
b
.
createBytes
(
g
,
e
)},
b
.
createBytes
=
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
0
,
e
=
0
,
g
=
new
Array
(
b
.
length
),
h
=
new
Array
(
b
.
length
),
j
=
0
;
j
<
b
.
length
;
j
++
){
var
k
=
b
[
j
].
dataCount
,
l
=
b
[
j
].
totalCount
-
k
;
d
=
Math
.
max
(
d
,
k
),
e
=
Math
.
max
(
e
,
l
),
g
[
j
]
=
new
Array
(
k
);
for
(
var
m
=
0
;
m
<
g
[
j
].
length
;
m
++
)
g
[
j
][
m
]
=
255
&
a
.
buffer
[
m
+
c
];
c
+=
k
;
var
n
=
f
.
getErrorCorrectPolynomial
(
l
),
o
=
new
i
(
g
[
j
],
n
.
getLength
()
-
1
),
p
=
o
.
mod
(
n
);
h
[
j
]
=
new
Array
(
n
.
getLength
()
-
1
);
for
(
var
m
=
0
;
m
<
h
[
j
].
length
;
m
++
){
var
q
=
m
+
p
.
getLength
()
-
h
[
j
].
length
;
h
[
j
][
m
]
=
q
>=
0
?
p
.
get
(
q
):
0
}}
for
(
var
r
=
0
,
m
=
0
;
m
<
b
.
length
;
m
++
)
r
+=
b
[
m
].
totalCount
;
for
(
var
s
=
new
Array
(
r
),
t
=
0
,
m
=
0
;
d
>
m
;
m
++
)
for
(
var
j
=
0
;
j
<
b
.
length
;
j
++
)
m
<
g
[
j
].
length
&&
(
s
[
t
++
]
=
g
[
j
][
m
]);
for
(
var
m
=
0
;
e
>
m
;
m
++
)
for
(
var
j
=
0
;
j
<
b
.
length
;
j
++
)
m
<
h
[
j
].
length
&&
(
s
[
t
++
]
=
h
[
j
][
m
]);
return
s
};
for
(
var
c
=
{
MODE_NUMBER
:
1
,
MODE_ALPHA_NUM
:
2
,
MODE_8BIT_BYTE
:
4
,
MODE_KANJI
:
8
},
d
=
{
L
:
1
,
M
:
0
,
Q
:
3
,
H
:
2
},
e
=
{
PATTERN000
:
0
,
PATTERN001
:
1
,
PATTERN010
:
2
,
PATTERN011
:
3
,
PATTERN100
:
4
,
PATTERN101
:
5
,
PATTERN110
:
6
,
PATTERN111
:
7
},
f
=
{
PATTERN_POSITION_TABLE
:[[],[
6
,
18
],[
6
,
22
],[
6
,
26
],[
6
,
30
],[
6
,
34
],[
6
,
22
,
38
],[
6
,
24
,
42
],[
6
,
26
,
46
],[
6
,
28
,
50
],[
6
,
30
,
54
],[
6
,
32
,
58
],[
6
,
34
,
62
],[
6
,
26
,
46
,
66
],[
6
,
26
,
48
,
70
],[
6
,
26
,
50
,
74
],[
6
,
30
,
54
,
78
],[
6
,
30
,
56
,
82
],[
6
,
30
,
58
,
86
],[
6
,
34
,
62
,
90
],[
6
,
28
,
50
,
72
,
94
],[
6
,
26
,
50
,
74
,
98
],[
6
,
30
,
54
,
78
,
102
],[
6
,
28
,
54
,
80
,
106
],[
6
,
32
,
58
,
84
,
110
],[
6
,
30
,
58
,
86
,
114
],[
6
,
34
,
62
,
90
,
118
],[
6
,
26
,
50
,
74
,
98
,
122
],[
6
,
30
,
54
,
78
,
102
,
126
],[
6
,
26
,
52
,
78
,
104
,
130
],[
6
,
30
,
56
,
82
,
108
,
134
],[
6
,
34
,
60
,
86
,
112
,
138
],[
6
,
30
,
58
,
86
,
114
,
142
],[
6
,
34
,
62
,
90
,
118
,
146
],[
6
,
30
,
54
,
78
,
102
,
126
,
150
],[
6
,
24
,
50
,
76
,
102
,
128
,
154
],[
6
,
28
,
54
,
80
,
106
,
132
,
158
],[
6
,
32
,
58
,
84
,
110
,
136
,
162
],[
6
,
26
,
54
,
82
,
110
,
138
,
166
],[
6
,
30
,
58
,
86
,
114
,
142
,
170
]],
G15
:
1335
,
G18
:
7973
,
G15_MASK
:
21522
,
getBCHTypeInfo
:
function
(
a
){
for
(
var
b
=
a
<<
10
;
f
.
getBCHDigit
(
b
)
-
f
.
getBCHDigit
(
f
.
G15
)
>=
0
;)
b
^=
f
.
G15
<<
f
.
getBCHDigit
(
b
)
-
f
.
getBCHDigit
(
f
.
G15
);
return
(
a
<<
10
|
b
)
^
f
.
G15_MASK
},
getBCHTypeNumber
:
function
(
a
){
for
(
var
b
=
a
<<
12
;
f
.
getBCHDigit
(
b
)
-
f
.
getBCHDigit
(
f
.
G18
)
>=
0
;)
b
^=
f
.
G18
<<
f
.
getBCHDigit
(
b
)
-
f
.
getBCHDigit
(
f
.
G18
);
return
a
<<
12
|
b
},
getBCHDigit
:
function
(
a
){
for
(
var
b
=
0
;
0
!=
a
;)
b
++
,
a
>>>=
1
;
return
b
},
getPatternPosition
:
function
(
a
){
return
f
.
PATTERN_POSITION_TABLE
[
a
-
1
]},
getMask
:
function
(
a
,
b
,
c
){
switch
(
a
){
case
e
.
PATTERN000
:
return
0
==
(
b
+
c
)
%
2
;
case
e
.
PATTERN001
:
return
0
==
b
%
2
;
case
e
.
PATTERN010
:
return
0
==
c
%
3
;
case
e
.
PATTERN011
:
return
0
==
(
b
+
c
)
%
3
;
case
e
.
PATTERN100
:
return
0
==
(
Math
.
floor
(
b
/
2
)
+
Math
.
floor
(
c
/
3
))
%
2
;
case
e
.
PATTERN101
:
return
0
==
b
*
c
%
2
+
b
*
c
%
3
;
case
e
.
PATTERN110
:
return
0
==
(
b
*
c
%
2
+
b
*
c
%
3
)
%
2
;
case
e
.
PATTERN111
:
return
0
==
(
b
*
c
%
3
+
(
b
+
c
)
%
2
)
%
2
;
default
:
throw
new
Error
(
"
bad maskPattern:
"
+
a
)}},
getErrorCorrectPolynomial
:
function
(
a
){
for
(
var
b
=
new
i
([
1
],
0
),
c
=
0
;
a
>
c
;
c
++
)
b
=
b
.
multiply
(
new
i
([
1
,
g
.
gexp
(
c
)],
0
));
return
b
},
getLengthInBits
:
function
(
a
,
b
){
if
(
b
>=
1
&&
10
>
b
)
switch
(
a
){
case
c
.
MODE_NUMBER
:
return
10
;
case
c
.
MODE_ALPHA_NUM
:
return
9
;
case
c
.
MODE_8BIT_BYTE
:
return
8
;
case
c
.
MODE_KANJI
:
return
8
;
default
:
throw
new
Error
(
"
mode:
"
+
a
)}
else
if
(
27
>
b
)
switch
(
a
){
case
c
.
MODE_NUMBER
:
return
12
;
case
c
.
MODE_ALPHA_NUM
:
return
11
;
case
c
.
MODE_8BIT_BYTE
:
return
16
;
case
c
.
MODE_KANJI
:
return
10
;
default
:
throw
new
Error
(
"
mode:
"
+
a
)}
else
{
if
(
!
(
41
>
b
))
throw
new
Error
(
"
type:
"
+
b
);
switch
(
a
){
case
c
.
MODE_NUMBER
:
return
14
;
case
c
.
MODE_ALPHA_NUM
:
return
13
;
case
c
.
MODE_8BIT_BYTE
:
return
16
;
case
c
.
MODE_KANJI
:
return
12
;
default
:
throw
new
Error
(
"
mode:
"
+
a
)}}},
getLostPoint
:
function
(
a
){
for
(
var
b
=
a
.
getModuleCount
(),
c
=
0
,
d
=
0
;
b
>
d
;
d
++
)
for
(
var
e
=
0
;
b
>
e
;
e
++
){
for
(
var
f
=
0
,
g
=
a
.
isDark
(
d
,
e
),
h
=-
1
;
1
>=
h
;
h
++
)
if
(
!
(
0
>
d
+
h
||
d
+
h
>=
b
))
for
(
var
i
=-
1
;
1
>=
i
;
i
++
)
0
>
e
+
i
||
e
+
i
>=
b
||
(
0
!=
h
||
0
!=
i
)
&&
g
==
a
.
isDark
(
d
+
h
,
e
+
i
)
&&
f
++
;
f
>
5
&&
(
c
+=
3
+
f
-
5
)}
for
(
var
d
=
0
;
b
-
1
>
d
;
d
++
)
for
(
var
e
=
0
;
b
-
1
>
e
;
e
++
){
var
j
=
0
;
a
.
isDark
(
d
,
e
)
&&
j
++
,
a
.
isDark
(
d
+
1
,
e
)
&&
j
++
,
a
.
isDark
(
d
,
e
+
1
)
&&
j
++
,
a
.
isDark
(
d
+
1
,
e
+
1
)
&&
j
++
,(
0
==
j
||
4
==
j
)
&&
(
c
+=
3
)}
for
(
var
d
=
0
;
b
>
d
;
d
++
)
for
(
var
e
=
0
;
b
-
6
>
e
;
e
++
)
a
.
isDark
(
d
,
e
)
&&!
a
.
isDark
(
d
,
e
+
1
)
&&
a
.
isDark
(
d
,
e
+
2
)
&&
a
.
isDark
(
d
,
e
+
3
)
&&
a
.
isDark
(
d
,
e
+
4
)
&&!
a
.
isDark
(
d
,
e
+
5
)
&&
a
.
isDark
(
d
,
e
+
6
)
&&
(
c
+=
40
);
for
(
var
e
=
0
;
b
>
e
;
e
++
)
for
(
var
d
=
0
;
b
-
6
>
d
;
d
++
)
a
.
isDark
(
d
,
e
)
&&!
a
.
isDark
(
d
+
1
,
e
)
&&
a
.
isDark
(
d
+
2
,
e
)
&&
a
.
isDark
(
d
+
3
,
e
)
&&
a
.
isDark
(
d
+
4
,
e
)
&&!
a
.
isDark
(
d
+
5
,
e
)
&&
a
.
isDark
(
d
+
6
,
e
)
&&
(
c
+=
40
);
for
(
var
k
=
0
,
e
=
0
;
b
>
e
;
e
++
)
for
(
var
d
=
0
;
b
>
d
;
d
++
)
a
.
isDark
(
d
,
e
)
&&
k
++
;
var
l
=
Math
.
abs
(
100
*
k
/
b
/
b
-
50
)
/
5
;
return
c
+=
10
*
l
}},
g
=
{
glog
:
function
(
a
){
if
(
1
>
a
)
throw
new
Error
(
"
glog(
"
+
a
+
"
)
"
);
return
g
.
LOG_TABLE
[
a
]},
gexp
:
function
(
a
){
for
(;
0
>
a
;)
a
+=
255
;
for
(;
a
>=
256
;)
a
-=
255
;
return
g
.
EXP_TABLE
[
a
]},
EXP_TABLE
:
new
Array
(
256
),
LOG_TABLE
:
new
Array
(
256
)},
h
=
0
;
8
>
h
;
h
++
)
g
.
EXP_TABLE
[
h
]
=
1
<<
h
;
for
(
var
h
=
8
;
256
>
h
;
h
++
)
g
.
EXP_TABLE
[
h
]
=
g
.
EXP_TABLE
[
h
-
4
]
^
g
.
EXP_TABLE
[
h
-
5
]
^
g
.
EXP_TABLE
[
h
-
6
]
^
g
.
EXP_TABLE
[
h
-
8
];
for
(
var
h
=
0
;
255
>
h
;
h
++
)
g
.
LOG_TABLE
[
g
.
EXP_TABLE
[
h
]]
=
h
;
i
.
prototype
=
{
get
:
function
(
a
){
return
this
.
num
[
a
]},
getLength
:
function
(){
return
this
.
num
.
length
},
multiply
:
function
(
a
){
for
(
var
b
=
new
Array
(
this
.
getLength
()
+
a
.
getLength
()
-
1
),
c
=
0
;
c
<
this
.
getLength
();
c
++
)
for
(
var
d
=
0
;
d
<
a
.
getLength
();
d
++
)
b
[
c
+
d
]
^=
g
.
gexp
(
g
.
glog
(
this
.
get
(
c
))
+
g
.
glog
(
a
.
get
(
d
)));
return
new
i
(
b
,
0
)},
mod
:
function
(
a
){
if
(
this
.
getLength
()
-
a
.
getLength
()
<
0
)
return
this
;
for
(
var
b
=
g
.
glog
(
this
.
get
(
0
))
-
g
.
glog
(
a
.
get
(
0
)),
c
=
new
Array
(
this
.
getLength
()),
d
=
0
;
d
<
this
.
getLength
();
d
++
)
c
[
d
]
=
this
.
get
(
d
);
for
(
var
d
=
0
;
d
<
a
.
getLength
();
d
++
)
c
[
d
]
^=
g
.
gexp
(
g
.
glog
(
a
.
get
(
d
))
+
b
);
return
new
i
(
c
,
0
).
mod
(
a
)}},
j
.
RS_BLOCK_TABLE
=
[[
1
,
26
,
19
],[
1
,
26
,
16
],[
1
,
26
,
13
],[
1
,
26
,
9
],[
1
,
44
,
34
],[
1
,
44
,
28
],[
1
,
44
,
22
],[
1
,
44
,
16
],[
1
,
70
,
55
],[
1
,
70
,
44
],[
2
,
35
,
17
],[
2
,
35
,
13
],[
1
,
100
,
80
],[
2
,
50
,
32
],[
2
,
50
,
24
],[
4
,
25
,
9
],[
1
,
134
,
108
],[
2
,
67
,
43
],[
2
,
33
,
15
,
2
,
34
,
16
],[
2
,
33
,
11
,
2
,
34
,
12
],[
2
,
86
,
68
],[
4
,
43
,
27
],[
4
,
43
,
19
],[
4
,
43
,
15
],[
2
,
98
,
78
],[
4
,
49
,
31
],[
2
,
32
,
14
,
4
,
33
,
15
],[
4
,
39
,
13
,
1
,
40
,
14
],[
2
,
121
,
97
],[
2
,
60
,
38
,
2
,
61
,
39
],[
4
,
40
,
18
,
2
,
41
,
19
],[
4
,
40
,
14
,
2
,
41
,
15
],[
2
,
146
,
116
],[
3
,
58
,
36
,
2
,
59
,
37
],[
4
,
36
,
16
,
4
,
37
,
17
],[
4
,
36
,
12
,
4
,
37
,
13
],[
2
,
86
,
68
,
2
,
87
,
69
],[
4
,
69
,
43
,
1
,
70
,
44
],[
6
,
43
,
19
,
2
,
44
,
20
],[
6
,
43
,
15
,
2
,
44
,
16
],[
4
,
101
,
81
],[
1
,
80
,
50
,
4
,
81
,
51
],[
4
,
50
,
22
,
4
,
51
,
23
],[
3
,
36
,
12
,
8
,
37
,
13
],[
2
,
116
,
92
,
2
,
117
,
93
],[
6
,
58
,
36
,
2
,
59
,
37
],[
4
,
46
,
20
,
6
,
47
,
21
],[
7
,
42
,
14
,
4
,
43
,
15
],[
4
,
133
,
107
],[
8
,
59
,
37
,
1
,
60
,
38
],[
8
,
44
,
20
,
4
,
45
,
21
],[
12
,
33
,
11
,
4
,
34
,
12
],[
3
,
145
,
115
,
1
,
146
,
116
],[
4
,
64
,
40
,
5
,
65
,
41
],[
11
,
36
,
16
,
5
,
37
,
17
],[
11
,
36
,
12
,
5
,
37
,
13
],[
5
,
109
,
87
,
1
,
110
,
88
],[
5
,
65
,
41
,
5
,
66
,
42
],[
5
,
54
,
24
,
7
,
55
,
25
],[
11
,
36
,
12
],[
5
,
122
,
98
,
1
,
123
,
99
],[
7
,
73
,
45
,
3
,
74
,
46
],[
15
,
43
,
19
,
2
,
44
,
20
],[
3
,
45
,
15
,
13
,
46
,
16
],[
1
,
135
,
107
,
5
,
136
,
108
],[
10
,
74
,
46
,
1
,
75
,
47
],[
1
,
50
,
22
,
15
,
51
,
23
],[
2
,
42
,
14
,
17
,
43
,
15
],[
5
,
150
,
120
,
1
,
151
,
121
],[
9
,
69
,
43
,
4
,
70
,
44
],[
17
,
50
,
22
,
1
,
51
,
23
],[
2
,
42
,
14
,
19
,
43
,
15
],[
3
,
141
,
113
,
4
,
142
,
114
],[
3
,
70
,
44
,
11
,
71
,
45
],[
17
,
47
,
21
,
4
,
48
,
22
],[
9
,
39
,
13
,
16
,
40
,
14
],[
3
,
135
,
107
,
5
,
136
,
108
],[
3
,
67
,
41
,
13
,
68
,
42
],[
15
,
54
,
24
,
5
,
55
,
25
],[
15
,
43
,
15
,
10
,
44
,
16
],[
4
,
144
,
116
,
4
,
145
,
117
],[
17
,
68
,
42
],[
17
,
50
,
22
,
6
,
51
,
23
],[
19
,
46
,
16
,
6
,
47
,
17
],[
2
,
139
,
111
,
7
,
140
,
112
],[
17
,
74
,
46
],[
7
,
54
,
24
,
16
,
55
,
25
],[
34
,
37
,
13
],[
4
,
151
,
121
,
5
,
152
,
122
],[
4
,
75
,
47
,
14
,
76
,
48
],[
11
,
54
,
24
,
14
,
55
,
25
],[
16
,
45
,
15
,
14
,
46
,
16
],[
6
,
147
,
117
,
4
,
148
,
118
],[
6
,
73
,
45
,
14
,
74
,
46
],[
11
,
54
,
24
,
16
,
55
,
25
],[
30
,
46
,
16
,
2
,
47
,
17
],[
8
,
132
,
106
,
4
,
133
,
107
],[
8
,
75
,
47
,
13
,
76
,
48
],[
7
,
54
,
24
,
22
,
55
,
25
],[
22
,
45
,
15
,
13
,
46
,
16
],[
10
,
142
,
114
,
2
,
143
,
115
],[
19
,
74
,
46
,
4
,
75
,
47
],[
28
,
50
,
22
,
6
,
51
,
23
],[
33
,
46
,
16
,
4
,
47
,
17
],[
8
,
152
,
122
,
4
,
153
,
123
],[
22
,
73
,
45
,
3
,
74
,
46
],[
8
,
53
,
23
,
26
,
54
,
24
],[
12
,
45
,
15
,
28
,
46
,
16
],[
3
,
147
,
117
,
10
,
148
,
118
],[
3
,
73
,
45
,
23
,
74
,
46
],[
4
,
54
,
24
,
31
,
55
,
25
],[
11
,
45
,
15
,
31
,
46
,
16
],[
7
,
146
,
116
,
7
,
147
,
117
],[
21
,
73
,
45
,
7
,
74
,
46
],[
1
,
53
,
23
,
37
,
54
,
24
],[
19
,
45
,
15
,
26
,
46
,
16
],[
5
,
145
,
115
,
10
,
146
,
116
],[
19
,
75
,
47
,
10
,
76
,
48
],[
15
,
54
,
24
,
25
,
55
,
25
],[
23
,
45
,
15
,
25
,
46
,
16
],[
13
,
145
,
115
,
3
,
146
,
116
],[
2
,
74
,
46
,
29
,
75
,
47
],[
42
,
54
,
24
,
1
,
55
,
25
],[
23
,
45
,
15
,
28
,
46
,
16
],[
17
,
145
,
115
],[
10
,
74
,
46
,
23
,
75
,
47
],[
10
,
54
,
24
,
35
,
55
,
25
],[
19
,
45
,
15
,
35
,
46
,
16
],[
17
,
145
,
115
,
1
,
146
,
116
],[
14
,
74
,
46
,
21
,
75
,
47
],[
29
,
54
,
24
,
19
,
55
,
25
],[
11
,
45
,
15
,
46
,
46
,
16
],[
13
,
145
,
115
,
6
,
146
,
116
],[
14
,
74
,
46
,
23
,
75
,
47
],[
44
,
54
,
24
,
7
,
55
,
25
],[
59
,
46
,
16
,
1
,
47
,
17
],[
12
,
151
,
121
,
7
,
152
,
122
],[
12
,
75
,
47
,
26
,
76
,
48
],[
39
,
54
,
24
,
14
,
55
,
25
],[
22
,
45
,
15
,
41
,
46
,
16
],[
6
,
151
,
121
,
14
,
152
,
122
],[
6
,
75
,
47
,
34
,
76
,
48
],[
46
,
54
,
24
,
10
,
55
,
25
],[
2
,
45
,
15
,
64
,
46
,
16
],[
17
,
152
,
122
,
4
,
153
,
123
],[
29
,
74
,
46
,
14
,
75
,
47
],[
49
,
54
,
24
,
10
,
55
,
25
],[
24
,
45
,
15
,
46
,
46
,
16
],[
4
,
152
,
122
,
18
,
153
,
123
],[
13
,
74
,
46
,
32
,
75
,
47
],[
48
,
54
,
24
,
14
,
55
,
25
],[
42
,
45
,
15
,
32
,
46
,
16
],[
20
,
147
,
117
,
4
,
148
,
118
],[
40
,
75
,
47
,
7
,
76
,
48
],[
43
,
54
,
24
,
22
,
55
,
25
],[
10
,
45
,
15
,
67
,
46
,
16
],[
19
,
148
,
118
,
6
,
149
,
119
],[
18
,
75
,
47
,
31
,
76
,
48
],[
34
,
54
,
24
,
34
,
55
,
25
],[
20
,
45
,
15
,
61
,
46
,
16
]],
j
.
getRSBlocks
=
function
(
a
,
b
){
var
c
=
j
.
getRsBlockTable
(
a
,
b
);
if
(
void
0
==
c
)
throw
new
Error
(
"
bad rs block @ typeNumber:
"
+
a
+
"
/errorCorrectLevel:
"
+
b
);
for
(
var
d
=
c
.
length
/
3
,
e
=
[],
f
=
0
;
d
>
f
;
f
++
)
for
(
var
g
=
c
[
3
*
f
+
0
],
h
=
c
[
3
*
f
+
1
],
i
=
c
[
3
*
f
+
2
],
k
=
0
;
g
>
k
;
k
++
)
e
.
push
(
new
j
(
h
,
i
));
return
e
},
j
.
getRsBlockTable
=
function
(
a
,
b
){
switch
(
b
){
case
d
.
L
:
return
j
.
RS_BLOCK_TABLE
[
4
*
(
a
-
1
)
+
0
];
case
d
.
M
:
return
j
.
RS_BLOCK_TABLE
[
4
*
(
a
-
1
)
+
1
];
case
d
.
Q
:
return
j
.
RS_BLOCK_TABLE
[
4
*
(
a
-
1
)
+
2
];
case
d
.
H
:
return
j
.
RS_BLOCK_TABLE
[
4
*
(
a
-
1
)
+
3
];
default
:
return
void
0
}},
k
.
prototype
=
{
get
:
function
(
a
){
var
b
=
Math
.
floor
(
a
/
8
);
return
1
==
(
1
&
this
.
buffer
[
b
]
>>>
7
-
a
%
8
)},
put
:
function
(
a
,
b
){
for
(
var
c
=
0
;
b
>
c
;
c
++
)
this
.
putBit
(
1
==
(
1
&
a
>>>
b
-
c
-
1
))},
getLengthInBits
:
function
(){
return
this
.
length
},
putBit
:
function
(
a
){
var
b
=
Math
.
floor
(
this
.
length
/
8
);
this
.
buffer
.
length
<=
b
&&
this
.
buffer
.
push
(
0
),
a
&&
(
this
.
buffer
[
b
]
|=
128
>>>
this
.
length
%
8
),
this
.
length
++
}};
var
l
=
[[
17
,
14
,
11
,
7
],[
32
,
26
,
20
,
14
],[
53
,
42
,
32
,
24
],[
78
,
62
,
46
,
34
],[
106
,
84
,
60
,
44
],[
134
,
106
,
74
,
58
],[
154
,
122
,
86
,
64
],[
192
,
152
,
108
,
84
],[
230
,
180
,
130
,
98
],[
271
,
213
,
151
,
119
],[
321
,
251
,
177
,
137
],[
367
,
287
,
203
,
155
],[
425
,
331
,
241
,
177
],[
458
,
362
,
258
,
194
],[
520
,
412
,
292
,
220
],[
586
,
450
,
322
,
250
],[
644
,
504
,
364
,
280
],[
718
,
560
,
394
,
310
],[
792
,
624
,
442
,
338
],[
858
,
666
,
482
,
382
],[
929
,
711
,
509
,
403
],[
1003
,
779
,
565
,
439
],[
1091
,
857
,
611
,
461
],[
1171
,
911
,
661
,
511
],[
1273
,
997
,
715
,
535
],[
1367
,
1059
,
751
,
593
],[
1465
,
1125
,
805
,
625
],[
1528
,
1190
,
868
,
658
],[
1628
,
1264
,
908
,
698
],[
1732
,
1370
,
982
,
742
],[
1840
,
1452
,
1030
,
790
],[
1952
,
1538
,
1112
,
842
],[
2068
,
1628
,
1168
,
898
],[
2188
,
1722
,
1228
,
958
],[
2303
,
1809
,
1283
,
983
],[
2431
,
1911
,
1351
,
1051
],[
2563
,
1989
,
1423
,
1093
],[
2699
,
2099
,
1499
,
1139
],[
2809
,
2213
,
1579
,
1219
],[
2953
,
2331
,
1663
,
1273
]],
o
=
function
(){
var
a
=
function
(
a
,
b
){
this
.
_el
=
a
,
this
.
_htOption
=
b
};
return
a
.
prototype
.
draw
=
function
(
a
){
function
g
(
a
,
b
){
var
c
=
document
.
createElementNS
(
"
http://www.w3.org/2000/svg
"
,
a
);
for
(
var
d
in
b
)
b
.
hasOwnProperty
(
d
)
&&
c
.
setAttribute
(
d
,
b
[
d
]);
return
c
}
var
b
=
this
.
_htOption
,
c
=
this
.
_el
,
d
=
a
.
getModuleCount
();
Math
.
floor
(
b
.
width
/
d
),
Math
.
floor
(
b
.
height
/
d
),
this
.
clear
();
var
h
=
g
(
"
svg
"
,{
viewBox
:
"
0 0
"
+
String
(
d
)
+
"
"
+
String
(
d
),
width
:
"
100%
"
,
height
:
"
100%
"
,
fill
:
b
.
colorLight
});
h
.
setAttributeNS
(
"
http://www.w3.org/2000/xmlns/
"
,
"
xmlns:xlink
"
,
"
http://www.w3.org/1999/xlink
"
),
c
.
appendChild
(
h
),
h
.
appendChild
(
g
(
"
rect
"
,{
fill
:
b
.
colorDark
,
width
:
"
1
"
,
height
:
"
1
"
,
id
:
"
template
"
}));
for
(
var
i
=
0
;
d
>
i
;
i
++
)
for
(
var
j
=
0
;
d
>
j
;
j
++
)
if
(
a
.
isDark
(
i
,
j
)){
var
k
=
g
(
"
use
"
,{
x
:
String
(
i
),
y
:
String
(
j
)});
k
.
setAttributeNS
(
"
http://www.w3.org/1999/xlink
"
,
"
href
"
,
"
#template
"
),
h
.
appendChild
(
k
)}},
a
.
prototype
.
clear
=
function
(){
for
(;
this
.
_el
.
hasChildNodes
();)
this
.
_el
.
removeChild
(
this
.
_el
.
lastChild
)},
a
}(),
p
=
"
svg
"
===
document
.
documentElement
.
tagName
.
toLowerCase
(),
q
=
p
?
o
:
m
()?
function
(){
function
a
(){
this
.
_elImage
.
src
=
this
.
_elCanvas
.
toDataURL
(
"
image/png
"
),
this
.
_elImage
.
style
.
display
=
"
block
"
,
this
.
_elCanvas
.
style
.
display
=
"
none
"
}
function
d
(
a
,
b
){
var
c
=
this
;
if
(
c
.
_fFail
=
b
,
c
.
_fSuccess
=
a
,
null
===
c
.
_bSupportDataURI
){
var
d
=
document
.
createElement
(
"
img
"
),
e
=
function
(){
c
.
_bSupportDataURI
=!
1
,
c
.
_fFail
&&
_fFail
.
call
(
c
)},
f
=
function
(){
c
.
_bSupportDataURI
=!
0
,
c
.
_fSuccess
&&
c
.
_fSuccess
.
call
(
c
)};
return
d
.
onabort
=
e
,
d
.
onerror
=
e
,
d
.
onload
=
f
,
d
.
src
=
"
data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
"
,
void
0
}
c
.
_bSupportDataURI
===!
0
&&
c
.
_fSuccess
?
c
.
_fSuccess
.
call
(
c
):
c
.
_bSupportDataURI
===!
1
&&
c
.
_fFail
&&
c
.
_fFail
.
call
(
c
)}
if
(
this
.
_android
&&
this
.
_android
<=
2.1
){
var
b
=
1
/
window
.
devicePixelRatio
,
c
=
CanvasRenderingContext2D
.
prototype
.
drawImage
;
CanvasRenderingContext2D
.
prototype
.
drawImage
=
function
(
a
,
d
,
e
,
f
,
g
,
h
,
i
,
j
){
if
(
"
nodeName
"
in
a
&&
/img/i
.
test
(
a
.
nodeName
))
for
(
var
l
=
arguments
.
length
-
1
;
l
>=
1
;
l
--
)
arguments
[
l
]
=
arguments
[
l
]
*
b
;
else
"
undefined
"
==
typeof
j
&&
(
arguments
[
1
]
*=
b
,
arguments
[
2
]
*=
b
,
arguments
[
3
]
*=
b
,
arguments
[
4
]
*=
b
);
c
.
apply
(
this
,
arguments
)}}
var
e
=
function
(
a
,
b
){
this
.
_bIsPainted
=!
1
,
this
.
_android
=
n
(),
this
.
_htOption
=
b
,
this
.
_elCanvas
=
document
.
createElement
(
"
canvas
"
),
this
.
_elCanvas
.
width
=
b
.
width
,
this
.
_elCanvas
.
height
=
b
.
height
,
a
.
appendChild
(
this
.
_elCanvas
),
this
.
_el
=
a
,
this
.
_oContext
=
this
.
_elCanvas
.
getContext
(
"
2d
"
),
this
.
_bIsPainted
=!
1
,
this
.
_elImage
=
document
.
createElement
(
"
img
"
),
this
.
_elImage
.
style
.
display
=
"
none
"
,
this
.
_el
.
appendChild
(
this
.
_elImage
),
this
.
_bSupportDataURI
=
null
};
return
e
.
prototype
.
draw
=
function
(
a
){
var
b
=
this
.
_elImage
,
c
=
this
.
_oContext
,
d
=
this
.
_htOption
,
e
=
a
.
getModuleCount
(),
f
=
d
.
width
/
e
,
g
=
d
.
height
/
e
,
h
=
Math
.
round
(
f
),
i
=
Math
.
round
(
g
);
b
.
style
.
display
=
"
none
"
,
this
.
clear
();
for
(
var
j
=
0
;
e
>
j
;
j
++
)
for
(
var
k
=
0
;
e
>
k
;
k
++
){
var
l
=
a
.
isDark
(
j
,
k
),
m
=
k
*
f
,
n
=
j
*
g
;
c
.
strokeStyle
=
l
?
d
.
colorDark
:
d
.
colorLight
,
c
.
lineWidth
=
1
,
c
.
fillStyle
=
l
?
d
.
colorDark
:
d
.
colorLight
,
c
.
fillRect
(
m
,
n
,
f
,
g
),
c
.
strokeRect
(
Math
.
floor
(
m
)
+
.
5
,
Math
.
floor
(
n
)
+
.
5
,
h
,
i
),
c
.
strokeRect
(
Math
.
ceil
(
m
)
-
.
5
,
Math
.
ceil
(
n
)
-
.
5
,
h
,
i
)}
this
.
_bIsPainted
=!
0
},
e
.
prototype
.
makeImage
=
function
(){
this
.
_bIsPainted
&&
d
.
call
(
this
,
a
)},
e
.
prototype
.
isPainted
=
function
(){
return
this
.
_bIsPainted
},
e
.
prototype
.
clear
=
function
(){
this
.
_oContext
.
clearRect
(
0
,
0
,
this
.
_elCanvas
.
width
,
this
.
_elCanvas
.
height
),
this
.
_bIsPainted
=!
1
},
e
.
prototype
.
round
=
function
(
a
){
return
a
?
Math
.
floor
(
1
e3
*
a
)
/
1
e3
:
a
},
e
}():
function
(){
var
a
=
function
(
a
,
b
){
this
.
_el
=
a
,
this
.
_htOption
=
b
};
return
a
.
prototype
.
draw
=
function
(
a
){
for
(
var
b
=
this
.
_htOption
,
c
=
this
.
_el
,
d
=
a
.
getModuleCount
(),
e
=
Math
.
floor
(
b
.
width
/
d
),
f
=
Math
.
floor
(
b
.
height
/
d
),
g
=
[
'
<table style="border:0;border-collapse:collapse;">
'
],
h
=
0
;
d
>
h
;
h
++
){
g
.
push
(
"
<tr>
"
);
for
(
var
i
=
0
;
d
>
i
;
i
++
)
g
.
push
(
'
<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:
'
+
e
+
"
px;height:
"
+
f
+
"
px;background-color:
"
+
(
a
.
isDark
(
h
,
i
)?
b
.
colorDark
:
b
.
colorLight
)
+
'
;"></td>
'
);
g
.
push
(
"
</tr>
"
)}
g
.
push
(
"
</table>
"
),
c
.
innerHTML
=
g
.
join
(
""
);
var
j
=
c
.
childNodes
[
0
],
k
=
(
b
.
width
-
j
.
offsetWidth
)
/
2
,
l
=
(
b
.
height
-
j
.
offsetHeight
)
/
2
;
k
>
0
&&
l
>
0
&&
(
j
.
style
.
margin
=
l
+
"
px
"
+
k
+
"
px
"
)},
a
.
prototype
.
clear
=
function
(){
this
.
_el
.
innerHTML
=
""
},
a
}();
QRCode
=
function
(
a
,
b
){
if
(
this
.
_htOption
=
{
width
:
256
,
height
:
256
,
typeNumber
:
4
,
colorDark
:
"
#000000
"
,
colorLight
:
"
#ffffff
"
,
correctLevel
:
d
.
H
},
"
string
"
==
typeof
b
&&
(
b
=
{
text
:
b
}),
b
)
for
(
var
c
in
b
)
this
.
_htOption
[
c
]
=
b
[
c
];
"
string
"
==
typeof
a
&&
(
a
=
document
.
getElementById
(
a
)),
this
.
_android
=
n
(),
this
.
_el
=
a
,
this
.
_oQRCode
=
null
,
this
.
_oDrawing
=
new
q
(
this
.
_el
,
this
.
_htOption
),
this
.
_htOption
.
text
&&
this
.
makeCode
(
this
.
_htOption
.
text
)},
QRCode
.
prototype
.
makeCode
=
function
(
a
){
this
.
_oQRCode
=
new
b
(
r
(
a
,
this
.
_htOption
.
correctLevel
),
this
.
_htOption
.
correctLevel
),
this
.
_oQRCode
.
addData
(
a
),
this
.
_oQRCode
.
make
(),
this
.
_el
.
title
=
a
,
this
.
_oDrawing
.
draw
(
this
.
_oQRCode
),
this
.
makeImage
()},
QRCode
.
prototype
.
makeImage
=
function
(){
"
function
"
==
typeof
this
.
_oDrawing
.
makeImage
&&
(
!
this
.
_android
||
this
.
_android
>=
3
)
&&
this
.
_oDrawing
.
makeImage
()},
QRCode
.
prototype
.
clear
=
function
(){
this
.
_oDrawing
.
clear
()},
QRCode
.
CorrectLevel
=
d
}();
\ No newline at end of file
src/main/webapp/static/plugins/tmlpjs/1.0.0/jquery.tmpl.min.js
0 → 100644
View file @
a866cd37
/*
* jQuery Templates Plugin 1.0.0pre
* http://github.com/jquery/jquery-tmpl
* Requires jQuery 1.4.2
*
* Copyright 2011, Software Freedom Conservancy, Inc.
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*/
(
function
(
a
){
var
r
=
a
.
fn
.
domManip
,
d
=
"
_tmplitem
"
,
q
=
/^
[^
<
]
*
(
<
[\w\W]
+>
)[^
>
]
*$|
\{\{\!
/
,
b
=
{},
f
=
{},
e
,
p
=
{
key
:
0
,
data
:{}},
i
=
0
,
c
=
0
,
l
=
[];
function
g
(
g
,
d
,
h
,
e
){
var
c
=
{
data
:
e
||
(
e
===
0
||
e
===
false
)?
e
:
d
?
d
.
data
:{},
_wrap
:
d
?
d
.
_wrap
:
null
,
tmpl
:
null
,
parent
:
d
||
null
,
nodes
:[],
calls
:
u
,
nest
:
w
,
wrap
:
x
,
html
:
v
,
update
:
t
};
g
&&
a
.
extend
(
c
,
g
,{
nodes
:[],
parent
:
d
});
if
(
h
){
c
.
tmpl
=
h
;
c
.
_ctnt
=
c
.
_ctnt
||
c
.
tmpl
(
a
,
c
);
c
.
key
=++
i
;(
l
.
length
?
f
:
b
)[
i
]
=
c
}
return
c
}
a
.
each
({
appendTo
:
"
append
"
,
prependTo
:
"
prepend
"
,
insertBefore
:
"
before
"
,
insertAfter
:
"
after
"
,
replaceAll
:
"
replaceWith
"
},
function
(
f
,
d
){
a
.
fn
[
f
]
=
function
(
n
){
var
g
=
[],
i
=
a
(
n
),
k
,
h
,
m
,
l
,
j
=
this
.
length
===
1
&&
this
[
0
].
parentNode
;
e
=
b
||
{};
if
(
j
&&
j
.
nodeType
===
11
&&
j
.
childNodes
.
length
===
1
&&
i
.
length
===
1
){
i
[
d
](
this
[
0
]);
g
=
this
}
else
{
for
(
h
=
0
,
m
=
i
.
length
;
h
<
m
;
h
++
){
c
=
h
;
k
=
(
h
>
0
?
this
.
clone
(
true
):
this
).
get
();
a
(
i
[
h
])[
d
](
k
);
g
=
g
.
concat
(
k
)}
c
=
0
;
g
=
this
.
pushStack
(
g
,
f
,
i
.
selector
)}
l
=
e
;
e
=
null
;
a
.
tmpl
.
complete
(
l
);
return
g
}});
a
.
fn
.
extend
({
tmpl
:
function
(
d
,
c
,
b
){
return
a
.
tmpl
(
this
[
0
],
d
,
c
,
b
)},
tmplItem
:
function
(){
return
a
.
tmplItem
(
this
[
0
])},
template
:
function
(
b
){
return
a
.
template
(
b
,
this
[
0
])},
domManip
:
function
(
d
,
m
,
k
){
if
(
d
[
0
]
&&
a
.
isArray
(
d
[
0
])){
var
g
=
a
.
makeArray
(
arguments
),
h
=
d
[
0
],
j
=
h
.
length
,
i
=
0
,
f
;
while
(
i
<
j
&&!
(
f
=
a
.
data
(
h
[
i
++
],
"
tmplItem
"
)));
if
(
f
&&
c
)
g
[
2
]
=
function
(
b
){
a
.
tmpl
.
afterManip
(
this
,
b
,
k
)};
r
.
apply
(
this
,
g
)}
else
r
.
apply
(
this
,
arguments
);
c
=
0
;
!
e
&&
a
.
tmpl
.
complete
(
b
);
return
this
}});
a
.
extend
({
tmpl
:
function
(
d
,
h
,
e
,
c
){
var
i
,
k
=!
c
;
if
(
k
){
c
=
p
;
d
=
a
.
template
[
d
]
||
a
.
template
(
null
,
d
);
f
=
{}}
else
if
(
!
d
){
d
=
c
.
tmpl
;
b
[
c
.
key
]
=
c
;
c
.
nodes
=
[];
c
.
wrapped
&&
n
(
c
,
c
.
wrapped
);
return
a
(
j
(
c
,
null
,
c
.
tmpl
(
a
,
c
)))}
if
(
!
d
)
return
[];
if
(
typeof
h
===
"
function
"
)
h
=
h
.
call
(
c
||
{});
e
&&
e
.
wrapped
&&
n
(
e
,
e
.
wrapped
);
i
=
a
.
isArray
(
h
)?
a
.
map
(
h
,
function
(
a
){
return
a
?
g
(
e
,
c
,
d
,
a
):
null
}):[
g
(
e
,
c
,
d
,
h
)];
return
k
?
a
(
j
(
c
,
null
,
i
)):
i
},
tmplItem
:
function
(
b
){
var
c
;
if
(
b
instanceof
a
)
b
=
b
[
0
];
while
(
b
&&
b
.
nodeType
===
1
&&!
(
c
=
a
.
data
(
b
,
"
tmplItem
"
))
&&
(
b
=
b
.
parentNode
));
return
c
||
p
},
template
:
function
(
c
,
b
){
if
(
b
){
if
(
typeof
b
===
"
string
"
)
b
=
o
(
b
);
else
if
(
b
instanceof
a
)
b
=
b
[
0
]
||
{};
if
(
b
.
nodeType
)
b
=
a
.
data
(
b
,
"
tmpl
"
)
||
a
.
data
(
b
,
"
tmpl
"
,
o
(
b
.
innerHTML
));
return
typeof
c
===
"
string
"
?(
a
.
template
[
c
]
=
b
):
b
}
return
c
?
typeof
c
!==
"
string
"
?
a
.
template
(
null
,
c
):
a
.
template
[
c
]
||
a
.
template
(
null
,
q
.
test
(
c
)?
c
:
a
(
c
)):
null
},
encode
:
function
(
a
){
return
(
""
+
a
).
split
(
"
<
"
).
join
(
"
<
"
).
split
(
"
>
"
).
join
(
"
>
"
).
split
(
'
"
'
).
join
(
"
"
"
).
split
(
"
'
"
).
join
(
"
'
"
)}});
a
.
extend
(
a
.
tmpl
,{
tag
:{
tmpl
:{
_default
:{
$2
:
"
null
"
},
open
:
"
if($notnull_1){__=__.concat($item.nest($1,$2));}
"
},
wrap
:{
_default
:{
$2
:
"
null
"
},
open
:
"
$item.calls(__,$1,$2);__=[];
"
,
close
:
"
call=$item.calls();__=call._.concat($item.wrap(call,__));
"
},
each
:{
_default
:{
$2
:
"
$index, $value
"
},
open
:
"
if($notnull_1){$.each($1a,function($2){with(this){
"
,
close
:
"
}});}
"
},
"
if
"
:{
open
:
"
if(($notnull_1) && $1a){
"
,
close
:
"
}
"
},
"
else
"
:{
_default
:{
$1
:
"
true
"
},
open
:
"
}else if(($notnull_1) && $1a){
"
},
html
:{
open
:
"
if($notnull_1){__.push($1a);}
"
},
"
=
"
:{
_default
:{
$1
:
"
$data
"
},
open
:
"
if($notnull_1){__.push($.encode($1a));}
"
},
"
!
"
:{
open
:
""
}},
complete
:
function
(){
b
=
{}},
afterManip
:
function
(
f
,
b
,
d
){
var
e
=
b
.
nodeType
===
11
?
a
.
makeArray
(
b
.
childNodes
):
b
.
nodeType
===
1
?[
b
]:[];
d
.
call
(
f
,
b
);
m
(
e
);
c
++
}});
function
j
(
e
,
g
,
f
){
var
b
,
c
=
f
?
a
.
map
(
f
,
function
(
a
){
return
typeof
a
===
"
string
"
?
e
.
key
?
a
.
replace
(
/
(
<
\w
+
)(?=[\s
>
])(?![^
>
]
*_tmplitem
)([^
>
]
*
)
/g
,
"
$1
"
+
d
+
'
="
'
+
e
.
key
+
'
" $2
'
):
a
:
j
(
a
,
e
,
a
.
_ctnt
)}):
e
;
if
(
g
)
return
c
;
c
=
c
.
join
(
""
);
c
.
replace
(
/^
\s
*
([^
<
\s][^
<
]
*
)?(
<
[\w\W]
+>
)([^
>
]
*
[^
>
\s])?\s
*$/
,
function
(
f
,
c
,
e
,
d
){
b
=
a
(
e
).
get
();
m
(
b
);
if
(
c
)
b
=
k
(
c
).
concat
(
b
);
if
(
d
)
b
=
b
.
concat
(
k
(
d
))});
return
b
?
b
:
k
(
c
)}
function
k
(
c
){
var
b
=
document
.
createElement
(
"
div
"
);
b
.
innerHTML
=
c
;
return
a
.
makeArray
(
b
.
childNodes
)}
function
o
(
b
){
return
new
Function
(
"
jQuery
"
,
"
$item
"
,
"
var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('
"
+
a
.
trim
(
b
).
replace
(
/
([\\
'
])
/g
,
"
\\
$1
"
).
replace
(
/
[\r\t\n]
/g
,
"
"
).
replace
(
/
\$\{([^\}]
*
)\}
/g
,
"
{{= $1}}
"
).
replace
(
/
\{\{(\/?)(\w
+|.
)(?:\(((?:[^\}]
|
\}(?!\}))
*
?)?\))?(?:\s
+
(
.*
?)?)?(\(((?:[^\}]
|
\}(?!\}))
*
?)\))?\s
*
\}\}
/g
,
function
(
m
,
l
,
k
,
g
,
b
,
c
,
d
){
var
j
=
a
.
tmpl
.
tag
[
k
],
i
,
e
,
f
;
if
(
!
j
)
throw
"
Unknown template tag:
"
+
k
;
i
=
j
.
_default
||
[];
if
(
c
&&!
/
\w
$/
.
test
(
b
)){
b
+=
c
;
c
=
""
}
if
(
b
){
b
=
h
(
b
);
d
=
d
?
"
,
"
+
h
(
d
)
+
"
)
"
:
c
?
"
)
"
:
""
;
e
=
c
?
b
.
indexOf
(
"
.
"
)
>-
1
?
b
+
h
(
c
):
"
(
"
+
b
+
"
).call($item
"
+
d
:
b
;
f
=
c
?
e
:
"
(typeof(
"
+
b
+
"
)==='function'?(
"
+
b
+
"
).call($item):(
"
+
b
+
"
))
"
}
else
f
=
e
=
i
.
$1
||
"
null
"
;
g
=
h
(
g
);
return
"
');
"
+
j
[
l
?
"
close
"
:
"
open
"
].
split
(
"
$notnull_1
"
).
join
(
b
?
"
typeof(
"
+
b
+
"
)!=='undefined' && (
"
+
b
+
"
)!=null
"
:
"
true
"
).
split
(
"
$1a
"
).
join
(
f
).
split
(
"
$1
"
).
join
(
e
).
split
(
"
$2
"
).
join
(
g
||
i
.
$2
||
""
)
+
"
__.push('
"
})
+
"
');}return __;
"
)}
function
n
(
c
,
b
){
c
.
_wrap
=
j
(
c
,
true
,
a
.
isArray
(
b
)?
b
:[
q
.
test
(
b
)?
b
:
a
(
b
).
html
()]).
join
(
""
)}
function
h
(
a
){
return
a
?
a
.
replace
(
/
\\
'/g
,
"
'
"
).
replace
(
/
\\\\
/g
,
"
\\
"
):
null
}
function
s
(
b
){
var
a
=
document
.
createElement
(
"
div
"
);
a
.
appendChild
(
b
.
cloneNode
(
true
));
return
a
.
innerHTML
}
function
m
(
o
){
var
n
=
"
_
"
+
c
,
k
,
j
,
l
=
{},
e
,
p
,
h
;
for
(
e
=
0
,
p
=
o
.
length
;
e
<
p
;
e
++
){
if
((
k
=
o
[
e
]).
nodeType
!==
1
)
continue
;
j
=
k
.
getElementsByTagName
(
"
*
"
);
for
(
h
=
j
.
length
-
1
;
h
>=
0
;
h
--
)
m
(
j
[
h
]);
m
(
k
)}
function
m
(
j
){
var
p
,
h
=
j
,
k
,
e
,
m
;
if
(
m
=
j
.
getAttribute
(
d
)){
while
(
h
.
parentNode
&&
(
h
=
h
.
parentNode
).
nodeType
===
1
&&!
(
p
=
h
.
getAttribute
(
d
)));
if
(
p
!==
m
){
h
=
h
.
parentNode
?
h
.
nodeType
===
11
?
0
:
h
.
getAttribute
(
d
)
||
0
:
0
;
if
(
!
(
e
=
b
[
m
])){
e
=
f
[
m
];
e
=
g
(
e
,
b
[
h
]
||
f
[
h
]);
e
.
key
=++
i
;
b
[
i
]
=
e
}
c
&&
o
(
m
)}
j
.
removeAttribute
(
d
)}
else
if
(
c
&&
(
e
=
a
.
data
(
j
,
"
tmplItem
"
))){
o
(
e
.
key
);
b
[
e
.
key
]
=
e
;
h
=
a
.
data
(
j
.
parentNode
,
"
tmplItem
"
);
h
=
h
?
h
.
key
:
0
}
if
(
e
){
k
=
e
;
while
(
k
&&
k
.
key
!=
h
){
k
.
nodes
.
push
(
j
);
k
=
k
.
parent
}
delete
e
.
_ctnt
;
delete
e
.
_wrap
;
a
.
data
(
j
,
"
tmplItem
"
,
e
)}
function
o
(
a
){
a
=
a
+
n
;
e
=
l
[
a
]
=
l
[
a
]
||
g
(
e
,
b
[
e
.
parent
.
key
+
n
]
||
e
.
parent
)}}}
function
u
(
a
,
d
,
c
,
b
){
if
(
!
a
)
return
l
.
pop
();
l
.
push
({
_
:
a
,
tmpl
:
d
,
item
:
this
,
data
:
c
,
options
:
b
})}
function
w
(
d
,
c
,
b
){
return
a
.
tmpl
(
a
.
template
(
d
),
c
,
b
,
this
)}
function
x
(
b
,
d
){
var
c
=
b
.
options
||
{};
c
.
wrapped
=
d
;
return
a
.
tmpl
(
a
.
template
(
b
.
tmpl
),
b
.
data
,
c
,
b
.
item
)}
function
v
(
d
,
c
){
var
b
=
this
.
_wrap
;
return
a
.
map
(
a
(
a
.
isArray
(
b
)?
b
.
join
(
""
):
b
).
filter
(
d
||
"
*
"
),
function
(
a
){
return
c
?
a
.
innerText
||
a
.
textContent
:
a
.
outerHTML
||
s
(
a
)})}
function
t
(){
var
b
=
this
.
nodes
;
a
.
tmpl
(
null
,
null
,
null
,
this
).
insertBefore
(
b
[
0
]);
a
(
b
).
remove
()}})(
jQuery
);
\ No newline at end of file
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/anchor/anchor.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/attachment/attachment.css
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/attachment/attachment.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/background/background.css
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/background/background.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/background/background.js
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/charts/charts.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/emotion/emotion.css
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/emotion/emotion.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/emotion/emotion.js
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/gmap/gmap.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/help/help.css
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/help/help.html
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/help/help.js
View file @
a866cd37
src/main/webapp/static/plugins/ueditor/1.4.3.1/dialogs/image/image.css
View file @
a866cd37
Prev
1
…
8
9
10
11
12
13
14
15
16
…
26
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment