UNPKG

xueditor

Version:
1 lines 549 kB
(function(){var iframeUrlDocMap={"dialogs/anchor/anchor.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n <title></title>\n <style type="text/css">\n *{color: #838383;margin: 0;padding: 0}\n html,body {font-size: 12px;overflow: hidden; }\n .content{padding:5px 0 0 15px;}\n input{width:210px;height:21px;line-height:21px;margin-left: 4px;}\n </style>\n </head>\n <body>\n <div class="content">\n <span><var id="lang_input_anchorName"></var></span><input id="anchorName" value="" />\n </div>\n <script type="text/javascript" src="../internal.js"><\/script>\n <script type="text/javascript">\n var anchorInput = $G(\'anchorName\'),\n node = editor.selection.getRange().getClosedNode();\n if(node && node.tagName == \'IMG\' && (node = node.getAttribute(\'anchorname\'))){\n anchorInput.value = node;\n }\n anchorInput.onkeydown = function(evt){\n evt = evt || window.event;\n if(evt.keyCode == 13){\n editor.execCommand(\'anchor\', anchorInput.value);\n dialog.close();\n domUtils.preventDefault(evt)\n }\n };\n dialog.onok = function (){\n editor.execCommand(\'anchor\', anchorInput.value);\n dialog.close();\n };\n $focus(anchorInput);\n <\/script>\n </body>\n</html>',"dialogs/image/image.html":'<!doctype html>\n<html>\n<head>\n <meta charset="UTF-8">\n <title>ueditor图片对话框</title>\n <script type="text/javascript" src="../internal.js"><\/script>\n \x3c!-- jquery --\x3e\n <script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"><\/script>\n \x3c!-- webuploader --\x3e\n <script src="../../third-party/webuploader/webuploader.min.js"><\/script>\n <link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">\n \x3c!-- image dialog --\x3e\n <link rel="stylesheet" href="image.css" type="text/css" />\n</head>\n<body>\n <div class="wrapper">\n <div id="tabhead" class="tabhead">\n <span class="tab" data-content-id="remote"><var id="lang_tab_remote"></var></span>\n <span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>\n \x3c!-- <span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span> --\x3e\n \x3c!-- <span class="tab" data-content-id="search"><var id="lang_tab_search"></var></span> --\x3e\n </div>\n <div class="alignBar">\n <label class="algnLabel"><var id="lang_input_align"></var></label>\n <span id="alignIcon">\n <span id="noneAlign" class="none-align focus" data-align="none"></span>\n <span id="leftAlign" class="left-align" data-align="left"></span>\n <span id="rightAlign" class="right-align" data-align="right"></span>\n <span id="centerAlign" class="center-align" data-align="center"></span>\n </span>\n <input id="align" name="align" type="hidden" value="none"/>\n </div>\n <div id="tabbody" class="tabbody">\n \x3c!-- 远程图片 --\x3e\n <div id="remote" class="panel">\n <div class="top">\n <div class="row">\n <label for="url"><var id="lang_input_url"></var></label>\n <span><input class="text" id="url" type="text"/></span>\n </div>\n </div>\n <div class="left">\n <div class="row">\n <label><var id="lang_input_size"></var></label>\n <span><var id="lang_input_width">&nbsp;&nbsp;</var><input class="text" type="number" id="width"/>px </span>\n </div>\n <div class="row">\n <label>&nbsp;</label>\n <span><var id="lang_input_height">&nbsp;&nbsp;</var><input class="text" type="number" id="height"/>px </span>\n <span><input id="lock" type="checkbox" disabled="disabled"><span id="lockicon"></span></span>\n </div>\n <div class="row">\n <label><var id="lang_input_border"></var></label>\n <span><input class="text" type="text" id="border"/>px </span>\n </div>\n <div class="row">\n <label><var id="lang_input_vhspace"></var></label>\n <span><input class="text" type="text" id="vhSpace"/>px </span>\n </div>\n <div class="row">\n <label><var id="lang_input_title"></var></label>\n <span><input class="text" type="text" id="title"/></span>\n </div>\n </div>\n <div class="right"><div id="preview"></div></div>\n </div>\n \x3c!-- 上传图片 --\x3e\n <div id="upload" class="panel focus">\n <div id="queueList" class="queueList">\n <div class="statusBar element-invisible">\n <div class="progress">\n <span class="text">0%</span>\n <span class="percentage"></span>\n </div><div class="info"></div>\n <div class="btns">\n <div id="filePickerBtn"></div>\n <div class="uploadBtn"><var id="lang_start_upload"></var></div>\n </div>\n </div>\n <div id="dndArea" class="placeholder">\n <div class="filePickerContainer">\n <div id="filePickerReady"></div>\n </div>\n </div>\n <ul class="filelist element-invisible">\n <li id="filePickerBlock" class="filePickerBlock"></li>\n </ul>\n </div>\n </div>\n \x3c!-- 在线图片 --\x3e\n <div id="online" class="panel">\n <div id="imageList"><var id="lang_imgLoading"></var></div>\n </div>\n \x3c!-- 搜索图片 --\x3e\n <div id="search" class="panel">\n <div class="searchBar">\n <input id="searchTxt" class="searchTxt text" type="text" />\n <select id="searchType" class="searchType">\n <option value="&s=4&z=0"></option>\n <option value="&s=1&z=19"></option>\n <option value="&s=2&z=0"></option>\n <option value="&s=3&z=0"></option>\n </select>\n <input id="searchReset" type="button" />\n <input id="searchBtn" type="button" />\n </div>\n <div id="searchList" class="searchList"><ul id="searchListUl"></ul></div>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="image.js"><\/script>\n</body>\n</html>',"dialogs/link/link.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title></title>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n *{margin:0;padding:0;color: #838383;}\n table{font-size: 12px;margin: 10px;line-height: 30px}\n .txt{width:300px;height:21px;line-height:21px;border:1px solid #d7d7d7;}\n </style>\n</head>\n<body>\n <table>\n <tr>\n <td><label for="text"> <var id="lang_input_text"></var></label></td>\n <td><input class="txt" id="text" type="text" disabled="true"/></td>\n </tr>\n <tr>\n <td><label for="href"> <var id="lang_input_url"></var></label></td>\n <td><input class="txt" id="href" type="text" /></td>\n </tr>\n <tr>\n <td><label for="title"> <var id="lang_input_title"></var></label></td>\n <td><input class="txt" id="title" type="text"/></td>\n </tr>\n <tr>\n <td colspan="2">\n <label for="target"><var id="lang_input_target"></var></label>\n <input id="target" type="checkbox"/>\n </td>\n </tr>\n <tr>\n <td colspan="2" id="msg"></td>\n </tr>\n </table>\n<script type="text/javascript">\n editor.setOpt(\'allowLinkProtocols\', [\'http:\', \'https:\', \'#\', \'/\', \'ftp:\', \'mailto:\', \'tel:\']);\n var allowLinkProtocols = editor.getOpt(\'allowLinkProtocols\');\n var range = editor.selection.getRange(),\n link = range.collapsed ? editor.queryCommandValue( "link" ) : editor.selection.getStart(),\n url,\n text = $G(\'text\'),\n rangeLink = domUtils.findParentByTagName(range.getCommonAncestor(),\'a\',true),\n orgText;\n link = domUtils.findParentByTagName( link, "a", true );\n if(link){\n url = utils.html(link.getAttribute( \'_href\' ) || link.getAttribute( \'href\', 2 ));\n if(rangeLink === link && !link.getElementsByTagName(\'img\').length){\n text.removeAttribute(\'disabled\');\n orgText = text.value = link[browser.ie ? \'innerText\':\'textContent\'];\n }else{\n text.setAttribute(\'disabled\',\'true\');\n text.value = lang.validLink;\n }\n }else{\n if(range.collapsed){\n text.removeAttribute(\'disabled\');\n text.value = \'\';\n }else{\n text.setAttribute(\'disabled\',\'true\');\n text.value = lang.validLink;\n }\n }\n $G("title").value = url ? link.title : "";\n $G("href").value = url ? url: \'\';\n $G("target").checked = url && link.target == "_blank" ? true : false;\n $focus($G("href"));\n function handleDialogOk(){\n var href =$G(\'href\').value.replace(/^s+|s+$/g, \'\');\n if(href){\n if(!hrefStartWith(href, allowLinkProtocols)) {\n href = "http://" + href;\n }\n var obj = {\n \'href\' : href,\n \'target\' : $G("target").checked ? "_blank" : \'_self\',\n \'title\' : $G("title").value.replace(/^s+|s+$/g, \'\'),\n \'_href\':href\n };\n //修改链接内容的情况太特殊了,所以先做到这里了\n //todo:情况多的时候,做到command里\n if(orgText && text.value != orgText){\n link[browser.ie ? \'innerText\' : \'textContent\'] = obj.textValue = text.value;\n range.selectNode(link).select()\n }\n if(range.collapsed){\n obj.textValue = text.value;\n }\n editor.execCommand(\'link\',utils.clearEmptyAttrs(obj) );\n dialog.close();\n }\n }\n dialog.onok = handleDialogOk;\n $G(\'href\').onkeydown = $G(\'title\').onkeydown = function(evt){\n evt = evt || window.event;\n if (evt.keyCode == 13) {\n handleDialogOk();\n return false;\n }\n };\n $G(\'href\').onblur = function(){\n if(!hrefStartWith(this.value, allowLinkProtocols)){\n $G("msg").innerHTML = "<span style=\'color: red\'>"+lang.httpPrompt+"</span>";\n }else{\n $G("msg").innerHTML = "";\n }\n };\n function hrefStartWith(href,arr){\n href = href.replace(/^s+|s+$/g, \'\');\n for(var i=0,ai;ai=arr[i++];){\n if(href.indexOf(ai)==0){\n return true;\n }\n }\n return false;\n }\n<\/script>\n</body>\n</html>\n',"dialogs/spechars/spechars.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title></title>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n html,body{overflow:hidden;}\n #specharsTab{width: 97%;margin: 10px auto; zoom:1;position: relative}\n .tabbody {height:447px;}\n .tabbody span{ margin: 5px 3px;text-align: center;display:inline-block;width: 40px;height:16px;line-height: 16px;cursor: pointer; }\n </style>\n</head>\n<body>\n <div id="specharsTab">\n <div id="tabHeads" class="tabhead"></div><div id="tabBodys" class="tabbody"></div>\n </div>\n<script type="text/javascript" src="spechars.js"><\/script>\n</body>\n</html>',"dialogs/searchreplace/searchreplace.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title></title>\n <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n .warpper{ position:relative;width: 380px; height: 100%; margin: 10px auto;}\n .tabbody{height: 160px;}\n .tabbody table{width:100%;border-collapse: separate;border-spacing: 3px;}\n .tabbody .panel{width:373px;height:100%;padding-left: 5px;position: absolute;background-color: #fff;}\n .tabbody input.int{ width:190px;height:21px;border:1px solid #d7d7d7;line-height:21px;}\n .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; }\n </style>\n</head>\n<body>\n<div class="warpper" id="searchtab">\n <div id="head" class="tabhead">\n <span tabsrc="find" class="focus"><var id="lang_tab_search"></var></span>\n <span tabsrc="replace" ><var id="lang_tab_replace"></var></span>\n </div>\n <div class="tabbody">\n <div class="panel" id="find">\n <table>\n <tr>\n <td width="80"><var id="lang_search1"></var>: </td>\n <td><input id="findtxt" type="text" class="int" /></td>\n </tr>\n \x3c!--<tr>--\x3e\n \x3c!--<td colspan="2"><span style="color:red"><var id="lang_searchReg"></var></span></td>--\x3e\n \x3c!--</tr>--\x3e\n <tr>\n <td><var id="lang_case_sensitive1"></var></td>\n <td>\n <input id="matchCase" type="checkbox" />\n </td>\n </tr>\n <tr>\n <td colspan="2">\n <input id="nextFindBtn" type="button" class="btn" />\n <input id="preFindBtn" type="button" class="btn" />\n </td>\n </tr>\n <tr>\n <td colspan="2">\n &nbsp;\n </td>\n </tr>\n <tr>\n <td colspan="2">\n <span id="search-msg" style="color:red"></span>\n </td>\n </tr>\n </table>\n </div>\n <div class="panel" id="replace">\n <table>\n <tr>\n <td width="80"><var id="lang_search2"></var>: </td>\n <td><input id="findtxt1" type="text" class="int" /></td>\n </tr>\n \x3c!--<tr>--\x3e\n \x3c!--<td colspan="2"><span style="color:red"><var id="lang_searchReg1"></var></span></td>--\x3e\n \x3c!--</tr>--\x3e\n <tr>\n <td><var id="lang_replace"></var>: </td>\n <td><input id="replacetxt" type="text" class="int" /></td>\n </tr>\n <tr>\n <td><var id="lang_case_sensitive2"></var></td>\n <td>\n <input id="matchCase1" type="checkbox" />\n </td>\n </tr>\n <tr>\n <td colspan="2">\n <input id="nextReplaceBtn" type="button" class="btn" />\n <input id="preReplaceBtn" type="button" class="btn" />\n <input id="repalceBtn" type="button" class="btn" />\n <input id="repalceAllBtn" type="button" class="btn" />\n </td>\n </tr>\n <tr>\n <td colspan="2">\n &nbsp;\n </td>\n </tr>\n <tr>\n <td colspan="2">\n <span id="replace-msg" style="color:red"></span>\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\n<script type="text/javascript" src="searchreplace.js"><\/script>\n</body>\n</html>',"dialogs/map/map.html":'<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n <title></title>\n <script type="text/javascript" src="../internal.js"><\/script>\n <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.1&services=true"><\/script>\n <style type="text/css">\n .content{width:530px; height: 350px;margin: 10px auto;}\n .content table{width: 100%}\n .content table td{vertical-align: middle;}\n #city,#address{height:21px;background: #FFF;border:1px solid #d7d7d7; line-height: 21px;}\n #city{width:60px}\n #address{width:130px}\n #is_dynamic_label span{vertical-align:middle;margin: 3px 0px 3px 3px;}\n #is_dynamic_label input{vertical-align:middle;margin: 3px 3px 3px 50px;}\n </style>\n</head>\n<body>\n<div class="content">\n <table>\n <tr>\n <td><var id="lang_city"></var>:</td>\n <td><input id="city" type="text" /></td>\n <td><var id="lang_address"></var>:</td>\n <td><input id="address" type="text" value="" /></td>\n <td><a href="javascript:doSearch()" class="button"><var id="lang_search"></var></a></td>\n <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>\n </tr>\n </table>\n <div style="width:100%;height:340px;margin:5px auto;border:1px solid gray" id="container"></div>\n</div>\n<script type="text/javascript">\n var map = new BMap.Map("container"),marker,point,styleStr;\n map.enableScrollWheelZoom();\n map.enableContinuousZoom();\n function doSearch(){\n if (!document.getElementById(\'city\').value) {\n alert(lang.cityMsg);\n return;\n }\n var search = new BMap.LocalSearch(document.getElementById(\'city\').value, {\n onSearchComplete: function (results){\n if (results && results.getNumPois()) {\n var points = [];\n for (var i=0; i<results.getCurrentNumPois(); i++) {\n points.push(results.getPoi(i).point);\n }\n if (points.length > 1) {\n map.setViewport(points);\n } else {\n map.centerAndZoom(points[0], 13);\n }\n point = map.getCenter();\n marker.setPoint(point);\n } else {\n alert(lang.errorMsg);\n }\n }\n });\n search.search(document.getElementById(\'address\').value || document.getElementById(\'city\').value);\n }\n //获得参数\n function getPars(str,par){\n var reg = new RegExp(par+"=((\\d+|[.,])*)","g");\n return reg.exec(str)[1];\n }\n function init(){\n var mapNode = editor.selection.getRange().getClosedNode(),\n isMapImg = mapNode && /api[.]map[.]baidu[.]com/ig.test(mapNode.getAttribute("src")),\n isMapIframe = mapNode && domUtils.hasClass(mapNode, \'ueditor_baidumap\');\n if(isMapImg || isMapIframe){\n var url, centerPos, markerPos;\n if(isMapIframe) {\n url = decodeURIComponent(mapNode.getAttribute("src"));\n $G(\'is_dynamic\').checked = true;\n styleStr = mapNode.style.cssText;\n } else {\n url = mapNode.getAttribute("src");\n styleStr = mapNode.style.cssText;\n }\n centerPos = getPars(url,"center").split(",");\n markerPos = getPars(url, "markers").split(",");\n point = new BMap.Point(Number(centerPos[0]),Number(centerPos[1]));\n marker = new BMap.Marker(new BMap.Point(Number(markerPos[0]), Number(markerPos[1])));\n map.addControl(new BMap.NavigationControl());\n map.centerAndZoom(point, Number(getPars(url,"zoom")));\n }else{\n point = new BMap.Point(116.404, 39.915); // 创建点坐标\n marker = new BMap.Marker(point);\n map.addControl(new BMap.NavigationControl());\n map.centerAndZoom(point, 10); // 初始化地图,设置中心点坐标和地图级别。\n }\n marker.enableDragging();\n map.addOverlay(marker);\n }\n init();\n document.getElementById(\'address\').onkeydown = function (evt){\n evt = evt || event;\n if (evt.keyCode == 13) {\n doSearch();\n }\n };\n dialog.onok = function (){\n var center = map.getCenter();\n var zoom = map.zoomLevel;\n var size = map.getSize();\n var mapWidth = size.width;\n var mapHeight = size.height;\n var point = marker.getPoint();\n if($G(\'is_dynamic\').checked) {\n var URL = editor.options.UEDITOR_HOME_URL,\n url = [URL + (//$/.test(URL) ? \'\':\'/\') + "dialogs/map/show.html" +\n \'#center=\' + center.lng + \',\' + center.lat,\n \'&zoom=\' + zoom,\n \'&width=\' + mapWidth,\n \'&height=\' + mapHeight,\n \'&markers=\' + point.lng + \',\' + point.lat,\n \'&markerStyles=\' + \'l,A\'].join(\'\');\n editor.execCommand(\'inserthtml\', \'<iframe class="ueditor_baidumap" src="\' + url + \'"\' + (styleStr ? \' style="\' + styleStr + \'"\' :\'\') + \' frameborder="0" width="\' + (mapWidth+4) + \'" height="\' + (mapHeight+4) + \'"></iframe>\');\n } else {\n var url = "http://api.map.baidu.com/staticimage?center=" + center.lng + \',\' + center.lat +\n "&zoom=" + zoom + "&width=" + size.width + \'&height=\' + size.height + "&markers=" + point.lng + \',\' + point.lat;\n editor.execCommand(\'inserthtml\', \'<img width="\'+ size.width +\'"height="\'+ size.height +\'" src="\' + url + \'"\' + (styleStr ? \' style="\' + styleStr + \'"\' :\'\') + \'/>\');\n }\n };\n document.getElementById("address").focus();\n<\/script>\n</body>\n</html>\n',"dialogs/video/video.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title></title>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <link rel="stylesheet" type="text/css" href="video.css" />\n</head>\n<body>\n<div class="wrapper">\n <div id="videoTab">\n <div id="tabHeads" class="tabhead">\n <span tabSrc="video" class="focus" data-content-id="video"><var id="lang_tab_insertV"></var></span>\n <span tabSrc="upload" data-content-id="upload"><var id="lang_tab_uploadV"></var></span>\n </div>\n <div id="tabBodys" class="tabbody">\n <div id="video" class="panel focus">\n <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>\n <div id="preview"></div>\n <div id="videoInfo">\n <fieldset>\n <legend><var id="lang_video_size"></var></legend>\n <table>\n <tr><td><label for="videoWidth"><var id="lang_videoW"></var></label></td><td><input class="txt" id="videoWidth" type="text"/></td></tr>\n <tr><td><label for="videoHeight"><var id="lang_videoH"></var></label></td><td><input class="txt" id="videoHeight" type="text"/></td></tr>\n </table>\n </fieldset>\n <fieldset>\n <legend><var id="lang_alignment"></var></legend>\n <div id="videoFloat"></div>\n </fieldset>\n </div>\n </div>\n <div id="upload" class="panel">\n <div id="upload_left">\n <div id="queueList" class="queueList">\n <div class="statusBar element-invisible">\n <div class="progress">\n <span class="text">0%</span>\n <span class="percentage"></span>\n </div><div class="info"></div>\n <div class="btns">\n <div id="filePickerBtn"></div>\n <div class="uploadBtn"><var id="lang_start_upload"></var></div>\n </div>\n </div>\n <div id="dndArea" class="placeholder">\n <div class="filePickerContainer">\n <div id="filePickerReady"></div>\n </div>\n </div>\n <ul class="filelist element-invisible">\n <li id="filePickerBlock" class="filePickerBlock"></li>\n </ul>\n </div>\n </div>\n <div id="uploadVideoInfo">\n <fieldset>\n <legend><var id="lang_upload_size"></var></legend>\n <table>\n <tr><td><label><var id="lang_upload_width"></var></label></td><td><input class="txt" id="upload_width" type="text"/></td></tr>\n <tr><td><label><var id="lang_upload_height"></var></label></td><td><input class="txt" id="upload_height" type="text"/></td></tr>\n </table>\n </fieldset>\n <fieldset>\n <legend><var id="lang_upload_alignment"></var></legend>\n <div id="upload_alignment"></div>\n </fieldset>\n </div>\n </div>\n </div>\n </div>\n</div>\n\x3c!-- jquery --\x3e\n<script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"><\/script>\n\x3c!-- webuploader --\x3e\n<script type="text/javascript" src="../../third-party/webuploader/webuploader.min.js"><\/script>\n<link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">\n\x3c!-- video --\x3e\n<script type="text/javascript" src="video.js"><\/script>\n</body>\n</html>',"dialogs/help/help.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title>帮助</title>\n <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <link rel="stylesheet" type="text/css" href="help.css">\n</head>\n<body>\n<div class="wrapper" id="helptab">\n <div id="tabHeads" class="tabhead">\n <span class="focus" tabsrc="about"><var id="lang_input_about"></var></span>\n <span tabsrc="shortcuts"><var id="lang_input_shortcuts"></var></span>\n </div>\n <div id="tabBodys" class="tabbody">\n <div id="about" class="panel">\n <h1>UEditor</h1>\n <p id="version"></p>\n <p><var id="lang_input_introduction"></var></p>\n </div>\n <div id="shortcuts" class="panel">\n <table>\n <thead>\n <tr>\n <td><var id="lang_Txt_shortcuts"></var></td>\n <td><var id="lang_Txt_func"></var></td>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>ctrl+b</td>\n <td><var id="lang_Txt_bold"></var></td>\n </tr>\n <tr>\n <td>ctrl+c</td>\n <td><var id="lang_Txt_copy"></var></td>\n </tr>\n <tr>\n <td>ctrl+x</td>\n <td><var id="lang_Txt_cut"></var></td>\n </tr>\n <tr>\n <td>ctrl+v</td>\n <td><var id="lang_Txt_Paste"></var></td>\n </tr>\n <tr>\n <td>ctrl+y</td>\n <td><var id="lang_Txt_undo"></var></td>\n </tr>\n <tr>\n <td>ctrl+z</td>\n <td><var id="lang_Txt_redo"></var></td>\n </tr>\n <tr>\n <td>ctrl+i</td>\n <td><var id="lang_Txt_italic"></var></td>\n </tr>\n <tr>\n <td>ctrl+u</td>\n <td><var id="lang_Txt_underline"></var></td>\n </tr>\n <tr>\n <td>ctrl+a</td>\n <td><var id="lang_Txt_selectAll"></var></td>\n </tr>\n <tr>\n <td>shift+enter</td>\n <td><var id="lang_Txt_visualEnter"></var></td>\n </tr>\n <tr>\n <td>alt+z</td>\n <td><var id="lang_Txt_fullscreen"></var></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n<script type="text/javascript" src="help.js"><\/script>\n</body>\n</html>',"dialogs/emotion/emotion.html":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <title></title>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n <meta name=\"robots\" content=\"noindex, nofollow\"/>\n <script type=\"text/javascript\" src=\"../internal.js\"><\/script>\n <link rel=\"stylesheet\" type=\"text/css\" href=\"emotion.css\">\n</head>\n<body>\n<div id=\"tabPanel\" class=\"wrapper\">\n <div id=\"tabHeads\" class=\"tabhead\">\n <span><var id=\"lang_input_choice\"></var></span>\n <span><var id=\"lang_input_Tuzki\"></var></span>\n <span><var id=\"lang_input_lvdouwa\"></var></span>\n <span><var id=\"lang_input_BOBO\"></var></span>\n <span><var id=\"lang_input_babyCat\"></var></span>\n <span><var id=\"lang_input_bubble\"></var></span>\n <span><var id=\"lang_input_youa\"></var></span>\n </div>\n <div id=\"tabBodys\" class=\"tabbody\">\n <div id=\"tab0\"></div>\n <div id=\"tab1\"></div>\n <div id=\"tab2\"></div>\n <div id=\"tab3\"></div>\n <div id=\"tab4\"></div>\n <div id=\"tab5\"></div>\n <div id=\"tab6\"></div>\n </div>\n</div>\n<div id=\"tabIconReview\">\n <img id='faceReview' class='review' src=\"../../themes/default/images/spacer.gif\"/>\n</div>\n<script type=\"text/javascript\" src=\"emotion.js\"><\/script>\n<script type=\"text/javascript\">\n var emotion = {\n tabNum:7, //切换面板数量\n 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] }, //图片前缀名\n imageFolders:{ tab0:'jx2/', tab1:'tsj/', tab2:'ldw/', tab3:'bobo/', tab4:'babycat/', tab5:'face/', tab6:'youa/'}, //图片对应文件夹路径\n imageCss:{tab0:'jd', tab1:'tsj', tab2:'ldw', tab3:'bb', tab4:'cat', tab5:'pp', tab6:'youa'}, //图片css类名\n imageCssOffset:{tab0:35, tab1:35, tab2:35, tab3:35, tab4:35, tab5:25, tab6:35}, //图片偏移\n SmileyInfor:{\n tab0:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '打酱油', '俯卧撑', '气愤', '?', '吻', '怒', '胜利', 'HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '微笑', '亲吻', '调皮', '惊恐', '耍酷', '发火', '害羞', '汗水', '大哭', '', '加油', '困', '你NB', '晕倒', '开心', '偷笑', '大哭', '滴汗', '叹气', '超赞', '??', '飞吻', '天使', '撒花', '生气', '被砸', '吓傻', '随意吐'],\n tab1:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '摊手', '睡觉', '瘫坐', '无聊', '星星闪', '旋转', '也不行', '郁闷', '正Music', '抓墙', '撞墙至死', '歪头', '戳眼', '飘过', '互相拍砖', '砍死你', '扔桌子', '少林寺', '什么?', '转头', '我爱牛奶', '我踢', '摇晃', '晕厥', '在笼子里', '震荡'],\n tab2:['大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '我错了', 'money', '气愤', '挑逗', '吻', '怒', '胜利', '委屈', '受伤', '说啥呢?', '闭嘴', '不', '逗你玩儿', '飞吻', '眩晕', '魔法', '我来了', '睡了', '我打', '闭嘴', '打', '打晕了', '刷牙', '爆揍', '炸弹', '倒立', '刮胡子', '邪恶的笑', '不要不要', '爱恋中', '放大仔细看', '偷窥', '超高兴', '晕', '松口气', '我跑', '享受', '修养', '哭', '汗', '啊~', '热烈欢迎', '打酱油', '俯卧撑', '?'],\n tab3:['HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '泪眼', '流泪', '生气', '吐舌', '喜欢', '旋转', '再见', '抓狂', '汗', '鄙视', '拜', '吐血', '嘘', '打人', '蹦跳', '变脸', '扯肉', '吃To', '吃花', '吹泡泡糖', '大变身', '飞天舞', '回眸', '可怜', '猛抽', '泡泡', '苹果', '亲', '', '骚舞', '烧香', '睡', '套娃娃', '捅捅', '舞倒', '西红柿', '爱慕', '摇', '摇摆', '杂耍', '招财', '被殴', '被球闷', '大惊', '理想', '欧打', '呕吐', '碎', '吐痰'],\n tab4:['发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '顶', '幸运', '爱心', '躲', '送花', '选择'],\n tab5:['微笑', '亲吻', '调皮', '惊讶', '耍酷', '发火', '害羞', '汗水', '大哭', '得意', '鄙视', '困', '夸奖', '晕倒', '疑问', '媒婆', '狂吐', '青蛙', '发愁', '亲吻', '', '爱心', '心碎', '玫瑰', '礼物', '哭', '奸笑', '可爱', '得意', '呲牙', '暴汗', '楚楚可怜', '困', '哭', '生气', '惊讶', '口水', '彩虹', '夜空', '太阳', '钱钱', '灯泡', '咖啡', '蛋糕', '音乐', '爱', '胜利', '赞', '鄙视', 'OK'],\n tab6:['男兜', '女兜', '开心', '乖乖', '偷笑', '大笑', '抽泣', '大哭', '无奈', '滴汗', '叹气', '狂晕', '委屈', '超赞', '??', '疑问', '飞吻', '天使', '撒花', '生气', '被砸', '口水', '泪奔', '吓傻', '吐舌头', '点头', '随意吐', '旋转', '困困', '鄙视', '狂顶', '篮球', '再见', '欢迎光临', '恭喜发财', '稍等', '我在线', '恕不议价', '库房有货', '货在路上']\n }\n };\n<\/script>\n</body>\n</html>","dialogs/wordimage/wordimage.html":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n <title></title>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n .wrapper{width: 600px;padding: 10px;height: 352px;overflow: hidden;position: relative;border-bottom: 1px solid #d7d7d7}\n .localPath input{float: left;width: 350px;line-height: 20px;height: 20px;}\n #clipboard{float:left;width: 70px;height: 30px; }\n .description{ color: #0066cc; margin-top: 2px; width: 450px;height: 45px;float: left;line-height: 22px}\n #upload{width: 100px;height: 30px;float: right; margin:10px 2px 0 0;cursor: pointer;}\n #msg{ width: 140px; height: 30px; line-height:25px;float: left;color: red}\n </style>\n</head>\n<body>\n <div class="wrapper">\n <div class="localPath">\n <input id="localPath" type="text" readonly />\n <div id="clipboard"></div>\n <div id="msg"></div>\n </div>\n <div id="flashContainer"></div>\n <div>\n <div id="upload" style="display: none" ><img id="uploadBtn"></div>\n <div class="description">\n <span style="color: red"><var id="lang_resave"></var>: </span><var id="lang_step"></var>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="tangram.js"><\/script>\n <script type="text/javascript" src="wordimage.js"><\/script>\n <script type="text/javascript">\n editor.setOpt({\n wordImageFieldName:"upfile",\n compressSide:0,\n maxImageSideLength:900\n });\n //全局变量\n var imageUrls = [], //用于保存从服务器返回的图片信息数组\n selectedImageCount = 0, //当前已选择的但未上传的图片数量\n optImageUrl = editor.getActionUrl(editor.getOpt(\'imageActionName\')),\n optImageFieldName = editor.getOpt(\'imageFieldName\'),\n optImageCompressBorder = editor.getOpt(\'imageCompressEnable\') ? editor.getOpt(\'imageCompressBorder\'):null,\n maxSize = editor.getOpt(\'imageMaxSize\') / 1024 / 1024,\n extension = editor.getOpt(\'imageAllowFiles\').join(\';\').replace(/./g, \'*.\');\n /* 添加额外的GET参数 */\n var params = utils.serializeParam(editor.queryCommandValue(\'serverparam\')) || \'\',\n urlWidthParams = optImageUrl + (optImageUrl.indexOf(\'?\') == -1 ? \'?\':\'&\') + params;\n utils.domReady(function(){\n //创建Flash相关的参数集合\n var flashOptions = {\n container:"flashContainer", //flash容器id\n url:urlWidthParams, // 上传处理页面的url地址\n ext:editor.queryCommandValue(\'serverParam\') || {}, //可向服务器提交的自定义参数列表\n fileType:\'{"description":"\'+lang.fileType+\'", "extension":"\' + extension + \'"}\', //上传文件格式限制\n flashUrl:\'imageUploader.swf\', //上传用的flash组件地址\n width:600, //flash的宽度\n height:272, //flash的高度\n gridWidth:120, // 每一个预览图片所占的宽度\n gridHeight:120, // 每一个预览图片所占的高度\n picWidth:100, // 单张预览图片的宽度\n picHeight:100, // 单张预览图片的高度\n uploadDataFieldName: optImageFieldName, // POST请求中图片数据的key\n picDescFieldName:\'pictitle\', // POST请求中图片描述的key\n maxSize: maxSize, // 文件的最大体积,单位M\n compressSize:1, // 上传前如果图片体积超过该值,会先压缩,单位M\n maxNum:32, // 单次最大可上传多少个文件\n compressSide: 0, //等比压缩的基准,0为按照最长边,1为按照宽度,2为按照高度\n compressLength: optImageCompressBorder //能接受的最大边长,超过该值Flash会自动等比压缩\n };\n //回调函数集合,支持传递函数名的字符串、函数句柄以及函数本身三种类型\n var callbacks={\n selectFileCallback: function(selectFiles){ // 选择文件的回调\n selectedImageCount += selectFiles.length;\n if(selectedImageCount) baidu.g("upload").style.display = "";\n dialog.buttons[0].setDisabled(true); //初始化时置灰确定按钮\n },\n deleteFileCallback: function(delFiles){ // 删除文件的回调\n selectedImageCount -= delFiles.length;\n if (!selectedImageCount) {\n baidu.g("upload").style.display = "none";\n dialog.buttons[0].setDisabled(false); //没有选择图片时重新点亮按钮\n }\n },\n uploadCompleteCallback: function(data){ // 单个文件上传完成的回调\n try{var info = eval("(" + data.info + ")");\n info && imageUrls.push(info);\n selectedImageCount--;\n }catch(e){}\n },\n uploadErrorCallback: function (data){ // 单个文件上传失败的回调,\n console && console.log(data);\n },\n allCompleteCallback: function(){ // 全部上传完成时的回调\n dialog.buttons[0].setDisabled(false); //上传完毕后点亮按钮\n }\n //exceedFileCallback: \'exceedFileCallback\', // 文件超出限制的最大体积时的回调\n //startUploadCallback: startUploadCallback // 开始上传某个文件时的回调\n };\n wordImage.init(flashOptions,callbacks);\n });\n <\/script>\n</body>\n</html>',"dialogs/attachment/attachment.html":'<!doctype html>\n<html>\n<head>\n <meta charset="UTF-8">\n <title>ueditor图片对话框</title>\n <script type="text/javascript" src="../internal.js"><\/script>\n \x3c!-- jquery --\x3e\n <script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"><\/script>\n \x3c!-- webuploader --\x3e\n <script src="../../third-party/webuploader/webuploader.min.js"><\/script>\n <link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">\n \x3c!-- attachment dialog --\x3e\n <link rel="stylesheet" href="attachment.css" type="text/css" />\n</head>\n<body>\n <div class="wrapper">\n <div id="tabhead" class="tabhead">\n <span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>\n \x3c!-- <span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span> --\x3e\n </div>\n <div id="tabbody" class="tabbody">\n \x3c!-- 上传图片 --\x3e\n <div id="upload" class="panel focus">\n <div id="queueList" class="queueList">\n <div class="statusBar element-invisible">\n <div class="progress">\n <span class="text">0%</span>\n <span class="percentage"></span>\n </div><div class="info"></div>\n <div class="btns">\n <div id="filePickerBtn"></div>\n <div class="uploadBtn"><var id="lang_start_upload"></var></div>\n </div>\n </div>\n <div id="dndArea" class="placeholder">\n <div class="filePickerContainer">\n <div id="filePickerReady"></div>\n </div>\n </div>\n <ul class="filelist element-invisible">\n <li id="filePickerBlock" class="filePickerBlock"></li>\n </ul>\n </div>\n </div>\n \x3c!-- 在线图片 --\x3e\n <div id="online" class="panel">\n <div id="fileList"><var id="lang_imgLoading"></var></div>\n </div>\n </div>\n </div>\n <script type="text/javascript" src="attachment.js"><\/script>\n</body>\n</html>',"dialogs/insertframe/insertframe.html":'<!DOCTYPE html>\n<html>\n<head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n <title></title>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n .warp {width: 320px;height: 153px;margin-left:5px;padding: 20px 0 0 15px;position: relative;}\n #url {width: 290px; margin-bottom: 2px; margin-left: -6px; margin-left: -2px9;*margin-left:0;_margin-left:0; }\n .format span{display: inline-block; width: 58px;text-align: center; zoom:1;}\n table td{padding:5px 0;}\n #align{width: 65px;height: 23px;line-height: 22px;}\n </style>\n</head>\n<body>\n<div class="warp">\n <table width="300" cellpadding="0" cellspacing="0">\n <tr>\n <td colspan="2" class="format">\n <span><var id="lang_input_address"></var></span>\n <input style="width:200px" id="url" type="text" value=""/>\n </td>\n </tr>\n <tr>\n <td colspan="2" class="format"><span><var id="lang_input_width"></var></span><input style="width:200px" type="text" id="width"/> px</td>\n </tr>\n <tr>\n <td colspan="2" class="format"><span><var id="lang_input_height"></var></span><input style="width:200px" type="text" id="height"/> px</td>\n </tr>\n <tr>\n <td><span><var id="lang_input_isScroll"></var></span><input type="checkbox" id="scroll"/> </td>\n <td><span><var id="lang_input_frameborder"></var></span><input type="checkbox" id="frameborder"/> </td>\n </tr>\n <tr>\n <td colspan="2"><span><var id="lang_input_alignMode"></var></span>\n <select id="align">\n <option value=""></option>\n <option value="left"></option>\n <option value="right"></option>\n </select>\n </td>\n </tr>\n </table>\n</div>\n<script type="text/javascript">\n var iframe = editor._iframe;\n if(iframe){\n $G("url").value = iframe.getAttribute("src")||"";\n $G("width").value = iframe.getAttribute("width")||iframe.style.width.replace("px","")||"";\n $G("height").value = iframe.getAttribute("height") || iframe.style.height.replace("px","") ||"";\n $G("scroll").checked = (iframe.getAttribute("scrolling") == "yes") ? true : false;\n $G("frameborder").checked = (iframe.getAttribute("frameborder") == "1") ? true : false;\n $G("align").value = iframe.align ? iframe.align : "";\n }\n function queding(){\n var url = $G("url").value.replace(/^s*|s*$/ig,""),\n width = $G("width").value,\n height = $G("height").value,\n scroll = $G("scroll"),\n frameborder = $G("frameborder"),\n float = $G("align").value,\n newIframe = editor.document.createElement("iframe"),\n div;\n if(!url){\n alert(lang.enterAddress);\n return false;\n }\n newIframe.setAttribute("src",/http://|https:///ig.test(url) ? url : "http://"+url);\n /^[1-9]+[.]?d*$/g.test( width ) ? newIframe.setAttribute("width",width) : "";\n /^[1-9]+[.]?d*$/g.test( height ) ? newIframe.setAttribute("height",height) : "";\n scroll.checked ? newIframe.setAttribute("scrolling","yes") : newIframe.setAttribute("scrolling","no");\n frameborder.checked ? newIframe.setAttribute("frameborder","1",0) : newIframe.setAttribute("frameborder","0",0);\n float ? newIframe.setAttribute("align",float) : newIframe.setAttribute("align","");\n if(iframe){\n iframe.parentNode.insertBefore(newIframe,iframe);\n domUtils.remove(iframe);\n }else{\n div = editor.document.createElement("div");\n div.appendChild(newIframe);\n editor.execCommand("inserthtml",div.innerHTML);\n }\n editor._iframe = null;\n dialog.close();\n }\n dialog.onok = queding;\n $G("url").onkeydown = function(evt){\n evt = evt || event;\n if(evt.keyCode == 13){\n queding();\n }\n };\n $focus($G( "url" ));\n<\/script>\n</body>\n</html>',"dialogs/table/edittip.html":'<!DOCTYPE html>\n<html>\n<head>\n <title>表格删除提示</title>\n <script type="text/javascript" src="../internal.js"><\/script>\n <style type="text/css">\n .section {\n width: 200px;\n margin: 10px auto 0;\n font-size: 14px;\n }\n .item {\n text-align: center;\n }\n </style>\n</head>\n<body>\n<div class="section">\n <div class="item">\n <label><input type="radio" id="J_delRow" name="cmd" checked/><var id="lang_delRow"></var></label>\n </div>\n <div class="item">\n <label><input type="radio" id="J_delCol" name="cmd"/><var id="lang_delCol"></var></label>\n </div>\n</div>\n<script type="text/javascript">\n dialog.onok = function () {\n $G("J_delRow").checked ? editor.execCommand("deleterow") : editor.execCommand("deletecol");\n };\n<\/script>\n</body>\n</html>',"dialogs/table/edittable.html":'<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <script type="text/javascript" src="../internal.js"><\/script>\n <link rel="stylesheet" type="text/css" href="edittable.css">\n</head>\n<body>\n<div class="wrapper">\n <div class="left">\n <div class="section">\n <h3><var id="lang_tableStyle"></var></h3>\n <ul>\n <li>\n <label onselectstart="return false"><input type="checkbox" id="J_title" name="style"/><var id="lang_insertTitle"></var></label>\n </li>\n <li>\n <label onselectstart="return false"><input type="checkbox" id="J_titleCol" name="style"/><var id="lang_insertTitleCol"></var></label>\n </li>\n </ul>\n <ul>\n <li>\n <label onselectstart="return false"><input type="checkbox" id="J_caption" name="style"/><var id="lang_insertCaption"></var></label>\n </li>\n