feat: ueditor
Former-commit-id: 89fa8e42f2e153e6c9b676d668779718714ac333 [formerly 89fa8e42f2e153e6c9b676d668779718714ac333 [formerly 89fa8e42f2e153e6c9b676d668779718714ac333 [formerly 89fa8e42f2e153e6c9b676d668779718714ac333 [formerly 955c03c4e108cbd8aa597fc947a9454e749d904f [formerly 5d8b1d73e78953d5f8e7fe4302764addfc2af0e8]]]]] Former-commit-id: 002ba25940eac6b1db5af8aa03a75ab43c3eccf3 Former-commit-id: 43f3ff50fc9a0d54bf21479e87da9b72b7fe20c3 Former-commit-id: 32ed9ae714fec2fdd3ba08fb40187e81e837edcb [formerly f34f58804fd798c1e271250f06f245b83f5e7c3e] Former-commit-id: 17640172e9d4f7b75dc2410e2faa6a93a90e09ac Former-commit-id: 521e6c1695e24e315d368d27db8f8232fbe30999 Former-commit-id: 3dd3d0a15ab7c64f29148a25fc8c4a0a5eb77497 Former-commit-id: 0753ae560b4ec27771a5b052f73a0a94436f9e0f Former-commit-id: 9a6f11a43fab5a79df9ab9527453c0f66ad7888d
This commit is contained in:
40
public/lib/UEditor/dialogs/anchor/anchor.html
Normal file
40
public/lib/UEditor/dialogs/anchor/anchor.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title></title>
|
||||
<style type="text/css">
|
||||
*{color: #838383;margin: 0;padding: 0}
|
||||
html,body {font-size: 12px;overflow: hidden; }
|
||||
.content{padding:5px 0 0 15px;}
|
||||
input{width:210px;height:21px;line-height:21px;margin-left: 4px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<span><var id="lang_input_anchorName"></var></span><input id="anchorName" value="" />
|
||||
</div>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<script type="text/javascript">
|
||||
var anchorInput = $G('anchorName'),
|
||||
node = editor.selection.getRange().getClosedNode();
|
||||
if(node && node.tagName == 'IMG' && (node = node.getAttribute('anchorname'))){
|
||||
anchorInput.value = node;
|
||||
}
|
||||
anchorInput.onkeydown = function(evt){
|
||||
evt = evt || window.event;
|
||||
if(evt.keyCode == 13){
|
||||
editor.execCommand('anchor', anchorInput.value);
|
||||
dialog.close();
|
||||
domUtils.preventDefault(evt)
|
||||
}
|
||||
};
|
||||
dialog.onok = function (){
|
||||
editor.execCommand('anchor', anchorInput.value);
|
||||
dialog.close();
|
||||
};
|
||||
$focus(anchorInput);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
e9d11af25d8be46c6174b6de4eca2b2e290544c5
|
||||
60
public/lib/UEditor/dialogs/attachment/attachment.html
Normal file
60
public/lib/UEditor/dialogs/attachment/attachment.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>ueditor图片对话框</title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
|
||||
<!-- jquery -->
|
||||
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
|
||||
|
||||
<!-- webuploader -->
|
||||
<script src="../../third-party/webuploader/webuploader.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
|
||||
|
||||
<!-- attachment dialog -->
|
||||
<link rel="stylesheet" href="attachment.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrapper">
|
||||
<div id="tabhead" class="tabhead">
|
||||
<span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
|
||||
<span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
|
||||
</div>
|
||||
<div id="tabbody" class="tabbody">
|
||||
<!-- 上传图片 -->
|
||||
<div id="upload" class="panel focus">
|
||||
<div id="queueList" class="queueList">
|
||||
<div class="statusBar element-invisible">
|
||||
<div class="progress">
|
||||
<span class="text">0%</span>
|
||||
<span class="percentage"></span>
|
||||
</div><div class="info"></div>
|
||||
<div class="btns">
|
||||
<div id="filePickerBtn"></div>
|
||||
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dndArea" class="placeholder">
|
||||
<div class="filePickerContainer">
|
||||
<div id="filePickerReady"></div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="filelist element-invisible">
|
||||
<li id="filePickerBlock" class="filePickerBlock"></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 在线图片 -->
|
||||
<div id="online" class="panel">
|
||||
<div id="fileList"><var id="lang_imgLoading"></var></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="attachment.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
bb2557f4e0f695e9530072855e984242b3c0f64b
|
||||
@@ -0,0 +1 @@
|
||||
d8c02c27e242f0584fc6b214f35b4f6d8caec332
|
||||
@@ -0,0 +1 @@
|
||||
3ff82c8c488f53a7aff67fbe39742e3321183eca
|
||||
94
public/lib/UEditor/dialogs/background/background.css
Normal file
94
public/lib/UEditor/dialogs/background/background.css
Normal file
@@ -0,0 +1,94 @@
|
||||
.wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}
|
||||
.tabbody{height:225px;}
|
||||
.tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;}
|
||||
.tabbody .focus { display: block;}
|
||||
|
||||
body{font-size: 12px;color: #888;overflow: hidden;}
|
||||
input,label{vertical-align:middle}
|
||||
.clear{clear: both;}
|
||||
.pl{padding-left: 18px;padding-left: 23px\9;}
|
||||
|
||||
#imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;}
|
||||
#imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;}
|
||||
#imageList img {cursor: pointer;border: 2px solid white;}
|
||||
|
||||
.bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;}
|
||||
.content div{margin: 10px 0 10px 5px;}
|
||||
.content .iptradio{margin: 0px 5px 5px 0px;}
|
||||
.txt{width:280px;}
|
||||
|
||||
.wrapcolor{height: 19px;}
|
||||
div.color{float: left;margin: 0;}
|
||||
#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;}
|
||||
div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;}
|
||||
#custom input{height: 15px;min-height: 15px;width:20px;}
|
||||
#repeatType{width:100px;}
|
||||
|
||||
|
||||
/* 图片管理样式 */
|
||||
#imgManager {
|
||||
width: 100%;
|
||||
height: 225px;
|
||||
}
|
||||
#imgManager #imageList{
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
#imgManager ul {
|
||||
display: block;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#imgManager li {
|
||||
float: left;
|
||||
display: block;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
width: 113px;
|
||||
height: 113px;
|
||||
margin: 9px 0 0 19px;
|
||||
background-color: #eee;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
#imgManager li.clearFloat {
|
||||
float: none;
|
||||
clear: both;
|
||||
display: block;
|
||||
width:0;
|
||||
height:0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#imgManager li img {
|
||||
cursor: pointer;
|
||||
}
|
||||
#imgManager li .icon {
|
||||
cursor: pointer;
|
||||
width: 113px;
|
||||
height: 113px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
border: 0;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
#imgManager li .icon:hover {
|
||||
width: 107px;
|
||||
height: 107px;
|
||||
border: 3px solid #1094fa;
|
||||
}
|
||||
#imgManager li.selected .icon {
|
||||
background-image: url(images/success.png);
|
||||
background-position: 75px 75px;
|
||||
}
|
||||
#imgManager li.selected .icon:hover {
|
||||
width: 107px;
|
||||
height: 107px;
|
||||
border: 3px solid #1094fa;
|
||||
background-position: 72px 72px;
|
||||
}
|
||||
56
public/lib/UEditor/dialogs/background/background.html
Normal file
56
public/lib/UEditor/dialogs/background/background.html
Normal file
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="background.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="bg_container" class="wrapper">
|
||||
<div id="tabHeads" class="tabhead">
|
||||
<span class="focus" data-content-id="normal"><var id="lang_background_normal"></var></span>
|
||||
<span class="" data-content-id="imgManager"><var id="lang_background_local"></var></span>
|
||||
</div>
|
||||
<div id="tabBodys" class="tabbody">
|
||||
<div id="normal" class="panel focus">
|
||||
<fieldset class="bgarea">
|
||||
<legend><var id="lang_background_set"></var></legend>
|
||||
<div class="content">
|
||||
<div>
|
||||
<label><input id="nocolorRadio" class="iptradio" type="radio" name="t" value="none" checked="checked"><var id="lang_background_none"></var></label>
|
||||
<label><input id="coloredRadio" class="iptradio" type="radio" name="t" value="color"><var id="lang_background_colored"></var></label>
|
||||
</div>
|
||||
<div class="wrapcolor pl">
|
||||
<div class="color">
|
||||
<var id="lang_background_color"></var>:
|
||||
</div>
|
||||
<div id="colorPicker"></div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="wrapcolor pl">
|
||||
<label><var id="lang_background_netimg"></var>:</label><input class="txt" type="text" id="url">
|
||||
</div>
|
||||
<div id="alignment" class="alignment">
|
||||
<var id="lang_background_align"></var>:<select id="repeatType">
|
||||
<option value="center"></option>
|
||||
<option value="repeat-x"></option>
|
||||
<option value="repeat-y"></option>
|
||||
<option value="repeat"></option>
|
||||
<option value="self"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="custom" >
|
||||
<var id="lang_background_position"></var>:x:<input type="text" size="1" id="x" maxlength="4" value="0">px y:<input type="text" size="1" id="y" maxlength="4" value="0">px
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
<div id="imgManager" class="panel">
|
||||
<div id="imageList" style=""></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="background.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
9d63bade902432190590c06c7a66115b2619bcf0
|
||||
65
public/lib/UEditor/dialogs/charts/chart.config.js
Normal file
65
public/lib/UEditor/dialogs/charts/chart.config.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* 图表配置文件
|
||||
* */
|
||||
|
||||
|
||||
//不同类型的配置
|
||||
var typeConfig = [
|
||||
{
|
||||
chart: {
|
||||
type: 'line'
|
||||
},
|
||||
plotOptions: {
|
||||
line: {
|
||||
dataLabels: {
|
||||
enabled: false
|
||||
},
|
||||
enableMouseTracking: true
|
||||
}
|
||||
}
|
||||
}, {
|
||||
chart: {
|
||||
type: 'line'
|
||||
},
|
||||
plotOptions: {
|
||||
line: {
|
||||
dataLabels: {
|
||||
enabled: true
|
||||
},
|
||||
enableMouseTracking: false
|
||||
}
|
||||
}
|
||||
}, {
|
||||
chart: {
|
||||
type: 'area'
|
||||
}
|
||||
}, {
|
||||
chart: {
|
||||
type: 'bar'
|
||||
}
|
||||
}, {
|
||||
chart: {
|
||||
type: 'column'
|
||||
}
|
||||
}, {
|
||||
chart: {
|
||||
plotBackgroundColor: null,
|
||||
plotBorderWidth: null,
|
||||
plotShadow: false
|
||||
},
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
color: '#000000',
|
||||
connectorColor: '#000000',
|
||||
formatter: function() {
|
||||
return '<b>'+ this.point.name +'</b>: '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
165
public/lib/UEditor/dialogs/charts/charts.css
Normal file
165
public/lib/UEditor/dialogs/charts/charts.css
Normal file
@@ -0,0 +1,165 @@
|
||||
html, body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.main {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.table-view {
|
||||
height: 100%;
|
||||
float: left;
|
||||
margin: 20px;
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.table-view .table-container {
|
||||
width: 100%;
|
||||
margin-bottom: 50px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.table-view th {
|
||||
padding: 5px 10px;
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
|
||||
.table-view td {
|
||||
width: 50px;
|
||||
text-align: center;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.table-container input {
|
||||
width: 40px;
|
||||
padding: 5px;
|
||||
border: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.table-view caption {
|
||||
font-size: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.charts-view {
|
||||
/*margin-left: 49%!important;*/
|
||||
width: 50%;
|
||||
margin-left: 49%;
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.charts-container {
|
||||
border-left: 1px solid #c3c3c3;
|
||||
}
|
||||
|
||||
.charts-format fieldset {
|
||||
padding-left: 20px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.charts-format legend {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.format-item-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.format-item-container label {
|
||||
display: block;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.charts-format .data-item {
|
||||
border: 1px solid black;
|
||||
outline: none;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
|
||||
/* 图表类型 */
|
||||
|
||||
.charts-type {
|
||||
margin-top: 50px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.scroll-view {
|
||||
border: 1px solid #c3c3c3;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.scroll-container {
|
||||
margin: 20px;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.scroll-bed {
|
||||
width: 10000px;
|
||||
_margin-top: 20px;
|
||||
-webkit-transition: margin-left .5s ease;
|
||||
-moz-transition: margin-left .5s ease;
|
||||
transition: margin-left .5s ease;
|
||||
}
|
||||
|
||||
.view-box {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
*zoom: 1;
|
||||
margin-right: 20px;
|
||||
border: 2px solid white;
|
||||
line-height: 0;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.view-box img {
|
||||
border: 1px solid #cecece;
|
||||
}
|
||||
|
||||
.view-box.selected {
|
||||
border-color: #7274A7;
|
||||
}
|
||||
|
||||
.button-container {
|
||||
margin-bottom: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.button-container a {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
border: 1px solid #c2ccd1;
|
||||
margin-right: 30px;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.button-container a:HOVER {
|
||||
background: #fcfcfc;
|
||||
}
|
||||
|
||||
.button-container a:ACTIVE {
|
||||
border-top-color: #c2ccd1;
|
||||
box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1);
|
||||
}
|
||||
|
||||
.edui-charts-not-data {
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
89
public/lib/UEditor/dialogs/charts/charts.html
Normal file
89
public/lib/UEditor/dialogs/charts/charts.html
Normal file
@@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>chart</title>
|
||||
<meta chartset="utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="charts.css">
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<div class="table-view">
|
||||
<h3><var id="lang_data_source"></var></h3>
|
||||
<div id="tableContainer" class="table-container"></div>
|
||||
<h3><var id="lang_chart_format"></var></h3>
|
||||
<form name="data-form">
|
||||
<div class="charts-format">
|
||||
<fieldset>
|
||||
<legend><var id="lang_data_align"></var></legend>
|
||||
<div class="format-item-container">
|
||||
<label>
|
||||
<input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="1" checked="checked">
|
||||
<var id="lang_chart_align_same"></var>
|
||||
</label>
|
||||
<label>
|
||||
<input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="-1">
|
||||
<var id="lang_chart_align_reverse"></var>
|
||||
</label>
|
||||
<br>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><var id="lang_chart_title"></var></legend>
|
||||
<div class="format-item-container">
|
||||
<label>
|
||||
<var id="lang_chart_main_title"></var><input type="text" name="title" class="data-item">
|
||||
</label>
|
||||
<label>
|
||||
<var id="lang_chart_sub_title"></var><input type="text" name="sub-title" class="data-item not-pie-item">
|
||||
</label>
|
||||
<label>
|
||||
<var id="lang_chart_x_title"></var><input type="text" name="x-title" class="data-item not-pie-item">
|
||||
</label>
|
||||
<label>
|
||||
<var id="lang_chart_y_title"></var><input type="text" name="y-title" class="data-item not-pie-item">
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><var id="lang_chart_tip"></var></legend>
|
||||
<div class="format-item-container">
|
||||
<label>
|
||||
<var id="lang_cahrt_tip_prefix"></var>
|
||||
<input type="text" id="tipInput" name="tip" class="data-item" disabled="disabled">
|
||||
</label>
|
||||
<p><var id="lang_cahrt_tip_description"></var></p>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><var id="lang_chart_data_unit"></var></legend>
|
||||
<div class="format-item-container">
|
||||
<label><var id="lang_chart_data_unit_title"></var><input type="text" name="unit" class="data-item"></label>
|
||||
<p><var id="lang_chart_data_unit_description"></var></p>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="charts-view">
|
||||
<div id="chartsContainer" class="charts-container"></div>
|
||||
<div id="chartsType" class="charts-type">
|
||||
<h3><var id="lang_chart_type"></var></h3>
|
||||
<div class="scroll-view">
|
||||
<div class="scroll-container">
|
||||
<div id="scrollBed" class="scroll-bed"></div>
|
||||
</div>
|
||||
<div id="buttonContainer" class="button-container">
|
||||
<a href="#" data-title="prev"><var id="lang_prev_btn"></var></a>
|
||||
<a href="#" data-title="next"><var id="lang_next_btn"></var></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../../third-party/jquery-1.10.2.min.js"></script>
|
||||
<script src="../../third-party/highcharts/highcharts.js"></script>
|
||||
<script src="chart.config.js"></script>
|
||||
<script src="charts.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
37344fd129db521348dfefd4b97e278e26144fab
|
||||
@@ -0,0 +1 @@
|
||||
9485e5ed8f83888e782eafae6f7505c79671a985
|
||||
@@ -0,0 +1 @@
|
||||
b5a00392866946feb7cf81da39f6c6ec6e0b50b7
|
||||
@@ -0,0 +1 @@
|
||||
7c91a39ffac43e0867bec1df89b73e10e0b28c43
|
||||
@@ -0,0 +1 @@
|
||||
c49a29609d8e8f9bdf101e91021d40c1cb3d4175
|
||||
43
public/lib/UEditor/dialogs/emotion/emotion.css
Normal file
43
public/lib/UEditor/dialogs/emotion/emotion.css
Normal file
@@ -0,0 +1,43 @@
|
||||
.jd img{
|
||||
background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
.pp img{
|
||||
background:transparent url(images/fface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:25px;height:25px;display:block;
|
||||
}
|
||||
.ldw img{
|
||||
background:transparent url(images/wface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
.tsj img{
|
||||
background:transparent url(images/tface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
.cat img{
|
||||
background:transparent url(images/cface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
.bb img{
|
||||
background:transparent url(images/bface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
.youa img{
|
||||
background:transparent url(images/yface.gif?v=1.1) no-repeat scroll left top;
|
||||
cursor:pointer;width:35px;height:35px;display:block;
|
||||
}
|
||||
|
||||
.smileytable td {height: 37px;}
|
||||
#tabPanel{margin-left:5px;overflow: hidden;}
|
||||
#tabContent {float:left;background:#FFFFFF;}
|
||||
#tabContent div{display: none;width:480px;overflow:hidden;}
|
||||
#tabIconReview.show{left:17px;display:block;}
|
||||
.menuFocus{background:#ACCD3C;}
|
||||
.menuDefault{background:#FFFFFF;}
|
||||
#tabIconReview{position:absolute;left:406px;left:398px \9;top:41px;z-index:65533;width:90px;height:76px;}
|
||||
img.review{width:90px;height:76px;border:2px solid #9cb945;background:#FFFFFF;background-position:center;background-repeat:no-repeat;}
|
||||
|
||||
.wrapper .tabbody{position:relative;float:left;clear:both;padding:10px;width: 95%;}
|
||||
.tabbody table{width: 100%;}
|
||||
.tabbody td{border:1px solid #BAC498;}
|
||||
.tabbody td span{display: block;zoom:1;padding:0 4px;}
|
||||
54
public/lib/UEditor/dialogs/emotion/emotion.html
Normal file
54
public/lib/UEditor/dialogs/emotion/emotion.html
Normal file
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta name="robots" content="noindex, nofollow"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="emotion.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="tabPanel" class="wrapper">
|
||||
<div id="tabHeads" class="tabhead">
|
||||
<span><var id="lang_input_choice"></var></span>
|
||||
<span><var id="lang_input_Tuzki"></var></span>
|
||||
<span><var id="lang_input_lvdouwa"></var></span>
|
||||
<span><var id="lang_input_BOBO"></var></span>
|
||||
<span><var id="lang_input_babyCat"></var></span>
|
||||
<span><var id="lang_input_bubble"></var></span>
|
||||
<span><var id="lang_input_youa"></var></span>
|
||||
</div>
|
||||
<div id="tabBodys" class="tabbody">
|
||||
<div id="tab0"></div>
|
||||
<div id="tab1"></div>
|
||||
<div id="tab2"></div>
|
||||
<div id="tab3"></div>
|
||||
<div id="tab4"></div>
|
||||
<div id="tab5"></div>
|
||||
<div id="tab6"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tabIconReview">
|
||||
<img id='faceReview' class='review' src="../../themes/default/images/spacer.gif"/>
|
||||
</div>
|
||||
<script type="text/javascript" src="emotion.js"></script>
|
||||
<script type="text/javascript">
|
||||
var emotion = {
|
||||
tabNum:7, //切换面板数量
|
||||
SmilmgName:{ tab0:['j_00', 84], tab1:['t_00', 40], tab2:['w_00', 52], tab3:['B_00', 63], tab4:['C_00', 20], tab5:['i_f', 50], tab6:['y_00', 40] }, //图片前缀名
|
||||
imageFolders:{ tab0:'jx2/', tab1:'tsj/', tab2:'ldw/', tab3:'bobo/', tab4:'babycat/', tab5:'face/', tab6:'youa/'}, //图片对应文件夹路径
|
||||
imageCss:{tab0:'jd', tab1:'tsj', tab2:'ldw', tab3:'bb', tab4:'cat', tab5:'pp', tab6:'youa'}, //图片css类名
|
||||
imageCssOffset:{tab0:35, tab1:35, tab2:35, tab3:35, tab4:35, tab5:25, tab6:35}, //图片偏移
|
||||
SmileyInfor:{
|
||||
tab0:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '打酱油', '俯卧撑', '气愤', '?', '吻', '怒', '胜利', 'HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '微笑', '亲吻', '调皮', '惊恐', '耍酷', '发火', '害羞', '汗水', '大哭', '', '加油', '困', '你NB', '晕倒', '开心', '偷笑', '大哭', '滴汗', '叹气', '超赞', '??', '飞吻', '天使', '撒花', '生气', '被砸', '吓傻', '随意吐'],
|
||||
tab1:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '摊手', '睡觉', '瘫坐', '无聊', '星星闪', '旋转', '也不行', '郁闷', '正Music', '抓墙', '撞墙至死', '歪头', '戳眼', '飘过', '互相拍砖', '砍死你', '扔桌子', '少林寺', '什么?', '转头', '我爱牛奶', '我踢', '摇晃', '晕厥', '在笼子里', '震荡'],
|
||||
tab2:['大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '我错了', 'money', '气愤', '挑逗', '吻', '怒', '胜利', '委屈', '受伤', '说啥呢?', '闭嘴', '不', '逗你玩儿', '飞吻', '眩晕', '魔法', '我来了', '睡了', '我打', '闭嘴', '打', '打晕了', '刷牙', '爆揍', '炸弹', '倒立', '刮胡子', '邪恶的笑', '不要不要', '爱恋中', '放大仔细看', '偷窥', '超高兴', '晕', '松口气', '我跑', '享受', '修养', '哭', '汗', '啊~', '热烈欢迎', '打酱油', '俯卧撑', '?'],
|
||||
tab3:['HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '泪眼', '流泪', '生气', '吐舌', '喜欢', '旋转', '再见', '抓狂', '汗', '鄙视', '拜', '吐血', '嘘', '打人', '蹦跳', '变脸', '扯肉', '吃To', '吃花', '吹泡泡糖', '大变身', '飞天舞', '回眸', '可怜', '猛抽', '泡泡', '苹果', '亲', '', '骚舞', '烧香', '睡', '套娃娃', '捅捅', '舞倒', '西红柿', '爱慕', '摇', '摇摆', '杂耍', '招财', '被殴', '被球闷', '大惊', '理想', '欧打', '呕吐', '碎', '吐痰'],
|
||||
tab4:['发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '顶', '幸运', '爱心', '躲', '送花', '选择'],
|
||||
tab5:['微笑', '亲吻', '调皮', '惊讶', '耍酷', '发火', '害羞', '汗水', '大哭', '得意', '鄙视', '困', '夸奖', '晕倒', '疑问', '媒婆', '狂吐', '青蛙', '发愁', '亲吻', '', '爱心', '心碎', '玫瑰', '礼物', '哭', '奸笑', '可爱', '得意', '呲牙', '暴汗', '楚楚可怜', '困', '哭', '生气', '惊讶', '口水', '彩虹', '夜空', '太阳', '钱钱', '灯泡', '咖啡', '蛋糕', '音乐', '爱', '胜利', '赞', '鄙视', 'OK'],
|
||||
tab6:['男兜', '女兜', '开心', '乖乖', '偷笑', '大笑', '抽泣', '大哭', '无奈', '滴汗', '叹气', '狂晕', '委屈', '超赞', '??', '疑问', '飞吻', '天使', '撒花', '生气', '被砸', '口水', '泪奔', '吓傻', '吐舌头', '点头', '随意吐', '旋转', '困困', '鄙视', '狂顶', '篮球', '再见', '欢迎光临', '恭喜发财', '稍等', '我在线', '恕不议价', '库房有货', '货在路上']
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
186
public/lib/UEditor/dialogs/emotion/emotion.js
Normal file
186
public/lib/UEditor/dialogs/emotion/emotion.js
Normal file
@@ -0,0 +1,186 @@
|
||||
window.onload = function () {
|
||||
editor.setOpt({
|
||||
emotionLocalization:false
|
||||
});
|
||||
|
||||
emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/";
|
||||
emotion.SmileyBox = createTabList( emotion.tabNum );
|
||||
emotion.tabExist = createArr( emotion.tabNum );
|
||||
|
||||
initImgName();
|
||||
initEvtHandler( "tabHeads" );
|
||||
};
|
||||
|
||||
function initImgName() {
|
||||
for ( var pro in emotion.SmilmgName ) {
|
||||
var tempName = emotion.SmilmgName[pro],
|
||||
tempBox = emotion.SmileyBox[pro],
|
||||
tempStr = "";
|
||||
|
||||
if ( tempBox.length ) return;
|
||||
for ( var i = 1; i <= tempName[1]; i++ ) {
|
||||
tempStr = tempName[0];
|
||||
if ( i < 10 ) tempStr = tempStr + '0';
|
||||
tempStr = tempStr + i + '.gif';
|
||||
tempBox.push( tempStr );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initEvtHandler( conId ) {
|
||||
var tabHeads = $G( conId );
|
||||
for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) {
|
||||
var tabObj = tabHeads.childNodes[i];
|
||||
if ( tabObj.nodeType == 1 ) {
|
||||
domUtils.on( tabObj, "click", (function ( index ) {
|
||||
return function () {
|
||||
switchTab( index );
|
||||
};
|
||||
})( j ) );
|
||||
j++;
|
||||
}
|
||||
}
|
||||
switchTab( 0 );
|
||||
$G( "tabIconReview" ).style.display = 'none';
|
||||
}
|
||||
|
||||
function InsertSmiley( url, evt ) {
|
||||
var obj = {
|
||||
src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url
|
||||
};
|
||||
obj._src = obj.src;
|
||||
editor.execCommand( 'insertimage', obj );
|
||||
if ( !evt.ctrlKey ) {
|
||||
dialog.popup.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function switchTab( index ) {
|
||||
|
||||
autoHeight( index );
|
||||
if ( emotion.tabExist[index] == 0 ) {
|
||||
emotion.tabExist[index] = 1;
|
||||
createTab( 'tab' + index );
|
||||
}
|
||||
//获取呈现元素句柄数组
|
||||
var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ),
|
||||
tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ),
|
||||
i = 0, L = tabHeads.length;
|
||||
//隐藏所有呈现元素
|
||||
for ( ; i < L; i++ ) {
|
||||
tabHeads[i].className = "";
|
||||
tabBodys[i].style.display = "none";
|
||||
}
|
||||
//显示对应呈现元素
|
||||
tabHeads[index].className = "focus";
|
||||
tabBodys[index].style.display = "block";
|
||||
}
|
||||
|
||||
function autoHeight( index ) {
|
||||
var iframe = dialog.getDom( "iframe" ),
|
||||
parent = iframe.parentNode.parentNode;
|
||||
switch ( index ) {
|
||||
case 0:
|
||||
iframe.style.height = "380px";
|
||||
parent.style.height = "392px";
|
||||
break;
|
||||
case 1:
|
||||
iframe.style.height = "220px";
|
||||
parent.style.height = "232px";
|
||||
break;
|
||||
case 2:
|
||||
iframe.style.height = "260px";
|
||||
parent.style.height = "272px";
|
||||
break;
|
||||
case 3:
|
||||
iframe.style.height = "300px";
|
||||
parent.style.height = "312px";
|
||||
break;
|
||||
case 4:
|
||||
iframe.style.height = "140px";
|
||||
parent.style.height = "152px";
|
||||
break;
|
||||
case 5:
|
||||
iframe.style.height = "260px";
|
||||
parent.style.height = "272px";
|
||||
break;
|
||||
case 6:
|
||||
iframe.style.height = "230px";
|
||||
parent.style.height = "242px";
|
||||
break;
|
||||
default:
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function createTab( tabName ) {
|
||||
var faceVersion = "?v=1.1", //版本号
|
||||
tab = $G( tabName ), //获取将要生成的Div句柄
|
||||
imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径
|
||||
positionLine = 11 / 2, //中间数
|
||||
iWidth = iHeight = 35, //图片长宽
|
||||
iColWidth = 3, //表格剩余空间的显示比例
|
||||
tableCss = emotion.imageCss[tabName],
|
||||
cssOffset = emotion.imageCssOffset[tabName],
|
||||
textHTML = ['<table class="smileytable">'],
|
||||
i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage,
|
||||
sUrl, realUrl, posflag, offset, infor;
|
||||
|
||||
for ( ; i < imgNum; ) {
|
||||
textHTML.push( '<tr>' );
|
||||
for ( var j = 0; j < imgColNum; j++, i++ ) {
|
||||
faceImage = emotion.SmileyBox[tabName][i];
|
||||
if ( faceImage ) {
|
||||
sUrl = imagePath + faceImage + faceVersion;
|
||||
realUrl = imagePath + faceImage;
|
||||
posflag = j < positionLine ? 0 : 1;
|
||||
offset = cssOffset * i * (-1) - 1;
|
||||
infor = emotion.SmileyInfor[tabName][i];
|
||||
|
||||
textHTML.push( '<td class="' + tableCss + '" border="1" width="' + iColWidth + '%" style="border-collapse:collapse;" align="center" bgcolor="transparent" onclick="InsertSmiley(\'' + realUrl.replace( /'/g, "\\'" ) + '\',event)" onmouseover="over(this,\'' + sUrl + '\',\'' + posflag + '\')" onmouseout="out(this)">' );
|
||||
textHTML.push( '<span>' );
|
||||
textHTML.push( '<img style="background-position:left ' + offset + 'px;" title="' + infor + '" src="' + emotion.SmileyPath + (editor.options.emotionLocalization ? '0.gif" width="' : 'default/0.gif" width="') + iWidth + '" height="' + iHeight + '"></img>' );
|
||||
textHTML.push( '</span>' );
|
||||
} else {
|
||||
textHTML.push( '<td width="' + iColWidth + '%" bgcolor="#FFFFFF">' );
|
||||
}
|
||||
textHTML.push( '</td>' );
|
||||
}
|
||||
textHTML.push( '</tr>' );
|
||||
}
|
||||
textHTML.push( '</table>' );
|
||||
textHTML = textHTML.join( "" );
|
||||
tab.innerHTML = textHTML;
|
||||
}
|
||||
|
||||
function over( td, srcPath, posFlag ) {
|
||||
td.style.backgroundColor = "#ACCD3C";
|
||||
$G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")";
|
||||
if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show";
|
||||
$G( "tabIconReview" ).style.display = 'block';
|
||||
}
|
||||
|
||||
function out( td ) {
|
||||
td.style.backgroundColor = "transparent";
|
||||
var tabIconRevew = $G( "tabIconReview" );
|
||||
tabIconRevew.className = "";
|
||||
tabIconRevew.style.display = 'none';
|
||||
}
|
||||
|
||||
function createTabList( tabNum ) {
|
||||
var obj = {};
|
||||
for ( var i = 0; i < tabNum; i++ ) {
|
||||
obj["tab" + i] = [];
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
function createArr( tabNum ) {
|
||||
var arr = [];
|
||||
for ( var i = 0; i < tabNum; i++ ) {
|
||||
arr[i] = 0;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
14fe618ab58a9d46fee90074386b5581d47b92c9
|
||||
@@ -0,0 +1 @@
|
||||
0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe
|
||||
@@ -0,0 +1 @@
|
||||
a959c90f7eb17adc455982b040244fd583eed888
|
||||
@@ -0,0 +1 @@
|
||||
1354f54b961211fb0253ccbd27a81da5dab5a639
|
||||
@@ -0,0 +1 @@
|
||||
5667160d8b6228d301fccb56a8c1441b4c4e4b58
|
||||
@@ -0,0 +1 @@
|
||||
51608be0e74434388bcfe1f55da5c3c019f0a708
|
||||
89
public/lib/UEditor/dialogs/gmap/gmap.html
Normal file
89
public/lib/UEditor/dialogs/gmap/gmap.html
Normal file
@@ -0,0 +1,89 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.content{width:530px; height: 350px;margin: 10px auto;}
|
||||
.content table{width: 100%}
|
||||
.content table td{vertical-align: middle;}
|
||||
#address{width:220px;height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}
|
||||
</style>
|
||||
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="address"><var id="lang_input_address"></var></label></td>
|
||||
<td><input id="address" type="text" /></td>
|
||||
<td><a id="doSearch" href="javascript:void(0)" class="button"><var id="lang_input_search"></var></a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="container" style="width: 100%; height: 340px;margin: 5px auto; border: 1px solid gray;"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
domUtils.on(window,"load",function(){
|
||||
var map = new google.maps.Map(document.getElementById('container'), {
|
||||
zoom: 3,
|
||||
streetViewControl: false,
|
||||
scaleControl: true,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
});
|
||||
var imgcss;
|
||||
var marker = new google.maps.Marker({
|
||||
map: map,
|
||||
draggable: true
|
||||
});
|
||||
function doSearch(){
|
||||
var address = document.getElementById('address').value;
|
||||
var geocoder = new google.maps.Geocoder();
|
||||
geocoder.geocode( { 'address': address}, function (results, status) {
|
||||
if (status == google.maps.GeocoderStatus.OK) {
|
||||
var bounds = results[0].geometry.viewport;
|
||||
map.fitBounds(bounds);
|
||||
marker.setPosition(results[0].geometry.location);
|
||||
marker.setTitle(address);
|
||||
} else alert(lang.searchError);
|
||||
});
|
||||
}
|
||||
$G('address').onkeydown = function (evt){
|
||||
evt = evt || event;
|
||||
if (evt.keyCode == 13) {
|
||||
doSearch();
|
||||
}
|
||||
};
|
||||
$G("doSearch").onclick = doSearch;
|
||||
dialog.onok = function (){
|
||||
var center = map.getCenter();
|
||||
var point = marker.getPosition();
|
||||
var url = "http://maps.googleapis.com/maps/api/staticmap?center=" + center.lat() + ',' + center.lng() + "&zoom=" + map.zoom + "&size=520x340&maptype=" + map.getMapTypeId() + "&markers=" + point.lat() + ',' + point.lng() + "&sensor=false";
|
||||
editor.execCommand('inserthtml', '<img width="520" height="340" src="' + url + '"' + (imgcss ? ' style="' + imgcss + '"' :'') + '/>');
|
||||
};
|
||||
|
||||
function getPars(str,par){
|
||||
var reg = new RegExp(par+"=((\\d+|[.,])*)","g");
|
||||
return reg.exec(str)[1];
|
||||
}
|
||||
var img = editor.selection.getRange().getClosedNode();
|
||||
if(img && img.src.indexOf("http://maps.googleapis.com/maps/api/staticmap")!=-1){
|
||||
var url = img.getAttribute("src");
|
||||
var centers = getPars(url,"center").split(",");
|
||||
point = new google.maps.LatLng(Number(centers[0]),Number(centers[1]));
|
||||
map.setCenter(point);
|
||||
map.setZoom(Number(getPars(url,"zoom")));
|
||||
centers = getPars(url,"markers").split(",");
|
||||
marker.setPosition(new google.maps.LatLng(Number(centers[0]),Number(centers[1])));
|
||||
imgcss = img.style.cssText;
|
||||
}else{
|
||||
setTimeout(function(){
|
||||
doSearch();
|
||||
},30)
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
7
public/lib/UEditor/dialogs/help/help.css
Normal file
7
public/lib/UEditor/dialogs/help/help.css
Normal file
@@ -0,0 +1,7 @@
|
||||
.wrapper{width: 370px;margin: 10px auto;zoom: 1;}
|
||||
.tabbody{height: 360px;}
|
||||
.tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;}
|
||||
.tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;}
|
||||
.tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;}
|
||||
.tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;}
|
||||
.tabbody table thead{font-weight: bold;line-height: 25px;}
|
||||
82
public/lib/UEditor/dialogs/help/help.html
Normal file
82
public/lib/UEditor/dialogs/help/help.html
Normal file
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>帮助</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="help.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper" id="helptab">
|
||||
<div id="tabHeads" class="tabhead">
|
||||
<span class="focus" tabsrc="about"><var id="lang_input_about"></var></span>
|
||||
<span tabsrc="shortcuts"><var id="lang_input_shortcuts"></var></span>
|
||||
</div>
|
||||
<div id="tabBodys" class="tabbody">
|
||||
<div id="about" class="panel">
|
||||
<h1>UEditor</h1>
|
||||
<p id="version"></p>
|
||||
<p><var id="lang_input_introduction"></var></p>
|
||||
</div>
|
||||
<div id="shortcuts" class="panel">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<td><var id="lang_Txt_shortcuts"></var></td>
|
||||
<td><var id="lang_Txt_func"></var></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>ctrl+b</td>
|
||||
<td><var id="lang_Txt_bold"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+c</td>
|
||||
<td><var id="lang_Txt_copy"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+x</td>
|
||||
<td><var id="lang_Txt_cut"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+v</td>
|
||||
<td><var id="lang_Txt_Paste"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+y</td>
|
||||
<td><var id="lang_Txt_undo"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+z</td>
|
||||
<td><var id="lang_Txt_redo"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+i</td>
|
||||
<td><var id="lang_Txt_italic"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+u</td>
|
||||
<td><var id="lang_Txt_underline"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ctrl+a</td>
|
||||
<td><var id="lang_Txt_selectAll"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>shift+enter</td>
|
||||
<td><var id="lang_Txt_visualEnter"></var></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>alt+z</td>
|
||||
<td><var id="lang_Txt_fullscreen"></var></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="help.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
56
public/lib/UEditor/dialogs/help/help.js
Normal file
56
public/lib/UEditor/dialogs/help/help.js
Normal file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-9-26
|
||||
* Time: 下午1:06
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
/**
|
||||
* tab点击处理事件
|
||||
* @param tabHeads
|
||||
* @param tabBodys
|
||||
* @param obj
|
||||
*/
|
||||
function clickHandler( tabHeads,tabBodys,obj ) {
|
||||
//head样式更改
|
||||
for ( var k = 0, len = tabHeads.length; k < len; k++ ) {
|
||||
tabHeads[k].className = "";
|
||||
}
|
||||
obj.className = "focus";
|
||||
//body显隐
|
||||
var tabSrc = obj.getAttribute( "tabSrc" );
|
||||
for ( var j = 0, length = tabBodys.length; j < length; j++ ) {
|
||||
var body = tabBodys[j],
|
||||
id = body.getAttribute( "id" );
|
||||
body.onclick = function(){
|
||||
this.style.zoom = 1;
|
||||
};
|
||||
if ( id != tabSrc ) {
|
||||
body.style.zIndex = 1;
|
||||
} else {
|
||||
body.style.zIndex = 200;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* TAB切换
|
||||
* @param tabParentId tab的父节点ID或者对象本身
|
||||
*/
|
||||
function switchTab( tabParentId ) {
|
||||
var tabElements = $G( tabParentId ).children,
|
||||
tabHeads = tabElements[0].children,
|
||||
tabBodys = tabElements[1].children;
|
||||
|
||||
for ( var i = 0, length = tabHeads.length; i < length; i++ ) {
|
||||
var head = tabHeads[i];
|
||||
if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head );
|
||||
head.onclick = function () {
|
||||
clickHandler(tabHeads,tabBodys,this);
|
||||
}
|
||||
}
|
||||
}
|
||||
switchTab("helptab");
|
||||
|
||||
document.getElementById('version').innerHTML = parent.UE.version;
|
||||
@@ -0,0 +1 @@
|
||||
33310ac8b04aff3e3ef562b1aaaaae76ed2b3b6e
|
||||
120
public/lib/UEditor/dialogs/image/image.html
Normal file
120
public/lib/UEditor/dialogs/image/image.html
Normal file
@@ -0,0 +1,120 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>ueditor图片对话框</title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
|
||||
<!-- jquery -->
|
||||
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
|
||||
|
||||
<!-- webuploader -->
|
||||
<script src="../../third-party/webuploader/webuploader.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
|
||||
|
||||
<!-- image dialog -->
|
||||
<link rel="stylesheet" href="image.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrapper">
|
||||
<div id="tabhead" class="tabhead">
|
||||
<span class="tab" data-content-id="remote"><var id="lang_tab_remote"></var></span>
|
||||
<span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
|
||||
<span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
|
||||
<span class="tab" data-content-id="search"><var id="lang_tab_search"></var></span>
|
||||
</div>
|
||||
<div class="alignBar">
|
||||
<label class="algnLabel"><var id="lang_input_align"></var></label>
|
||||
<span id="alignIcon">
|
||||
<span id="noneAlign" class="none-align focus" data-align="none"></span>
|
||||
<span id="leftAlign" class="left-align" data-align="left"></span>
|
||||
<span id="rightAlign" class="right-align" data-align="right"></span>
|
||||
<span id="centerAlign" class="center-align" data-align="center"></span>
|
||||
</span>
|
||||
<input id="align" name="align" type="hidden" value="none"/>
|
||||
</div>
|
||||
<div id="tabbody" class="tabbody">
|
||||
|
||||
<!-- 远程图片 -->
|
||||
<div id="remote" class="panel">
|
||||
<div class="top">
|
||||
<div class="row">
|
||||
<label for="url"><var id="lang_input_url"></var></label>
|
||||
<span><input class="text" id="url" type="text"/></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="left">
|
||||
<div class="row">
|
||||
<label><var id="lang_input_size"></var></label>
|
||||
<span><var id="lang_input_width"> </var><input class="text" type="text" id="width"/>px </span>
|
||||
<span><var id="lang_input_height"> </var><input class="text" type="text" id="height"/>px </span>
|
||||
<span><input id="lock" type="checkbox" disabled="disabled"><span id="lockicon"></span></span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label><var id="lang_input_border"></var></label>
|
||||
<span><input class="text" type="text" id="border"/>px </span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label><var id="lang_input_vhspace"></var></label>
|
||||
<span><input class="text" type="text" id="vhSpace"/>px </span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label><var id="lang_input_title"></var></label>
|
||||
<span><input class="text" type="text" id="title"/></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right"><div id="preview"></div></div>
|
||||
</div>
|
||||
|
||||
<!-- 上传图片 -->
|
||||
<div id="upload" class="panel focus">
|
||||
<div id="queueList" class="queueList">
|
||||
<div class="statusBar element-invisible">
|
||||
<div class="progress">
|
||||
<span class="text">0%</span>
|
||||
<span class="percentage"></span>
|
||||
</div><div class="info"></div>
|
||||
<div class="btns">
|
||||
<div id="filePickerBtn"></div>
|
||||
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dndArea" class="placeholder">
|
||||
<div class="filePickerContainer">
|
||||
<div id="filePickerReady"></div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="filelist element-invisible">
|
||||
<li id="filePickerBlock" class="filePickerBlock"></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 在线图片 -->
|
||||
<div id="online" class="panel">
|
||||
<div id="imageList"><var id="lang_imgLoading"></var></div>
|
||||
</div>
|
||||
|
||||
<!-- 搜索图片 -->
|
||||
<div id="search" class="panel">
|
||||
<div class="searchBar">
|
||||
<input id="searchTxt" class="searchTxt text" type="text" />
|
||||
<select id="searchType" class="searchType">
|
||||
<option value="&s=4&z=0"></option>
|
||||
<option value="&s=1&z=19"></option>
|
||||
<option value="&s=2&z=0"></option>
|
||||
<option value="&s=3&z=0"></option>
|
||||
</select>
|
||||
<input id="searchReset" type="button" />
|
||||
<input id="searchBtn" type="button" />
|
||||
</div>
|
||||
<div id="searchList" class="searchList"><ul id="searchListUl"></ul></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="image.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
public/lib/UEditor/dialogs/image/image.js.REMOVED.git-id
Normal file
1
public/lib/UEditor/dialogs/image/image.js.REMOVED.git-id
Normal file
@@ -0,0 +1 @@
|
||||
b078d6a27cc853d8e601a7b28155e4ee199c146a
|
||||
@@ -0,0 +1 @@
|
||||
754755b1b6e2b37d6090f68b80e91867fdcf1042
|
||||
98
public/lib/UEditor/dialogs/insertframe/insertframe.html
Normal file
98
public/lib/UEditor/dialogs/insertframe/insertframe.html
Normal file
@@ -0,0 +1,98 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.warp {width: 320px;height: 153px;margin-left:5px;padding: 20px 0 0 15px;position: relative;}
|
||||
#url {width: 290px; margin-bottom: 2px; margin-left: -6px; margin-left: -2px\9;*margin-left:0;_margin-left:0; }
|
||||
.format span{display: inline-block; width: 58px;text-align: center; zoom:1;}
|
||||
table td{padding:5px 0;}
|
||||
#align{width: 65px;height: 23px;line-height: 22px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="warp">
|
||||
<table width="300" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td colspan="2" class="format">
|
||||
<span><var id="lang_input_address"></var></span>
|
||||
<input style="width:200px" id="url" type="text" value=""/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="format"><span><var id="lang_input_width"></var></span><input style="width:200px" type="text" id="width"/> px</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" class="format"><span><var id="lang_input_height"></var></span><input style="width:200px" type="text" id="height"/> px</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span><var id="lang_input_isScroll"></var></span><input type="checkbox" id="scroll"/> </td>
|
||||
<td><span><var id="lang_input_frameborder"></var></span><input type="checkbox" id="frameborder"/> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><span><var id="lang_input_alignMode"></var></span>
|
||||
<select id="align">
|
||||
<option value=""></option>
|
||||
<option value="left"></option>
|
||||
<option value="right"></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var iframe = editor._iframe;
|
||||
if(iframe){
|
||||
$G("url").value = iframe.getAttribute("src")||"";
|
||||
$G("width").value = iframe.getAttribute("width")||iframe.style.width.replace("px","")||"";
|
||||
$G("height").value = iframe.getAttribute("height") || iframe.style.height.replace("px","") ||"";
|
||||
$G("scroll").checked = (iframe.getAttribute("scrolling") == "yes") ? true : false;
|
||||
$G("frameborder").checked = (iframe.getAttribute("frameborder") == "1") ? true : false;
|
||||
$G("align").value = iframe.align ? iframe.align : "";
|
||||
}
|
||||
function queding(){
|
||||
var url = $G("url").value.replace(/^\s*|\s*$/ig,""),
|
||||
width = $G("width").value,
|
||||
height = $G("height").value,
|
||||
scroll = $G("scroll"),
|
||||
frameborder = $G("frameborder"),
|
||||
float = $G("align").value,
|
||||
newIframe = editor.document.createElement("iframe"),
|
||||
div;
|
||||
if(!url){
|
||||
alert(lang.enterAddress);
|
||||
return false;
|
||||
}
|
||||
newIframe.setAttribute("src",/http:\/\/|https:\/\//ig.test(url) ? url : "http://"+url);
|
||||
/^[1-9]+[.]?\d*$/g.test( width ) ? newIframe.setAttribute("width",width) : "";
|
||||
/^[1-9]+[.]?\d*$/g.test( height ) ? newIframe.setAttribute("height",height) : "";
|
||||
scroll.checked ? newIframe.setAttribute("scrolling","yes") : newIframe.setAttribute("scrolling","no");
|
||||
frameborder.checked ? newIframe.setAttribute("frameborder","1",0) : newIframe.setAttribute("frameborder","0",0);
|
||||
float ? newIframe.setAttribute("align",float) : newIframe.setAttribute("align","");
|
||||
if(iframe){
|
||||
iframe.parentNode.insertBefore(newIframe,iframe);
|
||||
domUtils.remove(iframe);
|
||||
}else{
|
||||
div = editor.document.createElement("div");
|
||||
div.appendChild(newIframe);
|
||||
editor.execCommand("inserthtml",div.innerHTML);
|
||||
}
|
||||
editor._iframe = null;
|
||||
dialog.close();
|
||||
}
|
||||
dialog.onok = queding;
|
||||
$G("url").onkeydown = function(evt){
|
||||
evt = evt || event;
|
||||
if(evt.keyCode == 13){
|
||||
queding();
|
||||
}
|
||||
};
|
||||
$focus($G( "url" ));
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
81
public/lib/UEditor/dialogs/internal.js
Normal file
81
public/lib/UEditor/dialogs/internal.js
Normal file
@@ -0,0 +1,81 @@
|
||||
(function () {
|
||||
var parent = window.parent;
|
||||
//dialog对象
|
||||
dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )];
|
||||
//当前打开dialog的编辑器实例
|
||||
editor = dialog.editor;
|
||||
|
||||
UE = parent.UE;
|
||||
|
||||
domUtils = UE.dom.domUtils;
|
||||
|
||||
utils = UE.utils;
|
||||
|
||||
browser = UE.browser;
|
||||
|
||||
ajax = UE.ajax;
|
||||
|
||||
$G = function ( id ) {
|
||||
return document.getElementById( id )
|
||||
};
|
||||
//focus元素
|
||||
$focus = function ( node ) {
|
||||
setTimeout( function () {
|
||||
if ( browser.ie ) {
|
||||
var r = node.createTextRange();
|
||||
r.collapse( false );
|
||||
r.select();
|
||||
} else {
|
||||
node.focus()
|
||||
}
|
||||
}, 0 )
|
||||
};
|
||||
utils.loadFile(document,{
|
||||
href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(),
|
||||
tag:"link",
|
||||
type:"text/css",
|
||||
rel:"stylesheet"
|
||||
});
|
||||
lang = editor.getLang(dialog.className.split( "-" )[2]);
|
||||
if(lang){
|
||||
domUtils.on(window,'load',function () {
|
||||
|
||||
var langImgPath = editor.options.langPath + editor.options.lang + "/images/";
|
||||
//针对静态资源
|
||||
for ( var i in lang["static"] ) {
|
||||
var dom = $G( i );
|
||||
if(!dom) continue;
|
||||
var tagName = dom.tagName,
|
||||
content = lang["static"][i];
|
||||
if(content.src){
|
||||
//clone
|
||||
content = utils.extend({},content,false);
|
||||
content.src = langImgPath + content.src;
|
||||
}
|
||||
if(content.style){
|
||||
content = utils.extend({},content,false);
|
||||
content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath)
|
||||
}
|
||||
switch ( tagName.toLowerCase() ) {
|
||||
case "var":
|
||||
dom.parentNode.replaceChild( document.createTextNode( content ), dom );
|
||||
break;
|
||||
case "select":
|
||||
var ops = dom.options;
|
||||
for ( var j = 0, oj; oj = ops[j]; ) {
|
||||
oj.innerHTML = content.options[j++];
|
||||
}
|
||||
for ( var p in content ) {
|
||||
p != "options" && dom.setAttribute( p, content[p] );
|
||||
}
|
||||
break;
|
||||
default :
|
||||
domUtils.setAttributes( dom, content);
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
|
||||
126
public/lib/UEditor/dialogs/link/link.html
Normal file
126
public/lib/UEditor/dialogs/link/link.html
Normal file
@@ -0,0 +1,126 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
*{margin:0;padding:0;color: #838383;}
|
||||
table{font-size: 12px;margin: 10px;line-height: 30px}
|
||||
.txt{width:300px;height:21px;line-height:21px;border:1px solid #d7d7d7;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="text"> <var id="lang_input_text"></var></label></td>
|
||||
<td><input class="txt" id="text" type="text" disabled="true"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="href"> <var id="lang_input_url"></var></label></td>
|
||||
<td><input class="txt" id="href" type="text" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="title"> <var id="lang_input_title"></var></label></td>
|
||||
<td><input class="txt" id="title" type="text"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<label for="target"><var id="lang_input_target"></var></label>
|
||||
<input id="target" type="checkbox"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" id="msg"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
var range = editor.selection.getRange(),
|
||||
link = range.collapsed ? editor.queryCommandValue( "link" ) : editor.selection.getStart(),
|
||||
url,
|
||||
text = $G('text'),
|
||||
rangeLink = domUtils.findParentByTagName(range.getCommonAncestor(),'a',true),
|
||||
orgText;
|
||||
link = domUtils.findParentByTagName( link, "a", true );
|
||||
if(link){
|
||||
url = utils.html(link.getAttribute( '_href' ) || link.getAttribute( 'href', 2 ));
|
||||
|
||||
if(rangeLink === link && !link.getElementsByTagName('img').length){
|
||||
text.removeAttribute('disabled');
|
||||
orgText = text.value = link[browser.ie ? 'innerText':'textContent'];
|
||||
}else{
|
||||
text.setAttribute('disabled','true');
|
||||
text.value = lang.validLink;
|
||||
}
|
||||
|
||||
}else{
|
||||
if(range.collapsed){
|
||||
text.removeAttribute('disabled');
|
||||
text.value = '';
|
||||
}else{
|
||||
text.setAttribute('disabled','true');
|
||||
text.value = lang.validLink;
|
||||
}
|
||||
|
||||
}
|
||||
$G("title").value = url ? link.title : "";
|
||||
$G("href").value = url ? url: '';
|
||||
$G("target").checked = url && link.target == "_blank" ? true : false;
|
||||
$focus($G("href"));
|
||||
|
||||
function handleDialogOk(){
|
||||
var href =$G('href').value.replace(/^\s+|\s+$/g, '');
|
||||
if(href){
|
||||
if(!hrefStartWith(href,["http","/","ftp://",'#'])) {
|
||||
href = "http://" + href;
|
||||
}
|
||||
var obj = {
|
||||
'href' : href,
|
||||
'target' : $G("target").checked ? "_blank" : '_self',
|
||||
'title' : $G("title").value.replace(/^\s+|\s+$/g, ''),
|
||||
'_href':href
|
||||
};
|
||||
//修改链接内容的情况太特殊了,所以先做到这里了
|
||||
//todo:情况多的时候,做到command里
|
||||
if(orgText && text.value != orgText){
|
||||
link[browser.ie ? 'innerText' : 'textContent'] = obj.textValue = text.value;
|
||||
range.selectNode(link).select()
|
||||
}
|
||||
if(range.collapsed){
|
||||
obj.textValue = text.value;
|
||||
}
|
||||
editor.execCommand('link',utils.clearEmptyAttrs(obj) );
|
||||
dialog.close();
|
||||
}
|
||||
}
|
||||
dialog.onok = handleDialogOk;
|
||||
$G('href').onkeydown = $G('title').onkeydown = function(evt){
|
||||
evt = evt || window.event;
|
||||
if (evt.keyCode == 13) {
|
||||
handleDialogOk();
|
||||
return false;
|
||||
}
|
||||
};
|
||||
$G('href').onblur = function(){
|
||||
if(!hrefStartWith(this.value,["http","/","ftp://",'#'])){
|
||||
$G("msg").innerHTML = "<span style='color: red'>"+lang.httpPrompt+"</span>";
|
||||
}else{
|
||||
$G("msg").innerHTML = "";
|
||||
}
|
||||
};
|
||||
|
||||
function hrefStartWith(href,arr){
|
||||
href = href.replace(/^\s+|\s+$/g, '');
|
||||
for(var i=0,ai;ai=arr[i++];){
|
||||
if(href.indexOf(ai)==0){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
135
public/lib/UEditor/dialogs/map/map.html
Normal file
135
public/lib/UEditor/dialogs/map/map.html
Normal file
@@ -0,0 +1,135 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.1&services=true"></script>
|
||||
<style type="text/css">
|
||||
.content{width:530px; height: 350px;margin: 10px auto;}
|
||||
.content table{width: 100%}
|
||||
.content table td{vertical-align: middle;}
|
||||
#city,#address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}
|
||||
#city{width:60px}
|
||||
#address{width:130px}
|
||||
#is_dynamic_label span{vertical-align:middle;margin: 3px 0px 3px 3px;}
|
||||
#is_dynamic_label input{vertical-align:middle;margin: 3px 3px 3px 50px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<table>
|
||||
<tr>
|
||||
<td><var id="lang_city"></var>:</td>
|
||||
<td><input id="city" type="text" /></td>
|
||||
<td><var id="lang_address"></var>:</td>
|
||||
<td><input id="address" type="text" value="" /></td>
|
||||
<td><a href="javascript:doSearch()" class="button"><var id="lang_search"></var></a></td>
|
||||
<td><label id="is_dynamic_label" for="is_dynamic"><input id="is_dynamic" type="checkbox" name="is_dynamic" /><span><var id="lang_dynamicmap"></var></span></label></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="width:100%;height:340px;margin:5px auto;border:1px solid gray" id="container"></div>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var map = new BMap.Map("container"),marker,point,styleStr;
|
||||
map.enableScrollWheelZoom();
|
||||
map.enableContinuousZoom();
|
||||
function doSearch(){
|
||||
if (!document.getElementById('city').value) {
|
||||
alert(lang.cityMsg);
|
||||
return;
|
||||
}
|
||||
var search = new BMap.LocalSearch(document.getElementById('city').value, {
|
||||
onSearchComplete: function (results){
|
||||
if (results && results.getNumPois()) {
|
||||
var points = [];
|
||||
for (var i=0; i<results.getCurrentNumPois(); i++) {
|
||||
points.push(results.getPoi(i).point);
|
||||
}
|
||||
if (points.length > 1) {
|
||||
map.setViewport(points);
|
||||
} else {
|
||||
map.centerAndZoom(points[0], 13);
|
||||
}
|
||||
point = map.getCenter();
|
||||
marker.setPoint(point);
|
||||
} else {
|
||||
alert(lang.errorMsg);
|
||||
}
|
||||
}
|
||||
});
|
||||
search.search(document.getElementById('address').value || document.getElementById('city').value);
|
||||
}
|
||||
//获得参数
|
||||
function getPars(str,par){
|
||||
var reg = new RegExp(par+"=((\\d+|[.,])*)","g");
|
||||
return reg.exec(str)[1];
|
||||
}
|
||||
function init(){
|
||||
var mapNode = editor.selection.getRange().getClosedNode(),
|
||||
isMapImg = mapNode && /api[.]map[.]baidu[.]com/ig.test(mapNode.getAttribute("src")),
|
||||
isMapIframe = mapNode && domUtils.hasClass(mapNode, 'ueditor_baidumap');
|
||||
if(isMapImg || isMapIframe){
|
||||
var url, centerPos, markerPos;
|
||||
if(isMapIframe) {
|
||||
url = decodeURIComponent(mapNode.getAttribute("src"));
|
||||
$G('is_dynamic').checked = true;
|
||||
styleStr = mapNode.style.cssText;
|
||||
} else {
|
||||
url = mapNode.getAttribute("src");
|
||||
styleStr = mapNode.style.cssText;
|
||||
}
|
||||
|
||||
centerPos = getPars(url,"center").split(",");
|
||||
markerPos = getPars(url, "markers").split(",");
|
||||
point = new BMap.Point(Number(centerPos[0]),Number(centerPos[1]));
|
||||
marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));
|
||||
map.addControl(new BMap.NavigationControl());
|
||||
map.centerAndZoom(point, Number(getPars(url,"zoom")));
|
||||
}else{
|
||||
point = new BMap.Point(116.404, 39.915); // 创建点坐标
|
||||
marker = new BMap.Marker(point);
|
||||
map.addControl(new BMap.NavigationControl());
|
||||
map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。
|
||||
}
|
||||
marker.enableDragging();
|
||||
map.addOverlay(marker);
|
||||
}
|
||||
init();
|
||||
document.getElementById('address').onkeydown = function (evt){
|
||||
evt = evt || event;
|
||||
if (evt.keyCode == 13) {
|
||||
doSearch();
|
||||
}
|
||||
};
|
||||
dialog.onok = function (){
|
||||
var center = map.getCenter();
|
||||
var zoom = map.zoomLevel;
|
||||
var size = map.getSize();
|
||||
var mapWidth = size.width;
|
||||
var mapHeight = size.height;
|
||||
var point = marker.getPoint();
|
||||
|
||||
if($G('is_dynamic').checked) {
|
||||
var URL = editor.options.UEDITOR_HOME_URL,
|
||||
url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/show.html" +
|
||||
'#center=' + center.lng + ',' + center.lat,
|
||||
'&zoom=' + zoom,
|
||||
'&width=' + mapWidth,
|
||||
'&height=' + mapHeight,
|
||||
'&markers=' + point.lng + ',' + point.lat,
|
||||
'&markerStyles=' + 'l,A'].join('');
|
||||
editor.execCommand('inserthtml', '<iframe class="ueditor_baidumap" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + ' frameborder="0" width="' + (mapWidth+4) + '" height="' + (mapHeight+4) + '"></iframe>');
|
||||
} else {
|
||||
var url = "http://api.map.baidu.com/staticimage?center=" + center.lng + ',' + center.lat +
|
||||
"&zoom=" + zoom + "&width=" + size.width + '&height=' + size.height + "&markers=" + point.lng + ',' + point.lat;
|
||||
editor.execCommand('inserthtml', '<img width="'+ size.width +'"height="'+ size.height +'" src="' + url + '"' + (styleStr ? ' style="' + styleStr + '"' :'') + '/>');
|
||||
}
|
||||
};
|
||||
document.getElementById("address").focus();
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
118
public/lib/UEditor/dialogs/map/show.html
Normal file
118
public/lib/UEditor/dialogs/map/show.html
Normal file
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具"/>
|
||||
<meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图"/>
|
||||
<title>百度地图API自定义地图</title>
|
||||
<!--引用百度地图API-->
|
||||
<style type="text/css">
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script>
|
||||
</head>
|
||||
|
||||
<body onload="initMap();">
|
||||
<!--百度地图容器-->
|
||||
<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
function getParam(name) {
|
||||
return location.href.match(new RegExp('[?#&]' + name + '=([^?#&]+)', 'i')) ? RegExp.$1 : '';
|
||||
}
|
||||
var map, marker;
|
||||
var centerParam = getParam('center');
|
||||
var zoomParam = getParam('zoom');
|
||||
var widthParam = getParam('width');
|
||||
var heightParam = getParam('height');
|
||||
var markersParam = getParam('markers');
|
||||
var markerStylesParam = getParam('markerStyles');
|
||||
|
||||
//创建和初始化地图函数:
|
||||
function initMap() {
|
||||
// [FF]切换模式后报错
|
||||
if (!window.BMap) {
|
||||
return;
|
||||
}
|
||||
var dituContent = document.getElementById('dituContent');
|
||||
dituContent.style.width = widthParam + 'px';
|
||||
dituContent.style.height = heightParam + 'px';
|
||||
|
||||
createMap();//创建地图
|
||||
setMapEvent();//设置地图事件
|
||||
addMapControl();//向地图添加控件
|
||||
|
||||
// 创建标注
|
||||
var markersArr = markersParam.split(',');
|
||||
var point = new BMap.Point(markersArr[0], markersArr[1]);
|
||||
marker = new BMap.Marker(point);
|
||||
marker.enableDragging();
|
||||
map.addOverlay(marker); // 将标注添加到地图中
|
||||
|
||||
if(parent.editor && parent.document.body.contentEditable=="true") { //在编辑状态下
|
||||
setMapListener();//地图改变修改外层的iframe标签src属性
|
||||
}
|
||||
}
|
||||
|
||||
//创建地图函数:
|
||||
function createMap() {
|
||||
map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
|
||||
var centerArr = centerParam.split(',');
|
||||
var point = new BMap.Point(parseFloat(centerArr[0]), parseFloat(centerArr[1]));//定义一个中心点坐标
|
||||
map.centerAndZoom(point, parseInt(zoomParam));//设定地图的中心点和坐标并将地图显示在地图容器中
|
||||
}
|
||||
|
||||
//地图事件设置函数:
|
||||
function setMapEvent() {
|
||||
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
|
||||
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
|
||||
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
|
||||
map.enableKeyboard();//启用键盘上下左右键移动地图
|
||||
}
|
||||
|
||||
//地图控件添加函数:
|
||||
function addMapControl() {
|
||||
//向地图中添加缩放控件
|
||||
var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE});
|
||||
map.addControl(ctrl_nav);
|
||||
//向地图中添加缩略图控件
|
||||
var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1});
|
||||
map.addControl(ctrl_ove);
|
||||
//向地图中添加比例尺控件
|
||||
var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT});
|
||||
map.addControl(ctrl_sca);
|
||||
}
|
||||
|
||||
function setMapListener() {
|
||||
var editor = parent.editor, containerIframe,
|
||||
iframes = parent.document.getElementsByTagName('iframe');
|
||||
for (var key in iframes) {
|
||||
if (iframes[key].contentWindow == window) {
|
||||
containerIframe = iframes[key];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (containerIframe) {
|
||||
map.addEventListener('moveend', mapListenerHandler);
|
||||
map.addEventListener('zoomend', mapListenerHandler);
|
||||
marker.addEventListener('dragend', mapListenerHandler);
|
||||
}
|
||||
|
||||
function mapListenerHandler() {
|
||||
var zoom = map.getZoom(),
|
||||
center = map.getCenter(),
|
||||
marker = window.marker.getPoint();
|
||||
containerIframe.src = containerIframe.src.
|
||||
replace(new RegExp('([?#&])center=([^?#&]+)', 'i'), '$1center=' + center.lng + ',' + center.lat).
|
||||
replace(new RegExp('([?#&])markers=([^?#&]+)', 'i'), '$1markers=' + marker.lng + ',' + marker.lat).
|
||||
replace(new RegExp('([?#&])zoom=([^?#&]+)', 'i'), '$1zoom=' + zoom);
|
||||
editor.fireEvent('saveScene');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
30
public/lib/UEditor/dialogs/music/music.css
Normal file
30
public/lib/UEditor/dialogs/music/music.css
Normal file
@@ -0,0 +1,30 @@
|
||||
.wrapper{margin: 5px 10px;}
|
||||
|
||||
.searchBar{height:30px;padding:7px 0 3px;text-align:center;}
|
||||
.searchBtn{font-size:13px;height:24px;}
|
||||
|
||||
.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;}
|
||||
|
||||
.listPanel{overflow: hidden;}
|
||||
.panelon{display:block;}
|
||||
.paneloff{display:none}
|
||||
|
||||
.page{width:220px;margin:20px auto;overflow: hidden;}
|
||||
.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center}
|
||||
.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff;
|
||||
border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;}
|
||||
|
||||
.m-box{width:460px;}
|
||||
.m-m{float: left;line-height: 20px;height: 20px;}
|
||||
.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;}
|
||||
.m-l{float:left;width:40px; }
|
||||
.m-t{float:left;width:140px;}
|
||||
.m-s{float:left;width:110px;}
|
||||
.m-z{float:left;width:100px;}
|
||||
.m-try-t{float: left;width: 60px;;}
|
||||
|
||||
.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;}
|
||||
.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;}
|
||||
|
||||
.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat}
|
||||
.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;}
|
||||
32
public/lib/UEditor/dialogs/music/music.html
Normal file
32
public/lib/UEditor/dialogs/music/music.html
Normal file
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>插入音乐</title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="music.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="searchBar">
|
||||
<input id="J_searchName" type="text"/>
|
||||
<input type="button" class="searchBtn" id="J_searchBtn">
|
||||
</div>
|
||||
<div class="resultBar" id="J_resultBar">
|
||||
<div class="loading" style="display:none"></div>
|
||||
<div class="empty"><var id="lang_input_tips"></var></div>
|
||||
</div>
|
||||
<div id="J_preview"></div>
|
||||
</div>
|
||||
<script type="text/javascript" src="music.js"></script>
|
||||
<script type="text/javascript">
|
||||
var music = new Music;
|
||||
dialog.onok = function () {
|
||||
music.exec();
|
||||
};
|
||||
dialog.oncancel = function () {
|
||||
$G('J_preview').innerHTML = "";
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
192
public/lib/UEditor/dialogs/music/music.js
Normal file
192
public/lib/UEditor/dialogs/music/music.js
Normal file
@@ -0,0 +1,192 @@
|
||||
function Music() {
|
||||
this.init();
|
||||
}
|
||||
(function () {
|
||||
var pages = [],
|
||||
panels = [],
|
||||
selectedItem = null;
|
||||
Music.prototype = {
|
||||
total:70,
|
||||
pageSize:10,
|
||||
dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common",
|
||||
playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf",
|
||||
|
||||
init:function () {
|
||||
var me = this;
|
||||
domUtils.on($G("J_searchName"), "keyup", function (event) {
|
||||
var e = window.event || event;
|
||||
if (e.keyCode == 13) {
|
||||
me.dosearch();
|
||||
}
|
||||
});
|
||||
domUtils.on($G("J_searchBtn"), "click", function () {
|
||||
me.dosearch();
|
||||
});
|
||||
},
|
||||
callback:function (data) {
|
||||
var me = this;
|
||||
me.data = data.song_list;
|
||||
setTimeout(function () {
|
||||
$G('J_resultBar').innerHTML = me._renderTemplate(data.song_list);
|
||||
}, 300);
|
||||
},
|
||||
dosearch:function () {
|
||||
var me = this;
|
||||
selectedItem = null;
|
||||
var key = $G('J_searchName').value;
|
||||
if (utils.trim(key) == "")return false;
|
||||
key = encodeURIComponent(key);
|
||||
me._sent(key);
|
||||
},
|
||||
doselect:function (i) {
|
||||
var me = this;
|
||||
if (typeof i == 'object') {
|
||||
selectedItem = i;
|
||||
} else if (typeof i == 'number') {
|
||||
selectedItem = me.data[i];
|
||||
}
|
||||
},
|
||||
onpageclick:function (id) {
|
||||
var me = this;
|
||||
for (var i = 0; i < pages.length; i++) {
|
||||
$G(pages[i]).className = 'pageoff';
|
||||
$G(panels[i]).className = 'paneloff';
|
||||
}
|
||||
$G('page' + id).className = 'pageon';
|
||||
$G('panel' + id).className = 'panelon';
|
||||
},
|
||||
listenTest:function (elem) {
|
||||
var me = this,
|
||||
view = $G('J_preview'),
|
||||
is_play_action = (elem.className == 'm-try'),
|
||||
old_trying = me._getTryingElem();
|
||||
|
||||
if (old_trying) {
|
||||
old_trying.className = 'm-try';
|
||||
view.innerHTML = '';
|
||||
}
|
||||
if (is_play_action) {
|
||||
elem.className = 'm-trying';
|
||||
view.innerHTML = me._buildMusicHtml(me._getUrl(true));
|
||||
}
|
||||
},
|
||||
_sent:function (param) {
|
||||
var me = this;
|
||||
$G('J_resultBar').innerHTML = '<div class="loading"></div>';
|
||||
|
||||
utils.loadFile(document, {
|
||||
src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(),
|
||||
tag:"script",
|
||||
type:"text/javascript",
|
||||
defer:"defer"
|
||||
});
|
||||
},
|
||||
_removeHtml:function (str) {
|
||||
var reg = /<\s*\/?\s*[^>]*\s*>/gi;
|
||||
return str.replace(reg, "");
|
||||
},
|
||||
_getUrl:function (isTryListen) {
|
||||
var me = this;
|
||||
var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist='
|
||||
+ encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra='
|
||||
+ encodeURIComponent(me._removeHtml(selectedItem.album_title))
|
||||
+ '&autoPlay='+isTryListen+'' + '&loop=true';
|
||||
return me.playerUrl + "?" + param;
|
||||
},
|
||||
_getTryingElem:function () {
|
||||
var s = $G('J_listPanel').getElementsByTagName('span');
|
||||
|
||||
for (var i = 0; i < s.length; i++) {
|
||||
if (s[i].className == 'm-trying')
|
||||
return s[i];
|
||||
}
|
||||
return null;
|
||||
},
|
||||
_buildMusicHtml:function (playerUrl) {
|
||||
var html = '<embed class="BDE_try_Music" allowfullscreen="false" pluginspage="http://www.macromedia.com/go/getflashplayer"';
|
||||
html += ' src="' + playerUrl + '"';
|
||||
html += ' width="1" height="1" style="position:absolute;left:-2000px;"';
|
||||
html += ' type="application/x-shockwave-flash" wmode="transparent" play="true" loop="false"';
|
||||
html += ' menu="false" allowscriptaccess="never" scale="noborder">';
|
||||
return html;
|
||||
},
|
||||
_byteLength:function (str) {
|
||||
return str.replace(/[^\u0000-\u007f]/g, "\u0061\u0061").length;
|
||||
},
|
||||
_getMaxText:function (s) {
|
||||
var me = this;
|
||||
s = me._removeHtml(s);
|
||||
if (me._byteLength(s) > 12)
|
||||
return s.substring(0, 5) + '...';
|
||||
if (!s) s = " ";
|
||||
return s;
|
||||
},
|
||||
_rebuildData:function (data) {
|
||||
var me = this,
|
||||
newData = [],
|
||||
d = me.pageSize,
|
||||
itembox;
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if ((i + d) % d == 0) {
|
||||
itembox = [];
|
||||
newData.push(itembox)
|
||||
}
|
||||
itembox.push(data[i]);
|
||||
}
|
||||
return newData;
|
||||
},
|
||||
_renderTemplate:function (data) {
|
||||
var me = this;
|
||||
if (data.length == 0)return '<div class="empty">' + lang.emptyTxt + '</div>';
|
||||
data = me._rebuildData(data);
|
||||
var s = [], p = [], t = [];
|
||||
s.push('<div id="J_listPanel" class="listPanel">');
|
||||
p.push('<div class="page">');
|
||||
for (var i = 0, tmpList; tmpList = data[i++];) {
|
||||
panels.push('panel' + i);
|
||||
pages.push('page' + i);
|
||||
if (i == 1) {
|
||||
s.push('<div id="panel' + i + '" class="panelon">');
|
||||
if (data.length != 1) {
|
||||
t.push('<div id="page' + i + '" onclick="music.onpageclick(' + i + ')" class="pageon">' + (i ) + '</div>');
|
||||
}
|
||||
} else {
|
||||
s.push('<div id="panel' + i + '" class="paneloff">');
|
||||
t.push('<div id="page' + i + '" onclick="music.onpageclick(' + i + ')" class="pageoff">' + (i ) + '</div>');
|
||||
}
|
||||
s.push('<div class="m-box">');
|
||||
s.push('<div class="m-h"><span class="m-t">' + lang.chapter + '</span><span class="m-s">' + lang.singer
|
||||
+ '</span><span class="m-z">' + lang.special + '</span><span class="m-try-t">' + lang.listenTest + '</span></div>');
|
||||
for (var j = 0, tmpObj; tmpObj = tmpList[j++];) {
|
||||
s.push('<label for="radio-' + i + '-' + j + '" class="m-m">');
|
||||
s.push('<input type="radio" id="radio-' + i + '-' + j + '" name="musicId" class="m-l" onclick="music.doselect(' + (me.pageSize * (i-1) + (j-1)) + ')"/>');
|
||||
s.push('<span class="m-t">' + me._getMaxText(tmpObj.title) + '</span>');
|
||||
s.push('<span class="m-s">' + me._getMaxText(tmpObj.author) + '</span>');
|
||||
s.push('<span class="m-z">' + me._getMaxText(tmpObj.album_title) + '</span>');
|
||||
s.push('<span class="m-try" onclick="music.doselect(' + (me.pageSize * (i-1) + (j-1)) + ');music.listenTest(this)"></span>');
|
||||
s.push('</label>');
|
||||
}
|
||||
s.push('</div>');
|
||||
s.push('</div>');
|
||||
}
|
||||
t.reverse();
|
||||
p.push(t.join(''));
|
||||
s.push('</div>');
|
||||
p.push('</div>');
|
||||
return s.join('') + p.join('');
|
||||
},
|
||||
exec:function () {
|
||||
var me = this;
|
||||
if (selectedItem == null) return;
|
||||
$G('J_preview').innerHTML = "";
|
||||
editor.execCommand('music', {
|
||||
url:me._getUrl(false),
|
||||
width:400,
|
||||
height:95
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
|
||||
40
public/lib/UEditor/dialogs/preview/preview.html
Normal file
40
public/lib/UEditor/dialogs/preview/preview.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<style>
|
||||
html,body{
|
||||
height:100%;
|
||||
width:100%;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
#preview{
|
||||
width:100%;
|
||||
height:100%;
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
#preview *{font-family:sans-serif;font-size:16px;}
|
||||
</style>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<script src="../../ueditor.parse.js"></script>
|
||||
<title></title>
|
||||
</head>
|
||||
<body class="view">
|
||||
<div id="preview" style="margin:8px">
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<script>
|
||||
document.getElementById('preview').innerHTML = editor.getContent();
|
||||
uParse('#preview',{
|
||||
rootPath : '../../',
|
||||
chartContainerHeight:500
|
||||
})
|
||||
dialog.oncancel = function(){
|
||||
document.getElementById('preview').innerHTML = '';
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
63e87cecb90ed3ac0e4acbc257c6dddae5311e09
|
||||
72
public/lib/UEditor/dialogs/scrawl/scrawl.css
Normal file
72
public/lib/UEditor/dialogs/scrawl/scrawl.css
Normal file
@@ -0,0 +1,72 @@
|
||||
/*common
|
||||
*/
|
||||
body{margin: 0;}
|
||||
table{width:100%;}
|
||||
table td{padding:2px 4px;vertical-align: middle;}
|
||||
a{text-decoration: none;}
|
||||
em{font-style: normal;}
|
||||
.border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;}
|
||||
/*module
|
||||
*/
|
||||
.main{margin: 8px;overflow: hidden;}
|
||||
|
||||
.hot{float:left;height:335px;}
|
||||
.drawBoard{position: relative; cursor: crosshair;}
|
||||
.brushBorad{position: absolute;left:0;top:0;z-index: 998;}
|
||||
.picBoard{border: none;text-align: center;line-height: 300px;cursor: default;}
|
||||
.operateBar{margin-top:10px;font-size:12px;text-align: center;}
|
||||
.operateBar span{margin-left: 10px;}
|
||||
|
||||
.drawToolbar{float:right;width:110px;height:300px;overflow: hidden;}
|
||||
.colorBar{margin-top:10px;font-size: 12px;text-align: center;}
|
||||
.colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3}
|
||||
.sectionBar{margin-top:15px;font-size: 12px;text-align: center;}
|
||||
.sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3}
|
||||
.size1{background: url('images/size.png') 1px center no-repeat ;}
|
||||
.size2{background: url('images/size.png') -10px center no-repeat;}
|
||||
.size3{background: url('images/size.png') -22px center no-repeat;}
|
||||
.size4{background: url('images/size.png') -35px center no-repeat;}
|
||||
|
||||
.addImgH{position: relative;}
|
||||
.addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;}
|
||||
.addImgH_form input{width: 100%;}
|
||||
/*scrawl遮罩层
|
||||
*/
|
||||
.maskLayerNull{display: none;}
|
||||
.maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7;
|
||||
background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;}
|
||||
/*btn state
|
||||
*/
|
||||
.previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;}
|
||||
.previousStepH .text{color:#888;cursor:pointer;}
|
||||
.previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;}
|
||||
.previousStep .text{color:#ccc;cursor:default;}
|
||||
|
||||
.nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;}
|
||||
.nextStepH .text{color:#888;cursor:pointer;}
|
||||
.nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;}
|
||||
.nextStep .text{color:#ccc;cursor:default;}
|
||||
|
||||
.clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;}
|
||||
.clearBoardH .text{color:#888;cursor:pointer;}
|
||||
.clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;}
|
||||
.clearBoard .text{color:#ccc;cursor:default;}
|
||||
|
||||
.scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;}
|
||||
.scaleBoardH .text{color:#888;cursor:pointer;}
|
||||
.scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;}
|
||||
.scaleBoard .text{color:#ccc;cursor:default;}
|
||||
|
||||
.removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;}
|
||||
.removeImgH .text{color:#888;cursor:pointer;}
|
||||
.removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;}
|
||||
.removeImg .text{color:#ccc;cursor:default;}
|
||||
|
||||
.addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')}
|
||||
.addImgH .text{color:#888;cursor:pointer;}
|
||||
/*icon
|
||||
*/
|
||||
.brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')}
|
||||
.eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')}
|
||||
|
||||
|
||||
95
public/lib/UEditor/dialogs/scrawl/scrawl.html
Normal file
95
public/lib/UEditor/dialogs/scrawl/scrawl.html
Normal file
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta name="robots" content="noindex, nofollow"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="scrawl.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="main" id="J_wrap">
|
||||
<div class="hot">
|
||||
<div class="drawBoard border_style1">
|
||||
<canvas id="J_brushBoard" class="brushBorad" width="360" height="300"></canvas>
|
||||
<div id="J_picBoard" class="picBoard" style="width: 360px;height: 300px"></div>
|
||||
</div>
|
||||
<div id="J_operateBar" class="operateBar">
|
||||
<span id="J_previousStep" class="previousStep">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_previousStep"></var></em>
|
||||
</span>
|
||||
<span id="J_nextStep" class="nextStep">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_nextsStep"></var></em>
|
||||
</span>
|
||||
<span id="J_clearBoard" class="clearBoard">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_clear"></var></em>
|
||||
</span>
|
||||
<span id="J_sacleBoard" class="scaleBoard">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_ScalePic"></var></em>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drawToolbar border_style1">
|
||||
<div id="J_colorBar" class="colorBar"></div>
|
||||
<div id="J_brushBar" class="sectionBar">
|
||||
<em class="brushIcon"></em>
|
||||
<a href="javascript:void(0)" class="size1">1</a>
|
||||
<a href="javascript:void(0)" class="size2">3</a>
|
||||
<a href="javascript:void(0)" class="size3">5</a>
|
||||
<a href="javascript:void(0)" class="size4">7</a>
|
||||
</div>
|
||||
<div id="J_eraserBar" class="sectionBar">
|
||||
<em class="eraserIcon"></em>
|
||||
<a href="javascript:void(0)" class="size1">1</a>
|
||||
<a href="javascript:void(0)" class="size2">3</a>
|
||||
<a href="javascript:void(0)" class="size3">5</a>
|
||||
<a href="javascript:void(0)" class="size4">7</a>
|
||||
</div>
|
||||
<div class="sectionBar">
|
||||
<div id="J_addImg" class="addImgH">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_addPic"></var></em>
|
||||
<form method="post" id="fileForm" enctype="multipart/form-data" class="addImgH_form" target="up">
|
||||
<input type="file" name="upfile" id="J_imgTxt"
|
||||
accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>
|
||||
</form>
|
||||
<iframe name="up" style="display: none"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sectionBar">
|
||||
<span id="J_removeImg" class="removeImg">
|
||||
<em class="icon"></em>
|
||||
<em class="text"><var id="lang_input_removePic"></var></em>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="J_maskLayer" class="maskLayerNull"></div>
|
||||
|
||||
<script type="text/javascript" src="scrawl.js"></script>
|
||||
<script type="text/javascript">
|
||||
var settings = {
|
||||
drawBrushSize:3, //画笔初始大小
|
||||
drawBrushColor:"#4bacc6", //画笔初始颜色
|
||||
colorList:['c00000', 'ff0000', 'ffc000', 'ffff00', '92d050', '00b050', '00b0f0', '0070c0', '002060', '7030a0', 'ffffff',
|
||||
'000000', 'eeece1', '1f497d', '4f81bd', 'c0504d', '9bbb59', '8064a2', '4bacc6', 'f79646'], //画笔选择颜色
|
||||
saveNum:10 //撤销次数
|
||||
};
|
||||
|
||||
var scrawlObj = new scrawl( settings );
|
||||
scrawlObj.isCancelScrawl = false;
|
||||
|
||||
dialog.onok = function () {
|
||||
exec( scrawlObj );
|
||||
return false;
|
||||
};
|
||||
dialog.oncancel = function () {
|
||||
scrawlObj.isCancelScrawl = true;
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
cadb0cb2fe5a7c08299f3a9fb3ddcc230a71ca74
|
||||
102
public/lib/UEditor/dialogs/searchreplace/searchreplace.html
Normal file
102
public/lib/UEditor/dialogs/searchreplace/searchreplace.html
Normal file
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.warpper{ position:relative;width: 380px; height: 100%; margin: 10px auto;}
|
||||
.tabbody{height: 160px;}
|
||||
.tabbody table{width:100%;border-collapse: separate;border-spacing: 3px;}
|
||||
.tabbody .panel{width:373px;height:100%;padding-left: 5px;position: absolute;background-color: #fff;}
|
||||
.tabbody input.int{ width:190px;height:21px;border:1px solid #d7d7d7;line-height:21px;}
|
||||
.tabbody input.btn{padding: 0 5px; text-align:center;line-height:24px; text-decoration: none;height:24px;background:url("../../themes/default/images/dialog-title-bg.png") repeat-x;border:1px solid #ccc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="warpper" id="searchtab">
|
||||
<div id="head" class="tabhead">
|
||||
<span tabsrc="find" class="focus"><var id="lang_tab_search"></var></span>
|
||||
<span tabsrc="replace" ><var id="lang_tab_replace"></var></span>
|
||||
</div>
|
||||
<div class="tabbody">
|
||||
<div class="panel" id="find">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="80"><var id="lang_search1"></var>: </td>
|
||||
<td><input id="findtxt" type="text" class="int" /></td>
|
||||
</tr>
|
||||
<!--<tr>-->
|
||||
|
||||
<!--<td colspan="2"><span style="color:red"><var id="lang_searchReg"></var></span></td>-->
|
||||
<!--</tr>-->
|
||||
<tr>
|
||||
<td><var id="lang_case_sensitive1"></var></td>
|
||||
<td>
|
||||
<input id="matchCase" type="checkbox" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input id="nextFindBtn" type="button" class="btn" />
|
||||
<input id="preFindBtn" type="button" class="btn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span id="search-msg" style="color:red"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="panel" id="replace">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="80"><var id="lang_search2"></var>: </td>
|
||||
<td><input id="findtxt1" type="text" class="int" /></td>
|
||||
</tr>
|
||||
<!--<tr>-->
|
||||
|
||||
<!--<td colspan="2"><span style="color:red"><var id="lang_searchReg1"></var></span></td>-->
|
||||
<!--</tr>-->
|
||||
<tr>
|
||||
<td><var id="lang_replace"></var>: </td>
|
||||
<td><input id="replacetxt" type="text" class="int" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><var id="lang_case_sensitive2"></var></td>
|
||||
<td>
|
||||
<input id="matchCase1" type="checkbox" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input id="nextReplaceBtn" type="button" class="btn" />
|
||||
<input id="preReplaceBtn" type="button" class="btn" />
|
||||
<input id="repalceBtn" type="button" class="btn" />
|
||||
<input id="repalceAllBtn" type="button" class="btn" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span id="replace-msg" style="color:red"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="searchreplace.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
164
public/lib/UEditor/dialogs/searchreplace/searchreplace.js
Normal file
164
public/lib/UEditor/dialogs/searchreplace/searchreplace.js
Normal file
@@ -0,0 +1,164 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-9-26
|
||||
* Time: 下午12:29
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
|
||||
//清空上次查选的痕迹
|
||||
editor.firstForSR = 0;
|
||||
editor.currentRangeForSR = null;
|
||||
//给tab注册切换事件
|
||||
/**
|
||||
* tab点击处理事件
|
||||
* @param tabHeads
|
||||
* @param tabBodys
|
||||
* @param obj
|
||||
*/
|
||||
function clickHandler( tabHeads,tabBodys,obj ) {
|
||||
//head样式更改
|
||||
for ( var k = 0, len = tabHeads.length; k < len; k++ ) {
|
||||
tabHeads[k].className = "";
|
||||
}
|
||||
obj.className = "focus";
|
||||
//body显隐
|
||||
var tabSrc = obj.getAttribute( "tabSrc" );
|
||||
for ( var j = 0, length = tabBodys.length; j < length; j++ ) {
|
||||
var body = tabBodys[j],
|
||||
id = body.getAttribute( "id" );
|
||||
if ( id != tabSrc ) {
|
||||
body.style.zIndex = 1;
|
||||
} else {
|
||||
body.style.zIndex = 200;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* TAB切换
|
||||
* @param tabParentId tab的父节点ID或者对象本身
|
||||
*/
|
||||
function switchTab( tabParentId ) {
|
||||
var tabElements = $G( tabParentId ).children,
|
||||
tabHeads = tabElements[0].children,
|
||||
tabBodys = tabElements[1].children;
|
||||
|
||||
for ( var i = 0, length = tabHeads.length; i < length; i++ ) {
|
||||
var head = tabHeads[i];
|
||||
if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head );
|
||||
head.onclick = function () {
|
||||
clickHandler(tabHeads,tabBodys,this);
|
||||
}
|
||||
}
|
||||
}
|
||||
$G('searchtab').onmousedown = function(){
|
||||
$G('search-msg').innerHTML = '';
|
||||
$G('replace-msg').innerHTML = ''
|
||||
}
|
||||
//是否区分大小写
|
||||
function getMatchCase(id) {
|
||||
return $G(id).checked ? true : false;
|
||||
}
|
||||
//查找
|
||||
$G("nextFindBtn").onclick = function (txt, dir, mcase) {
|
||||
var findtxt = $G("findtxt").value, obj;
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
dir:1,
|
||||
casesensitive:getMatchCase("matchCase")
|
||||
};
|
||||
if (!frCommond(obj)) {
|
||||
var bk = editor.selection.getRange().createBookmark();
|
||||
$G('search-msg').innerHTML = lang.getEnd;
|
||||
editor.selection.getRange().moveToBookmark(bk).select();
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
$G("nextReplaceBtn").onclick = function (txt, dir, mcase) {
|
||||
var findtxt = $G("findtxt1").value, obj;
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
dir:1,
|
||||
casesensitive:getMatchCase("matchCase1")
|
||||
};
|
||||
frCommond(obj);
|
||||
};
|
||||
$G("preFindBtn").onclick = function (txt, dir, mcase) {
|
||||
var findtxt = $G("findtxt").value, obj;
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
dir:-1,
|
||||
casesensitive:getMatchCase("matchCase")
|
||||
};
|
||||
if (!frCommond(obj)) {
|
||||
$G('search-msg').innerHTML = lang.getStart;
|
||||
}
|
||||
};
|
||||
$G("preReplaceBtn").onclick = function (txt, dir, mcase) {
|
||||
var findtxt = $G("findtxt1").value, obj;
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
dir:-1,
|
||||
casesensitive:getMatchCase("matchCase1")
|
||||
};
|
||||
frCommond(obj);
|
||||
};
|
||||
//替换
|
||||
$G("repalceBtn").onclick = function () {
|
||||
var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj,
|
||||
replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, "");
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
dir:1,
|
||||
casesensitive:getMatchCase("matchCase1"),
|
||||
replaceStr:replacetxt
|
||||
};
|
||||
frCommond(obj);
|
||||
};
|
||||
//全部替换
|
||||
$G("repalceAllBtn").onclick = function () {
|
||||
var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj,
|
||||
replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, "");
|
||||
if (!findtxt) {
|
||||
return false;
|
||||
}
|
||||
if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) {
|
||||
return false;
|
||||
}
|
||||
obj = {
|
||||
searchStr:findtxt,
|
||||
casesensitive:getMatchCase("matchCase1"),
|
||||
replaceStr:replacetxt,
|
||||
all:true
|
||||
};
|
||||
var num = frCommond(obj);
|
||||
if (num) {
|
||||
$G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num);
|
||||
}
|
||||
};
|
||||
//执行
|
||||
var frCommond = function (obj) {
|
||||
return editor.execCommand("searchreplace", obj);
|
||||
};
|
||||
switchTab("searchtab");
|
||||
58
public/lib/UEditor/dialogs/snapscreen/snapscreen.html
Normal file
58
public/lib/UEditor/dialogs/snapscreen/snapscreen.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
*{color: #838383}
|
||||
html,body {
|
||||
font-size: 12px;
|
||||
width:100%;
|
||||
height:100%;
|
||||
overflow: hidden;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
}
|
||||
h2 { font-size: 16px; margin: 20px auto;}
|
||||
.content{
|
||||
padding:5px 15px 0 15px;
|
||||
height:100%;
|
||||
}
|
||||
dt,dd { margin-left: 0; padding-left: 0;}
|
||||
dt a { display: block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
width: 55px;
|
||||
background: #EFEFEF;
|
||||
border: 1px solid #CCC;
|
||||
padding: 0 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
dt a:hover{
|
||||
background: #e0e0e0;
|
||||
border-color: #999
|
||||
}
|
||||
dt a:active{
|
||||
background: #ccc;
|
||||
border-color: #999;
|
||||
color: #666;
|
||||
}
|
||||
dd { line-height:20px;margin-top: 10px;}
|
||||
span{ padding-right:4px;}
|
||||
input{width:210px;height:21px;background: #FFF;border:1px solid #d7d7d7;padding: 0px; margin: 0px; }
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<h2><var id="lang_showMsg"></var></h2>
|
||||
<dl>
|
||||
<dt><a href="../../third-party/snapscreen/UEditorSnapscreen.exe" target="_blank" id="downlink"><var id="lang_download"></var></a></dt>
|
||||
<dd><var id="lang_step1"></var></dd>
|
||||
<dd><var id="lang_step2"></var></dd>
|
||||
</dl>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
21
public/lib/UEditor/dialogs/spechars/spechars.html
Normal file
21
public/lib/UEditor/dialogs/spechars/spechars.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
html,body{overflow:hidden;}
|
||||
#specharsTab{width: 97%;margin: 10px auto; zoom:1;position: relative}
|
||||
.tabbody {height:447px;}
|
||||
.tabbody span{ margin: 5px 3px;text-align: center;display:inline-block;width: 40px;height:16px;line-height: 16px;cursor: pointer; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="specharsTab">
|
||||
<div id="tabHeads" class="tabhead"></div><div id="tabBodys" class="tabbody"></div>
|
||||
</div>
|
||||
<script type="text/javascript" src="spechars.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
57
public/lib/UEditor/dialogs/spechars/spechars.js
Normal file
57
public/lib/UEditor/dialogs/spechars/spechars.js
Normal file
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-9-26
|
||||
* Time: 下午1:09
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
var charsContent = [
|
||||
{ name:"tsfh", title:lang.tsfh, content:toArray("、,。,·,ˉ,ˇ,¨,〃,々,—,~,‖,…,‘,’,“,”,〔,〕,〈,〉,《,》,「,」,『,』,〖,〗,【,】,±,×,÷,∶,∧,∨,∑,∏,∪,∩,∈,∷,√,⊥,∥,∠,⌒,⊙,∫,∮,≡,≌,≈,∽,∝,≠,≮,≯,≤,≥,∞,∵,∴,♂,♀,°,′,″,℃,$,¤,¢,£,‰,§,№,☆,★,○,●,◎,◇,◆,□,■,△,▲,※,→,←,↑,↓,〓,〡,〢,〣,〤,〥,〦,〧,〨,〩,㊣,㎎,㎏,㎜,㎝,㎞,㎡,㏄,㏎,㏑,㏒,㏕,︰,¬,¦,℡,ˊ,ˋ,˙,–,―,‥,‵,℅,℉,↖,↗,↘,↙,∕,∟,∣,≒,≦,≧,⊿,═,║,╒,╓,╔,╕,╖,╗,╘,╙,╚,╛,╜,╝,╞,╟,╠,╡,╢,╣,╤,╥,╦,╧,╨,╩,╪,╫,╬,╭,╮,╯,╰,╱,╲,╳,▁,▂,▃,▄,▅,▆,▇,<2C>,█,▉,▊,▋,▌,▍,▎,▏,▓,▔,▕,▼,▽,◢,◣,◤,◥,☉,⊕,〒,〝,〞")},
|
||||
{ name:"lmsz", title:lang.lmsz, content:toArray("ⅰ,ⅱ,ⅲ,ⅳ,ⅴ,ⅵ,ⅶ,ⅷ,ⅸ,ⅹ,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ")},
|
||||
{ name:"szfh", title:lang.szfh, content:toArray("⒈,⒉,⒊,⒋,⒌,⒍,⒎,⒏,⒐,⒑,⒒,⒓,⒔,⒕,⒖,⒗,⒘,⒙,⒚,⒛,⑴,⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,㈠,㈡,㈢,㈣,㈤,㈥,㈦,㈧,㈨,㈩")},
|
||||
{ name:"rwfh", title:lang.rwfh, content:toArray("ぁ,あ,ぃ,い,ぅ,う,ぇ,え,ぉ,お,か,が,き,ぎ,く,ぐ,け,げ,こ,ご,さ,ざ,し,じ,す,ず,せ,ぜ,そ,ぞ,た,だ,ち,ぢ,っ,つ,づ,て,で,と,ど,な,に,ぬ,ね,の,は,ば,ぱ,ひ,び,ぴ,ふ,ぶ,ぷ,へ,べ,ぺ,ほ,ぼ,ぽ,ま,み,む,め,も,ゃ,や,ゅ,ゆ,ょ,よ,ら,り,る,れ,ろ,ゎ,わ,ゐ,ゑ,を,ん,ァ,ア,ィ,イ,ゥ,ウ,ェ,エ,ォ,オ,カ,ガ,キ,ギ,ク,グ,ケ,ゲ,コ,ゴ,サ,ザ,シ,ジ,ス,ズ,セ,ゼ,ソ,ゾ,タ,ダ,チ,ヂ,ッ,ツ,ヅ,テ,デ,ト,ド,ナ,ニ,ヌ,ネ,ノ,ハ,バ,パ,ヒ,ビ,ピ,フ,ブ,プ,ヘ,ベ,ペ,ホ,ボ,ポ,マ,ミ,ム,メ,モ,ャ,ヤ,ュ,ユ,ョ,ヨ,ラ,リ,ル,レ,ロ,ヮ,ワ,ヰ,ヱ,ヲ,ン,ヴ,ヵ,ヶ")},
|
||||
{ name:"xlzm", title:lang.xlzm, content:toArray("Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω")},
|
||||
{ name:"ewzm", title:lang.ewzm, content:toArray("А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я")},
|
||||
{ name:"pyzm", title:lang.pyzm, content:toArray("ā,á,ǎ,à,ē,é,ě,è,ī,í,ǐ,ì,ō,ó,ǒ,ò,ū,ú,ǔ,ù,ǖ,ǘ,ǚ,ǜ,ü")},
|
||||
{ name:"yyyb", title:lang.yyyb, content:toArray("i:,i,e,æ,ʌ,ə:,ə,u:,u,ɔ:,ɔ,a:,ei,ai,ɔi,əu,au,iə,εə,uə,p,t,k,b,d,g,f,s,ʃ,θ,h,v,z,ʒ,ð,tʃ,tr,ts,dʒ,dr,dz,m,n,ŋ,l,r,w,j,")},
|
||||
{ name:"zyzf", title:lang.zyzf, content:toArray("ㄅ,ㄆ,ㄇ,ㄈ,ㄉ,ㄊ,ㄋ,ㄌ,ㄍ,ㄎ,ㄏ,ㄐ,ㄑ,ㄒ,ㄓ,ㄔ,ㄕ,ㄖ,ㄗ,ㄘ,ㄙ,ㄚ,ㄛ,ㄜ,ㄝ,ㄞ,ㄟ,ㄠ,ㄡ,ㄢ,ㄣ,ㄤ,ㄥ,ㄦ,ㄧ,ㄨ")}
|
||||
];
|
||||
(function createTab(content) {
|
||||
for (var i = 0, ci; ci = content[i++];) {
|
||||
var span = document.createElement("span");
|
||||
span.setAttribute("tabSrc", ci.name);
|
||||
span.innerHTML = ci.title;
|
||||
if (i == 1)span.className = "focus";
|
||||
domUtils.on(span, "click", function () {
|
||||
var tmps = $G("tabHeads").children;
|
||||
for (var k = 0, sk; sk = tmps[k++];) {
|
||||
sk.className = "";
|
||||
}
|
||||
tmps = $G("tabBodys").children;
|
||||
for (var k = 0, sk; sk = tmps[k++];) {
|
||||
sk.style.display = "none";
|
||||
}
|
||||
this.className = "focus";
|
||||
$G(this.getAttribute("tabSrc")).style.display = "";
|
||||
});
|
||||
$G("tabHeads").appendChild(span);
|
||||
domUtils.insertAfter(span, document.createTextNode("\n"));
|
||||
var div = document.createElement("div");
|
||||
div.id = ci.name;
|
||||
div.style.display = (i == 1) ? "" : "none";
|
||||
var cons = ci.content;
|
||||
for (var j = 0, con; con = cons[j++];) {
|
||||
var charSpan = document.createElement("span");
|
||||
charSpan.innerHTML = con;
|
||||
domUtils.on(charSpan, "click", function () {
|
||||
editor.execCommand("insertHTML", this.innerHTML);
|
||||
dialog.close();
|
||||
});
|
||||
div.appendChild(charSpan);
|
||||
}
|
||||
$G("tabBodys").appendChild(div);
|
||||
}
|
||||
})(charsContent);
|
||||
function toArray(str) {
|
||||
return str.split(",");
|
||||
}
|
||||
84
public/lib/UEditor/dialogs/table/edittable.css
Normal file
84
public/lib/UEditor/dialogs/table/edittable.css
Normal file
@@ -0,0 +1,84 @@
|
||||
body{
|
||||
overflow: hidden;
|
||||
width: 540px;
|
||||
}
|
||||
.wrapper {
|
||||
margin: 10px auto 0;
|
||||
font-size: 12px;
|
||||
overflow: hidden;
|
||||
width: 520px;
|
||||
height: 315px;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.wrapper .left {
|
||||
float: left;
|
||||
margin-left: 10px;;
|
||||
}
|
||||
|
||||
.wrapper .right {
|
||||
float: right;
|
||||
border-left: 2px dotted #EDEDED;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-bottom: 15px;
|
||||
width: 240px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.section h3 {
|
||||
font-weight: bold;
|
||||
padding: 5px 0;
|
||||
margin-bottom: 10px;
|
||||
border-bottom: 1px solid #EDEDED;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.section ul {
|
||||
list-style: none;
|
||||
overflow: hidden;
|
||||
clear: both;
|
||||
|
||||
}
|
||||
|
||||
.section li {
|
||||
float: left;
|
||||
width: 120px;;
|
||||
}
|
||||
|
||||
.section .tone {
|
||||
width: 80px;;
|
||||
}
|
||||
|
||||
.section .preview {
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.section .preview table {
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.section .preview caption {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.section .preview td {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
height: 22px;
|
||||
}
|
||||
|
||||
.section .preview th {
|
||||
border-style: solid;
|
||||
border-color: #DDD;
|
||||
border-width: 2px 1px 1px 1px;
|
||||
height: 22px;
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
64
public/lib/UEditor/dialogs/table/edittable.html
Normal file
64
public/lib/UEditor/dialogs/table/edittable.html
Normal file
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="edittable.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="left">
|
||||
<div class="section">
|
||||
<h3><var id="lang_tableStyle"></var></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<label onselectstart="return false"><input type="checkbox" id="J_title" name="style"/><var id="lang_insertTitle"></var></label>
|
||||
</li>
|
||||
<li>
|
||||
<label onselectstart="return false"><input type="checkbox" id="J_titleCol" name="style"/><var id="lang_insertTitleCol"></var></label>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<label onselectstart="return false"><input type="checkbox" id="J_caption" name="style"/><var id="lang_insertCaption"></var></label>
|
||||
</li>
|
||||
<li>
|
||||
<label onselectstart="return false"><input type="checkbox" id="J_sorttable" name="style"/><var id="lang_orderbycontent"></var></label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h3><var id="lang_tableSize"></var></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<label><input type="radio" id="J_autoSizeContent" name="size"/><var id="lang_autoSizeContent"></var></label>
|
||||
</li>
|
||||
<li>
|
||||
<label><input type="radio" id="J_autoSizePage" name="size"/><var id="lang_autoSizePage"></var></label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h3><var id="lang_borderStyle"></var></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<span><var id="lang_color"></var></span>
|
||||
<input type="text" class="tone" id="J_tone" readonly='readonly' />
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="section">
|
||||
<h3><var id="lang_example"></var></h3>
|
||||
<div class="preview" id="J_preview">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="edittable.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
237
public/lib/UEditor/dialogs/table/edittable.js
Normal file
237
public/lib/UEditor/dialogs/table/edittable.js
Normal file
@@ -0,0 +1,237 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-12-19
|
||||
* Time: 下午4:55
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
(function () {
|
||||
var title = $G("J_title"),
|
||||
titleCol = $G("J_titleCol"),
|
||||
caption = $G("J_caption"),
|
||||
sorttable = $G("J_sorttable"),
|
||||
autoSizeContent = $G("J_autoSizeContent"),
|
||||
autoSizePage = $G("J_autoSizePage"),
|
||||
tone = $G("J_tone"),
|
||||
me,
|
||||
preview = $G("J_preview");
|
||||
|
||||
var editTable = function () {
|
||||
me = this;
|
||||
me.init();
|
||||
};
|
||||
editTable.prototype = {
|
||||
init:function () {
|
||||
var colorPiker = new UE.ui.ColorPicker({
|
||||
editor:editor
|
||||
}),
|
||||
colorPop = new UE.ui.Popup({
|
||||
editor:editor,
|
||||
content:colorPiker
|
||||
});
|
||||
|
||||
title.checked = editor.queryCommandState("inserttitle") == -1;
|
||||
titleCol.checked = editor.queryCommandState("inserttitlecol") == -1;
|
||||
caption.checked = editor.queryCommandState("insertcaption") == -1;
|
||||
sorttable.checked = editor.queryCommandState("enablesort") == 1;
|
||||
|
||||
var enablesortState = editor.queryCommandState("enablesort"),
|
||||
disablesortState = editor.queryCommandState("disablesort");
|
||||
|
||||
sorttable.checked = !!(enablesortState < 0 && disablesortState >=0);
|
||||
sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0);
|
||||
sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg:'';
|
||||
|
||||
me.createTable(title.checked, titleCol.checked, caption.checked);
|
||||
me.setAutoSize();
|
||||
me.setColor(me.getColor());
|
||||
|
||||
domUtils.on(title, "click", me.titleHanler);
|
||||
domUtils.on(titleCol, "click", me.titleColHanler);
|
||||
domUtils.on(caption, "click", me.captionHanler);
|
||||
domUtils.on(sorttable, "click", me.sorttableHanler);
|
||||
domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler);
|
||||
domUtils.on(autoSizePage, "click", me.autoSizePageHanler);
|
||||
|
||||
domUtils.on(tone, "click", function () {
|
||||
colorPop.showAnchor(tone);
|
||||
});
|
||||
domUtils.on(document, 'mousedown', function () {
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("pickcolor", function () {
|
||||
me.setColor(arguments[1]);
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("picknocolor", function () {
|
||||
me.setColor("");
|
||||
colorPop.hide();
|
||||
});
|
||||
},
|
||||
|
||||
createTable:function (hasTitle, hasTitleCol, hasCaption) {
|
||||
var arr = [],
|
||||
sortSpan = '<span>^</span>';
|
||||
arr.push("<table id='J_example'>");
|
||||
if (hasCaption) {
|
||||
arr.push("<caption>" + lang.captionName + "</caption>")
|
||||
}
|
||||
if (hasTitle) {
|
||||
arr.push("<tr>");
|
||||
if(hasTitleCol) { arr.push("<th>" + lang.titleName + "</th>"); }
|
||||
for (var j = 0; j < 5; j++) {
|
||||
arr.push("<th>" + lang.titleName + "</th>");
|
||||
}
|
||||
arr.push("</tr>");
|
||||
}
|
||||
for (var i = 0; i < 6; i++) {
|
||||
arr.push("<tr>");
|
||||
if(hasTitleCol) { arr.push("<th>" + lang.titleName + "</th>") }
|
||||
for (var k = 0; k < 5; k++) {
|
||||
arr.push("<td>" + lang.cellsName + "</td>")
|
||||
}
|
||||
arr.push("</tr>");
|
||||
}
|
||||
arr.push("</table>");
|
||||
preview.innerHTML = arr.join("");
|
||||
this.updateSortSpan();
|
||||
},
|
||||
titleHanler:function () {
|
||||
var example = $G("J_example"),
|
||||
frg=document.createDocumentFragment(),
|
||||
color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),
|
||||
colCount = example.rows[0].children.length;
|
||||
|
||||
if (title.checked) {
|
||||
example.insertRow(0);
|
||||
for (var i = 0, node; i < colCount; i++) {
|
||||
node = document.createElement("th");
|
||||
node.innerHTML = lang.titleName;
|
||||
frg.appendChild(node);
|
||||
}
|
||||
example.rows[0].appendChild(frg);
|
||||
|
||||
} else {
|
||||
domUtils.remove(example.rows[0]);
|
||||
}
|
||||
me.setColor(color);
|
||||
me.updateSortSpan();
|
||||
},
|
||||
titleColHanler:function () {
|
||||
var example = $G("J_example"),
|
||||
color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),
|
||||
colArr = example.rows,
|
||||
colCount = colArr.length;
|
||||
|
||||
if (titleCol.checked) {
|
||||
for (var i = 0, node; i < colCount; i++) {
|
||||
node = document.createElement("th");
|
||||
node.innerHTML = lang.titleName;
|
||||
colArr[i].insertBefore(node, colArr[i].children[0]);
|
||||
}
|
||||
} else {
|
||||
for (var i = 0; i < colCount; i++) {
|
||||
domUtils.remove(colArr[i].children[0]);
|
||||
}
|
||||
}
|
||||
me.setColor(color);
|
||||
me.updateSortSpan();
|
||||
},
|
||||
captionHanler:function () {
|
||||
var example = $G("J_example");
|
||||
if (caption.checked) {
|
||||
var row = document.createElement('caption');
|
||||
row.innerHTML = lang.captionName;
|
||||
example.insertBefore(row, example.firstChild);
|
||||
} else {
|
||||
domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]);
|
||||
}
|
||||
},
|
||||
sorttableHanler:function(){
|
||||
me.updateSortSpan();
|
||||
},
|
||||
autoSizeContentHanler:function () {
|
||||
var example = $G("J_example");
|
||||
example.removeAttribute("width");
|
||||
},
|
||||
autoSizePageHanler:function () {
|
||||
var example = $G("J_example");
|
||||
var tds = example.getElementsByTagName(example, "td");
|
||||
utils.each(tds, function (td) {
|
||||
td.removeAttribute("width");
|
||||
});
|
||||
example.setAttribute('width', '100%');
|
||||
},
|
||||
updateSortSpan: function(){
|
||||
var example = $G("J_example"),
|
||||
row = example.rows[0];
|
||||
|
||||
var spans = domUtils.getElementsByTagName(example,"span");
|
||||
utils.each(spans,function(span){
|
||||
span.parentNode.removeChild(span);
|
||||
});
|
||||
if (sorttable.checked) {
|
||||
utils.each(row.cells, function(cell, i){
|
||||
var span = document.createElement("span");
|
||||
span.innerHTML = "^";
|
||||
cell.appendChild(span);
|
||||
});
|
||||
}
|
||||
},
|
||||
getColor:function () {
|
||||
var start = editor.selection.getStart(), color,
|
||||
cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true);
|
||||
color = cell && domUtils.getComputedStyle(cell, "border-color");
|
||||
if (!color) color = "#DDDDDD";
|
||||
return color;
|
||||
},
|
||||
setColor:function (color) {
|
||||
var example = $G("J_example"),
|
||||
arr = domUtils.getElementsByTagName(example, "td").concat(
|
||||
domUtils.getElementsByTagName(example, "th"),
|
||||
domUtils.getElementsByTagName(example, "caption")
|
||||
);
|
||||
|
||||
tone.value = color;
|
||||
utils.each(arr, function (node) {
|
||||
node.style.borderColor = color;
|
||||
});
|
||||
|
||||
},
|
||||
setAutoSize:function () {
|
||||
var me = this;
|
||||
autoSizePage.checked = true;
|
||||
me.autoSizePageHanler();
|
||||
}
|
||||
};
|
||||
|
||||
new editTable;
|
||||
|
||||
dialog.onok = function () {
|
||||
editor.__hasEnterExecCommand = true;
|
||||
|
||||
var checks = {
|
||||
title:"inserttitle deletetitle",
|
||||
titleCol:"inserttitlecol deletetitlecol",
|
||||
caption:"insertcaption deletecaption",
|
||||
sorttable:"enablesort disablesort"
|
||||
};
|
||||
editor.fireEvent('saveScene');
|
||||
for(var i in checks){
|
||||
var cmds = checks[i].split(" "),
|
||||
input = $G("J_" + i);
|
||||
if(input["checked"]){
|
||||
editor.queryCommandState(cmds[0])!=-1 &&editor.execCommand(cmds[0]);
|
||||
}else{
|
||||
editor.queryCommandState(cmds[1])!=-1 &&editor.execCommand(cmds[1]);
|
||||
}
|
||||
}
|
||||
|
||||
editor.execCommand("edittable", tone.value);
|
||||
autoSizeContent.checked ?editor.execCommand('adaptbytext') : "";
|
||||
autoSizePage.checked ? editor.execCommand("adaptbywindow") : "";
|
||||
editor.fireEvent('saveScene');
|
||||
|
||||
editor.__hasEnterExecCommand = false;
|
||||
};
|
||||
})();
|
||||
61
public/lib/UEditor/dialogs/table/edittd.html
Normal file
61
public/lib/UEditor/dialogs/table/edittd.html
Normal file
@@ -0,0 +1,61 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.section {
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.section input {
|
||||
margin-left: 5px;
|
||||
width: 70px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<span><var id="lang_tdBkColor"></var></span>
|
||||
<input type="text" id="J_tone"/>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var tone = $G("J_tone"),
|
||||
colorPiker = new UE.ui.ColorPicker({
|
||||
editor:editor
|
||||
}),
|
||||
colorPop = new UE.ui.Popup({
|
||||
editor:editor,
|
||||
content:colorPiker
|
||||
});
|
||||
domUtils.on(tone, "click", function () {
|
||||
colorPop.showAnchor(tone);
|
||||
});
|
||||
domUtils.on(document, 'mousedown', function () {
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("pickcolor", function () {
|
||||
tone.value = arguments[1];
|
||||
colorPop.hide();
|
||||
});
|
||||
colorPiker.addListener("picknocolor", function () {
|
||||
tone.value="";
|
||||
colorPop.hide();
|
||||
});
|
||||
dialog.onok=function(){
|
||||
editor.execCommand("edittd",tone.value);
|
||||
};
|
||||
|
||||
var start = editor.selection.getStart(),
|
||||
cell = start && domUtils.findParentByTagName(start, ["td", "th"], true);
|
||||
if(cell){
|
||||
var color = domUtils.getComputedStyle(cell,'background-color');
|
||||
if(/^#/.test(color)){
|
||||
tone.value = color
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
33
public/lib/UEditor/dialogs/table/edittip.html
Normal file
33
public/lib/UEditor/dialogs/table/edittip.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>表格删除提示</title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.section {
|
||||
width: 200px;
|
||||
margin: 10px auto 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.item {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="section">
|
||||
<div class="item">
|
||||
<label><input type="radio" id="J_delRow" name="cmd" checked/><var id="lang_delRow"></var></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<label><input type="radio" id="J_delCol" name="cmd"/><var id="lang_delCol"></var></label>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
dialog.onok = function () {
|
||||
$G("J_delRow").checked ? editor.execCommand("deleterow") : editor.execCommand("deletecol");
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
42e474b47019b886cdecf3b1e05a8b05e5b12b26
|
||||
18
public/lib/UEditor/dialogs/template/template.css
Normal file
18
public/lib/UEditor/dialogs/template/template.css
Normal file
@@ -0,0 +1,18 @@
|
||||
.wrap{ padding: 5px;font-size: 14px;}
|
||||
.left{width:425px;float: left;}
|
||||
.right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;}
|
||||
.right .pre{height: 332px;overflow-y: auto;}
|
||||
.right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;}
|
||||
.right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;}
|
||||
.right .preitem img{display: block;margin: 0 auto;width:100px;}
|
||||
.clear{clear: both;}
|
||||
.top{height:26px;line-height: 26px;padding: 5px;}
|
||||
.bottom{height:320px;width:100%;margin: 0 auto;}
|
||||
.transparent{ background: url("images/bg.gif") repeat;}
|
||||
.bottom table tr td{border:1px dashed #ccc;}
|
||||
#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;}
|
||||
.border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;}
|
||||
p{margin: 5px 0}
|
||||
table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;}
|
||||
li{clear:both}
|
||||
ol{padding-left:40px; }
|
||||
26
public/lib/UEditor/dialogs/template/template.html
Normal file
26
public/lib/UEditor/dialogs/template/template.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="template.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<div class="left">
|
||||
<div class="top">
|
||||
<label><var id="lang_template_clear"></var>:<input id="issave" type="checkbox"></label>
|
||||
</div>
|
||||
<div class="bottom border_style1" id="preview"></div>
|
||||
</div>
|
||||
<fieldset class="right border_style1">
|
||||
<legend><var id="lang_template_select"></var></legend>
|
||||
<div class="pre" id="preitem"></div>
|
||||
</fieldset>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<script type="text/javascript" src="config.js"></script>
|
||||
<script type="text/javascript" src="template.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
53
public/lib/UEditor/dialogs/template/template.js
Normal file
53
public/lib/UEditor/dialogs/template/template.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* Created with JetBrains PhpStorm.
|
||||
* User: xuheng
|
||||
* Date: 12-8-8
|
||||
* Time: 下午2:09
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
(function () {
|
||||
var me = editor,
|
||||
preview = $G( "preview" ),
|
||||
preitem = $G( "preitem" ),
|
||||
tmps = templates,
|
||||
currentTmp;
|
||||
var initPre = function () {
|
||||
var str = "";
|
||||
for ( var i = 0, tmp; tmp = tmps[i++]; ) {
|
||||
str += '<div class="preitem" onclick="pre(' + i + ')"><img src="' + "images/" + tmp.pre + '" ' + (tmp.title ? "alt=" + tmp.title + " title=" + tmp.title + "" : "") + '></div>';
|
||||
}
|
||||
preitem.innerHTML = str;
|
||||
};
|
||||
var pre = function ( n ) {
|
||||
var tmp = tmps[n - 1];
|
||||
currentTmp = tmp;
|
||||
clearItem();
|
||||
domUtils.setStyles( preitem.childNodes[n - 1], {
|
||||
"background-color":"lemonChiffon",
|
||||
"border":"#ccc 1px solid"
|
||||
} );
|
||||
preview.innerHTML = tmp.preHtml ? tmp.preHtml : "";
|
||||
};
|
||||
var clearItem = function () {
|
||||
var items = preitem.children;
|
||||
for ( var i = 0, item; item = items[i++]; ) {
|
||||
domUtils.setStyles( item, {
|
||||
"background-color":"",
|
||||
"border":"white 1px solid"
|
||||
} );
|
||||
}
|
||||
};
|
||||
dialog.onok = function () {
|
||||
if ( !$G( "issave" ).checked ){
|
||||
me.execCommand( "cleardoc" );
|
||||
}
|
||||
var obj = {
|
||||
html:currentTmp && currentTmp.html
|
||||
};
|
||||
me.execCommand( "template", obj );
|
||||
};
|
||||
initPre();
|
||||
window.pre = pre;
|
||||
pre(2)
|
||||
|
||||
})();
|
||||
@@ -0,0 +1 @@
|
||||
262b02916c51c01ab71f942b7ea9d02382b0df07
|
||||
@@ -0,0 +1 @@
|
||||
d8c02c27e242f0584fc6b214f35b4f6d8caec332
|
||||
@@ -0,0 +1 @@
|
||||
3ff82c8c488f53a7aff67fbe39742e3321183eca
|
||||
@@ -0,0 +1 @@
|
||||
7886d276dda2e0aecdae22393eac534ed507babf
|
||||
@@ -0,0 +1 @@
|
||||
7c768dcb47aaa289135afd2bd0e8eb0b6ecb7536
|
||||
@@ -0,0 +1 @@
|
||||
173e10d2d91026c7283566993afb2f3a0267ea40
|
||||
@@ -0,0 +1 @@
|
||||
8a17284e19a12bf628991b9a3b9305b8988992e5
|
||||
86
public/lib/UEditor/dialogs/video/video.html
Normal file
86
public/lib/UEditor/dialogs/video/video.html
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="video.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div id="videoTab">
|
||||
<div id="tabHeads" class="tabhead">
|
||||
<span tabSrc="video" class="focus" data-content-id="video"><var id="lang_tab_insertV"></var></span>
|
||||
<span tabSrc="upload" data-content-id="upload"><var id="lang_tab_uploadV"></var></span>
|
||||
</div>
|
||||
<div id="tabBodys" class="tabbody">
|
||||
<div id="video" class="panel focus">
|
||||
<table><tr><td><label for="videoUrl" class="url"><var id="lang_video_url"></var></label></td><td><input id="videoUrl" type="text"></td></tr></table>
|
||||
<div id="preview"></div>
|
||||
<div id="videoInfo">
|
||||
<fieldset>
|
||||
<legend><var id="lang_video_size"></var></legend>
|
||||
<table>
|
||||
<tr><td><label for="videoWidth"><var id="lang_videoW"></var></label></td><td><input class="txt" id="videoWidth" type="text"/></td></tr>
|
||||
<tr><td><label for="videoHeight"><var id="lang_videoH"></var></label></td><td><input class="txt" id="videoHeight" type="text"/></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><var id="lang_alignment"></var></legend>
|
||||
<div id="videoFloat"></div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div id="upload" class="panel">
|
||||
<div id="upload_left">
|
||||
<div id="queueList" class="queueList">
|
||||
<div class="statusBar element-invisible">
|
||||
<div class="progress">
|
||||
<span class="text">0%</span>
|
||||
<span class="percentage"></span>
|
||||
</div><div class="info"></div>
|
||||
<div class="btns">
|
||||
<div id="filePickerBtn"></div>
|
||||
<div class="uploadBtn"><var id="lang_start_upload"></var></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dndArea" class="placeholder">
|
||||
<div class="filePickerContainer">
|
||||
<div id="filePickerReady"></div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="filelist element-invisible">
|
||||
<li id="filePickerBlock" class="filePickerBlock"></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="uploadVideoInfo">
|
||||
<fieldset>
|
||||
<legend><var id="lang_upload_size"></var></legend>
|
||||
<table>
|
||||
<tr><td><label><var id="lang_upload_width"></var></label></td><td><input class="txt" id="upload_width" type="text"/></td></tr>
|
||||
<tr><td><label><var id="lang_upload_height"></var></label></td><td><input class="txt" id="upload_height" type="text"/></td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><var id="lang_upload_alignment"></var></legend>
|
||||
<div id="upload_alignment"></div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- jquery -->
|
||||
<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
|
||||
|
||||
<!-- webuploader -->
|
||||
<script type="text/javascript" src="../../third-party/webuploader/webuploader.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
|
||||
|
||||
<!-- video -->
|
||||
<script type="text/javascript" src="video.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1
public/lib/UEditor/dialogs/video/video.js.REMOVED.git-id
Normal file
1
public/lib/UEditor/dialogs/video/video.js.REMOVED.git-id
Normal file
@@ -0,0 +1 @@
|
||||
7b9378bd5ac8328f7facb97b9d038e66f6e9347d
|
||||
53
public/lib/UEditor/dialogs/webapp/webapp.html
Normal file
53
public/lib/UEditor/dialogs/webapp/webapp.html
Normal file
@@ -0,0 +1,53 @@
|
||||
<!DOCTYPE>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.wrapper{width: 540px; margin: 10px auto;}
|
||||
#appShow {border: 1px solid #ddd;}
|
||||
.errorMsg{font-size: 13px;margin: 10px;color: #dd0000}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div id="appShow"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
//此处配置您在百度上申请到的appkey。
|
||||
var apikey = editor.options.webAppKey;
|
||||
if ( apikey && apikey.length == 24 ) {
|
||||
var searchConfig = {
|
||||
container:'appShow', //容器ID
|
||||
tips:"", //该值用于自动清空
|
||||
search:1, //是否显示搜索框
|
||||
ps:12, //每页显示的条数
|
||||
suggest:1, //是否开启搜索自动完成
|
||||
limit:0, //搜索结果显示条数,0表示无限制
|
||||
searchNow:0, //是否在初始化完成时立即搜索
|
||||
apikey:apikey, //每人得
|
||||
pager:1,
|
||||
cid:7134562,
|
||||
outputHTML:1
|
||||
},baiduApp;
|
||||
|
||||
function clickCallback() {
|
||||
baiduApp.addEventListener( 'getAppHTML', function ( e, data ) {
|
||||
var url = 'http://app.baidu.com/app/enter?appid='+data.data['app_id'] +'&tn=app_canvas&app_spce_id=1&apikey='+apikey+'&api_key=' + apikey;
|
||||
editor.execCommand( "webapp", {url:url,width:data.uniWidth,height:data.uniHeight+60,logo:data.data['app_logo'],title:data.data['app_name']});
|
||||
dialog.close();
|
||||
} );
|
||||
}
|
||||
|
||||
var script = document.createElement( "script" );
|
||||
script.type = "text/javascript";
|
||||
script.src = "http://app.baidu.com/appweb/api/search?auto=yes&container=container&apikey=" + apikey + "&instanceName=baiduApp&callback=clickCallback&config=searchConfig";
|
||||
document.body.appendChild( script );
|
||||
} else {
|
||||
$G( "appShow" ).innerHTML = "<p class='errorMsg'>"+lang.tip1+"<a title='"+lang.anthorApi+"' href='http://app.baidu.com/static/cms/getapikey.html' target='_blank'>"+lang.applyFor+"</a></p><p class='errorMsg'>"+lang.tip2+"</p>" ;
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
2ebd8fd3dc82629ecd4bbece4d5c83da6a86bf0f
|
||||
111
public/lib/UEditor/dialogs/wordimage/wordimage.html
Normal file
111
public/lib/UEditor/dialogs/wordimage/wordimage.html
Normal file
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<style type="text/css">
|
||||
.wrapper{width: 600px;padding: 10px;height: 352px;overflow: hidden;position: relative;border-bottom: 1px solid #d7d7d7}
|
||||
.localPath input{float: left;width: 350px;line-height: 20px;height: 20px;}
|
||||
#clipboard{float:left;width: 70px;height: 30px; }
|
||||
.description{ color: #0066cc; margin-top: 2px; width: 450px; height: 45px;float: left;line-height: 22px}
|
||||
#upload{width: 100px;height: 30px;float: right; margin:10px 2px 0 0;cursor: pointer;}
|
||||
#msg{ width: 140px; height: 30px; line-height:25px;float: left;color: red}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="localPath">
|
||||
<input id="localPath" type="text" readonly />
|
||||
<div id="clipboard"></div>
|
||||
<div id="msg"></div>
|
||||
</div>
|
||||
<div id="flashContainer"></div>
|
||||
<div>
|
||||
<div id="upload" style="display: none" ><img id="uploadBtn"></div>
|
||||
<div class="description">
|
||||
<span style="color: red"><var id="lang_resave"></var>: </span><var id="lang_step"></var>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="tangram.js"></script>
|
||||
<script type="text/javascript" src="wordimage.js"></script>
|
||||
<script type="text/javascript">
|
||||
editor.setOpt({
|
||||
wordImageFieldName:"upfile",
|
||||
compressSide:0,
|
||||
maxImageSideLength:900
|
||||
});
|
||||
|
||||
//全局变量
|
||||
var imageUrls = [], //用于保存从服务器返回的图片信息数组
|
||||
selectedImageCount = 0, //当前已选择的但未上传的图片数量
|
||||
optImageUrl = editor.getActionUrl(editor.getOpt('imageActionName')),
|
||||
optImageFieldName = editor.getOpt('imageFieldName'),
|
||||
optImageCompressBorder = editor.getOpt('imageCompressEnable') ? editor.getOpt('imageCompressBorder'):null,
|
||||
maxSize = editor.getOpt('imageMaxSize') / 1024,
|
||||
extension = editor.getOpt('imageAllowFiles').join(';').replace(/\./g, '*.');
|
||||
|
||||
/* 添加额外的GET参数 */
|
||||
var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
|
||||
urlWidthParams = optImageUrl + (optImageUrl.indexOf('?') == -1 ? '?':'&') + params;
|
||||
|
||||
utils.domReady(function(){
|
||||
//创建Flash相关的参数集合
|
||||
var flashOptions = {
|
||||
container:"flashContainer", //flash容器id
|
||||
url:urlWidthParams, // 上传处理页面的url地址
|
||||
ext:editor.queryCommandValue('serverParam') || {}, //可向服务器提交的自定义参数列表
|
||||
fileType:'{"description":"'+lang.fileType+'", "extension":"' + extension + '"}', //上传文件格式限制
|
||||
flashUrl:'imageUploader.swf', //上传用的flash组件地址
|
||||
width:600, //flash的宽度
|
||||
height:272, //flash的高度
|
||||
gridWidth:120, // 每一个预览图片所占的宽度
|
||||
gridHeight:120, // 每一个预览图片所占的高度
|
||||
picWidth:100, // 单张预览图片的宽度
|
||||
picHeight:100, // 单张预览图片的高度
|
||||
uploadDataFieldName: optImageFieldName, // POST请求中图片数据的key
|
||||
picDescFieldName:'pictitle', // POST请求中图片描述的key
|
||||
maxSize: maxSize, // 文件的最大体积,单位M
|
||||
compressSize:1, // 上传前如果图片体积超过该值,会先压缩,单位M
|
||||
maxNum:32, // 单次最大可上传多少个文件
|
||||
compressSide: 0, //等比压缩的基准,0为按照最长边,1为按照宽度,2为按照高度
|
||||
compressLength: optImageCompressBorder //能接受的最大边长,超过该值Flash会自动等比压缩
|
||||
};
|
||||
//回调函数集合,支持传递函数名的字符串、函数句柄以及函数本身三种类型
|
||||
var callbacks={
|
||||
selectFileCallback: function(selectFiles){ // 选择文件的回调
|
||||
selectedImageCount += selectFiles.length;
|
||||
if(selectedImageCount) baidu.g("upload").style.display = "";
|
||||
dialog.buttons[0].setDisabled(true); //初始化时置灰确定按钮
|
||||
},
|
||||
deleteFileCallback: function(delFiles){ // 删除文件的回调
|
||||
selectedImageCount -= delFiles.length;
|
||||
if (!selectedImageCount) {
|
||||
baidu.g("upload").style.display = "none";
|
||||
dialog.buttons[0].setDisabled(false); //没有选择图片时重新点亮按钮
|
||||
}
|
||||
},
|
||||
uploadCompleteCallback: function(data){ // 单个文件上传完成的回调
|
||||
try{var info = eval("(" + data.info + ")");
|
||||
info && imageUrls.push(info);
|
||||
selectedImageCount--;
|
||||
}catch(e){}
|
||||
},
|
||||
uploadErrorCallback: function (data){ // 单个文件上传失败的回调,
|
||||
console && console.log(data);
|
||||
},
|
||||
allCompleteCallback: function(){ // 全部上传完成时的回调
|
||||
dialog.buttons[0].setDisabled(false); //上传完毕后点亮按钮
|
||||
}
|
||||
//exceedFileCallback: 'exceedFileCallback', // 文件超出限制的最大体积时的回调
|
||||
//startUploadCallback: startUploadCallback // 开始上传某个文件时的回调
|
||||
};
|
||||
wordImage.init(flashOptions,callbacks);
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
157
public/lib/UEditor/dialogs/wordimage/wordimage.js
Normal file
157
public/lib/UEditor/dialogs/wordimage/wordimage.js
Normal file
@@ -0,0 +1,157 @@
|
||||
/**
|
||||
* Created by JetBrains PhpStorm.
|
||||
* User: taoqili
|
||||
* Date: 12-1-30
|
||||
* Time: 下午12:50
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
var wordImage = {};
|
||||
//(function(){
|
||||
var g = baidu.g,
|
||||
flashObj,flashContainer;
|
||||
|
||||
wordImage.init = function(opt, callbacks) {
|
||||
showLocalPath("localPath");
|
||||
//createCopyButton("clipboard","localPath");
|
||||
createFlashUploader(opt, callbacks);
|
||||
addUploadListener();
|
||||
addOkListener();
|
||||
};
|
||||
|
||||
function hideFlash(){
|
||||
flashObj = null;
|
||||
flashContainer.innerHTML = "";
|
||||
}
|
||||
function addOkListener() {
|
||||
dialog.onok = function() {
|
||||
if (!imageUrls.length) return;
|
||||
var urlPrefix = editor.getOpt('imageUrlPrefix'),
|
||||
images = domUtils.getElementsByTagName(editor.document,"img");
|
||||
editor.fireEvent('saveScene');
|
||||
for (var i = 0,img; img = images[i++];) {
|
||||
var src = img.getAttribute("word_img");
|
||||
if (!src) continue;
|
||||
for (var j = 0,url; url = imageUrls[j++];) {
|
||||
if (src.indexOf(url.original.replace(" ","")) != -1) {
|
||||
img.src = urlPrefix + url.url;
|
||||
img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性
|
||||
img.setAttribute("title",url.title);
|
||||
domUtils.removeAttributes(img, ["word_img","style","width","height"]);
|
||||
editor.fireEvent("selectionchange");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
editor.fireEvent('saveScene');
|
||||
hideFlash();
|
||||
};
|
||||
dialog.oncancel = function(){
|
||||
hideFlash();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定开始上传事件
|
||||
*/
|
||||
function addUploadListener() {
|
||||
g("upload").onclick = function () {
|
||||
flashObj.upload();
|
||||
this.style.display = "none";
|
||||
};
|
||||
}
|
||||
|
||||
function showLocalPath(id) {
|
||||
//单张编辑
|
||||
var img = editor.selection.getRange().getClosedNode();
|
||||
var images = editor.execCommand('wordimage');
|
||||
if(images.length==1 || img && img.tagName == 'IMG'){
|
||||
g(id).value = images[0];
|
||||
return;
|
||||
}
|
||||
var path = images[0];
|
||||
var leftSlashIndex = path.lastIndexOf("/")||0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种
|
||||
rightSlashIndex = path.lastIndexOf("\\")||0,
|
||||
separater = leftSlashIndex > rightSlashIndex ? "/":"\\" ;
|
||||
|
||||
path = path.substring(0, path.lastIndexOf(separater)+1);
|
||||
g(id).value = path;
|
||||
}
|
||||
|
||||
function createFlashUploader(opt, callbacks) {
|
||||
//由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容
|
||||
var i18n = utils.extend({},lang.flashI18n);
|
||||
//处理图片资源地址的编码,补全等问题
|
||||
for(var i in i18n){
|
||||
if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){
|
||||
i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]);
|
||||
}
|
||||
}
|
||||
opt = utils.extend(opt,i18n,false);
|
||||
var option = {
|
||||
createOptions:{
|
||||
id:'flash',
|
||||
url:opt.flashUrl,
|
||||
width:opt.width,
|
||||
height:opt.height,
|
||||
errorMessage:lang.flashError,
|
||||
wmode:browser.safari ? 'transparent' : 'window',
|
||||
ver:'10.0.0',
|
||||
vars:opt,
|
||||
container:opt.container
|
||||
}
|
||||
};
|
||||
|
||||
option = extendProperty(callbacks, option);
|
||||
flashObj = new baidu.flash.imageUploader(option);
|
||||
flashContainer = $G(opt.container);
|
||||
}
|
||||
|
||||
function extendProperty(fromObj, toObj) {
|
||||
for (var i in fromObj) {
|
||||
if (!toObj[i]) {
|
||||
toObj[i] = fromObj[i];
|
||||
}
|
||||
}
|
||||
return toObj;
|
||||
}
|
||||
|
||||
//})();
|
||||
|
||||
function getPasteData(id) {
|
||||
baidu.g("msg").innerHTML = lang.copySuccess + "</br>";
|
||||
setTimeout(function() {
|
||||
baidu.g("msg").innerHTML = "";
|
||||
}, 5000);
|
||||
return baidu.g(id).value;
|
||||
}
|
||||
|
||||
function createCopyButton(id, dataFrom) {
|
||||
baidu.swf.create({
|
||||
id:"copyFlash",
|
||||
url:"fClipboard_ueditor.swf",
|
||||
width:"58",
|
||||
height:"25",
|
||||
errorMessage:"",
|
||||
bgColor:"#CBCBCB",
|
||||
wmode:"transparent",
|
||||
ver:"10.0.0",
|
||||
vars:{
|
||||
tid:dataFrom
|
||||
}
|
||||
}, id
|
||||
);
|
||||
|
||||
var clipboard = baidu.swf.getMovie("copyFlash");
|
||||
var clipinterval = setInterval(function() {
|
||||
if (clipboard && clipboard.flashInit) {
|
||||
clearInterval(clipinterval);
|
||||
clipboard.setHandCursor(true);
|
||||
clipboard.setContentFuncName("getPasteData");
|
||||
//clipboard.setMEFuncName("mouseEventHandler");
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
createCopyButton("clipboard", "localPath");
|
||||
Reference in New Issue
Block a user