diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7f23a30 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +Public/statics/* linguist-documentation diff --git a/.gitignore b/.gitignore index 1910046..574cd7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ Runtime/ install.lock Application/Common/Conf/db.php +node_modules/ diff --git a/.htaccess b/.htaccess index 3622151..d8f776c 100755 --- a/.htaccess +++ b/.htaccess @@ -1,8 +1,6 @@ - Options +FollowSymlinks - RewriteEngine On - - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - + RewriteEngine on + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] + \ No newline at end of file diff --git a/Application/Admin/Controller/IndexController.class.php b/Application/Admin/Controller/IndexController.class.php index a32b990..06fa998 100755 --- a/Application/Admin/Controller/IndexController.class.php +++ b/Application/Admin/Controller/IndexController.class.php @@ -9,12 +9,6 @@ class IndexController extends AdminBaseController{ * 首页 */ public function index(){ - // 分配菜单数据 - $nav_data=D('AdminNav')->getTreeData('level','order_number,id'); - $assign=array( - 'data'=>$nav_data - ); - $this->assign($assign); $this->display(); } /** diff --git a/Application/Admin/Controller/NavController.class.php b/Application/Admin/Controller/NavController.class.php index 0631a2f..c1f1986 100755 --- a/Application/Admin/Controller/NavController.class.php +++ b/Application/Admin/Controller/NavController.class.php @@ -23,8 +23,12 @@ public function index(){ public function add(){ $data=I('post.'); unset($data['id']); - D('AdminNav')->addData($data); - $this->success('添加成功',U('Admin/Nav/index')); + $result=D('AdminNav')->addData($data); + if ($result) { + $this->success('添加成功',U('Admin/Nav/index')); + }else{ + $this->error('添加失败'); + } } /** @@ -35,8 +39,12 @@ public function edit(){ $map=array( 'id'=>$data['id'] ); - D('AdminNav')->editData($map,$data); - $this->success('修改成功',U('Admin/Nav/index')); + $result=D('AdminNav')->editData($map,$data); + if ($result) { + $this->success('修改成功',U('Admin/Nav/index')); + }else{ + $this->error('修改失败'); + } } /** @@ -60,8 +68,12 @@ public function delete(){ */ public function order(){ $data=I('post.'); - D('AdminNav')->orderData($data); - $this->success('排序成功',U('Admin/Nav/index')); + $result=D('AdminNav')->orderData($data); + if ($result) { + $this->success('排序成功',U('Admin/Nav/index')); + }else{ + $this->error('排序失败'); + } } diff --git a/Application/Admin/Controller/PostsController.class.php b/Application/Admin/Controller/PostsController.class.php index 0b81135..05293f5 100644 --- a/Application/Admin/Controller/PostsController.class.php +++ b/Application/Admin/Controller/PostsController.class.php @@ -9,7 +9,7 @@ class PostsController extends AdminBaseController{ * 文章列表 */ public function index(){ - echo '文章列表'; + $this->display(); } } \ No newline at end of file diff --git a/Application/Admin/Controller/RuleController.class.php b/Application/Admin/Controller/RuleController.class.php index 8d593dd..cc0c616 100755 --- a/Application/Admin/Controller/RuleController.class.php +++ b/Application/Admin/Controller/RuleController.class.php @@ -25,8 +25,12 @@ public function index(){ public function add(){ $data=I('post.'); unset($data['id']); - D('AuthRule')->addData($data); - $this->success('添加成功',U('Admin/Rule/index')); + $result=D('AuthRule')->addData($data); + if ($result) { + $this->success('添加成功',U('Admin/Rule/index')); + }else{ + $this->error('添加失败'); + } } /** @@ -37,8 +41,12 @@ public function edit(){ $map=array( 'id'=>$data['id'] ); - D('AuthRule')->editData($map,$data); - $this->success('修改成功',U('Admin/Rule/index')); + $result=D('AuthRule')->editData($map,$data); + if ($result) { + $this->success('修改成功',U('Admin/Rule/index')); + }else{ + $this->error('修改失败'); + } } /** @@ -76,8 +84,12 @@ public function group(){ public function add_group(){ $data=I('post.'); unset($data['id']); - D('AuthGroup')->addData($data); - $this->success('添加成功',U('Admin/Rule/group')); + $result=D('AuthGroup')->addData($data); + if ($result) { + $this->success('添加成功',U('Admin/Rule/group')); + }else{ + $this->error('添加失败'); + } } /** @@ -88,20 +100,28 @@ public function edit_group(){ $map=array( 'id'=>$data['id'] ); - D('AuthGroup')->editData($map,$data); - $this->success('修改成功',U('Admin/Rule/group')); + $result=D('AuthGroup')->editData($map,$data); + if ($result) { + $this->success('修改成功',U('Admin/Rule/group')); + }else{ + $this->error('修改失败'); + } } /** * 删除用户组 */ public function delete_group(){ - $id=I('get.id'); + $id=I('get.id',0,'intval'); $map=array( 'id'=>$id ); - D('AuthGroup')->deleteData($map); - $this->success('删除成功',U('Admin/Rule/group')); + $result=D('AuthGroup')->deleteData($map); + if ($result) { + $this->success('删除成功',U('Admin/Rule/group')); + }else{ + $this->error('删除失败'); + } } //*****************权限-用户组***************** @@ -115,8 +135,12 @@ public function rule_group(){ 'id'=>$data['id'] ); $data['rules']=implode(',', $data['rule_ids']); - D('AuthGroup')->editData($map,$data); - $this->success('操作成功',U('Admin/Rule/group')); + $result=D('AuthGroup')->editData($map,$data); + if ($result) { + $this->success('操作成功',U('Admin/Rule/group')); + }else{ + $this->error('操作失败'); + } }else{ $id=I('get.id'); // 获取用户组数据 @@ -178,8 +202,12 @@ public function add_user_to_group(){ */ public function delete_user_from_group(){ $map=I('get.'); - D('AuthGroupAccess')->deleteData($map); - $this->success('操作成功',U('Admin/Rule/admin_user_list')); + $result=D('AuthGroupAccess')->deleteData($map); + if ($result) { + $this->success('操作成功',U('Admin/Rule/admin_user_list')); + }else{ + $this->error('操作失败'); + } } /** diff --git a/Application/Api/Controller/AppstoreController.class.php b/Application/Api/Controller/AppstoreController.class.php new file mode 100644 index 0000000..cfad9cd --- /dev/null +++ b/Application/Api/Controller/AppstoreController.class.php @@ -0,0 +1,27 @@ +1,"message"=>'邮箱配置不完整'); } @@ -521,6 +523,10 @@ function send_email($address,$subject,$content){ $phpmailer=new \Phpmailer(); // 设置PHPMailer使用SMTP服务器发送Email $phpmailer->IsSMTP(); + // 设置设置smtp_secure + $phpmailer->SMTPSecure=$email_smtp_secure; + // 设置port + $phpmailer->Port=$email_port; // 设置为html格式 $phpmailer->IsHTML(true); // 设置邮件的字符编码' @@ -655,12 +661,13 @@ function get_page_data($model,$map,$order='',$limit=10){ return $data; } -// * - // * @param string $path 字符串 保存文件路径示例: /Upload/image/ - // * @param string $format 文件格式限制 - // * @param integer $maxSize 允许的上传文件最大值 52428800 - // * @return booler 返回ajax的json格式数据 - +/** + * 处理post上传的文件;并返回路径 + * @param string $path 字符串 保存文件路径示例: /Upload/image/ + * @param string $format 文件格式限制 + * @param string $maxSize 允许的上传文件最大值 52428800 + * @return array 返回ajax的json格式数据 + */ function post_upload($path='file',$format='empty',$maxSize='52428800'){ ini_set('max_execution_time', '0'); // 去除两边的/ @@ -905,7 +912,7 @@ function file_category($str){ */ function get_min_image_path($file_path,$width=170,$height=170){ $min_path=str_replace('.', '_'.$width.'_'.$height.'.', trim($file_path,'.')); - $min_path='http://xueba17.oss-cn-beijing.aliyuncs.com'.$min_path; + $min_path=OSS_URL.$min_path; return $min_path; } @@ -927,7 +934,7 @@ function in_iarray($str,$array){ /** * 传入时间戳,计算距离现在的时间 * @param number $time 时间戳 - * @return string 返回多少以前 + * @return string 返回多少以前 */ function word_time($time) { $time = (int) substr($time, 0, 10); @@ -941,6 +948,8 @@ function word_time($time) { $str = sprintf('%d分钟前', floor($int / 60)); }elseif ($int < 86400){ $str = sprintf('%d小时前', floor($int / 3600)); + }elseif ($int < 1728000){ + $str = sprintf('%d天前', floor($int / 86400)); }else{ $str = date('Y-m-d H:i:s', $time); } @@ -996,10 +1005,12 @@ function ajax_upload($path='file',$format='empty',$maxSize='52428800'){ 'autoSub' => true, // 自动使用子目录保存上传文件 默认为true 'exts' => isset($ext_arr[$format])?$ext_arr[$format]:'', ); + // p($_FILES); // 实例化上传 $upload=new \Think\Upload($config); // 调用上传方法 $info=$upload->upload(); + // p($info); $data=array(); if(!$info){ // 返回错误信息 @@ -1010,6 +1021,7 @@ function ajax_upload($path='file',$format='empty',$maxSize='52428800'){ // 返回成功信息 foreach($info as $file){ $data['name']=trim($file['savepath'].$file['savename'],'.'); + // p($data); echo json_encode($data); } } @@ -1247,6 +1259,7 @@ function create_csv($data,$header=null,$filename='simple.csv'){ } // 防止没有添加文件后缀 $filename=str_replace('.csv', '', $filename).'.csv'; + ob_clean(); Header( "Content-type: application/octet-stream "); Header( "Accept-Ranges: bytes "); Header( "Content-Disposition: attachment; filename=".$filename); @@ -1257,8 +1270,10 @@ function create_csv($data,$header=null,$filename='simple.csv'){ } // 替换掉换行 $v=preg_replace('/\s*/', '', $v); + // 解决导出的数字会显示成科学计数法的问题 + $v=str_replace(',', "\t,", $v); // 转成gbk以兼容office乱码的问题 - echo iconv('UTF-8','GBK',$v)."\r\n"; + echo iconv('UTF-8','GBK',$v)."\t\r\n"; } } @@ -1271,7 +1286,11 @@ function import_excel($file){ // 判断文件是什么格式 $type = pathinfo($file); $type = strtolower($type["extension"]); - $type=$type==='csv' ? $type : 'Excel5'; + if ($type=='xlsx') { + $type='Excel2007'; + }elseif($type=='xls') { + $type = 'Excel5'; + } ini_set('max_execution_time', '0'); Vendor('PHPExcel.PHPExcel'); // 判断使用哪种格式 @@ -1282,14 +1301,18 @@ function import_excel($file){ $highestRow = $sheet->getHighestRow(); // 取得总列数 $highestColumn = $sheet->getHighestColumn(); + //总列数转换成数字 + $numHighestColum = PHPExcel_Cell::columnIndexFromString("$highestColumn"); //循环读取excel文件,读取一条,插入一条 $data=array(); //从第一行开始读取数据 for($j=1;$j<=$highestRow;$j++){ //从A列读取数据 - for($k='A';$k<=$highestColumn;$k++){ + for($k=0;$k<=$numHighestColum;$k++){ + //数字列转换成字母 + $columnIndex = PHPExcel_Cell::stringFromColumnIndex($k); // 读取单元格 - $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); + $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$columnIndex$j")->getValue(); } } return $data; @@ -1342,6 +1365,80 @@ function weixinpay($order){ $weixinpay->pay($order); } +/** + * 验证AppStore内付 + * @param string $receipt_data 付款后凭证 + * @return array 验证是否成功 + */ +function validate_apple_pay($receipt_data){ + /** + * 21000 App Store不能读取你提供的JSON对象 + * 21002 receipt-data域的数据有问题 + * 21003 receipt无法通过验证 + * 21004 提供的shared secret不匹配你账号中的shared secret + * 21005 receipt服务器当前不可用 + * 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送 + * 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务 + * 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务 + */ + function acurl($receipt_data, $sandbox=0){ + //小票信息 + $POSTFIELDS = array("receipt-data" => $receipt_data); + $POSTFIELDS = json_encode($POSTFIELDS); + + //正式购买地址 沙盒购买地址 + $url_buy = "https://buy.itunes.apple.com/verifyReceipt"; + $url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt"; + $url = $sandbox ? $url_sandbox : $url_buy; + + //简单的curl + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS); + $result = curl_exec($ch); + curl_close($ch); + return $result; + } + // 验证参数 + if (strlen($receipt_data)<20){ + $result=array( + 'status'=>false, + 'message'=>'非法参数' + ); + return $result; + } + // 请求验证 + $html = acurl($receipt_data); + $data = json_decode($html,true); + + // 如果是沙盒数据 则验证沙盒模式 + if($data['status']=='21007'){ + // 请求验证 + $html = acurl($receipt_data, 1); + $data = json_decode($html,true); + $data['sandbox'] = '1'; + } + + if (isset($_GET['debug'])) { + exit(json_encode($data)); + } + + // 判断是否购买成功 + if(intval($data['status'])===0){ + $result=array( + 'status'=>true, + 'message'=>'购买成功' + ); + }else{ + $result=array( + 'status'=>false, + 'message'=>'购买失败 status:'.$data['status'] + ); + } + return $result; +} + /** * geetest检测验证码 */ diff --git a/Application/Common/Conf/config.php b/Application/Common/Conf/config.php index ece0b26..53340fc 100755 --- a/Application/Common/Conf/config.php +++ b/Application/Common/Conf/config.php @@ -14,7 +14,7 @@ '__ADMIN_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/css', '__ADMIN_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/js', '__ADMIN_IMAGES__' => OSS_URL.trim(TMPL_PATH,'.').'Admin/Public/images', - '__ADMIN_ACEADMIN__' => __ROOT__.trim(TMPL_PATH,'.').'Admin/Public/aceadmin', + '__ADMIN_ACEADMIN__' => OSS_URL.__ROOT__.'/Public/statics/aceadmin', '__PUBLIC_CSS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/css', '__PUBLIC_JS__' => __ROOT__.trim(TMPL_PATH,'.').'Public/js', '__PUBLIC_IMAGES__' => OSS_URL.trim(TMPL_PATH,'.').'Public/images', @@ -45,10 +45,12 @@ 'AUTH_USER' => 'users' //用户信息表 ), //***********************************邮件服务器********************************** - 'EMAIL_FROM_NAME' => '', // 发件人 - 'EMAIL_SMTP' => '', // smtp - 'EMAIL_USERNAME' => '', // 账号 - 'EMAIL_PASSWORD' => '', // 密码 + 'EMAIL_FROM_NAME' => '', // 发件人 + 'EMAIL_SMTP' => '', // smtp + 'EMAIL_USERNAME' => '', // 账号 + 'EMAIL_PASSWORD' => '', // 密码 注意: 163和QQ邮箱是授权码;不是登录的密码 + 'EMAIL_SMTP_SECURE' => '', // 链接方式 如果使用QQ邮箱;需要把此项改为 ssl + 'EMAIL_PORT' => '25', // 端口 如果使用QQ邮箱;需要把此项改为 465 //***********************************其他设置********************************** 'RONG_IS_DEV' => true,//是否是在开发中 'RONG_DEV_APP_KEY' => '8luwapkvu3xwl', //融云开发环境下的key 仅供测试使用 diff --git a/Application/Common/Conf/db.php b/Application/Common/Conf/db.php deleted file mode 100755 index a8f08f6..0000000 --- a/Application/Common/Conf/db.php +++ /dev/null @@ -1,12 +0,0 @@ - 'mysqli', // 数据库类型 - 'DB_HOST' => '127.0.0.1', // 服务器地址 - 'DB_NAME' => 'test', // 数据库名 - 'DB_USER' => 'root', // 用户名 - 'DB_PWD' => '', // 密码 - 'DB_PORT' => '3306', // 端口 - 'DB_PREFIX' => 'bjyadmin_', // 数据库表前缀 -); \ No newline at end of file diff --git a/Application/Common/Controller/AdminBaseController.class.php b/Application/Common/Controller/AdminBaseController.class.php index 049e33a..29eff49 100755 --- a/Application/Common/Controller/AdminBaseController.class.php +++ b/Application/Common/Controller/AdminBaseController.class.php @@ -16,6 +16,12 @@ public function _initialize(){ if(!$result){ $this->error('您没有权限访问'); } + // 分配菜单数据 + $nav_data=D('AdminNav')->getTreeData('level','order_number,id'); + $assign=array( + 'nav_data'=>$nav_data + ); + $this->assign($assign); } diff --git a/Application/Common/Controller/UserBaseController.class.php b/Application/Common/Controller/UserBaseController.class.php index 57ebbce..28a4d4f 100755 --- a/Application/Common/Controller/UserBaseController.class.php +++ b/Application/Common/Controller/UserBaseController.class.php @@ -10,15 +10,16 @@ class UserBaseController extends BaseController{ */ public function _initialize(){ parent::_initialize(); - // 添加不需要验证是否登录的连接 + // 添加不需要验证是否登录的连接 全部小写 $not_need_login=array( - 'User/Goods/app_buy' + 'user/goods/app_buy' ); - $action=trim(__ACTION__,'/'); + // 转小写以兼容url大小写不统一的问题 + $action=strtolower(trim(__ACTION__,'/')); if (!in_array($action, $not_need_login)) { // 检测是否登录 if (!check_login()) { - if (IS_APP || IS_AJAX) { + if (IS_AJAX) { ajax_return('','您需要登录!',1); }else{ $this->error('您需要登录!'); diff --git a/Application/Common/Model/AuthGroupModel.class.php b/Application/Common/Model/AuthGroupModel.class.php index 5f61c75..21f0532 100755 --- a/Application/Common/Model/AuthGroupModel.class.php +++ b/Application/Common/Model/AuthGroupModel.class.php @@ -12,13 +12,15 @@ class AuthGroupModel extends BaseModel{ * @return boolean 操作是否成功 */ public function deleteData($map){ - $this->where($map)->delete(); - $group_map=array( - 'group_id'=>$map['id'] + $result=$this->where($map)->delete(); + if ($result) { + $group_map=array( + 'group_id'=>$map['id'] ); - // 删除关联表中的组数据 - $result=D('AuthGroupAccess')->deleteData($group_map); - return $result; + // 删除关联表中的组数据 + $result=D('AuthGroupAccess')->deleteData($group_map); + } + return true; } diff --git a/Application/Common/Tag/My.class.php b/Application/Common/Tag/My.class.php index b90a69e..80d1cff 100755 --- a/Application/Common/Tag/My.class.php +++ b/Application/Common/Tag/My.class.php @@ -6,27 +6,28 @@ class My extends TagLib { // 定义标签 protected $tags=array( - 'jquery'=>array('attr'=>'','close'=>0), - 'bootstrapcss'=>array('attr'=>'icheck','close'=>0), - 'bootstrapjs'=>array('attr'=>'icheck','close'=>0), - 'suicss'=>array('attr'=>'icheck','close'=>0), - 'suijs'=>array('attr'=>'icheck','close'=>0), - 'framework7css'=>array('attr'=>'icheck','close'=>0), - 'framework7js'=>array('attr'=>'icheck','close'=>0), - 'frozenuicss'=>array('attr'=>'icheck','close'=>0), - 'frozenuijs'=>array('attr'=>'icheck','close'=>0), - 'icheckcss'=>array('attr'=>'','close'=>0), + 'jquery'=>array('','close'=>0), + 'bootstrapcss'=>array('','close'=>0), + 'bootstrapjs'=>array('','close'=>0), + 'suicss'=>array('','close'=>0), + 'suijs'=>array('','close'=>0), + 'framework7css'=>array('','close'=>0), + 'framework7js'=>array('','close'=>0), + 'frozenuicss'=>array('','close'=>0), + 'frozenuijs'=>array('','close'=>0), + 'icheckcss'=>array('','close'=>0), 'icheckjs'=>array('attr'=>'color','close'=>0), 'datejs'=>array('attr'=>'id,color','close'=>0), 'layer'=>array('attr'=>'id,color','close'=>0), - 'animate'=>array('attr'=>'','close'=>0), + 'animate'=>array('','close'=>0), 'ueditor'=>array('attr'=>'name,content,height','close'=>0), - 'umeditorcss'=>array('attr'=>'','close'=>0), - 'umeditorjs'=>array('attr'=>'','close'=>0), + 'umeditorcss'=>array('','close'=>0), + 'umeditorjs'=>array('','close'=>0), 'umeditor'=>array('attr'=>'name,content,height','close'=>0), - 'webuploadercss'=>array('attr'=>'','close'=>0), + 'webuploadercss'=>array('','close'=>0), 'webuploader'=>array('attr'=>'name,url,word','close'=>0), - 'webuploaderjs'=>array('attr'=>'','close'=>0), + 'webuploaderjs'=>array('','close'=>0), + 'vue'=>array('','close'=>0) ); /** @@ -45,7 +46,21 @@ public function _layer(){ */ public function _jquery(){ $str=<< + +php; + return $str; + } + + /** + * vue + */ + public function _vue(){ + $str=<< + + php; return $str; } @@ -207,7 +222,7 @@ public function _frozenuijs($tag,$content) { */ public function _umeditorcss(){ $link=<< + php; return $link; } @@ -216,9 +231,9 @@ public function _umeditorcss(){ */ public function _umeditorjs(){ $link=<< - - + + + php; return $link; } @@ -287,7 +302,7 @@ public function _ueditor($tag){ public function _webuploadercss(){ $str=<< - + php; return $str; } @@ -317,7 +332,6 @@ public function _webuploader($tag){ $id_name='upload-'.uniqid(); $str=<< -
@@ -331,6 +345,11 @@ public function _webuploader($tag){
+
+
继续添加
+
+
+
开始上传
@@ -389,7 +408,7 @@ public function _webuploader($tag){ s = null; return r; })(), - + thisSuccess, // WebUploader实例 uploader; @@ -426,10 +445,10 @@ public function _webuploader($tag){ }); // 添加“添加文件”的按钮, - // uploader.addButton({ - // id: "#$id_name .filePicker2", - // label: '继续添加' - // }); + uploader.addButton({ + id: "#$id_name .filePicker2", + label: '继续添加' + }); // 当有文件添加进来时执行,负责view的创建 function addFile( file ) { @@ -437,6 +456,7 @@ function addFile( file ) { '

' + file.name + '

' + '

'+ '

' + + ''+ '' ), \$btns = \$('
' + @@ -494,7 +514,6 @@ function addFile( file ) { // 成功 if ( cur === 'error' || cur === 'invalid' ) { - console.log( file.statusText ); showError( file.statusText ); percentages[ file.id ][ 1 ] = 1; } else if ( cur === 'interrupt' ) { @@ -620,6 +639,9 @@ function updateStatus() { if ( stats.uploadFailNum ) { text += ',失败' + stats.uploadFailNum + '个'; } + if (fileCount==stats.successNum && stats.successNum!=0) { + $('#$id_name .webuploader-element-invisible').remove(); + } } \$info.html( text ); @@ -633,7 +655,7 @@ function updateStatus() { } uploader.onUploadSuccess=function(file ,response){ - fileName=response.name; + \$('#'+file.id +' .bjy-filename').val(response.name) } uploader.onUploadError=function(file){ alert(fileError); @@ -691,7 +713,7 @@ function setState( val ) { case 'finish': stats = uploader.getStats(); if ( stats.successNum ) { - \$("#$id_name input[name='$name']").val(fileName); + } else { // 没有成功的图片,重设 state = 'done'; diff --git a/Application/Home/Controller/IndexController.class.php b/Application/Home/Controller/IndexController.class.php index 3a54f60..7e0859d 100755 --- a/Application/Home/Controller/IndexController.class.php +++ b/Application/Home/Controller/IndexController.class.php @@ -47,6 +47,9 @@ public function logout(){ */ public function send_email(){ $email=I('post.email'); + if ($email=='baijunyao@baijunyao.com') { + die('请修改邮箱地址已接收测试邮件'); + } $result=send_email($email,'邮件标题','邮件内容'); if ($result['error']==1) { p($result);die; @@ -118,7 +121,7 @@ public function weixinpay_qrcode(){ * 融云用户1 */ public function user1(){ - // 模拟id为89的用户的登陆过程 + // 模拟id为89的用户的登录过程 $user_data=M('Users')->field('id,username,avatar')->find(88); $_SESSION['user']=array( 'id'=>$user_data['id'], @@ -142,7 +145,7 @@ public function user1(){ * 融云用户2 */ public function user2(){ - // 模拟id为89的用户的登陆过程 + // 模拟id为89的用户的登录过程 $user_data=M('Users')->field('id,username,avatar')->find(89); $_SESSION['user']=array( 'id'=>$user_data['id'], @@ -250,12 +253,7 @@ public function ajax_upload(){ public function webuploader(){ // 如果是post提交则显示上传的文件 否则显示上传页面 if(IS_POST){ - $image=I('post.image'); - // 判断是否有文件上传 - if (empty($image)) { - die('没有上传文件'); - } - echo '上传成功路径为:'.$image; + p($_POST);die; }else{ $this->display(); } @@ -265,7 +263,10 @@ public function webuploader(){ * 用来做测试用 */ public function test(){ - + p($_SESSION); + die; + echo C('SESSION_OPTIONS.expire',10); + session('test','222'); } diff --git a/Application/Home/Controller/VueController.class.php b/Application/Home/Controller/VueController.class.php new file mode 100644 index 0000000..8ac8a54 --- /dev/null +++ b/Application/Home/Controller/VueController.class.php @@ -0,0 +1,33 @@ +display($methed_name); + exit(0); + } + + /** + * 配合thinkphp分页示例 + */ + public function page(){ + // 获取总条数 + $count=M('Province_city_area')->count(); + // 每页多少条数据 + $limit=200; + $page=new \Org\Nx\Page($count,$limit); + $data=M('Province_city_area') + ->limit($page->firstRow.','.$page->listRows) + ->select(); + echo json_encode($data); + } + +} \ No newline at end of file diff --git a/Public/install/agreement.html b/Public/install/agreement.html index 4eef97f..3821e17 100755 --- a/Public/install/agreement.html +++ b/Public/install/agreement.html @@ -43,7 +43,7 @@

bjyadmin 安装协议

感谢您使用bjyadmin后台管理系统,bjyadmin是一个集成了众多工作需要用的功能。具体可以查看 README.md。此安装流程页面是直接复制 bjyblog程序的;主要是为了方便使用
- 您在使用中有任何问题都可以登陆bjyadmin官方网站获取帮助。
+ 您在使用中有任何问题都可以登录bjyadmin官方网站获取帮助。
bjyadmin遵循Apache Licence2开源协议,在尊重创作者版权的原则下您可以免费使用或再次开发。
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,允许代码修改,再作为开源或商业软件发布。需要满足的条件:
1. 需要给用户一份Apache Licence ;
diff --git a/Public/install/bjyadmin.sql b/Public/install/bjyadmin.sql index bac9d63..9ac11d4 100644 --- a/Public/install/bjyadmin.sql +++ b/Public/install/bjyadmin.sql @@ -1,3685 +1,197 @@ -/* -Navicat MySQL Data Transfer - -Source Server : localhost -Source Server Version : 50709 -Source Host : localhost:3306 -Source Database : test - -Target Server Type : MYSQL -Target Server Version : 50709 -File Encoding : 65001 - -Date: 2016-06-22 18:32:34 -*/ - -SET FOREIGN_KEY_CHECKS=0; - --- ---------------------------- --- Table structure for bjyadmin_admin_nav --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_admin_nav`; -CREATE TABLE `bjyadmin_admin_nav` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单表', - `pid` int(11) unsigned DEFAULT '0' COMMENT '所属菜单', - `name` varchar(15) DEFAULT '' COMMENT '菜单名称', - `mca` varchar(255) DEFAULT '' COMMENT '模块、控制器、方法', - `ico` varchar(20) DEFAULT '' COMMENT 'font-awesome图标', - `order_number` int(11) unsigned DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_admin_nav --- ---------------------------- -INSERT INTO `bjyadmin_admin_nav` VALUES ('1', '0', '系统设置', 'Admin/ShowNav/config', 'cog', '1'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('2', '1', '菜单管理', 'Admin/Nav/index', null, null); -INSERT INTO `bjyadmin_admin_nav` VALUES ('7', '4', '权限管理', 'Admin/Rule/index', '', '1'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('4', '0', '权限控制', 'Admin/ShowNav/rule', 'expeditedssl', '2'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('8', '4', '用户组管理', 'Admin/Rule/group', '', '2'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('9', '4', '管理员列表', 'Admin/Rule/admin_user_list', '', '3'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('16', '0', '会员管理', 'Admin/ShowNav/', 'users', '4'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('17', '16', '会员列表', 'Admin/User/index', '', null); -INSERT INTO `bjyadmin_admin_nav` VALUES ('36', '0', '文章管理', 'Admin/ShowNav/posts', 'th', '6'); -INSERT INTO `bjyadmin_admin_nav` VALUES ('37', '36', '文章列表', 'Admin/Posts/index', '', null); - --- ---------------------------- --- Table structure for bjyadmin_alipay_order --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_alipay_order`; -CREATE TABLE `bjyadmin_alipay_order` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '支付宝回执单主键id', - `product_order_sn` bigint(15) NOT NULL COMMENT '订单号', - `price` decimal(10,2) unsigned NOT NULL COMMENT '支付金额', - `alipay_sn` varchar(255) NOT NULL DEFAULT '' COMMENT '阿里支付单号', - `buyer_email` varchar(255) NOT NULL DEFAULT '' COMMENT '购买者邮箱', - `pay_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '支付时间', - `detail` text NOT NULL COMMENT '详细内容', - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=140 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_alipay_order --- ---------------------------- - --- ---------------------------- --- Table structure for bjyadmin_auth_group --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_auth_group`; -CREATE TABLE `bjyadmin_auth_group` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `title` char(100) NOT NULL DEFAULT '', - `status` tinyint(1) NOT NULL DEFAULT '1', - `rules` text NOT NULL COMMENT '规则id', - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户组表'; - --- ---------------------------- --- Records of bjyadmin_auth_group --- ---------------------------- -INSERT INTO `bjyadmin_auth_group` VALUES ('1', '超级管理员', '1', '6,96,20,1,2,3,4,5,64,21,7,8,9,10,11,12,13,14,15,16,123,124,125,19,104,105,106,107,108,118,109,110,111,112,117'); -INSERT INTO `bjyadmin_auth_group` VALUES ('2', '产品管理员', '1', '6,96,1,2,3,4,56,57,60,61,63,71,72,65,67,74,75,66,68,69,70,73,77,78,82,83,88,89,90,99,91,92,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114'); -INSERT INTO `bjyadmin_auth_group` VALUES ('4', '文章编辑', '1', '6,96,57,60,61,63,71,72,65,67,74,75,66,68,69,73,79,80,78,82,83,88,89,90,99,100,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114'); - --- ---------------------------- --- Table structure for bjyadmin_auth_group_access --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_auth_group_access`; -CREATE TABLE `bjyadmin_auth_group_access` ( - `uid` int(11) unsigned NOT NULL COMMENT '用户id', - `group_id` int(11) unsigned NOT NULL COMMENT '用户组id', - UNIQUE KEY `uid_group_id` (`uid`,`group_id`), - KEY `uid` (`uid`), - KEY `group_id` (`group_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户组明细表'; - --- ---------------------------- --- Records of bjyadmin_auth_group_access --- ---------------------------- -INSERT INTO `bjyadmin_auth_group_access` VALUES ('88', '1'); -INSERT INTO `bjyadmin_auth_group_access` VALUES ('89', '2'); -INSERT INTO `bjyadmin_auth_group_access` VALUES ('89', '4'); - --- ---------------------------- --- Table structure for bjyadmin_auth_rule --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_auth_rule`; -CREATE TABLE `bjyadmin_auth_rule` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父级id', - `name` char(80) NOT NULL DEFAULT '' COMMENT '规则唯一标识', - `title` char(20) NOT NULL DEFAULT '' COMMENT '规则中文名称', - `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:为1正常,为0禁用', - `type` tinyint(1) unsigned NOT NULL DEFAULT '1', - `condition` char(100) NOT NULL DEFAULT '' COMMENT '规则表达式,为空表示存在就验证,不为空表示按照条件验证', - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=utf8 COMMENT='规则表'; - --- ---------------------------- --- Records of bjyadmin_auth_rule --- ---------------------------- -INSERT INTO `bjyadmin_auth_rule` VALUES ('1', '20', 'Admin/ShowNav/nav', '菜单管理', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('2', '1', 'Admin/Nav/index', '菜单列表', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('3', '1', 'Admin/Nav/add', '添加菜单', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('4', '1', 'Admin/Nav/edit', '修改菜单', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('5', '1', 'Admin/Nav/delete', '删除菜单', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('21', '0', 'Admin/ShowNav/rule', '权限控制', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('7', '21', 'Admin/Rule/index', '权限管理', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('8', '7', 'Admin/Rule/add', '添加权限', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('9', '7', 'Admin/Rule/edit', '修改权限', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('10', '7', 'Admin/Rule/delete', '删除权限', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('11', '21', 'Admin/Rule/group', '用户组管理', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('12', '11', 'Admin/Rule/add_group', '添加用户组', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('13', '11', 'Admin/Rule/edit_group', '修改用户组', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('14', '11', 'Admin/Rule/delete_group', '删除用户组', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('15', '11', 'Admin/Rule/rule_group', '分配权限', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('16', '11', 'Admin/Rule/check_user', '添加成员', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('19', '21', 'Admin/Rule/admin_user_list', '管理员列表', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('20', '0', 'Admin/ShowNav/config', '系统设置', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('6', '0', 'Admin/Index/index', '后台首页', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('64', '1', 'Admin/Nav/order', '菜单排序', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('96', '6', 'Admin/Index/welcome', '欢迎界面', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('104', '0', 'Admin/ShowNav/posts', '文章管理', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('105', '104', 'Admin/Posts/index', '文章列表', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('106', '105', 'Admin/Posts/add_posts', '添加文章', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('107', '105', 'Admin/Posts/edit_posts', '修改文章', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('108', '105', 'Admin/Posts/delete_posts', '删除文章', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('109', '104', 'Admin/Posts/category_list', '分类列表', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('110', '109', 'Admin/Posts/add_category', '添加分类', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('111', '109', 'Admin/Posts/edit_category', '修改分类', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('112', '109', 'Admin/Posts/delete_category', '删除分类', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('117', '109', 'Admin/Posts/order_category', '分类排序', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('118', '105', 'Admin/Posts/order_posts', '文章排序', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('123', '11', 'Admin/Rule/add_user_to_group', '设置为管理员', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('124', '11', 'Admin/Rule/add_admin', '添加管理员', '1', '1', ''); -INSERT INTO `bjyadmin_auth_rule` VALUES ('125', '11', 'Admin/Rule/edit_admin', '修改管理员', '1', '1', ''); - --- ---------------------------- --- Table structure for bjyadmin_oauth_user --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_oauth_user`; -CREATE TABLE `bjyadmin_oauth_user` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', - `uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关联的本站用户id', - `type` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '类型 1:融云 2:友盟', - `nickname` varchar(30) NOT NULL DEFAULT '' COMMENT '第三方昵称', - `head_img` varchar(255) NOT NULL DEFAULT '' COMMENT '头像', - `openid` varchar(40) NOT NULL DEFAULT '' COMMENT '第三方用户id', - `access_token` varchar(255) NOT NULL DEFAULT '' COMMENT 'access_token token', - `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '绑定时间', - `last_login_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最后登录时间', - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=682 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_oauth_user --- ---------------------------- -INSERT INTO `bjyadmin_oauth_user` VALUES ('671', '88', '2', '白俊遥', '', '', 'k2232R1tBYJ232XJQelszNuV2tlzgsdj9m8A6JtRJXMtM2tfOffQP3U0qNG5zL2qnw9Envm4TqeJtIbMjwAZYMaLjnXw==', '1457693930', '1457693930'); - --- ---------------------------- --- Table structure for bjyadmin_order --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_order`; -CREATE TABLE `bjyadmin_order` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单主键', - `order_sn` int(11) unsigned NOT NULL COMMENT '订单号', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_order --- ---------------------------- - --- ---------------------------- --- Table structure for bjyadmin_province_city_area --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_province_city_area`; -CREATE TABLE `bjyadmin_province_city_area` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父级id', - `name` varchar(25) NOT NULL DEFAULT '' COMMENT '城市名', - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=3511 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_province_city_area --- ---------------------------- -INSERT INTO `bjyadmin_province_city_area` VALUES ('1', '0', '北京'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2', '1', '北京市辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3', '2', '东城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('4', '2', '西城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('5', '2', '崇文区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('6', '2', '宣武区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('7', '2', '朝阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('8', '2', '丰台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('9', '2', '石景山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('10', '2', '海淀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('11', '2', '门头沟区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('12', '2', '房山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('13', '2', '通州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('14', '2', '顺义区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('15', '2', '昌平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('16', '1', '北京县辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('17', '16', '大兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('18', '16', '平谷县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('19', '16', '怀柔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('20', '16', '密云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('21', '16', '延庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('22', '0', '天津'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('23', '22', '天津市辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('24', '23', '和平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('25', '23', '河东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('26', '23', '河西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('27', '23', '南开区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('28', '23', '河北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('29', '23', '红桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('30', '23', '塘沽区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('31', '23', '汉沽区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('32', '23', '大港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('33', '23', '东丽区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('34', '23', '西青区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('35', '23', '津南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('36', '23', '北辰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('37', '23', '武清区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('38', '22', '天津县辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('39', '38', '宁河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('40', '38', '静海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('41', '38', '宝坻县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('42', '38', '蓟 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('43', '0', '河北'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('44', '43', '石家庄'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('45', '44', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('46', '44', '长安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('47', '44', '桥东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('48', '44', '桥西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('49', '44', '新华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('50', '44', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('51', '44', '井陉矿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('52', '44', '井陉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('53', '44', '正定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('54', '44', '栾城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('55', '44', '行唐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('56', '44', '灵寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('57', '44', '高邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('58', '44', '深泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('59', '44', '赞皇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('60', '44', '无极县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('61', '44', '平山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('62', '44', '元氏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('63', '44', '赵 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('64', '44', '辛集市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('65', '44', '藁城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('66', '44', '晋州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('67', '44', '新乐市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('68', '44', '鹿泉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('69', '43', '唐山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('70', '69', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('71', '69', '路南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('72', '69', '路北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('73', '69', '古冶区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('74', '69', '开平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('75', '69', '新 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('76', '69', '丰润县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('77', '69', '滦 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('78', '69', '滦南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('79', '69', '乐亭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('80', '69', '迁西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('81', '69', '玉田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('82', '69', '唐海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('83', '69', '遵化市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('84', '69', '丰南市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('85', '69', '迁安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('86', '43', '秦皇岛'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('87', '86', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('88', '86', '海港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('89', '86', '山海关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('90', '86', '北戴河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('91', '86', '青龙满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('92', '86', '昌黎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('93', '86', '抚宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('94', '86', '卢龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('95', '43', '邯郸'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('96', '95', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('97', '95', '邯山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('98', '95', '丛台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('99', '95', '复兴区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('100', '95', '峰峰矿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('101', '95', '邯郸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('102', '95', '临漳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('103', '95', '成安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('104', '95', '大名县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('105', '95', '涉 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('106', '95', '磁 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('107', '95', '肥乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('108', '95', '永年县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('109', '95', '邱 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('110', '95', '鸡泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('111', '95', '广平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('112', '95', '馆陶县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('113', '95', '魏 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('114', '95', '曲周县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('115', '95', '武安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('116', '43', '邢台'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('117', '116', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('118', '116', '桥东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('119', '116', '桥西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('120', '116', '邢台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('121', '116', '临城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('122', '116', '内丘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('123', '116', '柏乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('124', '116', '隆尧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('125', '116', '任 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('126', '116', '南和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('127', '116', '宁晋县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('128', '116', '巨鹿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('129', '116', '新河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('130', '116', '广宗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('131', '116', '平乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('132', '116', '威 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('133', '116', '清河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('134', '116', '临西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('135', '116', '南宫市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('136', '116', '沙河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('137', '43', '保定'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('138', '137', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('139', '137', '新市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('140', '137', '北市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('141', '137', '南市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('142', '137', '满城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('143', '137', '清苑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('144', '137', '涞水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('145', '137', '阜平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('146', '137', '徐水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('147', '137', '定兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('148', '137', '唐 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('149', '137', '高阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('150', '137', '容城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('151', '137', '涞源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('152', '137', '望都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('153', '137', '安新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('154', '137', '易 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('155', '137', '曲阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('156', '137', '蠡 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('157', '137', '顺平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('158', '137', '博野县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('159', '137', '雄 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('160', '137', '涿州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('161', '137', '定州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('162', '137', '安国市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('163', '137', '高碑店市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('164', '43', '张家口'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('165', '164', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('166', '164', '桥东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('167', '164', '桥西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('168', '164', '宣化区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('169', '164', '下花园区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('170', '164', '宣化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('171', '164', '张北县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('172', '164', '康保县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('173', '164', '沽源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('174', '164', '尚义县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('175', '164', '蔚 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('176', '164', '阳原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('177', '164', '怀安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('178', '164', '万全县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('179', '164', '怀来县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('180', '164', '涿鹿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('181', '164', '赤城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('182', '164', '崇礼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('183', '43', '承德'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('184', '183', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('185', '183', '双桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('186', '183', '双滦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('187', '183', '鹰手营子矿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('188', '183', '承德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('189', '183', '兴隆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('190', '183', '平泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('191', '183', '滦平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('192', '183', '隆化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('193', '183', '丰宁满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('194', '183', '宽城满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('196', '43', '沧州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('197', '196', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('198', '196', '新华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('199', '196', '运河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('200', '196', '沧 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('201', '196', '青 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('202', '196', '东光县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('203', '196', '海兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('204', '196', '盐山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('205', '196', '肃宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('206', '196', '南皮县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('207', '196', '吴桥县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('208', '196', '献 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('209', '196', '孟村回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('210', '196', '泊头市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('211', '196', '任丘市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('212', '196', '黄骅市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('213', '196', '河间市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('214', '43', '廊坊'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('215', '214', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('216', '214', '安次区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('217', '214', '廊坊市广阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('218', '214', '固安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('219', '214', '永清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('220', '214', '香河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('221', '214', '大城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('222', '214', '文安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('223', '214', '大厂回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('224', '214', '霸州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('225', '214', '三河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('226', '43', '衡水'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('227', '226', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('228', '226', '桃城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('229', '226', '枣强县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('230', '226', '武邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('231', '226', '武强县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('232', '226', '饶阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('233', '226', '安平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('234', '226', '故城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('235', '226', '景 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('236', '226', '阜城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('237', '226', '冀州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('238', '226', '深州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('239', '0', '山西'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('240', '239', '太原'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('241', '240', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('242', '240', '小店区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('243', '240', '迎泽区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('244', '240', '杏花岭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('245', '240', '尖草坪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('246', '240', '万柏林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('247', '240', '晋源区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('248', '240', '清徐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('249', '240', '阳曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('250', '240', '娄烦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('251', '240', '古交市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('252', '239', '大同'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('253', '252', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('254', '252', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('255', '252', '矿 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('256', '252', '南郊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('257', '252', '新荣区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('258', '252', '阳高县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('259', '252', '天镇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('260', '252', '广灵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('261', '252', '灵丘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('262', '252', '浑源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('263', '252', '左云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('264', '252', '大同县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('265', '239', '阳泉'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('266', '265', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('267', '265', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('268', '265', '矿 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('269', '265', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('270', '265', '平定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('271', '265', '盂 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('272', '239', '长治'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('273', '272', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('274', '272', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('275', '272', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('276', '272', '长治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('277', '272', '襄垣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('278', '272', '屯留县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('279', '272', '平顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('280', '272', '黎城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('281', '272', '壶关县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('282', '272', '长子县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('283', '272', '武乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('284', '272', '沁 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('285', '272', '沁源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('286', '272', '潞城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('287', '239', '晋城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('288', '287', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('289', '287', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('290', '287', '沁水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('291', '287', '阳城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('292', '287', '陵川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('293', '287', '泽州县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('294', '287', '高平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('295', '239', '朔州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('296', '295', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('297', '295', '朔城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('298', '295', '平鲁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('299', '295', '山阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('300', '295', '应 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('301', '295', '右玉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('302', '295', '怀仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('303', '239', '晋中'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('304', '303', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('305', '303', '榆次区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('306', '303', '榆社县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('307', '303', '左权县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('308', '303', '和顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('309', '303', '昔阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('310', '303', '寿阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('311', '303', '太谷县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('312', '303', '祁 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('313', '303', '平遥县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('314', '303', '灵石县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('315', '303', '介休市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('316', '239', '运城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('317', '316', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('318', '316', '盐湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('319', '316', '临猗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('320', '316', '万荣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('321', '316', '闻喜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('322', '316', '稷山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('323', '316', '新绛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('324', '316', '绛 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('325', '316', '垣曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('326', '316', '夏 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('327', '316', '平陆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('328', '316', '芮城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('329', '316', '永济市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('330', '316', '河津市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('331', '239', '忻州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('332', '331', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('333', '331', '忻府区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('334', '331', '定襄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('335', '331', '五台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('336', '331', '代 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('337', '331', '繁峙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('338', '331', '宁武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('339', '331', '静乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('340', '331', '神池县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('341', '331', '五寨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('342', '331', '岢岚县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('343', '331', '河曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('344', '331', '保德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('345', '331', '偏关县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('346', '331', '原平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('347', '239', '临汾'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('348', '347', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('349', '347', '尧都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('350', '347', '曲沃县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('351', '347', '翼城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('352', '347', '襄汾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('353', '347', '洪洞县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('354', '347', '古 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('355', '347', '安泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('356', '347', '浮山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('357', '347', '吉 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('358', '347', '乡宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('359', '347', '大宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('360', '347', '隰 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('361', '347', '永和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('362', '347', '蒲 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('363', '347', '汾西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('364', '347', '侯马市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('365', '347', '霍州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('366', '239', '吕梁地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('367', '366', '孝义市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('368', '366', '离石市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('369', '366', '汾阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('370', '366', '文水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('371', '366', '交城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('372', '366', '兴 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('373', '366', '临 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('374', '366', '柳林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('375', '366', '石楼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('376', '366', '岚 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('377', '366', '方山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('378', '366', '中阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('379', '366', '交口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('380', '0', '内蒙古'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('381', '380', '呼和浩特'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('382', '381', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('383', '381', '新城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('384', '381', '回民区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('385', '381', '玉泉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('386', '381', '赛罕区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('387', '381', '土默特左旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('388', '381', '托克托县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('389', '381', '和林格尔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('390', '381', '清水河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('391', '381', '武川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('392', '380', '包头'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('393', '392', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('394', '392', '东河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('395', '392', '昆都伦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('396', '392', '青山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('397', '392', '石拐区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('398', '392', '白云矿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('399', '392', '九原区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('400', '392', '土默特右旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('401', '392', '固阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('403', '380', '乌海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('404', '403', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('405', '403', '海勃湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('406', '403', '海南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('407', '403', '乌达区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('408', '380', '赤峰'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('409', '408', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('410', '408', '红山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('411', '408', '元宝山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('412', '408', '松山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('413', '408', '阿鲁科尔沁旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('414', '408', '巴林左旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('415', '408', '巴林右旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('416', '408', '林西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('417', '408', '克什克腾旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('418', '408', '翁牛特旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('419', '408', '喀喇沁旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('420', '408', '宁城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('421', '408', '敖汉旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('422', '380', '通辽'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('423', '422', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('424', '422', '科尔沁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('425', '422', '科尔沁左翼中旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('426', '422', '科尔沁左翼后旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('427', '422', '开鲁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('428', '422', '库伦旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('429', '422', '奈曼旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('430', '422', '扎鲁特旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('431', '422', '霍林郭勒市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('432', '380', '呼伦贝尔盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('433', '432', '海拉尔市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('434', '432', '满洲里市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('435', '432', '扎兰屯市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('436', '432', '牙克石市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('437', '432', '根河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('438', '432', '额尔古纳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('439', '432', '阿荣旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('441', '432', '鄂伦春自治旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('442', '432', '鄂温克族自治旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('443', '432', '新巴尔虎右旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('444', '432', '新巴尔虎左旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('445', '432', '陈巴尔虎旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('446', '380', '兴安盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('447', '446', '乌兰浩特市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('448', '446', '阿尔山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('449', '446', '科尔沁右翼前旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('450', '446', '科尔沁右翼中旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('451', '446', '扎赉特旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('452', '446', '突泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('453', '380', '锡林郭勒盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('454', '453', '二连浩特市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('455', '453', '锡林浩特市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('456', '453', '阿巴嘎旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('457', '453', '苏尼特左旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('458', '453', '苏尼特右旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('459', '453', '东乌珠穆沁旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('460', '453', '西乌珠穆沁旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('461', '453', '太仆寺旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('462', '453', '镶黄旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('463', '453', '正镶白旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('464', '453', '正蓝旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('465', '453', '多伦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('466', '380', '乌兰察布盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('467', '466', '集宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('468', '466', '丰镇市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('469', '466', '卓资县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('470', '466', '化德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('471', '466', '商都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('472', '466', '兴和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('473', '466', '凉城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('474', '466', '察哈尔右翼前旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('475', '466', '察哈尔右翼中旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('476', '466', '察哈尔右翼后旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('477', '466', '四子王旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('478', '380', '伊克昭盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('479', '478', '东胜市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('480', '478', '达拉特旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('481', '478', '准格尔旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('482', '478', '鄂托克前旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('483', '478', '鄂托克旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('484', '478', '杭锦旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('485', '478', '乌审旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('486', '478', '伊金霍洛旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('487', '380', '巴彦淖尔盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('488', '487', '临河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('489', '487', '五原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('490', '487', '磴口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('491', '487', '乌拉特前旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('492', '487', '乌拉特中旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('493', '487', '乌拉特后旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('494', '487', '杭锦后旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('495', '380', '阿拉善盟'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('496', '495', '阿拉善左旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('497', '495', '阿拉善右旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('498', '495', '额济纳旗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('499', '0', '辽宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('500', '499', '沈阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('501', '500', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('502', '500', '和平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('503', '500', '沈河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('504', '500', '大东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('505', '500', '皇姑区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('506', '500', '铁西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('507', '500', '苏家屯区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('508', '500', '东陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('509', '500', '新城子区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('510', '500', '于洪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('511', '500', '辽中县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('512', '500', '康平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('513', '500', '法库县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('514', '500', '新民市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('515', '499', '大连'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('516', '515', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('517', '515', '中山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('518', '515', '西岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('519', '515', '沙河口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('520', '515', '甘井子区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('521', '515', '旅顺口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('522', '515', '金州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('523', '515', '长海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('524', '515', '瓦房店市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('525', '515', '普兰店市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('526', '515', '庄河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('527', '499', '鞍山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('528', '527', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('529', '527', '铁东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('530', '527', '铁西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('531', '527', '立山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('532', '527', '千山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('533', '527', '台安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('534', '527', '岫岩满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('535', '527', '海城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('536', '499', '抚顺'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('537', '536', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('538', '536', '新抚区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('539', '536', '东洲区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('540', '536', '望花区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('541', '536', '顺城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('542', '536', '抚顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('543', '536', '新宾满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('544', '536', '清原满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('545', '499', '本溪'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('546', '545', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('547', '545', '平山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('548', '545', '溪湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('549', '545', '明山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('550', '545', '南芬区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('551', '545', '本溪满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('552', '545', '桓仁满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('553', '499', '丹东'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('554', '553', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('555', '553', '元宝区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('556', '553', '振兴区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('557', '553', '振安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('558', '553', '宽甸满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('559', '553', '东港市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('560', '553', '凤城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('561', '499', '锦州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('562', '561', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('563', '561', '古塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('564', '561', '凌河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('565', '561', '太和区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('566', '561', '黑山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('567', '561', '义 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('568', '561', '凌海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('569', '561', '北宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('570', '499', '营口'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('571', '570', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('572', '570', '站前区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('573', '570', '西市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('574', '570', '鲅鱼圈区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('575', '570', '老边区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('576', '570', '盖州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('577', '570', '大石桥市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('578', '499', '阜新'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('579', '578', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('580', '578', '海州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('581', '578', '新邱区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('582', '578', '太平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('583', '578', '清河门区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('584', '578', '细河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('585', '578', '阜新蒙古族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('586', '578', '彰武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('587', '499', '辽阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('588', '587', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('589', '587', '白塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('590', '587', '文圣区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('591', '587', '宏伟区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('592', '587', '弓长岭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('593', '587', '太子河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('594', '587', '辽阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('595', '587', '灯塔市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('596', '499', '盘锦'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('597', '596', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('598', '596', '双台子区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('599', '596', '兴隆台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('600', '596', '大洼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('601', '596', '盘山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('602', '499', '铁岭'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('603', '602', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('604', '602', '银州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('605', '602', '清河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('606', '602', '铁岭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('607', '602', '西丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('608', '602', '昌图县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('609', '602', '铁法市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('610', '602', '开原市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('611', '499', '朝阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('612', '611', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('613', '611', '双塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('614', '611', '龙城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('615', '611', '朝阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('616', '611', '建平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('618', '611', '北票市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('619', '611', '凌源市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('620', '499', '葫芦岛'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('621', '620', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('622', '620', '连山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('623', '620', '龙港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('624', '620', '南票区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('625', '620', '绥中县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('626', '620', '建昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('627', '620', '兴城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('628', '0', '吉林'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('629', '628', '长春'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('630', '629', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('631', '629', '南关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('632', '629', '宽城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('633', '629', '朝阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('634', '629', '二道区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('635', '629', '绿园区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('636', '629', '双阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('637', '629', '农安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('638', '629', '九台市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('639', '629', '榆树市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('640', '629', '德惠市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('641', '628', '吉林'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('642', '641', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('643', '641', '昌邑区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('644', '641', '龙潭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('645', '641', '船营区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('646', '641', '丰满区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('647', '641', '永吉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('648', '641', '蛟河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('649', '641', '桦甸市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('650', '641', '舒兰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('651', '641', '磐石市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('652', '628', '四平'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('653', '652', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('654', '652', '铁西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('655', '652', '铁东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('656', '652', '梨树县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('657', '652', '伊通满族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('658', '652', '公主岭市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('659', '652', '双辽市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('660', '628', '辽源'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('661', '660', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('662', '660', '龙山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('663', '660', '西安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('664', '660', '东丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('665', '660', '东辽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('666', '628', '通化'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('667', '666', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('668', '666', '东昌区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('669', '666', '二道江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('670', '666', '通化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('671', '666', '辉南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('672', '666', '柳河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('673', '666', '梅河口市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('674', '666', '集安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('675', '628', '白山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('676', '675', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('677', '675', '八道江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('678', '675', '抚松县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('679', '675', '靖宇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('680', '675', '长白朝鲜族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('681', '675', '江源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('682', '675', '临江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('683', '628', '松原'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('684', '683', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('685', '683', '宁江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('687', '683', '长岭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('688', '683', '乾安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('689', '683', '扶余县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('690', '628', '白城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('691', '690', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('692', '690', '洮北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('693', '690', '镇赉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('694', '690', '通榆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('695', '690', '洮南市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('696', '690', '大安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('697', '628', '延边朝鲜族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('698', '697', '延吉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('699', '697', '图们市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('700', '697', '敦化市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('701', '697', '珲春市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('702', '697', '龙井市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('703', '697', '和龙市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('704', '697', '汪清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('705', '697', '安图县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('706', '0', '黑龙江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('707', '706', '哈尔滨'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('708', '707', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('709', '707', '道里区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('710', '707', '南岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('711', '707', '道外区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('712', '707', '太平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('713', '707', '香坊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('714', '707', '动力区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('715', '707', '平房区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('716', '707', '呼兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('717', '707', '依兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('718', '707', '方正县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('719', '707', '宾 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('720', '707', '巴彦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('721', '707', '木兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('722', '707', '通河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('723', '707', '延寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('724', '707', '阿城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('725', '707', '双城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('726', '707', '尚志市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('727', '707', '五常市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('728', '706', '齐齐哈尔'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('729', '728', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('730', '728', '龙沙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('731', '728', '建华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('732', '728', '铁锋区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('733', '728', '昂昂溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('734', '728', '富拉尔基区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('735', '728', '碾子山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('736', '728', '梅里斯达斡尔族区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('737', '728', '龙江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('738', '728', '依安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('739', '728', '泰来县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('740', '728', '甘南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('741', '728', '富裕县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('742', '728', '克山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('743', '728', '克东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('744', '728', '拜泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('745', '728', '讷河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('746', '706', '鸡西'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('747', '746', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('748', '746', '鸡冠区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('749', '746', '恒山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('750', '746', '滴道区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('751', '746', '梨树区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('752', '746', '城子河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('753', '746', '麻山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('754', '746', '鸡东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('755', '746', '虎林市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('756', '746', '密山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('757', '706', '鹤岗'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('758', '757', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('759', '757', '向阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('760', '757', '工农区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('761', '757', '南山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('762', '757', '兴安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('763', '757', '东山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('764', '757', '兴山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('765', '757', '萝北县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('766', '757', '绥滨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('767', '706', '双鸭山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('768', '767', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('769', '767', '尖山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('770', '767', '岭东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('771', '767', '四方台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('772', '767', '宝山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('773', '767', '集贤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('774', '767', '友谊县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('775', '767', '宝清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('776', '767', '饶河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('777', '706', '大庆'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('778', '777', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('779', '777', '萨尔图区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('780', '777', '龙凤区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('781', '777', '让胡路区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('782', '777', '红岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('783', '777', '大同区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('784', '777', '肇州县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('785', '777', '肇源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('786', '777', '林甸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('788', '706', '伊春'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('789', '788', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('790', '788', '伊春区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('791', '788', '南岔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('792', '788', '友好区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('793', '788', '西林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('794', '788', '翠峦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('795', '788', '新青区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('796', '788', '美溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('797', '788', '金山屯区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('798', '788', '五营区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('799', '788', '乌马河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('800', '788', '汤旺河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('801', '788', '带岭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('802', '788', '乌伊岭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('803', '788', '红星区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('804', '788', '上甘岭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('805', '788', '嘉荫县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('806', '788', '铁力市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('807', '706', '佳木斯'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('808', '807', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('809', '807', '永红区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('810', '807', '向阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('811', '807', '前进区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('812', '807', '东风区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('813', '807', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('814', '807', '桦南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('815', '807', '桦川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('816', '807', '汤原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('817', '807', '抚远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('818', '807', '同江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('819', '807', '富锦市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('820', '706', '七台河'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('821', '820', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('822', '820', '新兴区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('823', '820', '桃山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('824', '820', '茄子河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('825', '820', '勃利县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('826', '706', '牡丹江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('827', '826', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('828', '826', '东安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('829', '826', '阳明区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('830', '826', '爱民区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('831', '826', '西安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('832', '826', '东宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('833', '826', '林口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('834', '826', '绥芬河市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('835', '826', '海林市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('836', '826', '宁安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('837', '826', '穆棱市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('838', '706', '黑河'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('839', '838', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('840', '838', '爱辉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('841', '838', '嫩江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('842', '838', '逊克县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('843', '838', '孙吴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('844', '838', '北安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('845', '838', '五大连池市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('846', '706', '绥化'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('847', '846', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('848', '846', '北林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('849', '846', '望奎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('850', '846', '兰西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('851', '846', '青冈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('852', '846', '庆安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('853', '846', '明水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('854', '846', '绥棱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('855', '846', '安达市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('856', '846', '肇东市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('857', '846', '海伦市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('858', '706', '大兴安岭地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('859', '858', '呼玛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('860', '858', '塔河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('861', '858', '漠河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('862', '0', '上海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('863', '862', '上海市辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('864', '863', '黄浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('865', '863', '卢湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('866', '863', '徐汇区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('867', '863', '长宁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('868', '863', '静安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('869', '863', '普陀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('870', '863', '闸北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('871', '863', '虹口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('872', '863', '杨浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('873', '863', '闵行区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('874', '863', '宝山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('875', '863', '嘉定区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('876', '863', '浦东新区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('877', '863', '金山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('878', '863', '松江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('879', '863', '青浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('880', '862', '上海县辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('881', '880', '南汇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('882', '880', '奉贤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('883', '880', '崇明县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('884', '0', '江苏'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('885', '884', '南京'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('886', '885', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('887', '885', '玄武区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('888', '885', '白下区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('889', '885', '秦淮区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('890', '885', '建邺区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('891', '885', '鼓楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('892', '885', '下关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('893', '885', '浦口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('894', '885', '大厂区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('895', '885', '栖霞区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('896', '885', '雨花台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('897', '885', '江宁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('898', '885', '江浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('899', '885', '六合县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('900', '885', '溧水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('901', '885', '高淳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('902', '884', '无锡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('903', '902', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('904', '902', '崇安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('905', '902', '南长区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('906', '902', '北塘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('907', '902', '锡山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('908', '902', '惠山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('909', '902', '滨湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('910', '902', '江阴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('911', '902', '宜兴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('912', '884', '徐州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('913', '912', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('914', '912', '鼓楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('915', '912', '云龙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('916', '912', '九里区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('917', '912', '贾汪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('918', '912', '泉山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('919', '912', '丰 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('920', '912', '沛 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('921', '912', '铜山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('922', '912', '睢宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('923', '912', '新沂市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('924', '912', '邳州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('925', '884', '常州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('926', '925', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('927', '925', '天宁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('928', '925', '钟楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('929', '925', '戚墅堰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('930', '925', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('931', '925', '溧阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('932', '925', '金坛市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('933', '925', '武进市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('934', '884', '苏州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('935', '934', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('936', '934', '沧浪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('937', '934', '平江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('938', '934', '金阊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('939', '934', '虎丘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('940', '934', '吴中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('941', '934', '相城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('942', '934', '常熟市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('943', '934', '张家港市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('944', '934', '昆山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('945', '934', '吴江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('946', '934', '太仓市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('947', '884', '南通'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('948', '947', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('949', '947', '崇川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('950', '947', '港闸区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('951', '947', '海安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('952', '947', '如东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('953', '947', '启东市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('954', '947', '如皋市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('955', '947', '通州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('956', '947', '海门市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('957', '884', '连云港'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('958', '957', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('959', '957', '连云区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('960', '957', '云台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('961', '957', '新浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('962', '957', '海州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('963', '957', '赣榆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('964', '957', '东海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('965', '957', '灌云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('966', '957', '灌南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('967', '884', '淮安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('968', '967', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('969', '967', '清河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('970', '967', '楚州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('971', '967', '淮阴区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('972', '967', '清浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('973', '967', '涟水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('974', '967', '洪泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('975', '967', '盱眙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('976', '967', '金湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('977', '884', '盐城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('978', '977', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('979', '977', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('980', '977', '响水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('981', '977', '滨海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('982', '977', '阜宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('983', '977', '射阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('984', '977', '建湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('985', '977', '盐都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('986', '977', '东台市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('987', '977', '大丰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('988', '884', '扬州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('989', '988', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('990', '988', '广陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('991', '988', '邗江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('992', '988', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('993', '988', '宝应县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('994', '988', '仪征市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('995', '988', '高邮市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('996', '988', '江都市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('997', '884', '镇江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('998', '997', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('999', '997', '京口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1000', '997', '润州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1001', '997', '丹徒县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1002', '997', '丹阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1003', '997', '扬中市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1004', '997', '句容市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1005', '884', '泰州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1006', '1005', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1007', '1005', '海陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1008', '1005', '高港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1009', '1005', '兴化市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1010', '1005', '靖江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1011', '1005', '泰兴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1012', '1005', '姜堰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1013', '884', '宿迁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1014', '1013', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1015', '1013', '宿城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1016', '1013', '宿豫县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1017', '1013', '沭阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1018', '1013', '泗阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1019', '1013', '泗洪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1020', '0', '浙江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1021', '1020', '杭州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1022', '1021', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1023', '1021', '上城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1024', '1021', '下城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1025', '1021', '江干区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1026', '1021', '拱墅区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1027', '1021', '西湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1028', '1021', '滨江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1029', '1021', '桐庐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1030', '1021', '淳安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1031', '1021', '萧山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1032', '1021', '建德市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1033', '1021', '富阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1034', '1021', '余杭市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1035', '1021', '临安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1036', '1020', '宁波'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1037', '1036', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1038', '1036', '海曙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1039', '1036', '江东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1040', '1036', '江北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1041', '1036', '北仑区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1042', '1036', '镇海区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1043', '1036', '象山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1044', '1036', '宁海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1045', '1036', '鄞 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1046', '1036', '余姚市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1047', '1036', '慈溪市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1048', '1036', '奉化市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1049', '1020', '温州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1050', '1049', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1051', '1049', '鹿城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1052', '1049', '龙湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1053', '1049', '瓯海区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1054', '1049', '洞头县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1055', '1049', '永嘉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1056', '1049', '平阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1057', '1049', '苍南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1058', '1049', '文成县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1059', '1049', '泰顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1060', '1049', '瑞安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1061', '1049', '乐清市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1062', '1020', '嘉兴'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1063', '1062', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1064', '1062', '秀城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1065', '1062', '秀洲区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1066', '1062', '嘉善县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1067', '1062', '海盐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1068', '1062', '海宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1069', '1062', '平湖市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1070', '1062', '桐乡市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1071', '1020', '湖州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1072', '1071', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1073', '1071', '德清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1074', '1071', '长兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1075', '1071', '安吉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1076', '1020', '绍兴'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1077', '1076', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1078', '1076', '越城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1079', '1076', '绍兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1080', '1076', '新昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1081', '1076', '诸暨市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1082', '1076', '上虞市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1083', '1076', '嵊州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1084', '1020', '金华'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1085', '1084', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1086', '1084', '婺城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1087', '1084', '金东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1088', '1084', '武义县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1089', '1084', '浦江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1090', '1084', '磐安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1091', '1084', '兰溪市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1092', '1084', '义乌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1093', '1084', '东阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1094', '1084', '永康市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1095', '1020', '衢州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1096', '1095', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1097', '1095', '柯城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1098', '1095', '衢 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1099', '1095', '常山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1100', '1095', '开化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1101', '1095', '龙游县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1102', '1095', '江山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1103', '1020', '舟山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1104', '1103', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1105', '1103', '定海区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1106', '1103', '普陀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1107', '1103', '岱山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1108', '1103', '嵊泗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1109', '1020', '台州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1110', '1109', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1111', '1109', '椒江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1112', '1109', '黄岩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1113', '1109', '路桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1114', '1109', '玉环县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1115', '1109', '三门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1116', '1109', '天台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1117', '1109', '仙居县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1118', '1109', '温岭市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1119', '1109', '临海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1120', '1020', '丽水'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1121', '1120', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1122', '1120', '莲都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1123', '1120', '青田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1124', '1120', '缙云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1125', '1120', '遂昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1126', '1120', '松阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1127', '1120', '云和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1128', '1120', '庆元县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1129', '1120', '景宁畲族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1130', '1120', '龙泉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1131', '0', '安徽'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1132', '1131', '合肥'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1133', '1132', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1134', '1132', '东市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1135', '1132', '中市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1136', '1132', '西市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1137', '1132', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1138', '1132', '长丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1139', '1132', '肥东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1140', '1132', '肥西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1141', '1131', '芜湖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1142', '1141', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1143', '1141', '镜湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1144', '1141', '马塘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1145', '1141', '新芜区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1146', '1141', '鸠江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1147', '1141', '芜湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1148', '1141', '繁昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1149', '1141', '南陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1150', '1131', '蚌埠'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1151', '1150', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1152', '1150', '东市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1153', '1150', '中市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1154', '1150', '西市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1155', '1150', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1156', '1150', '怀远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1157', '1150', '五河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1158', '1150', '固镇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1159', '1131', '淮南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1160', '1159', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1161', '1159', '大通区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1162', '1159', '田家庵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1163', '1159', '谢家集区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1164', '1159', '八公山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1165', '1159', '潘集区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1166', '1159', '凤台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1167', '1131', '马鞍山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1168', '1167', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1169', '1167', '金家庄区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1170', '1167', '花山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1171', '1167', '雨山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1172', '1167', '向山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1173', '1167', '当涂县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1174', '1131', '淮北'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1175', '1174', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1176', '1174', '杜集区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1177', '1174', '相山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1178', '1174', '烈山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1179', '1174', '濉溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1180', '1131', '铜陵'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1181', '1180', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1182', '1180', '铜官山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1183', '1180', '狮子山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1184', '1180', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1185', '1180', '铜陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1186', '1131', '安庆'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1187', '1186', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1188', '1186', '迎江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1189', '1186', '大观区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1190', '1186', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1191', '1186', '怀宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1192', '1186', '枞阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1193', '1186', '潜山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1194', '1186', '太湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1195', '1186', '宿松县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1196', '1186', '望江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1197', '1186', '岳西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1198', '1186', '桐城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1199', '1131', '黄山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1200', '1199', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1201', '1199', '屯溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1202', '1199', '黄山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1203', '1199', '徽州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1204', '1199', '歙 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1205', '1199', '休宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1206', '1199', '黟 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1207', '1199', '祁门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1208', '1131', '滁州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1209', '1208', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1210', '1208', '琅琊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1211', '1208', '南谯区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1212', '1208', '来安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1213', '1208', '全椒县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1214', '1208', '定远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1215', '1208', '凤阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1216', '1208', '天长市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1217', '1208', '明光市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1218', '1131', '阜阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1219', '1218', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1220', '1218', '颍州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1221', '1218', '颍东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1222', '1218', '颍泉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1223', '1218', '临泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1224', '1218', '太和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1225', '1218', '阜南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1226', '1218', '颍上县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1227', '1218', '界首市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1228', '1131', '宿州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1229', '1228', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1230', '1228', '墉桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1231', '1228', '砀山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1232', '1228', '萧 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1233', '1228', '灵璧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1234', '1228', '泗 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1235', '1131', '巢湖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1236', '1235', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1237', '1235', '居巢区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1238', '1235', '庐江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1239', '1235', '无为县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1240', '1235', '含山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1241', '1235', '和 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1242', '1131', '六安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1243', '1242', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1244', '1242', '金安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1245', '1242', '裕安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1246', '1242', '寿 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1247', '1242', '霍邱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1248', '1242', '舒城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1249', '1242', '金寨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1250', '1242', '霍山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1251', '1131', '亳州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1252', '1251', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1253', '1251', '谯城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1254', '1251', '涡阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1255', '1251', '蒙城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1256', '1251', '利辛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1257', '1131', '池州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1258', '1257', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1259', '1257', '贵池区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1260', '1257', '东至县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1261', '1257', '石台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1262', '1257', '青阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1263', '1131', '宣城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1264', '1263', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1265', '1263', '宣州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1266', '1263', '郎溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1267', '1263', '广德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1268', '1263', '泾 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1269', '1263', '绩溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1270', '1263', '旌德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1271', '1263', '宁国市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1272', '0', '福建'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1273', '1272', '福州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1274', '1273', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1275', '1273', '鼓楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1276', '1273', '台江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1277', '1273', '仓山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1278', '1273', '马尾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1279', '1273', '晋安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1280', '1273', '闽侯县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1281', '1273', '连江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1282', '1273', '罗源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1283', '1273', '闽清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1284', '1273', '永泰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1285', '1273', '平潭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1286', '1273', '福清市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1287', '1273', '长乐市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1288', '1272', '厦门'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1289', '1288', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1290', '1288', '鼓浪屿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1291', '1288', '思明区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1292', '1288', '开元区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1293', '1288', '杏林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1294', '1288', '湖里区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1295', '1288', '集美区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1296', '1288', '同安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1297', '1272', '莆田'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1298', '1297', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1299', '1297', '城厢区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1300', '1297', '涵江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1301', '1297', '莆田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1302', '1297', '仙游县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1303', '1272', '三明'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1304', '1303', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1305', '1303', '梅列区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1306', '1303', '三元区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1307', '1303', '明溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1308', '1303', '清流县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1309', '1303', '宁化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1310', '1303', '大田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1311', '1303', '尤溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1312', '1303', '沙 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1313', '1303', '将乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1314', '1303', '泰宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1315', '1303', '建宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1316', '1303', '永安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1317', '1272', '泉州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1318', '1317', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1319', '1317', '鲤城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1320', '1317', '丰泽区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1321', '1317', '洛江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1322', '1317', '泉港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1323', '1317', '惠安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1324', '1317', '安溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1325', '1317', '永春县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1326', '1317', '德化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1327', '1317', '金门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1328', '1317', '石狮市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1329', '1317', '晋江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1330', '1317', '南安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1331', '1272', '漳州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1332', '1331', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1333', '1331', '芗城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1334', '1331', '龙文区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1335', '1331', '云霄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1336', '1331', '漳浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1337', '1331', '诏安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1338', '1331', '长泰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1339', '1331', '东山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1340', '1331', '南靖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1341', '1331', '平和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1342', '1331', '华安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1343', '1331', '龙海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1344', '1272', '南平'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1345', '1344', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1346', '1344', '延平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1347', '1344', '顺昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1348', '1344', '浦城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1349', '1344', '光泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1350', '1344', '松溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1351', '1344', '政和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1352', '1344', '邵武市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1353', '1344', '武夷山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1354', '1344', '建瓯市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1355', '1344', '建阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1356', '1272', '龙岩'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1357', '1356', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1358', '1356', '新罗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1359', '1356', '长汀县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1360', '1356', '永定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1361', '1356', '上杭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1362', '1356', '武平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1363', '1356', '连城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1364', '1356', '漳平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1365', '1272', '宁德'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1366', '1365', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1367', '1365', '蕉城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1368', '1365', '霞浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1369', '1365', '古田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1370', '1365', '屏南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1371', '1365', '寿宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1372', '1365', '周宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1373', '1365', '柘荣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1374', '1365', '福安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1375', '1365', '福鼎市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1376', '0', '江西'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1377', '1376', '南昌'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1378', '1377', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1379', '1377', '东湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1380', '1377', '西湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1381', '1377', '青云谱区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1382', '1377', '湾里区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1383', '1377', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1384', '1377', '南昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1385', '1377', '新建县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1386', '1377', '安义县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1387', '1377', '进贤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1388', '1376', '景德镇'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1389', '1388', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1390', '1388', '昌江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1391', '1388', '珠山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1392', '1388', '浮梁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1393', '1388', '乐平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1394', '1376', '萍乡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1395', '1394', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1396', '1394', '安源区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1397', '1394', '湘东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1398', '1394', '莲花县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1399', '1394', '上栗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1400', '1394', '芦溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1401', '1376', '九江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1402', '1401', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1403', '1401', '庐山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1404', '1401', '浔阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1405', '1401', '九江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1406', '1401', '武宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1407', '1401', '修水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1408', '1401', '永修县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1409', '1401', '德安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1410', '1401', '星子县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1411', '1401', '都昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1412', '1401', '湖口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1413', '1401', '彭泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1414', '1401', '瑞昌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1415', '1376', '新余'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1416', '1415', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1417', '1415', '渝水区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1418', '1415', '分宜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1419', '1376', '鹰潭'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1420', '1419', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1421', '1419', '月湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1422', '1419', '余江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1423', '1419', '贵溪市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1424', '1376', '赣州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1425', '1424', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1426', '1424', '章贡区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1427', '1424', '赣 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1428', '1424', '信丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1429', '1424', '大余县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1430', '1424', '上犹县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1431', '1424', '崇义县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1432', '1424', '安远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1433', '1424', '龙南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1434', '1424', '定南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1435', '1424', '全南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1436', '1424', '宁都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1437', '1424', '于都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1438', '1424', '兴国县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1439', '1424', '会昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1440', '1424', '寻乌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1441', '1424', '石城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1442', '1424', '瑞金市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1443', '1424', '南康市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1444', '1376', '吉安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1445', '1444', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1446', '1444', '吉州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1447', '1444', '青原区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1448', '1444', '吉安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1449', '1444', '吉水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1450', '1444', '峡江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1451', '1444', '新干县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1452', '1444', '永丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1453', '1444', '泰和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1454', '1444', '遂川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1455', '1444', '万安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1456', '1444', '安福县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1457', '1444', '永新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1458', '1444', '井冈山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1459', '1376', '宜春'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1460', '1459', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1461', '1459', '袁州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1462', '1459', '奉新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1463', '1459', '万载县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1464', '1459', '上高县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1465', '1459', '宜丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1466', '1459', '靖安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1467', '1459', '铜鼓县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1468', '1459', '丰城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1469', '1459', '樟树市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1470', '1459', '高安市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1471', '1376', '抚州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1472', '1471', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1473', '1471', '临川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1474', '1471', '南城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1475', '1471', '黎川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1476', '1471', '南丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1477', '1471', '崇仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1478', '1471', '乐安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1479', '1471', '宜黄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1480', '1471', '金溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1481', '1471', '资溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1482', '1471', '东乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1483', '1471', '广昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1484', '1376', '上饶'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1485', '1484', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1486', '1484', '信州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1487', '1484', '上饶县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1488', '1484', '广丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1489', '1484', '玉山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1490', '1484', '铅山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1491', '1484', '横峰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1492', '1484', '弋阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1493', '1484', '余干县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1494', '1484', '波阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1495', '1484', '万年县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1496', '1484', '婺源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1497', '1484', '德兴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1498', '0', '山东'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1499', '1498', '济南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1500', '1499', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1501', '1499', '历下区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1502', '1499', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1503', '1499', '槐荫区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1504', '1499', '天桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1505', '1499', '历城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1506', '1499', '长清县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1507', '1499', '平阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1508', '1499', '济阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1509', '1499', '商河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1510', '1499', '章丘市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1511', '1498', '青岛'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1512', '1511', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1513', '1511', '市南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1514', '1511', '市北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1515', '1511', '四方区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1516', '1511', '黄岛区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1517', '1511', '崂山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1518', '1511', '李沧区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1519', '1511', '城阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1520', '1511', '胶州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1521', '1511', '即墨市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1522', '1511', '平度市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1523', '1511', '胶南市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1524', '1511', '莱西市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1525', '1498', '淄博'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1526', '1525', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1527', '1525', '淄川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1528', '1525', '张店区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1529', '1525', '博山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1530', '1525', '临淄区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1531', '1525', '周村区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1532', '1525', '桓台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1533', '1525', '高青县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1534', '1525', '沂源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1535', '1498', '枣庄'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1536', '1535', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1537', '1535', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1538', '1535', '薛城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1539', '1535', '峄城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1540', '1535', '台儿庄区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1541', '1535', '山亭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1542', '1535', '滕州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1543', '1498', '东营'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1544', '1543', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1545', '1543', '东营区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1546', '1543', '河口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1547', '1543', '垦利县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1548', '1543', '利津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1549', '1543', '广饶县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1550', '1498', '烟台'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1551', '1550', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1552', '1550', '芝罘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1553', '1550', '福山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1554', '1550', '牟平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1555', '1550', '莱山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1556', '1550', '长岛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1557', '1550', '龙口市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1558', '1550', '莱阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1559', '1550', '莱州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1560', '1550', '蓬莱市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1561', '1550', '招远市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1562', '1550', '栖霞市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1563', '1550', '海阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1564', '1498', '潍坊'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1565', '1564', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1566', '1564', '潍城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1567', '1564', '寒亭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1568', '1564', '坊子区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1569', '1564', '奎文区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1570', '1564', '临朐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1571', '1564', '昌乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1572', '1564', '青州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1573', '1564', '诸城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1574', '1564', '寿光市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1575', '1564', '安丘市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1576', '1564', '高密市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1577', '1564', '昌邑市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1578', '1498', '济宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1579', '1578', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1580', '1578', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1581', '1578', '任城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1582', '1578', '微山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1583', '1578', '鱼台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1584', '1578', '金乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1585', '1578', '嘉祥县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1586', '1578', '汶上县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1587', '1578', '泗水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1588', '1578', '梁山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1589', '1578', '曲阜市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1590', '1578', '兖州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1591', '1578', '邹城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1592', '1498', '泰安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1593', '1592', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1594', '1592', '泰山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1595', '1592', '岱岳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1596', '1592', '宁阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1597', '1592', '东平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1598', '1592', '新泰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1599', '1592', '肥城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1600', '1498', '威海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1601', '1600', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1602', '1600', '环翠区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1603', '1600', '文登市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1604', '1600', '荣成市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1605', '1600', '乳山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1606', '1498', '日照'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1607', '1606', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1608', '1606', '东港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1609', '1606', '五莲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1610', '1606', '莒 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1611', '1498', '莱芜'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1612', '1611', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1613', '1611', '莱城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1614', '1611', '钢城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1615', '1498', '临沂'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1616', '1615', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1617', '1615', '兰山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1618', '1615', '罗庄区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1619', '1615', '河东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1620', '1615', '沂南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1621', '1615', '郯城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1622', '1615', '沂水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1623', '1615', '苍山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1624', '1615', '费 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1625', '1615', '平邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1626', '1615', '莒南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1627', '1615', '蒙阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1628', '1615', '临沭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1629', '1498', '德州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1630', '1629', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1631', '1629', '德城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1632', '1629', '陵 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1633', '1629', '宁津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1634', '1629', '庆云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1635', '1629', '临邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1636', '1629', '齐河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1637', '1629', '平原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1638', '1629', '夏津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1639', '1629', '武城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1640', '1629', '乐陵市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1641', '1629', '禹城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1642', '1498', '聊城'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1643', '1642', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1644', '1642', '东昌府区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1645', '1642', '阳谷县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1646', '1642', '莘 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1647', '1642', '茌平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1648', '1642', '东阿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1649', '1642', '冠 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1650', '1642', '高唐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1651', '1642', '临清市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1652', '1498', '滨州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1653', '1652', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1654', '1652', '滨城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1655', '1652', '惠民县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1656', '1652', '阳信县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1657', '1652', '无棣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1658', '1652', '沾化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1659', '1652', '博兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1660', '1652', '邹平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1661', '1498', '菏泽'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1662', '1661', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1663', '1661', '牡丹区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1664', '1661', '曹 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1665', '1661', '单 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1666', '1661', '成武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1667', '1661', '巨野县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1668', '1661', '郓城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1669', '1661', '鄄城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1670', '1661', '定陶县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1671', '1661', '东明县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1672', '0', '河南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1673', '1672', '郑州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1674', '1673', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1675', '1673', '中原区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1676', '1673', '二七区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1677', '1673', '管城回族区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1678', '1673', '金水区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1679', '1673', '上街区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1680', '1673', '邙山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1681', '1673', '中牟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1682', '1673', '巩义市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1683', '1673', '荥阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1684', '1673', '新密市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1685', '1673', '新郑市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1686', '1673', '登封市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1687', '1672', '开封'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1688', '1687', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1689', '1687', '龙亭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1690', '1687', '顺河回族区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1691', '1687', '鼓楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1692', '1687', '南关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1693', '1687', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1694', '1687', '杞 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1695', '1687', '通许县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1696', '1687', '尉氏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1697', '1687', '开封县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1698', '1687', '兰考县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1699', '1672', '洛阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1700', '1699', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1701', '1699', '老城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1702', '1699', '西工区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1703', '1699', '廛河回族区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1704', '1699', '涧西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1705', '1699', '吉利区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1706', '1699', '洛龙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1707', '1699', '孟津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1708', '1699', '新安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1709', '1699', '栾川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1710', '1699', '嵩 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1711', '1699', '汝阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1712', '1699', '宜阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1713', '1699', '洛宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1714', '1699', '伊川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1715', '1699', '偃师市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1716', '1672', '平顶山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1717', '1716', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1718', '1716', '新华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1719', '1716', '卫东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1720', '1716', '石龙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1721', '1716', '湛河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1722', '1716', '宝丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1723', '1716', '叶 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1724', '1716', '鲁山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1725', '1716', '郏 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1726', '1716', '舞钢市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1727', '1716', '汝州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1728', '1672', '安阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1729', '1728', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1730', '1728', '文峰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1731', '1728', '北关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1732', '1728', '铁西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1733', '1728', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1734', '1728', '安阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1735', '1728', '汤阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1736', '1728', '滑 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1737', '1728', '内黄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1738', '1728', '林州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1739', '1672', '鹤壁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1740', '1739', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1741', '1739', '鹤山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1742', '1739', '山城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1743', '1739', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1744', '1739', '浚 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1745', '1739', '淇 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1746', '1672', '新乡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1747', '1746', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1748', '1746', '红旗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1749', '1746', '新华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1750', '1746', '北站区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1751', '1746', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1752', '1746', '新乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1753', '1746', '获嘉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1754', '1746', '原阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1755', '1746', '延津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1756', '1746', '封丘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1757', '1746', '长垣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1758', '1746', '卫辉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1759', '1746', '辉县市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1760', '1672', '焦作'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1761', '1760', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1762', '1760', '解放区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1763', '1760', '中站区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1764', '1760', '马村区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1765', '1760', '山阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1766', '1760', '修武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1767', '1760', '博爱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1768', '1760', '武陟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1769', '1760', '温 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1770', '1760', '济源市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1771', '1760', '沁阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1772', '1760', '孟州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1773', '1672', '濮阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1774', '1773', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1775', '1773', '市 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1776', '1773', '清丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1777', '1773', '南乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1778', '1773', '范 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1779', '1773', '台前县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1780', '1773', '濮阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1781', '1672', '许昌'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1782', '1781', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1783', '1781', '魏都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1784', '1781', '许昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1785', '1781', '鄢陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1786', '1781', '襄城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1787', '1781', '禹州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1788', '1781', '长葛市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1789', '1672', '漯河'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1790', '1789', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1791', '1789', '源汇区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1792', '1789', '舞阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1793', '1789', '临颍县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1794', '1789', '郾城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1795', '1672', '三门峡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1796', '1795', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1797', '1795', '湖滨区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1798', '1795', '渑池县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1799', '1795', '陕 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1800', '1795', '卢氏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1801', '1795', '义马市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1802', '1795', '灵宝市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1803', '1672', '南阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1804', '1803', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1805', '1803', '宛城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1806', '1803', '卧龙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1807', '1803', '南召县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1808', '1803', '方城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1809', '1803', '西峡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1810', '1803', '镇平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1811', '1803', '内乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1812', '1803', '淅川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1813', '1803', '社旗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1814', '1803', '唐河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1815', '1803', '新野县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1816', '1803', '桐柏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1817', '1803', '邓州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1818', '1672', '商丘'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1819', '1818', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1820', '1818', '梁园区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1821', '1818', '睢阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1822', '1818', '民权县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1823', '1818', '睢 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1824', '1818', '宁陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1825', '1818', '柘城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1826', '1818', '虞城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1827', '1818', '夏邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1828', '1818', '永城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1829', '1672', '信阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1830', '1829', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1831', '1829', '师河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1832', '1829', '平桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1833', '1829', '罗山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1834', '1829', '光山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1835', '1829', '新 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1836', '1829', '商城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1837', '1829', '固始县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1838', '1829', '潢川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1839', '1829', '淮滨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1840', '1829', '息 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1841', '1672', '周口'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1842', '1841', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1843', '1841', '川汇区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1844', '1841', '扶沟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1845', '1841', '西华县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1846', '1841', '商水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1847', '1841', '沈丘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1848', '1841', '郸城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1849', '1841', '淮阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1850', '1841', '太康县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1851', '1841', '鹿邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1852', '1841', '项城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1853', '1672', '驻马店'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1854', '1853', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1855', '1853', '驿城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1856', '1853', '西平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1857', '1853', '上蔡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1858', '1853', '平舆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1859', '1853', '正阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1860', '1853', '确山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1861', '1853', '泌阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1862', '1853', '汝南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1863', '1853', '遂平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1864', '1853', '新蔡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1865', '0', '湖北'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1866', '1865', '武汉'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1867', '1866', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1868', '1866', '江岸区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1869', '1866', '江汉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1870', '1866', '乔口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1871', '1866', '汉阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1872', '1866', '武昌区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1873', '1866', '青山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1874', '1866', '洪山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1875', '1866', '东西湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1876', '1866', '汉南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1877', '1866', '蔡甸区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1878', '1866', '江夏区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1879', '1866', '黄陂区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1880', '1866', '新洲区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1881', '1865', '黄石'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1882', '1881', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1883', '1881', '黄石港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1884', '1881', '石灰窑区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1885', '1881', '下陆区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1886', '1881', '铁山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1887', '1881', '阳新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1888', '1881', '大冶市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1889', '1865', '十堰'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1890', '1889', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1891', '1889', '茅箭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1892', '1889', '张湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1893', '1889', '郧 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1894', '1889', '郧西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1895', '1889', '竹山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1896', '1889', '竹溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1897', '1889', '房 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1898', '1889', '丹江口市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1899', '1865', '宜昌'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1900', '1899', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1901', '1899', '西陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1902', '1899', '伍家岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1903', '1899', '点军区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1904', '1899', '虎亭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1905', '1899', '宜昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1906', '1899', '远安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1907', '1899', '兴山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1908', '1899', '秭归县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1909', '1899', '长阳土家族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1910', '1899', '五峰土家族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1911', '1899', '宜都市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1912', '1899', '当阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1913', '1899', '枝江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1914', '1865', '襄樊'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1915', '1914', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1916', '1914', '襄城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1917', '1914', '樊城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1918', '1914', '襄阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1919', '1914', '南漳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1920', '1914', '谷城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1921', '1914', '保康县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1922', '1914', '老河口市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1923', '1914', '枣阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1924', '1914', '宜城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1925', '1865', '鄂州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1926', '1925', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1927', '1925', '梁子湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1928', '1925', '华容区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1929', '1925', '鄂城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1930', '1865', '荆门'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1931', '1930', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1932', '1930', '东宝区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1933', '1930', '京山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1934', '1930', '沙洋县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1935', '1930', '钟祥市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1936', '1865', '孝感'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1937', '1936', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1938', '1936', '孝南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1939', '1936', '孝昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1940', '1936', '大悟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1941', '1936', '云梦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1942', '1936', '应城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1943', '1936', '安陆市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1944', '1936', '汉川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1945', '1865', '荆州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1946', '1945', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1947', '1945', '沙市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1948', '1945', '荆州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1949', '1945', '公安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1950', '1945', '监利县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1951', '1945', '江陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1952', '1945', '石首市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1953', '1945', '洪湖市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1954', '1945', '松滋市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1955', '1865', '黄冈'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1956', '1955', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1957', '1955', '黄州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1958', '1955', '团风县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1959', '1955', '红安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1960', '1955', '罗田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1961', '1955', '英山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1962', '1955', '浠水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1963', '1955', '蕲春县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1964', '1955', '黄梅县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1965', '1955', '麻城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1966', '1955', '武穴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1967', '1865', '咸宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1968', '1967', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1969', '1967', '咸安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1970', '1967', '嘉鱼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1971', '1967', '通城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1972', '1967', '崇阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1973', '1967', '通山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1974', '1967', '赤壁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1975', '1865', '随州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1976', '1975', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1977', '1975', '曾都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1978', '1975', '广水市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1980', '1979', '恩施市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1981', '1979', '利川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1982', '1979', '建始县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1983', '1979', '巴东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1984', '1979', '宣恩县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1985', '1979', '咸丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1986', '1979', '来凤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1987', '1979', '鹤峰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1988', '1865', '省直辖行政单位'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1989', '1988', '仙桃市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1990', '1988', '潜江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1991', '1988', '天门市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1992', '1988', '神农架林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1993', '0', '湖南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1994', '1993', '长沙'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1995', '1994', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1996', '1994', '芙蓉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1997', '1994', '天心区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1998', '1994', '岳麓区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('1999', '1994', '开福区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2000', '1994', '雨花区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2001', '1994', '长沙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2002', '1994', '望城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2003', '1994', '宁乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2004', '1994', '浏阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2005', '1993', '株洲'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2006', '2005', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2007', '2005', '荷塘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2008', '2005', '芦淞区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2009', '2005', '石峰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2010', '2005', '天元区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2011', '2005', '株洲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2012', '2005', '攸 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2013', '2005', '茶陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2014', '2005', '炎陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2015', '2005', '醴陵市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2016', '1993', '湘潭'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2017', '2016', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2018', '2016', '雨湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2019', '2016', '岳塘区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2020', '2016', '湘潭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2021', '2016', '湘乡市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2022', '2016', '韶山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2023', '1993', '衡阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2024', '2023', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2025', '2023', '江东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2026', '2023', '城南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2027', '2023', '城北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2028', '2023', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2029', '2023', '南岳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2030', '2023', '衡阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2031', '2023', '衡南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2032', '2023', '衡山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2033', '2023', '衡东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2034', '2023', '祁东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2035', '2023', '耒阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2036', '2023', '常宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2037', '1993', '邵阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2038', '2037', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2039', '2037', '双清区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2040', '2037', '大祥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2041', '2037', '北塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2042', '2037', '邵东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2043', '2037', '新邵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2044', '2037', '邵阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2045', '2037', '隆回县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2046', '2037', '洞口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2047', '2037', '绥宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2048', '2037', '新宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2049', '2037', '城步苗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2050', '2037', '武冈市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2051', '1993', '岳阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2052', '2051', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2053', '2051', '岳阳楼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2054', '2051', '云溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2055', '2051', '君山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2056', '2051', '岳阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2057', '2051', '华容县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2058', '2051', '湘阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2059', '2051', '平江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2060', '2051', '汨罗市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2061', '2051', '临湘市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2062', '1993', '常德'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2063', '2062', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2064', '2062', '武陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2065', '2062', '鼎城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2066', '2062', '安乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2067', '2062', '汉寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2068', '2062', '澧 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2069', '2062', '临澧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2070', '2062', '桃源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2071', '2062', '石门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2072', '2062', '津市市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2073', '1993', '张家界'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2074', '2073', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2075', '2073', '永定区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2076', '2073', '武陵源区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2077', '2073', '慈利县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2078', '2073', '桑植县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2079', '1993', '益阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2080', '2079', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2081', '2079', '资阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2082', '2079', '赫山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2083', '2079', '南 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2084', '2079', '桃江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2085', '2079', '安化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2086', '2079', '沅江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2087', '1993', '郴州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2088', '2087', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2089', '2087', '北湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2090', '2087', '苏仙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2091', '2087', '桂阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2092', '2087', '宜章县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2093', '2087', '永兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2094', '2087', '嘉禾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2095', '2087', '临武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2096', '2087', '汝城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2097', '2087', '桂东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2098', '2087', '安仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2099', '2087', '资兴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2100', '1993', '永州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2101', '2100', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2102', '2100', '芝山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2103', '2100', '冷水滩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2104', '2100', '祁阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2105', '2100', '东安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2106', '2100', '双牌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2107', '2100', '道 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2108', '2100', '江永县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2109', '2100', '宁远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2110', '2100', '蓝山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2111', '2100', '新田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2112', '2100', '江华瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2113', '1993', '怀化'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2114', '2113', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2115', '2113', '鹤城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2116', '2113', '中方县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2117', '2113', '沅陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2118', '2113', '辰溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2119', '2113', '溆浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2120', '2113', '会同县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2121', '2113', '麻阳苗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2122', '2113', '新晃侗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2123', '2113', '芷江侗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2125', '2113', '通道侗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2126', '2113', '洪江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2127', '1993', '娄底'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2128', '2127', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2129', '2127', '娄星区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2130', '2127', '双峰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2131', '2127', '新化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2132', '2127', '冷水江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2133', '2127', '涟源市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2135', '2134', '吉首市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2136', '2134', '泸溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2137', '2134', '凤凰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2138', '2134', '花垣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2139', '2134', '保靖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2140', '2134', '古丈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2141', '2134', '永顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2142', '2134', '龙山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2143', '0', '广东'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2144', '2143', '广州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2145', '2144', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2146', '2144', '东山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2147', '2144', '荔湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2148', '2144', '越秀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2149', '2144', '海珠区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2150', '2144', '天河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2151', '2144', '芳村区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2152', '2144', '白云区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2153', '2144', '黄埔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2154', '2144', '番禺区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2155', '2144', '花都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2156', '2144', '增城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2157', '2144', '从化市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2158', '2143', '韶关'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2159', '2158', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2160', '2158', '北江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2161', '2158', '武江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2162', '2158', '浈江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2163', '2158', '曲江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2164', '2158', '始兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2165', '2158', '仁化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2166', '2158', '翁源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2167', '2158', '乳源瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2168', '2158', '新丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2169', '2158', '乐昌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2170', '2158', '南雄市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2171', '2143', '深圳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2172', '2171', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2173', '2171', '罗湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2174', '2171', '福田区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2175', '2171', '南山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2176', '2171', '宝安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2177', '2171', '龙岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2178', '2171', '盐田区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2179', '2143', '珠海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2180', '2179', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2181', '2179', '香洲区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2182', '2179', '斗门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2183', '2143', '汕头'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2184', '2183', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2185', '2183', '达濠区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2186', '2183', '龙湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2187', '2183', '金园区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2188', '2183', '升平区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2189', '2183', '河浦区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2190', '2183', '南澳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2191', '2183', '潮阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2192', '2183', '澄海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2193', '2143', '佛山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2194', '2193', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2195', '2193', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2196', '2193', '石湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2197', '2193', '顺德市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2198', '2193', '南海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2199', '2193', '三水市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2200', '2193', '高明市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2201', '2143', '江门'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2202', '2201', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2203', '2201', '蓬江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2204', '2201', '江海区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2205', '2201', '台山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2206', '2201', '新会市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2207', '2201', '开平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2208', '2201', '鹤山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2209', '2201', '恩平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2210', '2143', '湛江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2211', '2210', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2212', '2210', '赤坎区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2213', '2210', '霞山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2214', '2210', '坡头区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2215', '2210', '麻章区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2216', '2210', '遂溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2217', '2210', '徐闻县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2218', '2210', '廉江市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2219', '2210', '雷州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2220', '2210', '吴川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2221', '2143', '茂名'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2222', '2221', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2223', '2221', '茂南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2224', '2221', '电白县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2225', '2221', '高州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2226', '2221', '化州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2227', '2221', '信宜市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2228', '2143', '肇庆'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2229', '2228', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2230', '2228', '端州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2231', '2228', '鼎湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2232', '2228', '广宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2233', '2228', '怀集县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2234', '2228', '封开县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2235', '2228', '德庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2236', '2228', '高要市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2237', '2228', '四会市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2238', '2143', '惠州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2239', '2238', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2240', '2238', '惠城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2241', '2238', '博罗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2242', '2238', '惠东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2243', '2238', '龙门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2244', '2238', '惠阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2245', '2143', '梅州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2246', '2245', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2247', '2245', '梅江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2248', '2245', '梅 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2249', '2245', '大埔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2250', '2245', '丰顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2251', '2245', '五华县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2252', '2245', '平远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2253', '2245', '蕉岭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2254', '2245', '兴宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2255', '2143', '汕尾'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2256', '2255', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2257', '2255', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2258', '2255', '海丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2259', '2255', '陆河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2260', '2255', '陆丰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2261', '2143', '河源'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2262', '2261', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2263', '2261', '源城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2264', '2261', '紫金县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2265', '2261', '龙川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2266', '2261', '连平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2267', '2261', '和平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2268', '2261', '东源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2269', '2143', '阳江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2270', '2269', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2271', '2269', '江城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2272', '2269', '阳西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2273', '2269', '阳东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2274', '2269', '阳春市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2275', '2143', '清远'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2276', '2275', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2277', '2275', '清城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2278', '2275', '佛冈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2279', '2275', '阳山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2281', '2275', '连南瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2282', '2275', '清新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2283', '2275', '英德市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2284', '2275', '连州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2285', '2143', '东莞'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2286', '2285', '莞城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2287', '2285', '东城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2288', '2285', '南城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2289', '2285', '万江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2290', '2143', '中山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2291', '2290', '石岐区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2292', '2290', '东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2293', '2290', '西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2294', '2290', '南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2295', '2290', '五桂山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2296', '2143', '潮州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2297', '2296', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2298', '2296', '湘桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2299', '2296', '潮安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2300', '2296', '饶平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2301', '2143', '揭阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2302', '2301', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2303', '2301', '榕城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2304', '2301', '揭东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2305', '2301', '揭西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2306', '2301', '惠来县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2307', '2301', '普宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2308', '2143', '云浮'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2309', '2308', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2310', '2308', '云城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2311', '2308', '新兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2312', '2308', '郁南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2313', '2308', '云安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2314', '2308', '罗定市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2315', '0', '广西'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2316', '2315', '南宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2317', '2316', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2318', '2316', '兴宁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2319', '2316', '新城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2320', '2316', '城北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2321', '2316', '江南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2322', '2316', '永新区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2323', '2316', '市郊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2324', '2316', '邕宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2325', '2316', '武鸣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2326', '2315', '柳州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2327', '2326', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2328', '2326', '城中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2329', '2326', '鱼峰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2330', '2326', '柳南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2331', '2326', '柳北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2332', '2326', '市郊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2333', '2326', '柳江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2334', '2326', '柳城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2335', '2315', '桂林'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2336', '2335', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2337', '2335', '秀峰区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2338', '2335', '叠彩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2339', '2335', '象山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2340', '2335', '七星区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2341', '2335', '雁山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2342', '2335', '阳朔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2343', '2335', '临桂县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2344', '2335', '灵川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2345', '2335', '全州县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2346', '2335', '兴安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2347', '2335', '永福县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2348', '2335', '灌阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2349', '2335', '龙胜各县自治区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2350', '2335', '资源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2351', '2335', '平乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2352', '2335', '荔蒲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2353', '2335', '恭城瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2354', '2315', '梧州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2355', '2354', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2356', '2354', '万秀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2357', '2354', '蝶山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2358', '2354', '市郊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2359', '2354', '苍梧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2360', '2354', '藤 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2361', '2354', '蒙山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2362', '2354', '岑溪市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2363', '2315', '北海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2364', '2363', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2365', '2363', '海城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2366', '2363', '银海区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2367', '2363', '铁山港区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2368', '2363', '合浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2369', '2315', '防城港'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2370', '2369', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2371', '2369', '港口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2372', '2369', '防城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2373', '2369', '上思县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2374', '2369', '东兴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2375', '2315', '钦州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2376', '2375', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2377', '2375', '钦南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2378', '2375', '钦北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2379', '2375', '浦北县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2380', '2375', '灵山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2381', '2315', '贵港'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2382', '2381', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2383', '2381', '港北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2384', '2381', '港南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2385', '2381', '平南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2386', '2381', '桂平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2387', '2315', '玉林'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2388', '2387', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2389', '2387', '玉州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2390', '2387', '容 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2391', '2387', '陆川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2392', '2387', '博白县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2393', '2387', '兴业县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2394', '2387', '北流市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2395', '2315', '南宁地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2396', '2395', '凭祥市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2397', '2395', '横 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2398', '2395', '宾阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2399', '2395', '上林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2400', '2395', '隆安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2401', '2395', '马山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2402', '2395', '扶绥县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2403', '2395', '崇左县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2404', '2395', '大新县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2405', '2395', '天等县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2406', '2395', '宁明县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2407', '2395', '龙州县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2408', '2315', '柳州地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2409', '2408', '合山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2410', '2408', '鹿寨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2411', '2408', '象州县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2412', '2408', '武宣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2413', '2408', '来宾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2414', '2408', '融安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2415', '2408', '三江侗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2416', '2408', '融水苗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2417', '2408', '金秀瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2418', '2408', '忻城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2419', '2315', '贺州地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2420', '2419', '贺州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2421', '2419', '昭平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2422', '2419', '钟山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2423', '2419', '富川瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2424', '2315', '百色地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2425', '2424', '百色市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2426', '2424', '田阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2427', '2424', '田东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2428', '2424', '平果县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2429', '2424', '德保县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2430', '2424', '靖西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2431', '2424', '那坡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2432', '2424', '凌云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2433', '2424', '乐业县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2434', '2424', '田林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2435', '2424', '隆林各族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2436', '2424', '西林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2437', '2315', '河池地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2438', '2437', '河池市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2439', '2437', '宜州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2440', '2437', '罗城仫佬族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2441', '2437', '环江毛南族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2442', '2437', '南丹县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2443', '2437', '天峨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2444', '2437', '凤山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2445', '2437', '东兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2446', '2437', '巴马瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2447', '2437', '都安瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2448', '2437', '大化瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2449', '0', '海南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2450', '2449', '海南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2451', '2450', '通什市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2452', '2450', '琼海市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2453', '2450', '儋州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2454', '2450', '琼山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2455', '2450', '文昌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2456', '2450', '万宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2457', '2450', '东方市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2458', '2450', '定安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2459', '2450', '屯昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2460', '2450', '澄迈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2461', '2450', '临高县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2462', '2450', '白沙黎族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2463', '2450', '昌江黎族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2464', '2450', '乐东黎族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2465', '2450', '陵水黎族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2468', '2450', '西沙群岛'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2469', '2450', '南沙群岛'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2471', '2449', '海口'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2472', '2471', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2473', '2471', '振东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2474', '2471', '新华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2475', '2471', '秀英区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2476', '2449', '三亚'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2477', '2476', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2478', '0', '重庆'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2479', '2478', '重庆市辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2480', '2479', '万州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2481', '2479', '涪陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2482', '2479', '渝中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2483', '2479', '大渡口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2484', '2479', '江北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2485', '2479', '沙坪坝区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2486', '2479', '九龙坡区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2487', '2479', '南岸区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2488', '2479', '北碚区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2489', '2479', '万盛区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2490', '2479', '双桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2491', '2479', '渝北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2492', '2479', '巴南区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2493', '2479', '黔江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2494', '2478', '重庆县辖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2495', '2494', '长寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2496', '2494', '綦江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2497', '2494', '潼南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2498', '2494', '铜梁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2499', '2494', '大足县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2500', '2494', '荣昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2501', '2494', '璧山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2502', '2494', '梁平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2503', '2494', '城口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2504', '2494', '丰都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2505', '2494', '垫江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2506', '2494', '武隆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2507', '2494', '忠 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2508', '2494', '开 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2509', '2494', '云阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2510', '2494', '奉节县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2511', '2494', '巫山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2512', '2494', '巫溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2513', '2494', '石柱土家族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2517', '2478', '重庆县级'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2518', '2517', '江津市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2519', '2517', '合川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2520', '2517', '永川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2521', '2517', '南川市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2522', '0', '四川'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2523', '2522', '成都'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2524', '2523', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2525', '2523', '高新区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2526', '2523', '锦江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2527', '2523', '青羊区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2528', '2523', '金牛区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2529', '2523', '武侯区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2530', '2523', '成华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2531', '2523', '龙泉驿区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2532', '2523', '青白江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2533', '2523', '金堂县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2534', '2523', '双流县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2535', '2523', '温江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2536', '2523', '郫 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2537', '2523', '新都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2538', '2523', '大邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2539', '2523', '蒲江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2540', '2523', '新津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2541', '2523', '都江堰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2542', '2523', '彭州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2543', '2523', '邛崃市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2544', '2523', '崇州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2545', '2522', '自贡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2546', '2545', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2547', '2545', '自流井区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2548', '2545', '贡井区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2549', '2545', '大安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2550', '2545', '沿滩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2551', '2545', '荣 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2552', '2545', '富顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2553', '2522', '攀枝花'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2554', '2553', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2555', '2553', '东 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2556', '2553', '西 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2557', '2553', '仁和区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2558', '2553', '米易县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2559', '2553', '盐边县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2560', '2522', '泸州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2561', '2560', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2562', '2560', '江阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2563', '2560', '纳溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2564', '2560', '龙马潭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2565', '2560', '泸 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2566', '2560', '合江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2567', '2560', '叙永县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2568', '2560', '古蔺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2569', '2522', '德阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2570', '2569', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2571', '2569', '旌阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2572', '2569', '中江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2573', '2569', '罗江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2574', '2569', '广汉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2575', '2569', '什邡市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2576', '2569', '绵竹市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2577', '2522', '绵阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2578', '2577', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2579', '2577', '涪城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2580', '2577', '游仙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2581', '2577', '科学城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2582', '2577', '三台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2583', '2577', '盐亭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2584', '2577', '安 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2585', '2577', '梓潼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2586', '2577', '北川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2587', '2577', '平武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2588', '2577', '江油市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2589', '2522', '广元'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2590', '2589', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2591', '2589', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2592', '2589', '元坝区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2593', '2589', '朝天区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2594', '2589', '旺苍县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2595', '2589', '青川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2596', '2589', '剑阁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2597', '2589', '苍溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2598', '2522', '遂宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2599', '2598', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2600', '2598', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2601', '2598', '蓬溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2602', '2598', '射洪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2603', '2598', '大英县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2604', '2522', '内江'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2605', '2604', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2606', '2604', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2607', '2604', '东兴区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2608', '2604', '威远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2609', '2604', '资中县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2610', '2604', '隆昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2611', '2522', '乐山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2612', '2611', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2613', '2611', '市中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2614', '2611', '沙湾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2615', '2611', '五通桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2616', '2611', '金口河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2617', '2611', '犍为县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2618', '2611', '井研县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2619', '2611', '夹江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2620', '2611', '沐川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2621', '2611', '峨边彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2622', '2611', '马边彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2623', '2611', '峨眉山市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2624', '2522', '南充'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2625', '2624', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2626', '2624', '顺庆区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2627', '2624', '高坪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2628', '2624', '嘉陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2629', '2624', '南部县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2630', '2624', '营山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2631', '2624', '蓬安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2632', '2624', '仪陇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2633', '2624', '西充县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2634', '2624', '阆中市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2635', '2522', '眉山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2636', '2635', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2637', '2635', '东坡区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2638', '2635', '仁寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2639', '2635', '彭山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2640', '2635', '洪雅县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2641', '2635', '丹棱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2642', '2635', '青神县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2643', '2522', '宜宾'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2644', '2643', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2645', '2643', '翠屏区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2646', '2643', '宜宾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2647', '2643', '南溪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2648', '2643', '江安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2649', '2643', '长宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2650', '2643', '高 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2651', '2643', '珙 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2652', '2643', '筠连县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2653', '2643', '兴文县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2654', '2643', '屏山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2655', '2522', '广安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2656', '2655', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2657', '2655', '广安区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2658', '2655', '岳池县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2659', '2655', '武胜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2660', '2655', '邻水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2661', '2655', '华蓥市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2662', '2522', '达州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2663', '2662', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2664', '2662', '通川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2665', '2662', '达 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2666', '2662', '宣汉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2667', '2662', '开江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2668', '2662', '大竹县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2669', '2662', '渠 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2670', '2662', '万源市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2671', '2522', '雅安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2672', '2671', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2673', '2671', '雨城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2674', '2671', '名山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2675', '2671', '荥经县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2676', '2671', '汉源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2677', '2671', '石棉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2678', '2671', '天全县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2679', '2671', '芦山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2680', '2671', '宝兴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2681', '2522', '巴中'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2682', '2681', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2683', '2681', '巴州区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2684', '2681', '通江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2685', '2681', '南江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2686', '2681', '平昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2687', '2522', '资阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2688', '2687', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2689', '2687', '雁江区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2690', '2687', '安岳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2691', '2687', '乐至县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2692', '2687', '简阳市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2694', '2693', '汶川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2695', '2693', '理 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2696', '2693', '茂 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2697', '2693', '松潘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2698', '2693', '九寨沟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2699', '2693', '金川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2700', '2693', '小金县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2701', '2693', '黑水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2702', '2693', '马尔康县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2703', '2693', '壤塘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2704', '2693', '阿坝县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2705', '2693', '若尔盖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2706', '2693', '红原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2707', '2522', '甘孜藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2708', '2707', '康定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2709', '2707', '泸定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2710', '2707', '丹巴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2711', '2707', '九龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2712', '2707', '雅江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2713', '2707', '道孚县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2714', '2707', '炉霍县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2715', '2707', '甘孜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2716', '2707', '新龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2717', '2707', '德格县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2718', '2707', '白玉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2719', '2707', '石渠县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2720', '2707', '色达县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2721', '2707', '理塘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2722', '2707', '巴塘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2723', '2707', '乡城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2724', '2707', '稻城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2725', '2707', '得荣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2726', '2522', '凉山彝族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2727', '2726', '西昌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2728', '2726', '木里藏族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2729', '2726', '盐源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2730', '2726', '德昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2731', '2726', '会理县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2732', '2726', '会东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2733', '2726', '宁南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2734', '2726', '普格县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2735', '2726', '布拖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2736', '2726', '金阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2737', '2726', '昭觉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2738', '2726', '喜德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2739', '2726', '冕宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2740', '2726', '越西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2741', '2726', '甘洛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2742', '2726', '美姑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2743', '2726', '雷波县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2744', '0', '贵州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2745', '2744', '贵阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2746', '2745', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2747', '2745', '南明区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2748', '2745', '云岩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2749', '2745', '花溪区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2750', '2745', '乌当区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2751', '2745', '白云区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2752', '2745', '小河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2753', '2745', '开阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2754', '2745', '息烽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2755', '2745', '修文县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2756', '2745', '清镇市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2757', '2744', '六盘水'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2758', '2757', '钟山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2759', '2757', '六枝特区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2760', '2757', '水城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2761', '2757', '盘 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2762', '2744', '遵义'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2763', '2762', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2764', '2762', '红花岗区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2765', '2762', '遵义县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2766', '2762', '桐梓县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2767', '2762', '绥阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2768', '2762', '正安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2771', '2762', '凤冈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2772', '2762', '湄潭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2773', '2762', '余庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2774', '2762', '习水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2775', '2762', '赤水市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2776', '2762', '仁怀市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2777', '2744', '安顺'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2778', '2777', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2779', '2777', '西秀区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2780', '2777', '平坝县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2781', '2777', '普定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2785', '2744', '铜仁地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2786', '2785', '铜仁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2787', '2785', '江口县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2788', '2785', '玉屏侗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2789', '2785', '石阡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2790', '2785', '思南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2792', '2785', '德江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2793', '2785', '沿河土家族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2794', '2785', '松桃苗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2795', '2785', '万山特区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2797', '2796', '兴义市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2798', '2796', '兴仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2799', '2796', '普安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2800', '2796', '晴隆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2801', '2796', '贞丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2802', '2796', '望谟县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2803', '2796', '册亨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2804', '2796', '安龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2805', '2744', '毕节地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2806', '2805', '毕节市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2807', '2805', '大方县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2808', '2805', '黔西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2809', '2805', '金沙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2810', '2805', '织金县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2811', '2805', '纳雍县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2813', '2805', '赫章县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2815', '2814', '凯里市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2816', '2814', '黄平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2817', '2814', '施秉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2818', '2814', '三穗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2819', '2814', '镇远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2820', '2814', '岑巩县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2821', '2814', '天柱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2822', '2814', '锦屏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2823', '2814', '剑河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2824', '2814', '台江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2825', '2814', '黎平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2826', '2814', '榕江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2827', '2814', '从江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2828', '2814', '雷山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2829', '2814', '麻江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2830', '2814', '丹寨县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2832', '2831', '都匀市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2833', '2831', '福泉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2834', '2831', '荔波县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2835', '2831', '贵定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2836', '2831', '瓮安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2837', '2831', '独山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2838', '2831', '平塘县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2839', '2831', '罗甸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2840', '2831', '长顺县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2841', '2831', '龙里县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2842', '2831', '惠水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2843', '2831', '三都水族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2844', '0', '云南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2845', '2844', '昆明'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2846', '2845', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2847', '2845', '五华区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2848', '2845', '盘龙区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2849', '2845', '官渡区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2850', '2845', '西山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2851', '2845', '东川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2852', '2845', '呈贡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2853', '2845', '晋宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2854', '2845', '富民县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2855', '2845', '宜良县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2856', '2845', '石林彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2857', '2845', '嵩明县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2860', '2845', '安宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2861', '2844', '曲靖'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2862', '2861', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2863', '2861', '麒麟区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2864', '2861', '马龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2865', '2861', '陆良县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2866', '2861', '师宗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2867', '2861', '罗平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2868', '2861', '富源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2869', '2861', '会泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2870', '2861', '沾益县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2871', '2861', '宣威市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2872', '2844', '玉溪'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2873', '2872', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2874', '2872', '红塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2875', '2872', '江川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2876', '2872', '澄江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2877', '2872', '通海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2878', '2872', '华宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2879', '2872', '易门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2880', '2872', '峨山彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2883', '2844', '保山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2884', '2883', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2885', '2883', '隆阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2886', '2883', '施甸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2887', '2883', '腾冲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2888', '2883', '龙陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2889', '2883', '昌宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2890', '2844', '昭通地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2891', '2890', '昭通市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2892', '2890', '鲁甸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2893', '2890', '巧家县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2894', '2890', '盐津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2895', '2890', '大关县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2896', '2890', '永善县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2897', '2890', '绥江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2898', '2890', '镇雄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2899', '2890', '彝良县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2900', '2890', '威信县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2901', '2890', '水富县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2902', '2844', '楚雄彝族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2903', '2902', '楚雄市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2904', '2902', '双柏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2905', '2902', '牟定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2906', '2902', '南华县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2907', '2902', '姚安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2908', '2902', '大姚县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2909', '2902', '永仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2910', '2902', '元谋县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2911', '2902', '武定县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2912', '2902', '禄丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2914', '2913', '个旧市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2915', '2913', '开远市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2916', '2913', '蒙自县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2917', '2913', '屏边苗族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2918', '2913', '建水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2919', '2913', '石屏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2920', '2913', '弥勒县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2921', '2913', '泸西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2922', '2913', '元阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2923', '2913', '红河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2925', '2913', '绿春县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2926', '2913', '河口瑶族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2928', '2927', '文山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2929', '2927', '砚山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2930', '2927', '西畴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2931', '2927', '麻栗坡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2932', '2927', '马关县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2933', '2927', '丘北县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2934', '2927', '广南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2935', '2927', '富宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2936', '2844', '思茅地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2937', '2936', '思茅市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2939', '2936', '墨江哈尼族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2940', '2936', '景东彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2945', '2936', '澜沧拉祜族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2946', '2936', '西盟佤族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2948', '2947', '景洪市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2949', '2947', '勐海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2950', '2947', '勐腊县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2951', '2844', '大理白族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2952', '2951', '大理市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2953', '2951', '漾濞彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2954', '2951', '祥云县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2955', '2951', '宾川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2956', '2951', '弥渡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2957', '2951', '南涧彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2959', '2951', '永平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2960', '2951', '云龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2961', '2951', '洱源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2962', '2951', '剑川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2963', '2951', '鹤庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2965', '2964', '瑞丽市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2966', '2964', '潞西市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2967', '2964', '梁河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2968', '2964', '盈江县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2969', '2964', '陇川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2970', '2844', '丽江地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2971', '2970', '丽江纳西族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2972', '2970', '永胜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2973', '2970', '华坪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2974', '2970', '宁蒗彝族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2975', '2844', '怒江傈僳族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2976', '2975', '泸水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2977', '2975', '福贡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2980', '2844', '迪庆藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2981', '2980', '中甸县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2982', '2980', '德钦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2983', '2980', '维西傈僳族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2984', '2844', '临沧地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2985', '2984', '临沧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2986', '2984', '凤庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2987', '2984', '云 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2988', '2984', '永德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2989', '2984', '镇康县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2992', '2984', '沧源佤族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2993', '0', '西藏'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2994', '2993', '拉萨'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2995', '2994', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2996', '2994', '城关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2997', '2994', '林周县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2998', '2994', '当雄县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('2999', '2994', '尼木县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3000', '2994', '曲水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3001', '2994', '堆龙德庆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3002', '2994', '达孜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3003', '2994', '墨竹工卡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3004', '2993', '昌都地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3005', '3004', '昌都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3006', '3004', '江达县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3007', '3004', '贡觉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3008', '3004', '类乌齐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3009', '3004', '丁青县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3010', '3004', '察雅县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3011', '3004', '八宿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3012', '3004', '左贡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3013', '3004', '芒康县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3014', '3004', '洛隆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3015', '3004', '边坝县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3016', '2993', '山南地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3017', '3016', '乃东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3018', '3016', '扎囊县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3019', '3016', '贡嘎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3020', '3016', '桑日县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3021', '3016', '琼结县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3022', '3016', '曲松县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3023', '3016', '措美县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3024', '3016', '洛扎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3025', '3016', '加查县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3026', '3016', '隆子县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3027', '3016', '错那县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3028', '3016', '浪卡子县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3029', '2993', '日喀则地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3030', '3029', '日喀则市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3031', '3029', '南木林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3032', '3029', '江孜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3033', '3029', '定日县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3034', '3029', '萨迦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3035', '3029', '拉孜县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3036', '3029', '昂仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3037', '3029', '谢通门县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3038', '3029', '白朗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3039', '3029', '仁布县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3040', '3029', '康马县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3041', '3029', '定结县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3042', '3029', '仲巴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3043', '3029', '亚东县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3044', '3029', '吉隆县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3045', '3029', '聂拉木县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3046', '3029', '萨嘎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3047', '3029', '岗巴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3048', '2993', '那曲地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3049', '3048', '那曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3050', '3048', '嘉黎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3051', '3048', '比如县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3052', '3048', '聂荣县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3053', '3048', '安多县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3054', '3048', '申扎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3055', '3048', '索 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3056', '3048', '班戈县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3057', '3048', '巴青县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3058', '3048', '尼玛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3059', '2993', '阿里地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3060', '3059', '普兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3061', '3059', '札达县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3062', '3059', '噶尔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3063', '3059', '日土县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3064', '3059', '革吉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3065', '3059', '改则县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3066', '3059', '措勤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3067', '2993', '林芝地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3068', '3067', '林芝县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3069', '3067', '工布江达县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3070', '3067', '米林县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3071', '3067', '墨脱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3072', '3067', '波密县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3073', '3067', '察隅县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3074', '3067', '朗 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3075', '0', '陕西'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3076', '3075', '西安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3077', '3076', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3078', '3076', '新城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3079', '3076', '碑林区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3080', '3076', '莲湖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3081', '3076', '灞桥区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3082', '3076', '未央区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3083', '3076', '雁塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3084', '3076', '阎良区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3085', '3076', '临潼区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3086', '3076', '长安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3087', '3076', '蓝田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3088', '3076', '周至县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3089', '3076', '户 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3090', '3076', '高陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3091', '3075', '铜川'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3092', '3091', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3093', '3091', '王益区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3094', '3091', '印台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3095', '3091', '耀 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3096', '3091', '宜君县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3097', '3075', '宝鸡'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3098', '3097', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3099', '3097', '渭滨区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3100', '3097', '金台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3101', '3097', '宝鸡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3102', '3097', '凤翔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3103', '3097', '岐山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3104', '3097', '扶风县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3105', '3097', '眉 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3106', '3097', '陇 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3107', '3097', '千阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3108', '3097', '麟游县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3109', '3097', '凤 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3110', '3097', '太白县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3111', '3075', '咸阳'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3112', '3111', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3113', '3111', '秦都区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3114', '3111', '杨陵区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3115', '3111', '渭城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3116', '3111', '三原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3117', '3111', '泾阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3118', '3111', '乾 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3119', '3111', '礼泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3120', '3111', '永寿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3121', '3111', '彬 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3122', '3111', '长武县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3123', '3111', '旬邑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3124', '3111', '淳化县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3125', '3111', '武功县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3126', '3111', '兴平市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3127', '3075', '渭南'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3128', '3127', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3129', '3127', '临渭区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3130', '3127', '华 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3131', '3127', '潼关县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3132', '3127', '大荔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3133', '3127', '合阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3134', '3127', '澄城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3135', '3127', '蒲城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3136', '3127', '白水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3137', '3127', '富平县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3138', '3127', '韩城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3139', '3127', '华阴市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3140', '3075', '延安'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3141', '3140', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3142', '3140', '宝塔区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3143', '3140', '延长县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3144', '3140', '延川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3145', '3140', '子长县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3146', '3140', '安塞县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3147', '3140', '志丹县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3148', '3140', '吴旗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3149', '3140', '甘泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3150', '3140', '富 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3151', '3140', '洛川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3152', '3140', '宜川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3153', '3140', '黄龙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3154', '3140', '黄陵县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3155', '3075', '汉中'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3156', '3155', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3157', '3155', '汉台区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3158', '3155', '南郑县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3159', '3155', '城固县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3160', '3155', '洋 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3161', '3155', '西乡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3162', '3155', '勉 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3163', '3155', '宁强县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3164', '3155', '略阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3165', '3155', '镇巴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3166', '3155', '留坝县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3167', '3155', '佛坪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3168', '3075', '榆林'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3169', '3168', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3170', '3168', '榆阳区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3171', '3168', '神木县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3172', '3168', '府谷县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3173', '3168', '横山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3174', '3168', '靖边县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3175', '3168', '定边县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3176', '3168', '绥德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3177', '3168', '米脂县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3178', '3168', '佳 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3179', '3168', '吴堡县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3180', '3168', '清涧县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3181', '3168', '子洲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3182', '3075', '安康'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3183', '3182', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3184', '3182', '汉滨区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3185', '3182', '汉阴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3186', '3182', '石泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3187', '3182', '宁陕县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3188', '3182', '紫阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3189', '3182', '岚皋县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3190', '3182', '平利县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3191', '3182', '镇坪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3192', '3182', '旬阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3193', '3182', '白河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3194', '3075', '商洛地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3195', '3194', '商州市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3196', '3194', '洛南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3197', '3194', '丹凤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3198', '3194', '商南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3199', '3194', '山阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3200', '3194', '镇安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3201', '3194', '柞水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3202', '0', '甘肃'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3203', '3202', '兰州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3204', '3203', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3205', '3203', '城关区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3206', '3203', '七里河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3207', '3203', '西固区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3208', '3203', '安宁区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3209', '3203', '红古区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3210', '3203', '永登县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3211', '3203', '皋兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3212', '3203', '榆中县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3213', '3202', '嘉峪关'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3214', '3213', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3215', '3202', '金昌'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3216', '3215', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3217', '3215', '金川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3218', '3215', '永昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3219', '3202', '白银'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3220', '3219', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3221', '3219', '白银区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3222', '3219', '平川区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3223', '3219', '靖远县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3224', '3219', '会宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3225', '3219', '景泰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3226', '3202', '天水'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3227', '3226', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3228', '3226', '秦城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3229', '3226', '北道区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3230', '3226', '清水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3231', '3226', '秦安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3232', '3226', '甘谷县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3233', '3226', '武山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3234', '3226', '张家川回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3235', '3202', '酒泉地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3236', '3235', '玉门市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3237', '3235', '酒泉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3238', '3235', '敦煌市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3239', '3235', '金塔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3240', '3235', '肃北蒙古族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3242', '3235', '安西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3243', '3202', '张掖地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3244', '3243', '张掖市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3245', '3243', '肃南裕固族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3246', '3243', '民乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3247', '3243', '临泽县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3248', '3243', '高台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3249', '3243', '山丹县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3250', '3202', '武威地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3251', '3250', '武威市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3252', '3250', '民勤县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3253', '3250', '古浪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3254', '3250', '天祝藏族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3255', '3202', '定西地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3256', '3255', '定西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3257', '3255', '通渭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3258', '3255', '陇西县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3259', '3255', '渭源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3260', '3255', '临洮县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3261', '3255', '漳 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3262', '3255', '岷 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3263', '3202', '陇南地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3264', '3263', '武都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3265', '3263', '宕昌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3266', '3263', '成 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3267', '3263', '康 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3268', '3263', '文 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3269', '3263', '西和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3270', '3263', '礼 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3271', '3263', '两当县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3272', '3263', '徽 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3273', '3202', '平凉地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3274', '3273', '平凉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3275', '3273', '泾川县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3276', '3273', '灵台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3277', '3273', '崇信县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3278', '3273', '华亭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3279', '3273', '庄浪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3280', '3273', '静宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3281', '3202', '庆阳地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3282', '3281', '西峰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3283', '3281', '庆阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3284', '3281', '环 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3285', '3281', '华池县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3286', '3281', '合水县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3287', '3281', '正宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3288', '3281', '宁 县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3289', '3281', '镇原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3290', '3202', '临夏回族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3291', '3290', '临夏市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3292', '3290', '临夏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3293', '3290', '康乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3294', '3290', '永靖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3295', '3290', '广河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3296', '3290', '和政县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3297', '3290', '东乡族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3299', '3202', '甘南藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3300', '3299', '合作市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3301', '3299', '临潭县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3302', '3299', '卓尼县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3303', '3299', '舟曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3304', '3299', '迭部县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3305', '3299', '玛曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3306', '3299', '碌曲县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3307', '3299', '夏河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3308', '0', '青海'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3309', '3308', '西宁'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3310', '3309', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3311', '3309', '城东区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3312', '3309', '城中区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3313', '3309', '城西区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3314', '3309', '城北区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3316', '3309', '湟中县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3317', '3309', '湟源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3318', '3308', '海东地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3319', '3318', '平安县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3321', '3318', '乐都县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3322', '3318', '互助土族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3323', '3318', '化隆回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3324', '3318', '循化撒拉族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3325', '3308', '海北藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3326', '3325', '门源回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3327', '3325', '祁连县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3328', '3325', '海晏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3329', '3325', '刚察县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3330', '3308', '黄南藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3331', '3330', '同仁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3332', '3330', '尖扎县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3333', '3330', '泽库县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3334', '3330', '河南蒙古族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3335', '3308', '海南藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3336', '3335', '共和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3337', '3335', '同德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3338', '3335', '贵德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3339', '3335', '兴海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3340', '3335', '贵南县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3341', '3308', '果洛藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3342', '3341', '玛沁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3343', '3341', '班玛县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3344', '3341', '甘德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3345', '3341', '达日县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3346', '3341', '久治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3347', '3341', '玛多县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3348', '3308', '玉树藏族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3349', '3348', '玉树县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3350', '3348', '杂多县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3351', '3348', '称多县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3352', '3348', '治多县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3353', '3348', '囊谦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3354', '3348', '曲麻莱县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3356', '3355', '格尔木市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3357', '3355', '德令哈市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3358', '3355', '乌兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3359', '3355', '都兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3360', '3355', '天峻县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3361', '0', '宁夏'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3362', '3361', '银川'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3363', '3362', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3364', '3362', '城 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3365', '3362', '新城区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3366', '3362', '郊 区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3367', '3362', '永宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3368', '3362', '贺兰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3369', '3361', '石嘴山'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3370', '3369', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3371', '3369', '大武口区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3372', '3369', '石嘴山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3373', '3369', '石炭井区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3374', '3369', '平罗县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3375', '3369', '陶乐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3376', '3369', '惠农县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3377', '3361', '吴忠'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3378', '3377', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3379', '3377', '利通区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3380', '3377', '中卫县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3381', '3377', '中宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3382', '3377', '盐池县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3383', '3377', '同心县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3384', '3377', '青铜峡市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3385', '3377', '灵武市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3386', '3361', '固原地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3387', '3386', '固原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3388', '3386', '海原县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3389', '3386', '西吉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3390', '3386', '隆德县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3391', '3386', '泾源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3392', '3386', '彭阳县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3393', '0', '新疆'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3394', '3393', '乌鲁木齐'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3395', '3394', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3396', '3394', '天山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3397', '3394', '沙依巴克区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3398', '3394', '新市区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3399', '3394', '水磨沟区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3400', '3394', '头屯河区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3401', '3394', '南泉区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3402', '3394', '东山区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3403', '3394', '乌鲁木齐县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3404', '3393', '克拉玛依'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3405', '3404', '市辖区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3406', '3404', '独山子区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3407', '3404', '克拉玛依区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3408', '3404', '白碱滩区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3409', '3404', '乌尔禾区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3410', '3393', '吐鲁番地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3411', '3410', '吐鲁番市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3412', '3410', '鄯善县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3413', '3410', '托克逊县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3414', '3393', '哈密地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3415', '3414', '哈密市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3417', '3414', '伊吾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3418', '3393', '昌吉回族自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3419', '3418', '昌吉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3420', '3418', '阜康市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3421', '3418', '米泉市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3422', '3418', '呼图壁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3423', '3418', '玛纳斯县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3424', '3418', '奇台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3425', '3418', '吉木萨尔县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3426', '3418', '木垒哈萨克自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3428', '3427', '博乐市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3429', '3427', '精河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3430', '3427', '温泉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3432', '3431', '库尔勒市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3433', '3431', '轮台县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3434', '3431', '尉犁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3435', '3431', '若羌县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3436', '3431', '且末县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3437', '3431', '焉耆回族自治县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3438', '3431', '和静县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3439', '3431', '和硕县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3440', '3431', '博湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3441', '3393', '阿克苏地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3442', '3441', '阿克苏市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3443', '3441', '温宿县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3444', '3441', '库车县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3445', '3441', '沙雅县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3446', '3441', '新和县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3447', '3441', '拜城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3448', '3441', '乌什县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3449', '3441', '阿瓦提县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3450', '3441', '柯坪县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3452', '3451', '阿图什市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3453', '3451', '阿克陶县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3454', '3451', '阿合奇县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3455', '3451', '乌恰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3456', '3393', '喀什地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3457', '3456', '喀什市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3458', '3456', '疏附县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3459', '3456', '疏勒县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3460', '3456', '英吉沙县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3461', '3456', '泽普县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3462', '3456', '莎车县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3463', '3456', '叶城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3464', '3456', '麦盖提县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3465', '3456', '岳普湖县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3466', '3456', '伽师县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3467', '3456', '巴楚县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3469', '3393', '和田地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3470', '3469', '和田市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3471', '3469', '和田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3472', '3469', '墨玉县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3473', '3469', '皮山县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3474', '3469', '洛浦县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3475', '3469', '策勒县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3476', '3469', '于田县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3477', '3469', '民丰县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3478', '3393', '伊犁哈萨克自治州'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3479', '3478', '奎屯市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3480', '3393', '伊犁地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3481', '3480', '伊宁市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3482', '3480', '伊宁县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3484', '3480', '霍城县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3485', '3480', '巩留县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3486', '3480', '新源县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3487', '3480', '昭苏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3488', '3480', '特克斯县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3489', '3480', '尼勒克县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3490', '3393', '塔城地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3491', '3490', '塔城市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3492', '3490', '乌苏市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3493', '3490', '额敏县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3494', '3490', '沙湾县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3495', '3490', '托里县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3496', '3490', '裕民县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3498', '3393', '阿勒泰地区'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3499', '3498', '阿勒泰市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3500', '3498', '布尔津县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3501', '3498', '富蕴县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3502', '3498', '福海县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3503', '3498', '哈巴河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3504', '3498', '青河县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3505', '3498', '吉木乃县'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3506', '3393', '省直辖行政单位'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3507', '3506', '石河子市'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3508', '0', '台湾'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3509', '0', '香港'); -INSERT INTO `bjyadmin_province_city_area` VALUES ('3510', '0', '澳门'); - --- ---------------------------- --- Table structure for bjyadmin_users --- ---------------------------- -DROP TABLE IF EXISTS `bjyadmin_users`; -CREATE TABLE `bjyadmin_users` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `username` varchar(60) NOT NULL DEFAULT '' COMMENT '用户名', - `password` varchar(64) NOT NULL DEFAULT '' COMMENT '登录密码;mb_password加密', - `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '用户头像,相对于upload/avatar目录', - `email` varchar(100) NOT NULL DEFAULT '' COMMENT '登录邮箱', - `email_code` varchar(60) DEFAULT NULL COMMENT '激活码', - `phone` bigint(11) unsigned DEFAULT NULL COMMENT '手机号', - `status` tinyint(1) NOT NULL DEFAULT '2' COMMENT '用户状态 0:禁用; 1:正常 ;2:未验证', - `register_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '注册时间', - `last_login_ip` varchar(16) NOT NULL DEFAULT '' COMMENT '最后登录ip', - `last_login_time` int(10) unsigned NOT NULL COMMENT '最后登录时间', - PRIMARY KEY (`id`), - KEY `user_login_key` (`username`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1141 DEFAULT CHARSET=utf8; - --- ---------------------------- --- Records of bjyadmin_users --- ---------------------------- -INSERT INTO `bjyadmin_users` VALUES ('88', 'admin', 'e10adc3949ba59abbe56e057f20f883e', '/Upload/avatar/user1.jpg', '', '', null, '1', '1449199996', '', '0'); -INSERT INTO `bjyadmin_users` VALUES ('89', 'admin2', 'e10adc3949ba59abbe56e057f20f883e', '/Upload/avatar/user2.jpg', '', '', null, '1', '1449199996', '', '0'); +/* + Navicat Premium Data Transfer + + Source Server : localhost + Source Server Type : MySQL + Source Server Version : 50711 + Source Host : localhost + Source Database : bjyadmin + + Target Server Type : MySQL + Target Server Version : 50711 + File Encoding : utf-8 + + Date: 09/27/2016 23:47:32 PM +*/ + +SET NAMES utf8; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for `bjyadmin_admin_nav` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_admin_nav`; +CREATE TABLE `bjyadmin_admin_nav` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '菜单表', + `pid` int(11) unsigned DEFAULT '0' COMMENT '所属菜单', + `name` varchar(15) DEFAULT '' COMMENT '菜单名称', + `mca` varchar(255) DEFAULT '' COMMENT '模块、控制器、方法', + `ico` varchar(20) DEFAULT '' COMMENT 'font-awesome图标', + `order_number` int(11) unsigned DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=38 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of `bjyadmin_admin_nav` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_admin_nav` VALUES ('1', '0', '系统设置', 'Admin/ShowNav/config', 'cog', '1'), ('2', '1', '菜单管理', 'Admin/Nav/index', null, null), ('7', '4', '权限管理', 'Admin/Rule/index', '', '1'), ('4', '0', '权限控制', 'Admin/ShowNav/rule', 'expeditedssl', '2'), ('8', '4', '用户组管理', 'Admin/Rule/group', '', '2'), ('9', '4', '管理员列表', 'Admin/Rule/admin_user_list', '', '3'), ('16', '0', '会员管理', 'Admin/ShowNav/', 'users', '4'), ('17', '16', '会员列表', 'Admin/User/index', '', null), ('36', '0', '文章管理', 'Admin/ShowNav/posts', 'th', '6'), ('37', '36', '文章列表', 'Admin/Posts/index', '', null); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_alipay_order` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_alipay_order`; +CREATE TABLE `bjyadmin_alipay_order` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '支付宝回执单主键id', + `product_order_sn` bigint(15) NOT NULL COMMENT '订单号', + `price` decimal(10,2) unsigned NOT NULL COMMENT '支付金额', + `alipay_sn` varchar(255) NOT NULL DEFAULT '' COMMENT '阿里支付单号', + `buyer_email` varchar(255) NOT NULL DEFAULT '' COMMENT '购买者邮箱', + `pay_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '支付时间', + `detail` text NOT NULL COMMENT '详细内容', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=140 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for `bjyadmin_auth_group` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_auth_group`; +CREATE TABLE `bjyadmin_auth_group` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `title` char(100) NOT NULL DEFAULT '', + `status` tinyint(1) NOT NULL DEFAULT '1', + `rules` text COMMENT '规则id', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='用户组表'; + +-- ---------------------------- +-- Records of `bjyadmin_auth_group` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_auth_group` VALUES ('1', '超级管理员', '1', '6,96,20,1,2,3,4,5,64,21,7,8,9,10,11,12,13,14,15,16,123,124,125,19,104,105,106,107,108,118,109,110,111,112,117'), ('2', '产品管理员', '1', '6,96,1,2,3,4,56,57,60,61,63,71,72,65,67,74,75,66,68,69,70,73,77,78,82,83,88,89,90,99,91,92,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114'), ('4', '文章编辑', '1', '6,96,57,60,61,63,71,72,65,67,74,75,66,68,69,73,79,80,78,82,83,88,89,90,99,100,97,98,104,105,106,107,108,118,109,110,111,112,117,113,114'); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_auth_group_access` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_auth_group_access`; +CREATE TABLE `bjyadmin_auth_group_access` ( + `uid` int(11) unsigned NOT NULL COMMENT '用户id', + `group_id` int(11) unsigned NOT NULL COMMENT '用户组id', + UNIQUE KEY `uid_group_id` (`uid`,`group_id`), + KEY `uid` (`uid`), + KEY `group_id` (`group_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户组明细表'; + +-- ---------------------------- +-- Records of `bjyadmin_auth_group_access` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_auth_group_access` VALUES ('88', '1'), ('89', '2'), ('89', '4'); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_auth_rule` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_auth_rule`; +CREATE TABLE `bjyadmin_auth_rule` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父级id', + `name` char(80) NOT NULL DEFAULT '' COMMENT '规则唯一标识', + `title` char(20) NOT NULL DEFAULT '' COMMENT '规则中文名称', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:为1正常,为0禁用', + `type` tinyint(1) unsigned NOT NULL DEFAULT '1', + `condition` char(100) NOT NULL DEFAULT '' COMMENT '规则表达式,为空表示存在就验证,不为空表示按照条件验证', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=utf8 COMMENT='规则表'; + +-- ---------------------------- +-- Records of `bjyadmin_auth_rule` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_auth_rule` VALUES ('1', '20', 'Admin/ShowNav/nav', '菜单管理', '1', '1', ''), ('2', '1', 'Admin/Nav/index', '菜单列表', '1', '1', ''), ('3', '1', 'Admin/Nav/add', '添加菜单', '1', '1', ''), ('4', '1', 'Admin/Nav/edit', '修改菜单', '1', '1', ''), ('5', '1', 'Admin/Nav/delete', '删除菜单', '1', '1', ''), ('21', '0', 'Admin/ShowNav/rule', '权限控制', '1', '1', ''), ('7', '21', 'Admin/Rule/index', '权限管理', '1', '1', ''), ('8', '7', 'Admin/Rule/add', '添加权限', '1', '1', ''), ('9', '7', 'Admin/Rule/edit', '修改权限', '1', '1', ''), ('10', '7', 'Admin/Rule/delete', '删除权限', '1', '1', ''), ('11', '21', 'Admin/Rule/group', '用户组管理', '1', '1', ''), ('12', '11', 'Admin/Rule/add_group', '添加用户组', '1', '1', ''), ('13', '11', 'Admin/Rule/edit_group', '修改用户组', '1', '1', ''), ('14', '11', 'Admin/Rule/delete_group', '删除用户组', '1', '1', ''), ('15', '11', 'Admin/Rule/rule_group', '分配权限', '1', '1', ''), ('16', '11', 'Admin/Rule/check_user', '添加成员', '1', '1', ''), ('19', '21', 'Admin/Rule/admin_user_list', '管理员列表', '1', '1', ''), ('20', '0', 'Admin/ShowNav/config', '系统设置', '1', '1', ''), ('6', '0', 'Admin/Index/index', '后台首页', '1', '1', ''), ('64', '1', 'Admin/Nav/order', '菜单排序', '1', '1', ''), ('96', '6', 'Admin/Index/welcome', '欢迎界面', '1', '1', ''), ('104', '0', 'Admin/ShowNav/posts', '文章管理', '1', '1', ''), ('105', '104', 'Admin/Posts/index', '文章列表', '1', '1', ''), ('106', '105', 'Admin/Posts/add_posts', '添加文章', '1', '1', ''), ('107', '105', 'Admin/Posts/edit_posts', '修改文章', '1', '1', ''), ('108', '105', 'Admin/Posts/delete_posts', '删除文章', '1', '1', ''), ('109', '104', 'Admin/Posts/category_list', '分类列表', '1', '1', ''), ('110', '109', 'Admin/Posts/add_category', '添加分类', '1', '1', ''), ('111', '109', 'Admin/Posts/edit_category', '修改分类', '1', '1', ''), ('112', '109', 'Admin/Posts/delete_category', '删除分类', '1', '1', ''), ('117', '109', 'Admin/Posts/order_category', '分类排序', '1', '1', ''), ('118', '105', 'Admin/Posts/order_posts', '文章排序', '1', '1', ''), ('123', '11', 'Admin/Rule/add_user_to_group', '设置为管理员', '1', '1', ''), ('124', '11', 'Admin/Rule/add_admin', '添加管理员', '1', '1', ''), ('125', '11', 'Admin/Rule/edit_admin', '修改管理员', '1', '1', ''); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_oauth_user` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_oauth_user`; +CREATE TABLE `bjyadmin_oauth_user` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', + `uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关联的本站用户id', + `type` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '类型 1:融云 2:友盟', + `nickname` varchar(30) NOT NULL DEFAULT '' COMMENT '第三方昵称', + `head_img` varchar(255) NOT NULL DEFAULT '' COMMENT '头像', + `openid` varchar(40) NOT NULL DEFAULT '' COMMENT '第三方用户id', + `access_token` varchar(255) NOT NULL DEFAULT '' COMMENT 'access_token token', + `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '绑定时间', + `last_login_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最后登录时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=683 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of `bjyadmin_oauth_user` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_oauth_user` VALUES ('671', '88', '2', '白俊遥', '', '', 'k2232R1tBYJ232XJQelszNuV2tlzgsdj9m8A6JtRJXMtM2tfOffQP3U0qNG5zL2qnw9Envm4TqeJtIbMjwAZYMaLjnXw==', '1457693930', '1457693930'), ('682', '88', '1', 'admin', 'http://bjyadmin.com/Upload/avatar/user1.jpg', '', 'U8IQ2WNHEO2GWUI5DBKrdSQmKe0yMO+J4U8bCkk5sypUTfI76qou2KKL6uzeqp+0KfzWsqxlwp+yjyGI3e3g6w==', '1469453417', '1469453417'); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_order` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_order`; +CREATE TABLE `bjyadmin_order` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单主键', + `order_sn` int(11) unsigned NOT NULL COMMENT '订单号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for `bjyadmin_province_city_area` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_province_city_area`; +CREATE TABLE `bjyadmin_province_city_area` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父级id', + `name` varchar(25) NOT NULL DEFAULT '' COMMENT '城市名', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3511 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of `bjyadmin_province_city_area` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_province_city_area` VALUES ('1', '0', '北京'), ('2', '1', '北京市辖'), ('3', '2', '东城区'), ('4', '2', '西城区'), ('5', '2', '崇文区'), ('6', '2', '宣武区'), ('7', '2', '朝阳区'), ('8', '2', '丰台区'), ('9', '2', '石景山区'), ('10', '2', '海淀区'), ('11', '2', '门头沟区'), ('12', '2', '房山区'), ('13', '2', '通州区'), ('14', '2', '顺义区'), ('15', '2', '昌平区'), ('16', '1', '北京县辖'), ('17', '16', '大兴县'), ('18', '16', '平谷县'), ('19', '16', '怀柔县'), ('20', '16', '密云县'), ('21', '16', '延庆县'), ('22', '0', '天津'), ('23', '22', '天津市辖'), ('24', '23', '和平区'), ('25', '23', '河东区'), ('26', '23', '河西区'), ('27', '23', '南开区'), ('28', '23', '河北区'), ('29', '23', '红桥区'), ('30', '23', '塘沽区'), ('31', '23', '汉沽区'), ('32', '23', '大港区'), ('33', '23', '东丽区'), ('34', '23', '西青区'), ('35', '23', '津南区'), ('36', '23', '北辰区'), ('37', '23', '武清区'), ('38', '22', '天津县辖'), ('39', '38', '宁河县'), ('40', '38', '静海县'), ('41', '38', '宝坻县'), ('42', '38', '蓟 县'), ('43', '0', '河北'), ('44', '43', '石家庄'), ('45', '44', '市辖区'), ('46', '44', '长安区'), ('47', '44', '桥东区'), ('48', '44', '桥西区'), ('49', '44', '新华区'), ('50', '44', '郊 区'), ('51', '44', '井陉矿区'), ('52', '44', '井陉县'), ('53', '44', '正定县'), ('54', '44', '栾城县'), ('55', '44', '行唐县'), ('56', '44', '灵寿县'), ('57', '44', '高邑县'), ('58', '44', '深泽县'), ('59', '44', '赞皇县'), ('60', '44', '无极县'), ('61', '44', '平山县'), ('62', '44', '元氏县'), ('63', '44', '赵 县'), ('64', '44', '辛集市'), ('65', '44', '藁城市'), ('66', '44', '晋州市'), ('67', '44', '新乐市'), ('68', '44', '鹿泉市'), ('69', '43', '唐山'), ('70', '69', '市辖区'), ('71', '69', '路南区'), ('72', '69', '路北区'), ('73', '69', '古冶区'), ('74', '69', '开平区'), ('75', '69', '新 区'), ('76', '69', '丰润县'), ('77', '69', '滦 县'), ('78', '69', '滦南县'), ('79', '69', '乐亭县'), ('80', '69', '迁西县'), ('81', '69', '玉田县'), ('82', '69', '唐海县'), ('83', '69', '遵化市'), ('84', '69', '丰南市'), ('85', '69', '迁安市'), ('86', '43', '秦皇岛'), ('87', '86', '市辖区'), ('88', '86', '海港区'), ('89', '86', '山海关区'), ('90', '86', '北戴河区'), ('91', '86', '青龙满族自治县'), ('92', '86', '昌黎县'), ('93', '86', '抚宁县'), ('94', '86', '卢龙县'), ('95', '43', '邯郸'), ('96', '95', '市辖区'), ('97', '95', '邯山区'), ('98', '95', '丛台区'), ('99', '95', '复兴区'), ('100', '95', '峰峰矿区'), ('101', '95', '邯郸县'), ('102', '95', '临漳县'), ('103', '95', '成安县'), ('104', '95', '大名县'), ('105', '95', '涉 县'), ('106', '95', '磁 县'), ('107', '95', '肥乡县'), ('108', '95', '永年县'), ('109', '95', '邱 县'), ('110', '95', '鸡泽县'), ('111', '95', '广平县'), ('112', '95', '馆陶县'), ('113', '95', '魏 县'), ('114', '95', '曲周县'), ('115', '95', '武安市'), ('116', '43', '邢台'), ('117', '116', '市辖区'), ('118', '116', '桥东区'), ('119', '116', '桥西区'), ('120', '116', '邢台县'), ('121', '116', '临城县'), ('122', '116', '内丘县'), ('123', '116', '柏乡县'), ('124', '116', '隆尧县'), ('125', '116', '任 县'), ('126', '116', '南和县'), ('127', '116', '宁晋县'), ('128', '116', '巨鹿县'), ('129', '116', '新河县'), ('130', '116', '广宗县'), ('131', '116', '平乡县'), ('132', '116', '威 县'), ('133', '116', '清河县'), ('134', '116', '临西县'), ('135', '116', '南宫市'), ('136', '116', '沙河市'), ('137', '43', '保定'), ('138', '137', '市辖区'), ('139', '137', '新市区'), ('140', '137', '北市区'), ('141', '137', '南市区'), ('142', '137', '满城县'), ('143', '137', '清苑县'), ('144', '137', '涞水县'), ('145', '137', '阜平县'), ('146', '137', '徐水县'), ('147', '137', '定兴县'), ('148', '137', '唐 县'), ('149', '137', '高阳县'), ('150', '137', '容城县'), ('151', '137', '涞源县'), ('152', '137', '望都县'), ('153', '137', '安新县'), ('154', '137', '易 县'), ('155', '137', '曲阳县'), ('156', '137', '蠡 县'), ('157', '137', '顺平县'), ('158', '137', '博野县'), ('159', '137', '雄 县'), ('160', '137', '涿州市'), ('161', '137', '定州市'), ('162', '137', '安国市'), ('163', '137', '高碑店市'), ('164', '43', '张家口'), ('165', '164', '市辖区'), ('166', '164', '桥东区'), ('167', '164', '桥西区'), ('168', '164', '宣化区'), ('169', '164', '下花园区'), ('170', '164', '宣化县'), ('171', '164', '张北县'), ('172', '164', '康保县'), ('173', '164', '沽源县'), ('174', '164', '尚义县'), ('175', '164', '蔚 县'), ('176', '164', '阳原县'), ('177', '164', '怀安县'), ('178', '164', '万全县'), ('179', '164', '怀来县'), ('180', '164', '涿鹿县'), ('181', '164', '赤城县'), ('182', '164', '崇礼县'), ('183', '43', '承德'), ('184', '183', '市辖区'), ('185', '183', '双桥区'), ('186', '183', '双滦区'), ('187', '183', '鹰手营子矿区'), ('188', '183', '承德县'), ('189', '183', '兴隆县'), ('190', '183', '平泉县'), ('191', '183', '滦平县'), ('192', '183', '隆化县'), ('193', '183', '丰宁满族自治县'), ('194', '183', '宽城满族自治县'), ('196', '43', '沧州'), ('197', '196', '市辖区'), ('198', '196', '新华区'), ('199', '196', '运河区'), ('200', '196', '沧 县'), ('201', '196', '青 县'), ('202', '196', '东光县'), ('203', '196', '海兴县'), ('204', '196', '盐山县'), ('205', '196', '肃宁县'), ('206', '196', '南皮县'), ('207', '196', '吴桥县'), ('208', '196', '献 县'), ('209', '196', '孟村回族自治县'), ('210', '196', '泊头市'), ('211', '196', '任丘市'), ('212', '196', '黄骅市'), ('213', '196', '河间市'), ('214', '43', '廊坊'), ('215', '214', '市辖区'), ('216', '214', '安次区'), ('217', '214', '廊坊市广阳区'), ('218', '214', '固安县'), ('219', '214', '永清县'), ('220', '214', '香河县'), ('221', '214', '大城县'), ('222', '214', '文安县'), ('223', '214', '大厂回族自治县'), ('224', '214', '霸州市'), ('225', '214', '三河市'), ('226', '43', '衡水'), ('227', '226', '市辖区'), ('228', '226', '桃城区'), ('229', '226', '枣强县'), ('230', '226', '武邑县'), ('231', '226', '武强县'), ('232', '226', '饶阳县'), ('233', '226', '安平县'), ('234', '226', '故城县'), ('235', '226', '景 县'), ('236', '226', '阜城县'), ('237', '226', '冀州市'), ('238', '226', '深州市'), ('239', '0', '山西'), ('240', '239', '太原'), ('241', '240', '市辖区'), ('242', '240', '小店区'), ('243', '240', '迎泽区'), ('244', '240', '杏花岭区'), ('245', '240', '尖草坪区'), ('246', '240', '万柏林区'), ('247', '240', '晋源区'), ('248', '240', '清徐县'), ('249', '240', '阳曲县'), ('250', '240', '娄烦县'), ('251', '240', '古交市'), ('252', '239', '大同'), ('253', '252', '市辖区'), ('254', '252', '城 区'), ('255', '252', '矿 区'), ('256', '252', '南郊区'), ('257', '252', '新荣区'), ('258', '252', '阳高县'), ('259', '252', '天镇县'), ('260', '252', '广灵县'), ('261', '252', '灵丘县'), ('262', '252', '浑源县'), ('263', '252', '左云县'), ('264', '252', '大同县'), ('265', '239', '阳泉'), ('266', '265', '市辖区'), ('267', '265', '城 区'), ('268', '265', '矿 区'), ('269', '265', '郊 区'), ('270', '265', '平定县'), ('271', '265', '盂 县'), ('272', '239', '长治'), ('273', '272', '市辖区'), ('274', '272', '城 区'), ('275', '272', '郊 区'), ('276', '272', '长治县'), ('277', '272', '襄垣县'), ('278', '272', '屯留县'), ('279', '272', '平顺县'), ('280', '272', '黎城县'), ('281', '272', '壶关县'), ('282', '272', '长子县'), ('283', '272', '武乡县'), ('284', '272', '沁 县'), ('285', '272', '沁源县'), ('286', '272', '潞城市'), ('287', '239', '晋城'), ('288', '287', '市辖区'), ('289', '287', '城 区'), ('290', '287', '沁水县'), ('291', '287', '阳城县'), ('292', '287', '陵川县'), ('293', '287', '泽州县'), ('294', '287', '高平市'), ('295', '239', '朔州'), ('296', '295', '市辖区'), ('297', '295', '朔城区'), ('298', '295', '平鲁区'), ('299', '295', '山阴县'), ('300', '295', '应 县'), ('301', '295', '右玉县'), ('302', '295', '怀仁县'), ('303', '239', '晋中'), ('304', '303', '市辖区'), ('305', '303', '榆次区'), ('306', '303', '榆社县'), ('307', '303', '左权县'), ('308', '303', '和顺县'), ('309', '303', '昔阳县'), ('310', '303', '寿阳县'), ('311', '303', '太谷县'), ('312', '303', '祁 县'), ('313', '303', '平遥县'), ('314', '303', '灵石县'), ('315', '303', '介休市'), ('316', '239', '运城'), ('317', '316', '市辖区'), ('318', '316', '盐湖区'), ('319', '316', '临猗县'), ('320', '316', '万荣县'), ('321', '316', '闻喜县'), ('322', '316', '稷山县'), ('323', '316', '新绛县'), ('324', '316', '绛 县'), ('325', '316', '垣曲县'), ('326', '316', '夏 县'), ('327', '316', '平陆县'), ('328', '316', '芮城县'), ('329', '316', '永济市'), ('330', '316', '河津市'), ('331', '239', '忻州'), ('332', '331', '市辖区'), ('333', '331', '忻府区'), ('334', '331', '定襄县'), ('335', '331', '五台县'), ('336', '331', '代 县'), ('337', '331', '繁峙县'), ('338', '331', '宁武县'), ('339', '331', '静乐县'), ('340', '331', '神池县'), ('341', '331', '五寨县'), ('342', '331', '岢岚县'), ('343', '331', '河曲县'), ('344', '331', '保德县'), ('345', '331', '偏关县'), ('346', '331', '原平市'), ('347', '239', '临汾'), ('348', '347', '市辖区'), ('349', '347', '尧都区'), ('350', '347', '曲沃县'), ('351', '347', '翼城县'), ('352', '347', '襄汾县'), ('353', '347', '洪洞县'), ('354', '347', '古 县'), ('355', '347', '安泽县'), ('356', '347', '浮山县'), ('357', '347', '吉 县'), ('358', '347', '乡宁县'), ('359', '347', '大宁县'), ('360', '347', '隰 县'), ('361', '347', '永和县'), ('362', '347', '蒲 县'), ('363', '347', '汾西县'), ('364', '347', '侯马市'), ('365', '347', '霍州市'), ('366', '239', '吕梁地区'), ('367', '366', '孝义市'), ('368', '366', '离石市'), ('369', '366', '汾阳市'), ('370', '366', '文水县'), ('371', '366', '交城县'), ('372', '366', '兴 县'), ('373', '366', '临 县'), ('374', '366', '柳林县'), ('375', '366', '石楼县'), ('376', '366', '岚 县'), ('377', '366', '方山县'), ('378', '366', '中阳县'), ('379', '366', '交口县'), ('380', '0', '内蒙古'), ('381', '380', '呼和浩特'), ('382', '381', '市辖区'), ('383', '381', '新城区'), ('384', '381', '回民区'), ('385', '381', '玉泉区'), ('386', '381', '赛罕区'), ('387', '381', '土默特左旗'), ('388', '381', '托克托县'), ('389', '381', '和林格尔县'), ('390', '381', '清水河县'), ('391', '381', '武川县'), ('392', '380', '包头'), ('393', '392', '市辖区'), ('394', '392', '东河区'), ('395', '392', '昆都伦区'), ('396', '392', '青山区'), ('397', '392', '石拐区'), ('398', '392', '白云矿区'), ('399', '392', '九原区'), ('400', '392', '土默特右旗'), ('401', '392', '固阳县'), ('403', '380', '乌海'), ('404', '403', '市辖区'), ('405', '403', '海勃湾区'), ('406', '403', '海南区'), ('407', '403', '乌达区'), ('408', '380', '赤峰'), ('409', '408', '市辖区'), ('410', '408', '红山区'), ('411', '408', '元宝山区'), ('412', '408', '松山区'), ('413', '408', '阿鲁科尔沁旗'), ('414', '408', '巴林左旗'), ('415', '408', '巴林右旗'), ('416', '408', '林西县'), ('417', '408', '克什克腾旗'), ('418', '408', '翁牛特旗'), ('419', '408', '喀喇沁旗'), ('420', '408', '宁城县'), ('421', '408', '敖汉旗'), ('422', '380', '通辽'), ('423', '422', '市辖区'), ('424', '422', '科尔沁区'), ('425', '422', '科尔沁左翼中旗'), ('426', '422', '科尔沁左翼后旗'), ('427', '422', '开鲁县'), ('428', '422', '库伦旗'), ('429', '422', '奈曼旗'), ('430', '422', '扎鲁特旗'), ('431', '422', '霍林郭勒市'), ('432', '380', '呼伦贝尔盟'), ('433', '432', '海拉尔市'), ('434', '432', '满洲里市'), ('435', '432', '扎兰屯市'), ('436', '432', '牙克石市'), ('437', '432', '根河市'), ('438', '432', '额尔古纳市'), ('439', '432', '阿荣旗'), ('441', '432', '鄂伦春自治旗'), ('442', '432', '鄂温克族自治旗'), ('443', '432', '新巴尔虎右旗'), ('444', '432', '新巴尔虎左旗'), ('445', '432', '陈巴尔虎旗'), ('446', '380', '兴安盟'), ('447', '446', '乌兰浩特市'), ('448', '446', '阿尔山市'), ('449', '446', '科尔沁右翼前旗'), ('450', '446', '科尔沁右翼中旗'), ('451', '446', '扎赉特旗'), ('452', '446', '突泉县'), ('453', '380', '锡林郭勒盟'), ('454', '453', '二连浩特市'), ('455', '453', '锡林浩特市'), ('456', '453', '阿巴嘎旗'), ('457', '453', '苏尼特左旗'), ('458', '453', '苏尼特右旗'), ('459', '453', '东乌珠穆沁旗'), ('460', '453', '西乌珠穆沁旗'), ('461', '453', '太仆寺旗'), ('462', '453', '镶黄旗'), ('463', '453', '正镶白旗'), ('464', '453', '正蓝旗'), ('465', '453', '多伦县'), ('466', '380', '乌兰察布盟'), ('467', '466', '集宁市'), ('468', '466', '丰镇市'), ('469', '466', '卓资县'), ('470', '466', '化德县'), ('471', '466', '商都县'), ('472', '466', '兴和县'), ('473', '466', '凉城县'), ('474', '466', '察哈尔右翼前旗'), ('475', '466', '察哈尔右翼中旗'), ('476', '466', '察哈尔右翼后旗'), ('477', '466', '四子王旗'), ('478', '380', '伊克昭盟'), ('479', '478', '东胜市'), ('480', '478', '达拉特旗'), ('481', '478', '准格尔旗'), ('482', '478', '鄂托克前旗'), ('483', '478', '鄂托克旗'), ('484', '478', '杭锦旗'), ('485', '478', '乌审旗'), ('486', '478', '伊金霍洛旗'), ('487', '380', '巴彦淖尔盟'), ('488', '487', '临河市'), ('489', '487', '五原县'), ('490', '487', '磴口县'), ('491', '487', '乌拉特前旗'), ('492', '487', '乌拉特中旗'), ('493', '487', '乌拉特后旗'), ('494', '487', '杭锦后旗'), ('495', '380', '阿拉善盟'), ('496', '495', '阿拉善左旗'), ('497', '495', '阿拉善右旗'), ('498', '495', '额济纳旗'), ('499', '0', '辽宁'), ('500', '499', '沈阳'), ('501', '500', '市辖区'), ('502', '500', '和平区'), ('503', '500', '沈河区'), ('504', '500', '大东区'), ('505', '500', '皇姑区'), ('506', '500', '铁西区'), ('507', '500', '苏家屯区'), ('508', '500', '东陵区'), ('509', '500', '新城子区'), ('510', '500', '于洪区'), ('511', '500', '辽中县'), ('512', '500', '康平县'), ('513', '500', '法库县'), ('514', '500', '新民市'), ('515', '499', '大连'), ('516', '515', '市辖区'), ('517', '515', '中山区'), ('518', '515', '西岗区'), ('519', '515', '沙河口区'), ('520', '515', '甘井子区'), ('521', '515', '旅顺口区'), ('522', '515', '金州区'), ('523', '515', '长海县'), ('524', '515', '瓦房店市'), ('525', '515', '普兰店市'), ('526', '515', '庄河市'), ('527', '499', '鞍山'), ('528', '527', '市辖区'), ('529', '527', '铁东区'), ('530', '527', '铁西区'), ('531', '527', '立山区'), ('532', '527', '千山区'), ('533', '527', '台安县'), ('534', '527', '岫岩满族自治县'), ('535', '527', '海城市'), ('536', '499', '抚顺'), ('537', '536', '市辖区'), ('538', '536', '新抚区'), ('539', '536', '东洲区'), ('540', '536', '望花区'), ('541', '536', '顺城区'), ('542', '536', '抚顺县'), ('543', '536', '新宾满族自治县'), ('544', '536', '清原满族自治县'), ('545', '499', '本溪'), ('546', '545', '市辖区'), ('547', '545', '平山区'), ('548', '545', '溪湖区'), ('549', '545', '明山区'), ('550', '545', '南芬区'), ('551', '545', '本溪满族自治县'), ('552', '545', '桓仁满族自治县'), ('553', '499', '丹东'), ('554', '553', '市辖区'), ('555', '553', '元宝区'), ('556', '553', '振兴区'), ('557', '553', '振安区'), ('558', '553', '宽甸满族自治县'), ('559', '553', '东港市'), ('560', '553', '凤城市'), ('561', '499', '锦州'), ('562', '561', '市辖区'), ('563', '561', '古塔区'), ('564', '561', '凌河区'), ('565', '561', '太和区'), ('566', '561', '黑山县'), ('567', '561', '义 县'), ('568', '561', '凌海市'), ('569', '561', '北宁市'), ('570', '499', '营口'), ('571', '570', '市辖区'), ('572', '570', '站前区'), ('573', '570', '西市区'), ('574', '570', '鲅鱼圈区'), ('575', '570', '老边区'), ('576', '570', '盖州市'), ('577', '570', '大石桥市'), ('578', '499', '阜新'), ('579', '578', '市辖区'), ('580', '578', '海州区'), ('581', '578', '新邱区'), ('582', '578', '太平区'), ('583', '578', '清河门区'), ('584', '578', '细河区'), ('585', '578', '阜新蒙古族自治县'), ('586', '578', '彰武县'), ('587', '499', '辽阳'), ('588', '587', '市辖区'), ('589', '587', '白塔区'), ('590', '587', '文圣区'), ('591', '587', '宏伟区'), ('592', '587', '弓长岭区'), ('593', '587', '太子河区'), ('594', '587', '辽阳县'), ('595', '587', '灯塔市'), ('596', '499', '盘锦'), ('597', '596', '市辖区'), ('598', '596', '双台子区'), ('599', '596', '兴隆台区'), ('600', '596', '大洼县'), ('601', '596', '盘山县'), ('602', '499', '铁岭'), ('603', '602', '市辖区'), ('604', '602', '银州区'), ('605', '602', '清河区'), ('606', '602', '铁岭县'), ('607', '602', '西丰县'), ('608', '602', '昌图县'), ('609', '602', '铁法市'), ('610', '602', '开原市'), ('611', '499', '朝阳'), ('612', '611', '市辖区'), ('613', '611', '双塔区'), ('614', '611', '龙城区'), ('615', '611', '朝阳县'), ('616', '611', '建平县'), ('618', '611', '北票市'), ('619', '611', '凌源市'), ('620', '499', '葫芦岛'), ('621', '620', '市辖区'), ('622', '620', '连山区'), ('623', '620', '龙港区'), ('624', '620', '南票区'), ('625', '620', '绥中县'), ('626', '620', '建昌县'), ('627', '620', '兴城市'), ('628', '0', '吉林'), ('629', '628', '长春'), ('630', '629', '市辖区'), ('631', '629', '南关区'), ('632', '629', '宽城区'), ('633', '629', '朝阳区'), ('634', '629', '二道区'), ('635', '629', '绿园区'), ('636', '629', '双阳区'), ('637', '629', '农安县'), ('638', '629', '九台市'), ('639', '629', '榆树市'), ('640', '629', '德惠市'), ('641', '628', '吉林'), ('642', '641', '市辖区'), ('643', '641', '昌邑区'), ('644', '641', '龙潭区'), ('645', '641', '船营区'), ('646', '641', '丰满区'), ('647', '641', '永吉县'), ('648', '641', '蛟河市'), ('649', '641', '桦甸市'), ('650', '641', '舒兰市'), ('651', '641', '磐石市'), ('652', '628', '四平'), ('653', '652', '市辖区'), ('654', '652', '铁西区'), ('655', '652', '铁东区'), ('656', '652', '梨树县'), ('657', '652', '伊通满族自治县'), ('658', '652', '公主岭市'), ('659', '652', '双辽市'), ('660', '628', '辽源'), ('661', '660', '市辖区'), ('662', '660', '龙山区'), ('663', '660', '西安区'), ('664', '660', '东丰县'), ('665', '660', '东辽县'), ('666', '628', '通化'), ('667', '666', '市辖区'), ('668', '666', '东昌区'), ('669', '666', '二道江区'), ('670', '666', '通化县'), ('671', '666', '辉南县'), ('672', '666', '柳河县'), ('673', '666', '梅河口市'), ('674', '666', '集安市'), ('675', '628', '白山'), ('676', '675', '市辖区'), ('677', '675', '八道江区'), ('678', '675', '抚松县'), ('679', '675', '靖宇县'), ('680', '675', '长白朝鲜族自治县'), ('681', '675', '江源县'), ('682', '675', '临江市'), ('683', '628', '松原'), ('684', '683', '市辖区'), ('685', '683', '宁江区'), ('687', '683', '长岭县'), ('688', '683', '乾安县'), ('689', '683', '扶余县'), ('690', '628', '白城'), ('691', '690', '市辖区'), ('692', '690', '洮北区'), ('693', '690', '镇赉县'), ('694', '690', '通榆县'), ('695', '690', '洮南市'), ('696', '690', '大安市'), ('697', '628', '延边朝鲜族自治州'), ('698', '697', '延吉市'), ('699', '697', '图们市'), ('700', '697', '敦化市'), ('701', '697', '珲春市'), ('702', '697', '龙井市'), ('703', '697', '和龙市'), ('704', '697', '汪清县'), ('705', '697', '安图县'), ('706', '0', '黑龙江'), ('707', '706', '哈尔滨'), ('708', '707', '市辖区'), ('709', '707', '道里区'), ('710', '707', '南岗区'), ('711', '707', '道外区'), ('712', '707', '太平区'), ('713', '707', '香坊区'), ('714', '707', '动力区'), ('715', '707', '平房区'), ('716', '707', '呼兰县'), ('717', '707', '依兰县'), ('718', '707', '方正县'), ('719', '707', '宾 县'), ('720', '707', '巴彦县'), ('721', '707', '木兰县'), ('722', '707', '通河县'), ('723', '707', '延寿县'), ('724', '707', '阿城市'), ('725', '707', '双城市'), ('726', '707', '尚志市'), ('727', '707', '五常市'), ('728', '706', '齐齐哈尔'), ('729', '728', '市辖区'), ('730', '728', '龙沙区'), ('731', '728', '建华区'), ('732', '728', '铁锋区'), ('733', '728', '昂昂溪区'), ('734', '728', '富拉尔基区'), ('735', '728', '碾子山区'), ('736', '728', '梅里斯达斡尔族区'), ('737', '728', '龙江县'), ('738', '728', '依安县'), ('739', '728', '泰来县'), ('740', '728', '甘南县'), ('741', '728', '富裕县'), ('742', '728', '克山县'), ('743', '728', '克东县'), ('744', '728', '拜泉县'), ('745', '728', '讷河市'), ('746', '706', '鸡西'), ('747', '746', '市辖区'), ('748', '746', '鸡冠区'), ('749', '746', '恒山区'), ('750', '746', '滴道区'), ('751', '746', '梨树区'), ('752', '746', '城子河区'), ('753', '746', '麻山区'), ('754', '746', '鸡东县'), ('755', '746', '虎林市'), ('756', '746', '密山市'), ('757', '706', '鹤岗'), ('758', '757', '市辖区'), ('759', '757', '向阳区'), ('760', '757', '工农区'), ('761', '757', '南山区'), ('762', '757', '兴安区'), ('763', '757', '东山区'), ('764', '757', '兴山区'), ('765', '757', '萝北县'), ('766', '757', '绥滨县'), ('767', '706', '双鸭山'), ('768', '767', '市辖区'), ('769', '767', '尖山区'), ('770', '767', '岭东区'), ('771', '767', '四方台区'), ('772', '767', '宝山区'), ('773', '767', '集贤县'), ('774', '767', '友谊县'), ('775', '767', '宝清县'), ('776', '767', '饶河县'), ('777', '706', '大庆'), ('778', '777', '市辖区'), ('779', '777', '萨尔图区'), ('780', '777', '龙凤区'), ('781', '777', '让胡路区'), ('782', '777', '红岗区'), ('783', '777', '大同区'), ('784', '777', '肇州县'), ('785', '777', '肇源县'), ('786', '777', '林甸县'), ('788', '706', '伊春'), ('789', '788', '市辖区'), ('790', '788', '伊春区'), ('791', '788', '南岔区'), ('792', '788', '友好区'), ('793', '788', '西林区'), ('794', '788', '翠峦区'), ('795', '788', '新青区'), ('796', '788', '美溪区'), ('797', '788', '金山屯区'), ('798', '788', '五营区'), ('799', '788', '乌马河区'), ('800', '788', '汤旺河区'), ('801', '788', '带岭区'), ('802', '788', '乌伊岭区'), ('803', '788', '红星区'), ('804', '788', '上甘岭区'), ('805', '788', '嘉荫县'), ('806', '788', '铁力市'), ('807', '706', '佳木斯'), ('808', '807', '市辖区'), ('809', '807', '永红区'), ('810', '807', '向阳区'), ('811', '807', '前进区'), ('812', '807', '东风区'), ('813', '807', '郊 区'), ('814', '807', '桦南县'), ('815', '807', '桦川县'), ('816', '807', '汤原县'), ('817', '807', '抚远县'), ('818', '807', '同江市'), ('819', '807', '富锦市'), ('820', '706', '七台河'), ('821', '820', '市辖区'), ('822', '820', '新兴区'), ('823', '820', '桃山区'), ('824', '820', '茄子河区'), ('825', '820', '勃利县'), ('826', '706', '牡丹江'), ('827', '826', '市辖区'), ('828', '826', '东安区'), ('829', '826', '阳明区'), ('830', '826', '爱民区'), ('831', '826', '西安区'), ('832', '826', '东宁县'), ('833', '826', '林口县'), ('834', '826', '绥芬河市'), ('835', '826', '海林市'), ('836', '826', '宁安市'), ('837', '826', '穆棱市'), ('838', '706', '黑河'), ('839', '838', '市辖区'), ('840', '838', '爱辉区'), ('841', '838', '嫩江县'), ('842', '838', '逊克县'), ('843', '838', '孙吴县'), ('844', '838', '北安市'), ('845', '838', '五大连池市'), ('846', '706', '绥化'), ('847', '846', '市辖区'), ('848', '846', '北林区'), ('849', '846', '望奎县'), ('850', '846', '兰西县'), ('851', '846', '青冈县'), ('852', '846', '庆安县'), ('853', '846', '明水县'), ('854', '846', '绥棱县'), ('855', '846', '安达市'), ('856', '846', '肇东市'), ('857', '846', '海伦市'), ('858', '706', '大兴安岭地区'), ('859', '858', '呼玛县'), ('860', '858', '塔河县'), ('861', '858', '漠河县'), ('862', '0', '上海'), ('863', '862', '上海市辖'), ('864', '863', '黄浦区'), ('865', '863', '卢湾区'), ('866', '863', '徐汇区'), ('867', '863', '长宁区'), ('868', '863', '静安区'), ('869', '863', '普陀区'), ('870', '863', '闸北区'), ('871', '863', '虹口区'), ('872', '863', '杨浦区'), ('873', '863', '闵行区'), ('874', '863', '宝山区'), ('875', '863', '嘉定区'), ('876', '863', '浦东新区'), ('877', '863', '金山区'), ('878', '863', '松江区'), ('879', '863', '青浦区'), ('880', '862', '上海县辖'), ('881', '880', '南汇县'), ('882', '880', '奉贤县'), ('883', '880', '崇明县'), ('884', '0', '江苏'), ('885', '884', '南京'), ('886', '885', '市辖区'), ('887', '885', '玄武区'), ('888', '885', '白下区'), ('889', '885', '秦淮区'), ('890', '885', '建邺区'), ('891', '885', '鼓楼区'), ('892', '885', '下关区'), ('893', '885', '浦口区'), ('894', '885', '大厂区'), ('895', '885', '栖霞区'), ('896', '885', '雨花台区'), ('897', '885', '江宁区'), ('898', '885', '江浦县'), ('899', '885', '六合县'), ('900', '885', '溧水县'), ('901', '885', '高淳县'), ('902', '884', '无锡'), ('903', '902', '市辖区'), ('904', '902', '崇安区'), ('905', '902', '南长区'), ('906', '902', '北塘区'), ('907', '902', '锡山区'), ('908', '902', '惠山区'), ('909', '902', '滨湖区'), ('910', '902', '江阴市'), ('911', '902', '宜兴市'), ('912', '884', '徐州'), ('913', '912', '市辖区'), ('914', '912', '鼓楼区'), ('915', '912', '云龙区'), ('916', '912', '九里区'), ('917', '912', '贾汪区'), ('918', '912', '泉山区'), ('919', '912', '丰 县'), ('920', '912', '沛 县'), ('921', '912', '铜山县'), ('922', '912', '睢宁县'), ('923', '912', '新沂市'), ('924', '912', '邳州市'), ('925', '884', '常州'), ('926', '925', '市辖区'), ('927', '925', '天宁区'), ('928', '925', '钟楼区'), ('929', '925', '戚墅堰区'), ('930', '925', '郊 区'), ('931', '925', '溧阳市'), ('932', '925', '金坛市'), ('933', '925', '武进市'), ('934', '884', '苏州'), ('935', '934', '市辖区'), ('936', '934', '沧浪区'), ('937', '934', '平江区'), ('938', '934', '金阊区'), ('939', '934', '虎丘区'), ('940', '934', '吴中区'), ('941', '934', '相城区'), ('942', '934', '常熟市'), ('943', '934', '张家港市'), ('944', '934', '昆山市'), ('945', '934', '吴江市'), ('946', '934', '太仓市'), ('947', '884', '南通'), ('948', '947', '市辖区'), ('949', '947', '崇川区'), ('950', '947', '港闸区'), ('951', '947', '海安县'), ('952', '947', '如东县'), ('953', '947', '启东市'), ('954', '947', '如皋市'), ('955', '947', '通州市'), ('956', '947', '海门市'), ('957', '884', '连云港'), ('958', '957', '市辖区'), ('959', '957', '连云区'), ('960', '957', '云台区'), ('961', '957', '新浦区'), ('962', '957', '海州区'), ('963', '957', '赣榆县'), ('964', '957', '东海县'), ('965', '957', '灌云县'), ('966', '957', '灌南县'), ('967', '884', '淮安'), ('968', '967', '市辖区'), ('969', '967', '清河区'), ('970', '967', '楚州区'), ('971', '967', '淮阴区'), ('972', '967', '清浦区'), ('973', '967', '涟水县'), ('974', '967', '洪泽县'), ('975', '967', '盱眙县'), ('976', '967', '金湖县'), ('977', '884', '盐城'), ('978', '977', '市辖区'), ('979', '977', '城 区'), ('980', '977', '响水县'), ('981', '977', '滨海县'), ('982', '977', '阜宁县'), ('983', '977', '射阳县'), ('984', '977', '建湖县'), ('985', '977', '盐都县'), ('986', '977', '东台市'), ('987', '977', '大丰市'), ('988', '884', '扬州'), ('989', '988', '市辖区'), ('990', '988', '广陵区'), ('991', '988', '邗江区'), ('992', '988', '郊 区'), ('993', '988', '宝应县'), ('994', '988', '仪征市'), ('995', '988', '高邮市'), ('996', '988', '江都市'), ('997', '884', '镇江'), ('998', '997', '市辖区'), ('999', '997', '京口区'), ('1000', '997', '润州区'), ('1001', '997', '丹徒县'), ('1002', '997', '丹阳市'), ('1003', '997', '扬中市'), ('1004', '997', '句容市'), ('1005', '884', '泰州'), ('1006', '1005', '市辖区'), ('1007', '1005', '海陵区'), ('1008', '1005', '高港区'), ('1009', '1005', '兴化市'), ('1010', '1005', '靖江市'), ('1011', '1005', '泰兴市'), ('1012', '1005', '姜堰市'), ('1013', '884', '宿迁'), ('1014', '1013', '市辖区'), ('1015', '1013', '宿城区'), ('1016', '1013', '宿豫县'), ('1017', '1013', '沭阳县'), ('1018', '1013', '泗阳县'), ('1019', '1013', '泗洪县'), ('1020', '0', '浙江'), ('1021', '1020', '杭州'), ('1022', '1021', '市辖区'), ('1023', '1021', '上城区'), ('1024', '1021', '下城区'), ('1025', '1021', '江干区'), ('1026', '1021', '拱墅区'), ('1027', '1021', '西湖区'), ('1028', '1021', '滨江区'), ('1029', '1021', '桐庐县'), ('1030', '1021', '淳安县'), ('1031', '1021', '萧山市'), ('1032', '1021', '建德市'), ('1033', '1021', '富阳市'), ('1034', '1021', '余杭市'), ('1035', '1021', '临安市'), ('1036', '1020', '宁波'), ('1037', '1036', '市辖区'), ('1038', '1036', '海曙区'), ('1039', '1036', '江东区'), ('1040', '1036', '江北区'), ('1041', '1036', '北仑区'), ('1042', '1036', '镇海区'), ('1043', '1036', '象山县'), ('1044', '1036', '宁海县'), ('1045', '1036', '鄞 县'), ('1046', '1036', '余姚市'), ('1047', '1036', '慈溪市'), ('1048', '1036', '奉化市'), ('1049', '1020', '温州'), ('1050', '1049', '市辖区'), ('1051', '1049', '鹿城区'), ('1052', '1049', '龙湾区'), ('1053', '1049', '瓯海区'), ('1054', '1049', '洞头县'), ('1055', '1049', '永嘉县'), ('1056', '1049', '平阳县'), ('1057', '1049', '苍南县'), ('1058', '1049', '文成县'), ('1059', '1049', '泰顺县'), ('1060', '1049', '瑞安市'), ('1061', '1049', '乐清市'), ('1062', '1020', '嘉兴'), ('1063', '1062', '市辖区'), ('1064', '1062', '秀城区'), ('1065', '1062', '秀洲区'), ('1066', '1062', '嘉善县'), ('1067', '1062', '海盐县'), ('1068', '1062', '海宁市'), ('1069', '1062', '平湖市'), ('1070', '1062', '桐乡市'), ('1071', '1020', '湖州'), ('1072', '1071', '市辖区'), ('1073', '1071', '德清县'), ('1074', '1071', '长兴县'), ('1075', '1071', '安吉县'), ('1076', '1020', '绍兴'), ('1077', '1076', '市辖区'), ('1078', '1076', '越城区'), ('1079', '1076', '绍兴县'), ('1080', '1076', '新昌县'), ('1081', '1076', '诸暨市'), ('1082', '1076', '上虞市'), ('1083', '1076', '嵊州市'), ('1084', '1020', '金华'), ('1085', '1084', '市辖区'), ('1086', '1084', '婺城区'), ('1087', '1084', '金东区'), ('1088', '1084', '武义县'), ('1089', '1084', '浦江县'), ('1090', '1084', '磐安县'), ('1091', '1084', '兰溪市'), ('1092', '1084', '义乌市'), ('1093', '1084', '东阳市'), ('1094', '1084', '永康市'), ('1095', '1020', '衢州'), ('1096', '1095', '市辖区'), ('1097', '1095', '柯城区'), ('1098', '1095', '衢 县'), ('1099', '1095', '常山县'), ('1100', '1095', '开化县'), ('1101', '1095', '龙游县'), ('1102', '1095', '江山市'), ('1103', '1020', '舟山'), ('1104', '1103', '市辖区'), ('1105', '1103', '定海区'), ('1106', '1103', '普陀区'), ('1107', '1103', '岱山县'), ('1108', '1103', '嵊泗县'), ('1109', '1020', '台州'), ('1110', '1109', '市辖区'), ('1111', '1109', '椒江区'), ('1112', '1109', '黄岩区'), ('1113', '1109', '路桥区'), ('1114', '1109', '玉环县'), ('1115', '1109', '三门县'), ('1116', '1109', '天台县'), ('1117', '1109', '仙居县'), ('1118', '1109', '温岭市'), ('1119', '1109', '临海市'), ('1120', '1020', '丽水'), ('1121', '1120', '市辖区'), ('1122', '1120', '莲都区'), ('1123', '1120', '青田县'), ('1124', '1120', '缙云县'), ('1125', '1120', '遂昌县'), ('1126', '1120', '松阳县'), ('1127', '1120', '云和县'), ('1128', '1120', '庆元县'), ('1129', '1120', '景宁畲族自治县'), ('1130', '1120', '龙泉市'), ('1131', '0', '安徽'), ('1132', '1131', '合肥'), ('1133', '1132', '市辖区'), ('1134', '1132', '东市区'), ('1135', '1132', '中市区'), ('1136', '1132', '西市区'), ('1137', '1132', '郊 区'), ('1138', '1132', '长丰县'), ('1139', '1132', '肥东县'), ('1140', '1132', '肥西县'), ('1141', '1131', '芜湖'), ('1142', '1141', '市辖区'), ('1143', '1141', '镜湖区'), ('1144', '1141', '马塘区'), ('1145', '1141', '新芜区'), ('1146', '1141', '鸠江区'), ('1147', '1141', '芜湖县'), ('1148', '1141', '繁昌县'), ('1149', '1141', '南陵县'), ('1150', '1131', '蚌埠'), ('1151', '1150', '市辖区'), ('1152', '1150', '东市区'), ('1153', '1150', '中市区'), ('1154', '1150', '西市区'), ('1155', '1150', '郊 区'), ('1156', '1150', '怀远县'), ('1157', '1150', '五河县'), ('1158', '1150', '固镇县'), ('1159', '1131', '淮南'), ('1160', '1159', '市辖区'), ('1161', '1159', '大通区'), ('1162', '1159', '田家庵区'), ('1163', '1159', '谢家集区'), ('1164', '1159', '八公山区'), ('1165', '1159', '潘集区'), ('1166', '1159', '凤台县'), ('1167', '1131', '马鞍山'), ('1168', '1167', '市辖区'), ('1169', '1167', '金家庄区'), ('1170', '1167', '花山区'), ('1171', '1167', '雨山区'), ('1172', '1167', '向山区'), ('1173', '1167', '当涂县'), ('1174', '1131', '淮北'), ('1175', '1174', '市辖区'), ('1176', '1174', '杜集区'), ('1177', '1174', '相山区'), ('1178', '1174', '烈山区'), ('1179', '1174', '濉溪县'), ('1180', '1131', '铜陵'), ('1181', '1180', '市辖区'), ('1182', '1180', '铜官山区'), ('1183', '1180', '狮子山区'), ('1184', '1180', '郊 区'), ('1185', '1180', '铜陵县'), ('1186', '1131', '安庆'), ('1187', '1186', '市辖区'), ('1188', '1186', '迎江区'), ('1189', '1186', '大观区'), ('1190', '1186', '郊 区'), ('1191', '1186', '怀宁县'), ('1192', '1186', '枞阳县'), ('1193', '1186', '潜山县'), ('1194', '1186', '太湖县'), ('1195', '1186', '宿松县'), ('1196', '1186', '望江县'), ('1197', '1186', '岳西县'), ('1198', '1186', '桐城市'), ('1199', '1131', '黄山'), ('1200', '1199', '市辖区'), ('1201', '1199', '屯溪区'), ('1202', '1199', '黄山区'), ('1203', '1199', '徽州区'), ('1204', '1199', '歙 县'), ('1205', '1199', '休宁县'), ('1206', '1199', '黟 县'), ('1207', '1199', '祁门县'), ('1208', '1131', '滁州'), ('1209', '1208', '市辖区'), ('1210', '1208', '琅琊区'), ('1211', '1208', '南谯区'), ('1212', '1208', '来安县'), ('1213', '1208', '全椒县'), ('1214', '1208', '定远县'), ('1215', '1208', '凤阳县'), ('1216', '1208', '天长市'), ('1217', '1208', '明光市'), ('1218', '1131', '阜阳'), ('1219', '1218', '市辖区'), ('1220', '1218', '颍州区'), ('1221', '1218', '颍东区'), ('1222', '1218', '颍泉区'), ('1223', '1218', '临泉县'), ('1224', '1218', '太和县'), ('1225', '1218', '阜南县'), ('1226', '1218', '颍上县'), ('1227', '1218', '界首市'), ('1228', '1131', '宿州'), ('1229', '1228', '市辖区'), ('1230', '1228', '墉桥区'), ('1231', '1228', '砀山县'), ('1232', '1228', '萧 县'), ('1233', '1228', '灵璧县'), ('1234', '1228', '泗 县'), ('1235', '1131', '巢湖'), ('1236', '1235', '市辖区'), ('1237', '1235', '居巢区'), ('1238', '1235', '庐江县'), ('1239', '1235', '无为县'), ('1240', '1235', '含山县'), ('1241', '1235', '和 县'), ('1242', '1131', '六安'), ('1243', '1242', '市辖区'), ('1244', '1242', '金安区'), ('1245', '1242', '裕安区'), ('1246', '1242', '寿 县'), ('1247', '1242', '霍邱县'), ('1248', '1242', '舒城县'), ('1249', '1242', '金寨县'), ('1250', '1242', '霍山县'), ('1251', '1131', '亳州'), ('1252', '1251', '市辖区'), ('1253', '1251', '谯城区'), ('1254', '1251', '涡阳县'), ('1255', '1251', '蒙城县'), ('1256', '1251', '利辛县'), ('1257', '1131', '池州'), ('1258', '1257', '市辖区'), ('1259', '1257', '贵池区'), ('1260', '1257', '东至县'), ('1261', '1257', '石台县'), ('1262', '1257', '青阳县'), ('1263', '1131', '宣城'), ('1264', '1263', '市辖区'), ('1265', '1263', '宣州区'), ('1266', '1263', '郎溪县'), ('1267', '1263', '广德县'), ('1268', '1263', '泾 县'), ('1269', '1263', '绩溪县'), ('1270', '1263', '旌德县'), ('1271', '1263', '宁国市'), ('1272', '0', '福建'), ('1273', '1272', '福州'), ('1274', '1273', '市辖区'), ('1275', '1273', '鼓楼区'), ('1276', '1273', '台江区'), ('1277', '1273', '仓山区'), ('1278', '1273', '马尾区'), ('1279', '1273', '晋安区'), ('1280', '1273', '闽侯县'), ('1281', '1273', '连江县'), ('1282', '1273', '罗源县'), ('1283', '1273', '闽清县'), ('1284', '1273', '永泰县'), ('1285', '1273', '平潭县'), ('1286', '1273', '福清市'), ('1287', '1273', '长乐市'), ('1288', '1272', '厦门'), ('1289', '1288', '市辖区'), ('1290', '1288', '鼓浪屿区'), ('1291', '1288', '思明区'), ('1292', '1288', '开元区'), ('1293', '1288', '杏林区'), ('1294', '1288', '湖里区'), ('1295', '1288', '集美区'), ('1296', '1288', '同安区'), ('1297', '1272', '莆田'), ('1298', '1297', '市辖区'), ('1299', '1297', '城厢区'), ('1300', '1297', '涵江区'), ('1301', '1297', '莆田县'), ('1302', '1297', '仙游县'), ('1303', '1272', '三明'), ('1304', '1303', '市辖区'), ('1305', '1303', '梅列区'), ('1306', '1303', '三元区'), ('1307', '1303', '明溪县'), ('1308', '1303', '清流县'), ('1309', '1303', '宁化县'), ('1310', '1303', '大田县'), ('1311', '1303', '尤溪县'), ('1312', '1303', '沙 县'), ('1313', '1303', '将乐县'), ('1314', '1303', '泰宁县'), ('1315', '1303', '建宁县'), ('1316', '1303', '永安市'), ('1317', '1272', '泉州'), ('1318', '1317', '市辖区'), ('1319', '1317', '鲤城区'), ('1320', '1317', '丰泽区'), ('1321', '1317', '洛江区'), ('1322', '1317', '泉港区'), ('1323', '1317', '惠安县'), ('1324', '1317', '安溪县'), ('1325', '1317', '永春县'), ('1326', '1317', '德化县'), ('1327', '1317', '金门县'), ('1328', '1317', '石狮市'), ('1329', '1317', '晋江市'), ('1330', '1317', '南安市'), ('1331', '1272', '漳州'), ('1332', '1331', '市辖区'), ('1333', '1331', '芗城区'), ('1334', '1331', '龙文区'), ('1335', '1331', '云霄县'), ('1336', '1331', '漳浦县'), ('1337', '1331', '诏安县'), ('1338', '1331', '长泰县'), ('1339', '1331', '东山县'), ('1340', '1331', '南靖县'), ('1341', '1331', '平和县'), ('1342', '1331', '华安县'), ('1343', '1331', '龙海市'), ('1344', '1272', '南平'), ('1345', '1344', '市辖区'), ('1346', '1344', '延平区'), ('1347', '1344', '顺昌县'), ('1348', '1344', '浦城县'), ('1349', '1344', '光泽县'), ('1350', '1344', '松溪县'), ('1351', '1344', '政和县'), ('1352', '1344', '邵武市'), ('1353', '1344', '武夷山市'), ('1354', '1344', '建瓯市'), ('1355', '1344', '建阳市'), ('1356', '1272', '龙岩'), ('1357', '1356', '市辖区'), ('1358', '1356', '新罗区'), ('1359', '1356', '长汀县'), ('1360', '1356', '永定县'), ('1361', '1356', '上杭县'), ('1362', '1356', '武平县'), ('1363', '1356', '连城县'), ('1364', '1356', '漳平市'), ('1365', '1272', '宁德'), ('1366', '1365', '市辖区'), ('1367', '1365', '蕉城区'), ('1368', '1365', '霞浦县'), ('1369', '1365', '古田县'), ('1370', '1365', '屏南县'), ('1371', '1365', '寿宁县'), ('1372', '1365', '周宁县'), ('1373', '1365', '柘荣县'), ('1374', '1365', '福安市'), ('1375', '1365', '福鼎市'), ('1376', '0', '江西'), ('1377', '1376', '南昌'), ('1378', '1377', '市辖区'), ('1379', '1377', '东湖区'), ('1380', '1377', '西湖区'), ('1381', '1377', '青云谱区'), ('1382', '1377', '湾里区'), ('1383', '1377', '郊 区'), ('1384', '1377', '南昌县'), ('1385', '1377', '新建县'), ('1386', '1377', '安义县'), ('1387', '1377', '进贤县'), ('1388', '1376', '景德镇'), ('1389', '1388', '市辖区'), ('1390', '1388', '昌江区'), ('1391', '1388', '珠山区'), ('1392', '1388', '浮梁县'), ('1393', '1388', '乐平市'), ('1394', '1376', '萍乡'), ('1395', '1394', '市辖区'), ('1396', '1394', '安源区'), ('1397', '1394', '湘东区'), ('1398', '1394', '莲花县'), ('1399', '1394', '上栗县'), ('1400', '1394', '芦溪县'), ('1401', '1376', '九江'), ('1402', '1401', '市辖区'), ('1403', '1401', '庐山区'), ('1404', '1401', '浔阳区'), ('1405', '1401', '九江县'), ('1406', '1401', '武宁县'), ('1407', '1401', '修水县'), ('1408', '1401', '永修县'), ('1409', '1401', '德安县'), ('1410', '1401', '星子县'), ('1411', '1401', '都昌县'), ('1412', '1401', '湖口县'), ('1413', '1401', '彭泽县'), ('1414', '1401', '瑞昌市'), ('1415', '1376', '新余'), ('1416', '1415', '市辖区'), ('1417', '1415', '渝水区'), ('1418', '1415', '分宜县'), ('1419', '1376', '鹰潭'), ('1420', '1419', '市辖区'), ('1421', '1419', '月湖区'), ('1422', '1419', '余江县'), ('1423', '1419', '贵溪市'), ('1424', '1376', '赣州'), ('1425', '1424', '市辖区'), ('1426', '1424', '章贡区'), ('1427', '1424', '赣 县'), ('1428', '1424', '信丰县'), ('1429', '1424', '大余县'), ('1430', '1424', '上犹县'), ('1431', '1424', '崇义县'), ('1432', '1424', '安远县'), ('1433', '1424', '龙南县'), ('1434', '1424', '定南县'), ('1435', '1424', '全南县'), ('1436', '1424', '宁都县'), ('1437', '1424', '于都县'), ('1438', '1424', '兴国县'), ('1439', '1424', '会昌县'), ('1440', '1424', '寻乌县'), ('1441', '1424', '石城县'), ('1442', '1424', '瑞金市'), ('1443', '1424', '南康市'), ('1444', '1376', '吉安'), ('1445', '1444', '市辖区'), ('1446', '1444', '吉州区'), ('1447', '1444', '青原区'), ('1448', '1444', '吉安县'), ('1449', '1444', '吉水县'), ('1450', '1444', '峡江县'), ('1451', '1444', '新干县'), ('1452', '1444', '永丰县'), ('1453', '1444', '泰和县'), ('1454', '1444', '遂川县'), ('1455', '1444', '万安县'), ('1456', '1444', '安福县'), ('1457', '1444', '永新县'), ('1458', '1444', '井冈山市'), ('1459', '1376', '宜春'), ('1460', '1459', '市辖区'), ('1461', '1459', '袁州区'), ('1462', '1459', '奉新县'), ('1463', '1459', '万载县'), ('1464', '1459', '上高县'), ('1465', '1459', '宜丰县'), ('1466', '1459', '靖安县'), ('1467', '1459', '铜鼓县'), ('1468', '1459', '丰城市'), ('1469', '1459', '樟树市'), ('1470', '1459', '高安市'), ('1471', '1376', '抚州'), ('1472', '1471', '市辖区'), ('1473', '1471', '临川区'), ('1474', '1471', '南城县'), ('1475', '1471', '黎川县'), ('1476', '1471', '南丰县'), ('1477', '1471', '崇仁县'), ('1478', '1471', '乐安县'), ('1479', '1471', '宜黄县'), ('1480', '1471', '金溪县'), ('1481', '1471', '资溪县'), ('1482', '1471', '东乡县'), ('1483', '1471', '广昌县'), ('1484', '1376', '上饶'), ('1485', '1484', '市辖区'), ('1486', '1484', '信州区'), ('1487', '1484', '上饶县'), ('1488', '1484', '广丰县'), ('1489', '1484', '玉山县'), ('1490', '1484', '铅山县'), ('1491', '1484', '横峰县'), ('1492', '1484', '弋阳县'), ('1493', '1484', '余干县'), ('1494', '1484', '波阳县'), ('1495', '1484', '万年县'), ('1496', '1484', '婺源县'), ('1497', '1484', '德兴市'), ('1498', '0', '山东'), ('1499', '1498', '济南'), ('1500', '1499', '市辖区'), ('1501', '1499', '历下区'), ('1502', '1499', '市中区'), ('1503', '1499', '槐荫区'), ('1504', '1499', '天桥区'), ('1505', '1499', '历城区'), ('1506', '1499', '长清县'), ('1507', '1499', '平阴县'), ('1508', '1499', '济阳县'), ('1509', '1499', '商河县'), ('1510', '1499', '章丘市'), ('1511', '1498', '青岛'), ('1512', '1511', '市辖区'), ('1513', '1511', '市南区'), ('1514', '1511', '市北区'), ('1515', '1511', '四方区'), ('1516', '1511', '黄岛区'), ('1517', '1511', '崂山区'), ('1518', '1511', '李沧区'), ('1519', '1511', '城阳区'), ('1520', '1511', '胶州市'), ('1521', '1511', '即墨市'), ('1522', '1511', '平度市'), ('1523', '1511', '胶南市'), ('1524', '1511', '莱西市'), ('1525', '1498', '淄博'), ('1526', '1525', '市辖区'), ('1527', '1525', '淄川区'), ('1528', '1525', '张店区'), ('1529', '1525', '博山区'), ('1530', '1525', '临淄区'), ('1531', '1525', '周村区'), ('1532', '1525', '桓台县'), ('1533', '1525', '高青县'), ('1534', '1525', '沂源县'), ('1535', '1498', '枣庄'), ('1536', '1535', '市辖区'), ('1537', '1535', '市中区'), ('1538', '1535', '薛城区'), ('1539', '1535', '峄城区'), ('1540', '1535', '台儿庄区'), ('1541', '1535', '山亭区'), ('1542', '1535', '滕州市'), ('1543', '1498', '东营'), ('1544', '1543', '市辖区'), ('1545', '1543', '东营区'), ('1546', '1543', '河口区'), ('1547', '1543', '垦利县'), ('1548', '1543', '利津县'), ('1549', '1543', '广饶县'), ('1550', '1498', '烟台'), ('1551', '1550', '市辖区'), ('1552', '1550', '芝罘区'), ('1553', '1550', '福山区'), ('1554', '1550', '牟平区'), ('1555', '1550', '莱山区'), ('1556', '1550', '长岛县'), ('1557', '1550', '龙口市'), ('1558', '1550', '莱阳市'), ('1559', '1550', '莱州市'), ('1560', '1550', '蓬莱市'), ('1561', '1550', '招远市'), ('1562', '1550', '栖霞市'), ('1563', '1550', '海阳市'), ('1564', '1498', '潍坊'), ('1565', '1564', '市辖区'), ('1566', '1564', '潍城区'), ('1567', '1564', '寒亭区'), ('1568', '1564', '坊子区'), ('1569', '1564', '奎文区'), ('1570', '1564', '临朐县'), ('1571', '1564', '昌乐县'), ('1572', '1564', '青州市'), ('1573', '1564', '诸城市'), ('1574', '1564', '寿光市'), ('1575', '1564', '安丘市'), ('1576', '1564', '高密市'), ('1577', '1564', '昌邑市'), ('1578', '1498', '济宁'), ('1579', '1578', '市辖区'), ('1580', '1578', '市中区'), ('1581', '1578', '任城区'), ('1582', '1578', '微山县'), ('1583', '1578', '鱼台县'), ('1584', '1578', '金乡县'), ('1585', '1578', '嘉祥县'), ('1586', '1578', '汶上县'), ('1587', '1578', '泗水县'), ('1588', '1578', '梁山县'), ('1589', '1578', '曲阜市'), ('1590', '1578', '兖州市'), ('1591', '1578', '邹城市'), ('1592', '1498', '泰安'), ('1593', '1592', '市辖区'), ('1594', '1592', '泰山区'), ('1595', '1592', '岱岳区'), ('1596', '1592', '宁阳县'), ('1597', '1592', '东平县'), ('1598', '1592', '新泰市'), ('1599', '1592', '肥城市'), ('1600', '1498', '威海'), ('1601', '1600', '市辖区'), ('1602', '1600', '环翠区'), ('1603', '1600', '文登市'), ('1604', '1600', '荣成市'), ('1605', '1600', '乳山市'), ('1606', '1498', '日照'), ('1607', '1606', '市辖区'), ('1608', '1606', '东港区'), ('1609', '1606', '五莲县'), ('1610', '1606', '莒 县'), ('1611', '1498', '莱芜'), ('1612', '1611', '市辖区'), ('1613', '1611', '莱城区'), ('1614', '1611', '钢城区'), ('1615', '1498', '临沂'), ('1616', '1615', '市辖区'), ('1617', '1615', '兰山区'), ('1618', '1615', '罗庄区'), ('1619', '1615', '河东区'), ('1620', '1615', '沂南县'), ('1621', '1615', '郯城县'), ('1622', '1615', '沂水县'), ('1623', '1615', '苍山县'), ('1624', '1615', '费 县'), ('1625', '1615', '平邑县'), ('1626', '1615', '莒南县'), ('1627', '1615', '蒙阴县'), ('1628', '1615', '临沭县'), ('1629', '1498', '德州'), ('1630', '1629', '市辖区'), ('1631', '1629', '德城区'), ('1632', '1629', '陵 县'), ('1633', '1629', '宁津县'), ('1634', '1629', '庆云县'), ('1635', '1629', '临邑县'), ('1636', '1629', '齐河县'), ('1637', '1629', '平原县'), ('1638', '1629', '夏津县'), ('1639', '1629', '武城县'), ('1640', '1629', '乐陵市'), ('1641', '1629', '禹城市'), ('1642', '1498', '聊城'), ('1643', '1642', '市辖区'), ('1644', '1642', '东昌府区'), ('1645', '1642', '阳谷县'), ('1646', '1642', '莘 县'), ('1647', '1642', '茌平县'), ('1648', '1642', '东阿县'), ('1649', '1642', '冠 县'), ('1650', '1642', '高唐县'), ('1651', '1642', '临清市'), ('1652', '1498', '滨州'), ('1653', '1652', '市辖区'), ('1654', '1652', '滨城区'), ('1655', '1652', '惠民县'), ('1656', '1652', '阳信县'), ('1657', '1652', '无棣县'), ('1658', '1652', '沾化县'), ('1659', '1652', '博兴县'), ('1660', '1652', '邹平县'), ('1661', '1498', '菏泽'), ('1662', '1661', '市辖区'), ('1663', '1661', '牡丹区'), ('1664', '1661', '曹 县'), ('1665', '1661', '单 县'), ('1666', '1661', '成武县'), ('1667', '1661', '巨野县'), ('1668', '1661', '郓城县'), ('1669', '1661', '鄄城县'), ('1670', '1661', '定陶县'), ('1671', '1661', '东明县'), ('1672', '0', '河南'), ('1673', '1672', '郑州'), ('1674', '1673', '市辖区'), ('1675', '1673', '中原区'), ('1676', '1673', '二七区'), ('1677', '1673', '管城回族区'), ('1678', '1673', '金水区'), ('1679', '1673', '上街区'), ('1680', '1673', '邙山区'), ('1681', '1673', '中牟县'), ('1682', '1673', '巩义市'), ('1683', '1673', '荥阳市'), ('1684', '1673', '新密市'), ('1685', '1673', '新郑市'), ('1686', '1673', '登封市'), ('1687', '1672', '开封'), ('1688', '1687', '市辖区'), ('1689', '1687', '龙亭区'), ('1690', '1687', '顺河回族区'), ('1691', '1687', '鼓楼区'), ('1692', '1687', '南关区'), ('1693', '1687', '郊 区'), ('1694', '1687', '杞 县'), ('1695', '1687', '通许县'), ('1696', '1687', '尉氏县'), ('1697', '1687', '开封县'), ('1698', '1687', '兰考县'), ('1699', '1672', '洛阳'), ('1700', '1699', '市辖区'), ('1701', '1699', '老城区'), ('1702', '1699', '西工区'), ('1703', '1699', '廛河回族区'), ('1704', '1699', '涧西区'), ('1705', '1699', '吉利区'), ('1706', '1699', '洛龙区'), ('1707', '1699', '孟津县'), ('1708', '1699', '新安县'), ('1709', '1699', '栾川县'), ('1710', '1699', '嵩 县'), ('1711', '1699', '汝阳县'), ('1712', '1699', '宜阳县'), ('1713', '1699', '洛宁县'), ('1714', '1699', '伊川县'), ('1715', '1699', '偃师市'), ('1716', '1672', '平顶山'), ('1717', '1716', '市辖区'), ('1718', '1716', '新华区'), ('1719', '1716', '卫东区'), ('1720', '1716', '石龙区'), ('1721', '1716', '湛河区'), ('1722', '1716', '宝丰县'), ('1723', '1716', '叶 县'), ('1724', '1716', '鲁山县'), ('1725', '1716', '郏 县'), ('1726', '1716', '舞钢市'), ('1727', '1716', '汝州市'), ('1728', '1672', '安阳'), ('1729', '1728', '市辖区'), ('1730', '1728', '文峰区'), ('1731', '1728', '北关区'), ('1732', '1728', '铁西区'), ('1733', '1728', '郊 区'), ('1734', '1728', '安阳县'), ('1735', '1728', '汤阴县'), ('1736', '1728', '滑 县'), ('1737', '1728', '内黄县'), ('1738', '1728', '林州市'), ('1739', '1672', '鹤壁'), ('1740', '1739', '市辖区'), ('1741', '1739', '鹤山区'), ('1742', '1739', '山城区'), ('1743', '1739', '郊 区'), ('1744', '1739', '浚 县'), ('1745', '1739', '淇 县'), ('1746', '1672', '新乡'), ('1747', '1746', '市辖区'), ('1748', '1746', '红旗区'), ('1749', '1746', '新华区'), ('1750', '1746', '北站区'), ('1751', '1746', '郊 区'), ('1752', '1746', '新乡县'), ('1753', '1746', '获嘉县'), ('1754', '1746', '原阳县'), ('1755', '1746', '延津县'), ('1756', '1746', '封丘县'), ('1757', '1746', '长垣县'), ('1758', '1746', '卫辉市'), ('1759', '1746', '辉县市'), ('1760', '1672', '焦作'), ('1761', '1760', '市辖区'), ('1762', '1760', '解放区'), ('1763', '1760', '中站区'), ('1764', '1760', '马村区'), ('1765', '1760', '山阳区'), ('1766', '1760', '修武县'), ('1767', '1760', '博爱县'), ('1768', '1760', '武陟县'), ('1769', '1760', '温 县'), ('1770', '1760', '济源市'), ('1771', '1760', '沁阳市'), ('1772', '1760', '孟州市'), ('1773', '1672', '濮阳'), ('1774', '1773', '市辖区'), ('1775', '1773', '市 区'), ('1776', '1773', '清丰县'), ('1777', '1773', '南乐县'), ('1778', '1773', '范 县'), ('1779', '1773', '台前县'), ('1780', '1773', '濮阳县'), ('1781', '1672', '许昌'), ('1782', '1781', '市辖区'), ('1783', '1781', '魏都区'), ('1784', '1781', '许昌县'), ('1785', '1781', '鄢陵县'), ('1786', '1781', '襄城县'), ('1787', '1781', '禹州市'), ('1788', '1781', '长葛市'), ('1789', '1672', '漯河'), ('1790', '1789', '市辖区'), ('1791', '1789', '源汇区'), ('1792', '1789', '舞阳县'), ('1793', '1789', '临颍县'), ('1794', '1789', '郾城县'), ('1795', '1672', '三门峡'), ('1796', '1795', '市辖区'), ('1797', '1795', '湖滨区'), ('1798', '1795', '渑池县'), ('1799', '1795', '陕 县'), ('1800', '1795', '卢氏县'), ('1801', '1795', '义马市'), ('1802', '1795', '灵宝市'), ('1803', '1672', '南阳'), ('1804', '1803', '市辖区'), ('1805', '1803', '宛城区'), ('1806', '1803', '卧龙区'), ('1807', '1803', '南召县'), ('1808', '1803', '方城县'), ('1809', '1803', '西峡县'), ('1810', '1803', '镇平县'), ('1811', '1803', '内乡县'), ('1812', '1803', '淅川县'), ('1813', '1803', '社旗县'), ('1814', '1803', '唐河县'), ('1815', '1803', '新野县'), ('1816', '1803', '桐柏县'), ('1817', '1803', '邓州市'), ('1818', '1672', '商丘'), ('1819', '1818', '市辖区'), ('1820', '1818', '梁园区'), ('1821', '1818', '睢阳区'), ('1822', '1818', '民权县'), ('1823', '1818', '睢 县'), ('1824', '1818', '宁陵县'), ('1825', '1818', '柘城县'), ('1826', '1818', '虞城县'), ('1827', '1818', '夏邑县'), ('1828', '1818', '永城市'), ('1829', '1672', '信阳'), ('1830', '1829', '市辖区'), ('1831', '1829', '师河区'), ('1832', '1829', '平桥区'), ('1833', '1829', '罗山县'), ('1834', '1829', '光山县'), ('1835', '1829', '新 县'), ('1836', '1829', '商城县'), ('1837', '1829', '固始县'), ('1838', '1829', '潢川县'), ('1839', '1829', '淮滨县'), ('1840', '1829', '息 县'), ('1841', '1672', '周口'), ('1842', '1841', '市辖区'), ('1843', '1841', '川汇区'), ('1844', '1841', '扶沟县'), ('1845', '1841', '西华县'), ('1846', '1841', '商水县'), ('1847', '1841', '沈丘县'), ('1848', '1841', '郸城县'), ('1849', '1841', '淮阳县'), ('1850', '1841', '太康县'), ('1851', '1841', '鹿邑县'), ('1852', '1841', '项城市'), ('1853', '1672', '驻马店'), ('1854', '1853', '市辖区'), ('1855', '1853', '驿城区'), ('1856', '1853', '西平县'), ('1857', '1853', '上蔡县'), ('1858', '1853', '平舆县'), ('1859', '1853', '正阳县'), ('1860', '1853', '确山县'), ('1861', '1853', '泌阳县'), ('1862', '1853', '汝南县'), ('1863', '1853', '遂平县'), ('1864', '1853', '新蔡县'), ('1865', '0', '湖北'), ('1866', '1865', '武汉'), ('1867', '1866', '市辖区'), ('1868', '1866', '江岸区'), ('1869', '1866', '江汉区'), ('1870', '1866', '乔口区'), ('1871', '1866', '汉阳区'), ('1872', '1866', '武昌区'), ('1873', '1866', '青山区'), ('1874', '1866', '洪山区'), ('1875', '1866', '东西湖区'), ('1876', '1866', '汉南区'), ('1877', '1866', '蔡甸区'), ('1878', '1866', '江夏区'), ('1879', '1866', '黄陂区'), ('1880', '1866', '新洲区'), ('1881', '1865', '黄石'), ('1882', '1881', '市辖区'), ('1883', '1881', '黄石港区'), ('1884', '1881', '石灰窑区'), ('1885', '1881', '下陆区'), ('1886', '1881', '铁山区'), ('1887', '1881', '阳新县'), ('1888', '1881', '大冶市'), ('1889', '1865', '十堰'), ('1890', '1889', '市辖区'), ('1891', '1889', '茅箭区'), ('1892', '1889', '张湾区'), ('1893', '1889', '郧 县'), ('1894', '1889', '郧西县'), ('1895', '1889', '竹山县'), ('1896', '1889', '竹溪县'), ('1897', '1889', '房 县'), ('1898', '1889', '丹江口市'), ('1899', '1865', '宜昌'), ('1900', '1899', '市辖区'), ('1901', '1899', '西陵区'), ('1902', '1899', '伍家岗区'), ('1903', '1899', '点军区'), ('1904', '1899', '虎亭区'), ('1905', '1899', '宜昌县'), ('1906', '1899', '远安县'), ('1907', '1899', '兴山县'), ('1908', '1899', '秭归县'), ('1909', '1899', '长阳土家族自治县'), ('1910', '1899', '五峰土家族自治县'), ('1911', '1899', '宜都市'), ('1912', '1899', '当阳市'), ('1913', '1899', '枝江市'), ('1914', '1865', '襄樊'), ('1915', '1914', '市辖区'), ('1916', '1914', '襄城区'), ('1917', '1914', '樊城区'), ('1918', '1914', '襄阳县'), ('1919', '1914', '南漳县'), ('1920', '1914', '谷城县'), ('1921', '1914', '保康县'), ('1922', '1914', '老河口市'), ('1923', '1914', '枣阳市'), ('1924', '1914', '宜城市'), ('1925', '1865', '鄂州'), ('1926', '1925', '市辖区'), ('1927', '1925', '梁子湖区'), ('1928', '1925', '华容区'), ('1929', '1925', '鄂城区'), ('1930', '1865', '荆门'), ('1931', '1930', '市辖区'), ('1932', '1930', '东宝区'), ('1933', '1930', '京山县'), ('1934', '1930', '沙洋县'), ('1935', '1930', '钟祥市'), ('1936', '1865', '孝感'), ('1937', '1936', '市辖区'), ('1938', '1936', '孝南区'), ('1939', '1936', '孝昌县'), ('1940', '1936', '大悟县'), ('1941', '1936', '云梦县'), ('1942', '1936', '应城市'), ('1943', '1936', '安陆市'), ('1944', '1936', '汉川市'), ('1945', '1865', '荆州'), ('1946', '1945', '市辖区'), ('1947', '1945', '沙市区'), ('1948', '1945', '荆州区'), ('1949', '1945', '公安县'), ('1950', '1945', '监利县'), ('1951', '1945', '江陵县'), ('1952', '1945', '石首市'), ('1953', '1945', '洪湖市'), ('1954', '1945', '松滋市'), ('1955', '1865', '黄冈'), ('1956', '1955', '市辖区'), ('1957', '1955', '黄州区'), ('1958', '1955', '团风县'), ('1959', '1955', '红安县'), ('1960', '1955', '罗田县'), ('1961', '1955', '英山县'), ('1962', '1955', '浠水县'), ('1963', '1955', '蕲春县'), ('1964', '1955', '黄梅县'), ('1965', '1955', '麻城市'), ('1966', '1955', '武穴市'), ('1967', '1865', '咸宁'), ('1968', '1967', '市辖区'), ('1969', '1967', '咸安区'), ('1970', '1967', '嘉鱼县'), ('1971', '1967', '通城县'), ('1972', '1967', '崇阳县'), ('1973', '1967', '通山县'), ('1974', '1967', '赤壁市'), ('1975', '1865', '随州'), ('1976', '1975', '市辖区'), ('1977', '1975', '曾都区'), ('1978', '1975', '广水市'), ('1980', '1979', '恩施市'), ('1981', '1979', '利川市'), ('1982', '1979', '建始县'), ('1983', '1979', '巴东县'), ('1984', '1979', '宣恩县'), ('1985', '1979', '咸丰县'), ('1986', '1979', '来凤县'), ('1987', '1979', '鹤峰县'), ('1988', '1865', '省直辖行政单位'), ('1989', '1988', '仙桃市'), ('1990', '1988', '潜江市'), ('1991', '1988', '天门市'), ('1992', '1988', '神农架林区'), ('1993', '0', '湖南'), ('1994', '1993', '长沙'), ('1995', '1994', '市辖区'), ('1996', '1994', '芙蓉区'), ('1997', '1994', '天心区'), ('1998', '1994', '岳麓区'), ('1999', '1994', '开福区'), ('2000', '1994', '雨花区'), ('2001', '1994', '长沙县'), ('2002', '1994', '望城县'), ('2003', '1994', '宁乡县'), ('2004', '1994', '浏阳市'), ('2005', '1993', '株洲'), ('2006', '2005', '市辖区'), ('2007', '2005', '荷塘区'), ('2008', '2005', '芦淞区'), ('2009', '2005', '石峰区'), ('2010', '2005', '天元区'), ('2011', '2005', '株洲县'), ('2012', '2005', '攸 县'), ('2013', '2005', '茶陵县'), ('2014', '2005', '炎陵县'), ('2015', '2005', '醴陵市'), ('2016', '1993', '湘潭'), ('2017', '2016', '市辖区'), ('2018', '2016', '雨湖区'), ('2019', '2016', '岳塘区'), ('2020', '2016', '湘潭县'), ('2021', '2016', '湘乡市'), ('2022', '2016', '韶山市'), ('2023', '1993', '衡阳'), ('2024', '2023', '市辖区'), ('2025', '2023', '江东区'), ('2026', '2023', '城南区'), ('2027', '2023', '城北区'), ('2028', '2023', '郊 区'), ('2029', '2023', '南岳区'), ('2030', '2023', '衡阳县'), ('2031', '2023', '衡南县'), ('2032', '2023', '衡山县'), ('2033', '2023', '衡东县'), ('2034', '2023', '祁东县'), ('2035', '2023', '耒阳市'), ('2036', '2023', '常宁市'), ('2037', '1993', '邵阳'), ('2038', '2037', '市辖区'), ('2039', '2037', '双清区'), ('2040', '2037', '大祥区'), ('2041', '2037', '北塔区'), ('2042', '2037', '邵东县'), ('2043', '2037', '新邵县'), ('2044', '2037', '邵阳县'), ('2045', '2037', '隆回县'), ('2046', '2037', '洞口县'), ('2047', '2037', '绥宁县'), ('2048', '2037', '新宁县'), ('2049', '2037', '城步苗族自治县'), ('2050', '2037', '武冈市'), ('2051', '1993', '岳阳'), ('2052', '2051', '市辖区'), ('2053', '2051', '岳阳楼区'), ('2054', '2051', '云溪区'), ('2055', '2051', '君山区'), ('2056', '2051', '岳阳县'), ('2057', '2051', '华容县'), ('2058', '2051', '湘阴县'), ('2059', '2051', '平江县'), ('2060', '2051', '汨罗市'), ('2061', '2051', '临湘市'), ('2062', '1993', '常德'), ('2063', '2062', '市辖区'), ('2064', '2062', '武陵区'), ('2065', '2062', '鼎城区'), ('2066', '2062', '安乡县'), ('2067', '2062', '汉寿县'), ('2068', '2062', '澧 县'), ('2069', '2062', '临澧县'), ('2070', '2062', '桃源县'), ('2071', '2062', '石门县'), ('2072', '2062', '津市市'), ('2073', '1993', '张家界'), ('2074', '2073', '市辖区'), ('2075', '2073', '永定区'), ('2076', '2073', '武陵源区'), ('2077', '2073', '慈利县'), ('2078', '2073', '桑植县'), ('2079', '1993', '益阳'), ('2080', '2079', '市辖区'), ('2081', '2079', '资阳区'), ('2082', '2079', '赫山区'), ('2083', '2079', '南 县'), ('2084', '2079', '桃江县'), ('2085', '2079', '安化县'), ('2086', '2079', '沅江市'), ('2087', '1993', '郴州'), ('2088', '2087', '市辖区'), ('2089', '2087', '北湖区'), ('2090', '2087', '苏仙区'), ('2091', '2087', '桂阳县'), ('2092', '2087', '宜章县'), ('2093', '2087', '永兴县'), ('2094', '2087', '嘉禾县'), ('2095', '2087', '临武县'), ('2096', '2087', '汝城县'), ('2097', '2087', '桂东县'), ('2098', '2087', '安仁县'), ('2099', '2087', '资兴市'), ('2100', '1993', '永州'), ('2101', '2100', '市辖区'), ('2102', '2100', '芝山区'), ('2103', '2100', '冷水滩区'), ('2104', '2100', '祁阳县'), ('2105', '2100', '东安县'), ('2106', '2100', '双牌县'), ('2107', '2100', '道 县'), ('2108', '2100', '江永县'), ('2109', '2100', '宁远县'), ('2110', '2100', '蓝山县'), ('2111', '2100', '新田县'), ('2112', '2100', '江华瑶族自治县'), ('2113', '1993', '怀化'), ('2114', '2113', '市辖区'), ('2115', '2113', '鹤城区'), ('2116', '2113', '中方县'), ('2117', '2113', '沅陵县'), ('2118', '2113', '辰溪县'), ('2119', '2113', '溆浦县'), ('2120', '2113', '会同县'), ('2121', '2113', '麻阳苗族自治县'), ('2122', '2113', '新晃侗族自治县'), ('2123', '2113', '芷江侗族自治县'), ('2125', '2113', '通道侗族自治县'), ('2126', '2113', '洪江市'), ('2127', '1993', '娄底'), ('2128', '2127', '市辖区'), ('2129', '2127', '娄星区'), ('2130', '2127', '双峰县'), ('2131', '2127', '新化县'), ('2132', '2127', '冷水江市'), ('2133', '2127', '涟源市'), ('2135', '2134', '吉首市'), ('2136', '2134', '泸溪县'), ('2137', '2134', '凤凰县'), ('2138', '2134', '花垣县'), ('2139', '2134', '保靖县'), ('2140', '2134', '古丈县'), ('2141', '2134', '永顺县'), ('2142', '2134', '龙山县'), ('2143', '0', '广东'), ('2144', '2143', '广州'), ('2145', '2144', '市辖区'), ('2146', '2144', '东山区'), ('2147', '2144', '荔湾区'), ('2148', '2144', '越秀区'), ('2149', '2144', '海珠区'), ('2150', '2144', '天河区'), ('2151', '2144', '芳村区'), ('2152', '2144', '白云区'), ('2153', '2144', '黄埔区'), ('2154', '2144', '番禺区'), ('2155', '2144', '花都区'), ('2156', '2144', '增城市'), ('2157', '2144', '从化市'), ('2158', '2143', '韶关'), ('2159', '2158', '市辖区'), ('2160', '2158', '北江区'), ('2161', '2158', '武江区'), ('2162', '2158', '浈江区'), ('2163', '2158', '曲江县'), ('2164', '2158', '始兴县'), ('2165', '2158', '仁化县'), ('2166', '2158', '翁源县'), ('2167', '2158', '乳源瑶族自治县'), ('2168', '2158', '新丰县'), ('2169', '2158', '乐昌市'), ('2170', '2158', '南雄市'), ('2171', '2143', '深圳'), ('2172', '2171', '市辖区'), ('2173', '2171', '罗湖区'), ('2174', '2171', '福田区'), ('2175', '2171', '南山区'), ('2176', '2171', '宝安区'), ('2177', '2171', '龙岗区'), ('2178', '2171', '盐田区'), ('2179', '2143', '珠海'), ('2180', '2179', '市辖区'), ('2181', '2179', '香洲区'), ('2182', '2179', '斗门县'), ('2183', '2143', '汕头'), ('2184', '2183', '市辖区'), ('2185', '2183', '达濠区'), ('2186', '2183', '龙湖区'), ('2187', '2183', '金园区'), ('2188', '2183', '升平区'), ('2189', '2183', '河浦区'), ('2190', '2183', '南澳县'), ('2191', '2183', '潮阳市'), ('2192', '2183', '澄海市'), ('2193', '2143', '佛山'), ('2194', '2193', '市辖区'), ('2195', '2193', '城 区'), ('2196', '2193', '石湾区'), ('2197', '2193', '顺德市'), ('2198', '2193', '南海市'), ('2199', '2193', '三水市'), ('2200', '2193', '高明市'), ('2201', '2143', '江门'), ('2202', '2201', '市辖区'), ('2203', '2201', '蓬江区'), ('2204', '2201', '江海区'), ('2205', '2201', '台山市'), ('2206', '2201', '新会市'), ('2207', '2201', '开平市'), ('2208', '2201', '鹤山市'), ('2209', '2201', '恩平市'), ('2210', '2143', '湛江'), ('2211', '2210', '市辖区'), ('2212', '2210', '赤坎区'), ('2213', '2210', '霞山区'), ('2214', '2210', '坡头区'), ('2215', '2210', '麻章区'), ('2216', '2210', '遂溪县'), ('2217', '2210', '徐闻县'), ('2218', '2210', '廉江市'), ('2219', '2210', '雷州市'), ('2220', '2210', '吴川市'), ('2221', '2143', '茂名'), ('2222', '2221', '市辖区'), ('2223', '2221', '茂南区'), ('2224', '2221', '电白县'), ('2225', '2221', '高州市'), ('2226', '2221', '化州市'), ('2227', '2221', '信宜市'), ('2228', '2143', '肇庆'), ('2229', '2228', '市辖区'), ('2230', '2228', '端州区'), ('2231', '2228', '鼎湖区'), ('2232', '2228', '广宁县'), ('2233', '2228', '怀集县'), ('2234', '2228', '封开县'), ('2235', '2228', '德庆县'), ('2236', '2228', '高要市'), ('2237', '2228', '四会市'), ('2238', '2143', '惠州'), ('2239', '2238', '市辖区'), ('2240', '2238', '惠城区'), ('2241', '2238', '博罗县'), ('2242', '2238', '惠东县'), ('2243', '2238', '龙门县'), ('2244', '2238', '惠阳市'), ('2245', '2143', '梅州'), ('2246', '2245', '市辖区'), ('2247', '2245', '梅江区'), ('2248', '2245', '梅 县'), ('2249', '2245', '大埔县'), ('2250', '2245', '丰顺县'), ('2251', '2245', '五华县'), ('2252', '2245', '平远县'), ('2253', '2245', '蕉岭县'), ('2254', '2245', '兴宁市'), ('2255', '2143', '汕尾'), ('2256', '2255', '市辖区'), ('2257', '2255', '城 区'), ('2258', '2255', '海丰县'), ('2259', '2255', '陆河县'), ('2260', '2255', '陆丰市'), ('2261', '2143', '河源'), ('2262', '2261', '市辖区'), ('2263', '2261', '源城区'), ('2264', '2261', '紫金县'), ('2265', '2261', '龙川县'), ('2266', '2261', '连平县'), ('2267', '2261', '和平县'), ('2268', '2261', '东源县'), ('2269', '2143', '阳江'), ('2270', '2269', '市辖区'), ('2271', '2269', '江城区'), ('2272', '2269', '阳西县'), ('2273', '2269', '阳东县'), ('2274', '2269', '阳春市'), ('2275', '2143', '清远'), ('2276', '2275', '市辖区'), ('2277', '2275', '清城区'), ('2278', '2275', '佛冈县'), ('2279', '2275', '阳山县'), ('2281', '2275', '连南瑶族自治县'), ('2282', '2275', '清新县'), ('2283', '2275', '英德市'), ('2284', '2275', '连州市'), ('2285', '2143', '东莞'), ('2286', '2285', '莞城区'), ('2287', '2285', '东城区'), ('2288', '2285', '南城区'), ('2289', '2285', '万江区'), ('2290', '2143', '中山'), ('2291', '2290', '石岐区'), ('2292', '2290', '东区'), ('2293', '2290', '西区'), ('2294', '2290', '南区'), ('2295', '2290', '五桂山'), ('2296', '2143', '潮州'), ('2297', '2296', '市辖区'), ('2298', '2296', '湘桥区'), ('2299', '2296', '潮安县'), ('2300', '2296', '饶平县'), ('2301', '2143', '揭阳'), ('2302', '2301', '市辖区'), ('2303', '2301', '榕城区'), ('2304', '2301', '揭东县'), ('2305', '2301', '揭西县'), ('2306', '2301', '惠来县'), ('2307', '2301', '普宁市'), ('2308', '2143', '云浮'), ('2309', '2308', '市辖区'), ('2310', '2308', '云城区'), ('2311', '2308', '新兴县'), ('2312', '2308', '郁南县'), ('2313', '2308', '云安县'), ('2314', '2308', '罗定市'), ('2315', '0', '广西'), ('2316', '2315', '南宁'), ('2317', '2316', '市辖区'), ('2318', '2316', '兴宁区'), ('2319', '2316', '新城区'), ('2320', '2316', '城北区'), ('2321', '2316', '江南区'), ('2322', '2316', '永新区'), ('2323', '2316', '市郊区'), ('2324', '2316', '邕宁县'), ('2325', '2316', '武鸣县'), ('2326', '2315', '柳州'), ('2327', '2326', '市辖区'), ('2328', '2326', '城中区'), ('2329', '2326', '鱼峰区'), ('2330', '2326', '柳南区'), ('2331', '2326', '柳北区'), ('2332', '2326', '市郊区'), ('2333', '2326', '柳江县'), ('2334', '2326', '柳城县'), ('2335', '2315', '桂林'), ('2336', '2335', '市辖区'), ('2337', '2335', '秀峰区'), ('2338', '2335', '叠彩区'), ('2339', '2335', '象山区'), ('2340', '2335', '七星区'), ('2341', '2335', '雁山区'), ('2342', '2335', '阳朔县'), ('2343', '2335', '临桂县'), ('2344', '2335', '灵川县'), ('2345', '2335', '全州县'), ('2346', '2335', '兴安县'), ('2347', '2335', '永福县'), ('2348', '2335', '灌阳县'), ('2349', '2335', '龙胜各县自治区'), ('2350', '2335', '资源县'), ('2351', '2335', '平乐县'), ('2352', '2335', '荔蒲县'), ('2353', '2335', '恭城瑶族自治县'), ('2354', '2315', '梧州'), ('2355', '2354', '市辖区'), ('2356', '2354', '万秀区'), ('2357', '2354', '蝶山区'), ('2358', '2354', '市郊区'), ('2359', '2354', '苍梧县'), ('2360', '2354', '藤 县'), ('2361', '2354', '蒙山县'), ('2362', '2354', '岑溪市'), ('2363', '2315', '北海'), ('2364', '2363', '市辖区'), ('2365', '2363', '海城区'), ('2366', '2363', '银海区'), ('2367', '2363', '铁山港区'), ('2368', '2363', '合浦县'), ('2369', '2315', '防城港'), ('2370', '2369', '市辖区'), ('2371', '2369', '港口区'), ('2372', '2369', '防城区'), ('2373', '2369', '上思县'), ('2374', '2369', '东兴市'), ('2375', '2315', '钦州'), ('2376', '2375', '市辖区'), ('2377', '2375', '钦南区'), ('2378', '2375', '钦北区'), ('2379', '2375', '浦北县'), ('2380', '2375', '灵山县'), ('2381', '2315', '贵港'), ('2382', '2381', '市辖区'), ('2383', '2381', '港北区'), ('2384', '2381', '港南区'), ('2385', '2381', '平南县'), ('2386', '2381', '桂平市'), ('2387', '2315', '玉林'), ('2388', '2387', '市辖区'), ('2389', '2387', '玉州区'), ('2390', '2387', '容 县'), ('2391', '2387', '陆川县'), ('2392', '2387', '博白县'), ('2393', '2387', '兴业县'), ('2394', '2387', '北流市'), ('2395', '2315', '南宁地区'), ('2396', '2395', '凭祥市'), ('2397', '2395', '横 县'), ('2398', '2395', '宾阳县'), ('2399', '2395', '上林县'), ('2400', '2395', '隆安县'), ('2401', '2395', '马山县'), ('2402', '2395', '扶绥县'), ('2403', '2395', '崇左县'), ('2404', '2395', '大新县'), ('2405', '2395', '天等县'), ('2406', '2395', '宁明县'), ('2407', '2395', '龙州县'), ('2408', '2315', '柳州地区'), ('2409', '2408', '合山市'), ('2410', '2408', '鹿寨县'), ('2411', '2408', '象州县'), ('2412', '2408', '武宣县'), ('2413', '2408', '来宾县'), ('2414', '2408', '融安县'), ('2415', '2408', '三江侗族自治县'), ('2416', '2408', '融水苗族自治县'), ('2417', '2408', '金秀瑶族自治县'), ('2418', '2408', '忻城县'), ('2419', '2315', '贺州地区'), ('2420', '2419', '贺州市'), ('2421', '2419', '昭平县'), ('2422', '2419', '钟山县'), ('2423', '2419', '富川瑶族自治县'), ('2424', '2315', '百色地区'), ('2425', '2424', '百色市'), ('2426', '2424', '田阳县'), ('2427', '2424', '田东县'), ('2428', '2424', '平果县'), ('2429', '2424', '德保县'), ('2430', '2424', '靖西县'), ('2431', '2424', '那坡县'), ('2432', '2424', '凌云县'), ('2433', '2424', '乐业县'), ('2434', '2424', '田林县'), ('2435', '2424', '隆林各族自治县'), ('2436', '2424', '西林县'), ('2437', '2315', '河池地区'), ('2438', '2437', '河池市'), ('2439', '2437', '宜州市'), ('2440', '2437', '罗城仫佬族自治县'), ('2441', '2437', '环江毛南族自治县'), ('2442', '2437', '南丹县'), ('2443', '2437', '天峨县'), ('2444', '2437', '凤山县'), ('2445', '2437', '东兰县'), ('2446', '2437', '巴马瑶族自治县'), ('2447', '2437', '都安瑶族自治县'), ('2448', '2437', '大化瑶族自治县'), ('2449', '0', '海南'), ('2450', '2449', '海南'), ('2451', '2450', '通什市'), ('2452', '2450', '琼海市'), ('2453', '2450', '儋州市'), ('2454', '2450', '琼山市'), ('2455', '2450', '文昌市'), ('2456', '2450', '万宁市'), ('2457', '2450', '东方市'), ('2458', '2450', '定安县'), ('2459', '2450', '屯昌县'), ('2460', '2450', '澄迈县'), ('2461', '2450', '临高县'), ('2462', '2450', '白沙黎族自治县'), ('2463', '2450', '昌江黎族自治县'), ('2464', '2450', '乐东黎族自治县'), ('2465', '2450', '陵水黎族自治县'), ('2468', '2450', '西沙群岛'), ('2469', '2450', '南沙群岛'), ('2471', '2449', '海口'), ('2472', '2471', '市辖区'), ('2473', '2471', '振东区'), ('2474', '2471', '新华区'), ('2475', '2471', '秀英区'), ('2476', '2449', '三亚'), ('2477', '2476', '市辖区'), ('2478', '0', '重庆'), ('2479', '2478', '重庆市辖'), ('2480', '2479', '万州区'), ('2481', '2479', '涪陵区'), ('2482', '2479', '渝中区'), ('2483', '2479', '大渡口区'), ('2484', '2479', '江北区'), ('2485', '2479', '沙坪坝区'), ('2486', '2479', '九龙坡区'), ('2487', '2479', '南岸区'), ('2488', '2479', '北碚区'), ('2489', '2479', '万盛区'), ('2490', '2479', '双桥区'), ('2491', '2479', '渝北区'), ('2492', '2479', '巴南区'), ('2493', '2479', '黔江区'), ('2494', '2478', '重庆县辖'), ('2495', '2494', '长寿县'), ('2496', '2494', '綦江县'), ('2497', '2494', '潼南县'), ('2498', '2494', '铜梁县'), ('2499', '2494', '大足县'), ('2500', '2494', '荣昌县'), ('2501', '2494', '璧山县'), ('2502', '2494', '梁平县'), ('2503', '2494', '城口县'), ('2504', '2494', '丰都县'), ('2505', '2494', '垫江县'), ('2506', '2494', '武隆县'), ('2507', '2494', '忠 县'), ('2508', '2494', '开 县'), ('2509', '2494', '云阳县'), ('2510', '2494', '奉节县'), ('2511', '2494', '巫山县'), ('2512', '2494', '巫溪县'), ('2513', '2494', '石柱土家族自治县'), ('2517', '2478', '重庆县级'), ('2518', '2517', '江津市'), ('2519', '2517', '合川市'), ('2520', '2517', '永川市'), ('2521', '2517', '南川市'), ('2522', '0', '四川'), ('2523', '2522', '成都'), ('2524', '2523', '市辖区'), ('2525', '2523', '高新区'), ('2526', '2523', '锦江区'), ('2527', '2523', '青羊区'), ('2528', '2523', '金牛区'), ('2529', '2523', '武侯区'), ('2530', '2523', '成华区'), ('2531', '2523', '龙泉驿区'), ('2532', '2523', '青白江区'), ('2533', '2523', '金堂县'), ('2534', '2523', '双流县'), ('2535', '2523', '温江县'), ('2536', '2523', '郫 县'), ('2537', '2523', '新都县'), ('2538', '2523', '大邑县'), ('2539', '2523', '蒲江县'), ('2540', '2523', '新津县'), ('2541', '2523', '都江堰市'), ('2542', '2523', '彭州市'), ('2543', '2523', '邛崃市'), ('2544', '2523', '崇州市'), ('2545', '2522', '自贡'), ('2546', '2545', '市辖区'), ('2547', '2545', '自流井区'), ('2548', '2545', '贡井区'), ('2549', '2545', '大安区'), ('2550', '2545', '沿滩区'), ('2551', '2545', '荣 县'), ('2552', '2545', '富顺县'), ('2553', '2522', '攀枝花'), ('2554', '2553', '市辖区'), ('2555', '2553', '东 区'), ('2556', '2553', '西 区'), ('2557', '2553', '仁和区'), ('2558', '2553', '米易县'), ('2559', '2553', '盐边县'), ('2560', '2522', '泸州'), ('2561', '2560', '市辖区'), ('2562', '2560', '江阳区'), ('2563', '2560', '纳溪区'), ('2564', '2560', '龙马潭区'), ('2565', '2560', '泸 县'), ('2566', '2560', '合江县'), ('2567', '2560', '叙永县'), ('2568', '2560', '古蔺县'), ('2569', '2522', '德阳'), ('2570', '2569', '市辖区'), ('2571', '2569', '旌阳区'), ('2572', '2569', '中江县'), ('2573', '2569', '罗江县'), ('2574', '2569', '广汉市'), ('2575', '2569', '什邡市'), ('2576', '2569', '绵竹市'), ('2577', '2522', '绵阳'), ('2578', '2577', '市辖区'), ('2579', '2577', '涪城区'), ('2580', '2577', '游仙区'), ('2581', '2577', '科学城区'), ('2582', '2577', '三台县'), ('2583', '2577', '盐亭县'), ('2584', '2577', '安 县'), ('2585', '2577', '梓潼县'), ('2586', '2577', '北川县'), ('2587', '2577', '平武县'), ('2588', '2577', '江油市'), ('2589', '2522', '广元'), ('2590', '2589', '市辖区'), ('2591', '2589', '市中区'), ('2592', '2589', '元坝区'), ('2593', '2589', '朝天区'), ('2594', '2589', '旺苍县'), ('2595', '2589', '青川县'), ('2596', '2589', '剑阁县'), ('2597', '2589', '苍溪县'), ('2598', '2522', '遂宁'), ('2599', '2598', '市辖区'), ('2600', '2598', '市中区'), ('2601', '2598', '蓬溪县'), ('2602', '2598', '射洪县'), ('2603', '2598', '大英县'), ('2604', '2522', '内江'), ('2605', '2604', '市辖区'), ('2606', '2604', '市中区'), ('2607', '2604', '东兴区'), ('2608', '2604', '威远县'), ('2609', '2604', '资中县'), ('2610', '2604', '隆昌县'), ('2611', '2522', '乐山'), ('2612', '2611', '市辖区'), ('2613', '2611', '市中区'), ('2614', '2611', '沙湾区'), ('2615', '2611', '五通桥区'), ('2616', '2611', '金口河区'), ('2617', '2611', '犍为县'), ('2618', '2611', '井研县'), ('2619', '2611', '夹江县'), ('2620', '2611', '沐川县'), ('2621', '2611', '峨边彝族自治县'), ('2622', '2611', '马边彝族自治县'), ('2623', '2611', '峨眉山市'), ('2624', '2522', '南充'), ('2625', '2624', '市辖区'), ('2626', '2624', '顺庆区'), ('2627', '2624', '高坪区'), ('2628', '2624', '嘉陵区'), ('2629', '2624', '南部县'), ('2630', '2624', '营山县'), ('2631', '2624', '蓬安县'), ('2632', '2624', '仪陇县'), ('2633', '2624', '西充县'), ('2634', '2624', '阆中市'), ('2635', '2522', '眉山'), ('2636', '2635', '市辖区'), ('2637', '2635', '东坡区'), ('2638', '2635', '仁寿县'), ('2639', '2635', '彭山县'), ('2640', '2635', '洪雅县'), ('2641', '2635', '丹棱县'), ('2642', '2635', '青神县'), ('2643', '2522', '宜宾'), ('2644', '2643', '市辖区'), ('2645', '2643', '翠屏区'), ('2646', '2643', '宜宾县'), ('2647', '2643', '南溪县'), ('2648', '2643', '江安县'), ('2649', '2643', '长宁县'), ('2650', '2643', '高 县'), ('2651', '2643', '珙 县'), ('2652', '2643', '筠连县'), ('2653', '2643', '兴文县'), ('2654', '2643', '屏山县'), ('2655', '2522', '广安'), ('2656', '2655', '市辖区'), ('2657', '2655', '广安区'), ('2658', '2655', '岳池县'), ('2659', '2655', '武胜县'), ('2660', '2655', '邻水县'), ('2661', '2655', '华蓥市'), ('2662', '2522', '达州'), ('2663', '2662', '市辖区'), ('2664', '2662', '通川区'), ('2665', '2662', '达 县'), ('2666', '2662', '宣汉县'), ('2667', '2662', '开江县'), ('2668', '2662', '大竹县'), ('2669', '2662', '渠 县'), ('2670', '2662', '万源市'), ('2671', '2522', '雅安'), ('2672', '2671', '市辖区'), ('2673', '2671', '雨城区'), ('2674', '2671', '名山县'), ('2675', '2671', '荥经县'), ('2676', '2671', '汉源县'), ('2677', '2671', '石棉县'), ('2678', '2671', '天全县'), ('2679', '2671', '芦山县'), ('2680', '2671', '宝兴县'), ('2681', '2522', '巴中'), ('2682', '2681', '市辖区'), ('2683', '2681', '巴州区'), ('2684', '2681', '通江县'), ('2685', '2681', '南江县'), ('2686', '2681', '平昌县'), ('2687', '2522', '资阳'), ('2688', '2687', '市辖区'), ('2689', '2687', '雁江区'), ('2690', '2687', '安岳县'), ('2691', '2687', '乐至县'), ('2692', '2687', '简阳市'), ('2694', '2693', '汶川县'), ('2695', '2693', '理 县'), ('2696', '2693', '茂 县'), ('2697', '2693', '松潘县'), ('2698', '2693', '九寨沟县'), ('2699', '2693', '金川县'), ('2700', '2693', '小金县'), ('2701', '2693', '黑水县'), ('2702', '2693', '马尔康县'), ('2703', '2693', '壤塘县'), ('2704', '2693', '阿坝县'), ('2705', '2693', '若尔盖县'), ('2706', '2693', '红原县'), ('2707', '2522', '甘孜藏族自治州'), ('2708', '2707', '康定县'), ('2709', '2707', '泸定县'), ('2710', '2707', '丹巴县'), ('2711', '2707', '九龙县'), ('2712', '2707', '雅江县'), ('2713', '2707', '道孚县'), ('2714', '2707', '炉霍县'), ('2715', '2707', '甘孜县'), ('2716', '2707', '新龙县'), ('2717', '2707', '德格县'); +INSERT INTO `bjyadmin_province_city_area` VALUES ('2718', '2707', '白玉县'), ('2719', '2707', '石渠县'), ('2720', '2707', '色达县'), ('2721', '2707', '理塘县'), ('2722', '2707', '巴塘县'), ('2723', '2707', '乡城县'), ('2724', '2707', '稻城县'), ('2725', '2707', '得荣县'), ('2726', '2522', '凉山彝族自治州'), ('2727', '2726', '西昌市'), ('2728', '2726', '木里藏族自治县'), ('2729', '2726', '盐源县'), ('2730', '2726', '德昌县'), ('2731', '2726', '会理县'), ('2732', '2726', '会东县'), ('2733', '2726', '宁南县'), ('2734', '2726', '普格县'), ('2735', '2726', '布拖县'), ('2736', '2726', '金阳县'), ('2737', '2726', '昭觉县'), ('2738', '2726', '喜德县'), ('2739', '2726', '冕宁县'), ('2740', '2726', '越西县'), ('2741', '2726', '甘洛县'), ('2742', '2726', '美姑县'), ('2743', '2726', '雷波县'), ('2744', '0', '贵州'), ('2745', '2744', '贵阳'), ('2746', '2745', '市辖区'), ('2747', '2745', '南明区'), ('2748', '2745', '云岩区'), ('2749', '2745', '花溪区'), ('2750', '2745', '乌当区'), ('2751', '2745', '白云区'), ('2752', '2745', '小河区'), ('2753', '2745', '开阳县'), ('2754', '2745', '息烽县'), ('2755', '2745', '修文县'), ('2756', '2745', '清镇市'), ('2757', '2744', '六盘水'), ('2758', '2757', '钟山区'), ('2759', '2757', '六枝特区'), ('2760', '2757', '水城县'), ('2761', '2757', '盘 县'), ('2762', '2744', '遵义'), ('2763', '2762', '市辖区'), ('2764', '2762', '红花岗区'), ('2765', '2762', '遵义县'), ('2766', '2762', '桐梓县'), ('2767', '2762', '绥阳县'), ('2768', '2762', '正安县'), ('2771', '2762', '凤冈县'), ('2772', '2762', '湄潭县'), ('2773', '2762', '余庆县'), ('2774', '2762', '习水县'), ('2775', '2762', '赤水市'), ('2776', '2762', '仁怀市'), ('2777', '2744', '安顺'), ('2778', '2777', '市辖区'), ('2779', '2777', '西秀区'), ('2780', '2777', '平坝县'), ('2781', '2777', '普定县'), ('2785', '2744', '铜仁地区'), ('2786', '2785', '铜仁市'), ('2787', '2785', '江口县'), ('2788', '2785', '玉屏侗族自治县'), ('2789', '2785', '石阡县'), ('2790', '2785', '思南县'), ('2792', '2785', '德江县'), ('2793', '2785', '沿河土家族自治县'), ('2794', '2785', '松桃苗族自治县'), ('2795', '2785', '万山特区'), ('2797', '2796', '兴义市'), ('2798', '2796', '兴仁县'), ('2799', '2796', '普安县'), ('2800', '2796', '晴隆县'), ('2801', '2796', '贞丰县'), ('2802', '2796', '望谟县'), ('2803', '2796', '册亨县'), ('2804', '2796', '安龙县'), ('2805', '2744', '毕节地区'), ('2806', '2805', '毕节市'), ('2807', '2805', '大方县'), ('2808', '2805', '黔西县'), ('2809', '2805', '金沙县'), ('2810', '2805', '织金县'), ('2811', '2805', '纳雍县'), ('2813', '2805', '赫章县'), ('2815', '2814', '凯里市'), ('2816', '2814', '黄平县'), ('2817', '2814', '施秉县'), ('2818', '2814', '三穗县'), ('2819', '2814', '镇远县'), ('2820', '2814', '岑巩县'), ('2821', '2814', '天柱县'), ('2822', '2814', '锦屏县'), ('2823', '2814', '剑河县'), ('2824', '2814', '台江县'), ('2825', '2814', '黎平县'), ('2826', '2814', '榕江县'), ('2827', '2814', '从江县'), ('2828', '2814', '雷山县'), ('2829', '2814', '麻江县'), ('2830', '2814', '丹寨县'), ('2832', '2831', '都匀市'), ('2833', '2831', '福泉市'), ('2834', '2831', '荔波县'), ('2835', '2831', '贵定县'), ('2836', '2831', '瓮安县'), ('2837', '2831', '独山县'), ('2838', '2831', '平塘县'), ('2839', '2831', '罗甸县'), ('2840', '2831', '长顺县'), ('2841', '2831', '龙里县'), ('2842', '2831', '惠水县'), ('2843', '2831', '三都水族自治县'), ('2844', '0', '云南'), ('2845', '2844', '昆明'), ('2846', '2845', '市辖区'), ('2847', '2845', '五华区'), ('2848', '2845', '盘龙区'), ('2849', '2845', '官渡区'), ('2850', '2845', '西山区'), ('2851', '2845', '东川区'), ('2852', '2845', '呈贡县'), ('2853', '2845', '晋宁县'), ('2854', '2845', '富民县'), ('2855', '2845', '宜良县'), ('2856', '2845', '石林彝族自治县'), ('2857', '2845', '嵩明县'), ('2860', '2845', '安宁市'), ('2861', '2844', '曲靖'), ('2862', '2861', '市辖区'), ('2863', '2861', '麒麟区'), ('2864', '2861', '马龙县'), ('2865', '2861', '陆良县'), ('2866', '2861', '师宗县'), ('2867', '2861', '罗平县'), ('2868', '2861', '富源县'), ('2869', '2861', '会泽县'), ('2870', '2861', '沾益县'), ('2871', '2861', '宣威市'), ('2872', '2844', '玉溪'), ('2873', '2872', '市辖区'), ('2874', '2872', '红塔区'), ('2875', '2872', '江川县'), ('2876', '2872', '澄江县'), ('2877', '2872', '通海县'), ('2878', '2872', '华宁县'), ('2879', '2872', '易门县'), ('2880', '2872', '峨山彝族自治县'), ('2883', '2844', '保山'), ('2884', '2883', '市辖区'), ('2885', '2883', '隆阳区'), ('2886', '2883', '施甸县'), ('2887', '2883', '腾冲县'), ('2888', '2883', '龙陵县'), ('2889', '2883', '昌宁县'), ('2890', '2844', '昭通地区'), ('2891', '2890', '昭通市'), ('2892', '2890', '鲁甸县'), ('2893', '2890', '巧家县'), ('2894', '2890', '盐津县'), ('2895', '2890', '大关县'), ('2896', '2890', '永善县'), ('2897', '2890', '绥江县'), ('2898', '2890', '镇雄县'), ('2899', '2890', '彝良县'), ('2900', '2890', '威信县'), ('2901', '2890', '水富县'), ('2902', '2844', '楚雄彝族自治州'), ('2903', '2902', '楚雄市'), ('2904', '2902', '双柏县'), ('2905', '2902', '牟定县'), ('2906', '2902', '南华县'), ('2907', '2902', '姚安县'), ('2908', '2902', '大姚县'), ('2909', '2902', '永仁县'), ('2910', '2902', '元谋县'), ('2911', '2902', '武定县'), ('2912', '2902', '禄丰县'), ('2914', '2913', '个旧市'), ('2915', '2913', '开远市'), ('2916', '2913', '蒙自县'), ('2917', '2913', '屏边苗族自治县'), ('2918', '2913', '建水县'), ('2919', '2913', '石屏县'), ('2920', '2913', '弥勒县'), ('2921', '2913', '泸西县'), ('2922', '2913', '元阳县'), ('2923', '2913', '红河县'), ('2925', '2913', '绿春县'), ('2926', '2913', '河口瑶族自治县'), ('2928', '2927', '文山县'), ('2929', '2927', '砚山县'), ('2930', '2927', '西畴县'), ('2931', '2927', '麻栗坡县'), ('2932', '2927', '马关县'), ('2933', '2927', '丘北县'), ('2934', '2927', '广南县'), ('2935', '2927', '富宁县'), ('2936', '2844', '思茅地区'), ('2937', '2936', '思茅市'), ('2939', '2936', '墨江哈尼族自治县'), ('2940', '2936', '景东彝族自治县'), ('2945', '2936', '澜沧拉祜族自治县'), ('2946', '2936', '西盟佤族自治县'), ('2948', '2947', '景洪市'), ('2949', '2947', '勐海县'), ('2950', '2947', '勐腊县'), ('2951', '2844', '大理白族自治州'), ('2952', '2951', '大理市'), ('2953', '2951', '漾濞彝族自治县'), ('2954', '2951', '祥云县'), ('2955', '2951', '宾川县'), ('2956', '2951', '弥渡县'), ('2957', '2951', '南涧彝族自治县'), ('2959', '2951', '永平县'), ('2960', '2951', '云龙县'), ('2961', '2951', '洱源县'), ('2962', '2951', '剑川县'), ('2963', '2951', '鹤庆县'), ('2965', '2964', '瑞丽市'), ('2966', '2964', '潞西市'), ('2967', '2964', '梁河县'), ('2968', '2964', '盈江县'), ('2969', '2964', '陇川县'), ('2970', '2844', '丽江地区'), ('2971', '2970', '丽江纳西族自治县'), ('2972', '2970', '永胜县'), ('2973', '2970', '华坪县'), ('2974', '2970', '宁蒗彝族自治县'), ('2975', '2844', '怒江傈僳族自治州'), ('2976', '2975', '泸水县'), ('2977', '2975', '福贡县'), ('2980', '2844', '迪庆藏族自治州'), ('2981', '2980', '中甸县'), ('2982', '2980', '德钦县'), ('2983', '2980', '维西傈僳族自治县'), ('2984', '2844', '临沧地区'), ('2985', '2984', '临沧县'), ('2986', '2984', '凤庆县'), ('2987', '2984', '云 县'), ('2988', '2984', '永德县'), ('2989', '2984', '镇康县'), ('2992', '2984', '沧源佤族自治县'), ('2993', '0', '西藏'), ('2994', '2993', '拉萨'), ('2995', '2994', '市辖区'), ('2996', '2994', '城关区'), ('2997', '2994', '林周县'), ('2998', '2994', '当雄县'), ('2999', '2994', '尼木县'), ('3000', '2994', '曲水县'), ('3001', '2994', '堆龙德庆县'), ('3002', '2994', '达孜县'), ('3003', '2994', '墨竹工卡县'), ('3004', '2993', '昌都地区'), ('3005', '3004', '昌都县'), ('3006', '3004', '江达县'), ('3007', '3004', '贡觉县'), ('3008', '3004', '类乌齐县'), ('3009', '3004', '丁青县'), ('3010', '3004', '察雅县'), ('3011', '3004', '八宿县'), ('3012', '3004', '左贡县'), ('3013', '3004', '芒康县'), ('3014', '3004', '洛隆县'), ('3015', '3004', '边坝县'), ('3016', '2993', '山南地区'), ('3017', '3016', '乃东县'), ('3018', '3016', '扎囊县'), ('3019', '3016', '贡嘎县'), ('3020', '3016', '桑日县'), ('3021', '3016', '琼结县'), ('3022', '3016', '曲松县'), ('3023', '3016', '措美县'), ('3024', '3016', '洛扎县'), ('3025', '3016', '加查县'), ('3026', '3016', '隆子县'), ('3027', '3016', '错那县'), ('3028', '3016', '浪卡子县'), ('3029', '2993', '日喀则地区'), ('3030', '3029', '日喀则市'), ('3031', '3029', '南木林县'), ('3032', '3029', '江孜县'), ('3033', '3029', '定日县'), ('3034', '3029', '萨迦县'), ('3035', '3029', '拉孜县'), ('3036', '3029', '昂仁县'), ('3037', '3029', '谢通门县'), ('3038', '3029', '白朗县'), ('3039', '3029', '仁布县'), ('3040', '3029', '康马县'), ('3041', '3029', '定结县'), ('3042', '3029', '仲巴县'), ('3043', '3029', '亚东县'), ('3044', '3029', '吉隆县'), ('3045', '3029', '聂拉木县'), ('3046', '3029', '萨嘎县'), ('3047', '3029', '岗巴县'), ('3048', '2993', '那曲地区'), ('3049', '3048', '那曲县'), ('3050', '3048', '嘉黎县'), ('3051', '3048', '比如县'), ('3052', '3048', '聂荣县'), ('3053', '3048', '安多县'), ('3054', '3048', '申扎县'), ('3055', '3048', '索 县'), ('3056', '3048', '班戈县'), ('3057', '3048', '巴青县'), ('3058', '3048', '尼玛县'), ('3059', '2993', '阿里地区'), ('3060', '3059', '普兰县'), ('3061', '3059', '札达县'), ('3062', '3059', '噶尔县'), ('3063', '3059', '日土县'), ('3064', '3059', '革吉县'), ('3065', '3059', '改则县'), ('3066', '3059', '措勤县'), ('3067', '2993', '林芝地区'), ('3068', '3067', '林芝县'), ('3069', '3067', '工布江达县'), ('3070', '3067', '米林县'), ('3071', '3067', '墨脱县'), ('3072', '3067', '波密县'), ('3073', '3067', '察隅县'), ('3074', '3067', '朗 县'), ('3075', '0', '陕西'), ('3076', '3075', '西安'), ('3077', '3076', '市辖区'), ('3078', '3076', '新城区'), ('3079', '3076', '碑林区'), ('3080', '3076', '莲湖区'), ('3081', '3076', '灞桥区'), ('3082', '3076', '未央区'), ('3083', '3076', '雁塔区'), ('3084', '3076', '阎良区'), ('3085', '3076', '临潼区'), ('3086', '3076', '长安县'), ('3087', '3076', '蓝田县'), ('3088', '3076', '周至县'), ('3089', '3076', '户 县'), ('3090', '3076', '高陵县'), ('3091', '3075', '铜川'), ('3092', '3091', '市辖区'), ('3093', '3091', '王益区'), ('3094', '3091', '印台区'), ('3095', '3091', '耀 县'), ('3096', '3091', '宜君县'), ('3097', '3075', '宝鸡'), ('3098', '3097', '市辖区'), ('3099', '3097', '渭滨区'), ('3100', '3097', '金台区'), ('3101', '3097', '宝鸡县'), ('3102', '3097', '凤翔县'), ('3103', '3097', '岐山县'), ('3104', '3097', '扶风县'), ('3105', '3097', '眉 县'), ('3106', '3097', '陇 县'), ('3107', '3097', '千阳县'), ('3108', '3097', '麟游县'), ('3109', '3097', '凤 县'), ('3110', '3097', '太白县'), ('3111', '3075', '咸阳'), ('3112', '3111', '市辖区'), ('3113', '3111', '秦都区'), ('3114', '3111', '杨陵区'), ('3115', '3111', '渭城区'), ('3116', '3111', '三原县'), ('3117', '3111', '泾阳县'), ('3118', '3111', '乾 县'), ('3119', '3111', '礼泉县'), ('3120', '3111', '永寿县'), ('3121', '3111', '彬 县'), ('3122', '3111', '长武县'), ('3123', '3111', '旬邑县'), ('3124', '3111', '淳化县'), ('3125', '3111', '武功县'), ('3126', '3111', '兴平市'), ('3127', '3075', '渭南'), ('3128', '3127', '市辖区'), ('3129', '3127', '临渭区'), ('3130', '3127', '华 县'), ('3131', '3127', '潼关县'), ('3132', '3127', '大荔县'), ('3133', '3127', '合阳县'), ('3134', '3127', '澄城县'), ('3135', '3127', '蒲城县'), ('3136', '3127', '白水县'), ('3137', '3127', '富平县'), ('3138', '3127', '韩城市'), ('3139', '3127', '华阴市'), ('3140', '3075', '延安'), ('3141', '3140', '市辖区'), ('3142', '3140', '宝塔区'), ('3143', '3140', '延长县'), ('3144', '3140', '延川县'), ('3145', '3140', '子长县'), ('3146', '3140', '安塞县'), ('3147', '3140', '志丹县'), ('3148', '3140', '吴旗县'), ('3149', '3140', '甘泉县'), ('3150', '3140', '富 县'), ('3151', '3140', '洛川县'), ('3152', '3140', '宜川县'), ('3153', '3140', '黄龙县'), ('3154', '3140', '黄陵县'), ('3155', '3075', '汉中'), ('3156', '3155', '市辖区'), ('3157', '3155', '汉台区'), ('3158', '3155', '南郑县'), ('3159', '3155', '城固县'), ('3160', '3155', '洋 县'), ('3161', '3155', '西乡县'), ('3162', '3155', '勉 县'), ('3163', '3155', '宁强县'), ('3164', '3155', '略阳县'), ('3165', '3155', '镇巴县'), ('3166', '3155', '留坝县'), ('3167', '3155', '佛坪县'), ('3168', '3075', '榆林'), ('3169', '3168', '市辖区'), ('3170', '3168', '榆阳区'), ('3171', '3168', '神木县'), ('3172', '3168', '府谷县'), ('3173', '3168', '横山县'), ('3174', '3168', '靖边县'), ('3175', '3168', '定边县'), ('3176', '3168', '绥德县'), ('3177', '3168', '米脂县'), ('3178', '3168', '佳 县'), ('3179', '3168', '吴堡县'), ('3180', '3168', '清涧县'), ('3181', '3168', '子洲县'), ('3182', '3075', '安康'), ('3183', '3182', '市辖区'), ('3184', '3182', '汉滨区'), ('3185', '3182', '汉阴县'), ('3186', '3182', '石泉县'), ('3187', '3182', '宁陕县'), ('3188', '3182', '紫阳县'), ('3189', '3182', '岚皋县'), ('3190', '3182', '平利县'), ('3191', '3182', '镇坪县'), ('3192', '3182', '旬阳县'), ('3193', '3182', '白河县'), ('3194', '3075', '商洛地区'), ('3195', '3194', '商州市'), ('3196', '3194', '洛南县'), ('3197', '3194', '丹凤县'), ('3198', '3194', '商南县'), ('3199', '3194', '山阳县'), ('3200', '3194', '镇安县'), ('3201', '3194', '柞水县'), ('3202', '0', '甘肃'), ('3203', '3202', '兰州'), ('3204', '3203', '市辖区'), ('3205', '3203', '城关区'), ('3206', '3203', '七里河区'), ('3207', '3203', '西固区'), ('3208', '3203', '安宁区'), ('3209', '3203', '红古区'), ('3210', '3203', '永登县'), ('3211', '3203', '皋兰县'), ('3212', '3203', '榆中县'), ('3213', '3202', '嘉峪关'), ('3214', '3213', '市辖区'), ('3215', '3202', '金昌'), ('3216', '3215', '市辖区'), ('3217', '3215', '金川区'), ('3218', '3215', '永昌县'), ('3219', '3202', '白银'), ('3220', '3219', '市辖区'), ('3221', '3219', '白银区'), ('3222', '3219', '平川区'), ('3223', '3219', '靖远县'), ('3224', '3219', '会宁县'), ('3225', '3219', '景泰县'), ('3226', '3202', '天水'), ('3227', '3226', '市辖区'), ('3228', '3226', '秦城区'), ('3229', '3226', '北道区'), ('3230', '3226', '清水县'), ('3231', '3226', '秦安县'), ('3232', '3226', '甘谷县'), ('3233', '3226', '武山县'), ('3234', '3226', '张家川回族自治县'), ('3235', '3202', '酒泉地区'), ('3236', '3235', '玉门市'), ('3237', '3235', '酒泉市'), ('3238', '3235', '敦煌市'), ('3239', '3235', '金塔县'), ('3240', '3235', '肃北蒙古族自治县'), ('3242', '3235', '安西县'), ('3243', '3202', '张掖地区'), ('3244', '3243', '张掖市'), ('3245', '3243', '肃南裕固族自治县'), ('3246', '3243', '民乐县'), ('3247', '3243', '临泽县'), ('3248', '3243', '高台县'), ('3249', '3243', '山丹县'), ('3250', '3202', '武威地区'), ('3251', '3250', '武威市'), ('3252', '3250', '民勤县'), ('3253', '3250', '古浪县'), ('3254', '3250', '天祝藏族自治县'), ('3255', '3202', '定西地区'), ('3256', '3255', '定西县'), ('3257', '3255', '通渭县'), ('3258', '3255', '陇西县'), ('3259', '3255', '渭源县'), ('3260', '3255', '临洮县'), ('3261', '3255', '漳 县'), ('3262', '3255', '岷 县'), ('3263', '3202', '陇南地区'), ('3264', '3263', '武都县'), ('3265', '3263', '宕昌县'), ('3266', '3263', '成 县'), ('3267', '3263', '康 县'), ('3268', '3263', '文 县'), ('3269', '3263', '西和县'), ('3270', '3263', '礼 县'), ('3271', '3263', '两当县'), ('3272', '3263', '徽 县'), ('3273', '3202', '平凉地区'), ('3274', '3273', '平凉市'), ('3275', '3273', '泾川县'), ('3276', '3273', '灵台县'), ('3277', '3273', '崇信县'), ('3278', '3273', '华亭县'), ('3279', '3273', '庄浪县'), ('3280', '3273', '静宁县'), ('3281', '3202', '庆阳地区'), ('3282', '3281', '西峰市'), ('3283', '3281', '庆阳县'), ('3284', '3281', '环 县'), ('3285', '3281', '华池县'), ('3286', '3281', '合水县'), ('3287', '3281', '正宁县'), ('3288', '3281', '宁 县'), ('3289', '3281', '镇原县'), ('3290', '3202', '临夏回族自治州'), ('3291', '3290', '临夏市'), ('3292', '3290', '临夏县'), ('3293', '3290', '康乐县'), ('3294', '3290', '永靖县'), ('3295', '3290', '广河县'), ('3296', '3290', '和政县'), ('3297', '3290', '东乡族自治县'), ('3299', '3202', '甘南藏族自治州'), ('3300', '3299', '合作市'), ('3301', '3299', '临潭县'), ('3302', '3299', '卓尼县'), ('3303', '3299', '舟曲县'), ('3304', '3299', '迭部县'), ('3305', '3299', '玛曲县'), ('3306', '3299', '碌曲县'), ('3307', '3299', '夏河县'), ('3308', '0', '青海'), ('3309', '3308', '西宁'), ('3310', '3309', '市辖区'), ('3311', '3309', '城东区'), ('3312', '3309', '城中区'), ('3313', '3309', '城西区'), ('3314', '3309', '城北区'), ('3316', '3309', '湟中县'), ('3317', '3309', '湟源县'), ('3318', '3308', '海东地区'), ('3319', '3318', '平安县'), ('3321', '3318', '乐都县'), ('3322', '3318', '互助土族自治县'), ('3323', '3318', '化隆回族自治县'), ('3324', '3318', '循化撒拉族自治县'), ('3325', '3308', '海北藏族自治州'), ('3326', '3325', '门源回族自治县'), ('3327', '3325', '祁连县'), ('3328', '3325', '海晏县'), ('3329', '3325', '刚察县'), ('3330', '3308', '黄南藏族自治州'), ('3331', '3330', '同仁县'), ('3332', '3330', '尖扎县'), ('3333', '3330', '泽库县'), ('3334', '3330', '河南蒙古族自治县'), ('3335', '3308', '海南藏族自治州'), ('3336', '3335', '共和县'), ('3337', '3335', '同德县'), ('3338', '3335', '贵德县'), ('3339', '3335', '兴海县'), ('3340', '3335', '贵南县'), ('3341', '3308', '果洛藏族自治州'), ('3342', '3341', '玛沁县'), ('3343', '3341', '班玛县'), ('3344', '3341', '甘德县'), ('3345', '3341', '达日县'), ('3346', '3341', '久治县'), ('3347', '3341', '玛多县'), ('3348', '3308', '玉树藏族自治州'), ('3349', '3348', '玉树县'), ('3350', '3348', '杂多县'), ('3351', '3348', '称多县'), ('3352', '3348', '治多县'), ('3353', '3348', '囊谦县'), ('3354', '3348', '曲麻莱县'), ('3356', '3355', '格尔木市'), ('3357', '3355', '德令哈市'), ('3358', '3355', '乌兰县'), ('3359', '3355', '都兰县'), ('3360', '3355', '天峻县'), ('3361', '0', '宁夏'), ('3362', '3361', '银川'), ('3363', '3362', '市辖区'), ('3364', '3362', '城 区'), ('3365', '3362', '新城区'), ('3366', '3362', '郊 区'), ('3367', '3362', '永宁县'), ('3368', '3362', '贺兰县'), ('3369', '3361', '石嘴山'), ('3370', '3369', '市辖区'), ('3371', '3369', '大武口区'), ('3372', '3369', '石嘴山区'), ('3373', '3369', '石炭井区'), ('3374', '3369', '平罗县'), ('3375', '3369', '陶乐县'), ('3376', '3369', '惠农县'), ('3377', '3361', '吴忠'), ('3378', '3377', '市辖区'), ('3379', '3377', '利通区'), ('3380', '3377', '中卫县'), ('3381', '3377', '中宁县'), ('3382', '3377', '盐池县'), ('3383', '3377', '同心县'), ('3384', '3377', '青铜峡市'), ('3385', '3377', '灵武市'), ('3386', '3361', '固原地区'), ('3387', '3386', '固原县'), ('3388', '3386', '海原县'), ('3389', '3386', '西吉县'), ('3390', '3386', '隆德县'), ('3391', '3386', '泾源县'), ('3392', '3386', '彭阳县'), ('3393', '0', '新疆'), ('3394', '3393', '乌鲁木齐'), ('3395', '3394', '市辖区'), ('3396', '3394', '天山区'), ('3397', '3394', '沙依巴克区'), ('3398', '3394', '新市区'), ('3399', '3394', '水磨沟区'), ('3400', '3394', '头屯河区'), ('3401', '3394', '南泉区'), ('3402', '3394', '东山区'), ('3403', '3394', '乌鲁木齐县'), ('3404', '3393', '克拉玛依'), ('3405', '3404', '市辖区'), ('3406', '3404', '独山子区'), ('3407', '3404', '克拉玛依区'), ('3408', '3404', '白碱滩区'), ('3409', '3404', '乌尔禾区'), ('3410', '3393', '吐鲁番地区'), ('3411', '3410', '吐鲁番市'), ('3412', '3410', '鄯善县'), ('3413', '3410', '托克逊县'), ('3414', '3393', '哈密地区'), ('3415', '3414', '哈密市'), ('3417', '3414', '伊吾县'), ('3418', '3393', '昌吉回族自治州'), ('3419', '3418', '昌吉市'), ('3420', '3418', '阜康市'), ('3421', '3418', '米泉市'), ('3422', '3418', '呼图壁县'), ('3423', '3418', '玛纳斯县'), ('3424', '3418', '奇台县'), ('3425', '3418', '吉木萨尔县'), ('3426', '3418', '木垒哈萨克自治县'), ('3428', '3427', '博乐市'), ('3429', '3427', '精河县'), ('3430', '3427', '温泉县'), ('3432', '3431', '库尔勒市'), ('3433', '3431', '轮台县'), ('3434', '3431', '尉犁县'), ('3435', '3431', '若羌县'), ('3436', '3431', '且末县'), ('3437', '3431', '焉耆回族自治县'), ('3438', '3431', '和静县'), ('3439', '3431', '和硕县'), ('3440', '3431', '博湖县'), ('3441', '3393', '阿克苏地区'), ('3442', '3441', '阿克苏市'), ('3443', '3441', '温宿县'), ('3444', '3441', '库车县'), ('3445', '3441', '沙雅县'), ('3446', '3441', '新和县'), ('3447', '3441', '拜城县'), ('3448', '3441', '乌什县'), ('3449', '3441', '阿瓦提县'), ('3450', '3441', '柯坪县'), ('3452', '3451', '阿图什市'), ('3453', '3451', '阿克陶县'), ('3454', '3451', '阿合奇县'), ('3455', '3451', '乌恰县'), ('3456', '3393', '喀什地区'), ('3457', '3456', '喀什市'), ('3458', '3456', '疏附县'), ('3459', '3456', '疏勒县'), ('3460', '3456', '英吉沙县'), ('3461', '3456', '泽普县'), ('3462', '3456', '莎车县'), ('3463', '3456', '叶城县'), ('3464', '3456', '麦盖提县'), ('3465', '3456', '岳普湖县'), ('3466', '3456', '伽师县'), ('3467', '3456', '巴楚县'), ('3469', '3393', '和田地区'), ('3470', '3469', '和田市'), ('3471', '3469', '和田县'), ('3472', '3469', '墨玉县'), ('3473', '3469', '皮山县'), ('3474', '3469', '洛浦县'), ('3475', '3469', '策勒县'), ('3476', '3469', '于田县'), ('3477', '3469', '民丰县'), ('3478', '3393', '伊犁哈萨克自治州'), ('3479', '3478', '奎屯市'), ('3480', '3393', '伊犁地区'), ('3481', '3480', '伊宁市'), ('3482', '3480', '伊宁县'), ('3484', '3480', '霍城县'), ('3485', '3480', '巩留县'), ('3486', '3480', '新源县'), ('3487', '3480', '昭苏县'), ('3488', '3480', '特克斯县'), ('3489', '3480', '尼勒克县'), ('3490', '3393', '塔城地区'), ('3491', '3490', '塔城市'), ('3492', '3490', '乌苏市'), ('3493', '3490', '额敏县'), ('3494', '3490', '沙湾县'), ('3495', '3490', '托里县'), ('3496', '3490', '裕民县'), ('3498', '3393', '阿勒泰地区'), ('3499', '3498', '阿勒泰市'), ('3500', '3498', '布尔津县'), ('3501', '3498', '富蕴县'), ('3502', '3498', '福海县'), ('3503', '3498', '哈巴河县'), ('3504', '3498', '青河县'), ('3505', '3498', '吉木乃县'), ('3506', '3393', '省直辖行政单位'), ('3507', '3506', '石河子市'), ('3508', '0', '台湾'), ('3509', '0', '香港'), ('3510', '0', '澳门'); +COMMIT; + +-- ---------------------------- +-- Table structure for `bjyadmin_users` +-- ---------------------------- +DROP TABLE IF EXISTS `bjyadmin_users`; +CREATE TABLE `bjyadmin_users` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(60) NOT NULL DEFAULT '' COMMENT '用户名', + `password` varchar(64) NOT NULL DEFAULT '' COMMENT '登录密码;mb_password加密', + `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '用户头像,相对于upload/avatar目录', + `email` varchar(100) NOT NULL DEFAULT '' COMMENT '登录邮箱', + `email_code` varchar(60) DEFAULT NULL COMMENT '激活码', + `phone` bigint(11) unsigned DEFAULT NULL COMMENT '手机号', + `status` tinyint(1) NOT NULL DEFAULT '2' COMMENT '用户状态 0:禁用; 1:正常 ;2:未验证', + `register_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '注册时间', + `last_login_ip` varchar(16) NOT NULL DEFAULT '' COMMENT '最后登录ip', + `last_login_time` int(10) unsigned NOT NULL COMMENT '最后登录时间', + PRIMARY KEY (`id`), + KEY `user_login_key` (`username`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Records of `bjyadmin_users` +-- ---------------------------- +BEGIN; +INSERT INTO `bjyadmin_users` VALUES ('88', 'admin', 'e10adc3949ba59abbe56e057f20f883e', '/Upload/avatar/user1.jpg', '', '', null, '1', '1449199996', '', '0'), ('89', 'admin2', 'e10adc3949ba59abbe56e057f20f883e', '/Upload/avatar/user2.jpg', '', '', null, '1', '1449199996', '', '0'); +COMMIT; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar.png b/Public/statics/aceadmin/avatars/avatar.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar.png rename to Public/statics/aceadmin/avatars/avatar.png diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar1.png b/Public/statics/aceadmin/avatars/avatar1.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar1.png rename to Public/statics/aceadmin/avatars/avatar1.png diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar2.png b/Public/statics/aceadmin/avatars/avatar2.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar2.png rename to Public/statics/aceadmin/avatars/avatar2.png diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar3.png b/Public/statics/aceadmin/avatars/avatar3.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar3.png rename to Public/statics/aceadmin/avatars/avatar3.png diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar4.png b/Public/statics/aceadmin/avatars/avatar4.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar4.png rename to Public/statics/aceadmin/avatars/avatar4.png diff --git a/tpl/Admin/Public/aceadmin/avatars/avatar5.png b/Public/statics/aceadmin/avatars/avatar5.png old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/avatar5.png rename to Public/statics/aceadmin/avatars/avatar5.png diff --git a/tpl/Admin/Public/aceadmin/avatars/profile-pic.jpg b/Public/statics/aceadmin/avatars/profile-pic.jpg old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/profile-pic.jpg rename to Public/statics/aceadmin/avatars/profile-pic.jpg diff --git a/tpl/Admin/Public/aceadmin/avatars/user.jpg b/Public/statics/aceadmin/avatars/user.jpg old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/avatars/user.jpg rename to Public/statics/aceadmin/avatars/user.jpg diff --git a/tpl/Admin/Public/aceadmin/css/ace-ie.min.css b/Public/statics/aceadmin/css/ace-ie.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/ace-ie.min.css rename to Public/statics/aceadmin/css/ace-ie.min.css diff --git a/tpl/Admin/Public/aceadmin/css/ace-rtl.min.css b/Public/statics/aceadmin/css/ace-rtl.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/ace-rtl.min.css rename to Public/statics/aceadmin/css/ace-rtl.min.css diff --git a/tpl/Admin/Public/aceadmin/css/ace-skins.min.css b/Public/statics/aceadmin/css/ace-skins.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/ace-skins.min.css rename to Public/statics/aceadmin/css/ace-skins.min.css diff --git a/tpl/Admin/Public/aceadmin/css/ace.min.css b/Public/statics/aceadmin/css/ace.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/ace.min.css rename to Public/statics/aceadmin/css/ace.min.css diff --git a/tpl/Admin/Public/aceadmin/css/bootstrap-editable.css b/Public/statics/aceadmin/css/bootstrap-editable.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/bootstrap-editable.css rename to Public/statics/aceadmin/css/bootstrap-editable.css diff --git a/tpl/Admin/Public/aceadmin/css/bootstrap-timepicker.css b/Public/statics/aceadmin/css/bootstrap-timepicker.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/bootstrap-timepicker.css rename to Public/statics/aceadmin/css/bootstrap-timepicker.css diff --git a/tpl/Admin/Public/aceadmin/css/bootstrap.min.css b/Public/statics/aceadmin/css/bootstrap.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/bootstrap.min.css rename to Public/statics/aceadmin/css/bootstrap.min.css diff --git a/tpl/Admin/Public/aceadmin/css/chosen.css b/Public/statics/aceadmin/css/chosen.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/chosen.css rename to Public/statics/aceadmin/css/chosen.css diff --git a/tpl/Admin/Public/aceadmin/css/colorbox.css b/Public/statics/aceadmin/css/colorbox.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/colorbox.css rename to Public/statics/aceadmin/css/colorbox.css diff --git a/tpl/Admin/Public/aceadmin/css/colorpicker.css b/Public/statics/aceadmin/css/colorpicker.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/colorpicker.css rename to Public/statics/aceadmin/css/colorpicker.css diff --git a/tpl/Admin/Public/aceadmin/css/datepicker.css b/Public/statics/aceadmin/css/datepicker.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/datepicker.css rename to Public/statics/aceadmin/css/datepicker.css diff --git a/tpl/Admin/Public/aceadmin/css/daterangepicker.css b/Public/statics/aceadmin/css/daterangepicker.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/daterangepicker.css rename to Public/statics/aceadmin/css/daterangepicker.css diff --git a/tpl/Admin/Public/aceadmin/css/dropzone.css b/Public/statics/aceadmin/css/dropzone.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/dropzone.css rename to Public/statics/aceadmin/css/dropzone.css diff --git a/tpl/Admin/Public/aceadmin/css/font-awesome-ie7.min.css b/Public/statics/aceadmin/css/font-awesome-ie7.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/font-awesome-ie7.min.css rename to Public/statics/aceadmin/css/font-awesome-ie7.min.css diff --git a/tpl/Admin/Public/aceadmin/css/font-awesome.min.css b/Public/statics/aceadmin/css/font-awesome.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/font-awesome.min.css rename to Public/statics/aceadmin/css/font-awesome.min.css diff --git a/tpl/Admin/Public/aceadmin/css/fullcalendar.css b/Public/statics/aceadmin/css/fullcalendar.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/fullcalendar.css rename to Public/statics/aceadmin/css/fullcalendar.css diff --git a/tpl/Admin/Public/aceadmin/css/images/loading.gif b/Public/statics/aceadmin/css/images/loading.gif old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/images/loading.gif rename to Public/statics/aceadmin/css/images/loading.gif diff --git a/tpl/Admin/Public/aceadmin/css/jquery-ui-1.10.3.custom.min.css b/Public/statics/aceadmin/css/jquery-ui-1.10.3.custom.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/jquery-ui-1.10.3.custom.min.css rename to Public/statics/aceadmin/css/jquery-ui-1.10.3.custom.min.css diff --git a/tpl/Admin/Public/aceadmin/css/jquery-ui-1.10.3.full.min.css b/Public/statics/aceadmin/css/jquery-ui-1.10.3.full.min.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/jquery-ui-1.10.3.full.min.css rename to Public/statics/aceadmin/css/jquery-ui-1.10.3.full.min.css diff --git a/tpl/Admin/Public/aceadmin/css/jquery.gritter.css b/Public/statics/aceadmin/css/jquery.gritter.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/jquery.gritter.css rename to Public/statics/aceadmin/css/jquery.gritter.css diff --git a/tpl/Admin/Public/aceadmin/css/select2.css b/Public/statics/aceadmin/css/select2.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/select2.css rename to Public/statics/aceadmin/css/select2.css diff --git a/tpl/Admin/Public/aceadmin/css/ui.jqgrid.css b/Public/statics/aceadmin/css/ui.jqgrid.css old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/css/ui.jqgrid.css rename to Public/statics/aceadmin/css/ui.jqgrid.css diff --git a/tpl/Admin/Public/aceadmin/font/fontawesome-webfont.woff b/Public/statics/aceadmin/font/fontawesome-webfont.woff old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/font/fontawesome-webfont.woff rename to Public/statics/aceadmin/font/fontawesome-webfont.woff diff --git a/tpl/Admin/Public/aceadmin/images/gallery/thumb-4.jpg b/Public/statics/aceadmin/images/gallery/thumb-4.jpg old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/images/gallery/thumb-4.jpg rename to Public/statics/aceadmin/images/gallery/thumb-4.jpg diff --git a/Public/statics/aceadmin/js/ace-editable.min.js b/Public/statics/aceadmin/js/ace-editable.min.js new file mode 100644 index 0000000..7b7a20d --- /dev/null +++ b/Public/statics/aceadmin/js/ace-editable.min.js @@ -0,0 +1,4 @@ +/** +Image editable input. +**/ +!function(a){"use strict";var b=function(a){this.init("image",a,b.defaults),"on_error"in a.image&&(this.on_error=a.image.on_error,delete a.image.on_error),"on_success"in a.image&&(this.on_success=a.image.on_success,delete a.image.on_success),"max_size"in a.image&&(this.max_size=a.image.max_size,delete a.image.max_size),this.initImage(a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initImage:function(b,c){this.options.image=a.extend({},c.image,b.image),this.name=this.options.image.name||"editable-image-input"},render:function(){var a=this;this.$input=this.$tpl.find("input[type=hidden]:eq(0)"),this.$file=this.$tpl.find("input[type=file]:eq(0)"),this.$file.attr({name:this.name}),this.$input.attr({name:this.name+"-hidden"}),this.options.image.allowExt=this.options.image.allowExt||["jpg","jpeg","png","gif"],this.options.image.allowMime=this.options.image.allowMime||["image/jpg","image/jpeg","image/png","image/gif"],this.options.image.maxSize=a.max_size||this.options.image.maxSize||!1,this.options.image.before_remove=this.options.image.before_remove||function(){return a.$input.val(null),!0},this.$file.ace_file_input(this.options.image).on("change",function(){var b=a.$file.val()||a.$file.data("ace_input_files")?Math.random()+""+(new Date).getTime():null;a.$input.val(b)}).closest(".ace-file-input").css({width:"150px"}).closest(".editable-input").addClass("editable-image"),this.$file.off("file.error.ace").on("file.error.ace",function(b,c){a.on_error&&(c.error_count.ext>0||c.error_count.mime>0?a.on_error(1):c.error_count.size>0&&a.on_error(2))})}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',inputclass:"",image:{style:"well",btn_choose:"Change Image",btn_change:null,no_icon:"fa fa-picture-o",thumbnail:"large"}}),a.fn.editabletypes.image=b}(window.jQuery),function(a){"use strict";var b=function(c){this.init("wysiwyg",c,b.defaults),this.options.wysiwyg=a.extend({},b.defaults.wysiwyg,c.wysiwyg)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.$editor=this.$input.nextAll(".wysiwyg-editor:eq(0)"),this.$tpl.parent().find(".wysiwyg-editor").show().ace_wysiwyg(this.options.wysiwyg).prev().addClass("wysiwyg-style2").closest(".editable-input").addClass("editable-wysiwyg").closest(".editable-container").css({display:"block"}),this.options.wysiwyg&&this.options.wysiwyg.css&&this.$tpl.closest(".editable-wysiwyg").css(this.options.wysiwyg.css)},value2html:function(b,c){return a(c).html(b),!1},html2value:function(a){return a},value2input:function(a){this.$editor.html(a)},input2value:function(){return this.$editor.html()},activate:function(){},isEmpty:function(b){return""===a.trim(b.html())?!0:""!==a.trim(b.text())?!1:!b.height()||!b.width()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'

',inputclass:"editable-wysiwyg",wysiwyg:{toolbar:["bold","italic","strikethrough","underline",null,"foreColor",null,"insertImage"]}}),a.fn.editabletypes.wysiwyg=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("spinner",a,b.defaults),this.initSpinner(a,b.defaults),this.nativeUI=!1;try{var c=document.createElement("INPUT");c.type="number",this.nativeUI="number"===c.type&&this.options.spinner.nativeUI===!0}catch(d){}};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initSpinner:function(b,c){this.options.spinner=a.extend({},c.spinner,b.spinner)},render:function(){},activate:function(){if(this.$input.is(":visible"))if(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.nativeUI){this.$input.get(0).type="number";for(var b=["min","max","step"],c=0;c',inputclass:"",spinner:{min:0,max:100,step:1,icon_up:"fa fa-plus",icon_down:"fa fa-minus",btn_up_class:"btn-success",btn_down_class:"btn-danger"}}),a.fn.editabletypes.spinner=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("slider",a,b.defaults),this.initSlider(a,b.defaults),this.nativeUI=!1;try{var c=document.createElement("INPUT");c.type="range",this.nativeUI="range"===c.type&&this.options.slider.nativeUI===!0}catch(d){}};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initSlider:function(b,c){this.options.slider=a.extend({},c.slider,b.slider)},render:function(){},activate:function(){if(this.$input.is(":visible"))if(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.nativeUI){this.$input.get(0).type="range";for(var b=["min","max","step"],c=0;c
"),a(c.handle.firstChild).show().children().eq(1).text(d)}});this.$input.parent().addClass("editable-slider").css("width",d+"px").slider(b)}},value2html:function(a,b){},autosubmit:function(){this.$input.keydown(function(b){13===b.which&&a(this).closest("form").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',inputclass:"",slider:{min:1,max:100,step:1,range:"min"}}),a.fn.editabletypes.slider=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("adate",a,b.defaults),this.initDate(a,b.defaults),this.nativeUI=!1;try{var c=document.createElement("INPUT");c.type="date",this.nativeUI="date"===c.type&&this.options.date.nativeUI===!0}catch(d){}};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{initDate:function(b,c){this.options.date=a.extend({},c.date,b.date)},render:function(){this.$input=this.$tpl.find("input.date")},activate:function(){if(this.$input.is(":visible")&&this.$input.focus(),this.nativeUI)this.$input.get(0).type="date";else{var a=this.$input;this.$input.datepicker(this.options.date);var b=a.data("datepicker");b&&a.on("click",function(){b.show()}).siblings(".input-group-addon").on("click",function(){b.show()})}},autosubmit:function(){this.$input.keydown(function(b){13===b.which&&a(this).closest("form").submit()})}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'
',date:{weekStart:0,startView:0,minViewMode:0}}),a.fn.editabletypes.adate=b}(window.jQuery); \ No newline at end of file diff --git a/tpl/Admin/Public/aceadmin/js/ace-elements.min.js b/Public/statics/aceadmin/js/ace-elements.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/ace-elements.min.js rename to Public/statics/aceadmin/js/ace-elements.min.js diff --git a/tpl/Admin/Public/aceadmin/js/ace-extra.min.js b/Public/statics/aceadmin/js/ace-extra.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/ace-extra.min.js rename to Public/statics/aceadmin/js/ace-extra.min.js diff --git a/tpl/Admin/Public/aceadmin/js/ace.min.js b/Public/statics/aceadmin/js/ace.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/ace.min.js rename to Public/statics/aceadmin/js/ace.min.js diff --git a/tpl/Admin/Public/aceadmin/js/additional-methods.min.js b/Public/statics/aceadmin/js/additional-methods.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/additional-methods.min.js rename to Public/statics/aceadmin/js/additional-methods.min.js diff --git a/Public/statics/aceadmin/js/autosize.min.js b/Public/statics/aceadmin/js/autosize.min.js new file mode 100644 index 0000000..f968325 --- /dev/null +++ b/Public/statics/aceadmin/js/autosize.min.js @@ -0,0 +1,6 @@ +/*! + Autosize 3.0.15 + license: MIT + http://www.jacklmoore.com/autosize +*/ +!function(a,b){if("function"==typeof define&&define.amd)define(["exports","module"],b);else if("undefined"!=typeof exports&&"undefined"!=typeof module)b(exports,module);else{var c={exports:{}};b(c.exports,c),a.autosize=c.exports}}(this,function(a,b){"use strict";function c(a){function b(){var b=window.getComputedStyle(a,null);n=b.overflowY,"vertical"===b.resize?a.style.resize="none":"both"===b.resize&&(a.style.resize="horizontal"),m="content-box"===b.boxSizing?-(parseFloat(b.paddingTop)+parseFloat(b.paddingBottom)):parseFloat(b.borderTopWidth)+parseFloat(b.borderBottomWidth),isNaN(m)&&(m=0),e()}function c(b){var c=a.style.width;a.style.width="0px",a.offsetWidth,a.style.width=c,n=b,l&&(a.style.overflowY=b),d()}function d(){var b=window.pageYOffset,c=document.body.scrollTop,d=a.style.height;a.style.height="auto";var e=a.scrollHeight+m;return 0===a.scrollHeight?void(a.style.height=d):(a.style.height=e+"px",o=a.clientWidth,document.documentElement.scrollTop=b,void(document.body.scrollTop=c))}function e(){var b=a.style.height;d();var e=window.getComputedStyle(a,null);if(e.height!==a.style.height?"visible"!==n&&c("visible"):"hidden"!==n&&c("hidden"),b!==a.style.height){var f=g("autosize:resized");a.dispatchEvent(f)}}var h=void 0===arguments[1]?{}:arguments[1],i=h.setOverflowX,j=void 0===i?!0:i,k=h.setOverflowY,l=void 0===k?!0:k;if(a&&a.nodeName&&"TEXTAREA"===a.nodeName&&!f.has(a)){var m=null,n=null,o=a.clientWidth,p=function(){a.clientWidth!==o&&e()},q=function(b){window.removeEventListener("resize",p,!1),a.removeEventListener("input",e,!1),a.removeEventListener("keyup",e,!1),a.removeEventListener("autosize:destroy",q,!1),a.removeEventListener("autosize:update",e,!1),f["delete"](a),Object.keys(b).forEach(function(c){a.style[c]=b[c]})}.bind(a,{height:a.style.height,resize:a.style.resize,overflowY:a.style.overflowY,overflowX:a.style.overflowX,wordWrap:a.style.wordWrap});a.addEventListener("autosize:destroy",q,!1),"onpropertychange"in a&&"oninput"in a&&a.addEventListener("keyup",e,!1),window.addEventListener("resize",p,!1),a.addEventListener("input",e,!1),a.addEventListener("autosize:update",e,!1),f.add(a),j&&(a.style.overflowX="hidden",a.style.wordWrap="break-word"),b()}}function d(a){if(a&&a.nodeName&&"TEXTAREA"===a.nodeName){var b=g("autosize:destroy");a.dispatchEvent(b)}}function e(a){if(a&&a.nodeName&&"TEXTAREA"===a.nodeName){var b=g("autosize:update");a.dispatchEvent(b)}}var f="function"==typeof Set?new Set:function(){var a=[];return{has:function(b){return Boolean(a.indexOf(b)>-1)},add:function(b){a.push(b)},"delete":function(b){a.splice(a.indexOf(b),1)}}}(),g=function(a){return new Event(a)};try{new Event("test")}catch(h){g=function(a){var b=document.createEvent("Event");return b.initEvent(a,!0,!1),b}}var i=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(i=function(a){return a},i.destroy=function(a){return a},i.update=function(a){return a}):(i=function(a,b){return a&&Array.prototype.forEach.call(a.length?a:[a],function(a){return c(a,b)}),a},i.destroy=function(a){return a&&Array.prototype.forEach.call(a.length?a:[a],d),a},i.update=function(a){return a&&Array.prototype.forEach.call(a.length?a:[a],e),a}),b.exports=i}); \ No newline at end of file diff --git a/Public/statics/aceadmin/js/bootbox.js b/Public/statics/aceadmin/js/bootbox.js new file mode 100644 index 0000000..6e77489 --- /dev/null +++ b/Public/statics/aceadmin/js/bootbox.js @@ -0,0 +1,6 @@ +/** + * bootbox.js [v4.4.0] + * + * http://bootboxjs.com/license.txt + */ +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d.call(c,a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(2>=d&&f===d-1?e.className="btn-primary":e.className="btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"",header:"",footer:"",closeButton:"",form:"
",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
",date:"",time:"",number:"",password:""}},o={locale:"en",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback.call(this):!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,!1)},a.buttons.confirm.callback=function(){return a.callback.call(this,!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback.call(this,c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!b.isArray(k))throw new Error("Please pass an array of input options");if(!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("").attr("label",d.group)),e=o[d.group]),e.append("")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("
"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),a.maxlength&&h.attr("maxlength",a.maxlength),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var d=b(n.dialog),f=d.find(".modal-dialog"),i=d.find(".modal-body"),j=a.buttons,k="",l={onEscape:a.onEscape};if(b.fn.modal===c)throw new Error("$.fn.modal is not defined; please double check you have included the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ for more details.");if(g(j,function(a,b){k+="",l[a]=b.callback}),i.find(".bootbox-body").html(a.message),a.animate===!0&&d.addClass("fade"),a.className&&d.addClass(a.className),"large"===a.size?f.addClass("modal-lg"):"small"===a.size&&f.addClass("modal-sm"),a.title&&i.before(n.header),a.closeButton){var m=b(n.closeButton);a.title?d.find(".modal-header").prepend(m):m.css("margin-top","-10px").prependTo(i)}return a.title&&d.find(".modal-title").html(a.title),k.length&&(i.after(n.footer),d.find(".modal-footer").html(k)),d.on("hidden.bs.modal",function(a){a.target===this&&d.remove()}),d.on("shown.bs.modal",function(){d.find(".btn-primary:first").focus()}),"static"!==a.backdrop&&d.on("click.dismiss.bs.modal",function(a){d.children(".modal-backdrop").length&&(a.currentTarget=d.children(".modal-backdrop").get(0)),a.target===a.currentTarget&&d.trigger("escape.close.bb")}),d.on("escape.close.bb",function(a){l.onEscape&&e(a,d,l.onEscape)}),d.on("click",".modal-footer button",function(a){var c=b(this).data("bb-handler");e(a,d,l[c])}),d.on("click",".bootbox-close-button",function(a){e(a,d,l.onEscape)}),d.on("keyup",function(a){27===a.which&&d.trigger("escape.close.bb")}),b(a.container).append(d),d.modal({backdrop:a.backdrop?"static":!1,keyboard:!1,show:!1}),a.show&&d.modal("show"),d},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={bg_BG:{OK:"Ок",CANCEL:"Отказ",CONFIRM:"Потвърждавам"},br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fa:{OK:"قبول",CANCEL:"لغو",CONFIRM:"تایید"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},hu:{OK:"OK",CANCEL:"Mégsem",CONFIRM:"Megerősít"},hr:{OK:"OK",CANCEL:"Odustani",CONFIRM:"Potvrdi"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sq:{OK:"OK",CANCEL:"Anulo",CONFIRM:"Prano"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},th:{OK:"ตกลง",CANCEL:"ยกเลิก",CONFIRM:"ยืนยัน"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.addLocale=function(a,c){return b.each(["OK","CANCEL","CONFIRM"],function(a,b){if(!c[b])throw new Error("Please supply a translation for '"+b+"'")}),q[a]={OK:c.OK,CANCEL:c.CANCEL,CONFIRM:c.CONFIRM},p},p.removeLocale=function(a){return delete q[a],p},p.setLocale=function(a){return p.setDefaults("locale",a)},p.init=function(c){return a(c||b)},p}); \ No newline at end of file diff --git a/tpl/Admin/Public/aceadmin/js/bootbox.min.js b/Public/statics/aceadmin/js/bootbox.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/bootbox.min.js rename to Public/statics/aceadmin/js/bootbox.min.js diff --git a/tpl/Admin/Public/aceadmin/js/bootstrap-colorpicker.min.js b/Public/statics/aceadmin/js/bootstrap-colorpicker.min.js old mode 100755 new mode 100644 similarity index 100% rename from tpl/Admin/Public/aceadmin/js/bootstrap-colorpicker.min.js rename to Public/statics/aceadmin/js/bootstrap-colorpicker.min.js diff --git a/Public/statics/aceadmin/js/bootstrap-datepicker.min.js b/Public/statics/aceadmin/js/bootstrap-datepicker.min.js new file mode 100644 index 0000000..ec05ea6 --- /dev/null +++ b/Public/statics/aceadmin/js/bootstrap-datepicker.min.js @@ -0,0 +1,9 @@ +/*! + * Datepicker for Bootstrap v1.6.0 (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(this[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a(b).data("datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(a,c){return 0===a||"days"===a||"month"===a?0:1===a||"months"===a||"year"===a?1:2===a||"years"===a||"decade"===a?2:3===a||"decades"===a||"century"===a?3:4===a||"centuries"===a||"millennium"===a?4:c===b?!1:c},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;var d=a(c);return d.length>0}catch(e){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView,0),e.minViewMode=this._resolveViewName(e.minViewMode,0),e.maxViewMode=this._resolveViewName(e.maxViewMode,4),e.startView=Math.min(e.startView,e.maxViewMode),e.startView=Math.max(e.startView,e.minViewMode),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);if(e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=e.daysOfWeekDisabled||[],a.isArray(e.daysOfWeekDisabled)||(e.daysOfWeekDisabled=e.daysOfWeekDisabled.split(/[,\s]*/)),e.daysOfWeekDisabled=a.map(e.daysOfWeekDisabled,function(a){return parseInt(a,10)}),e.daysOfWeekHighlighted=e.daysOfWeekHighlighted||[],a.isArray(e.daysOfWeekHighlighted)||(e.daysOfWeekHighlighted=e.daysOfWeekHighlighted.split(/[,\s]*/)),e.daysOfWeekHighlighted=a.map(e.daysOfWeekHighlighted,function(a){return parseInt(a,10)}),e.datesDisabled=e.datesDisabled||[],!a.isArray(e.datesDisabled)){var h=[];h.push(r.parseDate(e.datesDisabled,g,e.language,e.assumeNearbyYear)),e.datesDisabled=h}e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var i=String(e.orientation).toLowerCase().split(/\s+/g),j=e.orientation.toLowerCase();if(i=a.grep(i,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},j&&"auto"!==j)if(1===i.length)switch(i[0]){case"top":case"bottom":e.orientation.y=i[0];break;case"left":case"right":e.orientation.x=i[0]}else j=a.grep(i,function(a){return/^left|right$/.test(a)}),e.orientation.x=j[0]||"auto",j=a.grep(i,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=j[0]||"auto";else;if(e.defaultViewDate){var k=e.defaultViewDate.year||(new Date).getFullYear(),l=e.defaultViewDate.month||0,m=e.defaultViewDate.day||1;e.defaultViewDate=c(k,l,m)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;ff?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=0>p?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.element.find("input").val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate,d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this.element.change(),this},fillDow:function(){var b=this.o.weekStart,c="";for(this.o.calendarWeeks&&(this.picker.find(".datepicker-days .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1}),c+=' ');b";c+="",this.picker.find(".datepicker-days thead").append(c)},fillMonths:function(){for(var a=this._utc_to_local(this.viewDate),b="",c=0;12>c;){var d=a&&a.getMonth()===c?" focused":"";b+=''+q[this.o.language].monthsShort[c++]+""}this.picker.find(".datepicker-months td").html(b)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=new Date;return b.getUTCFullYear()d||b.getUTCFullYear()===d&&b.getUTCMonth()>e)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===f.getFullYear()&&b.getUTCMonth()===f.getMonth()&&b.getUTCDate()===f.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)&&!this.dateIsDisabled(b)||c.push("disabled"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&br;r+=1)s=[d],t=null,-1===r?s.push("old"):10===r&&s.push("new"),-1!==a.inArray(q,n)&&s.push("active"),(o>q||q>p)&&s.push("disabled"),q===this.viewDate.getFullYear()&&s.push("focused"),j!==a.noop&&(u=j(new Date(q,0,1)),u===b?u={}:"boolean"==typeof u?u={enabled:u}:"string"==typeof u&&(u={classes:u}),u.enabled===!1&&s.push("disabled"),u.classes&&(s=s.concat(u.classes.split(/\s+/))),u.tooltip&&(t=u.tooltip)),k+='"+q+"",q+=f;l.find("td").html(k)},fill:function(){var d,e,f=new Date(this.viewDate),g=f.getUTCFullYear(),h=f.getUTCMonth(),i=this.o.startDate!==-(1/0)?this.o.startDate.getUTCFullYear():-(1/0),j=this.o.startDate!==-(1/0)?this.o.startDate.getUTCMonth():-(1/0),k=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,m=q[this.o.language].today||q.en.today||"",n=q[this.o.language].clear||q.en.clear||"",o=q[this.o.language].titleFormat||q.en.titleFormat;if(!isNaN(g)&&!isNaN(h)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(f,o,this.o.language)),this.picker.find("tfoot .today").text(m).toggle(this.o.todayBtn!==!1),this.picker.find("tfoot .clear").text(n).toggle(this.o.clearBtn!==!1),this.picker.find("thead .datepicker-title").text(this.o.title).toggle(""!==this.o.title),this.updateNavArrows(),this.fillMonths();var p=c(g,h-1,28),s=r.getDaysInMonth(p.getUTCFullYear(),p.getUTCMonth());p.setUTCDate(s),p.setUTCDate(s-(p.getUTCDay()-this.o.weekStart+7)%7);var t=new Date(p);p.getUTCFullYear()<100&&t.setUTCFullYear(p.getUTCFullYear()),t.setUTCDate(t.getUTCDate()+42),t=t.valueOf();for(var u,v=[];p.valueOf()"),this.o.calendarWeeks)){var w=new Date(+p+(this.o.weekStart-p.getUTCDay()-7)%7*864e5),x=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),y=new Date(Number(y=c(x.getUTCFullYear(),0,1))+(11-y.getUTCDay())%7*864e5),z=(x-y)/864e5/7+1;v.push(''+z+"")}u=this.getClassNames(p),u.push("day"),this.o.beforeShowDay!==a.noop&&(e=this.o.beforeShowDay(this._utc_to_local(p)),e===b?e={}:"boolean"==typeof e?e={enabled:e}:"string"==typeof e&&(e={classes:e}),e.enabled===!1&&u.push("disabled"),e.classes&&(u=u.concat(e.classes.split(/\s+/))),e.tooltip&&(d=e.tooltip)),u=a.unique(u),v.push('"+p.getUTCDate()+""),d=null,p.getUTCDay()===this.o.weekEnd&&v.push(""),p.setUTCDate(p.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(v.join(""));var A=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",B=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?A:g).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===g&&B.eq(b.getUTCMonth()).addClass("active")}),(i>g||g>k)&&B.addClass("disabled"),g===i&&B.slice(0,j).addClass("disabled"),g===k&&B.slice(l+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var C=this;a.each(B,function(c,d){var e=new Date(g,c,1),f=C.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),f.enabled!==!1||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,1,g,i,k,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,10,g,i,k,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,100,g,i,k,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:case 3:case 4:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h,i,j,k;e=a(b.target),e.hasClass("datepicker-switch")&&this.showMode(1);var l=e.closest(".prev, .next");l.length>0&&(f=r.modes[this.viewMode].navStep*(l.hasClass("prev")?-1:1),0===this.viewMode?(this.viewDate=this.moveMonth(this.viewDate,f),this._trigger("changeMonth",this.viewDate)):(this.viewDate=this.moveYear(this.viewDate,f),1===this.viewMode&&this._trigger("changeYear",this.viewDate)),this.fill()),e.hasClass("today")&&(this.showMode(-2),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("day")&&(g=parseInt(e.text(),10)||1,h=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),e.hasClass("old")&&(0===i?(i=11,h-=1,j=!0,k=!0):(i-=1,j=!0)),e.hasClass("new")&&(11===i?(i=0,h+=1,j=!0,k=!0):(i+=1,j=!0)),this._setDate(c(h,i,g)),k&&this._trigger("changeYear",this.viewDate),j&&this._trigger("changeMonth",this.viewDate)),e.hasClass("month")&&(this.viewDate.setUTCDate(1),g=1,i=e.parent().find("span").index(e),h=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(i),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode?(this._setDate(c(h,i,g)),this.showMode()):this.showMode(-1),this.fill()),(e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),g=1,i=0,h=parseInt(e.text(),10)||0,this.viewDate.setUTCFullYear(h),e.hasClass("year")&&(this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("decade")&&(this._trigger("changeDecade",this.viewDate),3===this.o.minViewMode&&this._setDate(c(h,i,g))),e.hasClass("century")&&(this._trigger("changeCentury",this.viewDate),4===this.o.minViewMode&&this._setDate(c(h,i,g))),this.showMode(-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate");var c;this.isInput?c=this.element:this.component&&(c=this.element.find("input")),c&&c.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var j=0;i>j;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b=4*b),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b=4*b),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}if(d){this.dates.length?this._trigger("changeDate"):this._trigger("clearDate");var f;this.isInput?f=this.element:this.component&&(f=this.element.find("input")),f&&f.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+r.modes[this.viewMode].clsName).show(),this.updateNavArrows()}};var l=function(b,c){a(b).data("datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker");if("undefined"!=typeof c){var d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d=0&&dthis.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"}},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10},{clsName:"decades",navFnc:"FullDecade",navStep:100},{clsName:"centuries",navFnc:"FullCentury",navStep:1e3}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,r.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(e,f,g,h){function i(a,b){return b===!0&&(b=10),100>a&&(a+=2e3,a>(new Date).getFullYear()+b&&(a-=100)),a}function j(){var a=this.slice(0,s[n].length),b=s[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!e)return b;if(e instanceof Date)return e;if("string"==typeof f&&(f=r.parseFormat(f)),f.toValue)return f.toValue(e,f,g);var l,m,n,o,p=/([\-+]\d+)([dmwy])/,s=e.match(/([\-+]\d+)([dmwy])/g),t={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},u={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)){for(e=new Date,n=0;nb;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};z.M=z.MM=z.mm=z.m,z.dd=z.d,e=d();var A=f.parts.slice();if(s.length!==A.length&&(A=a(A).filter(function(b,c){return-1!==a.inArray(c,y)}).toArray()),s.length===A.length){var B;for(n=0,B=A.length;B>n;n++){if(v=parseInt(s[n],10),l=A[n],isNaN(v))switch(l){case"MM":w=a(q[g].months).filter(j),v=a.inArray(w[0],q[g].months)+1;break;case"M":w=a(q[g].monthsShort).filter(j),v=a.inArray(w[0],q[g].monthsShort)+1; +}x[l]=v}var C,D;for(n=0;n=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'«»',contTemplate:'',footTemplate:''};r.template='
'+r.headTemplate+""+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.6.0",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/Public/statics/aceadmin/js/bootstrap-datetimepicker.min.js b/Public/statics/aceadmin/js/bootstrap-datetimepicker.min.js new file mode 100644 index 0000000..db3d085 --- /dev/null +++ b/Public/statics/aceadmin/js/bootstrap-datetimepicker.min.js @@ -0,0 +1,9 @@ +/*! version : 4.17.37 + ========================================================= + bootstrap-datetimejs + https://github.com/Eonasdan/bootstrap-datetimepicker + Copyright (c) 2015 Jonathan Peterson + ========================================================= + */ +!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(a){var c,e,f,g,h,i=!1;return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone&&(i=!0),void 0===a||null===a?c=i?b().tz(d.timeZone).startOf("d"):b().startOf("d"):i?(e=b().tz(d.timeZone).utcOffset(),f=b(a,j,d.useStrict).utcOffset(),f!==e?(g=b().tz(d.timeZone).format("Z"),h=b(a,j,d.useStrict).format("YYYY-MM-DD[T]HH:mm:ss")+g,c=b(h,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict),c},y=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},z=function(){return y("h")||y("m")||y("s")},A=function(){return y("y")||y("M")||y("d")},B=function(){var b=a("").append(a("").append(a("").addClass("prev").attr("data-action","previous").append(a("").addClass(d.icons.previous))).append(a("").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("").addClass("next").attr("data-action","next").append(a("").addClass(d.icons.next)))),c=a("").append(a("").append(a("").attr("colspan",d.calendarWeeks?"8":"7")));return[a("
").addClass("datepicker-days").append(a("").addClass("table-condensed").append(b).append(a(""))),a("
").addClass("datepicker-months").append(a("
").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
").addClass("datepicker-years").append(a("
").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
").addClass("datepicker-decades").append(a("
").addClass("table-condensed").append(b.clone()).append(c.clone()))]},C=function(){var b=a(""),c=a(""),e=a("");return y("h")&&(b.append(a("
").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("").addClass(d.icons.down))))),y("m")&&(y("h")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("").addClass(d.icons.down))))),y("s")&&(y("m")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("").addClass(d.icons.down))))),h||(b.append(a("").addClass("separator")),c.append(a("").append(a("").addClass("separator"))),a("
").addClass("timepicker-picker").append(a("").addClass("table-condensed").append([b,c,e]))},D=function(){var b=a("
").addClass("timepicker-hours").append(a("
").addClass("table-condensed")),c=a("
").addClass("timepicker-minutes").append(a("
").addClass("table-condensed")),d=a("
").addClass("timepicker-seconds").append(a("
").addClass("table-condensed")),e=[C()];return y("h")&&e.push(b),y("m")&&e.push(c),y("s")&&e.push(d),e},E=function(){var b=[];return d.showTodayButton&&b.push(a("\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"
").append(a("").attr({"data-action":"today",title:d.tooltips.today}).append(a("").addClass(d.icons.today)))),!d.sideBySide&&A()&&z()&&b.push(a("").append(a("").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("").addClass(d.icons.time)))),d.showClear&&b.push(a("").append(a("").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("").addClass(d.icons.clear)))),d.showClose&&b.push(a("").append(a("").attr({"data-action":"close",title:d.tooltips.close}).append(a("").addClass(d.icons.close)))),a("").addClass("table-condensed").append(a("").append(a("").append(b)))},F=function(){var b=a("
").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("
").addClass("datepicker").append(B()),e=a("
").addClass("timepicker").append(D()),f=a("
    ").addClass("list-unstyled"),g=a("
  • ").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(E());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),y("s")&&!h&&b.addClass("wider"),d.sideBySide&&A()&&z()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("
    ").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("
  • ").addClass(d.collapse&&z()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),z()&&f.append(a("
  • ").addClass(d.collapse&&A()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},G=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},H=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},I=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},J=function(a){"y"===a&&(a="YYYY"),I({type:"dp.update",change:a,viewDate:f.clone()})},K=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},L=function(){var b=a("
"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a(""),d.calendarWeeks&&c.append('"),k.push(c)),g="",b.isBefore(f,"M")&&(g+=" old"),b.isAfter(f,"M")&&(g+=" new"),b.isSame(e,"d")&&!m&&(g+=" active"),Q(b,"d")||(g+=" disabled"),b.isSame(x(),"d")&&(g+=" today"),(0===b.day()||6===b.day())&&(g+=" weekend"),c.append('"),b.add(1,"d");i.find("tbody").empty().append(k),S(),T(),U()}},W=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a(""),d.push(e)),e.append('"),c.add(1,"h");b.empty().append(d)},X=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a(""),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a(""),e.push(g)),g.append('"),c.add(h,"m");b.empty().append(e)},Y=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("");f.isSame(c,"m");)c.second()%20===0&&(e=a(""),d.push(e)),e.append('"),c.add(5,"s");b.empty().append(d)},Z=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),Q(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),W(),X(),Y()},$=function(){o&&(V(),Z())},_=function(a){var b=m?null:e;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(Q(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,$(),I({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid||g.val(m?"":e.format(i)),I({type:"dp.error",date:a})))):(m=!0,g.val(""),c.data("date",""),I({type:"dp.change",date:!1,oldDate:b}),void $())},aa=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",H),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,I({type:"dp.hide",date:e.clone()}),g.blur(),l)):l},ba=function(){_(null)},ca={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),V(),J(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),V(),J(a)},pickerSwitch:function(){K(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(_(e.clone().year(f.year()).month(f.month())),d.inline||aa()):(K(-1),V()),J("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),_(c.date(parseInt(a(b.target).text(),10))),z()||d.keepOpen||d.inline||aa()},incrementHours:function(){var a=e.clone().add(1,"h");Q(a,"h")&&_(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");Q(a,"m")&&_(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");Q(a,"s")&&_(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");Q(a,"h")&&_(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");Q(a,"m")&&_(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");Q(a,"s")&&_(a)},togglePeriod:function(){_(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),_(e.clone().hours(c)),ca.showPicker.call(l)},selectMinute:function(b){_(e.clone().minutes(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},selectSecond:function(b){_(e.clone().seconds(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},clear:ba,today:function(){var a=x();Q(a,"d")&&_(a)},close:aa},da=function(b){return a(b.currentTarget).is(".disabled")?!1:(ca[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ea=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?_(ga(g.val().trim())):d.useCurrent&&m&&(g.is("input")&&0===g.val().trim().length||d.inline)&&(b=x(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),_(b)),o=F(),L(),R(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),$(),K(),a(window).on("resize",H),o.on("click","[data-action]",da),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),H(),d.focusOnShow&&!g.is(":focus")&&g.focus(),I({type:"dp.show"}),l)},fa=function(){return o?aa():ea()},ga=function(a){return a=void 0===d.parseInputDate?b.isMoment(a)||a instanceof Date?b(a):x(a):d.parseInputDate(a),a.locale(d.locale),a},ha=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ia=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ja=function(b){var c=a(b.target).val().trim(),d=c?ga(c):null;return _(d),b.stopImmediatePropagation(),!1},ka=function(){g.on({change:ja,blur:d.debug?"":aa,keydown:ha,keyup:ia,focus:d.allowInputToggle?ea:""}),c.is("input")?g.on({focus:ea}):n&&(n.on("click",fa),n.on("mousedown",!1))},la=function(){g.off({change:ja,blur:blur,keydown:ha,keyup:ia,focus:d.allowInputToggle?aa:""}),c.is("input")?g.off({focus:ea}):n&&(n.off("click",fa),n.off("mousedown",!1))},ma=function(b){var c={};return a.each(b,function(){var a=ga(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},na=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},oa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,y("y")&&(p=2),y("M")&&(p=1),y("d")&&(p=0),k=Math.max(p,k),m||_(e)};if(l.destroy=function(){aa(),la(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=fa,l.show=ea,l.hide=aa,l.disable=function(){return aa(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return _(null===a?null:ga(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,i&&oa(),l},l.timeZone=function(a){return 0===arguments.length?d.timeZone:(d.timeZone=a,l)},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&oa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=ma(b),d.enabledDates=!1,$(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=ma(b),d.disabledDates=!1,$(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,$(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!Q(e,"d");){if(e.add(1,"d"),7===b)throw"Tried 7 times to find a valid date";b++}_(e)}return $(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&_(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),$(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,$(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&_(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),$(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!Q(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&_(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&oa(),o&&(aa(),ea()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(aa(),ea()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(aa(),ea()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(aa(),ea()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(aa(),ea()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),K(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(aa(),ea()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return $(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,$(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(aa(),ea()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(aa(),ea()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(aa(),ea()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ba(),l},l.keyBinds=function(a){return d.keyBinds=a,l},l.getMoment=function(a){return x(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate; +if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,$(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=na(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=na(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}_(e)}return $(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=ga(a),J(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.size())g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").size()?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=x(),f=e.clone(),a.extend(!0,d,G()),l.options(d),oa(),ka(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?_(ga(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&_(d.defaultDate),d.inline&&ea(),l};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={timeZone:"Etc/UTC",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}}); \ No newline at end of file diff --git a/Public/statics/aceadmin/js/bootstrap-editable.min.js b/Public/statics/aceadmin/js/bootstrap-editable.min.js new file mode 100644 index 0000000..c901ae9 --- /dev/null +++ b/Public/statics/aceadmin/js/bootstrap-editable.min.js @@ -0,0 +1,6 @@ +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ +!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(".editable-buttons");b.append(a.fn.editableform.buttons),"bottom"===this.options.showbuttons&&b.addClass("editable-buttons-bottom")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler("rendering"),this.initInput(),this.$form.find("div.editable-input").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(".editable-cancel").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled");var b=null===this.value||void 0===this.value||""===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler("rendered"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(b){var c,d=this.$form.find(".control-group"),e=this.$form.find(".editable-error-block");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(""+b).split("\n");for(var f=0;f").text(c[f]).html();b=c.join("
")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if("object"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),"string"==typeof d.msg)return this.error(d.msg),void this.showForm()}else if(d)return this.error(d),void this.showForm();if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return void this.$div.triggerHandler("nochange");var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b="function"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),void this.showForm(!1)):"string"==typeof b?(this.error(b),void this.showForm()):(b&&"object"==typeof b&&b.hasOwnProperty("newValue")&&(c=b.newValue),this.error(!1),this.value=c,void this.$div.triggerHandler("save",{newValue:c,submitValue:e,response:a}))},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b="function"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):"string"==typeof a?a:a.responseText||a.statusText||"Unknown error!",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d="function"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!("function"==typeof this.options.url||this.options.url&&("always"===this.options.send||"auto"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||"",value:b,pk:d},"function"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),"function"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:"POST"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),"function"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),"value"===a&&this.setValue(b)},setValue:function(a,b){b?this.value=this.input.str2value(a):this.value=a,this.$form&&this.$form.is(":visible")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("editableform"),g="object"==typeof c&&c;f||e.data("editableform",f=new b(this,g)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:"auto",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='
',a.fn.editableform.loading='
',a.fn.editableform.buttons='',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass="editable-error",a.fn.editableform.engine="jquery"}(window.jQuery),function(a){"use strict";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}},tryParseJson:function(a,b){if("string"==typeof a&&a.length&&a.match(/^[\{\[].*[\}\]]$/))if(b)try{a=new Function("return "+a)()}catch(c){}finally{return a}else a=new Function("return "+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if("function"!=typeof d){var e=d||"value";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&"object"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&"object"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return"date"===f&&("inline"===b.mode?a.fn.editabletypes.datefield?f="datefield":a.fn.editabletypes.dateuifield&&(f="dateuifield"):a.fn.editabletypes.date?f="date":a.fn.editabletypes.dateui&&(f="dateui"),"date"!==f||a.fn.editabletypes.date||(f="combodate")),"datetime"===f&&"inline"===b.mode&&(f="datetimefield"),"wysihtml5"!==f||a.fn.editabletypes[f]||(f="textarea"),"function"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error("Unknown type: "+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(":visible")&&this.$element.hasClass("editable-open")){if(this.$form.data("editableform").isSaving)return void(this.delayedHide={reason:a});this.delayedHide=!1,this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",a||"manual")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(":visible")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler("save",b),this.hide("save")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform("option",a,b))},setContainerOption:function(a,b){this.call("option",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off("destroyed"),this.$element.removeData("editableContainer")},innerDestroy:function(){},closeOthers:function(b){a(".editable-open").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data("editableContainer");f&&("cancel"===f.options.onblur?e.data("editableContainer").hide("onblur"):"submit"===f.options.onblur&&e.data("editableContainer").tip().find("form").submit())}})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g="editableContainer",h=f.data(g),i="object"==typeof d&&d,j="inline"===i.mode?c:b;h||f.data(g,h=new j(this,i)),"string"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel",anim:!1,mode:"popup"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:"editableform",innerCss:".editable-inline",containerClass:"editable-container editable-inline",initContainer:function(){this.$tip=a(""),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr("id"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),"string"==typeof this.options.value?this.value=this.input.str2value(this.options.value):this.value=this.options.value),this.$element.addClass("editable"),"textarea"===this.input.type&&this.$element.addClass("editable-pre-wrapped"),"manual"!==this.options.toggle?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),"mouseenter"===this.options.toggle)this.show();else{var b="click"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr("tabindex",-1),"function"==typeof this.options.display&&(this.options.autotext="always"),this.options.autotext){case"always":b=!0;break;case"auto":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext="never",this.$element.on(this.options.toggle+".editable",b,a.proxy(function(b){var c=a(b.target);c.data("editable")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):"function"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(this.isEmpty),"manual"!==this.options.toggle&&"-1"===this.$element.attr("tabindex")&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(this.isEmpty),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&"object"==typeof b?void a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)):(this.options[b]=c,"disabled"===b?c?this.disable():this.enable():("value"===b&&this.setValue(c),this.container&&this.container.option(b,c),void(this.input.option&&this.input.option(b,c))))},handleEmpty:function(b){this.options.display!==!1&&(void 0!==b?this.isEmpty=b:"function"==typeof this.input.isEmpty?this.isEmpty=this.input.isEmpty(this.$element):this.isEmpty=""===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(":visible"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on("save.internal",a.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(":visible")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||"function"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css("background-color");d.css("background-color",this.options.highlight),setTimeout(function(){"transparent"===e&&(e=""),d.css("background-color",e),d.addClass("editable-bg-transition"),setTimeout(function(){d.removeClass("editable-bg-transition")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return"function"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){c?this.value=this.input.str2value(b):this.value=b,this.container&&this.container.option("value",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),"manual"!==this.options.toggle&&(this.$element.removeClass("editable-click"),this.$element.off(this.options.toggle+".editable")),this.$element.off("save.internal"),this.$element.removeClass("editable editable-open editable-disabled"),this.$element.removeData("editable")}},a.fn.editable=function(c){var d={},e=arguments,f="editable";switch(c){case"validate":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case"getValue":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case"submit":var g=arguments[1]||{},h=this,i=this.editable("validate");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data("editable"),l={name:k.options.name||"",value:k.input.value2submit(k.value),pk:"function"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};"function"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:"POST"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable("getValue");j={url:g.url,data:m,type:"POST"}}j.success="function"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error="function"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else"function"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h="object"==typeof c&&c;return h&&h.selector?void(g=new b(this,h)):(g||d.data(f,g=new b(this,h)),void("string"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1))))})},a.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null,emptyclass:"editable-empty",unsavedclass:"editable-unsaved",selector:null,highlight:"#FFFF80"}}(window.jQuery),function(a){"use strict";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?"text":"html"](a.trim(b))},html2value:function(b){return a("
").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a("
").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:"",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){"use strict";var b=function(a){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(a){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){"function"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return void b.call(this);try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return void c.call(this)}if("string"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),void b.call(this);if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),void f.err_callbacks.push(a.proxy(c,this));f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:"get",cache:!1,dataType:"json",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),"string"==typeof this.options.prepend&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(a,b){},makeArray:function(b){var c,d,e,f,g=[];if(!b||"string"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,"source"===a&&(this.sourceData=null),"prepend"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("text",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr("placeholder")},activate:function(){this.$input.is(":visible")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a(''),this.$input.after(this.$clear).css("padding-right",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css("position","relative"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(a){if(this.$clear){var b=this.$input.val().length,c=this.$clear.is(":visible");b&&!c&&this.$clear.show(),!b&&c&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val("").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("textarea",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr("placeholder"),this.setAttr("rows"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest("form").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:"",inputclass:"input-large",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("select",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a("
\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"
").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},M=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},N=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.disabledHours[a.format("H")]===!0},P=function(a){return d.enabledHours[a.format("H")]===!0},Q=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&M(b))return!1;if(d.enabledDates&&"d"===c&&!N(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&O(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!P(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},R=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},S=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),Q(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),Q(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){Q(f.clone().month(b),"M")||a(this).addClass("disabled")})},T=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+=''+c.year()+"",c.add(1,"y");a.find("td").html(h)},U=function(){var a=o.find(".datepicker-decades"),c=a.find("th"),g=b({y:f.year()-f.year()%100-1}),h=g.clone().add(100,"y"),i=g.clone(),j="";for(c.eq(0).find("span").attr("title",d.tooltips.prevCentury),c.eq(2).find("span").attr("title",d.tooltips.nextCentury),a.find(".disabled").removeClass("disabled"),(g.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(g,"y"))&&c.eq(0).addClass("disabled"),c.eq(1).text(g.year()+"-"+h.year()),(g.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(h,"y"))&&c.eq(2).addClass("disabled");!g.isAfter(h,"y");)j+=''+(g.year()+1)+" - "+(g.year()+12)+"",g.add(12,"y");j+="",a.find("td").html(j),c.eq(1).text(i.year()+1+"-"+g.year())},V=function(){var b,c,g,h,i=o.find(".datepicker-days"),j=i.find("th"),k=[];if(A()){for(j.eq(0).find("span").attr("title",d.tooltips.prevMonth),j.eq(1).attr("title",d.tooltips.selectMonth),j.eq(2).find("span").attr("title",d.tooltips.nextMonth),i.find(".disabled").removeClass("disabled"),j.eq(1).text(f.format(d.dayViewHeaderFormat)),Q(f.clone().subtract(1,"M"),"M")||j.eq(0).addClass("disabled"),Q(f.clone().add(1,"M"),"M")||j.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),h=0;42>h;h++)0===b.weekday()&&(c=a("
'+b.week()+"'+b.date()+"
'+c.format(h?"HH":"hh")+"
'+c.format("mm")+"
'+c.format("ss")+"
","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("').attr("id",a).css({width:"0px",height:"0px",overflow:"hidden","float":"left",position:"absolute",top:"-10000px",left:"-10000px"}).appendTo(this.$container.find(".edui-dialog-container")); -var b=window.open("",a,"").document;b.open();b.write("
"+this.getContent(null,null,!0)+"
- - - + + + + + Document + + + + + +
+
+
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/dialogs/formula/formula.js b/Public/statics/umeditor1_2_3/dialogs/formula/formula.js old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/dialogs/formula/formula.js rename to Public/statics/umeditor1_2_3/dialogs/formula/formula.js index 91d03a9..ffa9e78 --- a/Public/statics/umeditor1_2_2/dialogs/formula/formula.js +++ b/Public/statics/umeditor1_2_3/dialogs/formula/formula.js @@ -1,124 +1,124 @@ -(function () { - - var editor = null; - - UM.registerWidget('formula', { - - tpl: "formula.css\">" + - "
" + - "
    " + - "
    " + - "
    ", - - sourceData: { - formula: { - 'common': [ - "{/}frac{ }{ }", "^{ }/_{ }", "x^{ }", "x_{ }", "x^{ }_{ }", "{/}bar{ }", "{/}sqrt{ }", "{/}nthroot{ }{ }", - "{/}sum^{ }_{n=}", "{/}sum", "{/}log_{ }", "{/}ln", "{/}int_{ }^{ }", "{/}oint_{ }^{ }" - ], - 'symbol': [ - "+", "-", "{/}pm", "{/}times", "{/}ast", "{/}div", "/", "{/}bigtriangleup", - "=", "{/}ne", "{/}approx", ">", "<", "{/}ge", "{/}le", "{/}infty", - "{/}cap", "{/}cup", "{/}because", "{/}therefore", "{/}subset", "{/}supset", "{/}subseteq", "{/}supseteq", - "{/}nsubseteq", "{/}nsupseteq", "{/}in", "{/}ni", "{/}notin", "{/}mapsto", "{/}leftarrow", "{/}rightarrow", - "{/}Leftarrow", "{/}Rightarrow", "{/}leftrightarrow", "{/}Leftrightarrow" - ], - 'letter': [ - "{/}alpha", "{/}beta", "{/}gamma", "{/}delta", "{/}varepsilon", "{/}varphi", "{/}lambda", "{/}mu", - "{/}rho", "{/}sigma", "{/}omega", "{/}Gamma", "{/}Delta", "{/}Theta", "{/}Lambda", "{/}Xi", - "{/}Pi", "{/}Sigma", "{/}Upsilon", "{/}Phi", "{/}Psi", "{/}Omega" - ] - } - }, - initContent: function (_editor, $widget) { - - var me = this, - formula = me.sourceData.formula, - lang = _editor.getLang('formula').static, - formulaUrl = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/formula/', - options = $.extend({}, lang, { 'formula_url': formulaUrl }), - $root = me.root(); - - if (me.inited) { - me.preventDefault(); - return; - } - me.inited = true; - - editor = _editor; - me.$widget = $widget; - - $root.html($.parseTmpl(me.tpl, options)); - me.tabs = $.eduitab({selector: "#edui-formula-tab-Jpanel"}); - - /* 初始化popup的内容 */ - var headHtml = [], xMax = 0, yMax = 0, - $tabContent = me.root().find('.edui-tab-content'); - $.each(formula, function (k, v) { - var contentHtml = []; - $.each(v, function (i, f) { - contentHtml.push('
  • '); - if (++xMax >=8) { - ++yMax; xMax = 0; - } - }); - yMax++; xMax = 0; - $tabContent.append('
      ' + contentHtml.join('') + '
    '); - headHtml.push('
  • ' + lang['lang_tab_' + k] + '
  • '); - }); - headHtml.push('
  • '); - $root.find('.edui-tab-nav').html(headHtml.join('')); - $root.find('.edui-tab-content').append('
    '); - - /* 选中第一个tab */ - me.switchTab(0); - }, - initEvent: function () { - var me = this; - - //防止点击过后关闭popup - me.root().on('click', function (e) { - return false; - }); - - //点击tab切换菜单 - me.root().find('.edui-tab-nav').delegate('.edui-tab-item', 'click', function (evt) { - me.switchTab(this); - return false; - }); - - //点击选中公式 - me.root().find('.edui-tab-pane').delegate('.edui-formula-latex-item', 'click', function (evt) { - var $item = $(this), - latex = $item.attr('data-latex') || ''; - - if (latex) { - me.insertLatex(latex.replace("{/}", "\\")); - } - me.$widget.edui().hide(); - return false; - }); - }, - switchTab:function(index){ - var me = this, - $root = me.root(), - index = $.isNumeric(index) ? index:$.inArray(index, $root.find('.edui-tab-nav .edui-tab-item')); - - $root.find('.edui-tab-nav .edui-tab-item').removeClass('edui-active').eq(index).addClass('edui-active'); - $root.find('.edui-tab-content .edui-tab-pane').removeClass('edui-active').eq(index).addClass('edui-active'); - - /* 自动长高 */ - me.autoHeight(0); - }, - autoHeight: function () { - this.$widget.height(this.root() + 2); - }, - insertLatex: function (latex) { - editor.execCommand('formula', latex ); - }, - width: 350, - height: 400 - }); - -})(); - +(function () { + + var editor = null; + + UM.registerWidget('formula', { + + tpl: "formula.css\">" + + "
    " + + "
      " + + "
      " + + "
      ", + + sourceData: { + formula: { + 'common': [ + "{/}frac{ }{ }", "^{ }/_{ }", "x^{ }", "x_{ }", "x^{ }_{ }", "{/}bar{ }", "{/}sqrt{ }", "{/}nthroot{ }{ }", + "{/}sum^{ }_{n=}", "{/}sum", "{/}log_{ }", "{/}ln", "{/}int_{ }^{ }", "{/}oint_{ }^{ }" + ], + 'symbol': [ + "+", "-", "{/}pm", "{/}times", "{/}ast", "{/}div", "/", "{/}bigtriangleup", + "=", "{/}ne", "{/}approx", ">", "<", "{/}ge", "{/}le", "{/}infty", + "{/}cap", "{/}cup", "{/}because", "{/}therefore", "{/}subset", "{/}supset", "{/}subseteq", "{/}supseteq", + "{/}nsubseteq", "{/}nsupseteq", "{/}in", "{/}ni", "{/}notin", "{/}mapsto", "{/}leftarrow", "{/}rightarrow", + "{/}Leftarrow", "{/}Rightarrow", "{/}leftrightarrow", "{/}Leftrightarrow" + ], + 'letter': [ + "{/}alpha", "{/}beta", "{/}gamma", "{/}delta", "{/}varepsilon", "{/}varphi", "{/}lambda", "{/}mu", + "{/}rho", "{/}sigma", "{/}omega", "{/}Gamma", "{/}Delta", "{/}Theta", "{/}Lambda", "{/}Xi", + "{/}Pi", "{/}Sigma", "{/}Upsilon", "{/}Phi", "{/}Psi", "{/}Omega" + ] + } + }, + initContent: function (_editor, $widget) { + + var me = this, + formula = me.sourceData.formula, + lang = _editor.getLang('formula').static, + formulaUrl = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/formula/', + options = $.extend({}, lang, { 'formula_url': formulaUrl }), + $root = me.root(); + + if (me.inited) { + me.preventDefault(); + return; + } + me.inited = true; + + editor = _editor; + me.$widget = $widget; + + $root.html($.parseTmpl(me.tpl, options)); + me.tabs = $.eduitab({selector: "#edui-formula-tab-Jpanel"}); + + /* 初始化popup的内容 */ + var headHtml = [], xMax = 0, yMax = 0, + $tabContent = me.root().find('.edui-tab-content'); + $.each(formula, function (k, v) { + var contentHtml = []; + $.each(v, function (i, f) { + contentHtml.push('
    • '); + if (++xMax >=8) { + ++yMax; xMax = 0; + } + }); + yMax++; xMax = 0; + $tabContent.append('
        ' + contentHtml.join('') + '
      '); + headHtml.push('
    • ' + lang['lang_tab_' + k] + '
    • '); + }); + headHtml.push('
    • '); + $root.find('.edui-tab-nav').html(headHtml.join('')); + $root.find('.edui-tab-content').append('
      '); + + /* 选中第一个tab */ + me.switchTab(0); + }, + initEvent: function () { + var me = this; + + //防止点击过后关闭popup + me.root().on('click', function (e) { + return false; + }); + + //点击tab切换菜单 + me.root().find('.edui-tab-nav').delegate('.edui-tab-item', 'click', function (evt) { + me.switchTab(this); + return false; + }); + + //点击选中公式 + me.root().find('.edui-tab-pane').delegate('.edui-formula-latex-item', 'click', function (evt) { + var $item = $(this), + latex = $item.attr('data-latex') || ''; + + if (latex) { + me.insertLatex(latex.replace("{/}", "\\")); + } + me.$widget.edui().hide(); + return false; + }); + }, + switchTab:function(index){ + var me = this, + $root = me.root(), + index = $.isNumeric(index) ? index:$.inArray(index, $root.find('.edui-tab-nav .edui-tab-item')); + + $root.find('.edui-tab-nav .edui-tab-item').removeClass('edui-active').eq(index).addClass('edui-active'); + $root.find('.edui-tab-content .edui-tab-pane').removeClass('edui-active').eq(index).addClass('edui-active'); + + /* 自动长高 */ + me.autoHeight(0); + }, + autoHeight: function () { + this.$widget.height(this.root() + 2); + }, + insertLatex: function (latex) { + editor.execCommand('formula', latex ); + }, + width: 350, + height: 400 + }); + +})(); + diff --git a/Public/statics/umeditor1_2_2/dialogs/formula/images/formula.png b/Public/statics/umeditor1_2_3/dialogs/formula/images/formula.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/formula/images/formula.png rename to Public/statics/umeditor1_2_3/dialogs/formula/images/formula.png diff --git a/Public/statics/umeditor1_2_2/dialogs/image/image.css b/Public/statics/umeditor1_2_3/dialogs/image/image.css old mode 100755 new mode 100644 similarity index 98% rename from Public/statics/umeditor1_2_2/dialogs/image/image.css rename to Public/statics/umeditor1_2_3/dialogs/image/image.css index 0d31f4e..5548391 --- a/Public/statics/umeditor1_2_2/dialogs/image/image.css +++ b/Public/statics/umeditor1_2_3/dialogs/image/image.css @@ -1,42 +1,42 @@ -.edui-dialog-image .edui-image-wrapper{font-size: 12px;margin: 15px;} - -/*upload*/ -.edui-dialog-image .edui-image-upload1{position: absolute;top:50%;left:50%;width:44px;height:38px;margin-top:-19px; margin-left: -22px;} -.edui-dialog-image .edui-image-upload2{position:relative;float:left;width:120px;height:120px;margin:5px 0 0 5px;} - -.edui-dialog-image .edui-image-form{position: absolute;left: 0px;top: 0px;width: 100%;height: 100%;opacity: 0;cursor: pointer;} -.edui-dialog-image .edui-image-form .edui-image-file{width: 100%;height:100%;filter: alpha(opacity=0)} - -.edui-dialog-image .edui-image-upload1 .edui-image-icon{display: inline-block;width:44px;height:38px;background-image: url('images/upload1.png')} -.edui-dialog-image .edui-image-upload1 .edui-image-icon.hover{background-position: -50px 0;} -.edui-dialog-image .edui-image-upload2 .edui-image-icon{display: inline-block;width:120px;height:120px;background-image: url('images/upload2.png')} - -.edui-dialog-image .edui-image-dragTip{position: absolute;display:none;top:50%;left:50%;margin-top:30px;margin-left: -60px; - color: #222;font-size:14px;text-shadow: 0px 2px 3px #555;} - -.edui-dialog-image .edui-image-content{height:330px;width:100%;position: relative;} - -.edui-dialog-image .edui-image-mask{display: none;position: absolute;top:0;left:0;width: 100%; height: 100%;background-color:#fff; - text-align: center;line-height:300px;color:#000;font-size:14px;font-weight:bold;opacity: 0.6;filter: alpha(opacity=60);} -.edui-dialog-image .edui-image-mask.edui-active{display: block;} - -/*network*/ -.edui-dialog-image .edui-image-searchBar{margin: 10px;} -.edui-dialog-image .edui-image-searchBar .edui-image-searchTxt{display: inline-block !important;*display: inline !important;*zoom:1;width:400px; border: 1px solid #c5d2ff; height: 20px; line-height: 18px; font-size: 14px; padding: 3px; margin: 0;outline:0;} -.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd{display: inline-block !important;*display: inline !important;*zoom:1; - width:60px; text-align:center;height: 25px;text-align: center;line-height: 25px; - background-color: #ffffff;padding: 0; border: 1px solid #ababab;margin-left: 20px;cursor: pointer; -} -.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd.hover{ - background-color: #d5e1f2; - padding: 0; - border: 1px solid #a3bde3; -} -.edui-dialog-image .edui-image-searchRes{height:280px;overflow:auto;} - - -/*common*/ -.edui-dialog-image .edui-image-item{position:relative;float:left;width:120px;height:120px;border: 1px solid #CCC;cursor: default;margin: 5px 0 0 5px;} -.edui-dialog-image .edui-image-item .edui-image-pic{position: absolute;left:-9999px;} -.edui-dialog-image .edui-image-item .edui-image-close{position:absolute;right:0;background: url('images/close.png');width:17px;height:17px;cursor:pointer;z-index:1} -.edui-dialog-image .edui-image-item.hover .edui-image-close{display: block;} +.edui-dialog-image .edui-image-wrapper{font-size: 12px;margin: 15px;} + +/*upload*/ +.edui-dialog-image .edui-image-upload1{position: absolute;top:50%;left:50%;width:44px;height:38px;margin-top:-19px; margin-left: -22px;} +.edui-dialog-image .edui-image-upload2{position:relative;float:left;width:120px;height:120px;margin:5px 0 0 5px;} + +.edui-dialog-image .edui-image-form{position: absolute;left: 0px;top: 0px;width: 100%;height: 100%;opacity: 0;cursor: pointer;} +.edui-dialog-image .edui-image-form .edui-image-file{width: 100%;height:100%;filter: alpha(opacity=0)} + +.edui-dialog-image .edui-image-upload1 .edui-image-icon{display: inline-block;width:44px;height:38px;background-image: url('images/upload1.png')} +.edui-dialog-image .edui-image-upload1 .edui-image-icon.hover{background-position: -50px 0;} +.edui-dialog-image .edui-image-upload2 .edui-image-icon{display: inline-block;width:120px;height:120px;background-image: url('images/upload2.png')} + +.edui-dialog-image .edui-image-dragTip{position: absolute;display:none;top:50%;left:50%;margin-top:30px;margin-left: -60px; + color: #222;font-size:14px;text-shadow: 0px 2px 3px #555;} + +.edui-dialog-image .edui-image-content{height:330px;width:100%;position: relative;} + +.edui-dialog-image .edui-image-mask{display: none;position: absolute;top:0;left:0;width: 100%; height: 100%;background-color:#fff; + text-align: center;line-height:300px;color:#000;font-size:14px;font-weight:bold;opacity: 0.6;filter: alpha(opacity=60);} +.edui-dialog-image .edui-image-mask.edui-active{display: block;} + +/*network*/ +.edui-dialog-image .edui-image-searchBar{margin: 10px;} +.edui-dialog-image .edui-image-searchBar .edui-image-searchTxt{display: inline-block !important;*display: inline !important;*zoom:1;width:400px; border: 1px solid #c5d2ff; height: 20px; line-height: 18px; font-size: 14px; padding: 3px; margin: 0;outline:0;} +.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd{display: inline-block !important;*display: inline !important;*zoom:1; + width:60px; text-align:center;height: 25px;text-align: center;line-height: 25px; + background-color: #ffffff;padding: 0; border: 1px solid #ababab;margin-left: 20px;cursor: pointer; +} +.edui-dialog-image .edui-image-searchBar .edui-image-searchAdd.hover{ + background-color: #d5e1f2; + padding: 0; + border: 1px solid #a3bde3; +} +.edui-dialog-image .edui-image-searchRes{height:280px;overflow:auto;} + + +/*common*/ +.edui-dialog-image .edui-image-item{position:relative;float:left;width:120px;height:120px;border: 1px solid #CCC;cursor: default;margin: 5px 0 0 5px;} +.edui-dialog-image .edui-image-item .edui-image-pic{position: absolute;left:-9999px;} +.edui-dialog-image .edui-image-item .edui-image-close{position:absolute;right:0;background: url('images/close.png');width:17px;height:17px;cursor:pointer;z-index:1} +.edui-dialog-image .edui-image-item.hover .edui-image-close{display: block;} diff --git a/Public/statics/umeditor1_2_2/dialogs/image/image.js b/Public/statics/umeditor1_2_3/dialogs/image/image.js old mode 100755 new mode 100644 similarity index 96% rename from Public/statics/umeditor1_2_2/dialogs/image/image.js rename to Public/statics/umeditor1_2_3/dialogs/image/image.js index 1d49fe1..b6222df --- a/Public/statics/umeditor1_2_2/dialogs/image/image.js +++ b/Public/statics/umeditor1_2_3/dialogs/image/image.js @@ -1,443 +1,445 @@ -(function () { - - var utils = UM.utils, - browser = UM.browser, - Base = { - checkURL: function (url) { - if(!url) return false; - url = utils.trim(url); - if (url.length <= 0) { - return false; - } - if (url.search(/http:\/\/|https:\/\//) !== 0) { - url += 'http://'; - } - - url=url.replace(/\?[\s\S]*$/,""); - - if (!/(.gif|.jpg|.jpeg|.png)$/i.test(url)) { - return false; - } - return url; - }, - getAllPic: function (sel, $w, editor) { - var me = this, - arr = [], - $imgs = $(sel, $w); - $.each($imgs, function (index, node) { - $(node).removeAttr("width").removeAttr("height"); - -// if (node.width > editor.options.initialFrameWidth) { -// me.scale(node, editor.options.initialFrameWidth - -// parseInt($(editor.body).css("padding-left")) - -// parseInt($(editor.body).css("padding-right"))); -// } - - return arr.push({ - // _src: $(node).attr('src'), - src: $(node).attr('src') - }); - }); - return arr; - }, - scale: function (img, max, oWidth, oHeight) { - var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; - if (ow > max || oh > max) { - if (ow >= oh) { - if (width = ow - max) { - percent = (width / ow).toFixed(2); - img.height = oh - oh * percent; - img.width = max; - } - } else { - if (height = oh - max) { - percent = (height / oh).toFixed(2); - img.width = ow - ow * percent; - img.height = max; - } - } - } - - return this; - }, - close: function ($img) { - - $img.css({ - top: ($img.parent().height() - $img.height()) / 2, - left: ($img.parent().width()-$img.width())/2 - }).prev().on("click",function () { - - if ( $(this).parent().remove().hasClass("edui-image-upload-item") ) { - //显示图片计数-1 - Upload.showCount--; - Upload.updateView(); - } - - }); - - return this; - }, - createImgBase64: function (img, file, $w) { - if (browser.webkit) { - //Chrome8+ - img.src = window.webkitURL.createObjectURL(file); - } else if (browser.gecko) { - //FF4+ - img.src = window.URL.createObjectURL(file); - } else { - //实例化file reader对象 - var reader = new FileReader(); - reader.onload = function (e) { - img.src = this.result; - $w.append(img); - }; - reader.readAsDataURL(file); - } - }, - callback: function (editor, $w, url, state) { - - if (state == "SUCCESS") { - //显示图片计数+1 - Upload.showCount++; - var $img = $(""), - $item = $("
      ").append($img); - - if ($(".edui-image-upload2", $w).length < 1) { - $(".edui-image-content", $w).append($item); - - Upload.render(".edui-image-content", 2) - .config(".edui-image-upload2"); - } else { - $(".edui-image-upload2", $w).before($item).show(); - } - - $img.on("load", function () { - Base.scale(this, 120); - Base.close($(this)); - $(".edui-image-content", $w).focus(); - }); - - } else { - currentDialog.showTip( state ); - window.setTimeout( function () { - - currentDialog.hideTip(); - - }, 3000 ); - } - - Upload.toggleMask(); - - } - }; - - /* - * 本地上传 - * */ - var Upload = { - showCount: 0, - uploadTpl: '
      ' + - '' + - '
      ' + - '' + - '' + - - '
      ', - init: function (editor, $w) { - var me = this; - - me.editor = editor; - me.dialog = $w; - me.render(".edui-image-local", 1); - me.config(".edui-image-upload1"); - me.submit(); - me.drag(); - - $(".edui-image-upload1").hover(function () { - $(".edui-image-icon", this).toggleClass("hover"); - }); - - if (!(UM.browser.ie && UM.browser.version <= 9)) { - $(".edui-image-dragTip", me.dialog).css("display", "block"); - } - - - return me; - }, - render: function (sel, t) { - var me = this; - - $(sel, me.dialog).append($(me.uploadTpl.replace(/%%/g, t))); - - return me; - }, - config: function (sel) { - var me = this, - url=me.editor.options.imageUrl; - - url=url + (url.indexOf("?") == -1 ? "?" : "&") + "editorid="+me.editor.id;//初始form提交地址; - - $("form", $(sel, me.dialog)).attr("action", url); - - return me; - }, - uploadComplete: function(r){ - var me = this; - try{ - var json = eval('('+r+')'); - Base.callback(me.editor, me.dialog, json.url, json.state); - }catch (e){ - var lang = me.editor.getLang('image'); - Base.callback(me.editor, me.dialog, '', (lang && lang.uploadError) || 'Error!'); - } - }, - submit: function (callback) { - - var me = this, - input = $( ''), - input = input[0]; - - $(me.dialog).delegate( ".edui-image-file", "change", function ( e ) { - - if ( !this.parentNode ) { - return; - } - - $('').insertBefore(me.dialog).on('load', function(){ - var r = this.contentWindow.document.body.innerHTML; - if(r == '')return; - me.uploadComplete(r); - $(this).unbind('load'); - $(this).remove(); - - }); - - $(this).parent()[0].submit(); - Upload.updateInput( input ); - me.toggleMask("Loading...."); - callback && callback(); - - }); - - return me; - }, - //更新input - updateInput: function ( inputField ) { - - $( ".edui-image-file", this.dialog ).each( function ( index, ele ) { - - ele.parentNode.replaceChild( inputField.cloneNode( true ), ele ); - - } ); - - }, - //更新上传框 - updateView: function () { - - if ( Upload.showCount !== 0 ) { - return; - } - - $(".edui-image-upload2", this.dialog).hide(); - $(".edui-image-dragTip", this.dialog).show(); - $(".edui-image-upload1", this.dialog).show(); - - }, - drag: function () { - var me = this; - //做拽上传的支持 - if (!UM.browser.ie9below) { - me.dialog.find('.edui-image-content').on('drop',function (e) { - - //获取文件列表 - var fileList = e.originalEvent.dataTransfer.files; - var img = document.createElement('img'); - var hasImg = false; - $.each(fileList, function (i, f) { - if (/^image/.test(f.type)) { - //创建图片的base64 - Base.createImgBase64(img, f, me.dialog); - - var xhr = new XMLHttpRequest(); - xhr.open("post", me.editor.getOpt('imageUrl') + "?type=ajax", true); - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - //模拟数据 - var fd = new FormData(); - fd.append(me.editor.getOpt('imageFieldName'), f); - - xhr.send(fd); - xhr.addEventListener('load', function (e) { - var r = e.target.response, json; - me.uploadComplete(r); - if (i == fileList.length - 1) { - $(img).remove() - } - }); - hasImg = true; - } - }); - if (hasImg) { - e.preventDefault(); - me.toggleMask("Loading...."); - } - - }).on('dragover', function (e) { - e.preventDefault(); - }); - } - }, - toggleMask: function (html) { - var me = this; - - var $mask = $(".edui-image-mask", me.dialog); - if (html) { - if (!(UM.browser.ie && UM.browser.version <= 9)) { - $(".edui-image-dragTip", me.dialog).css( "display", "none" ); - } - $(".edui-image-upload1", me.dialog).css( "display", "none" ); - $mask.addClass("edui-active").html(html); - } else { - - $mask.removeClass("edui-active").html(); - - if ( Upload.showCount > 0 ) { - return me; - } - - if (!(UM.browser.ie && UM.browser.version <= 9) ){ - $(".edui-image-dragTip", me.dialog).css("display", "block"); - } - $(".edui-image-upload1", me.dialog).css( "display", "block" ); - } - - return me; - } - }; - - /* - * 网络图片 - * */ - var NetWork = { - init: function (editor, $w) { - var me = this; - - me.editor = editor; - me.dialog = $w; - - me.initEvt(); - }, - initEvt: function () { - var me = this, - url, - $ele = $(".edui-image-searchTxt", me.dialog); - - $(".edui-image-searchAdd", me.dialog).on("click", function () { - url = Base.checkURL($ele.val()); - - if (url) { - - $("").on("load", function () { - - - - var $item = $("
      ").append(this); - - $(".edui-image-searchRes", me.dialog).append($item); - - Base.scale(this, 120); - - $item.width($(this).width()); - - Base.close($(this)); - - $ele.val(""); - }); - } - }) - .hover(function () { - $(this).toggleClass("hover"); - }); - } - }; - - var $tab = null, - currentDialog = null; - - UM.registerWidget('image', { - tpl: "image.css\">" + - "
      " + - "" + - "
      " + - "
      " + - "
      " + - "
      " + - "
      <%=lang_input_dragTip%>
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "
      <%=lang_btn_add%>
      " + - "" + - "
      " + - "" + - "" + - "", - initContent: function (editor, $dialog) { - var lang = editor.getLang('image')["static"], - opt = $.extend({}, lang, { - image_url: UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/image/' - }); - - Upload.showCount = 0; - - if (lang) { - var html = $.parseTmpl(this.tpl, opt); - } - - currentDialog = $dialog.edui(); - - this.root().html(html); - - }, - initEvent: function (editor, $w) { - $tab = $.eduitab({selector: ".edui-image-wrapper"}) - .edui().on("beforeshow", function (e) { - e.stopPropagation(); - }); - - Upload.init(editor, $w); - - NetWork.init(editor, $w); - }, - buttons: { - 'ok': { - exec: function (editor, $w) { - var sel = "", - index = $tab.activate(); - - if (index == 0) { - sel = ".edui-image-content .edui-image-pic"; - } else if (index == 1) { - sel = ".edui-image-searchRes .edui-image-pic"; - } - - var list = Base.getAllPic(sel, $w, editor); - - if (index != -1) { - editor.execCommand('insertimage', list); - } - } - }, - 'cancel': {} - }, - width: 700, - height: 408 - }, function (editor, $w, url, state) { - Base.callback(editor, $w, url, state) - }) -})(); - +(function () { + + var utils = UM.utils, + browser = UM.browser, + Base = { + checkURL: function (url) { + if(!url) return false; + url = utils.trim(url); + if (url.length <= 0) { + return false; + } + if (url.search(/http:\/\/|https:\/\//) !== 0) { + url += 'http://'; + } + + url=url.replace(/\?[\s\S]*$/,""); + + if (!/(.gif|.jpg|.jpeg|.png)$/i.test(url)) { + return false; + } + return url; + }, + getAllPic: function (sel, $w, editor) { + var me = this, + arr = [], + $imgs = $(sel, $w); + + $.each($imgs, function (index, node) { + $(node).removeAttr("width").removeAttr("height"); + +// if (node.width > editor.options.initialFrameWidth) { +// me.scale(node, editor.options.initialFrameWidth - +// parseInt($(editor.body).css("padding-left")) - +// parseInt($(editor.body).css("padding-right"))); +// } + + return arr.push({ + _src: node.src, + src: node.src + }); + }); + + return arr; + }, + scale: function (img, max, oWidth, oHeight) { + var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; + if (ow > max || oh > max) { + if (ow >= oh) { + if (width = ow - max) { + percent = (width / ow).toFixed(2); + img.height = oh - oh * percent; + img.width = max; + } + } else { + if (height = oh - max) { + percent = (height / oh).toFixed(2); + img.width = ow - ow * percent; + img.height = max; + } + } + } + + return this; + }, + close: function ($img) { + + $img.css({ + top: ($img.parent().height() - $img.height()) / 2, + left: ($img.parent().width()-$img.width())/2 + }).prev().on("click",function () { + + if ( $(this).parent().remove().hasClass("edui-image-upload-item") ) { + //显示图片计数-1 + Upload.showCount--; + Upload.updateView(); + } + + }); + + return this; + }, + createImgBase64: function (img, file, $w) { + if (browser.webkit) { + //Chrome8+ + img.src = window.webkitURL.createObjectURL(file); + } else if (browser.gecko) { + //FF4+ + img.src = window.URL.createObjectURL(file); + } else { + //实例化file reader对象 + var reader = new FileReader(); + reader.onload = function (e) { + img.src = this.result; + $w.append(img); + }; + reader.readAsDataURL(file); + } + }, + callback: function (editor, $w, url, state) { + + if (state == "SUCCESS") { + //显示图片计数+1 + Upload.showCount++; + var $img = $(""), + $item = $("
      ").append($img); + + if ($(".edui-image-upload2", $w).length < 1) { + $(".edui-image-content", $w).append($item); + + Upload.render(".edui-image-content", 2) + .config(".edui-image-upload2"); + } else { + $(".edui-image-upload2", $w).before($item).show(); + } + + $img.on("load", function () { + Base.scale(this, 120); + Base.close($(this)); + $(".edui-image-content", $w).focus(); + }); + + } else { + currentDialog.showTip( state ); + window.setTimeout( function () { + + currentDialog.hideTip(); + + }, 3000 ); + } + + Upload.toggleMask(); + + } + }; + + /* + * 本地上传 + * */ + var Upload = { + showCount: 0, + uploadTpl: '
      ' + + '' + + '
      ' + + '' + + '
      ' + + + '
      ', + init: function (editor, $w) { + var me = this; + + me.editor = editor; + me.dialog = $w; + me.render(".edui-image-local", 1); + me.config(".edui-image-upload1"); + me.submit(); + me.drag(); + + $(".edui-image-upload1").hover(function () { + $(".edui-image-icon", this).toggleClass("hover"); + }); + + if (!(UM.browser.ie && UM.browser.version <= 9)) { + $(".edui-image-dragTip", me.dialog).css("display", "block"); + } + + + return me; + }, + render: function (sel, t) { + var me = this; + + $(sel, me.dialog).append($(me.uploadTpl.replace(/%%/g, t))); + + return me; + }, + config: function (sel) { + var me = this, + url=me.editor.options.imageUrl; + + url=url + (url.indexOf("?") == -1 ? "?" : "&") + "editorid="+me.editor.id;//初始form提交地址; + + $("form", $(sel, me.dialog)).attr("action", url); + + return me; + }, + uploadComplete: function(r){ + var me = this; + try{ + var json = eval('('+r+')'); + Base.callback(me.editor, me.dialog, json.url, json.state); + }catch (e){ + var lang = me.editor.getLang('image'); + Base.callback(me.editor, me.dialog, '', (lang && lang.uploadError) || 'Error!'); + } + }, + submit: function (callback) { + + var me = this, + input = $( ''), + input = input[0]; + + $(me.dialog).delegate( ".edui-image-file", "change", function ( e ) { + + if ( !this.parentNode ) { + return; + } + + $('').insertBefore(me.dialog).on('load', function(){ + var r = this.contentWindow.document.body.innerHTML; + if(r == '')return; + me.uploadComplete(r); + $(this).unbind('load'); + $(this).remove(); + + }); + + $(this).parent()[0].submit(); + Upload.updateInput( input ); + me.toggleMask("Loading...."); + callback && callback(); + + }); + + return me; + }, + //更新input + updateInput: function ( inputField ) { + + $( ".edui-image-file", this.dialog ).each( function ( index, ele ) { + + ele.parentNode.replaceChild( inputField.cloneNode( true ), ele ); + + } ); + + }, + //更新上传框 + updateView: function () { + + if ( Upload.showCount !== 0 ) { + return; + } + + $(".edui-image-upload2", this.dialog).hide(); + $(".edui-image-dragTip", this.dialog).show(); + $(".edui-image-upload1", this.dialog).show(); + + }, + drag: function () { + var me = this; + //做拽上传的支持 + if (!UM.browser.ie9below) { + me.dialog.find('.edui-image-content').on('drop',function (e) { + + //获取文件列表 + var fileList = e.originalEvent.dataTransfer.files; + var img = document.createElement('img'); + var hasImg = false; + $.each(fileList, function (i, f) { + if (/^image/.test(f.type)) { + //创建图片的base64 + Base.createImgBase64(img, f, me.dialog); + + var xhr = new XMLHttpRequest(); + xhr.open("post", me.editor.getOpt('imageUrl') + "?type=ajax", true); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + + //模拟数据 + var fd = new FormData(); + fd.append(me.editor.getOpt('imageFieldName'), f); + + xhr.send(fd); + xhr.addEventListener('load', function (e) { + var r = e.target.response, json; + me.uploadComplete(r); + if (i == fileList.length - 1) { + $(img).remove() + } + }); + hasImg = true; + } + }); + if (hasImg) { + e.preventDefault(); + me.toggleMask("Loading...."); + } + + }).on('dragover', function (e) { + e.preventDefault(); + }); + } + }, + toggleMask: function (html) { + var me = this; + + var $mask = $(".edui-image-mask", me.dialog); + if (html) { + if (!(UM.browser.ie && UM.browser.version <= 9)) { + $(".edui-image-dragTip", me.dialog).css( "display", "none" ); + } + $(".edui-image-upload1", me.dialog).css( "display", "none" ); + $mask.addClass("edui-active").html(html); + } else { + + $mask.removeClass("edui-active").html(); + + if ( Upload.showCount > 0 ) { + return me; + } + + if (!(UM.browser.ie && UM.browser.version <= 9) ){ + $(".edui-image-dragTip", me.dialog).css("display", "block"); + } + $(".edui-image-upload1", me.dialog).css( "display", "block" ); + } + + return me; + } + }; + + /* + * 网络图片 + * */ + var NetWork = { + init: function (editor, $w) { + var me = this; + + me.editor = editor; + me.dialog = $w; + + me.initEvt(); + }, + initEvt: function () { + var me = this, + url, + $ele = $(".edui-image-searchTxt", me.dialog); + + $(".edui-image-searchAdd", me.dialog).on("click", function () { + url = Base.checkURL($ele.val()); + + if (url) { + + $("").on("load", function () { + + + + var $item = $("
      ").append(this); + + $(".edui-image-searchRes", me.dialog).append($item); + + Base.scale(this, 120); + + $item.width($(this).width()); + + Base.close($(this)); + + $ele.val(""); + }); + } + }) + .hover(function () { + $(this).toggleClass("hover"); + }); + } + }; + + var $tab = null, + currentDialog = null; + + UM.registerWidget('image', { + tpl: "image.css\">" + + "
      " + + "" + + "
      " + + "
      " + + "
      " + + "
      " + + "
      <%=lang_input_dragTip%>
      " + + "
      " + + "
      " + + "
      " + + "" + + "
      <%=lang_btn_add%>
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "
      ", + initContent: function (editor, $dialog) { + var lang = editor.getLang('image')["static"], + opt = $.extend({}, lang, { + image_url: UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/image/' + }); + + Upload.showCount = 0; + + if (lang) { + var html = $.parseTmpl(this.tpl, opt); + } + + currentDialog = $dialog.edui(); + + this.root().html(html); + + }, + initEvent: function (editor, $w) { + $tab = $.eduitab({selector: ".edui-image-wrapper"}) + .edui().on("beforeshow", function (e) { + e.stopPropagation(); + }); + + Upload.init(editor, $w); + + NetWork.init(editor, $w); + }, + buttons: { + 'ok': { + exec: function (editor, $w) { + var sel = "", + index = $tab.activate(); + + if (index == 0) { + sel = ".edui-image-content .edui-image-pic"; + } else if (index == 1) { + sel = ".edui-image-searchRes .edui-image-pic"; + } + + var list = Base.getAllPic(sel, $w, editor); + + if (index != -1) { + editor.execCommand('insertimage', list); + } + } + }, + 'cancel': {} + }, + width: 700, + height: 408 + }, function (editor, $w, url, state) { + Base.callback(editor, $w, url, state) + }) +})(); + diff --git a/Public/statics/umeditor1_2_2/dialogs/image/images/close.png b/Public/statics/umeditor1_2_3/dialogs/image/images/close.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/image/images/close.png rename to Public/statics/umeditor1_2_3/dialogs/image/images/close.png diff --git a/Public/statics/umeditor1_2_2/dialogs/image/images/upload1.png b/Public/statics/umeditor1_2_3/dialogs/image/images/upload1.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/image/images/upload1.png rename to Public/statics/umeditor1_2_3/dialogs/image/images/upload1.png diff --git a/Public/statics/umeditor1_2_2/dialogs/image/images/upload2.png b/Public/statics/umeditor1_2_3/dialogs/image/images/upload2.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/image/images/upload2.png rename to Public/statics/umeditor1_2_3/dialogs/image/images/upload2.png diff --git a/Public/statics/umeditor1_2_2/dialogs/link/link.js b/Public/statics/umeditor1_2_3/dialogs/link/link.js old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/dialogs/link/link.js rename to Public/statics/umeditor1_2_3/dialogs/link/link.js index 326bbaa..fd10afb --- a/Public/statics/umeditor1_2_2/dialogs/link/link.js +++ b/Public/statics/umeditor1_2_3/dialogs/link/link.js @@ -1,73 +1,73 @@ -(function(){ - var utils = UM.utils; - 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; - } - - UM.registerWidget('link', { - tpl: "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + -// "" + -// "" + -// "" + - "", - initContent: function (editor) { - var lang = editor.getLang('link'); - if (lang) { - var html = $.parseTmpl(this.tpl, lang.static); - } - this.root().html(html); - }, - initEvent: function (editor, $w) { - var link = editor.queryCommandValue('link'); - if(link){ - $('#edui-link-Jhref',$w).val(utils.html($(link).attr('href'))); - $('#edui-link-Jtitle',$w).val($(link).attr('title')); - $(link).attr('target') == '_blank' && $('#edui-link-Jtarget').attr('checked',true) - } - $('#edui-link-Jhref',$w).focus(); - }, - buttons: { - 'ok': { - exec: function (editor, $w) { - var href = $('#edui-link-Jhref').val().replace(/^\s+|\s+$/g, ''); - - if (href) { - editor.execCommand('link', { - 'href': href, - 'target': $("#edui-link-Jtarget:checked").length ? "_blank" : '_self', - 'title': $("#edui-link-Jtitle").val().replace(/^\s+|\s+$/g, ''), - '_href': href - }); - } - } - }, - 'cancel':{} - }, - width: 400 - }) -})(); - +(function(){ + var utils = UM.utils; + 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; + } + + UM.registerWidget('link', { + tpl: "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + +// "" + +// "" + +// "" + + "", + initContent: function (editor) { + var lang = editor.getLang('link'); + if (lang) { + var html = $.parseTmpl(this.tpl, lang.static); + } + this.root().html(html); + }, + initEvent: function (editor, $w) { + var link = editor.queryCommandValue('link'); + if(link){ + $('#edui-link-Jhref',$w).val(utils.html($(link).attr('href'))); + $('#edui-link-Jtitle',$w).val($(link).attr('title')); + $(link).attr('target') == '_blank' && $('#edui-link-Jtarget').attr('checked',true) + } + $('#edui-link-Jhref',$w).focus(); + }, + buttons: { + 'ok': { + exec: function (editor, $w) { + var href = $('#edui-link-Jhref').val().replace(/^\s+|\s+$/g, ''); + + if (href) { + editor.execCommand('link', { + 'href': href, + 'target': $("#edui-link-Jtarget:checked").length ? "_blank" : '_self', + 'title': $("#edui-link-Jtitle").val().replace(/^\s+|\s+$/g, ''), + '_href': href + }); + } + } + }, + 'cancel':{} + }, + width: 400 + }) +})(); + diff --git a/Public/statics/umeditor1_2_2/dialogs/map/map.html b/Public/statics/umeditor1_2_3/dialogs/map/map.html old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/dialogs/map/map.html rename to Public/statics/umeditor1_2_3/dialogs/map/map.html index 6e2716b..be97a8c --- a/Public/statics/umeditor1_2_2/dialogs/map/map.html +++ b/Public/statics/umeditor1_2_3/dialogs/map/map.html @@ -1,148 +1,148 @@ - - - - - - - 百度地图API自定义地图 - - - - - - - -
      - - + + + + + + + 百度地图API自定义地图 + + + + + + + +
      + + \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/dialogs/map/map.js b/Public/statics/umeditor1_2_3/dialogs/map/map.js old mode 100755 new mode 100644 similarity index 96% rename from Public/statics/umeditor1_2_2/dialogs/map/map.js rename to Public/statics/umeditor1_2_3/dialogs/map/map.js index 2929188..6f898c4 --- a/Public/statics/umeditor1_2_2/dialogs/map/map.js +++ b/Public/statics/umeditor1_2_3/dialogs/map/map.js @@ -1,263 +1,263 @@ -(function () { - - var widgetName = 'map'; - - UM.registerWidget(widgetName, { - - tpl: "" + - "
      " + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - ""+ - "" + - "
      <%=lang_city%>:\"/><%=lang_address%>:<%=lang_search%>
      " + - "
      " + - "
      " + - "", - initContent: function (editor, $widget) { - - var me = this, - lang = editor.getLang(widgetName), - theme_url = editor.options.themePath + editor.options.theme; - - if( me.inited ) { - me.preventDefault(); - return false; - } - - me.inited = true; - - me.lang = lang; - me.editor = editor; - - me.root().html($.parseTmpl(me.tpl, $.extend({}, lang['static'], { - 'theme_url': theme_url - }))); - - me.initRequestApi(); - - }, - /** - * 初始化请求API - */ - initRequestApi: function () { - - var $ifr = null; - - //已经初始化过, 不用再次初始化 - if (window.BMap && window.BMap.Map) { - this.initBaiduMap(); - } else { - - $ifr = $(''); - $ifr.appendTo( this.root() ); - - $ifr = $ifr[ 0 ].contentWindow.document; - - $ifr.open(); - $ifr.write( this.root().find(".edui-tpl-container").html().replace( /scr_ipt/g, 'script').replace('<>',"'" + this.editor.id + "'") ); - - } - - }, - requestMapApi: function (src) { - - var me = this; - - if (src.length) { - - var _src = src[0]; - - src = src.slice(1); - - if (_src) { - $.getScript(_src, function () { - me.requestMapApi(src); - }); - } else { - me.requestMapApi(src); - } - - } else { - - me.initBaiduMap(); - - } - - - }, - initBaiduMap: function () { - - var $root = this.root(), - map = new BMap.Map($root.find(".edui-map-container")[0]), - me = this, - marker, - point, - imgcss, - img = $(me.editor.selection.getRange().getClosedNode()); - - map.enableInertialDragging(); - map.enableScrollWheelZoom(); - map.enableContinuousZoom(); - - if (img.length && /api[.]map[.]baidu[.]com/ig.test(img.attr("src"))) { - var url = img.attr("src"), - centerPos = me.getPars(url, "center").split(","), - markerPos = me.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(me.getPars(url, "zoom"))); - imgcss = img.attr('style'); - } 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); - - me.map = map; - me.marker = marker; - me.imgcss = imgcss; - }, - doSearch: function () { - var me = this, - city = me.root().find('.edui-map-city').val(), - address = me.root().find('.edui-map-address').val(); - - if (!city) { - alert(me.lang.cityMsg); - return; - } - var search = new BMap.LocalSearch(city, { - 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) { - me.map.setViewport(points); - } else { - me.map.centerAndZoom(points[0], 13); - } - point = me.map.getCenter(); - me.marker.setPoint(point); - } else { - alert(me.lang.errorMsg); - } - } - }); - search.search(address || city); - }, - getPars: function (str, par) { - var reg = new RegExp(par + "=((\\d+|[.,])*)", "g"); - return reg.exec(str)[1]; - }, - reset: function(){ - this.map && this.map.reset(); - }, - initEvent: function () { - var me = this, - $root = me.root(); - - $root.find('.edui-map-address').on('keydown', function (evt) { - evt = evt || event; - if (evt.keyCode == 13) { - me.doSearch(); - return false; - } - }); - - $root.find(".edui-map-button").on('click', function (evt) { - me.doSearch(); - }); - - $root.find(".edui-map-address").focus(); - - $root.on( "mousewheel DOMMouseScroll", function ( e ) { - return false; - } ); - - }, - width: 580, - height: 408, - buttons: { - ok: { - exec: function (editor) { - var widget = editor.getWidgetData(widgetName), - center = widget.map.getCenter(), - zoom = widget.map.getZoom(), - size = widget.map.getSize(), - point = widget.marker.point; - if (widget.root().find(".edui-map-dynamic")[0].checked) { - var URL = editor.getOpt('UMEDITOR_HOME_URL'), - url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/map.html" + - '#center=' + center.lng + ',' + center.lat, - '&zoom=' + zoom, - '&width=' + size.width, - '&height=' + size.height, - '&markers=' + point.lng + ',' + point.lat].join(''); - editor.execCommand('inserthtml', ''); - } else { - 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', '', true); - } - - widget.reset(); - } - }, - cancel: { - exec: function(editor){ - editor.getWidgetData(widgetName).reset(); - } - } - } - }); - -})(); - +(function () { + + var widgetName = 'map'; + + UM.registerWidget(widgetName, { + + tpl: "" + + "
      " + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""+ + "" + + "
      <%=lang_city%>:\"/><%=lang_address%>:<%=lang_search%>
      " + + "
      " + + "
      " + + "", + initContent: function (editor, $widget) { + + var me = this, + lang = editor.getLang(widgetName), + theme_url = editor.options.themePath + editor.options.theme; + + if( me.inited ) { + me.preventDefault(); + return false; + } + + me.inited = true; + + me.lang = lang; + me.editor = editor; + + me.root().html($.parseTmpl(me.tpl, $.extend({}, lang['static'], { + 'theme_url': theme_url + }))); + + me.initRequestApi(); + + }, + /** + * 初始化请求API + */ + initRequestApi: function () { + + var $ifr = null; + + //已经初始化过, 不用再次初始化 + if (window.BMap && window.BMap.Map) { + this.initBaiduMap(); + } else { + + $ifr = $(''); + $ifr.appendTo( this.root() ); + + $ifr = $ifr[ 0 ].contentWindow.document; + + $ifr.open(); + $ifr.write( this.root().find(".edui-tpl-container").html().replace( /scr_ipt/g, 'script').replace('<>',"'" + this.editor.id + "'") ); + + } + + }, + requestMapApi: function (src) { + + var me = this; + + if (src.length) { + + var _src = src[0]; + + src = src.slice(1); + + if (_src) { + $.getScript(_src, function () { + me.requestMapApi(src); + }); + } else { + me.requestMapApi(src); + } + + } else { + + me.initBaiduMap(); + + } + + + }, + initBaiduMap: function () { + + var $root = this.root(), + map = new BMap.Map($root.find(".edui-map-container")[0]), + me = this, + marker, + point, + imgcss, + img = $(me.editor.selection.getRange().getClosedNode()); + + map.enableInertialDragging(); + map.enableScrollWheelZoom(); + map.enableContinuousZoom(); + + if (img.length && /api[.]map[.]baidu[.]com/ig.test(img.attr("src"))) { + var url = img.attr("src"), + centerPos = me.getPars(url, "center").split(","), + markerPos = me.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(me.getPars(url, "zoom"))); + imgcss = img.attr('style'); + } 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); + + me.map = map; + me.marker = marker; + me.imgcss = imgcss; + }, + doSearch: function () { + var me = this, + city = me.root().find('.edui-map-city').val(), + address = me.root().find('.edui-map-address').val(); + + if (!city) { + alert(me.lang.cityMsg); + return; + } + var search = new BMap.LocalSearch(city, { + 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) { + me.map.setViewport(points); + } else { + me.map.centerAndZoom(points[0], 13); + } + point = me.map.getCenter(); + me.marker.setPoint(point); + } else { + alert(me.lang.errorMsg); + } + } + }); + search.search(address || city); + }, + getPars: function (str, par) { + var reg = new RegExp(par + "=((\\d+|[.,])*)", "g"); + return reg.exec(str)[1]; + }, + reset: function(){ + this.map && this.map.reset(); + }, + initEvent: function () { + var me = this, + $root = me.root(); + + $root.find('.edui-map-address').on('keydown', function (evt) { + evt = evt || event; + if (evt.keyCode == 13) { + me.doSearch(); + return false; + } + }); + + $root.find(".edui-map-button").on('click', function (evt) { + me.doSearch(); + }); + + $root.find(".edui-map-address").focus(); + + $root.on( "mousewheel DOMMouseScroll", function ( e ) { + return false; + } ); + + }, + width: 580, + height: 408, + buttons: { + ok: { + exec: function (editor) { + var widget = editor.getWidgetData(widgetName), + center = widget.map.getCenter(), + zoom = widget.map.getZoom(), + size = widget.map.getSize(), + point = widget.marker.P; + + if (widget.root().find(".edui-map-dynamic")[0].checked) { + var URL = editor.getOpt('UMEDITOR_HOME_URL'), + url = [URL + (/\/$/.test(URL) ? '':'/') + "dialogs/map/map.html" + + '#center=' + center.lng + ',' + center.lat, + '&zoom=' + zoom, + '&width=' + size.width, + '&height=' + size.height, + '&markers=' + point.lng + ',' + point.lat].join(''); + editor.execCommand('inserthtml', ''); + } else { + 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', '', true); + } + + widget.reset(); + } + }, + cancel: { + exec: function(editor){ + editor.getWidgetData(widgetName).reset(); + } + } + } + }); + +})(); + diff --git a/Public/statics/umeditor1_2_2/dialogs/video/images/center_focus.jpg b/Public/statics/umeditor1_2_3/dialogs/video/images/center_focus.jpg old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/video/images/center_focus.jpg rename to Public/statics/umeditor1_2_3/dialogs/video/images/center_focus.jpg diff --git a/Public/statics/umeditor1_2_2/dialogs/video/images/left_focus.jpg b/Public/statics/umeditor1_2_3/dialogs/video/images/left_focus.jpg old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/video/images/left_focus.jpg rename to Public/statics/umeditor1_2_3/dialogs/video/images/left_focus.jpg diff --git a/Public/statics/umeditor1_2_2/dialogs/video/images/none_focus.jpg b/Public/statics/umeditor1_2_3/dialogs/video/images/none_focus.jpg old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/video/images/none_focus.jpg rename to Public/statics/umeditor1_2_3/dialogs/video/images/none_focus.jpg diff --git a/Public/statics/umeditor1_2_2/dialogs/video/images/right_focus.jpg b/Public/statics/umeditor1_2_3/dialogs/video/images/right_focus.jpg old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/dialogs/video/images/right_focus.jpg rename to Public/statics/umeditor1_2_3/dialogs/video/images/right_focus.jpg diff --git a/Public/statics/umeditor1_2_2/dialogs/video/video.css b/Public/statics/umeditor1_2_3/dialogs/video/video.css old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/dialogs/video/video.css rename to Public/statics/umeditor1_2_3/dialogs/video/video.css index 380d2d2..e046d8c --- a/Public/statics/umeditor1_2_2/dialogs/video/video.css +++ b/Public/statics/umeditor1_2_3/dialogs/video/video.css @@ -1,59 +1,59 @@ -@charset "utf-8"; -.edui-dialog-video .edui-video-wrapper{ width: 570px;_width:575px;margin: 10px auto; zoom:1;position: relative} -.edui-dialog-video .edui-video-tabbody{height:335px;} -.edui-dialog-video .edui-video-panel { position: absolute;width:100%; height:100%;background: #fff;} -.edui-dialog-video .edui-video-panel table td{vertical-align: middle;} -.edui-dialog-video #eduiVideoUrl { - width: 470px; - height: 21px; - line-height: 21px; - margin: 8px 5px; - background: #FFF; - border: 1px solid #d7d7d7; -} -.edui-dialog-video #eduiVideoSearchTxt{margin-left:15px;background: #FFF;width:200px;height:21px;line-height:21px;border: 1px solid #d7d7d7;} -.edui-dialog-video #searchList{width: 570px;overflow: auto;zoom:1;height: 270px;} -.edui-dialog-video #searchList div{float: left;width: 120px;height: 135px;margin: 5px 15px;} -.edui-dialog-video #searchList img{margin: 2px 8px;cursor: pointer;border: 2px solid #fff} /*不用缩略图*/ -.edui-dialog-video #searchList p{margin-left: 10px;} -.edui-dialog-video #eduiVideoType{ - width: 65px; - height: 23px; - line-height: 22px; - border: 1px solid #d7d7d7; -} -.edui-dialog-video #eduiVideoSearchBtn,.edui-dialog-video #eduiVideoSearchReset{ - /*width: 80px;*/ - height: 25px; - line-height: 25px; - background: #eee; - border: 1px solid #d7d7d7; - cursor: pointer; - padding: 0 5px; -} - - - -.edui-dialog-video #eduiVideoPreview{width: 420px; margin-left: 10px; _margin-left:5px; height: 280px;background-color: #ddd;float: left} -.edui-dialog-video #eduiVideoInfo {width: 120px;float: left;margin-left: 10px;_margin-left:7px;} -.edui-dialog-video .edui-video-wrapper fieldset{ - border: 1px solid #ddd; - padding-left: 5px; - margin-bottom: 20px; - padding-bottom: 5px; - width: 115px; -} -.edui-dialog-video .edui-video-wrapper fieldset legend{font-weight: bold;} -.edui-dialog-video .edui-video-wrapper fieldset p{line-height: 30px;} -.edui-dialog-video .edui-video-wrapper fieldset input.edui-video-txt{ - width: 65px; - height: 21px; - line-height: 21px; - margin: 8px 5px; - background: #FFF; - border: 1px solid #d7d7d7; -} -.edui-dialog-video .edui-video-wrapper label.edui-video-url{font-weight: bold;margin-left: 5px;color: #06c;} -.edui-dialog-video #eduiVideoFloat div{cursor:pointer;opacity: 0.5;filter: alpha(opacity = 50);margin:9px;_margin:5px;width:38px;height:36px;float:left;} -.edui-dialog-video #eduiVideoFloat .edui-video-focus{opacity: 1;filter: alpha(opacity = 100)} +@charset "utf-8"; +.edui-dialog-video .edui-video-wrapper{ width: 570px;_width:575px;margin: 10px auto; zoom:1;position: relative} +.edui-dialog-video .edui-video-tabbody{height:335px;} +.edui-dialog-video .edui-video-panel { position: absolute;width:100%; height:100%;background: #fff;} +.edui-dialog-video .edui-video-panel table td{vertical-align: middle;} +.edui-dialog-video #eduiVideoUrl { + width: 470px; + height: 21px; + line-height: 21px; + margin: 8px 5px; + background: #FFF; + border: 1px solid #d7d7d7; +} +.edui-dialog-video #eduiVideoSearchTxt{margin-left:15px;background: #FFF;width:200px;height:21px;line-height:21px;border: 1px solid #d7d7d7;} +.edui-dialog-video #searchList{width: 570px;overflow: auto;zoom:1;height: 270px;} +.edui-dialog-video #searchList div{float: left;width: 120px;height: 135px;margin: 5px 15px;} +.edui-dialog-video #searchList img{margin: 2px 8px;cursor: pointer;border: 2px solid #fff} /*不用缩略图*/ +.edui-dialog-video #searchList p{margin-left: 10px;} +.edui-dialog-video #eduiVideoType{ + width: 65px; + height: 23px; + line-height: 22px; + border: 1px solid #d7d7d7; +} +.edui-dialog-video #eduiVideoSearchBtn,.edui-dialog-video #eduiVideoSearchReset{ + /*width: 80px;*/ + height: 25px; + line-height: 25px; + background: #eee; + border: 1px solid #d7d7d7; + cursor: pointer; + padding: 0 5px; +} + + + +.edui-dialog-video #eduiVideoPreview{width: 420px; margin-left: 10px; _margin-left:5px; height: 280px;background-color: #ddd;float: left} +.edui-dialog-video #eduiVideoInfo {width: 120px;float: left;margin-left: 10px;_margin-left:7px;} +.edui-dialog-video .edui-video-wrapper fieldset{ + border: 1px solid #ddd; + padding-left: 5px; + margin-bottom: 20px; + padding-bottom: 5px; + width: 115px; +} +.edui-dialog-video .edui-video-wrapper fieldset legend{font-weight: bold;} +.edui-dialog-video .edui-video-wrapper fieldset p{line-height: 30px;} +.edui-dialog-video .edui-video-wrapper fieldset input.edui-video-txt{ + width: 65px; + height: 21px; + line-height: 21px; + margin: 8px 5px; + background: #FFF; + border: 1px solid #d7d7d7; +} +.edui-dialog-video .edui-video-wrapper label.edui-video-url{font-weight: bold;margin-left: 5px;color: #06c;} +.edui-dialog-video #eduiVideoFloat div{cursor:pointer;opacity: 0.5;filter: alpha(opacity = 50);margin:9px;_margin:5px;width:38px;height:36px;float:left;} +.edui-dialog-video #eduiVideoFloat .edui-video-focus{opacity: 1;filter: alpha(opacity = 100)} .edui-dialog-video .edui-video-wrapper span.edui-video-view{display: inline-block;width: 30px;float: right;cursor: pointer;color: blue} \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/dialogs/video/video.js b/Public/statics/umeditor1_2_3/dialogs/video/video.js old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/dialogs/video/video.js rename to Public/statics/umeditor1_2_3/dialogs/video/video.js index f37d5b7..64a47ec --- a/Public/statics/umeditor1_2_2/dialogs/video/video.js +++ b/Public/statics/umeditor1_2_3/dialogs/video/video.js @@ -1,282 +1,282 @@ - -(function(){ - var domUtils = UM.dom.domUtils; - var widgetName = 'video'; - - UM.registerWidget( widgetName,{ - - tpl: "video.css\" />" + - "
      " + - "
      " + - "
      " + - "<%=lang_tab_insertV%>" + - "
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "<%=lang_video_size%>" + - "" + - "" + - "" + - "
      " + - "
      " + - "
      " + - "<%=lang_alignment%>" + - "
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "
      " + - "
      ", - initContent:function( editor, $widget ){ - - var me = this, - lang = editor.getLang( widgetName), - video_url = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/'; - - me.lang = lang; - me.editor = editor; - me.$widget = $widget; - me.root().html( $.parseTmpl( me.tpl, $.extend( { video_url: video_url }, lang['static'] ) ) ); - - me.initController( lang ); - - }, - initEvent:function(){ - - var me = this, - url = $("#eduiVideoUrl", me.$widget)[0]; - - if( 'oninput' in url ) { - url.oninput = function(){ - me.createPreviewVideo( this.value ); - }; - } else { - url.onpropertychange = function () { - me.createPreviewVideo( this.value ); - } - } - - }, - initController: function( lang ){ - - var me = this, - img = me.editor.selection.getRange().getClosedNode(), - url; - - me.createAlignButton( ["eduiVideoFloat"] ); - - //编辑视频时初始化相关信息 - if(img && img.className == "edui-faked-video"){ - $("#eduiVideoUrl", me.$widget)[0].value = url = img.getAttribute("_url"); - $("#eduiVideoWidth", me.$widget)[0].value = img.width; - $("#eduiVideoHeight", me.$widget)[0].value = img.height; - var align = domUtils.getComputedStyle(img,"float"), - parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align"); - me.updateAlignButton(parentAlign==="center"?"center":align); - } - me.createPreviewVideo(url); - - }, - /** - * 根据url生成视频预览 - */ - createPreviewVideo: function(url){ - - if ( !url )return; - - var me = this, - lang = me.lang, - conUrl = me.convert_url(url); - - if(!me.endWith(conUrl,[".swf",".flv",".wmv"])){ - $("#eduiVideoPreview", me.$widget).html( lang.urlError ); - return; - } - $("#eduiVideoPreview", me.$widget)[0].innerHTML = ''; - - }, - /** - * 将单个视频信息插入编辑器中 - */ - insertSingle: function(){ - - var me = this, - width = $("#eduiVideoWidth", me.$widget)[0], - height = $("#eduiVideoHeight", me.$widget)[0], - url=$('#eduiVideoUrl', me.$widget)[0].value, - align = this.findFocus("eduiVideoFloat","name"); - - if(!url) return false; - if ( !me.checkNum( [width, height] ) ) return false; - this.editor.execCommand('insertvideo', { - url: me.convert_url(url), - width: width.value, - height: height.value, - align: align - }); - - }, - /** - * URL转换 - */ - convert_url: function(url){ - if ( !url ) return ''; - var matches = url.match(/youtu.be\/(\w+)$/) || - url.match(/youtube\.com\/watch\?v=(\w+)/) || - url.match(/youtube.com\/v\/(\w+)/), - youku = url.match(/youku\.com\/v_show\/id_(\w+)/), - youkuPlay = /player\.youku\.com/ig.test(url); - - if(youkuPlay){ - url = url.replace(/\?f=.*/, ""); - } else if (matches){ - url = "https://www.youtube.com/v/" + matches[1] + "?version=3&feature=player_embedded"; - }else if(youku){ - url = "http://player.youku.com/player.php/sid/"+youku[1]+"/v.swf" - } else { - url = url.replace(/http:\/\/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "http://www.tudou.com/v/$1") - .replace(/http:\/\/www\.youtube\.com\/watch\?v=([\w\-]+)/i, "http://www.youtube.com/v/$1") - .replace(/http:\/\/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, "http://player.youku.com/player.php/sid/$1") - .replace(/http:\/\/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "http://player.56.com/v_$1.swf") - .replace(/http:\/\/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "http://player.56.com/v_$1.swf") - .replace(/http:\/\/v\.ku6\.com\/.+\/([^.]+)\.html/i, "http://player.ku6.com/refer/$1/v.swf") - .replace(/\?f=.*/, ""); - } - return url; - }, - /** - * 检测传入的所有input框中输入的长宽是否是正数 - */ - checkNum: function checkNum( nodes ) { - - var me = this; - - for ( var i = 0, ci; ci = nodes[i++]; ) { - var value = ci.value; - if ( !me.isNumber( value ) && value) { - alert( me.lang.numError ); - ci.value = ""; - ci.focus(); - return false; - } - } - return true; - }, - /** - * 数字判断 - * @param value - */ - isNumber: function( value ) { - return /(0|^[1-9]\d*$)/.test( value ); - }, - updateAlignButton: function( align ) { - var aligns = $( "#eduiVideoFloat", this.$widget )[0].children; - - for ( var i = 0, ci; ci = aligns[i++]; ) { - if ( ci.getAttribute( "name" ) == align ) { - if ( ci.className !="edui-video-focus" ) { - ci.className = "edui-video-focus"; - } - } else { - if ( ci.className =="edui-video-focus" ) { - ci.className = ""; - } - } - } - - }, - /** - * 创建图片浮动选择按钮 - * @param ids - */ - createAlignButton: function( ids ) { - var lang = this.lang, - vidoe_home = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/'; - - for ( var i = 0, ci; ci = ids[i++]; ) { - var floatContainer = $( "#" + ci, this.$widget ) [0], - nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight}; - for ( var j in nameMaps ) { - var div = document.createElement( "div" ); - div.setAttribute( "name", j ); - if ( j == "none" ) div.className="edui-video-focus"; - div.style.cssText = "background:url("+ vidoe_home +"images/" + j + "_focus.jpg);"; - div.setAttribute( "title", nameMaps[j] ); - floatContainer.appendChild( div ); - } - this.switchSelect( ci ); - } - }, - /** - * 选择切换 - */ - switchSelect: function( selectParentId ) { - var selects = $( "#" + selectParentId, this.$widget )[0].children; - for ( var i = 0, ci; ci = selects[i++]; ) { - $(ci).on("click", function () { - for ( var j = 0, cj; cj = selects[j++]; ) { - cj.className = ""; - cj.removeAttribute && cj.removeAttribute( "class" ); - } - this.className = "edui-video-focus"; - } ) - } - }, - /** - * 找到id下具有focus类的节点并返回该节点下的某个属性 - * @param id - * @param returnProperty - */ - findFocus: function( id, returnProperty ) { - var tabs = $( "#" + id , this.$widget)[0].children, - property; - for ( var i = 0, ci; ci = tabs[i++]; ) { - if ( ci.className=="edui-video-focus" ) { - property = ci.getAttribute( returnProperty ); - break; - } - } - return property; - }, - /** - * 末尾字符检测 - */ - endWith: function(str,endStrArr){ - for(var i=0,len = endStrArr.length;ivideo.css\" />" + + "
      " + + "
      " + + "
      " + + "<%=lang_tab_insertV%>" + + "
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "<%=lang_video_size%>" + + "" + + "" + + "" + + "
      " + + "
      " + + "
      " + + "<%=lang_alignment%>" + + "
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "
      " + + "
      ", + initContent:function( editor, $widget ){ + + var me = this, + lang = editor.getLang( widgetName), + video_url = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/'; + + me.lang = lang; + me.editor = editor; + me.$widget = $widget; + me.root().html( $.parseTmpl( me.tpl, $.extend( { video_url: video_url }, lang['static'] ) ) ); + + me.initController( lang ); + + }, + initEvent:function(){ + + var me = this, + url = $("#eduiVideoUrl", me.$widget)[0]; + + if( 'oninput' in url ) { + url.oninput = function(){ + me.createPreviewVideo( this.value ); + }; + } else { + url.onpropertychange = function () { + me.createPreviewVideo( this.value ); + } + } + + }, + initController: function( lang ){ + + var me = this, + img = me.editor.selection.getRange().getClosedNode(), + url; + + me.createAlignButton( ["eduiVideoFloat"] ); + + //编辑视频时初始化相关信息 + if(img && img.className == "edui-faked-video"){ + $("#eduiVideoUrl", me.$widget)[0].value = url = img.getAttribute("_url"); + $("#eduiVideoWidth", me.$widget)[0].value = img.width; + $("#eduiVideoHeight", me.$widget)[0].value = img.height; + var align = domUtils.getComputedStyle(img,"float"), + parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align"); + me.updateAlignButton(parentAlign==="center"?"center":align); + } + me.createPreviewVideo(url); + + }, + /** + * 根据url生成视频预览 + */ + createPreviewVideo: function(url){ + + if ( !url )return; + + var me = this, + lang = me.lang, + conUrl = me.convert_url(url); + + if(!me.endWith(conUrl,[".swf",".flv",".wmv"])){ + $("#eduiVideoPreview", me.$widget).html( lang.urlError ); + return; + } + $("#eduiVideoPreview", me.$widget)[0].innerHTML = ''; + + }, + /** + * 将单个视频信息插入编辑器中 + */ + insertSingle: function(){ + + var me = this, + width = $("#eduiVideoWidth", me.$widget)[0], + height = $("#eduiVideoHeight", me.$widget)[0], + url=$('#eduiVideoUrl', me.$widget)[0].value, + align = this.findFocus("eduiVideoFloat","name"); + + if(!url) return false; + if ( !me.checkNum( [width, height] ) ) return false; + this.editor.execCommand('insertvideo', { + url: me.convert_url(url), + width: width.value, + height: height.value, + align: align + }); + + }, + /** + * URL转换 + */ + convert_url: function(url){ + if ( !url ) return ''; + var matches = url.match(/youtu.be\/(\w+)$/) || + url.match(/youtube\.com\/watch\?v=(\w+)/) || + url.match(/youtube.com\/v\/(\w+)/), + youku = url.match(/youku\.com\/v_show\/id_(\w+)/), + youkuPlay = /player\.youku\.com/ig.test(url); + + if(youkuPlay){ + url = url.replace(/\?f=.*/, ""); + } else if (matches){ + url = "https://www.youtube.com/v/" + matches[1] + "?version=3&feature=player_embedded"; + }else if(youku){ + url = "http://player.youku.com/player.php/sid/"+youku[1]+"/v.swf" + } else { + url = url.replace(/http:\/\/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "http://www.tudou.com/v/$1") + .replace(/http:\/\/www\.youtube\.com\/watch\?v=([\w\-]+)/i, "http://www.youtube.com/v/$1") + .replace(/http:\/\/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, "http://player.youku.com/player.php/sid/$1") + .replace(/http:\/\/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "http://player.56.com/v_$1.swf") + .replace(/http:\/\/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "http://player.56.com/v_$1.swf") + .replace(/http:\/\/v\.ku6\.com\/.+\/([^.]+)\.html/i, "http://player.ku6.com/refer/$1/v.swf") + .replace(/\?f=.*/, ""); + } + return url; + }, + /** + * 检测传入的所有input框中输入的长宽是否是正数 + */ + checkNum: function checkNum( nodes ) { + + var me = this; + + for ( var i = 0, ci; ci = nodes[i++]; ) { + var value = ci.value; + if ( !me.isNumber( value ) && value) { + alert( me.lang.numError ); + ci.value = ""; + ci.focus(); + return false; + } + } + return true; + }, + /** + * 数字判断 + * @param value + */ + isNumber: function( value ) { + return /(0|^[1-9]\d*$)/.test( value ); + }, + updateAlignButton: function( align ) { + var aligns = $( "#eduiVideoFloat", this.$widget )[0].children; + + for ( var i = 0, ci; ci = aligns[i++]; ) { + if ( ci.getAttribute( "name" ) == align ) { + if ( ci.className !="edui-video-focus" ) { + ci.className = "edui-video-focus"; + } + } else { + if ( ci.className =="edui-video-focus" ) { + ci.className = ""; + } + } + } + + }, + /** + * 创建图片浮动选择按钮 + * @param ids + */ + createAlignButton: function( ids ) { + var lang = this.lang, + vidoe_home = UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/video/'; + + for ( var i = 0, ci; ci = ids[i++]; ) { + var floatContainer = $( "#" + ci, this.$widget ) [0], + nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight}; + for ( var j in nameMaps ) { + var div = document.createElement( "div" ); + div.setAttribute( "name", j ); + if ( j == "none" ) div.className="edui-video-focus"; + div.style.cssText = "background:url("+ vidoe_home +"images/" + j + "_focus.jpg);"; + div.setAttribute( "title", nameMaps[j] ); + floatContainer.appendChild( div ); + } + this.switchSelect( ci ); + } + }, + /** + * 选择切换 + */ + switchSelect: function( selectParentId ) { + var selects = $( "#" + selectParentId, this.$widget )[0].children; + for ( var i = 0, ci; ci = selects[i++]; ) { + $(ci).on("click", function () { + for ( var j = 0, cj; cj = selects[j++]; ) { + cj.className = ""; + cj.removeAttribute && cj.removeAttribute( "class" ); + } + this.className = "edui-video-focus"; + } ) + } + }, + /** + * 找到id下具有focus类的节点并返回该节点下的某个属性 + * @param id + * @param returnProperty + */ + findFocus: function( id, returnProperty ) { + var tabs = $( "#" + id , this.$widget)[0].children, + property; + for ( var i = 0, ci; ci = tabs[i++]; ) { + if ( ci.className=="edui-video-focus" ) { + property = ci.getAttribute( returnProperty ); + break; + } + } + return property; + }, + /** + * 末尾字符检测 + */ + endWith: function(str,endStrArr){ + for(var i=0,len = endStrArr.length;i - - - - - UMEDITOR 完整demo - - - - - - - - - -

      UMEDITOR 完整demo

      - - - - - -
      -
      - - - - - - - - - - - -
      -   -   -   -   -   -   - -
      -   -   -   -   -   -   - -
      -   -   -   - -
      -
      - - - - -
      - - -
      - -
      -

      -
      - - - + + + + + + UMEDITOR 完整demo + + + + + + + + + +

      UMEDITOR 完整demo

      + + + + + +
      +
      + + + + + + + + + + + +
      +   +   +   +   +   +   + +
      +   +   +   +   +   +   + +
      +   +   +   + +
      +
      + + + + +
      + + +
      + +
      +

      +
      + + + \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/lang/en/en.js b/Public/statics/umeditor1_2_3/lang/en/en.js old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/lang/en/en.js rename to Public/statics/umeditor1_2_3/lang/en/en.js index 9a1944f..45b2f1a --- a/Public/statics/umeditor1_2_2/lang/en/en.js +++ b/Public/statics/umeditor1_2_3/lang/en/en.js @@ -1,150 +1,150 @@ -/** - * English language package - */ -UM.I18N['en'] = { - 'labelMap':{ - 'anchor':'Anchor', 'undo':'Undo', 'redo':'Redo', 'bold':'Bold', 'indent':'Indent', 'snapscreen':'SnapScreen', - 'italic':'Italic', 'underline':'Underline', 'strikethrough':'Strikethrough', 'subscript':'SubScript','fontborder':'text border', - 'superscript':'SuperScript', 'formatmatch':'Format Match', 'source':'Source', 'blockquote':'BlockQuote', - 'pasteplain':'PastePlain', 'selectall':'SelectAll', 'print':'Print', 'preview':'Preview', - 'horizontal':'Horizontal', 'removeformat':'RemoveFormat', 'time':'Time', 'date':'Date', - 'unlink':'Unlink', 'insertrow':'InsertRow', 'insertcol':'InsertCol', 'mergeright':'MergeRight', 'mergedown':'MergeDown', - 'deleterow':'DeleteRow', 'deletecol':'DeleteCol', 'splittorows':'SplitToRows','insertcode':'insert code', - 'splittocols':'SplitToCols', 'splittocells':'SplitToCells','deletecaption':'DeleteCaption','inserttitle':'InsertTitle', - 'mergecells':'MergeCells', 'deletetable':'DeleteTable', 'cleardoc':'Clear', 'insertparagraphbeforetable':"InsertParagraphBeforeTable", - 'fontfamily':'FontFamily', 'fontsize':'FontSize', 'paragraph':'Paragraph', 'image':'Image','edittable':'Edit Table', 'edittd':'Edit Td','link':'Link', - 'emotion':'Emotion', 'spechars':'Spechars', 'searchreplace':'SearchReplace', 'map':'BaiduMap', 'gmap':'GoogleMap', - 'video':'Video', 'help':'Help', 'justifyleft':'JustifyLeft', 'justifyright':'JustifyRight', 'justifycenter':'JustifyCenter', - 'justifyjustify':'Justify', 'forecolor':'FontColor', 'backcolor':'BackColor', 'insertorderedlist':'OL', - 'insertunorderedlist':'UL', 'fullscreen':'FullScreen', 'directionalityltr':'EnterFromLeft', 'directionalityrtl':'EnterFromRight', - 'rowspacingtop':'RowSpacingTop', 'rowspacingbottom':'RowSpacingBottom', 'highlightcode':'Code', 'pagebreak':'PageBreak', 'insertframe':'Iframe', 'imagenone':'Default', - 'imageleft':'ImageLeft', 'imageright':'ImageRight', 'attachment':'Attachment', 'imagecenter':'ImageCenter', 'wordimage':'WordImage', - 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', - 'webapp':'WebAPP', 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', - 'drafts': 'drafts', 'formula':'formula' - }, - 'paragraph':{'p':'Paragraph', 'h1':'Title 1', 'h2':'Title 2', 'h3':'Title 3', 'h4':'Title 4', 'h5':'Title 5', 'h6':'Title 6'}, - 'fontfamily':{ - 'songti':'Sim sun', - 'kaiti':'Sim kai', - 'heiti':'Sim hei', - 'lishu':'Sim li', - 'yahei': 'Microsoft yahei', - 'andaleMono':'Andale mono', - 'arial': 'Arial', - 'arialBlack':'Arial black', - 'comicSansMs':'Comic sans ms', - 'impact':'Impact', - 'timesNewRoman':'Times new roman' - }, - 'ok':"OK", - 'cancel':"Cancel", - 'closeDialog':"closeDialog", - 'tableDrag':"You must import the file uiUtils.js before drag! ", - 'autofloatMsg':"The plugin AutoFloat depends on EditorUI!", - 'anthorMsg':"Link", - 'clearColor':'Clear', - 'standardColor':'Standard color', - 'themeColor':'Theme color', - 'property':'Property', - 'default':'Default', - 'modify':'Modify', - 'justifyleft':'Justify Left', - 'justifyright':'Justify Right', - 'justifycenter':'Justify Center', - 'justify':'Default', - 'clear':'Clear', - 'anchorMsg':'Anchor', - 'delete':'Delete', - 'clickToUpload':"Click to upload", - 'unset':"Language hasn't been set!", - 't_row':'row', - 't_col':'col', - 'more':'More', - 'pasteOpt':'Paste Option', - 'pasteSourceFormat':"Keep Source Formatting", - 'tagFormat':'Keep tag', - 'pasteTextFormat':'Keep Text only', - - //===============dialog i18N======================= - 'image':{ - 'static':{ - 'lang_tab_local':"Local Upload", - 'lang_tab_imgSearch':"Network Pictures", - 'lang_input_dragTip':"Support drag upload", - 'lang_btn_add':"Add" - }, - 'uploadError': 'Upload Error' - }, - 'emotion':{ - 'static':{ - 'lang_input_choice':'Choice', - 'lang_input_Tuzki':'Tuzki', - 'lang_input_lvdouwa':'LvDouWa', - 'lang_input_BOBO':'BOBO', - 'lang_input_babyCat':'BabyCat', - 'lang_input_bubble':'Bubble', - 'lang_input_youa':'YouA' - } - }, - 'gmap':{ - 'static':{ - 'lang_input_address':'Address:', - 'lang_input_search':'Search', - 'address':{'value':"Beijing"} - }, - 'searchError':'Unable to locate the address!' - }, - 'link':{ - 'static':{ - 'lang_input_text':'Text:', - 'lang_input_url':'URL:', - 'lang_input_title':'Title:', - 'lang_input_target':'open in new window:' - }, - 'validLink':'Supports only effective when a link is selected', - 'httpPrompt':'The hyperlink you enter should start with "http|https|ftp://"!' - }, - 'map':{ - 'static':{ - 'lang_city':"City", - 'lang_address':"Address", - 'city':{'value':"Beijing"}, - 'lang_search':"Search", - 'lang_dynamicmap':"Dynamic map" - }, - 'cityMsg':"Please enter the city name!", - 'errorMsg':"Can't find the place!" - }, - 'video':{ - 'static':{ - 'lang_tab_insertV':"Video", - 'lang_video_url':" URL ", - 'lang_video_size':"Video Size", - 'lang_videoW':"Width", - 'lang_videoH':"Height", - 'lang_alignment':"Alignment", - 'videoSearchTxt':{'value':"Enter the search keyword!"}, - 'videoType':{'options':["All", "Hot", "Entertainment", "Funny", "Sports", "Science", "variety"]}, - 'videoSearchBtn':{'value':"Search in Baidu"}, - 'videoSearchReset':{'value':"Clear result"} - }, - 'numError':"Please enter the correct Num. e.g 123,400", - 'floatLeft':"Float left", - 'floatRight':"Float right", - 'default':"Default", - 'block':"Display in block", - 'urlError':"The video url format may be wrong!", - 'loading':"  The video is loading, please wait…", - 'clickToSelect':"Click to select", - 'goToSource':'Visit source video ', - 'noVideo':"    Sorry,can't find the video,please try again!" - }, - 'formula':{ - 'static':{ - 'lang_tab_common':'Common', - 'lang_tab_symbol':'Symbol', - 'lang_tab_letter':'Letter' - } - } +/** + * English language package + */ +UM.I18N['en'] = { + 'labelMap':{ + 'anchor':'Anchor', 'undo':'Undo', 'redo':'Redo', 'bold':'Bold', 'indent':'Indent', 'snapscreen':'SnapScreen', + 'italic':'Italic', 'underline':'Underline', 'strikethrough':'Strikethrough', 'subscript':'SubScript','fontborder':'text border', + 'superscript':'SuperScript', 'formatmatch':'Format Match', 'source':'Source', 'blockquote':'BlockQuote', + 'pasteplain':'PastePlain', 'selectall':'SelectAll', 'print':'Print', 'preview':'Preview', + 'horizontal':'Horizontal', 'removeformat':'RemoveFormat', 'time':'Time', 'date':'Date', + 'unlink':'Unlink', 'insertrow':'InsertRow', 'insertcol':'InsertCol', 'mergeright':'MergeRight', 'mergedown':'MergeDown', + 'deleterow':'DeleteRow', 'deletecol':'DeleteCol', 'splittorows':'SplitToRows','insertcode':'insert code', + 'splittocols':'SplitToCols', 'splittocells':'SplitToCells','deletecaption':'DeleteCaption','inserttitle':'InsertTitle', + 'mergecells':'MergeCells', 'deletetable':'DeleteTable', 'cleardoc':'Clear', 'insertparagraphbeforetable':"InsertParagraphBeforeTable", + 'fontfamily':'FontFamily', 'fontsize':'FontSize', 'paragraph':'Paragraph', 'image':'Image','edittable':'Edit Table', 'edittd':'Edit Td','link':'Link', + 'emotion':'Emotion', 'spechars':'Spechars', 'searchreplace':'SearchReplace', 'map':'BaiduMap', 'gmap':'GoogleMap', + 'video':'Video', 'help':'Help', 'justifyleft':'JustifyLeft', 'justifyright':'JustifyRight', 'justifycenter':'JustifyCenter', + 'justifyjustify':'Justify', 'forecolor':'FontColor', 'backcolor':'BackColor', 'insertorderedlist':'OL', + 'insertunorderedlist':'UL', 'fullscreen':'FullScreen', 'directionalityltr':'EnterFromLeft', 'directionalityrtl':'EnterFromRight', + 'rowspacingtop':'RowSpacingTop', 'rowspacingbottom':'RowSpacingBottom', 'highlightcode':'Code', 'pagebreak':'PageBreak', 'insertframe':'Iframe', 'imagenone':'Default', + 'imageleft':'ImageLeft', 'imageright':'ImageRight', 'attachment':'Attachment', 'imagecenter':'ImageCenter', 'wordimage':'WordImage', + 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', + 'webapp':'WebAPP', 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', + 'drafts': 'drafts', 'formula':'formula' + }, + 'paragraph':{'p':'Paragraph', 'h1':'Title 1', 'h2':'Title 2', 'h3':'Title 3', 'h4':'Title 4', 'h5':'Title 5', 'h6':'Title 6'}, + 'fontfamily':{ + 'songti':'Sim sun', + 'kaiti':'Sim kai', + 'heiti':'Sim hei', + 'lishu':'Sim li', + 'yahei': 'Microsoft yahei', + 'andaleMono':'Andale mono', + 'arial': 'Arial', + 'arialBlack':'Arial black', + 'comicSansMs':'Comic sans ms', + 'impact':'Impact', + 'timesNewRoman':'Times new roman' + }, + 'ok':"OK", + 'cancel':"Cancel", + 'closeDialog':"closeDialog", + 'tableDrag':"You must import the file uiUtils.js before drag! ", + 'autofloatMsg':"The plugin AutoFloat depends on EditorUI!", + 'anthorMsg':"Link", + 'clearColor':'Clear', + 'standardColor':'Standard color', + 'themeColor':'Theme color', + 'property':'Property', + 'default':'Default', + 'modify':'Modify', + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justify':'Default', + 'clear':'Clear', + 'anchorMsg':'Anchor', + 'delete':'Delete', + 'clickToUpload':"Click to upload", + 'unset':"Language hasn't been set!", + 't_row':'row', + 't_col':'col', + 'more':'More', + 'pasteOpt':'Paste Option', + 'pasteSourceFormat':"Keep Source Formatting", + 'tagFormat':'Keep tag', + 'pasteTextFormat':'Keep Text only', + + //===============dialog i18N======================= + 'image':{ + 'static':{ + 'lang_tab_local':"Local Upload", + 'lang_tab_imgSearch':"Network Pictures", + 'lang_input_dragTip':"Support drag upload", + 'lang_btn_add':"Add" + }, + 'uploadError': 'Upload Error' + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'Choice', + 'lang_input_Tuzki':'Tuzki', + 'lang_input_lvdouwa':'LvDouWa', + 'lang_input_BOBO':'BOBO', + 'lang_input_babyCat':'BabyCat', + 'lang_input_bubble':'Bubble', + 'lang_input_youa':'YouA' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'Address:', + 'lang_input_search':'Search', + 'address':{'value':"Beijing"} + }, + 'searchError':'Unable to locate the address!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'Text:', + 'lang_input_url':'URL:', + 'lang_input_title':'Title:', + 'lang_input_target':'open in new window:' + }, + 'validLink':'Supports only effective when a link is selected', + 'httpPrompt':'The hyperlink you enter should start with "http|https|ftp://"!' + }, + 'map':{ + 'static':{ + 'lang_city':"City", + 'lang_address':"Address", + 'city':{'value':"Beijing"}, + 'lang_search':"Search", + 'lang_dynamicmap':"Dynamic map" + }, + 'cityMsg':"Please enter the city name!", + 'errorMsg':"Can't find the place!" + }, + 'video':{ + 'static':{ + 'lang_tab_insertV':"Video", + 'lang_video_url':" URL ", + 'lang_video_size':"Video Size", + 'lang_videoW':"Width", + 'lang_videoH':"Height", + 'lang_alignment':"Alignment", + 'videoSearchTxt':{'value':"Enter the search keyword!"}, + 'videoType':{'options':["All", "Hot", "Entertainment", "Funny", "Sports", "Science", "variety"]}, + 'videoSearchBtn':{'value':"Search in Baidu"}, + 'videoSearchReset':{'value':"Clear result"} + }, + 'numError':"Please enter the correct Num. e.g 123,400", + 'floatLeft':"Float left", + 'floatRight':"Float right", + 'default':"Default", + 'block':"Display in block", + 'urlError':"The video url format may be wrong!", + 'loading':"  The video is loading, please wait…", + 'clickToSelect':"Click to select", + 'goToSource':'Visit source video ', + 'noVideo':"    Sorry,can't find the video,please try again!" + }, + 'formula':{ + 'static':{ + 'lang_tab_common':'Common', + 'lang_tab_symbol':'Symbol', + 'lang_tab_letter':'Letter' + } + } }; \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/lang/en/images/addimage.png b/Public/statics/umeditor1_2_3/lang/en/images/addimage.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/addimage.png rename to Public/statics/umeditor1_2_3/lang/en/images/addimage.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/alldeletebtnhoverskin.png b/Public/statics/umeditor1_2_3/lang/en/images/alldeletebtnhoverskin.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/alldeletebtnhoverskin.png rename to Public/statics/umeditor1_2_3/lang/en/images/alldeletebtnhoverskin.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/alldeletebtnupskin.png b/Public/statics/umeditor1_2_3/lang/en/images/alldeletebtnupskin.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/alldeletebtnupskin.png rename to Public/statics/umeditor1_2_3/lang/en/images/alldeletebtnupskin.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/background.png b/Public/statics/umeditor1_2_3/lang/en/images/background.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/background.png rename to Public/statics/umeditor1_2_3/lang/en/images/background.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/button.png b/Public/statics/umeditor1_2_3/lang/en/images/button.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/button.png rename to Public/statics/umeditor1_2_3/lang/en/images/button.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/copy.png b/Public/statics/umeditor1_2_3/lang/en/images/copy.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/copy.png rename to Public/statics/umeditor1_2_3/lang/en/images/copy.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/deletedisable.png b/Public/statics/umeditor1_2_3/lang/en/images/deletedisable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/deletedisable.png rename to Public/statics/umeditor1_2_3/lang/en/images/deletedisable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/deleteenable.png b/Public/statics/umeditor1_2_3/lang/en/images/deleteenable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/deleteenable.png rename to Public/statics/umeditor1_2_3/lang/en/images/deleteenable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/imglabel.png b/Public/statics/umeditor1_2_3/lang/en/images/imglabel.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/imglabel.png rename to Public/statics/umeditor1_2_3/lang/en/images/imglabel.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/listbackground.png b/Public/statics/umeditor1_2_3/lang/en/images/listbackground.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/listbackground.png rename to Public/statics/umeditor1_2_3/lang/en/images/listbackground.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/localimage.png b/Public/statics/umeditor1_2_3/lang/en/images/localimage.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/localimage.png rename to Public/statics/umeditor1_2_3/lang/en/images/localimage.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/music.png b/Public/statics/umeditor1_2_3/lang/en/images/music.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/music.png rename to Public/statics/umeditor1_2_3/lang/en/images/music.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/rotateleftdisable.png b/Public/statics/umeditor1_2_3/lang/en/images/rotateleftdisable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/rotateleftdisable.png rename to Public/statics/umeditor1_2_3/lang/en/images/rotateleftdisable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/rotateleftenable.png b/Public/statics/umeditor1_2_3/lang/en/images/rotateleftenable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/rotateleftenable.png rename to Public/statics/umeditor1_2_3/lang/en/images/rotateleftenable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/rotaterightdisable.png b/Public/statics/umeditor1_2_3/lang/en/images/rotaterightdisable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/rotaterightdisable.png rename to Public/statics/umeditor1_2_3/lang/en/images/rotaterightdisable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/rotaterightenable.png b/Public/statics/umeditor1_2_3/lang/en/images/rotaterightenable.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/rotaterightenable.png rename to Public/statics/umeditor1_2_3/lang/en/images/rotaterightenable.png diff --git a/Public/statics/umeditor1_2_2/lang/en/images/upload.png b/Public/statics/umeditor1_2_3/lang/en/images/upload.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/en/images/upload.png rename to Public/statics/umeditor1_2_3/lang/en/images/upload.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/images/copy.png b/Public/statics/umeditor1_2_3/lang/zh-cn/images/copy.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/zh-cn/images/copy.png rename to Public/statics/umeditor1_2_3/lang/zh-cn/images/copy.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/images/imglabel.png b/Public/statics/umeditor1_2_3/lang/zh-cn/images/imglabel.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/zh-cn/images/imglabel.png rename to Public/statics/umeditor1_2_3/lang/zh-cn/images/imglabel.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/images/localimage.png b/Public/statics/umeditor1_2_3/lang/zh-cn/images/localimage.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/zh-cn/images/localimage.png rename to Public/statics/umeditor1_2_3/lang/zh-cn/images/localimage.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/images/music.png b/Public/statics/umeditor1_2_3/lang/zh-cn/images/music.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/zh-cn/images/music.png rename to Public/statics/umeditor1_2_3/lang/zh-cn/images/music.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/images/upload.png b/Public/statics/umeditor1_2_3/lang/zh-cn/images/upload.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/lang/zh-cn/images/upload.png rename to Public/statics/umeditor1_2_3/lang/zh-cn/images/upload.png diff --git a/Public/statics/umeditor1_2_2/lang/zh-cn/zh-cn.js b/Public/statics/umeditor1_2_3/lang/zh-cn/zh-cn.js old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/lang/zh-cn/zh-cn.js rename to Public/statics/umeditor1_2_3/lang/zh-cn/zh-cn.js index ded5cd5..5f4a5e5 --- a/Public/statics/umeditor1_2_2/lang/zh-cn/zh-cn.js +++ b/Public/statics/umeditor1_2_3/lang/zh-cn/zh-cn.js @@ -1,150 +1,150 @@ -/** - * 中文语言包 - */ -UM.I18N['zh-cn'] = { - 'labelMap':{ - 'anchor':'锚点', 'undo':'撤销', 'redo':'重做', 'bold':'加粗', 'indent':'首行缩进', 'snapscreen':'截图', - 'italic':'斜体', 'underline':'下划线', 'strikethrough':'删除线', 'subscript':'下标','fontborder':'字符边框', - 'superscript':'上标', 'formatmatch':'格式刷', 'source':'源代码', 'blockquote':'引用', - 'pasteplain':'纯文本粘贴模式', 'selectall':'全选', 'print':'打印', 'preview':'预览', - 'horizontal':'分隔线', 'removeformat':'清除格式', 'time':'时间', 'date':'日期', - 'unlink':'取消链接', 'insertrow':'前插入行', 'insertcol':'前插入列', 'mergeright':'右合并单元格', 'mergedown':'下合并单元格', - 'deleterow':'删除行', 'deletecol':'删除列', 'splittorows':'拆分成行', 'splittocols':'拆分成列', 'splittocells':'完全拆分单元格', - 'mergecells':'合并多个单元格', 'deletetable':'删除表格', 'cleardoc':'清空文档','insertparagraphbeforetable':"表格前插入行",'insertcode':'代码语言','fontfamily':'字体', 'fontsize':'字号', 'paragraph':'段落格式', 'image':'图片', - 'edittable':'表格属性','edittd':'单元格属性', 'link':'超链接','emotion':'表情', 'spechars':'特殊字符', 'searchreplace':'查询替换', 'map':'百度地图', 'gmap':'Google地图', - 'video':'视频', 'help':'帮助', 'justifyleft':'居左对齐', 'justifyright':'居右对齐', 'justifycenter':'居中对齐', - 'justifyjustify':'两端对齐', 'forecolor':'字体颜色', 'backcolor':'背景色', 'insertorderedlist':'有序列表', - 'insertunorderedlist':'无序列表', 'fullscreen':'全屏', 'directionalityltr':'从左向右输入', 'directionalityrtl':'从右向左输入', - 'rowspacingtop':'段前距', 'rowspacingbottom':'段后距', 'highlightcode':'插入代码', 'pagebreak':'分页', 'insertframe':'插入Iframe', 'imagenone':'默认', - 'imageleft':'左浮动', 'imageright':'右浮动', 'attachment':'附件', 'imagecenter':'居中', 'wordimage':'图片转存', - 'lineheight':'行间距','edittip' :'编辑提示','customstyle':'自定义标题', 'autotypeset':'自动排版', 'webapp':'百度应用', - 'touppercase':'字母大写', 'tolowercase':'字母小写','background':'背景','template':'模板','scrawl':'涂鸦','music':'音乐','inserttable':'插入表格', - 'drafts': '草稿箱', 'formula':'数学公式' - - - }, - 'paragraph':{'p':'段落', 'h1':'标题 1', 'h2':'标题 2', 'h3':'标题 3', 'h4':'标题 4', 'h5':'标题 5', 'h6':'标题 6'}, - 'fontfamily':{ - 'songti':'宋体', - 'kaiti':'楷体', - 'heiti':'黑体', - 'lishu':'隶书', - 'yahei':'微软雅黑', - 'andaleMono':'andale mono', - 'arial': 'arial', - 'arialBlack':'arial black', - 'comicSansMs':'comic sans ms', - 'impact':'impact', - 'timesNewRoman':'times new roman' - }, - 'ok':"确认", - 'cancel':"取消", - 'closeDialog':"关闭对话框", - 'tableDrag':"表格拖动必须引入uiUtils.js文件!", - 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", - 'anthorMsg':"链接", - 'clearColor':'清空颜色', - 'standardColor':'标准颜色', - 'themeColor':'主题颜色', - 'property':'属性', - 'default':'默认', - 'modify':'修改', - 'justifyleft':'左对齐', - 'justifyright':'右对齐', - 'justifycenter':'居中', - 'justify':'默认', - 'clear':'清除', - 'anchorMsg':'锚点', - 'delete':'删除', - 'clickToUpload':"点击上传", - 'unset':'尚未设置语言文件', - 't_row':'行', - 't_col':'列', - 'more':'更多', - 'pasteOpt':'粘贴选项', - 'pasteSourceFormat':"保留源格式", - 'tagFormat':'只保留标签', - 'pasteTextFormat':'只保留文本', - - //===============dialog i18N======================= - 'image':{ - 'static':{ - 'lang_tab_local':"本地上传", - 'lang_tab_imgSearch':"网络图片", - 'lang_input_dragTip':"支持图片拖拽上传", - 'lang_btn_add':"添加" - }, - 'uploadError': '上传出错' - }, - 'emotion':{ - 'static':{ - 'lang_input_choice':'精选', - 'lang_input_Tuzki':'兔斯基', - 'lang_input_BOBO':'BOBO', - 'lang_input_lvdouwa':'绿豆蛙', - 'lang_input_babyCat':'baby猫', - 'lang_input_bubble':'泡泡', - 'lang_input_youa':'有啊' - } - }, - 'gmap':{ - 'static':{ - 'lang_input_address':'地址', - 'lang_input_search':'搜索', - 'address':{'value':"北京"} - }, - 'searchError':'无法定位到该地址!' - }, - 'link':{ - 'static':{ - 'lang_input_text':'文本内容:', - 'lang_input_url':'链接地址:', - 'lang_input_title':'标题:', - 'lang_input_target':'是否在新窗口打开:' - }, - 'validLink':'只支持选中一个链接时生效', - 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' - }, - 'map':{ - 'static':{ - 'lang_city':"城市", - 'lang_address':"地址", - 'city':{'value':"北京"}, - 'lang_search':"搜索", - 'lang_dynamicmap':"插入动态地图" - }, - 'cityMsg':"请选择城市", - 'errorMsg':"抱歉,找不到该位置!" - }, - 'video':{ - 'static':{ - 'lang_tab_insertV':"插入视频", - 'lang_video_url':"视频网址", - 'lang_video_size':"视频尺寸", - 'lang_videoW':"宽度", - 'lang_videoH':"高度", - 'lang_alignment':"对齐方式", - 'videoSearchTxt':{'value':"请输入搜索关键字!"}, - 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, - 'videoSearchBtn':{'value':"百度一下"}, - 'videoSearchReset':{'value':"清空结果"} - }, - 'numError':"请输入正确的数值,如123,400", - 'floatLeft':"左浮动", - 'floatRight':"右浮动", - 'default':"默认", - 'block':"独占一行", - 'urlError':"输入的视频地址有误,请检查后再试!", - 'loading':"  视频加载中,请等待……", - 'clickToSelect':"点击选中", - 'goToSource':'访问源视频', - 'noVideo':"    抱歉,找不到对应的视频,请重试!" - }, - 'formula':{ - 'static':{ - 'lang_tab_common':'常用公式', - 'lang_tab_symbol':'符号', - 'lang_tab_letter':'字母' - } - } +/** + * 中文语言包 + */ +UM.I18N['zh-cn'] = { + 'labelMap':{ + 'anchor':'锚点', 'undo':'撤销', 'redo':'重做', 'bold':'加粗', 'indent':'首行缩进', 'snapscreen':'截图', + 'italic':'斜体', 'underline':'下划线', 'strikethrough':'删除线', 'subscript':'下标','fontborder':'字符边框', + 'superscript':'上标', 'formatmatch':'格式刷', 'source':'源代码', 'blockquote':'引用', + 'pasteplain':'纯文本粘贴模式', 'selectall':'全选', 'print':'打印', 'preview':'预览', + 'horizontal':'分隔线', 'removeformat':'清除格式', 'time':'时间', 'date':'日期', + 'unlink':'取消链接', 'insertrow':'前插入行', 'insertcol':'前插入列', 'mergeright':'右合并单元格', 'mergedown':'下合并单元格', + 'deleterow':'删除行', 'deletecol':'删除列', 'splittorows':'拆分成行', 'splittocols':'拆分成列', 'splittocells':'完全拆分单元格', + 'mergecells':'合并多个单元格', 'deletetable':'删除表格', 'cleardoc':'清空文档','insertparagraphbeforetable':"表格前插入行",'insertcode':'代码语言','fontfamily':'字体', 'fontsize':'字号', 'paragraph':'段落格式', 'image':'图片', + 'edittable':'表格属性','edittd':'单元格属性', 'link':'超链接','emotion':'表情', 'spechars':'特殊字符', 'searchreplace':'查询替换', 'map':'百度地图', 'gmap':'Google地图', + 'video':'视频', 'help':'帮助', 'justifyleft':'居左对齐', 'justifyright':'居右对齐', 'justifycenter':'居中对齐', + 'justifyjustify':'两端对齐', 'forecolor':'字体颜色', 'backcolor':'背景色', 'insertorderedlist':'有序列表', + 'insertunorderedlist':'无序列表', 'fullscreen':'全屏', 'directionalityltr':'从左向右输入', 'directionalityrtl':'从右向左输入', + 'rowspacingtop':'段前距', 'rowspacingbottom':'段后距', 'highlightcode':'插入代码', 'pagebreak':'分页', 'insertframe':'插入Iframe', 'imagenone':'默认', + 'imageleft':'左浮动', 'imageright':'右浮动', 'attachment':'附件', 'imagecenter':'居中', 'wordimage':'图片转存', + 'lineheight':'行间距','edittip' :'编辑提示','customstyle':'自定义标题', 'autotypeset':'自动排版', 'webapp':'百度应用', + 'touppercase':'字母大写', 'tolowercase':'字母小写','background':'背景','template':'模板','scrawl':'涂鸦','music':'音乐','inserttable':'插入表格', + 'drafts': '草稿箱', 'formula':'数学公式' + + + }, + 'paragraph':{'p':'段落', 'h1':'标题 1', 'h2':'标题 2', 'h3':'标题 3', 'h4':'标题 4', 'h5':'标题 5', 'h6':'标题 6'}, + 'fontfamily':{ + 'songti':'宋体', + 'kaiti':'楷体', + 'heiti':'黑体', + 'lishu':'隶书', + 'yahei':'微软雅黑', + 'andaleMono':'andale mono', + 'arial': 'arial', + 'arialBlack':'arial black', + 'comicSansMs':'comic sans ms', + 'impact':'impact', + 'timesNewRoman':'times new roman' + }, + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + 'delete':'删除', + 'clickToUpload':"点击上传", + 'unset':'尚未设置语言文件', + 't_row':'行', + 't_col':'列', + 'more':'更多', + 'pasteOpt':'粘贴选项', + 'pasteSourceFormat':"保留源格式", + 'tagFormat':'只保留标签', + 'pasteTextFormat':'只保留文本', + + //===============dialog i18N======================= + 'image':{ + 'static':{ + 'lang_tab_local':"本地上传", + 'lang_tab_imgSearch':"网络图片", + 'lang_input_dragTip':"支持图片拖拽上传", + 'lang_btn_add':"添加" + }, + 'uploadError': '上传出错' + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'精选', + 'lang_input_Tuzki':'兔斯基', + 'lang_input_BOBO':'BOBO', + 'lang_input_lvdouwa':'绿豆蛙', + 'lang_input_babyCat':'baby猫', + 'lang_input_bubble':'泡泡', + 'lang_input_youa':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{'value':"北京"} + }, + 'searchError':'无法定位到该地址!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'文本内容:', + 'lang_input_url':'链接地址:', + 'lang_input_title':'标题:', + 'lang_input_target':'是否在新窗口打开:' + }, + 'validLink':'只支持选中一个链接时生效', + 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' + }, + 'map':{ + 'static':{ + 'lang_city':"城市", + 'lang_address':"地址", + 'city':{'value':"北京"}, + 'lang_search':"搜索", + 'lang_dynamicmap':"插入动态地图" + }, + 'cityMsg':"请选择城市", + 'errorMsg':"抱歉,找不到该位置!" + }, + 'video':{ + 'static':{ + 'lang_tab_insertV':"插入视频", + 'lang_video_url':"视频网址", + 'lang_video_size':"视频尺寸", + 'lang_videoW':"宽度", + 'lang_videoH':"高度", + 'lang_alignment':"对齐方式", + 'videoSearchTxt':{'value':"请输入搜索关键字!"}, + 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, + 'videoSearchBtn':{'value':"百度一下"}, + 'videoSearchReset':{'value':"清空结果"} + }, + 'numError':"请输入正确的数值,如123,400", + 'floatLeft':"左浮动", + 'floatRight':"右浮动", + 'default':"默认", + 'block':"独占一行", + 'urlError':"输入的视频地址有误,请检查后再试!", + 'loading':"  视频加载中,请等待……", + 'clickToSelect':"点击选中", + 'goToSource':'访问源视频', + 'noVideo':"    抱歉,找不到对应的视频,请重试!" + }, + 'formula':{ + 'static':{ + 'lang_tab_common':'常用公式', + 'lang_tab_symbol':'符号', + 'lang_tab_letter':'字母' + } + } }; \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/php/Uploader.class.php b/Public/statics/umeditor1_2_3/php/Uploader.class.php old mode 100755 new mode 100644 similarity index 96% rename from Public/statics/umeditor1_2_2/php/Uploader.class.php rename to Public/statics/umeditor1_2_3/php/Uploader.class.php index 65f0979..ad1fa1b --- a/Public/statics/umeditor1_2_2/php/Uploader.class.php +++ b/Public/statics/umeditor1_2_3/php/Uploader.class.php @@ -1,208 +1,208 @@ - "文件大小超出 post_max_size 限制" , - "SIZE" => "文件大小超出网站限制" , - "TYPE" => "不允许的文件类型" , - "DIR" => "目录创建失败" , - "IO" => "输入输出错误" , - "UNKNOWN" => "未知错误" , - "MOVE" => "文件保存时出错", - "DIR_ERROR" => "创建目录失败" - ); - - /** - * 构造函数 - * @param string $fileField 表单名称 - * @param array $config 配置项 - * @param bool $base64 是否解析base64编码,可省略。若开启,则$fileField代表的是base64编码的字符串表单名 - */ - public function __construct( $fileField , $config , $base64 = false ) - { - $this->fileField = $fileField; - $this->config = $config; - $this->stateInfo = $this->stateMap[ 0 ]; - $this->upFile( $base64 ); - } - - /** - * 上传文件的主处理方法 - * @param $base64 - * @return mixed - */ - private function upFile( $base64 ) - { - //处理base64上传 - if ( "base64" == $base64 ) { - $content = $_POST[ $this->fileField ]; - $this->base64ToImage( $content ); - return; - } - - //处理普通上传 - $file = $this->file = $_FILES[ $this->fileField ]; - if ( !$file ) { - $this->stateInfo = $this->getStateInfo( 'POST' ); - return; - } - if ( $this->file[ 'error' ] ) { - $this->stateInfo = $this->getStateInfo( $file[ 'error' ] ); - return; - } - if ( !is_uploaded_file( $file[ 'tmp_name' ] ) ) { - $this->stateInfo = $this->getStateInfo( "UNKNOWN" ); - return; - } - - $this->oriName = $file[ 'name' ]; - $this->fileSize = $file[ 'size' ]; - $this->fileType = $this->getFileExt(); - - if ( !$this->checkSize() ) { - $this->stateInfo = $this->getStateInfo( "SIZE" ); - return; - } - if ( !$this->checkType() ) { - $this->stateInfo = $this->getStateInfo( "TYPE" ); - return; - } - - $folder = $this->getFolder(); - - if ( $folder === false ) { - $this->stateInfo = $this->getStateInfo( "DIR_ERROR" ); - return; - } - - $this->fullName = $folder . '/' . $this->getName(); - - if ( $this->stateInfo == $this->stateMap[ 0 ] ) { - if ( !move_uploaded_file( $file[ "tmp_name" ] , $this->fullName ) ) { - $this->stateInfo = $this->getStateInfo( "MOVE" ); - } - } - } - - /** - * 处理base64编码的图片上传 - * @param $base64Data - * @return mixed - */ - private function base64ToImage( $base64Data ) - { - $img = base64_decode( $base64Data ); - $this->fileName = time() . rand( 1 , 10000 ) . ".png"; - $this->fullName = $this->getFolder() . '/' . $this->fileName; - if ( !file_put_contents( $this->fullName , $img ) ) { - $this->stateInfo = $this->getStateInfo( "IO" ); - return; - } - $this->oriName = ""; - $this->fileSize = strlen( $img ); - $this->fileType = ".png"; - } - - /** - * 获取当前上传成功文件的各项信息 - * @return array - */ - public function getFileInfo() - { - return array( - "originalName" => $this->oriName , - "name" => $this->fileName , - "url" => $this->fullName , - "size" => $this->fileSize , - "type" => $this->fileType , - "state" => $this->stateInfo - ); - } - - /** - * 上传错误检查 - * @param $errCode - * @return string - */ - private function getStateInfo( $errCode ) - { - return !$this->stateMap[ $errCode ] ? $this->stateMap[ "UNKNOWN" ] : $this->stateMap[ $errCode ]; - } - - /** - * 重命名文件 - * @return string - */ - private function getName() - { - return $this->fileName = time() . rand( 1 , 10000 ) . $this->getFileExt(); - } - - /** - * 文件类型检测 - * @return bool - */ - private function checkType() - { - return in_array( $this->getFileExt() , $this->config[ "allowFiles" ] ); - } - - /** - * 文件大小检测 - * @return bool - */ - private function checkSize() - { - return $this->fileSize <= ( $this->config[ "maxSize" ] * 1024 ); - } - - /** - * 获取文件扩展名 - * @return string - */ - private function getFileExt() - { - return strtolower( strrchr( $this->file[ "name" ] , '.' ) ); - } - - /** - * 按照日期自动创建存储文件夹 - * @return string - */ - private function getFolder() - { - $pathStr = $this->config[ "savePath" ]; - if ( strrchr( $pathStr , "/" ) != "/" ) { - $pathStr .= "/"; - } - $pathStr .= date( "Ymd" ); - if ( !file_exists( $pathStr ) ) { - if ( !mkdir( $pathStr , 0777 , true ) ) { - return false; - } - } - return $pathStr; - } + "文件大小超出 post_max_size 限制" , + "SIZE" => "文件大小超出网站限制" , + "TYPE" => "不允许的文件类型" , + "DIR" => "目录创建失败" , + "IO" => "输入输出错误" , + "UNKNOWN" => "未知错误" , + "MOVE" => "文件保存时出错", + "DIR_ERROR" => "创建目录失败" + ); + + /** + * 构造函数 + * @param string $fileField 表单名称 + * @param array $config 配置项 + * @param bool $base64 是否解析base64编码,可省略。若开启,则$fileField代表的是base64编码的字符串表单名 + */ + public function __construct( $fileField , $config , $base64 = false ) + { + $this->fileField = $fileField; + $this->config = $config; + $this->stateInfo = $this->stateMap[ 0 ]; + $this->upFile( $base64 ); + } + + /** + * 上传文件的主处理方法 + * @param $base64 + * @return mixed + */ + private function upFile( $base64 ) + { + //处理base64上传 + if ( "base64" == $base64 ) { + $content = $_POST[ $this->fileField ]; + $this->base64ToImage( $content ); + return; + } + + //处理普通上传 + $file = $this->file = $_FILES[ $this->fileField ]; + if ( !$file ) { + $this->stateInfo = $this->getStateInfo( 'POST' ); + return; + } + if ( $this->file[ 'error' ] ) { + $this->stateInfo = $this->getStateInfo( $file[ 'error' ] ); + return; + } + if ( !is_uploaded_file( $file[ 'tmp_name' ] ) ) { + $this->stateInfo = $this->getStateInfo( "UNKNOWN" ); + return; + } + + $this->oriName = $file[ 'name' ]; + $this->fileSize = $file[ 'size' ]; + $this->fileType = $this->getFileExt(); + + if ( !$this->checkSize() ) { + $this->stateInfo = $this->getStateInfo( "SIZE" ); + return; + } + if ( !$this->checkType() ) { + $this->stateInfo = $this->getStateInfo( "TYPE" ); + return; + } + + $folder = $this->getFolder(); + + if ( $folder === false ) { + $this->stateInfo = $this->getStateInfo( "DIR_ERROR" ); + return; + } + + $this->fullName = $folder . '/' . $this->getName(); + + if ( $this->stateInfo == $this->stateMap[ 0 ] ) { + if ( !move_uploaded_file( $file[ "tmp_name" ] , $this->fullName ) ) { + $this->stateInfo = $this->getStateInfo( "MOVE" ); + } + } + } + + /** + * 处理base64编码的图片上传 + * @param $base64Data + * @return mixed + */ + private function base64ToImage( $base64Data ) + { + $img = base64_decode( $base64Data ); + $this->fileName = time() . rand( 1 , 10000 ) . ".png"; + $this->fullName = $this->getFolder() . '/' . $this->fileName; + if ( !file_put_contents( $this->fullName , $img ) ) { + $this->stateInfo = $this->getStateInfo( "IO" ); + return; + } + $this->oriName = ""; + $this->fileSize = strlen( $img ); + $this->fileType = ".png"; + } + + /** + * 获取当前上传成功文件的各项信息 + * @return array + */ + public function getFileInfo() + { + return array( + "originalName" => $this->oriName , + "name" => $this->fileName , + "url" => $this->fullName , + "size" => $this->fileSize , + "type" => $this->fileType , + "state" => $this->stateInfo + ); + } + + /** + * 上传错误检查 + * @param $errCode + * @return string + */ + private function getStateInfo( $errCode ) + { + return !$this->stateMap[ $errCode ] ? $this->stateMap[ "UNKNOWN" ] : $this->stateMap[ $errCode ]; + } + + /** + * 重命名文件 + * @return string + */ + private function getName() + { + return $this->fileName = time() . rand( 1 , 10000 ) . $this->getFileExt(); + } + + /** + * 文件类型检测 + * @return bool + */ + private function checkType() + { + return in_array( $this->getFileExt() , $this->config[ "allowFiles" ] ); + } + + /** + * 文件大小检测 + * @return bool + */ + private function checkSize() + { + return $this->fileSize <= ( $this->config[ "maxSize" ] * 1024 ); + } + + /** + * 获取文件扩展名 + * @return string + */ + private function getFileExt() + { + return strtolower( strrchr( $this->file[ "name" ] , '.' ) ); + } + + /** + * 按照日期自动创建存储文件夹 + * @return string + */ + private function getFolder() + { + $pathStr = $this->config[ "savePath" ]; + if ( strrchr( $pathStr , "/" ) != "/" ) { + $pathStr .= "/"; + } + $pathStr .= date( "Ymd" ); + if ( !file_exists( $pathStr ) ) { + if ( !mkdir( $pathStr , 0777 , true ) ) { + return false; + } + } + return $pathStr; + } } \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/php/getContent.php b/Public/statics/umeditor1_2_3/php/getContent.php old mode 100755 new mode 100644 similarity index 97% rename from Public/statics/umeditor1_2_2/php/getContent.php rename to Public/statics/umeditor1_2_3/php/getContent.php index d5b0fe0..89b1972 --- a/Public/statics/umeditor1_2_2/php/getContent.php +++ b/Public/statics/umeditor1_2_3/php/getContent.php @@ -1,14 +1,14 @@ - - - - -".htmlspecialchars_decode($content).""; + + + + +".htmlspecialchars_decode($content).""; diff --git a/Public/statics/umeditor1_2_2/php/imageUp.php b/Public/statics/umeditor1_2_3/php/imageUp.php old mode 100755 new mode 100644 similarity index 87% rename from Public/statics/umeditor1_2_2/php/imageUp.php rename to Public/statics/umeditor1_2_3/php/imageUp.php index 924c82c..ff408b8 --- a/Public/statics/umeditor1_2_2/php/imageUp.php +++ b/Public/statics/umeditor1_2_3/php/imageUp.php @@ -1,30 +1,29 @@ - "upload/" , //存储文件夹 - "maxSize" => 1000 , //允许的文件最大尺寸,单位KB - "allowFiles" => array( ".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp" ) //允许的文件格式 - ); - //上传文件目录 - $Path = "../../../../Upload/image/umeditor/"; - - //背景保存在临时目录中 - $config[ "savePath" ] = $Path; - $up = new Uploader( "upfile" , $config ); - $type = $_REQUEST['type']; - $callback=$_GET['callback']; - - $info = $up->getFileInfo(); - $info['url']=str_replace($Path, '', $info['url']); - /** - * 返回数据 - */ - if($callback) { - echo ''; - } else { - echo json_encode($info); - } + "upload/" , //存储文件夹 + "maxSize" => 1000 , //允许的文件最大尺寸,单位KB + "allowFiles" => array( ".gif" , ".png" , ".jpg" , ".jpeg" , ".bmp" ) //允许的文件格式 + ); + //上传文件目录 + $Path = "upload/"; + + //背景保存在临时目录中 + $config[ "savePath" ] = $Path; + $up = new Uploader( "upfile" , $config ); + $type = $_REQUEST['type']; + $callback=$_GET['callback']; + + $info = $up->getFileInfo(); + /** + * 返回数据 + */ + if($callback) { + echo ''; + } else { + echo json_encode($info); + } diff --git a/Public/statics/umeditor1_2_2/themes/default/css/umeditor.css b/Public/statics/umeditor1_2_3/themes/default/css/umeditor.css old mode 100755 new mode 100644 similarity index 95% rename from Public/statics/umeditor1_2_2/themes/default/css/umeditor.css rename to Public/statics/umeditor1_2_3/themes/default/css/umeditor.css index c3841b9..3a51c6a --- a/Public/statics/umeditor1_2_2/themes/default/css/umeditor.css +++ b/Public/statics/umeditor1_2_3/themes/default/css/umeditor.css @@ -1,773 +1,773 @@ -.edui-container{ - position: relative; - border: 1px solid #d4d4d4; - box-shadow: 2px 2px 5px #d3d6da; - background-color: #fff; -} -.edui-container .edui-toolbar{ - position: relative; - width:auto; - border-bottom: 1px solid #e1e1e1; - box-shadow: 2px 2px 5px #d3d6da; - background-color: #fafafa; - z-index: 99999; -} -.edui-toolbar .edui-btn-toolbar{ - position: relative; - padding: 5px; -} -.edui-container .edui-editor-body{ - background-color: #fff; -} -.edui-editor-body .edui-body-container{ -} - -.edui-editor-body .edui-body-container p{margin:5px 0;} -.edui-editor-body .edui-body-container{ - border:0; - outline:none; - cursor:text; - padding:0 10px 0; - overflow:auto; - display:block; - word-wrap:break-word; - font-size:16px; - font-family:sans-serif; -} -.edui-editor-body.focus{border:1px solid #5c9dff} -.edui-editor-body table{margin:10px 0 10px;border-collapse:collapse;display:table;} -.edui-editor-body td{padding: 5px 10px;border: 1px solid #DDD;} -.edui-editor-body iframe.mathquill-embedded-latex{ - border: 0px; - padding: 0px; - display: inline; - margin: 0px; - background: none; - vertical-align: middle; - width: 0px; - height: 0px; -} -/*普通按钮*/ -.edui-btn-toolbar .edui-btn{ - position: relative; - display: inline-block; - vertical-align: top; - *display: inline; - *zoom:1; - width:auto; - margin: 0 1px; - padding:1px; - border:none; - background: none; -} -.edui-btn-toolbar .edui-btn .edui-icon{ - width: 20px; - height: 20px; - margin: 0; - padding:0; - background-repeat: no-repeat; - background-image: url(../images/icons.png); - background-image: url(../images/icons.gif) \9; -} - -/*状态反射*/ -.edui-btn-toolbar .edui-btn.edui-hover, -.edui-btn-toolbar .edui-btn.edui-active{ - background-color: #d5e1f2; - padding: 0; - border: 1px solid #a3bde3; - _z-index: 1; -} -.edui-btn-toolbar .edui-btn.edui-disabled{ - opacity: 0.3; - filter: alpha(opacity = 30); -} -.edui-btn-toolbar .edui-btn .edui-icon-source { - background-position:-260px -0px; -} -.edui-btn-toolbar .edui-btn .edui-icon-undo { - background-position: -160px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-redo { - background-position: -100px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-bold{ - background-position: 0 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-italic { - background-position: -60px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-underline { - background-position: -140px 0 -} -.edui-btn-toolbar .edui-btn .edui-icon-strikethrough { - background-position: -120px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-superscript { - background-position: -620px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-subscript { - background-position: -600px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-font, .edui-btn-toolbar .edui-btn .edui-icon-forecolor { - background-position: -720px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-backcolor { - background-position: -760px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-insertorderedlist { - background-position: -80px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-insertunorderedlist { - background-position: -20px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-selectall { - background-position: -400px -20px; -} -.edui-btn-toolbar .edui-btn .edui-icon-cleardoc { - background-position: -520px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-paragraph { - background-position: -140px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-fontfamily { - background-position: -140px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-fontsize { - background-position: -140px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-justifyleft { - background-position: -460px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-justifycenter { - background-position: -420px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-justifyright { - background-position:-480px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-justifyjustify { - background-position: -440px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-link { - background-position: -500px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-unlink { - background-position: -640px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-image { - background-position: -380px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-emotion { - background-position: -60px -20px; -} -.edui-btn-toolbar .edui-btn .edui-icon-video { - background-position: -320px -20px; -} - -.edui-btn-toolbar .edui-btn .edui-icon-map { - background-position: -40px -40px; -} - -.edui-btn-toolbar .edui-btn .edui-icon-gmap { - background-position: -260px -40px; -} -.edui-btn-toolbar .edui-btn .edui-icon-horizontal { - background-position: -360px 0; -} - -.edui-btn-toolbar .edui-btn .edui-icon-print { - background-position: -440px -20px; -} -.edui-btn-toolbar .edui-btn .edui-icon-preview { - background-position: -420px -20px; -} - -.edui-btn-toolbar .edui-btn-fullscreen{ - float:right; -} -.edui-btn-toolbar .edui-btn .edui-icon-fullscreen { - background-position: -100px -20px; -} - -.edui-btn-toolbar .edui-btn .edui-icon-removeformat { - background-position: -580px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-drafts { - background-position: -560px 0; -} -.edui-btn-toolbar .edui-btn .edui-icon-formula { - background-position: -80px -20px; -} -.edui-btn-toolbar .edui-splitbutton{ - position: relative; - display: inline-block ; - vertical-align: top; - *display: inline ; - *zoom:1; - margin:0 2px; -} -.edui-splitbutton .edui-btn{ - margin: 0; -} -.edui-splitbutton .edui-caret{ - position: relative; - display: inline-block ; - vertical-align: top; - *display: inline ; - *zoom:1; - width: 8px; - height: 20px; - background: url(../images/icons.png) -741px 0; - _background: url(../images/icons.gif) -741px 0; -} - -.edui-btn-toolbar .edui-splitbutton, -.edui-btn-toolbar .edui-splitbutton{ - _border: none; -} - -/*状态反射*/ -.edui-btn-toolbar .edui-splitbutton.edui-hover .edui-btn{ - background-color: #d5e1f2; -} - -.edui-btn-toolbar .edui-splitbutton.edui-disabled{ - opacity: 0.3; - filter: alpha(opacity = 30); -} -.edui-btn-toolbar .edui-splitbutton.edui-disabled .edui-caret{ - opacity: 0.3 \0; - filter: alpha(opacity = 30)\0; -} - - -.edui-btn-toolbar .edui-combobox{ - border: 1px solid #CCC; - padding:0; - margin:0 2px; - line-height: 20px; -} -.edui-combobox .edui-button-label{ - position: relative; - display: inline-block; - vertical-align: top; - *display: inline ; - *zoom:1; - width:60px; - height:20px; - line-height: 20px; - padding: 2px; - margin: 0; - font-size: 12px; - text-align: center; - cursor: default; -} -.edui-combobox .edui-button-spacing{ - position: relative; - display: inline-block ; - vertical-align: top; - *display: inline ; - *zoom:1; - height:20px; - margin: 0; - padding:0 3px; -} -.edui-combobox .edui-caret{ - position: relative; - display: inline-block ; - vertical-align: top; - *display: inline ; - *zoom:1; - height:20px; - width: 12px; - margin: 0; - padding: 0; - background: url(../images/icons.png) -741px 0; - _background: url(../images/icons.gif) -741px 0; -} -.edui-btn-toolbar .edui-combobox.edui-disabled{ - opacity: 0.2; - filter: alpha(opacity = 20); -} -.edui-btn-toolbar .edui-combobox.edui-disabled .edui-button-label, -.edui-btn-toolbar .edui-combobox.edui-disabled .edui-caret{ - opacity: 0.2 \0; - filter: alpha(opacity = 20)\0; -} -.edui-combobox-menu{ - position: absolute; - top: 100%; - left: 0; - display: none; - list-style: none; - text-decoration: none; - margin: 0; - padding:5px; - background-color: #ffffff; - border: 1px solid #ccc; - font-size: 12px; - box-shadow: 2px 2px 5px #d3d6da; - min-width: 160px; - _width: 160px; -} - -.edui-combobox-menu .edui-combobox-item { - display: block; - border: 1px solid white; -} - -.edui-combobox-menu .edui-combobox-item-label { - height: 25px; - line-height: 25px; - display: inline-block; - _display: inline; - _zoom: 1; - margin-left: 10px; -} - -.edui-combobox-menu .edui-combobox-item:hover, .edui-combobox-menu .edui-combobox-stack-item:hover, .edui-combobox-menu .edui-combobox-item-hover { - background-color: #d5e1f2; - padding: 0; - border: 1px solid #a3bde3; -} - -.edui-combobox-menu .edui-combobox-item .edui-combobox-icon { - display: inline-block; - *zoom: 1; - *display: inline; - width: 24px; - height: 25px; - background: red; - vertical-align: bottom; - background: url(../images/ok.gif) no-repeat 1000px 1000px; -} - -.edui-combobox-menu .edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - - -.edui-combobox-menu .edui-combobox-item-separator { - min-width: 160px; - height: 1px; - line-height: 1px; - overflow: hidden; - background: #d3d3d3; - margin: 5px 0; - *margin-top: -8px; -} - -/* 字体样式校正 */ - -.edui-combobox-fontsize .edui-combobox-item-0.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - -.edui-combobox-fontsize .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - -.edui-combobox-fontsize .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - -.edui-combobox-fontsize .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - -/* 24 */ -.edui-combobox-fontsize .edui-combobox-item-4 .edui-combobox-item-label { - height: 27px; - line-height: 27px; -} - -.edui-combobox-fontsize .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 5px; -} - -/* 32 */ -.edui-combobox-fontsize .edui-combobox-item-5 .edui-combobox-item-label { - height: 31px; - line-height: 31px; -} - -.edui-combobox-fontsize .edui-combobox-item-5.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 4px; -} - - -/* 48 */ -.edui-combobox-fontsize .edui-combobox-item-6 .edui-combobox-item-label { - height: 47px; - line-height: 47px; -} - -/*.edui-combobox-fontsize .edui-combobox-item-6 .edui-combobox-icon {*/ - /*height: 25px;*/ - /*margin-bottom: 11px;*/ -/*}*/ - -/*.edui-combobox-fontsize .edui-combobox-item-6.edui-combobox-checked .edui-combobox-icon {*/ - /*background-position: 10px 7px;*/ -/*}*/ - - -/* 段落样式校正 */ -/* h1 */ -.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-item-label { - font-size: 32px; - height: 36px; - line-height: 36px; -} - -.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-icon { - height: 25px; - margin-bottom: 5px; -} - -.edui-combobox-paragraph .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 7px; -} - -/* h2 */ -.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-item-label { - font-size: 28px; - height: 27px; - line-height: 27px; -} - -.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-icon { - margin-bottom: 5px; -} - -.edui-combobox-paragraph .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 10px; -} - -/* h3 */ -.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-item-label { - font-size: 24px; - height: 25px; - line-height: 25px; -} - -.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-icon { - height: 25px; - margin-bottom: 5px; -} - -.edui-combobox-paragraph .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 11px; -} - -/* h4 */ -.edui-combobox-paragraph .edui-combobox-item-4 .edui-combobox-item-label { - font-size: 18px; - height: 25px; - line-height: 25px; -} - -.edui-combobox-paragraph .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon { - background-position: 10px 6px; -} - -/* h5 */ -.edui-combobox-paragraph .edui-combobox-item-5 .edui-combobox-item-label { - font-size: 16px; -} - -/* h6 */ -.edui-combobox-paragraph .edui-combobox-item-6 .edui-combobox-item-label { - font-size: 12px; -} -.edui-modal { - position: fixed; - _position: absolute; - top: 10%; - left: 50%; - border: 1px solid #acacac; - box-shadow: 2px 2px 5px #d3d6da; - background-color: #ffffff; - outline: 0; -} -.edui-modal-header { - padding: 5px 10px; - border-bottom: 1px solid #eee; -} -.edui-modal-header .edui-close { - float: right; - width:20px; - height:20px; - margin-top: 2px; - padding: 1px; - border: 0; - background: url("../images/close.png") no-repeat center center; - cursor: pointer; -} -.edui-modal-header .edui-close.edui-hover { - background-color: #d5e1f2; - padding:0; - border: 1px solid #a3bde3; -} -.edui-modal-header .edui-title { - margin: 0; - line-height: 25px; - font-size: 20px; -} -.edui-modal-body { - position: relative; - max-height: 400px; - font-size: 12px; - overflow-y: auto; -} -.edui-modal-footer { - float: right; - padding: 5px 15px 15px; - overflow: hidden; -} -.edui-modal-footer .edui-btn { - float: left; - height: 24px; - width: 96px; - margin: 0 10px; - background-color: #ffffff; - padding: 0; - border: 1px solid #ababab; - font-size: 12px; - line-height: 24px; - text-align: center; - cursor: pointer; -} -.edui-modal-footer .edui-btn.edui-hover{ - background-color: #d5e1f2; - border: 1px solid #a3bde3; -} -.edui-modal-backdrop{ - opacity: 0.5; - filter: alpha(opacity=50); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #c6c6c6; -} - -.edui-modal .edui-modal-tip { - color: red; - position: absolute; - bottom: 10px; - left: 10px; - height: 30px; - line-height: 30px; - display: none; -} -/*图片上传*/ -.edui-dialog-image-body { - width: 700px; - height: 400px; -} -/*插入视频*/ -.edui-dialog-video-body{ - width: 600px; - height: 350px; -} -/*谷歌地图*/ -.edui-dialog-gmap-body{ - width:550px; - height: 400px; -} - -/*百度地图*/ -.edui-dialog-map-body{ - width:580px; - height: 400px; -} - -/*链接*/ -.edui-dialog-link-body{ - width:400px; - height:200px; -} -.edui-popup{ - display: none; - background: url('../images/pop-bg.png') repeat #fff; - padding: 2px; -} -.edui-popup .edui-popup-body{ - border: 1px solid #bfbfbf; - background-color: #fff; -} -.edui-popup .edui-popup-caret{ - width: 21px; - height: 11px; -} -.edui-popup .edui-popup-caret.up{ - background:url('../images/caret.png') no-repeat 0 0; -} -.edui-popup .edui-popup-caret.down{ - background:url('../images/caret.png') no-repeat 0 0; -} - - -.edui-tab-nav { - margin: 0; - padding:0; - border-bottom: 1px solid #ddd; - list-style: none; - height:30px; -} -.edui-tab-nav .edui-tab-item { - float:left; - margin-bottom: -1px; - margin-top: 1px; - margin-top: 0\9; -} -.edui-tab-nav .edui-tab-item .edui-tab-text{ - display: block; - padding:8px 12px; - border: 1px solid transparent; - color: #0088cc; - text-decoration: none; - outline: 0; - _border:1px solid #fff ; - cursor: pointer; -} -.edui-tab-nav .edui-tab-item .edui-tab-text:FOCUS { - outline: none; -} -.edui-tab-nav .edui-tab-item.edui-active .edui-tab-text{ - border: 1px solid #ddd; - border-bottom-color: transparent; - background-color: #fff; - padding:8px 12px; - color: #555555; - cursor: default; -} -.edui-tab-content .edui-tab-pane{ - padding: 1px; - position: relative; - display: none; - background-color: #fff; - clear: both; -} -.edui-tab-content .edui-tab-pane.edui-active{ - display: block; -} - - -.edui-btn-toolbar .edui-tooltip{ - position: absolute; - padding: 5px 0; - display: none; - /*opacity: 0.8;*/ - /*filter: alpha(opacity=80);*/ - z-index: 99999; -} -.edui-tooltip .edui-tooltip-arrow{ - position: absolute; - top: 0; - _top: -2px; - left: 50%; - width: 0; - height: 0; - padding: 0; - font-size:0; - margin-left: -5px; - border-color: transparent; - border-style: dashed dashed solid dashed; - border-bottom-color: #000000; - border-width: 0 5px 5px; - background: transparent; -} -.edui-tooltip .edui-tooltip-inner{ - padding: 6px; - color: #ffffff; - text-align: center; - text-decoration: none; - font-size: 10px; - background-color: #000000; - white-space: nowrap; - line-height: 12px; -} -.edui-splitbutton-color-label { - width: 16px; - height: 3px; - position: absolute; - bottom: 2px; - left: 50%; - margin-left: -8px; - overflow: hidden; - line-height: 3px; -} -.edui-popup .edui-colorpicker { - margin: 10px; - font-size: 12px; -} -.edui-colorpicker .edui-colorpicker-topbar{ - height: 27px; - width: 200px; - overflow: hidden; -} -.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-preview{ - height: 20px; - border: 1px inset black; - margin-left: 1px; - width: 128px; - float: left; -} -.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-nocolor{ - float: right; - margin-right: 1px; - font-size: 12px; - line-height: 14px; - height: 14px; - border: 1px solid #333; - padding: 3px 5px; - cursor: pointer; -} -.edui-colorpicker table{ - border-collapse: collapse; - border-spacing: 2px; -} -.edui-colorpicker tr.edui-colorpicker-firstrow{ - height: 30px; -} -.edui-colorpicker table td{ - padding: 0 2px; -} -.edui-colorpicker table td .edui-colorpicker-colorcell{ - display: block; - text-decoration: none; - color: black; - width: 14px; - height: 14px; - margin: 0; - cursor: pointer; -} -.edui-toolbar .edui-separator{ - width: 2px; - height: 20px; - padding: 1px 2px; - background: url(../images/icons.png) -179px 1px; - background: url(../images/icons.gif) -179px 1px \9; - display: inline-block ; - vertical-align: top; - *display: inline ; - *zoom:1; - border:none; - +.edui-container{ + position: relative; + border: 1px solid #d4d4d4; + box-shadow: 2px 2px 5px #d3d6da; + background-color: #fff; +} +.edui-container .edui-toolbar{ + position: relative; + width:auto; + border-bottom: 1px solid #e1e1e1; + box-shadow: 2px 2px 5px #d3d6da; + background-color: #fafafa; + z-index: 99999; +} +.edui-toolbar .edui-btn-toolbar{ + position: relative; + padding: 5px; +} +.edui-container .edui-editor-body{ + background-color: #fff; +} +.edui-editor-body .edui-body-container{ +} + +.edui-editor-body .edui-body-container p{margin:5px 0;} +.edui-editor-body .edui-body-container{ + border:0; + outline:none; + cursor:text; + padding:0 10px 0; + overflow:auto; + display:block; + word-wrap:break-word; + font-size:16px; + font-family:sans-serif; +} +.edui-editor-body.focus{border:1px solid #5c9dff} +.edui-editor-body table{margin:10px 0 10px;border-collapse:collapse;display:table;} +.edui-editor-body td{padding: 5px 10px;border: 1px solid #DDD;} +.edui-editor-body iframe.mathquill-embedded-latex{ + border: 0px; + padding: 0px; + display: inline; + margin: 0px; + background: none; + vertical-align: middle; + width: 0px; + height: 0px; +} +/*普通按钮*/ +.edui-btn-toolbar .edui-btn{ + position: relative; + display: inline-block; + vertical-align: top; + *display: inline; + *zoom:1; + width:auto; + margin: 0 1px; + padding:1px; + border:none; + background: none; +} +.edui-btn-toolbar .edui-btn .edui-icon{ + width: 20px; + height: 20px; + margin: 0; + padding:0; + background-repeat: no-repeat; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; +} + +/*状态反射*/ +.edui-btn-toolbar .edui-btn.edui-hover, +.edui-btn-toolbar .edui-btn.edui-active{ + background-color: #d5e1f2; + padding: 0; + border: 1px solid #a3bde3; + _z-index: 1; +} +.edui-btn-toolbar .edui-btn.edui-disabled{ + opacity: 0.3; + filter: alpha(opacity = 30); +} +.edui-btn-toolbar .edui-btn .edui-icon-source { + background-position:-260px -0px; +} +.edui-btn-toolbar .edui-btn .edui-icon-undo { + background-position: -160px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-redo { + background-position: -100px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-bold{ + background-position: 0 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-italic { + background-position: -60px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-underline { + background-position: -140px 0 +} +.edui-btn-toolbar .edui-btn .edui-icon-strikethrough { + background-position: -120px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-superscript { + background-position: -620px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-subscript { + background-position: -600px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-font, .edui-btn-toolbar .edui-btn .edui-icon-forecolor { + background-position: -720px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-backcolor { + background-position: -760px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-insertorderedlist { + background-position: -80px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-insertunorderedlist { + background-position: -20px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-selectall { + background-position: -400px -20px; +} +.edui-btn-toolbar .edui-btn .edui-icon-cleardoc { + background-position: -520px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-paragraph { + background-position: -140px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-fontfamily { + background-position: -140px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-fontsize { + background-position: -140px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-justifyleft { + background-position: -460px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-justifycenter { + background-position: -420px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-justifyright { + background-position:-480px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-justifyjustify { + background-position: -440px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-link { + background-position: -500px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-unlink { + background-position: -640px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-image { + background-position: -380px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-emotion { + background-position: -60px -20px; +} +.edui-btn-toolbar .edui-btn .edui-icon-video { + background-position: -320px -20px; +} + +.edui-btn-toolbar .edui-btn .edui-icon-map { + background-position: -40px -40px; +} + +.edui-btn-toolbar .edui-btn .edui-icon-gmap { + background-position: -260px -40px; +} +.edui-btn-toolbar .edui-btn .edui-icon-horizontal { + background-position: -360px 0; +} + +.edui-btn-toolbar .edui-btn .edui-icon-print { + background-position: -440px -20px; +} +.edui-btn-toolbar .edui-btn .edui-icon-preview { + background-position: -420px -20px; +} + +.edui-btn-toolbar .edui-btn-fullscreen{ + float:right; +} +.edui-btn-toolbar .edui-btn .edui-icon-fullscreen { + background-position: -100px -20px; +} + +.edui-btn-toolbar .edui-btn .edui-icon-removeformat { + background-position: -580px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-drafts { + background-position: -560px 0; +} +.edui-btn-toolbar .edui-btn .edui-icon-formula { + background-position: -80px -20px; +} +.edui-btn-toolbar .edui-splitbutton{ + position: relative; + display: inline-block ; + vertical-align: top; + *display: inline ; + *zoom:1; + margin:0 2px; +} +.edui-splitbutton .edui-btn{ + margin: 0; +} +.edui-splitbutton .edui-caret{ + position: relative; + display: inline-block ; + vertical-align: top; + *display: inline ; + *zoom:1; + width: 8px; + height: 20px; + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; +} + +.edui-btn-toolbar .edui-splitbutton, +.edui-btn-toolbar .edui-splitbutton{ + _border: none; +} + +/*状态反射*/ +.edui-btn-toolbar .edui-splitbutton.edui-hover .edui-btn{ + background-color: #d5e1f2; +} + +.edui-btn-toolbar .edui-splitbutton.edui-disabled{ + opacity: 0.3; + filter: alpha(opacity = 30); +} +.edui-btn-toolbar .edui-splitbutton.edui-disabled .edui-caret{ + opacity: 0.3 \0; + filter: alpha(opacity = 30)\0; +} + + +.edui-btn-toolbar .edui-combobox{ + border: 1px solid #CCC; + padding:0; + margin:0 2px; + line-height: 20px; +} +.edui-combobox .edui-button-label{ + position: relative; + display: inline-block; + vertical-align: top; + *display: inline ; + *zoom:1; + width:60px; + height:20px; + line-height: 20px; + padding: 2px; + margin: 0; + font-size: 12px; + text-align: center; + cursor: default; +} +.edui-combobox .edui-button-spacing{ + position: relative; + display: inline-block ; + vertical-align: top; + *display: inline ; + *zoom:1; + height:20px; + margin: 0; + padding:0 3px; +} +.edui-combobox .edui-caret{ + position: relative; + display: inline-block ; + vertical-align: top; + *display: inline ; + *zoom:1; + height:20px; + width: 12px; + margin: 0; + padding: 0; + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; +} +.edui-btn-toolbar .edui-combobox.edui-disabled{ + opacity: 0.2; + filter: alpha(opacity = 20); +} +.edui-btn-toolbar .edui-combobox.edui-disabled .edui-button-label, +.edui-btn-toolbar .edui-combobox.edui-disabled .edui-caret{ + opacity: 0.2 \0; + filter: alpha(opacity = 20)\0; +} +.edui-combobox-menu{ + position: absolute; + top: 100%; + left: 0; + display: none; + list-style: none; + text-decoration: none; + margin: 0; + padding:5px; + background-color: #ffffff; + border: 1px solid #ccc; + font-size: 12px; + box-shadow: 2px 2px 5px #d3d6da; + min-width: 160px; + _width: 160px; +} + +.edui-combobox-menu .edui-combobox-item { + display: block; + border: 1px solid white; +} + +.edui-combobox-menu .edui-combobox-item-label { + height: 25px; + line-height: 25px; + display: inline-block; + _display: inline; + _zoom: 1; + margin-left: 10px; +} + +.edui-combobox-menu .edui-combobox-item:hover, .edui-combobox-menu .edui-combobox-stack-item:hover, .edui-combobox-menu .edui-combobox-item-hover { + background-color: #d5e1f2; + padding: 0; + border: 1px solid #a3bde3; +} + +.edui-combobox-menu .edui-combobox-item .edui-combobox-icon { + display: inline-block; + *zoom: 1; + *display: inline; + width: 24px; + height: 25px; + background: red; + vertical-align: bottom; + background: url(../images/ok.gif) no-repeat 1000px 1000px; +} + +.edui-combobox-menu .edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + + +.edui-combobox-menu .edui-combobox-item-separator { + min-width: 160px; + height: 1px; + line-height: 1px; + overflow: hidden; + background: #d3d3d3; + margin: 5px 0; + *margin-top: -8px; +} + +/* 字体样式校正 */ + +.edui-combobox-fontsize .edui-combobox-item-0.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + +.edui-combobox-fontsize .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + +.edui-combobox-fontsize .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + +.edui-combobox-fontsize .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + +/* 24 */ +.edui-combobox-fontsize .edui-combobox-item-4 .edui-combobox-item-label { + height: 27px; + line-height: 27px; +} + +.edui-combobox-fontsize .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 5px; +} + +/* 32 */ +.edui-combobox-fontsize .edui-combobox-item-5 .edui-combobox-item-label { + height: 31px; + line-height: 31px; +} + +.edui-combobox-fontsize .edui-combobox-item-5.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 4px; +} + + +/* 48 */ +.edui-combobox-fontsize .edui-combobox-item-6 .edui-combobox-item-label { + height: 47px; + line-height: 47px; +} + +/*.edui-combobox-fontsize .edui-combobox-item-6 .edui-combobox-icon {*/ + /*height: 25px;*/ + /*margin-bottom: 11px;*/ +/*}*/ + +/*.edui-combobox-fontsize .edui-combobox-item-6.edui-combobox-checked .edui-combobox-icon {*/ + /*background-position: 10px 7px;*/ +/*}*/ + + +/* 段落样式校正 */ +/* h1 */ +.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-item-label { + font-size: 32px; + height: 36px; + line-height: 36px; +} + +.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-icon { + height: 25px; + margin-bottom: 5px; +} + +.edui-combobox-paragraph .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 7px; +} + +/* h2 */ +.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-item-label { + font-size: 28px; + height: 27px; + line-height: 27px; +} + +.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-icon { + margin-bottom: 5px; +} + +.edui-combobox-paragraph .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 10px; +} + +/* h3 */ +.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-item-label { + font-size: 24px; + height: 25px; + line-height: 25px; +} + +.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-icon { + height: 25px; + margin-bottom: 5px; +} + +.edui-combobox-paragraph .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 11px; +} + +/* h4 */ +.edui-combobox-paragraph .edui-combobox-item-4 .edui-combobox-item-label { + font-size: 18px; + height: 25px; + line-height: 25px; +} + +.edui-combobox-paragraph .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon { + background-position: 10px 6px; +} + +/* h5 */ +.edui-combobox-paragraph .edui-combobox-item-5 .edui-combobox-item-label { + font-size: 16px; +} + +/* h6 */ +.edui-combobox-paragraph .edui-combobox-item-6 .edui-combobox-item-label { + font-size: 12px; +} +.edui-modal { + position: fixed; + _position: absolute; + top: 10%; + left: 50%; + border: 1px solid #acacac; + box-shadow: 2px 2px 5px #d3d6da; + background-color: #ffffff; + outline: 0; +} +.edui-modal-header { + padding: 5px 10px; + border-bottom: 1px solid #eee; +} +.edui-modal-header .edui-close { + float: right; + width:20px; + height:20px; + margin-top: 2px; + padding: 1px; + border: 0; + background: url("../images/close.png") no-repeat center center; + cursor: pointer; +} +.edui-modal-header .edui-close.edui-hover { + background-color: #d5e1f2; + padding:0; + border: 1px solid #a3bde3; +} +.edui-modal-header .edui-title { + margin: 0; + line-height: 25px; + font-size: 20px; +} +.edui-modal-body { + position: relative; + max-height: 400px; + font-size: 12px; + overflow-y: auto; +} +.edui-modal-footer { + float: right; + padding: 5px 15px 15px; + overflow: hidden; +} +.edui-modal-footer .edui-btn { + float: left; + height: 24px; + width: 96px; + margin: 0 10px; + background-color: #ffffff; + padding: 0; + border: 1px solid #ababab; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: pointer; +} +.edui-modal-footer .edui-btn.edui-hover{ + background-color: #d5e1f2; + border: 1px solid #a3bde3; +} +.edui-modal-backdrop{ + opacity: 0.5; + filter: alpha(opacity=50); + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #c6c6c6; +} + +.edui-modal .edui-modal-tip { + color: red; + position: absolute; + bottom: 10px; + left: 10px; + height: 30px; + line-height: 30px; + display: none; +} +/*图片上传*/ +.edui-dialog-image-body { + width: 700px; + height: 400px; +} +/*插入视频*/ +.edui-dialog-video-body{ + width: 600px; + height: 350px; +} +/*谷歌地图*/ +.edui-dialog-gmap-body{ + width:550px; + height: 400px; +} + +/*百度地图*/ +.edui-dialog-map-body{ + width:580px; + height: 400px; +} + +/*链接*/ +.edui-dialog-link-body{ + width:400px; + height:200px; +} +.edui-popup{ + display: none; + background: url('../images/pop-bg.png') repeat #fff; + padding: 2px; +} +.edui-popup .edui-popup-body{ + border: 1px solid #bfbfbf; + background-color: #fff; +} +.edui-popup .edui-popup-caret{ + width: 21px; + height: 11px; +} +.edui-popup .edui-popup-caret.up{ + background:url('../images/caret.png') no-repeat 0 0; +} +.edui-popup .edui-popup-caret.down{ + background:url('../images/caret.png') no-repeat 0 0; +} + + +.edui-tab-nav { + margin: 0; + padding:0; + border-bottom: 1px solid #ddd; + list-style: none; + height:30px; +} +.edui-tab-nav .edui-tab-item { + float:left; + margin-bottom: -1px; + margin-top: 1px; + margin-top: 0\9; +} +.edui-tab-nav .edui-tab-item .edui-tab-text{ + display: block; + padding:8px 12px; + border: 1px solid transparent; + color: #0088cc; + text-decoration: none; + outline: 0; + _border:1px solid #fff ; + cursor: pointer; +} +.edui-tab-nav .edui-tab-item .edui-tab-text:FOCUS { + outline: none; +} +.edui-tab-nav .edui-tab-item.edui-active .edui-tab-text{ + border: 1px solid #ddd; + border-bottom-color: transparent; + background-color: #fff; + padding:8px 12px; + color: #555555; + cursor: default; +} +.edui-tab-content .edui-tab-pane{ + padding: 1px; + position: relative; + display: none; + background-color: #fff; + clear: both; +} +.edui-tab-content .edui-tab-pane.edui-active{ + display: block; +} + + +.edui-btn-toolbar .edui-tooltip{ + position: absolute; + padding: 5px 0; + display: none; + /*opacity: 0.8;*/ + /*filter: alpha(opacity=80);*/ + z-index: 99999; +} +.edui-tooltip .edui-tooltip-arrow{ + position: absolute; + top: 0; + _top: -2px; + left: 50%; + width: 0; + height: 0; + padding: 0; + font-size:0; + margin-left: -5px; + border-color: transparent; + border-style: dashed dashed solid dashed; + border-bottom-color: #000000; + border-width: 0 5px 5px; + background: transparent; +} +.edui-tooltip .edui-tooltip-inner{ + padding: 6px; + color: #ffffff; + text-align: center; + text-decoration: none; + font-size: 10px; + background-color: #000000; + white-space: nowrap; + line-height: 12px; +} +.edui-splitbutton-color-label { + width: 16px; + height: 3px; + position: absolute; + bottom: 2px; + left: 50%; + margin-left: -8px; + overflow: hidden; + line-height: 3px; +} +.edui-popup .edui-colorpicker { + margin: 10px; + font-size: 12px; +} +.edui-colorpicker .edui-colorpicker-topbar{ + height: 27px; + width: 200px; + overflow: hidden; +} +.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-preview{ + height: 20px; + border: 1px inset black; + margin-left: 1px; + width: 128px; + float: left; +} +.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-nocolor{ + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} +.edui-colorpicker table{ + border-collapse: collapse; + border-spacing: 2px; +} +.edui-colorpicker tr.edui-colorpicker-firstrow{ + height: 30px; +} +.edui-colorpicker table td{ + padding: 0 2px; +} +.edui-colorpicker table td .edui-colorpicker-colorcell{ + display: block; + text-decoration: none; + color: black; + width: 14px; + height: 14px; + margin: 0; + cursor: pointer; +} +.edui-toolbar .edui-separator{ + width: 2px; + height: 20px; + padding: 1px 2px; + background: url(../images/icons.png) -179px 1px; + background: url(../images/icons.gif) -179px 1px \9; + display: inline-block ; + vertical-align: top; + *display: inline ; + *zoom:1; + border:none; + } \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/themes/default/css/umeditor.min.css b/Public/statics/umeditor1_2_3/themes/default/css/umeditor.min.css old mode 100755 new mode 100644 similarity index 99% rename from Public/statics/umeditor1_2_2/themes/default/css/umeditor.min.css rename to Public/statics/umeditor1_2_3/themes/default/css/umeditor.min.css index 3267635..6e6e27b --- a/Public/statics/umeditor1_2_2/themes/default/css/umeditor.min.css +++ b/Public/statics/umeditor1_2_3/themes/default/css/umeditor.min.css @@ -1,8 +1,8 @@ -/*! - * UEditor Mini版本 - * version: 1.2.2 - * build: Wed Mar 19 2014 17:14:14 GMT+0800 (中国标准时间) - */ - - +/*! + * UEditor Mini版本 + * version: 1.2.2 + * build: Thu Dec 22 2016 16:33:28 GMT+0800 (CST) + */ + + .edui-container{position:relative;border:1px solid #d4d4d4;box-shadow:2px 2px 5px #d3d6da;background-color:#fff}.edui-container .edui-toolbar{position:relative;width:auto;border-bottom:1px solid #e1e1e1;box-shadow:2px 2px 5px #d3d6da;background-color:#fafafa;z-index:99999}.edui-toolbar .edui-btn-toolbar{position:relative;padding:5px}.edui-container .edui-editor-body{background-color:#fff}.edui-editor-body .edui-body-container{}.edui-editor-body .edui-body-container p{margin:5px 0}.edui-editor-body .edui-body-container{border:0;outline:0;cursor:text;padding:0 10px;overflow:auto;display:block;word-wrap:break-word;font-size:16px;font-family:sans-serif}.edui-editor-body.focus{border:1px solid #5c9dff}.edui-editor-body table{margin:10px 0;border-collapse:collapse;display:table}.edui-editor-body td{padding:5px 10px;border:1px solid #DDD}.edui-editor-body iframe.mathquill-embedded-latex{border:0;padding:0;display:inline;margin:0;background:0 0;vertical-align:middle;width:0;height:0}.edui-btn-toolbar .edui-btn{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;width:auto;margin:0 1px;padding:1px;border:0;background:0 0}.edui-btn-toolbar .edui-btn .edui-icon{width:20px;height:20px;margin:0;padding:0;background-repeat:no-repeat;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-btn-toolbar .edui-btn.edui-hover,.edui-btn-toolbar .edui-btn.edui-active{background-color:#d5e1f2;padding:0;border:1px solid #a3bde3;_z-index:1}.edui-btn-toolbar .edui-btn.edui-disabled{opacity:.3;filter:alpha(opacity=30)}.edui-btn-toolbar .edui-btn .edui-icon-source{background-position:-260px -0px}.edui-btn-toolbar .edui-btn .edui-icon-undo{background-position:-160px 0}.edui-btn-toolbar .edui-btn .edui-icon-redo{background-position:-100px 0}.edui-btn-toolbar .edui-btn .edui-icon-bold{background-position:0 0}.edui-btn-toolbar .edui-btn .edui-icon-italic{background-position:-60px 0}.edui-btn-toolbar .edui-btn .edui-icon-underline{background-position:-140px 0}.edui-btn-toolbar .edui-btn .edui-icon-strikethrough{background-position:-120px 0}.edui-btn-toolbar .edui-btn .edui-icon-superscript{background-position:-620px 0}.edui-btn-toolbar .edui-btn .edui-icon-subscript{background-position:-600px 0}.edui-btn-toolbar .edui-btn .edui-icon-font,.edui-btn-toolbar .edui-btn .edui-icon-forecolor{background-position:-720px 0}.edui-btn-toolbar .edui-btn .edui-icon-backcolor{background-position:-760px 0}.edui-btn-toolbar .edui-btn .edui-icon-insertorderedlist{background-position:-80px 0}.edui-btn-toolbar .edui-btn .edui-icon-insertunorderedlist{background-position:-20px 0}.edui-btn-toolbar .edui-btn .edui-icon-selectall{background-position:-400px -20px}.edui-btn-toolbar .edui-btn .edui-icon-cleardoc{background-position:-520px 0}.edui-btn-toolbar .edui-btn .edui-icon-paragraph{background-position:-140px 0}.edui-btn-toolbar .edui-btn .edui-icon-fontfamily{background-position:-140px 0}.edui-btn-toolbar .edui-btn .edui-icon-fontsize{background-position:-140px 0}.edui-btn-toolbar .edui-btn .edui-icon-justifyleft{background-position:-460px 0}.edui-btn-toolbar .edui-btn .edui-icon-justifycenter{background-position:-420px 0}.edui-btn-toolbar .edui-btn .edui-icon-justifyright{background-position:-480px 0}.edui-btn-toolbar .edui-btn .edui-icon-justifyjustify{background-position:-440px 0}.edui-btn-toolbar .edui-btn .edui-icon-link{background-position:-500px 0}.edui-btn-toolbar .edui-btn .edui-icon-unlink{background-position:-640px 0}.edui-btn-toolbar .edui-btn .edui-icon-image{background-position:-380px 0}.edui-btn-toolbar .edui-btn .edui-icon-emotion{background-position:-60px -20px}.edui-btn-toolbar .edui-btn .edui-icon-video{background-position:-320px -20px}.edui-btn-toolbar .edui-btn .edui-icon-map{background-position:-40px -40px}.edui-btn-toolbar .edui-btn .edui-icon-gmap{background-position:-260px -40px}.edui-btn-toolbar .edui-btn .edui-icon-horizontal{background-position:-360px 0}.edui-btn-toolbar .edui-btn .edui-icon-print{background-position:-440px -20px}.edui-btn-toolbar .edui-btn .edui-icon-preview{background-position:-420px -20px}.edui-btn-toolbar .edui-btn-fullscreen{float:right}.edui-btn-toolbar .edui-btn .edui-icon-fullscreen{background-position:-100px -20px}.edui-btn-toolbar .edui-btn .edui-icon-removeformat{background-position:-580px 0}.edui-btn-toolbar .edui-btn .edui-icon-drafts{background-position:-560px 0}.edui-btn-toolbar .edui-btn .edui-icon-formula{background-position:-80px -20px}.edui-btn-toolbar .edui-splitbutton{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;margin:0 2px}.edui-splitbutton .edui-btn{margin:0}.edui-splitbutton .edui-caret{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;width:8px;height:20px;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-btn-toolbar .edui-splitbutton,.edui-btn-toolbar .edui-splitbutton{_border:0}.edui-btn-toolbar .edui-splitbutton.edui-hover .edui-btn{background-color:#d5e1f2}.edui-btn-toolbar .edui-splitbutton.edui-disabled{opacity:.3;filter:alpha(opacity=30)}.edui-btn-toolbar .edui-splitbutton.edui-disabled .edui-caret{opacity:.3 \0;filter:alpha(opacity=30)\0}.edui-btn-toolbar .edui-combobox{border:1px solid #CCC;padding:0;margin:0 2px;line-height:20px}.edui-combobox .edui-button-label{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;width:60px;height:20px;line-height:20px;padding:2px;margin:0;font-size:12px;text-align:center;cursor:default}.edui-combobox .edui-button-spacing{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;height:20px;margin:0;padding:0 3px}.edui-combobox .edui-caret{position:relative;display:inline-block;vertical-align:top;*display:inline;*zoom:1;height:20px;width:12px;margin:0;padding:0;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-btn-toolbar .edui-combobox.edui-disabled{opacity:.2;filter:alpha(opacity=20)}.edui-btn-toolbar .edui-combobox.edui-disabled .edui-button-label,.edui-btn-toolbar .edui-combobox.edui-disabled .edui-caret{opacity:.2 \0;filter:alpha(opacity=20)\0}.edui-combobox-menu{position:absolute;top:100%;left:0;display:none;list-style:none;text-decoration:none;margin:0;padding:5px;background-color:#fff;border:1px solid #ccc;font-size:12px;box-shadow:2px 2px 5px #d3d6da;min-width:160px;_width:160px}.edui-combobox-menu .edui-combobox-item{display:block;border:1px solid #fff}.edui-combobox-menu .edui-combobox-item-label{height:25px;line-height:25px;display:inline-block;_display:inline;_zoom:1;margin-left:10px}.edui-combobox-menu .edui-combobox-item:hover,.edui-combobox-menu .edui-combobox-stack-item:hover,.edui-combobox-menu .edui-combobox-item-hover{background-color:#d5e1f2;padding:0;border:1px solid #a3bde3}.edui-combobox-menu .edui-combobox-item .edui-combobox-icon{display:inline-block;*zoom:1;*display:inline;width:24px;height:25px;background:red;vertical-align:bottom;background:url(../images/ok.gif) no-repeat 1000px 1000px}.edui-combobox-menu .edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-menu .edui-combobox-item-separator{min-width:160px;height:1px;line-height:1px;overflow:hidden;background:#d3d3d3;margin:5px 0;*margin-top:-8px}.edui-combobox-fontsize .edui-combobox-item-0.edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-fontsize .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-fontsize .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-fontsize .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-fontsize .edui-combobox-item-4 .edui-combobox-item-label{height:27px;line-height:27px}.edui-combobox-fontsize .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon{background-position:10px 5px}.edui-combobox-fontsize .edui-combobox-item-5 .edui-combobox-item-label{height:31px;line-height:31px}.edui-combobox-fontsize .edui-combobox-item-5.edui-combobox-checked .edui-combobox-icon{background-position:10px 4px}.edui-combobox-fontsize .edui-combobox-item-6 .edui-combobox-item-label{height:47px;line-height:47px}.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-item-label{font-size:32px;height:36px;line-height:36px}.edui-combobox-paragraph .edui-combobox-item-1 .edui-combobox-icon{height:25px;margin-bottom:5px}.edui-combobox-paragraph .edui-combobox-item-1.edui-combobox-checked .edui-combobox-icon{background-position:10px 7px}.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-item-label{font-size:28px;height:27px;line-height:27px}.edui-combobox-paragraph .edui-combobox-item-2 .edui-combobox-icon{margin-bottom:5px}.edui-combobox-paragraph .edui-combobox-item-2.edui-combobox-checked .edui-combobox-icon{background-position:10px 10px}.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-item-label{font-size:24px;height:25px;line-height:25px}.edui-combobox-paragraph .edui-combobox-item-3 .edui-combobox-icon{height:25px;margin-bottom:5px}.edui-combobox-paragraph .edui-combobox-item-3.edui-combobox-checked .edui-combobox-icon{background-position:10px 11px}.edui-combobox-paragraph .edui-combobox-item-4 .edui-combobox-item-label{font-size:18px;height:25px;line-height:25px}.edui-combobox-paragraph .edui-combobox-item-4.edui-combobox-checked .edui-combobox-icon{background-position:10px 6px}.edui-combobox-paragraph .edui-combobox-item-5 .edui-combobox-item-label{font-size:16px}.edui-combobox-paragraph .edui-combobox-item-6 .edui-combobox-item-label{font-size:12px}.edui-modal{position:fixed;_position:absolute;top:10%;left:50%;border:1px solid #acacac;box-shadow:2px 2px 5px #d3d6da;background-color:#fff;outline:0}.edui-modal-header{padding:5px 10px;border-bottom:1px solid #eee}.edui-modal-header .edui-close{float:right;width:20px;height:20px;margin-top:2px;padding:1px;border:0;background:url(../images/close.png) no-repeat center center;cursor:pointer}.edui-modal-header .edui-close.edui-hover{background-color:#d5e1f2;padding:0;border:1px solid #a3bde3}.edui-modal-header .edui-title{margin:0;line-height:25px;font-size:20px}.edui-modal-body{position:relative;max-height:400px;font-size:12px;overflow-y:auto}.edui-modal-footer{float:right;padding:5px 15px 15px;overflow:hidden}.edui-modal-footer .edui-btn{float:left;height:24px;width:96px;margin:0 10px;background-color:#fff;padding:0;border:1px solid #ababab;font-size:12px;line-height:24px;text-align:center;cursor:pointer}.edui-modal-footer .edui-btn.edui-hover{background-color:#d5e1f2;border:1px solid #a3bde3}.edui-modal-backdrop{opacity:.5;filter:alpha(opacity=50);position:fixed;top:0;right:0;bottom:0;left:0;background-color:#c6c6c6}.edui-modal .edui-modal-tip{color:red;position:absolute;bottom:10px;left:10px;height:30px;line-height:30px;display:none}.edui-dialog-image-body{width:700px;height:400px}.edui-dialog-video-body{width:600px;height:350px}.edui-dialog-gmap-body{width:550px;height:400px}.edui-dialog-map-body{width:580px;height:400px}.edui-dialog-link-body{width:400px;height:200px}.edui-popup{display:none;background:url(../images/pop-bg.png) repeat #fff;padding:2px}.edui-popup .edui-popup-body{border:1px solid #bfbfbf;background-color:#fff}.edui-popup .edui-popup-caret{width:21px;height:11px}.edui-popup .edui-popup-caret.up{background:url(../images/caret.png) no-repeat 0 0}.edui-popup .edui-popup-caret.down{background:url(../images/caret.png) no-repeat 0 0}.edui-tab-nav{margin:0;padding:0;border-bottom:1px solid #ddd;list-style:none;height:30px}.edui-tab-nav .edui-tab-item{float:left;margin-bottom:-1px;margin-top:1px;margin-top:0\9}.edui-tab-nav .edui-tab-item .edui-tab-text{display:block;padding:8px 12px;border:1px solid transparent;color:#08c;text-decoration:none;outline:0;_border:1px solid #fff;cursor:pointer}.edui-tab-nav .edui-tab-item .edui-tab-text:FOCUS{outline:0}.edui-tab-nav .edui-tab-item.edui-active .edui-tab-text{border:1px solid #ddd;border-bottom-color:transparent;background-color:#fff;padding:8px 12px;color:#555;cursor:default}.edui-tab-content .edui-tab-pane{padding:1px;position:relative;display:none;background-color:#fff;clear:both}.edui-tab-content .edui-tab-pane.edui-active{display:block}.edui-btn-toolbar .edui-tooltip{position:absolute;padding:5px 0;display:none;z-index:99999}.edui-tooltip .edui-tooltip-arrow{position:absolute;top:0;_top:-2px;left:50%;width:0;height:0;padding:0;font-size:0;margin-left:-5px;border-color:transparent;border-style:dashed dashed solid;border-bottom-color:#000;border-width:0 5px 5px;background:transparent}.edui-tooltip .edui-tooltip-inner{padding:6px;color:#fff;text-align:center;text-decoration:none;font-size:10px;background-color:#000;white-space:nowrap;line-height:12px}.edui-splitbutton-color-label{width:16px;height:3px;position:absolute;bottom:2px;left:50%;margin-left:-8px;overflow:hidden;line-height:3px}.edui-popup .edui-colorpicker{margin:10px;font-size:12px}.edui-colorpicker .edui-colorpicker-topbar{height:27px;width:200px;overflow:hidden}.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-colorpicker .edui-colorpicker-topbar .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-colorpicker table{border-collapse:collapse;border-spacing:2px}.edui-colorpicker tr.edui-colorpicker-firstrow{height:30px}.edui-colorpicker table td{padding:0 2px}.edui-colorpicker table td .edui-colorpicker-colorcell{display:block;text-decoration:none;color:#000;width:14px;height:14px;margin:0;cursor:pointer}.edui-toolbar .edui-separator{width:2px;height:20px;padding:1px 2px;background:url(../images/icons.png) -179px 1px;background:url(../images/icons.gif) -179px 1px \9;display:inline-block;vertical-align:top;*display:inline;*zoom:1;border:0} \ No newline at end of file diff --git a/Public/statics/umeditor1_2_2/themes/default/images/caret.png b/Public/statics/umeditor1_2_3/themes/default/images/caret.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/caret.png rename to Public/statics/umeditor1_2_3/themes/default/images/caret.png diff --git a/Public/statics/umeditor1_2_2/themes/default/images/close.png b/Public/statics/umeditor1_2_3/themes/default/images/close.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/close.png rename to Public/statics/umeditor1_2_3/themes/default/images/close.png diff --git a/Public/statics/umeditor1_2_2/themes/default/images/icons.gif b/Public/statics/umeditor1_2_3/themes/default/images/icons.gif old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/icons.gif rename to Public/statics/umeditor1_2_3/themes/default/images/icons.gif diff --git a/Public/statics/umeditor1_2_2/themes/default/images/icons.png b/Public/statics/umeditor1_2_3/themes/default/images/icons.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/icons.png rename to Public/statics/umeditor1_2_3/themes/default/images/icons.png diff --git a/Public/statics/umeditor1_2_2/themes/default/images/ok.gif b/Public/statics/umeditor1_2_3/themes/default/images/ok.gif old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/ok.gif rename to Public/statics/umeditor1_2_3/themes/default/images/ok.gif diff --git a/Public/statics/umeditor1_2_2/themes/default/images/pop-bg.png b/Public/statics/umeditor1_2_3/themes/default/images/pop-bg.png old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/pop-bg.png rename to Public/statics/umeditor1_2_3/themes/default/images/pop-bg.png diff --git a/Public/statics/umeditor1_2_2/themes/default/images/spacer.gif b/Public/statics/umeditor1_2_3/themes/default/images/spacer.gif old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/spacer.gif rename to Public/statics/umeditor1_2_3/themes/default/images/spacer.gif diff --git a/Public/statics/umeditor1_2_2/themes/default/images/videologo.gif b/Public/statics/umeditor1_2_3/themes/default/images/videologo.gif old mode 100755 new mode 100644 similarity index 100% rename from Public/statics/umeditor1_2_2/themes/default/images/videologo.gif rename to Public/statics/umeditor1_2_3/themes/default/images/videologo.gif diff --git a/Public/statics/umeditor1_2_2/third-party/jquery.min.js b/Public/statics/umeditor1_2_3/third-party/jquery.min.js old mode 100755 new mode 100644 similarity index 99% rename from Public/statics/umeditor1_2_2/third-party/jquery.min.js rename to Public/statics/umeditor1_2_3/third-party/jquery.min.js index f4c12ca..da41706 --- a/Public/statics/umeditor1_2_2/third-party/jquery.min.js +++ b/Public/statics/umeditor1_2_3/third-party/jquery.min.js @@ -1,6 +1,6 @@ -/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-1.10.2.min.map -*/ -(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
      ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
      a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
      t
      ",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
      ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t -}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/
      ","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); -u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("').attr('id', id) - .css({ - width:'0px', - height:'0px', - 'overflow':'hidden', - 'float':'left', - 'position':'absolute', - top:'-10000px', - left:'-10000px' - }) - .appendTo(me.$container.find('.edui-dialog-container')); - - var w = window.open('', id, ''), - d = w.document; - d.open(); - d.write('
      '+this.getContent(null,null,true)+'
      '); - d.close(); - }, - notNeedUndo : 1 -}; -///import core -///commands 格式 -///commandsName Paragraph -///commandsTitle 段落格式 -/** - * 段落样式 - * @function - * @name UM.execCommand - * @param {String} cmdName paragraph插入段落执行命令 - * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' - * @param {String} attrs 标签的属性 - * @author zhanyi - */ -UM.plugins['paragraph'] = function() { - var me = this; - me.setOpt('paragraph',{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}); - me.commands['paragraph'] = { - execCommand : function( cmdName, style ) { - return this.document.execCommand('formatBlock',false,'<' + style + '>'); - }, - queryCommandValue : function() { - try{ - var val = this.document.queryCommandValue('formatBlock') - }catch(e){ - } - return val ; - } - }; -}; - -///import core -///import plugins\inserthtml.js -///commands 分割线 -///commandsName Horizontal -///commandsTitle 分隔线 -/** - * 分割线 - * @function - * @name UM.execCommand - * @param {String} cmdName horizontal插入分割线 - */ -UM.plugins['horizontal'] = function(){ - var me = this; - me.commands['horizontal'] = { - execCommand : function( ) { - this.document.execCommand('insertHorizontalRule'); - var rng = me.selection.getRange().txtToElmBoundary(true), - start = rng.startContainer; - if(domUtils.isBody(rng.startContainer)){ - var next = rng.startContainer.childNodes[rng.startOffset]; - if(!next){ - next = $('

      ').appendTo(rng.startContainer).html(browser.ie ? ' ' : '
      ')[0] - } - rng.setStart(next,0).setCursor() - }else{ - - while(dtd.$inline[start.tagName] && start.lastChild === start.firstChild){ - - var parent = start.parentNode; - parent.appendChild(start.firstChild); - parent.removeChild(start); - start = parent; - } - while(dtd.$inline[start.tagName]){ - start = start.parentNode; - } - if(start.childNodes.length == 1 && start.lastChild.nodeName == 'HR'){ - var hr = start.lastChild; - $(hr).insertBefore(start); - rng.setStart(start,0).setCursor(); - }else{ - hr = $('hr',start)[0]; - domUtils.breakParent(hr,start); - var pre = hr.previousSibling; - if(pre && domUtils.isEmptyBlock(pre)){ - $(pre).remove() - } - rng.setStart(hr.nextSibling,0).setCursor(); - } - - } - } - }; - -}; - - -///import core -///commands 清空文档 -///commandsName ClearDoc -///commandsTitle 清空文档 -/** - * - * 清空文档 - * @function - * @name UM.execCommand - * @param {String} cmdName cleardoc清空文档 - */ - -UM.commands['cleardoc'] = { - execCommand : function() { - var me = this, - range = me.selection.getRange(); - me.body.innerHTML = "

      "+(ie ? "" : "
      ")+"

      "; - range.setStart(me.body.firstChild,0).setCursor(false,true); - setTimeout(function(){ - me.fireEvent("clearDoc"); - },0); - - } -}; - - -///import core -///commands 撤销和重做 -///commandsName Undo,Redo -///commandsTitle 撤销,重做 -/** - * @description 回退 - * @author zhanyi - */ - -UM.plugins['undo'] = function () { - var saveSceneTimer; - var me = this, - maxUndoCount = me.options.maxUndoCount || 20, - maxInputCount = me.options.maxInputCount || 20, - fillchar = new RegExp(domUtils.fillChar + '|<\/hr>', 'gi');// ie会产生多余的 - var noNeedFillCharTags = { - ol:1,ul:1,table:1,tbody:1,tr:1,body:1 - }; - var orgState = me.options.autoClearEmptyNode; - function compareAddr(indexA, indexB) { - if (indexA.length != indexB.length) - return 0; - for (var i = 0, l = indexA.length; i < l; i++) { - if (indexA[i] != indexB[i]) - return 0 - } - return 1; - } - - function compareRangeAddress(rngAddrA, rngAddrB) { - if (rngAddrA.collapsed != rngAddrB.collapsed) { - return 0; - } - if (!compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)) { - return 0; - } - return 1; - } - - function UndoManager() { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.undo = function () { - if (this.hasUndo) { - if (!this.list[this.index - 1] && this.list.length == 1) { - this.reset(); - return; - } - while (this.list[this.index].content == this.list[this.index - 1].content) { - this.index--; - if (this.index == 0) { - return this.restore(0); - } - } - this.restore(--this.index); - } - }; - this.redo = function () { - if (this.hasRedo) { - while (this.list[this.index].content == this.list[this.index + 1].content) { - this.index++; - if (this.index == this.list.length - 1) { - return this.restore(this.index); - } - } - this.restore(++this.index); - } - }; - - this.restore = function () { - var me = this.editor; - var scene = this.list[this.index]; - var root = UM.htmlparser(scene.content.replace(fillchar, '')); - me.options.autoClearEmptyNode = false; - me.filterInputRule(root,true); - me.options.autoClearEmptyNode = orgState; - //trace:873 - //去掉展位符 - me.body.innerHTML = root.toHtml(); - me.fireEvent('afterscencerestore'); - //处理undo后空格不展位的问题 - if (browser.ie) { - utils.each(domUtils.getElementsByTagName(me.document,'td th caption p'),function(node){ - if(domUtils.isEmptyNode(node)){ - domUtils.fillNode(me.document, node); - } - }) - } - - try{ - var rng = new dom.Range(me.document,me.body).moveToAddress(scene.address); - if(browser.ie && rng.collapsed && rng.startContainer.nodeType == 1){ - var tmpNode = rng.startContainer.childNodes[rng.startOffset]; - if( !tmpNode || tmpNode.nodeType == 1 && dtd.$empty[tmpNode]){ - rng.insertNode(me.document.createTextNode(' ')).collapse(true); - } - } - rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]); - }catch(e){} - - this.update(); - this.clearKey(); - //不能把自己reset了 - me.fireEvent('reset', true); - }; - - this.getScene = function () { - var me = this.editor; - var rng = me.selection.getRange(), - rngAddress = rng.createAddress(false,true); - me.fireEvent('beforegetscene'); - var root = UM.htmlparser(me.body.innerHTML,true); - me.options.autoClearEmptyNode = false; - me.filterOutputRule(root,true); - me.options.autoClearEmptyNode = orgState; - var cont = root.toHtml(); - browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); - me.fireEvent('aftergetscene'); - return { - address:rngAddress, - content:cont - } - }; - this.save = function (notCompareRange,notSetCursor) { - clearTimeout(saveSceneTimer); - var currentScene = this.getScene(notSetCursor), - lastScene = this.list[this.index]; - //内容相同位置相同不存 - if (lastScene && lastScene.content == currentScene.content && - ( notCompareRange ? 1 : compareRangeAddress(lastScene.address, currentScene.address) ) - ) { - return; - } - this.list = this.list.slice(0, this.index + 1); - this.list.push(currentScene); - //如果大于最大数量了,就把最前的剔除 - if (this.list.length > maxUndoCount) { - this.list.shift(); - } - this.index = this.list.length - 1; - this.clearKey(); - //跟新undo/redo状态 - this.update(); - - }; - this.update = function () { - this.hasRedo = !!this.list[this.index + 1]; - this.hasUndo = !!this.list[this.index - 1]; - }; - this.reset = function () { - this.list = []; - this.index = 0; - this.hasUndo = false; - this.hasRedo = false; - this.clearKey(); - }; - this.clearKey = function () { - keycont = 0; - lastKeyCode = null; - }; - } - - me.undoManger = new UndoManager(); - me.undoManger.editor = me; - function saveScene() { - this.undoManger.save(); - } - - me.addListener('saveScene', function () { - var args = Array.prototype.splice.call(arguments,1); - this.undoManger.save.apply(this.undoManger,args); - }); - - me.addListener('beforeexeccommand', saveScene); - me.addListener('afterexeccommand', saveScene); - - me.addListener('reset', function (type, exclude) { - if (!exclude) { - this.undoManger.reset(); - } - }); - me.commands['redo'] = me.commands['undo'] = { - execCommand:function (cmdName) { - this.undoManger[cmdName](); - }, - queryCommandState:function (cmdName) { - return this.undoManger['has' + (cmdName.toLowerCase() == 'undo' ? 'Undo' : 'Redo')] ? 0 : -1; - }, - notNeedUndo:1 - }; - - var keys = { - // /*Backspace*/ 8:1, /*Delete*/ 46:1, - /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1, - 37:1, 38:1, 39:1, 40:1 - - }, - keycont = 0, - lastKeyCode; - //输入法状态下不计算字符数 - var inputType = false; - me.addListener('ready', function () { - $(this.body).on('compositionstart', function () { - inputType = true; - }).on('compositionend', function () { - inputType = false; - }) - }); - //快捷键 - me.addshortcutkey({ - "Undo":"ctrl+90", //undo - "Redo":"ctrl+89,shift+ctrl+z" //redo - - }); - var isCollapsed = true; - me.addListener('keydown', function (type, evt) { - - var me = this; - var keyCode = evt.keyCode || evt.which; - if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { - if (inputType) - return; - - if(!me.selection.getRange().collapsed){ - me.undoManger.save(false,true); - isCollapsed = false; - return; - } - if (me.undoManger.list.length == 0) { - me.undoManger.save(true); - } - clearTimeout(saveSceneTimer); - function save(cont){ - - if (cont.selection.getRange().collapsed) - cont.fireEvent('contentchange'); - cont.undoManger.save(false,true); - cont.fireEvent('selectionchange'); - } - saveSceneTimer = setTimeout(function(){ - if(inputType){ - var interalTimer = setInterval(function(){ - if(!inputType){ - save(me); - clearInterval(interalTimer) - } - },300) - return; - } - save(me); - },200); - - lastKeyCode = keyCode; - keycont++; - if (keycont >= maxInputCount ) { - save(me) - } - } - }); - me.addListener('keyup', function (type, evt) { - var keyCode = evt.keyCode || evt.which; - if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { - if (inputType) - return; - if(!isCollapsed){ - this.undoManger.save(false,true); - isCollapsed = true; - } - } - }); - -}; - -///import core -///import plugins/inserthtml.js -///import plugins/undo.js -///import plugins/serialize.js -///commands 粘贴 -///commandsName PastePlain -///commandsTitle 纯文本粘贴模式 -/** - * @description 粘贴 - * @author zhanyi - */ -UM.plugins['paste'] = function () { - function getClipboardData(callback) { - var doc = this.document; - if (doc.getElementById('baidu_pastebin')) { - return; - } - var range = this.selection.getRange(), - bk = range.createBookmark(), - //创建剪贴的容器div - pastebin = doc.createElement('div'); - pastebin.id = 'baidu_pastebin'; - // Safari 要求div必须有内容,才能粘贴内容进来 - browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar)); - this.body.appendChild(pastebin); - //trace:717 隐藏的span不能得到top - //bk.start.innerHTML = ' '; - bk.start.style.display = ''; - - pastebin.style.cssText = "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + - //要在现在光标平行的位置加入,否则会出现跳动的问题 - $(bk.start).position().top + 'px'; - - range.selectNodeContents(pastebin).select(true); - - setTimeout(function () { - if (browser.webkit) { - for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) { - if (domUtils.isEmptyNode(pi)) { - domUtils.remove(pi); - } else { - pastebin = pi; - break; - } - } - } - try { - pastebin.parentNode.removeChild(pastebin); - } catch (e) { - } - range.moveToBookmark(bk).select(true); - callback(pastebin); - }, 0); - } - - var me = this; - - - function filter(div) { - var html; - if (div.firstChild) { - //去掉cut中添加的边界值 - var nodes = domUtils.getElementsByTagName(div, 'span'); - for (var i = 0, ni; ni = nodes[i++];) { - if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') { - domUtils.remove(ni); - } - } - - if (browser.webkit) { - - var brs = div.querySelectorAll('div br'); - for (var i = 0, bi; bi = brs[i++];) { - var pN = bi.parentNode; - if (pN.tagName == 'DIV' && pN.childNodes.length == 1) { - pN.innerHTML = '


      '; - domUtils.remove(pN); - } - } - var divs = div.querySelectorAll('#baidu_pastebin'); - for (var i = 0, di; di = divs[i++];) { - var tmpP = me.document.createElement('p'); - di.parentNode.insertBefore(tmpP, di); - while (di.firstChild) { - tmpP.appendChild(di.firstChild); - } - domUtils.remove(di); - } - - var metas = div.querySelectorAll('meta'); - for (var i = 0, ci; ci = metas[i++];) { - domUtils.remove(ci); - } - - var brs = div.querySelectorAll('br'); - for (i = 0; ci = brs[i++];) { - if (/^apple-/i.test(ci.className)) { - domUtils.remove(ci); - } - } - } - if (browser.gecko) { - var dirtyNodes = div.querySelectorAll('[_moz_dirty]'); - for (i = 0; ci = dirtyNodes[i++];) { - ci.removeAttribute('_moz_dirty'); - } - } - if (!browser.ie) { - var spans = div.querySelectorAll('span.Apple-style-span'); - for (var i = 0, ci; ci = spans[i++];) { - domUtils.remove(ci, true); - } - } - - //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 - html = div.innerHTML;//.replace(/>(?:(\s| )*?)<'); - - //过滤word粘贴过来的冗余属性 - html = UM.filterWord(html); - //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 - var root = UM.htmlparser(html); - //如果给了过滤规则就先进行过滤 - if (me.options.filterRules) { - UM.filterNode(root, me.options.filterRules); - } - //执行默认的处理 - me.filterInputRule(root); - //针对chrome的处理 - if (browser.webkit) { - var br = root.lastChild(); - if (br && br.type == 'element' && br.tagName == 'br') { - root.removeChild(br) - } - utils.each(me.body.querySelectorAll('div'), function (node) { - if (domUtils.isEmptyBlock(node)) { - domUtils.remove(node) - } - }) - } - html = {'html': root.toHtml()}; - me.fireEvent('beforepaste', html, root); - //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 - if(!html.html){ - return; - } - - me.execCommand('insertHtml', html.html, true); - me.fireEvent("afterpaste", html); - } - } - - - me.addListener('ready', function () { - $(me.body).on( 'cut', function () { - var range = me.selection.getRange(); - if (!range.collapsed && me.undoManger) { - me.undoManger.save(); - } - }).on(browser.ie || browser.opera ? 'keydown' : 'paste', function (e) { - //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 - if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) { - return; - } - getClipboardData.call(me, function (div) { - filter(div); - }); - }); - - }); -}; - - -///import core -///commands 有序列表,无序列表 -///commandsName InsertOrderedList,InsertUnorderedList -///commandsTitle 有序列表,无序列表 -/** - * 有序列表 - * @function - * @name UM.execCommand - * @param {String} cmdName insertorderlist插入有序列表 - * @param {String} style 值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman - * @author zhanyi - */ -/** - * 无序链接 - * @function - * @name UM.execCommand - * @param {String} cmdName insertunorderlist插入无序列表 - * * @param {String} style 值为:circle,disc,square - * @author zhanyi - */ - -UM.plugins['list'] = function () { - var me = this; - - me.setOpt( { - 'insertorderedlist':{ - 'decimal':'', - 'lower-alpha':'', - 'lower-roman':'', - 'upper-alpha':'', - 'upper-roman':'' - }, - 'insertunorderedlist':{ - 'circle':'', - 'disc':'', - 'square':'' - } - } ); - - this.addInputRule(function(root){ - utils.each(root.getNodesByTagName('li'), function (node) { - if(node.children.length == 0){ - node.parentNode.removeChild(node); - } - }) - }); - me.commands['insertorderedlist'] = - me.commands['insertunorderedlist'] = { - execCommand:function (cmdName) { - this.document.execCommand(cmdName); - var rng = this.selection.getRange(), - bk = rng.createBookmark(true); - - this.$body.find('ol,ul').each(function(i,n){ - var parent = n.parentNode; - if(parent.tagName == 'P' && parent.lastChild === parent.firstChild){ - $(n).children().each(function(j,li){ - var p = parent.cloneNode(false); - $(p).append(li.innerHTML); - $(li).html('').append(p); - }); - $(n).insertBefore(parent); - $(parent).remove(); - } - - if(dtd.$inline[parent.tagName]){ - if(parent.tagName == 'SPAN'){ - - $(n).children().each(function(k,li){ - var span = parent.cloneNode(false); - if(li.firstChild.nodeName != 'P'){ - - while(li.firstChild){ - span.appendChild(li.firstChild) - }; - $('

      ').appendTo(li).append(span); - }else{ - while(li.firstChild){ - span.appendChild(li.firstChild) - }; - $(li.firstChild).append(span); - } - }) - - } - domUtils.remove(parent,true) - } - }); - - - - - rng.moveToBookmark(bk).select(); - return true; - }, - queryCommandState:function (cmdName) { - return this.document.queryCommandState(cmdName); - } - }; -}; - - -///import core -///import plugins/serialize.js -///import plugins/undo.js -///commands 查看源码 -///commandsName Source -///commandsTitle 查看源码 -(function (){ - var sourceEditors = { - textarea: function (editor, holder){ - var textarea = holder.ownerDocument.createElement('textarea'); - textarea.style.cssText = 'resize:none;border:0;padding:0;margin:0;overflow-y:auto;outline:0'; - // todo: IE下只有onresize属性可用... 很纠结 - if (browser.ie && browser.version < 8) { - - textarea.style.width = holder.offsetWidth + 'px'; - textarea.style.height = holder.offsetHeight + 'px'; - holder.onresize = function (){ - textarea.style.width = holder.offsetWidth + 'px'; - textarea.style.height = holder.offsetHeight + 'px'; - }; - } - holder.appendChild(textarea); - return { - container : textarea, - setContent: function (content){ - textarea.value = content; - }, - getContent: function (){ - return textarea.value; - }, - select: function (){ - var range; - if (browser.ie) { - range = textarea.createTextRange(); - range.collapse(true); - range.select(); - } else { - //todo: chrome下无法设置焦点 - textarea.setSelectionRange(0, 0); - textarea.focus(); - } - }, - dispose: function (){ - holder.removeChild(textarea); - // todo - holder.onresize = null; - textarea = null; - holder = null; - } - }; - } - }; - - UM.plugins['source'] = function (){ - var me = this; - var opt = this.options; - var sourceMode = false; - var sourceEditor; - - opt.sourceEditor = 'textarea'; - - me.setOpt({ - sourceEditorFirst:false - }); - function createSourceEditor(holder){ - return sourceEditors.textarea(me, holder); - } - - var bakCssText; - //解决在源码模式下getContent不能得到最新的内容问题 - var oldGetContent = me.getContent, - bakAddress; - - me.commands['source'] = { - execCommand: function (){ - - sourceMode = !sourceMode; - if (sourceMode) { - bakAddress = me.selection.getRange().createAddress(false,true); - me.undoManger && me.undoManger.save(true); - if(browser.gecko){ - me.body.contentEditable = false; - } - -// bakCssText = me.body.style.cssText; - me.body.style.cssText += ';position:absolute;left:-32768px;top:-32768px;'; - - - me.fireEvent('beforegetcontent'); - var root = UM.htmlparser(me.body.innerHTML); - me.filterOutputRule(root); - root.traversal(function (node) { - if (node.type == 'element') { - switch (node.tagName) { - case 'td': - case 'th': - case 'caption': - if(node.children && node.children.length == 1){ - if(node.firstChild().tagName == 'br' ){ - node.removeChild(node.firstChild()) - } - }; - break; - case 'pre': - node.innerText(node.innerText().replace(/ /g,' ')) - - } - } - }); - - me.fireEvent('aftergetcontent'); - - var content = root.toHtml(true); - - sourceEditor = createSourceEditor(me.body.parentNode); - - sourceEditor.setContent(content); - - var getStyleValue=function(attr){ - return parseInt($(me.body).css(attr)); - }; - $(sourceEditor.container).width($(me.body).width()+getStyleValue("padding-left")+getStyleValue("padding-right")) - .height($(me.body).height()); - setTimeout(function (){ - sourceEditor.select(); - }); - //重置getContent,源码模式下取值也能是最新的数据 - me.getContent = function (){ - return sourceEditor.getContent() || '

      ' + (browser.ie ? '' : '
      ')+'

      '; - }; - } else { - me.$body.css({ - 'position':'', - 'left':'', - 'top':'' - }); -// me.body.style.cssText = bakCssText; - var cont = sourceEditor.getContent() || '

      ' + (browser.ie ? '' : '
      ')+'

      '; - //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 - cont = cont.replace(new RegExp('[\\r\\t\\n ]*<\/?(\\w+)\\s*(?:[^>]*)>','g'), function(a,b){ - if(b && !dtd.$inlineWithA[b.toLowerCase()]){ - return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,''); - } - return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,'') - }); - me.setContent(cont); - sourceEditor.dispose(); - sourceEditor = null; - //还原getContent方法 - me.getContent = oldGetContent; - var first = me.body.firstChild; - //trace:1106 都删除空了,下边会报错,所以补充一个p占位 - if(!first){ - me.body.innerHTML = '

      '+(browser.ie?'':'
      ')+'

      '; - } - //要在ifm为显示时ff才能取到selection,否则报错 - //这里不能比较位置了 - me.undoManger && me.undoManger.save(true); - if(browser.gecko){ - me.body.contentEditable = true; - } - try{ - me.selection.getRange().moveToAddress(bakAddress).select(); - }catch(e){} - - } - this.fireEvent('sourcemodechanged', sourceMode); - }, - queryCommandState: function (){ - return sourceMode|0; - }, - notNeedUndo : 1 - }; - var oldQueryCommandState = me.queryCommandState; - - - me.queryCommandState = function (cmdName){ - cmdName = cmdName.toLowerCase(); - if (sourceMode) { - //源码模式下可以开启的命令 - return cmdName in { - 'source' : 1, - 'fullscreen' : 1 - } ? oldQueryCommandState.apply(this, arguments) : -1 - } - return oldQueryCommandState.apply(this, arguments); - }; - - }; - -})(); -///import core -///import plugins/undo.js -///commands 设置回车标签p或br -///commandsName EnterKey -///commandsTitle 设置回车标签p或br -/** - * @description 处理回车 - * @author zhanyi - */ -UM.plugins['enterkey'] = function() { - var hTag, - me = this, - tag = me.options.enterTag; - me.addListener('keyup', function(type, evt) { - - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) { - var range = me.selection.getRange(), - start = range.startContainer, - doSave; - - //修正在h1-h6里边回车后不能嵌套p的问题 - if (!browser.ie) { - - if (/h\d/i.test(hTag)) { - if (browser.gecko) { - var h = domUtils.findParentByTagName(start, [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption','table'], true); - if (!h) { - me.document.execCommand('formatBlock', false, '

      '); - doSave = 1; - } - } else { - //chrome remove div - if (start.nodeType == 1) { - var tmp = me.document.createTextNode(''),div; - range.insertNode(tmp); - div = domUtils.findParentByTagName(tmp, 'div', true); - if (div) { - var p = me.document.createElement('p'); - while (div.firstChild) { - p.appendChild(div.firstChild); - } - div.parentNode.insertBefore(p, div); - domUtils.remove(div); - range.setStartBefore(tmp).setCursor(); - doSave = 1; - } - domUtils.remove(tmp); - - } - } - - if (me.undoManger && doSave) { - me.undoManger.save(); - } - } - //没有站位符,会出现多行的问题 - browser.opera && range.select(); - }else{ - me.fireEvent('saveScene',true,true) - } - } - }); - - me.addListener('keydown', function(type, evt) { - var keyCode = evt.keyCode || evt.which; - if (keyCode == 13) {//回车 - if(me.fireEvent('beforeenterkeydown')){ - domUtils.preventDefault(evt); - return; - } - me.fireEvent('saveScene',true,true); - hTag = ''; - - - var range = me.selection.getRange(); - - if (!range.collapsed) { - //跨td不能删 - var start = range.startContainer, - end = range.endContainer, - startTd = domUtils.findParentByTagName(start, 'td', true), - endTd = domUtils.findParentByTagName(end, 'td', true); - if (startTd && endTd && startTd !== endTd || !startTd && endTd || startTd && !endTd) { - evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false); - return; - } - } - if (tag == 'p') { - - - if (!browser.ie) { - - start = domUtils.findParentByTagName(range.startContainer, ['ol','ul','p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption'], true); - - //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command - //trace:2431 - if (!start && !browser.opera) { - - me.document.execCommand('formatBlock', false, '

      '); - - if (browser.gecko) { - range = me.selection.getRange(); - start = domUtils.findParentByTagName(range.startContainer, 'p', true); - start && domUtils.removeDirtyAttr(start); - } - - - } else { - hTag = start.tagName; - start.tagName.toLowerCase() == 'p' && browser.gecko && domUtils.removeDirtyAttr(start); - } - - } - - } - - } - }); - - browser.ie && me.addListener('setDisabled',function(){ - $(me.body).find('p').each(function(i,p){ - if(domUtils.isEmptyBlock(p)){ - p.innerHTML = ' ' - } - }) - }) -}; - -///import core -///commands 预览 -///commandsName Preview -///commandsTitle 预览 -/** - * 预览 - * @function - * @name UM.execCommand - * @param {String} cmdName preview预览编辑器内容 - */ -UM.commands['preview'] = { - execCommand : function(){ - var w = window.open('', '_blank', ''), - d = w.document, - c = this.getContent(null,null,true), - path = this.getOpt('UMEDITOR_HOME_URL'), - formula = c.indexOf('mathquill-embedded-latex')!=-1 ? - '' + - '' + - '':''; - d.open(); - d.write('' + formula + '

      '+c+'
      '); - d.close(); - }, - notNeedUndo : 1 -}; - -///import core -///commands 加粗,斜体,上标,下标 -///commandsName Bold,Italic,Subscript,Superscript -///commandsTitle 加粗,加斜,下标,上标 -/** - * b u i等基础功能实现 - * @function - * @name UM.execCommands - * @param {String} cmdName bold加粗。italic斜体。subscript上标。superscript下标。 -*/ -UM.plugins['basestyle'] = function(){ - var basestyles = ['bold','underline','superscript','subscript','italic','strikethrough'], - me = this; - //添加快捷键 - me.addshortcutkey({ - "Bold" : "ctrl+66",//^B - "Italic" : "ctrl+73", //^I - "Underline" : "ctrl+shift+85",//^U - "strikeThrough" : 'ctrl+shift+83' //^s - }); - //过滤最后的产出数据 - me.addOutputRule(function(root){ - $.each(root.getNodesByTagName('b i u strike s'),function(i,node){ - switch (node.tagName){ - case 'b': - node.tagName = 'strong'; - break; - case 'i': - node.tagName = 'em'; - break; - case 'u': - node.tagName = 'span'; - node.setStyle('text-decoration','underline'); - break; - case 's': - case 'strike': - node.tagName = 'span'; - node.setStyle('text-decoration','line-through') - } - }); - }); - $.each(basestyles,function(i,cmd){ - me.commands[cmd] = { - execCommand : function( cmdName ) { - var rng = this.selection.getRange(); - if(rng.collapsed && this.queryCommandState(cmdName) != 1){ - var node = this.document.createElement({ - 'bold':'strong', - 'underline':'u', - 'superscript':'sup', - 'subscript':'sub', - 'italic':'em', - 'strikethrough':'strike' - }[cmdName]); - rng.insertNode(node).setStart(node,0).setCursor(false); - return true; - }else{ - return this.document.execCommand(cmdName) - } - - }, - queryCommandState : function(cmdName) { - if(browser.gecko){ - return this.document.queryCommandState(cmdName) - } - var path = this.selection.getStartElementPath(),result = false; - $.each(path,function(i,n){ - switch (cmdName){ - case 'bold': - if(n.nodeName == 'STRONG' || n.nodeName == 'B'){ - result = 1; - return false; - } - break; - case 'underline': - if(n.nodeName == 'U' || n.nodeName == 'SPAN' && $(n).css('text-decoration') == 'underline'){ - result = 1; - return false; - } - break; - case 'superscript': - if(n.nodeName == 'SUP'){ - result = 1; - return false; - } - break; - case 'subscript': - if(n.nodeName == 'SUB'){ - result = 1; - return false; - } - break; - case 'italic': - if(n.nodeName == 'EM' || n.nodeName == 'I'){ - result = 1; - return false; - } - break; - case 'strikethrough': - if(n.nodeName == 'S' || n.nodeName == 'STRIKE' || n.nodeName == 'SPAN' && $(n).css('text-decoration') == 'line-through'){ - result = 1; - return false; - } - break; - } - }) - return result - } - }; - }) -}; - - -///import core -///import plugins/inserthtml.js -///commands 视频 -///commandsName InsertVideo -///commandsTitle 插入视频 -///commandsDialog dialogs\video -UM.plugins['video'] = function (){ - var me =this, - div; - - /** - * 创建插入视频字符窜 - * @param url 视频地址 - * @param width 视频宽度 - * @param height 视频高度 - * @param align 视频对齐 - * @param toEmbed 是否以flash代替显示 - * @param addParagraph 是否需要添加P 标签 - */ - function creatInsertStr(url,width,height,id,align,toEmbed){ - return !toEmbed ? - - '' - - : - ''; - } - - function switchImgAndEmbed(root,img2embed){ - utils.each(root.getNodesByTagName(img2embed ? 'img' : 'embed'),function(node){ - if(node.getAttr('class') == 'edui-faked-video'){ - - var html = creatInsertStr( img2embed ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',img2embed); - node.parentNode.replaceChild(UM.uNode.createElement(html),node) - } - }) - } - - me.addOutputRule(function(root){ - switchImgAndEmbed(root,true) - }); - me.addInputRule(function(root){ - switchImgAndEmbed(root) - }); - - me.commands["insertvideo"] = { - execCommand: function (cmd, videoObjs){ - videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; - var html = [],id = 'tmpVedio'; - for(var i=0,vi,len = videoObjs.length;i - var node = range.startContainer, - tmp, - collapsed = range.collapsed; - while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ - tmp = node.parentNode; - range.setStartBefore(node); - //trace:937 - //更新结束边界 - if(range.startContainer === range.endContainer){ - range.endOffset--; - } - domUtils.remove(node); - node = tmp; - } - - if(!collapsed){ - node = range.endContainer; - while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ - tmp = node.parentNode; - range.setEndBefore(node); - domUtils.remove(node); - - node = tmp; - } - - - } - } - - - - range = this.selection.getRange(); - if(!range.collapsed) { - doRemove( range ); - range.select(); - } - - } - - }; - -}; -/* - * 处理特殊键的兼容性问题 - */ -UM.plugins['keystrokes'] = function() { - var me = this; - var collapsed = true; - me.addListener('keydown', function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng = me.selection.getRange(); - - //处理全选的情况 - if(!rng.collapsed && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && (keyCode >= 65 && keyCode <=90 - || keyCode >= 48 && keyCode <= 57 || - keyCode >= 96 && keyCode <= 111 || { - 13:1, - 8:1, - 46:1 - }[keyCode]) - ){ - - var tmpNode = rng.startContainer; - if(domUtils.isFillChar(tmpNode)){ - rng.setStartBefore(tmpNode) - } - tmpNode = rng.endContainer; - if(domUtils.isFillChar(tmpNode)){ - rng.setEndAfter(tmpNode) - } - rng.txtToElmBoundary(); - //结束边界可能放到了br的前边,要把br包含进来 - // x[xxx]
      - if(rng.endContainer && rng.endContainer.nodeType == 1){ - tmpNode = rng.endContainer.childNodes[rng.endOffset]; - if(tmpNode && domUtils.isBr(tmpNode)){ - rng.setEndAfter(tmpNode); - } - } - if(rng.startOffset == 0){ - tmpNode = rng.startContainer; - if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){ - tmpNode = rng.endContainer; - if(rng.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){ - me.fireEvent('saveScene'); - me.body.innerHTML = '

      '+(browser.ie ? '' : '
      ')+'

      '; - rng.setStart(me.body.firstChild,0).setCursor(false,true); - me._selectionChange(); - return; - } - } - } - } - - //处理backspace - if (keyCode == 8) { - rng = me.selection.getRange(); - collapsed = rng.collapsed; - if(me.fireEvent('delkeydown',evt)){ - return; - } - var start,end; - //避免按两次删除才能生效的问题 - if(rng.collapsed && rng.inFillChar()){ - start = rng.startContainer; - - if(domUtils.isFillChar(start)){ - rng.setStartBefore(start).shrinkBoundary(true).collapse(true); - domUtils.remove(start) - }else{ - start.nodeValue = start.nodeValue.replace(new RegExp('^' + domUtils.fillChar ),''); - rng.startOffset--; - rng.collapse(true).select(true) - } - } - //解决选中control元素不能删除的问题 - if (start = rng.getClosedNode()) { - me.fireEvent('saveScene'); - rng.setStartBefore(start); - domUtils.remove(start); - rng.setCursor(); - me.fireEvent('saveScene'); - domUtils.preventDefault(evt); - return; - } - //阻止在table上的删除 - if (!browser.ie) { - start = domUtils.findParentByTagName(rng.startContainer, 'table', true); - end = domUtils.findParentByTagName(rng.endContainer, 'table', true); - if (start && !end || !start && end || start !== end) { - evt.preventDefault(); - return; - } - } - start = rng.startContainer; - if(rng.collapsed && start.nodeType == 1){ - var currentNode = start.childNodes[rng.startOffset-1]; - if(currentNode && currentNode.nodeType == 1 && currentNode.tagName == 'BR'){ - me.fireEvent('saveScene'); - rng.setStartBefore(currentNode).collapse(true); - domUtils.remove(currentNode); - rng.select(); - me.fireEvent('saveScene'); - } - } - - //trace:3613 - if(browser.chrome){ - if(rng.collapsed){ - - while(rng.startOffset == 0 && !domUtils.isEmptyBlock(rng.startContainer)){ - rng.setStartBefore(rng.startContainer) - } - var pre = rng.startContainer.childNodes[rng.startOffset-1]; - if(pre && pre.nodeName == 'BR'){ - rng.setStartBefore(pre); - me.fireEvent('saveScene'); - $(pre).remove(); - rng.setCursor(); - me.fireEvent('saveScene'); - } - - } - } - } - //trace:1634 - //ff的del键在容器空的时候,也会删除 - if(browser.gecko && keyCode == 46){ - var range = me.selection.getRange(); - if(range.collapsed){ - start = range.startContainer; - if(domUtils.isEmptyBlock(start)){ - var parent = start.parentNode; - while(domUtils.getChildCount(parent) == 1 && !domUtils.isBody(parent)){ - start = parent; - parent = parent.parentNode; - } - if(start === parent.lastChild) - evt.preventDefault(); - return; - } - } - } - }); - me.addListener('keyup', function(type, evt) { - var keyCode = evt.keyCode || evt.which, - rng,me = this; - if(keyCode == 8){ - if(me.fireEvent('delkeyup')){ - return; - } - rng = me.selection.getRange(); - if(rng.collapsed){ - var tmpNode, - autoClearTagName = ['h1','h2','h3','h4','h5','h6']; - if(tmpNode = domUtils.findParentByTagName(rng.startContainer,autoClearTagName,true)){ - if(domUtils.isEmptyBlock(tmpNode)){ - var pre = tmpNode.previousSibling; - if(pre && pre.nodeName != 'TABLE'){ - domUtils.remove(tmpNode); - rng.setStartAtLast(pre).setCursor(false,true); - return; - }else{ - var next = tmpNode.nextSibling; - if(next && next.nodeName != 'TABLE'){ - domUtils.remove(tmpNode); - rng.setStartAtFirst(next).setCursor(false,true); - return; - } - } - } - } - //处理当删除到body时,要重新给p标签展位 - if(domUtils.isBody(rng.startContainer)){ - var tmpNode = domUtils.createElement(me.document,'p',{ - 'innerHTML' : browser.ie ? domUtils.fillChar : '
      ' - }); - rng.insertNode(tmpNode).setStart(tmpNode,0).setCursor(false,true); - } - } - - - //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 - if( !collapsed && (rng.startContainer.nodeType == 3 || rng.startContainer.nodeType == 1 && domUtils.isEmptyBlock(rng.startContainer))){ - if(browser.ie){ - var span = rng.document.createElement('span'); - rng.insertNode(span).setStartBefore(span).collapse(true); - rng.select(); - domUtils.remove(span) - }else{ - rng.select() - } - - } - } - - }) -}; -/** - * 自动保存草稿 - */ -UM.plugins['autosave'] = function() { - - - var me = this, - //无限循环保护 - lastSaveTime = new Date(), - //最小保存间隔时间 - MIN_TIME = 20, - //auto save key - saveKey = null; - - - //默认间隔时间 - me.setOpt('saveInterval', 500); - - //存储媒介封装 - var LocalStorage = UM.LocalStorage = ( function () { - - var storage = window.localStorage || getUserData() || null, - LOCAL_FILE = "localStorage"; - - return { - - saveLocalData: function ( key, data ) { - - if ( storage && data) { - storage.setItem( key, data ); - return true; - } - - return false; - - }, - - getLocalData: function ( key ) { - - if ( storage ) { - return storage.getItem( key ); - } - - return null; - - }, - - removeItem: function ( key ) { - - storage && storage.removeItem( key ); - - } - - }; - - function getUserData () { - - var container = document.createElement( "div" ); - container.style.display = "none"; - - if( !container.addBehavior ) { - return null; - } - - container.addBehavior("#default#userdata"); - - return { - - getItem: function ( key ) { - - var result = null; - - try { - document.body.appendChild( container ); - container.load( LOCAL_FILE ); - result = container.getAttribute( key ); - document.body.removeChild( container ); - } catch ( e ) { - } - - return result; - - }, - - setItem: function ( key, value ) { - - document.body.appendChild( container ); - container.setAttribute( key, value ); - container.save( LOCAL_FILE ); - document.body.removeChild( container ); - - }, -// 暂时没有用到 -// clear: function () { -// -// var expiresTime = new Date(); -// expiresTime.setFullYear( expiresTime.getFullYear() - 1 ); -// document.body.appendChild( container ); -// container.expires = expiresTime.toUTCString(); -// container.save( LOCAL_FILE ); -// document.body.removeChild( container ); -// -// }, - - removeItem: function ( key ) { - - document.body.appendChild( container ); - container.removeAttribute( key ); - container.save( LOCAL_FILE ); - document.body.removeChild( container ); - - } - - }; - - } - - } )(); - - function save ( editor ) { - - var saveData = null; - - if ( new Date() - lastSaveTime < MIN_TIME ) { - return; - } - - if ( !editor.hasContents() ) { - //这里不能调用命令来删除, 会造成事件死循环 - saveKey && LocalStorage.removeItem( saveKey ); - return; - } - - lastSaveTime = new Date(); - - editor._saveFlag = null; - - saveData = me.body.innerHTML; - - if ( editor.fireEvent( "beforeautosave", { - content: saveData - } ) === false ) { - return; - } - - LocalStorage.saveLocalData( saveKey, saveData ); - - editor.fireEvent( "afterautosave", { - content: saveData - } ); - - } - - me.addListener('ready', function(){ - var _suffix = "-drafts-data", - key = null; - - if ( me.key ) { - key = me.key + _suffix; - } else { - key = ( me.container.parentNode.id || 'ue-common' ) + _suffix; - } - - //页面地址+编辑器ID 保持唯一 - saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key; - }); - - me.addListener('contentchange', function(){ - - if ( !saveKey ) { - return; - } - - if ( me._saveFlag ) { - window.clearTimeout( me._saveFlag ); - } - - if ( me.options.saveInterval > 0 ) { - - me._saveFlag = window.setTimeout( function () { - - save( me ); - - }, me.options.saveInterval ); - - } else { - - save(me); - - } - - }) - - - me.commands['clearlocaldata'] = { - execCommand:function (cmd, name) { - if ( saveKey && LocalStorage.getLocalData( saveKey ) ) { - LocalStorage.removeItem( saveKey ) - } - }, - notNeedUndo: true, - ignoreContentChange:true - }; - - me.commands['getlocaldata'] = { - execCommand:function (cmd, name) { - return saveKey ? LocalStorage.getLocalData( saveKey ) || '' : ''; - }, - notNeedUndo: true, - ignoreContentChange:true - }; - - me.commands['drafts'] = { - execCommand:function (cmd, name) { - if ( saveKey ) { - me.body.innerHTML = LocalStorage.getLocalData( saveKey ) || '

      '+(browser.ie ? ' ' : '
      ')+'

      '; - me.focus(true); - } - }, - queryCommandState: function () { - return saveKey ? ( LocalStorage.getLocalData( saveKey ) === null ? -1 : 0 ) : -1; - }, - notNeedUndo: true, - ignoreContentChange:true - } - -}; - -/** - * @description - * 1.拖放文件到编辑区域,自动上传并插入到选区 - * 2.插入粘贴板的图片,自动上传并插入到选区 - * @author Jinqn - * @date 2013-10-14 - */ -UM.plugins['autoupload'] = function () { - - var me = this; - - me.setOpt('pasteImageEnabled', true); - me.setOpt('dropFileEnabled', true); - var sendAndInsertImage = function (file, editor) { - //模拟数据 - var fd = new FormData(); - fd.append(editor.options.imageFieldName || 'upfile', file, file.name || ('blob.' + file.type.substr('image/'.length))); - fd.append('type', 'ajax'); - var xhr = new XMLHttpRequest(); - xhr.open("post", me.options.imageUrl, true); - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - xhr.addEventListener('load', function (e) { - try { - var json = eval('('+e.target.response+')'), - link = json.url, - picLink = me.options.imagePath + link; - editor.execCommand('insertimage', { - src: picLink, - _src: picLink - }); - } catch (er) { - } - }); - xhr.send(fd); - }; - - function getPasteImage(e) { - return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null; - } - - function getDropImage(e) { - return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null; - } - - me.addListener('ready', function () { - if (window.FormData && window.FileReader) { - var autoUploadHandler = function (e) { - var hasImg = false, - items; - //获取粘贴板文件列表或者拖放文件列表 - items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent); - if (items) { - var len = items.length, - file; - while (len--) { - file = items[len]; - if (file.getAsFile) file = file.getAsFile(); - if (file && file.size > 0 && /image\/\w+/i.test(file.type)) { - sendAndInsertImage(file, me); - hasImg = true; - } - } - if (hasImg) return false; - } - - }; - me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler); - me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler); - - //取消拖放图片时出现的文字光标位置提示 - me.$body.on('dragover', function (e) { - if (e.originalEvent.dataTransfer.types[0] == 'Files') { - return false; - } - }); - } - }); - -}; -/** - * 公式插件 - */ -UM.plugins['formula'] = function () { - var me = this; - - function getActiveIframe() { - return me.$body.find('iframe.edui-formula-active')[0] || null; - } - - function blurActiveIframe(){ - var iframe = getActiveIframe(); - iframe && iframe.contentWindow.formula.blur(); - } - - me.addInputRule(function (root) { - $.each(root.getNodesByTagName('span'), function (i, node) { - if (node.hasClass('mathquill-embedded-latex')) { - var firstChild, latex = ''; - while(firstChild = node.firstChild()){ - latex += firstChild.data; - node.removeChild(firstChild); - } - node.tagName = 'iframe'; - node.setAttr({ - 'frameborder': '0', - 'src': me.getOpt('UMEDITOR_HOME_URL') + 'dialogs/formula/formula.html', - 'data-latex': utils.unhtml(latex) - }); - } - }); - }); - me.addOutputRule(function (root) { - $.each(root.getNodesByTagName('iframe'), function (i, node) { - if (node.hasClass('mathquill-embedded-latex')) { - node.tagName = 'span'; - node.appendChild(UM.uNode.createText(node.getAttr('data-latex'))); - node.setAttr({ - 'frameborder': '', - 'src': '', - 'data-latex': '' - }); - } - }); - }); - me.addListener('click', function(){ - blurActiveIframe(); - }); - me.addListener('afterexeccommand', function(type, cmd){ - if(cmd != 'formula') { - blurActiveIframe(); - } - }); - - me.commands['formula'] = { - execCommand: function (cmd, latex) { - var iframe = getActiveIframe(); - if (iframe) { - iframe.contentWindow.formula.insertLatex(latex); - } else { - me.execCommand('inserthtml', '' + latex + ''); - browser.ie && browser.ie9below && setTimeout(function(){ - var rng = me.selection.getRange(), - startContainer = rng.startContainer; - if(startContainer.nodeType == 1 && !startContainer.childNodes[rng.startOffset]){ - rng.insertNode(me.document.createTextNode(' ')); - rng.setCursor() - } - },100) - } - }, - queryCommandState: function (cmd) { - return 0; - }, - queryCommandValue: function (cmd) { - var iframe = getActiveIframe(); - return iframe && iframe.contentWindow.formula.getLatex(); - } - } - -}; - -(function ($) { - //对jquery的扩展 - $.parseTmpl = function parse(str, data) { - var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + 'with(obj||{}){__p.push(\'' + str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g,function (match, code) { - return "'," + code.replace(/\\'/g, "'") + ",'"; - }).replace(/<%([\s\S]+?)%>/g,function (match, code) { - return "');" + code.replace(/\\'/g, "'").replace(/[\r\n\t]/g, ' ') + "__p.push('"; - }).replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/\t/g, '\\t') + "');}return __p.join('');"; - var func = new Function('obj', tmpl); - return data ? func(data) : func; - }; - $.extend2 = function (t, s) { - var a = arguments, - notCover = $.type(a[a.length - 1]) == 'boolean' ? a[a.length - 1] : false, - len = $.type(a[a.length - 1]) == 'boolean' ? a.length - 1 : a.length; - for (var i = 1; i < len; i++) { - var x = a[i]; - for (var k in x) { - if (!notCover || !t.hasOwnProperty(k)) { - t[k] = x[k]; - } - } - } - return t; - }; - - $.IE6 = !!window.ActiveXObject && parseFloat(navigator.userAgent.match(/msie (\d+)/i)[1]) == 6; - - //所有ui的基类 - var _eventHandler = []; - var _widget = function () { - }; - var _prefix = 'edui'; - _widget.prototype = { - on: function (ev, cb) { - this.root().on(ev, $.proxy(cb, this)); - return this; - }, - off: function (ev, cb) { - this.root().off(ev, $.proxy(cb, this)); - return this; - }, - trigger: function (ev, data) { - return this.root().trigger(ev, data) === false ? false : this; - }, - root: function ($el) { - return this._$el || (this._$el = $el); - }, - destroy: function () { - - }, - data: function (key, val) { - if (val !== undefined) { - this.root().data(_prefix + key, val); - return this; - } else { - return this.root().data(_prefix + key) - } - }, - register: function (eventName, $el, fn) { - _eventHandler.push({ - 'evtname': eventName, - '$els': $.isArray($el) ? $el : [$el], - handler: $.proxy(fn, $el) - }) - } - }; - - //从jq实例上拿到绑定的widget实例 - $.fn.edui = function (obj) { - return obj ? this.data('eduiwidget', obj) : this.data('eduiwidget'); - }; - - function _createClass(ClassObj, properties, supperClass) { - ClassObj.prototype = $.extend2( - $.extend({}, properties), - (UM.ui[supperClass] || _widget).prototype, - true - ); - ClassObj.prototype.supper = (UM.ui[supperClass] || _widget).prototype; - //父class的defaultOpt 合并 - if( UM.ui[supperClass] && UM.ui[supperClass].prototype.defaultOpt ) { - - var parentDefaultOptions = UM.ui[supperClass].prototype.defaultOpt, - subDefaultOptions = ClassObj.prototype.defaultOpt; - - ClassObj.prototype.defaultOpt = $.extend( {}, parentDefaultOptions, subDefaultOptions || {} ); - - } - return ClassObj - } - - var _guid = 1; - - function mergeToJQ(ClassObj, className) { - $[_prefix + className] = ClassObj; - $.fn[_prefix + className] = function (opt) { - var result, args = Array.prototype.slice.call(arguments, 1); - - this.each(function (i, el) { - var $this = $(el); - var obj = $this.edui(); - if (!obj) { - ClassObj(!opt || !$.isPlainObject(opt) ? {} : opt, $this); - $this.edui(obj) - } - if ($.type(opt) == 'string') { - if (opt == 'this') { - result = obj; - } else { - result = obj[opt].apply(obj, args); - if (result !== obj && result !== undefined) { - return false; - } - result = null; - } - - } - }); - - return result !== null ? result : this; - } - } - - UM.ui = { - define: function (className, properties, supperClass) { - var ClassObj = UM.ui[className] = _createClass(function (options, $el) { - var _obj = function () { - }; - $.extend(_obj.prototype, ClassObj.prototype, { - guid: className + _guid++, - widgetName: className - } - ); - var obj = new _obj; - if ($.type(options) == 'string') { - obj.init && obj.init({}); - obj.root().edui(obj); - obj.root().find('a').click(function (evt) { - evt.preventDefault() - }); - return obj.root()[_prefix + className].apply(obj.root(), arguments) - } else { - $el && obj.root($el); - obj.init && obj.init(!options || $.isPlainObject(options) ? $.extend2(options || {}, obj.defaultOpt || {}, true) : options); - try{ - obj.root().find('a').click(function (evt) { - evt.preventDefault() - }); - }catch(e){ - } - - return obj.root().edui(obj); - } - - },properties, supperClass); - - mergeToJQ(ClassObj, className); - } - }; - - $(function () { - $(document).on('click mouseup mousedown dblclick mouseover', function (evt) { - $.each(_eventHandler, function (i, obj) { - if (obj.evtname == evt.type) { - $.each(obj.$els, function (i, $el) { - if ($el[0] !== evt.target && !$.contains($el[0], evt.target)) { - obj.handler(evt); - } - }) - } - }) - }) - }) -})(jQuery); -//button 类 -UM.ui.define('button', { - tpl: '<<%if(!texttype){%>div class="edui-btn edui-btn-<%=icon%> <%if(name){%>edui-btn-name-<%=name%><%}%>" unselectable="on" onmousedown="return false" <%}else{%>a class="edui-text-btn"<%}%><% if(title) {%> data-original-title="<%=title%>" <%};%>> ' + - '<% if(icon) {%>
      <% }; %><%if(text) {%><%=text%><%}%>' + - '<%if(caret && text){%><%}%>' + - '<% if(caret) {%><% };%>div<%}else{%>a<%}%>>', - defaultOpt: { - text: '', - title: '', - icon: '', - width: '', - caret: false, - texttype: false, - click: function () { - } - }, - init: function (options) { - var me = this; - - me.root($($.parseTmpl(me.tpl, options))) - .click(function (evt) { - me.wrapclick(options.click, evt) - }); - - me.root().hover(function () { - if(!me.root().hasClass("edui-disabled")){ - me.root().toggleClass('edui-hover') - } - }) - - return me; - }, - wrapclick: function (fn, evt) { - if (!this.disabled()) { - this.root().trigger('wrapclick'); - $.proxy(fn, this, evt)() - } - return this; - }, - label: function (text) { - if (text === undefined) { - return this.root().find('.edui-button-label').text(); - } else { - this.root().find('.edui-button-label').text(text); - return this; - } - }, - disabled: function (state) { - if (state === undefined) { - return this.root().hasClass('edui-disabled') - } - this.root().toggleClass('edui-disabled', state); - if(this.root().hasClass('edui-disabled')){ - this.root().removeClass('edui-hover') - } - return this; - }, - active: function (state) { - if (state === undefined) { - return this.root().hasClass('edui-active') - } - this.root().toggleClass('edui-active', state) - - return this; - }, - mergeWith: function ($obj) { - var me = this; - me.data('$mergeObj', $obj); - $obj.edui().data('$mergeObj', me.root()); - if (!$.contains(document.body, $obj[0])) { - $obj.appendTo(me.root()); - } - me.on('click',function () { - me.wrapclick(function () { - $obj.edui().show(); - }) - }).register('click', me.root(), function (evt) { - $obj.hide() - }); - } -}); -//toolbar 类 -(function () { - UM.ui.define('toolbar', { - tpl: '
      ' - , - init: function () { - var $root = this.root($(this.tpl)); - this.data('$btnToolbar', $root.find('.edui-btn-toolbar')) - }, - appendToBtnmenu : function(data){ - var $cont = this.data('$btnToolbar'); - data = $.isArray(data) ? data : [data]; - $.each(data,function(i,$item){ - $cont.append($item) - }) - } - }); -})(); - -//menu 类 -UM.ui.define('menu',{ - show : function($obj,dir,fnname,topOffset,leftOffset){ - - fnname = fnname || 'position'; - if(this.trigger('beforeshow') === false){ - return; - }else{ - this.root().css($.extend({display:'block'},$obj ? { - top : $obj[fnname]().top + ( dir == 'right' ? 0 : $obj.outerHeight()) - (topOffset || 0), - left : $obj[fnname]().left + (dir == 'right' ? $obj.outerWidth() : 0) - (leftOffset || 0) - }:{})) - this.trigger('aftershow'); - } - }, - hide : function(all){ - var $parentmenu; - if(this.trigger('beforehide') === false){ - return; - } else { - - if($parentmenu = this.root().data('parentmenu')){ - if($parentmenu.data('parentmenu')|| all) - $parentmenu.edui().hide(); - } - this.root().css('display','none'); - this.trigger('afterhide'); - } - }, - attachTo : function($obj){ - var me = this; - if(!$obj.data('$mergeObj')){ - $obj.data('$mergeObj',me.root()); - $obj.on('wrapclick',function(evt){ - me.show() - }); - me.register('click',$obj,function(evt){ - me.hide() - }); - me.data('$mergeObj',$obj) - } - } -}); -//dropmenu 类 -UM.ui.define('dropmenu', { - tmpl: '
        ' + - '<%for(var i=0,ci;ci=data[i++];){%>' + - '<%if(ci.divider){%>
      • <%}else{%>' + - '
      • class="<%= ci.active|| \'\' %> <%=ci.disabled||\'\' %>" <%}%> data-value="<%= ci.value%>">' + - '<%= ci.label%>' + - '
      • <%}%>' + - '<%}%>' + - '
      ', - defaultOpt: { - data: [], - click: function () { - - } - }, - init: function (options) { - var me = this; - var eventName = { - click: 1, - mouseover: 1, - mouseout: 1 - }; - - this.root($($.parseTmpl(this.tmpl, options))).on('click', 'li[class!="edui-disabled edui-divider edui-dropdown-submenu"]',function (evt) { - $.proxy(options.click, me, evt, $(this).data('value'), $(this))() - }).find('li').each(function (i, el) { - var $this = $(this); - if (!$this.hasClass("edui-disabled edui-divider edui-dropdown-submenu")) { - var data = options.data[i]; - $.each(eventName, function (k) { - data[k] && $this[k](function (evt) { - $.proxy(data[k], el)(evt, data, me.root) - }) - }) - } - }) - - }, - disabled: function (cb) { - $('li[class!=edui-divider]', this.root()).each(function () { - var $el = $(this); - if (cb === true) { - $el.addClass('edui-disabled') - } else if ($.isFunction(cb)) { - $el.toggleClass('edui-disabled', cb(li)) - } else { - $el.removeClass('edui-disabled') - } - - }); - }, - val: function (val) { - var currentVal; - $('li[class!="edui-divider edui-disabled edui-dropdown-submenu"]', this.root()).each(function () { - var $el = $(this); - if (val === undefined) { - if ($el.find('em.edui-dropmenu-checked').length) { - currentVal = $el.data('value'); - return false - } - } else { - $el.find('em').toggleClass('edui-dropmenu-checked', $el.data('value') == val) - } - }); - if (val === undefined) { - return currentVal - } - }, - addSubmenu: function (label, menu, index) { - index = index || 0; - - var $list = $('li[class!=edui-divider]', this.root()); - var $node = $('
    • ' + label + '
    • ').append(menu); - - if (index >= 0 && index < $list.length) { - $node.insertBefore($list[index]); - } else if (index < 0) { - $node.insertBefore($list[0]); - } else if (index >= $list.length) { - $node.appendTo($list); - } - } -}, 'menu'); -//splitbutton 类 -///import button -UM.ui.define('splitbutton',{ - tpl :'
      data-original-title="<%=title%>"<%}%>>
      <%if(icon){%>
      <%}%><%if(text){%><%=text%><%}%>
      '+ - '
      '+ - '
      <\/div>'+ - '
      '+ - '
      ', - defaultOpt:{ - text:'', - title:'', - click:function(){} - }, - init : function(options){ - var me = this; - me.root( $($.parseTmpl(me.tpl,options))); - me.root().find('.edui-btn:first').click(function(evt){ - if(!me.disabled()){ - $.proxy(options.click,me)(); - } - }); - me.root().find('.edui-dropdown-toggle').click(function(){ - if(!me.disabled()){ - me.trigger('arrowclick') - } - }); - me.root().hover(function () { - if(!me.root().hasClass("edui-disabled")){ - me.root().toggleClass('edui-hover') - } - }); - - return me; - }, - wrapclick:function(fn,evt){ - if(!this.disabled()){ - $.proxy(fn,this,evt)() - } - return this; - }, - disabled : function(state){ - if(state === undefined){ - return this.root().hasClass('edui-disabled') - } - this.root().toggleClass('edui-disabled',state).find('.edui-btn').toggleClass('edui-disabled',state); - return this; - }, - active:function(state){ - if(state === undefined){ - return this.root().hasClass('edui-active') - } - this.root().toggleClass('edui-active',state).find('.edui-btn:first').toggleClass('edui-active',state); - return this; - }, - mergeWith:function($obj){ - var me = this; - me.data('$mergeObj',$obj); - $obj.edui().data('$mergeObj',me.root()); - if(!$.contains(document.body,$obj[0])){ - $obj.appendTo(me.root()); - } - me.root().delegate('.edui-dropdown-toggle','click',function(){ - me.wrapclick(function(){ - $obj.edui().show(); - }) - }); - me.register('click',me.root().find('.edui-dropdown-toggle'),function(evt){ - $obj.hide() - }); - } -}); -/** - * Created with JetBrains PhpStorm. - * User: hn - * Date: 13-7-10 - * Time: 下午3:07 - * To change this template use File | Settings | File Templates. - */ -UM.ui.define('colorsplitbutton',{ - - tpl : '
      data-original-title="<%=title%>"<%}%>>
      <%if(icon){%>
      <%}%>
      style="background: <%=color%>"<%}%>>
      <%if(text){%><%=text%><%}%>
      '+ - '
      '+ - '
      <\/div>'+ - '
      '+ - '
      ', - defaultOpt: { - color: '' - }, - init: function( options ){ - - var me = this; - - me.supper.init.call( me, options ); - - }, - colorLabel: function(){ - return this.root().find('.edui-splitbutton-color-label'); - } - -}, 'splitbutton'); -//popup 类 -UM.ui.define('popup', { - tpl: '
      ){%>onmousedown="return false"<%}%>'+ - '>
      <%=subtpl%>
      ' + - '
      ' + - '
      ', - defaultOpt: { - stopprop:false, - subtpl: '', - width: '', - height: '' - }, - init: function (options) { - this.root($($.parseTmpl(this.tpl, options))); - return this; - }, - mergeTpl: function (data) { - return $.parseTmpl(this.tpl, {subtpl: data}); - }, - show: function ($obj, posObj) { - if (!posObj) posObj = {}; - - var fnname = posObj.fnname || 'position'; - if (this.trigger('beforeshow') === false) { - return; - } else { - this.root().css($.extend({display: 'block'}, $obj ? { - top: $obj[fnname]().top + ( posObj.dir == 'right' ? 0 : $obj.outerHeight()) - (posObj.offsetTop || 0), - left: $obj[fnname]().left + (posObj.dir == 'right' ? $obj.outerWidth() : 0) - (posObj.offsetLeft || 0), - position: 'absolute' - } : {})); - - this.root().find('.edui-popup-caret').css({ - top: posObj.caretTop || 0, - left: posObj.caretLeft || 0, - position: 'absolute' - }).addClass(posObj.caretDir || "up") - - } - this.trigger("aftershow"); - }, - hide: function () { - this.root().css('display', 'none'); - this.trigger('afterhide') - }, - attachTo: function ($obj, posObj) { - var me = this - if (!$obj.data('$mergeObj')) { - $obj.data('$mergeObj', me.root()); - $obj.on('wrapclick', function (evt) { - me.show($obj, posObj) - }); - me.register('click', $obj, function (evt) { - me.hide() - }); - me.data('$mergeObj', $obj) - } - }, - getBodyContainer: function () { - return this.root().find(".edui-popup-body"); - } -}); -//scale 类 -UM.ui.define('scale', { - tpl: '
      ' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
      ', - defaultOpt: { - $doc: $(document), - $wrap: $(document) - }, - init: function (options) { - if(options.$doc) this.defaultOpt.$doc = options.$doc; - if(options.$wrap) this.defaultOpt.$wrap = options.$wrap; - this.root($($.parseTmpl(this.tpl, options))); - this.initStyle(); - this.startPos = this.prePos = {x: 0, y: 0}; - this.dragId = -1; - return this; - }, - initStyle: function () { - utils.cssRule('edui-style-scale', '.edui-scale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;}' + - '.edui-scale span{position:absolute;left:0;top:0;width:7px;height:7px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}' - + '.edui-scale .edui-scale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}' - + '.edui-scale .edui-scale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}' - + '.edui-scale .edui-scale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}' - + '.edui-scale .edui-scale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}' - + '.edui-scale .edui-scale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}' - + '.edui-scale .edui-scale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}' - + '.edui-scale .edui-scale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}' - + '.edui-scale .edui-scale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}'); - }, - _eventHandler: function (e) { - var me = this, - $doc = me.defaultOpt.$doc; - switch (e.type) { - case 'mousedown': - var hand = e.target || e.srcElement, hand; - if (hand.className.indexOf('edui-scale-hand') != -1) { - me.dragId = hand.className.slice(-1); - me.startPos.x = me.prePos.x = e.clientX; - me.startPos.y = me.prePos.y = e.clientY; - $doc.bind('mousemove', $.proxy(me._eventHandler, me)); - } - break; - case 'mousemove': - if (me.dragId != -1) { - me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y}); - me.prePos.x = e.clientX; - me.prePos.y = e.clientY; - me.updateTargetElement(); - } - break; - case 'mouseup': - if (me.dragId != -1) { - me.dragId = -1; - me.updateTargetElement(); - var $target = me.data('$scaleTarget'); - if ($target.parent()) me.attachTo(me.data('$scaleTarget')); - } - $doc.unbind('mousemove', $.proxy(me._eventHandler, me)); - break; - default: - break; - } - }, - updateTargetElement: function () { - var me = this, - $root = me.root(), - $target = me.data('$scaleTarget'); - $target.css({width: $root.width(), height: $root.height()}); - me.attachTo($target); - }, - updateContainerStyle: function (dir, offset) { - var me = this, - $dom = me.root(), - tmp, - rect = [ - //[left, top, width, height] - [0, 0, -1, -1], - [0, 0, 0, -1], - [0, 0, 1, -1], - [0, 0, -1, 0], - [0, 0, 1, 0], - [0, 0, -1, 1], - [0, 0, 0, 1], - [0, 0, 1, 1] - ]; - - if (rect[dir][0] != 0) { - tmp = parseInt($dom.offset().left) + offset.x; - $dom.css('left', me._validScaledProp('left', tmp)); - } - if (rect[dir][1] != 0) { - tmp = parseInt($dom.offset().top) + offset.y; - $dom.css('top', me._validScaledProp('top', tmp)); - } - if (rect[dir][2] != 0) { - tmp = $dom.width() + rect[dir][2] * offset.x; - $dom.css('width', me._validScaledProp('width', tmp)); - } - if (rect[dir][3] != 0) { - tmp = $dom.height() + rect[dir][3] * offset.y; - $dom.css('height', me._validScaledProp('height', tmp)); - } - }, - _validScaledProp: function (prop, value) { - var $ele = this.root(), - $wrap = this.defaultOpt.$doc, - calc = function(val, a, b){ - return (val + a) > b ? b - a : value; - }; - - value = isNaN(value) ? 0 : value; - switch (prop) { - case 'left': - return value < 0 ? 0 : calc(value, $ele.width(), $wrap.width()); - case 'top': - return value < 0 ? 0 : calc(value, $ele.height(),$wrap.height()); - case 'width': - return value <= 0 ? 1 : calc(value, $ele.offset().left, $wrap.width()); - case 'height': - return value <= 0 ? 1 : calc(value, $ele.offset().top, $wrap.height()); - } - }, - show: function ($obj) { - var me = this; - if ($obj) me.attachTo($obj); - me.root().bind('mousedown', $.proxy(me._eventHandler, me)); - me.defaultOpt.$doc.bind('mouseup', $.proxy(me._eventHandler, me)); - me.root().show(); - me.trigger("aftershow"); - }, - hide: function () { - var me = this; - me.root().unbind('mousedown', $.proxy(me._eventHandler, me)); - me.defaultOpt.$doc.unbind('mouseup', $.proxy(me._eventHandler, me)); - me.root().hide(); - me.trigger('afterhide') - }, - attachTo: function ($obj) { - var me = this, - imgPos = $obj.offset(), - $root = me.root(), - $wrap = me.defaultOpt.$wrap, - posObj = $wrap.offset(); - - me.data('$scaleTarget', $obj); - me.root().css({ - position: 'absolute', - width: $obj.width(), - height: $obj.height(), - left: imgPos.left - posObj.left - parseInt($wrap.css('border-left-width')) - parseInt($root.css('border-left-width')), - top: imgPos.top - posObj.top - parseInt($wrap.css('border-top-width')) - parseInt($root.css('border-top-width')) - }); - }, - getScaleTarget: function () { - return this.data('$scaleTarget')[0]; - } -}); -//colorpicker 类 -UM.ui.define('colorpicker', { - tpl: function (opt) { - var COLORS = ( - 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' + - 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' + - 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' + - 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' + - 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' + - '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' + - 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(','); - - var html = '
      ' + - '
      ' + - '' + - ''; - - for (var i = 0; i < COLORS.length; i++) { - if (i && i % 10 === 0) { - html += '' + (i == 60 ? '' : '') + ''; - } - html += i < 70 ? '' : ''; - } - html += '
      '+opt.lang_themeColor+'
      '+opt.lang_standardColor+'
      '; - return html; - }, - init: function (options) { - var me = this; - me.root($($.parseTmpl(me.supper.mergeTpl(me.tpl(options)),options))); - - me.root().on("click",function (e) { - me.trigger('pickcolor', $(e.target).data('color')); - }); - } -}, 'popup'); -/** - * Created with JetBrains PhpStorm. - * User: hn - * Date: 13-5-29 - * Time: 下午8:01 - * To change this template use File | Settings | File Templates. - */ - -(function(){ - - var widgetName = 'combobox', - itemClassName = 'edui-combobox-item', - HOVER_CLASS = 'edui-combobox-item-hover', - ICON_CLASS = 'edui-combobox-checked-icon', - labelClassName = 'edui-combobox-item-label'; - - UM.ui.define( widgetName, ( function(){ - - return { - tpl: "
        edui-combobox-<%=comboboxName%><%}%>\" unselectable=\"on\" onmousedown=\"return false\" role=\"menu\" aria-labelledby=\"dropdownMenu\">" + - "<%if(autoRecord) {%>" + - "<%for( var i=0, len = recordStack.length; i" + - "<%var index = recordStack[i];%>" + - "
      • <%if( selected == index ) {%> edui-combobox-checked<%}%>\" data-item-index=\"<%=index%>\" unselectable=\"on\" onmousedown=\"return false\">" + - "" + - "" + - "
      • " + - "<%}%>" + - "<%if( i ) {%>" + - "
      • " + - "<%}%>" + - "<%}%>" + - "<%for( var i=0, label; label = items[i]; i++ ) {%>" + - "
      • <%if( selected == i ) {%> edui-combobox-checked<%}%> edui-combobox-item-<%=i%>\" data-item-index=\"<%=i%>\" unselectable=\"on\" onmousedown=\"return false\">" + - "" + - "" + - "
      • " + - "<%}%>" + - "
      ", - defaultOpt: { - //记录栈初始列表 - recordStack: [], - //可用项列表 - items: [], - //item对应的值列表 - value: [], - comboboxName: '', - selected: '', - //自动记录 - autoRecord: true, - //最多记录条数 - recordCount: 5 - }, - init: function( options ){ - - var me = this; - - $.extend( me._optionAdaptation( options ), me._createItemMapping( options.recordStack, options.items ), { - itemClassName: itemClassName, - iconClass: ICON_CLASS, - labelClassName: labelClassName - } ); - - this._transStack( options ); - - me.root( $( $.parseTmpl( me.tpl, options ) ) ); - - this.data( 'options', options ).initEvent(); - - }, - initEvent: function(){ - - var me = this; - - me.initSelectItem(); - - this.initItemActive(); - - }, - /** - * 初始化选择项 - */ - initSelectItem: function(){ - - var me = this, - labelClass = "."+labelClassName; - - me.root().delegate('.' + itemClassName, 'click', function(){ - - var $li = $(this), - index = $li.attr('data-item-index'); - - me.trigger('comboboxselect', { - index: index, - label: $li.find(labelClass).text(), - value: me.data('options').value[ index ] - }).select( index ); - - me.hide(); - - return false; - - }); - - }, - initItemActive: function(){ - var fn = { - mouseenter: 'addClass', - mouseleave: 'removeClass' - }; - if ($.IE6) { - this.root().delegate( '.'+itemClassName, 'mouseenter mouseleave', function( evt ){ - $(this)[ fn[ evt.type ] ]( HOVER_CLASS ); - }).one('afterhide', function(){ - }); - } - }, - /** - * 选择给定索引的项 - * @param index 项索引 - * @returns {*} 如果存在对应索引的项,则返回该项;否则返回null - */ - select: function( index ){ - - var itemCount = this.data('options').itemCount, - items = this.data('options').autowidthitem; - - if ( items && !items.length ) { - items = this.data('options').items; - } - - if( itemCount == 0 ) { - return null; - } - - if( index < 0 ) { - - index = itemCount + index % itemCount; - - } else if ( index >= itemCount ) { - - index = itemCount-1; - - } - - this.trigger( 'changebefore', items[ index ] ); - - this._update( index ); - - this.trigger( 'changeafter', items[ index ] ); - - return null; - - }, - selectItemByLabel: function( label ){ - - var itemMapping = this.data('options').itemMapping, - me = this, - index = null; - - !$.isArray( label ) && ( label = [ label ] ); - - $.each( label, function( i, item ){ - - index = itemMapping[ item ]; - - if( index !== undefined ) { - - me.select( index ); - return false; - - } - - } ); - - }, - /** - * 转换记录栈 - */ - _transStack: function( options ) { - - var temp = [], - itemIndex = -1, - selected = -1; - - $.each( options.recordStack, function( index, item ){ - - itemIndex = options.itemMapping[ item ]; - - if( $.isNumeric( itemIndex ) ) { - - temp.push( itemIndex ); - - //selected的合法性检测 - if( item == options.selected ) { - selected = itemIndex; - } - - } - - } ); - - options.recordStack = temp; - options.selected = selected; - temp = null; - - }, - _optionAdaptation: function( options ) { - - if( !( 'itemStyles' in options ) ) { - - options.itemStyles = []; - - for( var i = 0, len = options.items.length; i < len; i++ ) { - options.itemStyles.push(''); - } - - } - - options.autowidthitem = options.autowidthitem || options.items; - options.itemCount = options.items.length; - - return options; - - }, - _createItemMapping: function( stackItem, items ){ - - var temp = {}, - result = { - recordStack: [], - mapping: {} - }; - - $.each( items, function( index, item ){ - temp[ item ] = index; - } ); - - result.itemMapping = temp; - - $.each( stackItem, function( index, item ){ - - if( temp[ item ] !== undefined ) { - result.recordStack.push( temp[ item ] ); - result.mapping[ item ] = temp[ item ]; - } - - } ); - - return result; - - }, - _update: function ( index ) { - - var options = this.data("options"), - newStack = [], - newChilds = null; - - $.each( options.recordStack, function( i, item ){ - - if( item != index ) { - newStack.push( item ); - } - - } ); - - //压入最新的记录 - newStack.unshift( index ); - - if( newStack.length > options.recordCount ) { - newStack.length = options.recordCount; - } - - options.recordStack = newStack; - options.selected = index; - - newChilds = $( $.parseTmpl( this.tpl, options ) ); - - //重新渲染 - this.root().html( newChilds.html() ); - - newChilds = null; - newStack = null; - - } - }; - - } )(), 'menu' ); - -})(); - -/** - * Combox 抽象基类 - * User: hn - * Date: 13-5-29 - * Time: 下午8:01 - * To change this template use File | Settings | File Templates. - */ - -(function(){ - - var widgetName = 'buttoncombobox'; - - UM.ui.define( widgetName, ( function(){ - - return { - defaultOpt: { - //按钮初始文字 - label: '', - title: '' - }, - init: function( options ) { - - var me = this; - - var btnWidget = $.eduibutton({ - caret: true, - name: options.comboboxName, - title: options.title, - text: options.label, - click: function(){ - me.show( this.root() ); - } - }); - - me.supper.init.call( me, options ); - - //监听change, 改变button显示内容 - me.on('changebefore', function( e, label ){ - btnWidget.eduibutton('label', label ); - }); - - me.data( 'button', btnWidget ); - - me.attachTo(btnWidget) - - }, - button: function(){ - return this.data( 'button' ); - } - } - - } )(), 'combobox' ); - -})(); - -/*modal 类*/ -UM.ui.define('modal', { - tpl: '
      ' + - '
      ' + - '
      ' + - '

      <%=title%>

      ' + - '
      ' + - '
      ' + - '
      ' + - '<% if(cancellabel || oklabel) {%>' + - '' + - '<%}%>
      ', - defaultOpt: { - title: "", - cancellabel: "", - oklabel: "", - width: '', - height: '', - backdrop: true, - keyboard: true - }, - init: function (options) { - var me = this; - - me.root($($.parseTmpl(me.tpl, options || {}))); - - me.data("options", options); - if (options.okFn) { - me.on('ok', $.proxy(options.okFn, me)) - } - if (options.cancelFn) { - me.on('beforehide', $.proxy(options.cancelFn, me)) - } - - me.root().delegate('[data-hide="modal"]', 'click', $.proxy(me.hide, me)) - .delegate('[data-ok="modal"]', 'click', $.proxy(me.ok, me)); - - $('[data-hide="modal"],[data-ok="modal"]',me.root()).hover(function(){ - $(this).toggleClass('edui-hover') - }); - }, - toggle: function () { - var me = this; - return me[!me.data("isShown") ? 'show' : 'hide'](); - }, - show: function () { - - var me = this; - - me.trigger("beforeshow"); - - if (me.data("isShown")) return; - - me.data("isShown", true); - - me.escape(); - - me.backdrop(function () { - me.autoCenter(); - me.root() - .show() - .focus() - .trigger('aftershow'); - }) - }, - showTip: function ( text ) { - $( '.edui-modal-tip', this.root() ).html( text ).fadeIn(); - }, - hideTip: function ( text ) { - $( '.edui-modal-tip', this.root() ).fadeOut( function (){ - $(this).html(''); - } ); - }, - autoCenter: function () { - //ie6下不用处理了 - !$.IE6 && this.root().css("margin-left", -(this.root().width() / 2)); - }, - hide: function () { - var me = this; - - me.trigger("beforehide"); - - if (!me.data("isShown")) return; - - me.data("isShown", false); - - me.escape(); - - me.hideModal(); - }, - escape: function () { - var me = this; - if (me.data("isShown") && me.data("options").keyboard) { - me.root().on('keyup', function (e) { - e.which == 27 && me.hide(); - }) - } - else if (!me.data("isShown")) { - me.root().off('keyup'); - } - }, - hideModal: function () { - var me = this; - me.root().hide(); - me.backdrop(function () { - me.removeBackdrop(); - me.trigger('afterhide'); - }) - }, - removeBackdrop: function () { - this.$backdrop && this.$backdrop.remove(); - this.$backdrop = null; - }, - backdrop: function (callback) { - var me = this; - if (me.data("isShown") && me.data("options").backdrop) { - me.$backdrop = $('
      ').click( - me.data("options").backdrop == 'static' ? - $.proxy(me.root()[0].focus, me.root()[0]) - : $.proxy(me.hide, me) - ) - } - me.trigger('afterbackdrop'); - callback && callback(); - - }, - attachTo: function ($obj) { - var me = this - if (!$obj.data('$mergeObj')) { - - $obj.data('$mergeObj', me.root()); - $obj.on('click', function () { - me.toggle($obj) - }); - me.data('$mergeObj', $obj) - } - }, - ok: function () { - var me = this; - me.trigger('beforeok'); - if (me.trigger("ok", me) === false) { - return; - } - me.hide(); - }, - getBodyContainer: function () { - return this.root().find('.edui-modal-body') - } -}); - - -/*tooltip 类*/ -UM.ui.define('tooltip', { - tpl: '
      ' + - '
      ' + - '
      ' + - '
      ', - init: function (options) { - var me = this; - me.root($($.parseTmpl(me.tpl, options || {}))); - }, - content: function (e) { - var me = this, - title = $(e.currentTarget).attr("data-original-title"); - - me.root().find('.edui-tooltip-inner')['text'](title); - }, - position: function (e) { - var me = this, - $obj = $(e.currentTarget); - - me.root().css($.extend({display: 'block'}, $obj ? { - top: $obj.outerHeight(), - left: (($obj.outerWidth() - me.root().outerWidth()) / 2) - } : {})) - }, - show: function (e) { - if ($(e.currentTarget).hasClass('edui-disabled')) return; - - var me = this; - me.content(e); - me.root().appendTo($(e.currentTarget)); - me.position(e); - me.root().css('display', 'block'); - }, - hide: function () { - var me = this; - me.root().css('display', 'none') - }, - attachTo: function ($obj) { - var me = this; - - function tmp($obj) { - var me = this; - - if (!$.contains(document.body, me.root()[0])) { - me.root().appendTo($obj); - } - - me.data('tooltip', me.root()); - - $obj.each(function () { - if ($(this).attr("data-original-title")) { - $(this).on('mouseenter', $.proxy(me.show, me)) - .on('mouseleave click', $.proxy(me.hide, me)) - - } - }); - - } - - if ($.type($obj) === "undefined") { - $("[data-original-title]").each(function (i, el) { - tmp.call(me, $(el)); - }) - - } else { - if (!$obj.data('tooltip')) { - tmp.call(me, $obj); - } - } - } -}); - -/*tab 类*/ -UM.ui.define('tab', { - init: function (options) { - var me = this, - slr = options.selector; - - if ($.type(slr)) { - me.root($(slr, options.context)); - me.data("context", options.context); - - $(slr, me.data("context")).on('click', function (e) { - me.show(e); - }); - } - }, - show: function (e) { - - var me = this, - $cur = $(e.target), - $ul = $cur.closest('ul'), - selector, - previous, - $target, - e; - - selector = $cur.attr('data-context'); - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, ''); - - var $tmp = $cur.parent('li'); - - if (!$tmp.length || $tmp.hasClass('edui-active')) return; - - previous = $ul.find('.edui-active:last a')[0]; - - e = $.Event('beforeshow', { - target: $cur[0], - relatedTarget: previous - }); - - me.trigger(e); - - if (e.isDefaultPrevented()) return; - - $target = $(selector, me.data("context")); - - me.activate($cur.parent('li'), $ul); - me.activate($target, $target.parent(), function () { - me.trigger({ - type: 'aftershow', relatedTarget: previous - }) - }); - }, - activate: function (element, container, callback) { - if (element === undefined) { - return $(".edui-tab-item.edui-active",this.root()).index(); - } - - var $active = container.find('> .edui-active'); - - $active.removeClass('edui-active'); - - element.addClass('edui-active'); - - callback && callback(); - } -}); - - -//button 类 -UM.ui.define('separator', { - tpl: '
      ', - init: function (options) { - var me = this; - me.root($($.parseTmpl(me.tpl, options))); - return me; - } -}); -/** - * @file adapter.js - * @desc adapt ui to editor - * @import core/Editor.js, core/utils.js - */ - -(function () { - var _editorUI = {}, - _editors = {}, - _readyFn = [], - _activeWidget = null, - _widgetData = {}, - _widgetCallBack = {}, - _cacheUI = {}, - _maxZIndex = null; - - utils.extend(UM, { - defaultWidth : 500, - defaultHeight : 500, - registerUI: function (name, fn) { - utils.each(name.split(/\s+/), function (uiname) { - _editorUI[uiname] = fn; - }) - }, - - setEditor : function(editor){ - !_editors[editor.id] && (_editors[editor.id] = editor); - }, - registerWidget : function(name,pro,cb){ - _widgetData[name] = $.extend2(pro,{ - $root : '', - _preventDefault:false, - root:function($el){ - return this.$root || (this.$root = $el); - }, - preventDefault:function(){ - this._preventDefault = true; - }, - clear:false - }); - if(cb){ - _widgetCallBack[name] = cb; - } - }, - getWidgetData : function(name){ - return _widgetData[name] - }, - setWidgetBody : function(name,$widget,editor){ - if(!editor._widgetData){ - - utils.extend(editor,{ - _widgetData : {}, - getWidgetData : function(name){ - return this._widgetData[name]; - }, - getWidgetCallback : function(widgetName){ - var me = this; - return function(){ - return _widgetCallBack[widgetName].apply(me,[me,$widget].concat(Array.prototype.slice.call(arguments,0))) - } - } - }) - - } - var pro = _widgetData[name]; - if(!pro){ - return null; - } - pro = editor._widgetData[name]; - if(!pro){ - pro = _widgetData[name]; - pro = editor._widgetData[name] = $.type(pro) == 'function' ? pro : utils.clone(pro); - } - - pro.root($widget.edui().getBodyContainer()); - - pro.initContent(editor,$widget); - if(!pro._preventDefault){ - pro.initEvent(editor,$widget); - } - - pro.width && $widget.width(pro.width); - - - }, - setActiveWidget : function($widget){ - _activeWidget = $widget; - }, - getEditor: function (id, options) { - var editor = _editors[id] || (_editors[id] = this.createEditor(id, options)); - _maxZIndex = _maxZIndex ? Math.max(editor.getOpt('zIndex'), _maxZIndex):editor.getOpt('zIndex'); - return editor; - }, - setTopEditor: function(editor){ - $.each(_editors, function(i, o){ - if(editor == o) { - editor.$container && editor.$container.css('zIndex', _maxZIndex + 1); - } else { - o.$container && o.$container.css('zIndex', o.getOpt('zIndex')); - } - }); - }, - clearCache : function(id){ - if ( _editors[id]) { - delete _editors[id] - } - }, - delEditor: function (id) { - var editor; - if (editor = _editors[id]) { - editor.destroy(); - } - }, - ready: function( fn ){ - _readyFn.push( fn ); - }, - createEditor: function (id, opt) { - var editor = new UM.Editor(opt); - var T = this; - - editor.langIsReady ? $.proxy(renderUI,T)() : editor.addListener("langReady", $.proxy(renderUI,T)); - function renderUI(){ - - - var $container = this.createUI('#' + id, editor); - editor.key=id; - editor.ready(function(){ - $.each( _readyFn, function( index, fn ){ - $.proxy( fn, editor )(); - } ); - }); - var options = editor.options; - if(options.initialFrameWidth){ - options.minFrameWidth = options.initialFrameWidth - }else{ - options.minFrameWidth = options.initialFrameWidth = editor.$body.width() || UM.defaultWidth; - } - - $container.css({ - width: options.initialFrameWidth, - zIndex:editor.getOpt('zIndex') - }); - - //ie6下缓存图片 - UM.browser.ie && UM.browser.version === 6 && document.execCommand("BackgroundImageCache", false, true); - - editor.render(id); - - - //添加tooltip; - $.eduitooltip && $.eduitooltip('attachTo', $("[data-original-title]",$container)).css('z-index',editor.getOpt('zIndex')+1); - - $container.find('a').click(function(evt){ - evt.preventDefault() - }); - - editor.fireEvent("afteruiready"); - } - - return editor; - - }, - createUI: function (id, editor) { - var $editorCont = $(id), - $container = $('
      ').insertBefore($editorCont); - editor.$container = $container; - editor.container = $container[0]; - - editor.$body = $editorCont; - - //修正在ie9+以上的版本中,自动长高收起时的,残影问题 - if(browser.ie && browser.ie9above){ - var $span = $(''); - $span.insertAfter($container); - } - //初始化注册的ui组件 - $.each(_editorUI,function(n,v){ - var widget = v.call(editor,n); - if(widget){ - _cacheUI[n] = widget; - } - - }); - - $container.find('.edui-editor-body').append($editorCont).before(this.createToolbar(editor.options, editor)); - - $container.find('.edui-toolbar').append($('
      ')); - - - return $container; - }, - createToolbar: function (options, editor) { - var $toolbar = $.eduitoolbar(), toolbar = $toolbar.edui(); - //创建下来菜单列表 - - if (options.toolbar && options.toolbar.length) { - var btns = []; - $.each(options.toolbar,function(i,uiNames){ - $.each(uiNames.split(/\s+/),function(index,name){ - if(name == '|'){ - $.eduiseparator && btns.push($.eduiseparator()); - }else{ - var ui = _cacheUI[name]; - if(name=="fullscreen"){ - ui&&btns.unshift(ui); - }else{ - ui && btns.push(ui); - } - } - - }); - btns.length && toolbar.appendToBtnmenu(btns); - }); - } else { - $toolbar.find('.edui-btn-toolbar').remove() - } - return $toolbar; - } - - }) - - -})(); - - - -UM.registerUI('bold italic redo undo underline strikethrough superscript subscript insertorderedlist insertunorderedlist ' + - 'cleardoc selectall link unlink print preview justifyleft justifycenter justifyright justifyfull removeformat horizontal drafts', - function(name) { - var me = this; - var $btn = $.eduibutton({ - icon : name, - click : function(){ - me.execCommand(name); - }, - title: this.getLang('labelMap')[name] || '' - }); - - this.addListener('selectionchange',function(){ - var state = this.queryCommandState(name); - $btn.edui().disabled(state == -1).active(state == 1) - }); - return $btn; - } -); - - -/** - * 全屏组件 - */ - -(function(){ - - //状态缓存 - var STATUS_CACHE = {}, - //状态值列表 - STATUS_LIST = [ 'width', 'height', 'position', 'top', 'left', 'margin', 'padding', 'overflowX', 'overflowY' ], - CONTENT_AREA_STATUS = {}, - //页面状态 - DOCUMENT_STATUS = {}, - DOCUMENT_ELEMENT_STATUS = {}, - - FULLSCREENS = {}; - - - UM.registerUI('fullscreen', function( name ){ - - var me = this, - $button = $.eduibutton({ - 'icon': 'fullscreen', - 'title': (me.options.labelMap && me.options.labelMap[name]) || me.getLang("labelMap." + name), - 'click': function(){ - //切换 - me.execCommand( name ); - UM.setTopEditor(me); - } - }); - - me.addListener( "selectionchange", function () { - - var state = this.queryCommandState( name ); - $button.edui().disabled( state == -1 ).active( state == 1 ); - - } ); - - //切换至全屏 - me.addListener('ready', function(){ - - me.options.fullscreen && Fullscreen.getInstance( me ).toggle(); - - }); - - return $button; - - }); - - UM.commands[ 'fullscreen' ] = { - - execCommand: function (cmdName) { - - Fullscreen.getInstance( this ).toggle(); - - }, - queryCommandState: function (cmdName) { - - return this._edui_fullscreen_status; - }, - notNeedUndo: 1 - - }; - - function Fullscreen( editor ) { - - var me = this; - - if( !editor ) { - throw new Error('invalid params, notfound editor'); - } - - me.editor = editor; - - //记录初始化的全屏组件 - FULLSCREENS[ editor.uid ] = this; - - editor.addListener('destroy', function(){ - delete FULLSCREENS[ editor.uid ]; - me.editor = null; - }); - - } - - Fullscreen.prototype = { - - /** - * 全屏状态切换 - */ - toggle: function(){ - - var editor = this.editor, - //当前编辑器的缩放状态 - _edui_fullscreen_status = this.isFullState(); - editor.fireEvent('beforefullscreenchange', !_edui_fullscreen_status ); - - //更新状态 - this.update( !_edui_fullscreen_status ); - - !_edui_fullscreen_status ? this.enlarge() : this.revert(); - - editor.fireEvent('afterfullscreenchange', !_edui_fullscreen_status ); - if(editor.body.contentEditable === 'true'){ - editor.fireEvent( 'fullscreenchanged', !_edui_fullscreen_status ); - } - - editor.fireEvent( 'selectionchange' ); - - }, - /** - * 执行放大 - */ - enlarge: function(){ - - this.saveSataus(); - - this.setDocumentStatus(); - - this.resize(); - - }, - /** - * 全屏还原 - */ - revert: function(){ - - //还原CSS表达式 - var options = this.editor.options, - height = /%$/.test(options.initialFrameHeight) ? '100%' : (options.initialFrameHeight - this.getStyleValue("padding-top")- this.getStyleValue("padding-bottom") - this.getStyleValue('border-width')); - - $.IE6 && this.getEditorHolder().style.setExpression('height', 'this.scrollHeight <= ' + height + ' ? "' + height + 'px" : "auto"'); - - //还原容器状态 - this.revertContainerStatus(); - - this.revertContentAreaStatus(); - - this.revertDocumentStatus(); - - }, - /** - * 更新状态 - * @param isFull 当前状态是否是全屏状态 - */ - update: function( isFull ) { - this.editor._edui_fullscreen_status = isFull; - }, - /** - * 调整当前编辑器的大小, 如果当前编辑器不处于全屏状态, 则不做调整 - */ - resize: function(){ - - var $win = null, - height = 0, - width = 0, - borderWidth = 0, - paddingWidth = 0, - editor = this.editor, - me = this, - bound = null, - editorBody = null; - - if( !this.isFullState() ) { - return; - } - - $win = $( window ); - width = $win.width(); - height = $win.height(); - editorBody = this.getEditorHolder(); - //文本编辑区border宽度 - borderWidth = parseInt( domUtils.getComputedStyle( editorBody, 'border-width' ), 10 ) || 0; - //容器border宽度 - borderWidth += parseInt( domUtils.getComputedStyle( editor.container, 'border-width' ), 10 ) || 0; - //容器padding - paddingWidth += parseInt( domUtils.getComputedStyle( editorBody, 'padding-left' ), 10 ) + parseInt( domUtils.getComputedStyle( editorBody, 'padding-right' ), 10 ) || 0; - - //干掉css表达式 - $.IE6 && editorBody.style.setExpression( 'height', null ); - - bound = this.getBound(); - - $( editor.container ).css( { - width: width + 'px', - height: height + 'px', - position: !$.IE6 ? 'fixed' : 'absolute', - top: bound.top, - left: bound.left, - margin: 0, - padding: 0, - overflowX: 'hidden', - overflowY: 'hidden' - } ); - - $( editorBody ).css({ - width: width - 2*borderWidth - paddingWidth + 'px', - height: height - 2*borderWidth - ( editor.options.withoutToolbar ? 0 : $( '.edui-toolbar', editor.container ).outerHeight() ) - $( '.edui-bottombar', editor.container).outerHeight() + 'px', - overflowX: 'hidden', - overflowY: 'auto' - }); - - }, - /** - * 保存状态 - */ - saveSataus: function(){ - - var styles = this.editor.container.style, - tmp = null, - cache = {}; - - for( var i= 0, len = STATUS_LIST.length; i offset) { - setFloating(); - }else{ - unsetFloating(); - } - } - var defer_updateFloating = utils.defer(function(){ - updateFloating(); - },browser.ie ? 200 : 100,true); - - me.addListener('destroy',function(){ - $(window).off('scroll resize',updateFloating); - me.removeListener('keydown', defer_updateFloating); - }); - - if(checkHasUI(me)){ - toolbarBox = $('.edui-toolbar',me.container)[0]; - me.addListener("afteruiready",function(){ - setTimeout(function(){ - orgTop = $(toolbarBox).offset().top; - },100); - }); - bakCssText = toolbarBox.style.cssText; - placeHolder.style.height = toolbarBox.offsetHeight + 'px'; - if(LteIE6){ - fixIE6FixedPos(); - } - - $(window).on('scroll resize',updateFloating); - me.addListener('keydown', defer_updateFloating); - me.addListener('resize', function(){ - unsetFloating(); - placeHolder.style.height = toolbarBox.offsetHeight + 'px'; - updateFloating(); - }); - - me.addListener('beforefullscreenchange', function (t, enabled){ - if (enabled) { - unsetFloating(); - isFullScreening = enabled; - } - }); - me.addListener('fullscreenchanged', function (t, enabled){ - if (!enabled) { - updateFloating(); - } - isFullScreening = enabled; - }); - me.addListener('sourcemodechanged', function (t, enabled){ - setTimeout(function (){ - updateFloating(); - },0); - }); - me.addListener("clearDoc",function(){ - setTimeout(function(){ - updateFloating(); - },0); - - }) - } - }) - - -}); -UM.registerUI('source',function(name){ - var me = this; - me.addListener('fullscreenchanged',function(){ - me.$container.find('textarea').width(me.$body.width() - 10).height(me.$body.height()) - - }); - var $btn = $.eduibutton({ - icon : name, - click : function(){ - me.execCommand(name); - UM.setTopEditor(me); - }, - title: this.getLang('labelMap')[name] || '' - }); - - this.addListener('selectionchange',function(){ - var state = this.queryCommandState(name); - $btn.edui().disabled(state == -1).active(state == 1) - }); - return $btn; -}); - -UM.registerUI('paragraph fontfamily fontsize', function( name ) { - - var me = this, - label = (me.options.labelMap && me.options.labelMap[name]) || me.getLang("labelMap." + name), - options = { - label: label, - title: label, - comboboxName: name, - items: me.options[ name ] || [], - itemStyles: [], - value: [], - autowidthitem: [] - }, - $combox = null, - comboboxWidget = null; - if(options.items.length == 0){ - return null; - } - switch ( name ) { - - case 'paragraph': - options = transForParagraph( options ); - break; - - case 'fontfamily': - options = transForFontfamily( options ); - break; - - case 'fontsize': - options = transForFontsize( options ); - break; - - } - - //实例化 - $combox = $.eduibuttoncombobox(options).css('zIndex',me.getOpt('zIndex') + 1); - comboboxWidget = $combox.edui(); - - comboboxWidget.on('comboboxselect', function( evt, res ){ - me.execCommand( name, res.value ); - }).on("beforeshow", function(){ - if( $combox.parent().length === 0 ) { - $combox.appendTo( me.$container.find('.edui-dialog-container') ); - } - UM.setTopEditor(me); - }); - - - //状态反射 - this.addListener('selectionchange',function( evt ){ - - var state = this.queryCommandState( name ), - value = this.queryCommandValue( name ); - - //设置按钮状态 - comboboxWidget.button().edui().disabled( state == -1 ).active( state == 1 ); - if(value){ - //设置label - value = value.replace(/['"]/g, '').toLowerCase().split(/['|"]?\s*,\s*[\1]?/); - - comboboxWidget.selectItemByLabel( value ); - } - - - }); - - return comboboxWidget.button().addClass('edui-combobox'); - - /** - * 宽度自适应工具函数 - * @param word 单词内容 - * @param hasSuffix 是否含有后缀 - */ - function wordCountAdaptive ( word, hasSuffix ) { - - var $tmpNode = $('' ).html( word ).css( { - display: 'inline', - position: 'absolute', - top: -10000000, - left: -100000 - } ).appendTo( document.body), - width = $tmpNode.width(); - - $tmpNode.remove(); - $tmpNode = null; - - if( width < 50 ) { - - return word; - - } else { - - word = word.slice( 0, hasSuffix ? -4 : -1 ); - - if( !word.length ) { - return '...'; - } - - return wordCountAdaptive( word + '...', true ); - - } - - } - - - //段落参数转换 - function transForParagraph ( options ) { - - var tempItems = []; - - for( var key in options.items ) { - - options.value.push( key ); - tempItems.push( key ); - options.autowidthitem.push( wordCountAdaptive( key ) ); - - } - - options.items = tempItems; - options.autoRecord = false; - - return options; - - } - - //字体参数转换 - function transForFontfamily ( options ) { - - var temp = null, - tempItems = []; - - for( var i = 0, len = options.items.length; i < len; i++ ) { - - temp = options.items[ i ].val; - tempItems.push( temp.split(/\s*,\s*/)[0] ); - options.itemStyles.push('font-family: ' + temp); - options.value.push( temp ); - options.autowidthitem.push( wordCountAdaptive( tempItems[ i ] ) ); - - } - - options.items = tempItems; - - return options; - - } - - //字体大小参数转换 - function transForFontsize ( options ) { - - var temp = null, - tempItems = []; - - options.itemStyles = []; - options.value = []; - - for( var i = 0, len = options.items.length; i < len; i++ ) { - - temp = options.items[ i ]; - tempItems.push( temp ); - options.itemStyles.push('font-size: ' + temp +'px'); - - } - - options.value = options.items; - options.items = tempItems; - options.autoRecord = false; - - return options; - - } - -}); - - -UM.registerUI('forecolor backcolor', function( name ) { - function getCurrentColor() { - return domUtils.getComputedStyle( $colorLabel[0], 'background-color' ); - } - - var me = this, - $colorPickerWidget = null, - $colorLabel = null, - $btn = null; - - //querycommand - this.addListener('selectionchange', function(){ - - var state = this.queryCommandState( name ); - $btn.edui().disabled( state == -1 ).active( state == 1 ); - - }); - - $btn = $.eduicolorsplitbutton({ - icon: name, - caret: true, - name: name, - title: me.getLang("labelMap")[name], - click: function() { - me.execCommand( name, getCurrentColor() ); - } - }); - - $colorLabel = $btn.edui().colorLabel(); - - $colorPickerWidget = $.eduicolorpicker({ - name: name, - lang_clearColor: me.getLang('clearColor') || '', - lang_themeColor: me.getLang('themeColor') || '', - lang_standardColor: me.getLang('standardColor') || '' - }) - .on('pickcolor', function( evt, color ){ - window.setTimeout( function(){ - $colorLabel.css("backgroundColor", color); - me.execCommand( name, color ); - }, 0 ); - }) - .on('show',function(){ - UM.setActiveWidget( colorPickerWidget.root() ); - }).css('zIndex',me.getOpt('zIndex') + 1); - - $btn.edui().on('arrowclick',function(){ - if(!$colorPickerWidget.parent().length){ - me.$container.find('.edui-dialog-container').append($colorPickerWidget); - } - $colorPickerWidget.edui().show($btn,{ - caretDir:"down", - offsetTop:-5, - offsetLeft:8, - caretLeft:11, - caretTop:-8 - }); - UM.setTopEditor(me); - }).register('click', $btn, function () { - $colorPickerWidget.edui().hide() - }); - - return $btn; - -}); - +/*! + * UEditor Mini版本 + * version: 1.2.2 + * build: Thu Dec 22 2016 16:33:28 GMT+0800 (CST) + */ + +(function($){ + +UMEDITOR_CONFIG = window.UMEDITOR_CONFIG || {}; + +window.UM = { + plugins : {}, + + commands : {}, + + I18N : {}, + + version : "1.2.2" +}; + +var dom = UM.dom = {}; +/** + * 浏览器判断模块 + * @file + * @module UE.browser + * @since 1.2.6.1 + */ + +/** + * 提供浏览器检测的模块 + * @unfile + * @module UE.browser + */ +var browser = UM.browser = function(){ + var agent = navigator.userAgent.toLowerCase(), + opera = window.opera, + browser = { + /** + * @property {boolean} ie 检测当前浏览器是否为IE + * @example + * ```javascript + * if ( UE.browser.ie ) { + * console.log( '当前浏览器是IE' ); + * } + * ``` + */ + ie : /(msie\s|trident.*rv:)([\w.]+)/.test(agent), + + /** + * @property {boolean} opera 检测当前浏览器是否为Opera + * @example + * ```javascript + * if ( UE.browser.opera ) { + * console.log( '当前浏览器是Opera' ); + * } + * ``` + */ + opera : ( !!opera && opera.version ), + + /** + * @property {boolean} webkit 检测当前浏览器是否是webkit内核的浏览器 + * @example + * ```javascript + * if ( UE.browser.webkit ) { + * console.log( '当前浏览器是webkit内核浏览器' ); + * } + * ``` + */ + webkit : ( agent.indexOf( ' applewebkit/' ) > -1 ), + + /** + * @property {boolean} mac 检测当前浏览器是否是运行在mac平台下 + * @example + * ```javascript + * if ( UE.browser.mac ) { + * console.log( '当前浏览器运行在mac平台下' ); + * } + * ``` + */ + mac : ( agent.indexOf( 'macintosh' ) > -1 ), + + /** + * @property {boolean} quirks 检测当前浏览器是否处于“怪异模式”下 + * @example + * ```javascript + * if ( UE.browser.quirks ) { + * console.log( '当前浏览器运行处于“怪异模式”' ); + * } + * ``` + */ + quirks : ( document.compatMode == 'BackCompat' ) + }; + + /** + * @property {boolean} gecko 检测当前浏览器内核是否是gecko内核 + * @example + * ```javascript + * if ( UE.browser.gecko ) { + * console.log( '当前浏览器内核是gecko内核' ); + * } + * ``` + */ + browser.gecko =( navigator.product == 'Gecko' && !browser.webkit && !browser.opera && !browser.ie); + + var version = 0; + + // Internet Explorer 6.0+ + if ( browser.ie ){ + + + var v1 = agent.match(/(?:msie\s([\w.]+))/); + var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); + if(v1 && v2 && v1[1] && v2[1]){ + version = Math.max(v1[1]*1,v2[1]*1); + }else if(v1 && v1[1]){ + version = v1[1]*1; + }else if(v2 && v2[1]){ + version = v2[1]*1; + }else{ + version = 0; + } + + browser.ie11Compat = document.documentMode == 11; + /** + * @property { boolean } ie9Compat 检测浏览器模式是否为 IE9 兼容模式 + * @warning 如果浏览器不是IE, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.ie9Compat ) { + * console.log( '当前浏览器运行在IE9兼容模式下' ); + * } + * ``` + */ + browser.ie9Compat = document.documentMode == 9; + + /** + * @property { boolean } ie8 检测浏览器是否是IE8浏览器 + * @warning 如果浏览器不是IE, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.ie8 ) { + * console.log( '当前浏览器是IE8浏览器' ); + * } + * ``` + */ + browser.ie8 = !!document.documentMode; + + /** + * @property { boolean } ie8Compat 检测浏览器模式是否为 IE8 兼容模式 + * @warning 如果浏览器不是IE, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.ie8Compat ) { + * console.log( '当前浏览器运行在IE8兼容模式下' ); + * } + * ``` + */ + browser.ie8Compat = document.documentMode == 8; + + /** + * @property { boolean } ie7Compat 检测浏览器模式是否为 IE7 兼容模式 + * @warning 如果浏览器不是IE, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.ie7Compat ) { + * console.log( '当前浏览器运行在IE7兼容模式下' ); + * } + * ``` + */ + browser.ie7Compat = ( ( version == 7 && !document.documentMode ) + || document.documentMode == 7 ); + + /** + * @property { boolean } ie6Compat 检测浏览器模式是否为 IE6 模式 或者怪异模式 + * @warning 如果浏览器不是IE, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.ie6Compat ) { + * console.log( '当前浏览器运行在IE6模式或者怪异模式下' ); + * } + * ``` + */ + browser.ie6Compat = ( version < 7 || browser.quirks ); + + browser.ie9above = version > 8; + + browser.ie9below = version < 9; + + } + + // Gecko. + if ( browser.gecko ){ + var geckoRelease = agent.match( /rv:([\d\.]+)/ ); + if ( geckoRelease ) + { + geckoRelease = geckoRelease[1].split( '.' ); + version = geckoRelease[0] * 10000 + ( geckoRelease[1] || 0 ) * 100 + ( geckoRelease[2] || 0 ) * 1; + } + } + + /** + * @property { Number } chrome 检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号 + * @warning 如果浏览器不是chrome, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.chrome ) { + * console.log( '当前浏览器是Chrome' ); + * } + * ``` + */ + if (/chrome\/(\d+\.\d)/i.test(agent)) { + browser.chrome = + RegExp['\x241']; + } + + /** + * @property { Number } safari 检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号 + * @warning 如果浏览器不是safari, 则该值为undefined + * @example + * ```javascript + * if ( UE.browser.safari ) { + * console.log( '当前浏览器是Safari' ); + * } + * ``` + */ + if(/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)){ + browser.safari = + (RegExp['\x241'] || RegExp['\x242']); + } + + + // Opera 9.50+ + if ( browser.opera ) + version = parseFloat( opera.version() ); + + // WebKit 522+ (Safari 3+) + if ( browser.webkit ) + version = parseFloat( agent.match( / applewebkit\/(\d+)/ )[1] ); + + /** + * @property { Number } version 检测当前浏览器版本号 + * @remind + *
        + *
      • IE系列返回值为5,6,7,8,9,10等
      • + *
      • gecko系列会返回10900,158900等
      • + *
      • webkit系列会返回其build号 (如 522等)
      • + *
      + * @example + * ```javascript + * console.log( '当前浏览器版本号是: ' + UE.browser.version ); + * ``` + */ + browser.version = version; + + /** + * @property { boolean } isCompatible 检测当前浏览器是否能够与UEditor良好兼容 + * @example + * ```javascript + * if ( UE.browser.isCompatible ) { + * console.log( '浏览器与UEditor能够良好兼容' ); + * } + * ``` + */ + browser.isCompatible = + !browser.mobile && ( + ( browser.ie && version >= 6 ) || + ( browser.gecko && version >= 10801 ) || + ( browser.opera && version >= 9.5 ) || + ( browser.air && version >= 1 ) || + ( browser.webkit && version >= 522 ) || + false ); + return browser; +}(); +//快捷方式 +var ie = browser.ie, + webkit = browser.webkit, + gecko = browser.gecko, + opera = browser.opera; +/** + * @file + * @name UM.Utils + * @short Utils + * @desc UEditor封装使用的静态工具函数 + * @import editor.js + */ +var utils = UM.utils = { + /** + * 遍历数组,对象,nodeList + * @name each + * @grammar UM.utils.each(obj,iterator,[context]) + * @since 1.2.4+ + * @desc + * * obj 要遍历的对象 + * * iterator 遍历的方法,方法的第一个是遍历的值,第二个是索引,第三个是obj + * * context iterator的上下文 + * @example + * UM.utils.each([1,2],function(v,i){ + * console.log(v)//值 + * console.log(i)//索引 + * }) + * UM.utils.each(document.getElementsByTagName('*'),function(n){ + * console.log(n.tagName) + * }) + */ + each : function(obj, iterator, context) { + if (obj == null) return; + if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if(iterator.call(context, obj[i], i, obj) === false) + return false; + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if(iterator.call(context, obj[key], key, obj) === false) + return false; + } + } + } + }, + + makeInstance:function (obj) { + var noop = new Function(); + noop.prototype = obj; + obj = new noop; + noop.prototype = null; + return obj; + }, + /** + * 将source对象中的属性扩展到target对象上 + * @name extend + * @grammar UM.utils.extend(target,source) => Object //覆盖扩展 + * @grammar UM.utils.extend(target,source,true) ==> Object //保留扩展 + */ + extend:function (t, s, b) { + if (s) { + for (var k in s) { + if (!b || !t.hasOwnProperty(k)) { + t[k] = s[k]; + } + } + } + return t; + }, + extend2:function (t) { + var a = arguments; + for (var i = 1; i < a.length; i++) { + var x = a[i]; + for (var k in x) { + if (!t.hasOwnProperty(k)) { + t[k] = x[k]; + } + } + } + return t; + }, + /** + * 模拟继承机制,subClass继承superClass + * @name inherits + * @grammar UM.utils.inherits(subClass,superClass) => subClass + * @example + * function SuperClass(){ + * this.name = "小李"; + * } + * SuperClass.prototype = { + * hello:function(str){ + * console.log(this.name + str); + * } + * } + * function SubClass(){ + * this.name = "小张"; + * } + * UM.utils.inherits(SubClass,SuperClass); + * var sub = new SubClass(); + * sub.hello("早上好!"); ==> "小张早上好!" + */ + inherits:function (subClass, superClass) { + var oldP = subClass.prototype, + newP = utils.makeInstance(superClass.prototype); + utils.extend(newP, oldP, true); + subClass.prototype = newP; + return (newP.constructor = subClass); + }, + + /** + * 用指定的context作为fn上下文,也就是this + * @name bind + * @grammar UM.utils.bind(fn,context) => fn + */ + bind:function (fn, context) { + return function () { + return fn.apply(context, arguments); + }; + }, + + /** + * 创建延迟delay执行的函数fn + * @name defer + * @grammar UM.utils.defer(fn,delay) =>fn //延迟delay毫秒执行fn,返回fn + * @grammar UM.utils.defer(fn,delay,exclusion) =>fn //延迟delay毫秒执行fn,若exclusion为真,则互斥执行fn + * @example + * function test(){ + * console.log("延迟输出!"); + * } + * //非互斥延迟执行 + * var testDefer = UM.utils.defer(test,1000); + * testDefer(); => "延迟输出!"; + * testDefer(); => "延迟输出!"; + * //互斥延迟执行 + * var testDefer1 = UM.utils.defer(test,1000,true); + * testDefer1(); => //本次不执行 + * testDefer1(); => "延迟输出!"; + */ + defer:function (fn, delay, exclusion) { + var timerID; + return function () { + if (exclusion) { + clearTimeout(timerID); + } + timerID = setTimeout(fn, delay); + }; + }, + + /** + * 查找元素item在数组array中的索引, 若找不到返回-1 + * @name indexOf + * @grammar UM.utils.indexOf(array,item) => index|-1 //默认从数组开头部开始搜索 + * @grammar UM.utils.indexOf(array,item,start) => index|-1 //start指定开始查找的位置 + */ + indexOf:function (array, item, start) { + var index = -1; + start = this.isNumber(start) ? start : 0; + this.each(array, function (v, i) { + if (i >= start && v === item) { + index = i; + return false; + } + }); + return index; + }, + + /** + * 移除数组array中的元素item + * @name removeItem + * @grammar UM.utils.removeItem(array,item) + */ + removeItem:function (array, item) { + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] === item) { + array.splice(i, 1); + i--; + } + } + }, + + /** + * 删除字符串str的首尾空格 + * @name trim + * @grammar UM.utils.trim(str) => String + */ + trim:function (str) { + return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, ''); + }, + + /** + * 将字符串list(以','分隔)或者数组list转成哈希对象 + * @name listToMap + * @grammar UM.utils.listToMap(list) => Object //Object形如{test:1,br:1,textarea:1} + */ + listToMap:function (list) { + if (!list)return {}; + list = utils.isArray(list) ? list : list.split(','); + for (var i = 0, ci, obj = {}; ci = list[i++];) { + obj[ci.toUpperCase()] = obj[ci] = 1; + } + return obj; + }, + + /** + * 将str中的html符号转义,默认将转义''&<">''四个字符,可自定义reg来确定需要转义的字符 + * @name unhtml + * @grammar UM.utils.unhtml(str); => String + * @grammar UM.utils.unhtml(str,reg) => String + * @example + * var html = 'You say:"你好!Baidu & UEditor!"'; + * UM.utils.unhtml(html); ==> <body>You say:"你好!Baidu & UEditor!"</body> + * UM.utils.unhtml(html,/[<>]/g) ==> <body>You say:"你好!Baidu & UEditor!"</body> + */ + unhtml:function (str, reg) { + return str ? str.replace(reg || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g, function (a, b) { + if (b) { + return a; + } else { + return { + '<':'<', + '&':'&', + '"':'"', + '>':'>', + "'":''' + }[a] + } + + }) : ''; + }, + /** + * 将str中的转义字符还原成html字符 + * @name html + * @grammar UM.utils.html(str) => String //详细参见unhtml + */ + html:function (str) { + return str ? str.replace(/&((g|l|quo)t|amp|#39);/g, function (m) { + return { + '<':'<', + '&':'&', + '"':'"', + '>':'>', + ''':"'" + }[m] + }) : ''; + }, + /** + * 将css样式转换为驼峰的形式。如font-size => fontSize + * @name cssStyleToDomStyle + * @grammar UM.utils.cssStyleToDomStyle(cssName) => String + */ + cssStyleToDomStyle:function () { + var test = document.createElement('div').style, + cache = { + 'float':test.cssFloat != undefined ? 'cssFloat' : test.styleFloat != undefined ? 'styleFloat' : 'float' + }; + + return function (cssName) { + return cache[cssName] || (cache[cssName] = cssName.toLowerCase().replace(/-./g, function (match) { + return match.charAt(1).toUpperCase(); + })); + }; + }(), + /** + * 动态加载文件到doc中,并依据obj来设置属性,加载成功后执行回调函数fn + * @name loadFile + * @grammar UM.utils.loadFile(doc,obj) + * @grammar UM.utils.loadFile(doc,obj,fn) + * @example + * //指定加载到当前document中一个script文件,加载成功后执行function + * utils.loadFile( document, { + * src:"test.js", + * tag:"script", + * type:"text/javascript", + * defer:"defer" + * }, function () { + * console.log('加载成功!') + * }); + */ + loadFile:function () { + var tmpList = []; + + function getItem(doc, obj) { + try { + for (var i = 0, ci; ci = tmpList[i++];) { + if (ci.doc === doc && ci.url == (obj.src || obj.href)) { + return ci; + } + } + } catch (e) { + return null; + } + + } + + return function (doc, obj, fn) { + var item = getItem(doc, obj); + if (item) { + if (item.ready) { + fn && fn(); + } else { + item.funs.push(fn) + } + return; + } + tmpList.push({ + doc:doc, + url:obj.src || obj.href, + funs:[fn] + }); + if (!doc.body) { + var html = []; + for (var p in obj) { + if (p == 'tag')continue; + html.push(p + '="' + obj[p] + '"') + } + doc.write('<' + obj.tag + ' ' + html.join(' ') + ' >'); + return; + } + if (obj.id && doc.getElementById(obj.id)) { + return; + } + var element = doc.createElement(obj.tag); + delete obj.tag; + for (var p in obj) { + element.setAttribute(p, obj[p]); + } + element.onload = element.onreadystatechange = function () { + if (!this.readyState || /loaded|complete/.test(this.readyState)) { + item = getItem(doc, obj); + if (item.funs.length > 0) { + item.ready = 1; + for (var fi; fi = item.funs.pop();) { + fi(); + } + } + element.onload = element.onreadystatechange = null; + } + }; + element.onerror = function () { + throw Error('The load ' + (obj.href || obj.src) + ' fails,check the url settings of file umeditor.config.js ') + }; + doc.getElementsByTagName("head")[0].appendChild(element); + } + }(), + /** + * 判断obj对象是否为空 + * @name isEmptyObject + * @grammar UM.utils.isEmptyObject(obj) => true|false + * @example + * UM.utils.isEmptyObject({}) ==>true + * UM.utils.isEmptyObject([]) ==>true + * UM.utils.isEmptyObject("") ==>true + */ + isEmptyObject:function (obj) { + if (obj == null) return true; + if (this.isArray(obj) || this.isString(obj)) return obj.length === 0; + for (var key in obj) if (obj.hasOwnProperty(key)) return false; + return true; + }, + + /** + * 统一将颜色值使用16进制形式表示 + * @name fixColor + * @grammar UM.utils.fixColor(name,value) => value + * @example + * rgb(255,255,255) => "#ffffff" + */ + fixColor:function (name, value) { + if (/color/i.test(name) && /rgba?/.test(value)) { + var array = value.split(","); + if (array.length > 3) + return ""; + value = "#"; + for (var i = 0, color; color = array[i++];) { + color = parseInt(color.replace(/[^\d]/gi, ''), 10).toString(16); + value += color.length == 1 ? "0" + color : color; + } + value = value.toUpperCase(); + } + return value; + }, + + /** + * 深度克隆对象,从source到target + * @name clone + * @grammar UM.utils.clone(source) => anthorObj 新的对象是完整的source的副本 + * @grammar UM.utils.clone(source,target) => target包含了source的所有内容,重名会覆盖 + */ + clone:function (source, target) { + var tmp; + target = target || {}; + for (var i in source) { + if (source.hasOwnProperty(i)) { + tmp = source[i]; + if (typeof tmp == 'object') { + target[i] = utils.isArray(tmp) ? [] : {}; + utils.clone(source[i], target[i]) + } else { + target[i] = tmp; + } + } + } + return target; + }, + /** + * 转换cm/pt到px + * @name transUnitToPx + * @grammar UM.utils.transUnitToPx('20pt') => '27px' + * @grammar UM.utils.transUnitToPx('0pt') => '0' + */ + transUnitToPx:function (val) { + if (!/(pt|cm)/.test(val)) { + return val + } + var unit; + val.replace(/([\d.]+)(\w+)/, function (str, v, u) { + val = v; + unit = u; + }); + switch (unit) { + case 'cm': + val = parseFloat(val) * 25; + break; + case 'pt': + val = Math.round(parseFloat(val) * 96 / 72); + } + return val + (val ? 'px' : ''); + }, + /** + * 动态添加css样式 + * @name cssRule + * @grammar UM.utils.cssRule('添加的样式的节点名称',['样式','放到哪个document上']) + * @grammar UM.utils.cssRule('body','body{background:#ccc}') => null //给body添加背景颜色 + * @grammar UM.utils.cssRule('body') =>样式的字符串 //取得key值为body的样式的内容,如果没有找到key值先关的样式将返回空,例如刚才那个背景颜色,将返回 body{background:#ccc} + * @grammar UM.utils.cssRule('body','') =>null //清空给定的key值的背景颜色 + */ + cssRule:browser.ie && browser.version != 11 ? function (key, style, doc) { + var indexList, index; + doc = doc || document; + if (doc.indexList) { + indexList = doc.indexList; + } else { + indexList = doc.indexList = {}; + } + var sheetStyle; + if (!indexList[key]) { + if (style === undefined) { + return '' + } + sheetStyle = doc.createStyleSheet('', index = doc.styleSheets.length); + indexList[key] = index; + } else { + sheetStyle = doc.styleSheets[indexList[key]]; + } + if (style === undefined) { + return sheetStyle.cssText + } + sheetStyle.cssText = style || '' + } : function (key, style, doc) { + doc = doc || document; + var head = doc.getElementsByTagName('head')[0], node; + if (!(node = doc.getElementById(key))) { + if (style === undefined) { + return '' + } + node = doc.createElement('style'); + node.id = key; + head.appendChild(node) + } + if (style === undefined) { + return node.innerHTML + } + if (style !== '') { + node.innerHTML = style; + } else { + head.removeChild(node) + } + } + +}; +/** + * 判断str是否为字符串 + * @name isString + * @grammar UM.utils.isString(str) => true|false + */ +/** + * 判断array是否为数组 + * @name isArray + * @grammar UM.utils.isArray(obj) => true|false + */ +/** + * 判断obj对象是否为方法 + * @name isFunction + * @grammar UM.utils.isFunction(obj) => true|false + */ +/** + * 判断obj对象是否为数字 + * @name isNumber + * @grammar UM.utils.isNumber(obj) => true|false + */ +utils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object'], function (v) { + UM.utils['is' + v] = function (obj) { + return Object.prototype.toString.apply(obj) == '[object ' + v + ']'; + } +}); +/** + * @file + * @name UM.EventBase + * @short EventBase + * @import editor.js,core/utils.js + * @desc UE采用的事件基类,继承此类的对应类将获取addListener,removeListener,fireEvent方法。 + * 在UE中,Editor以及所有ui实例都继承了该类,故可以在对应的ui对象以及editor对象上使用上述方法。 + */ +var EventBase = UM.EventBase = function () {}; + +EventBase.prototype = { + /** + * 注册事件监听器 + * @name addListener + * @grammar editor.addListener(types,fn) //types为事件名称,多个可用空格分隔 + * @example + * editor.addListener('selectionchange',function(){ + * console.log("选区已经变化!"); + * }) + * editor.addListener('beforegetcontent aftergetcontent',function(type){ + * if(type == 'beforegetcontent'){ + * //do something + * }else{ + * //do something + * } + * console.log(this.getContent) // this是注册的事件的编辑器实例 + * }) + */ + addListener:function (types, listener) { + types = utils.trim(types).split(' '); + for (var i = 0, ti; ti = types[i++];) { + getListener(this, ti, true).push(listener); + } + }, + /** + * 移除事件监听器 + * @name removeListener + * @grammar editor.removeListener(types,fn) //types为事件名称,多个可用空格分隔 + * @example + * //changeCallback为方法体 + * editor.removeListener("selectionchange",changeCallback); + */ + removeListener:function (types, listener) { + types = utils.trim(types).split(' '); + for (var i = 0, ti; ti = types[i++];) { + utils.removeItem(getListener(this, ti) || [], listener); + } + }, + /** + * 触发事件 + * @name fireEvent + * @grammar editor.fireEvent(types) //types为事件名称,多个可用空格分隔 + * @example + * editor.fireEvent("selectionchange"); + */ + fireEvent:function () { + var types = arguments[0]; + types = utils.trim(types).split(' '); + for (var i = 0, ti; ti = types[i++];) { + var listeners = getListener(this, ti), + r, t, k; + if (listeners) { + k = listeners.length; + while (k--) { + if(!listeners[k])continue; + t = listeners[k].apply(this, arguments); + if(t === true){ + return t; + } + if (t !== undefined) { + r = t; + } + } + } + if (t = this['on' + ti.toLowerCase()]) { + r = t.apply(this, arguments); + } + } + return r; + } +}; +/** + * 获得对象所拥有监听类型的所有监听器 + * @public + * @function + * @param {Object} obj 查询监听器的对象 + * @param {String} type 事件类型 + * @param {Boolean} force 为true且当前所有type类型的侦听器不存在时,创建一个空监听器数组 + * @returns {Array} 监听器数组 + */ +function getListener(obj, type, force) { + var allListeners; + type = type.toLowerCase(); + return ( ( allListeners = ( obj.__allListeners || force && ( obj.__allListeners = {} ) ) ) + && ( allListeners[type] || force && ( allListeners[type] = [] ) ) ); +} + + +///import editor.js +///import core/dom/dom.js +///import core/utils.js +/** + * dtd html语义化的体现类 + * @constructor + * @namespace dtd + */ +var dtd = dom.dtd = (function() { + function _( s ) { + for (var k in s) { + s[k.toUpperCase()] = s[k]; + } + return s; + } + var X = utils.extend2; + var A = _({isindex:1,fieldset:1}), + B = _({input:1,button:1,select:1,textarea:1,label:1}), + C = X( _({a:1}), B ), + D = X( {iframe:1}, C ), + E = _({hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}), + F = _({ins:1,del:1,script:1,style:1}), + G = X( _({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1}), F ), + H = X( _({sub:1,img:1,embed:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1}), G ), + I = X( _({p:1}), H ), + J = X( _({iframe:1}), H, B ), + K = _({img:1,embed:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1}), + + L = X( _({a:0}), J ),//a不能被切开,所以把他 + M = _({tr:1}), + N = _({'#':1}), + O = X( _({param:1}), K ), + P = X( _({form:1}), A, D, E, I ), + Q = _({li:1,ol:1,ul:1}), + R = _({style:1,script:1}), + S = _({base:1,link:1,meta:1,title:1}), + T = X( S, R ), + U = _({head:1,body:1}), + V = _({html:1}); + + var block = _({address:1,blockquote:1,center:1,dir:1,div:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,menu:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1}), + + empty = _({area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1}); + + return _({ + + // $ 表示自定的属性 + + // body外的元素列表. + $nonBodyContent: X( V, U, S ), + + //块结构元素列表 + $block : block, + + //内联元素列表 + $inline : L, + + $inlineWithA : X(_({a:1}),L), + + $body : X( _({script:1,style:1}), block ), + + $cdata : _({script:1,style:1}), + + //自闭和元素 + $empty : empty, + + //不是自闭合,但不能让range选中里边 + $nonChild : _({iframe:1,textarea:1}), + //列表元素列表 + $listItem : _({dd:1,dt:1,li:1}), + + //列表根元素列表 + $list: _({ul:1,ol:1,dl:1}), + + //不能认为是空的元素 + $isNotEmpty : _({table:1,ul:1,ol:1,dl:1,iframe:1,area:1,base:1,col:1,hr:1,img:1,embed:1,input:1,link:1,meta:1,param:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1}), + + //如果没有子节点就可以删除的元素列表,像span,a + $removeEmpty : _({a:1,abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1}), + + $removeEmptyBlock : _({'p':1,'div':1}), + + //在table元素里的元素列表 + $tableContent : _({caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1,table:1}), + //不转换的标签 + $notTransContent : _({pre:1,script:1,style:1,textarea:1}), + html: U, + head: T, + style: N, + script: N, + body: P, + base: {}, + link: {}, + meta: {}, + title: N, + col : {}, + tr : _({td:1,th:1}), + img : {}, + embed: {}, + colgroup : _({thead:1,col:1,tbody:1,tr:1,tfoot:1}), + noscript : P, + td : P, + br : {}, + th : P, + center : P, + kbd : L, + button : X( I, E ), + basefont : {}, + h5 : L, + h4 : L, + samp : L, + h6 : L, + ol : Q, + h1 : L, + h3 : L, + option : N, + h2 : L, + form : X( A, D, E, I ), + select : _({optgroup:1,option:1}), + font : L, + ins : L, + menu : Q, + abbr : L, + label : L, + table : _({thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1}), + code : L, + tfoot : M, + cite : L, + li : P, + input : {}, + iframe : P, + strong : L, + textarea : N, + noframes : P, + big : L, + small : L, + //trace: + span :_({'#':1,br:1,b:1,strong:1,u:1,i:1,em:1,sub:1,sup:1,strike:1,span:1}), + hr : L, + dt : L, + sub : L, + optgroup : _({option:1}), + param : {}, + bdo : L, + 'var' : L, + div : P, + object : O, + sup : L, + dd : P, + strike : L, + area : {}, + dir : Q, + map : X( _({area:1,form:1,p:1}), A, F, E ), + applet : O, + dl : _({dt:1,dd:1}), + del : L, + isindex : {}, + fieldset : X( _({legend:1}), K ), + thead : M, + ul : Q, + acronym : L, + b : L, + a : X( _({a:1}), J ), + blockquote :X(_({td:1,tr:1,tbody:1,li:1}),P), + caption : L, + i : L, + u : L, + tbody : M, + s : L, + address : X( D, I ), + tt : L, + legend : L, + q : L, + pre : X( G, C ), + p : X(_({'a':1}),L), + em :L, + dfn : L + }); +})(); + +/** + * @file + * @name UM.dom.domUtils + * @short DomUtils + * @import editor.js, core/utils.js,core/browser.js,core/dom/dtd.js + * @desc UEditor封装的底层dom操作库 + */ + +function getDomNode(node, start, ltr, startFromChild, fn, guard) { + var tmpNode = startFromChild && node[start], + parent; + !tmpNode && (tmpNode = node[ltr]); + while (!tmpNode && (parent = (parent || node).parentNode)) { + if (parent.tagName == 'BODY' || guard && !guard(parent)) { + return null; + } + tmpNode = parent[ltr]; + } + if (tmpNode && fn && !fn(tmpNode)) { + return getDomNode(tmpNode, start, ltr, false, fn); + } + return tmpNode; +} +var attrFix = ie && browser.version < 9 ? { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder" + } : { + tabindex: "tabIndex", + readonly: "readOnly" + }, + styleBlock = utils.listToMap([ + '-webkit-box', '-moz-box', 'block' , + 'list-item' , 'table' , 'table-row-group' , + 'table-header-group', 'table-footer-group' , + 'table-row' , 'table-column-group' , 'table-column' , + 'table-cell' , 'table-caption' + ]); +var domUtils = dom.domUtils = { + //节点常量 + NODE_ELEMENT: 1, + NODE_DOCUMENT: 9, + NODE_TEXT: 3, + NODE_COMMENT: 8, + NODE_DOCUMENT_FRAGMENT: 11, + + //位置关系 + POSITION_IDENTICAL: 0, + POSITION_DISCONNECTED: 1, + POSITION_FOLLOWING: 2, + POSITION_PRECEDING: 4, + POSITION_IS_CONTAINED: 8, + POSITION_CONTAINS: 16, + //ie6使用其他的会有一段空白出现 + fillChar: ie && browser.version == '6' ? '\ufeff' : '\u200B', + //-------------------------Node部分-------------------------------- + keys: { + /*Backspace*/ 8: 1, /*Delete*/ 46: 1, + /*Shift*/ 16: 1, /*Ctrl*/ 17: 1, /*Alt*/ 18: 1, + 37: 1, 38: 1, 39: 1, 40: 1, + 13: 1 /*enter*/ + }, + breakParent:function (node, parent) { + var tmpNode, + parentClone = node, + clone = node, + leftNodes, + rightNodes; + do { + parentClone = parentClone.parentNode; + if (leftNodes) { + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(leftNodes); + leftNodes = tmpNode; + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(rightNodes); + rightNodes = tmpNode; + } else { + leftNodes = parentClone.cloneNode(false); + rightNodes = leftNodes.cloneNode(false); + } + while (tmpNode = clone.previousSibling) { + leftNodes.insertBefore(tmpNode, leftNodes.firstChild); + } + while (tmpNode = clone.nextSibling) { + rightNodes.appendChild(tmpNode); + } + clone = parentClone; + } while (parent !== parentClone); + tmpNode = parent.parentNode; + tmpNode.insertBefore(leftNodes, parent); + tmpNode.insertBefore(rightNodes, parent); + tmpNode.insertBefore(node, rightNodes); + domUtils.remove(parent); + return node; + }, + trimWhiteTextNode:function (node) { + function remove(dir) { + var child; + while ((child = node[dir]) && child.nodeType == 3 && domUtils.isWhitespace(child)) { + node.removeChild(child); + } + } + remove('firstChild'); + remove('lastChild'); + }, + /** + * 获取节点A相对于节点B的位置关系 + * @name getPosition + * @grammar UM.dom.domUtils.getPosition(nodeA,nodeB) => Number + * @example + * switch (returnValue) { + * case 0: //相等,同一节点 + * case 1: //无关,节点不相连 + * case 2: //跟随,即节点A头部位于节点B头部的后面 + * case 4: //前置,即节点A头部位于节点B头部的前面 + * case 8: //被包含,即节点A被节点B包含 + * case 10://组合类型,即节点A满足跟随节点B且被节点B包含。实际上,如果被包含,必定跟随,所以returnValue事实上不会存在8的情况。 + * case 16://包含,即节点A包含节点B + * case 20://组合类型,即节点A满足前置节点A且包含节点B。同样,如果包含,必定前置,所以returnValue事实上也不会存在16的情况 + * } + */ + getPosition: function (nodeA, nodeB) { + // 如果两个节点是同一个节点 + if (nodeA === nodeB) { + // domUtils.POSITION_IDENTICAL + return 0; + } + var node, + parentsA = [nodeA], + parentsB = [nodeB]; + node = nodeA; + while (node = node.parentNode) { + // 如果nodeB是nodeA的祖先节点 + if (node === nodeB) { + // domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING + return 10; + } + parentsA.push(node); + } + node = nodeB; + while (node = node.parentNode) { + // 如果nodeA是nodeB的祖先节点 + if (node === nodeA) { + // domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING + return 20; + } + parentsB.push(node); + } + parentsA.reverse(); + parentsB.reverse(); + if (parentsA[0] !== parentsB[0]) { + // domUtils.POSITION_DISCONNECTED + return 1; + } + var i = -1; + while (i++, parentsA[i] === parentsB[i]) { + } + nodeA = parentsA[i]; + nodeB = parentsB[i]; + while (nodeA = nodeA.nextSibling) { + if (nodeA === nodeB) { + // domUtils.POSITION_PRECEDING + return 4 + } + } + // domUtils.POSITION_FOLLOWING + return 2; + }, + + /** + * 返回节点node在父节点中的索引位置 + * @name getNodeIndex + * @grammar UM.dom.domUtils.getNodeIndex(node) => Number //索引值从0开始 + */ + getNodeIndex: function (node, ignoreTextNode) { + var preNode = node, + i = 0; + while (preNode = preNode.previousSibling) { + if (ignoreTextNode && preNode.nodeType == 3) { + if (preNode.nodeType != preNode.nextSibling.nodeType) { + i++; + } + continue; + } + i++; + } + return i; + }, + + /** + * 检测节点node是否在节点doc的树上,实质上是检测是否被doc包含 + * @name inDoc + * @grammar UM.dom.domUtils.inDoc(node,doc) => true|false + */ + inDoc: function (node, doc) { + return domUtils.getPosition(node, doc) == 10; + }, + /** + * 查找node节点的祖先节点 + * @name findParent + * @grammar UM.dom.domUtils.findParent(node) => Element // 直接返回node节点的父节点 + * @grammar UM.dom.domUtils.findParent(node,filterFn) => Element //filterFn为过滤函数,node作为参数,返回true时才会将node作为符合要求的节点返回 + * @grammar UM.dom.domUtils.findParent(node,filterFn,includeSelf) => Element //includeSelf指定是否包含自身 + */ + findParent: function (node, filterFn, includeSelf) { + if (node && !domUtils.isBody(node)) { + node = includeSelf ? node : node.parentNode; + while (node) { + if (!filterFn || filterFn(node) || domUtils.isBody(node)) { + return filterFn && !filterFn(node) && domUtils.isBody(node) ? null : node; + } + node = node.parentNode; + } + } + return null; + }, + /** + * 通过tagName查找node节点的祖先节点 + * @name findParentByTagName + * @grammar UM.dom.domUtils.findParentByTagName(node,tagNames) => Element //tagNames支持数组,区分大小写 + * @grammar UM.dom.domUtils.findParentByTagName(node,tagNames,includeSelf) => Element //includeSelf指定是否包含自身 + * @grammar UM.dom.domUtils.findParentByTagName(node,tagNames,includeSelf,excludeFn) => Element //excludeFn指定例外过滤条件,返回true时忽略该节点 + */ + findParentByTagName: function (node, tagNames, includeSelf, excludeFn) { + tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); + return domUtils.findParent(node, function (node) { + return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); + }, includeSelf); + }, + /** + * 查找节点node的祖先节点集合 + * @name findParents + * @grammar UM.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 + * @grammar UM.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 + * @grammar UM.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 + * @grammar UM.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 + */ + findParents: function (node, includeSelf, filterFn, closerFirst) { + var parents = includeSelf && ( filterFn && filterFn(node) || !filterFn ) ? [node] : []; + while (node = domUtils.findParent(node, filterFn)) { + parents.push(node); + } + return closerFirst ? parents : parents.reverse(); + }, + + /** + * 在节点node后面插入新节点newNode + * @name insertAfter + * @grammar UM.dom.domUtils.insertAfter(node,newNode) => newNode + */ + insertAfter: function (node, newNode) { + return node.parentNode.insertBefore(newNode, node.nextSibling); + }, + + /** + * 删除节点node,并根据keepChildren指定是否保留子节点 + * @name remove + * @grammar UM.dom.domUtils.remove(node) => node + * @grammar UM.dom.domUtils.remove(node,keepChildren) => node + */ + remove: function (node, keepChildren) { + + var parent = node.parentNode, + child; + if (parent) { + if (keepChildren && node.hasChildNodes()) { + while (child = node.firstChild) { + parent.insertBefore(child, node); + } + } + parent.removeChild(node); + } + return node; + }, + + + /** + * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点, + * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```html + * + *
      + * + *
      + * xxx + * + * + * ``` + * @example + * ```html + * + *
      + * + * xxx + *
      + * xxx + * + * + * ``` + */ + + /** + * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点, + * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false, + * 则执行getNextDomNode(Node node)的查找过程。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @param { Boolean } startFromChild 查找过程是否从其子节点开始 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @see UE.dom.domUtils.getNextDomNode(Node) + */ + getNextDomNode:function (node, startFromChild, filterFn, guard) { + return getDomNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard); + }, + getPreDomNode:function (node, startFromChild, filterFn, guard) { + return getDomNode(node, 'lastChild', 'previousSibling', startFromChild, filterFn, guard); + }, + + /** + * 检测节点node是否属于bookmark节点 + * @name isBookmarkNode + * @grammar UM.dom.domUtils.isBookmarkNode(node) => true|false + */ + isBookmarkNode: function (node) { + return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id); + }, + /** + * 获取节点node所在的window对象 + * @name getWindow + * @grammar UM.dom.domUtils.getWindow(node) => window对象 + */ + getWindow: function (node) { + var doc = node.ownerDocument || node; + return doc.defaultView || doc.parentWindow; + }, + + /** + * 获取离nodeA与nodeB最近的公共的祖先节点 + * @method getCommonAncestor + * @param { Node } nodeA 第一个节点 + * @param { Node } nodeB 第二个节点 + * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 + * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 + * @example + * ```javascript + * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); + * //output: true + * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); + * ``` + */ + getCommonAncestor:function (nodeA, nodeB) { + if (nodeA === nodeB) + return nodeA; + var parentsA = [nodeA] , parentsB = [nodeB], parent = nodeA, i = -1; + while (parent = parent.parentNode) { + if (parent === nodeB) { + return parent; + } + parentsA.push(parent); + } + parent = nodeB; + while (parent = parent.parentNode) { + if (parent === nodeA) + return parent; + parentsB.push(parent); + } + parentsA.reverse(); + parentsB.reverse(); + while (i++, parentsA[i] === parentsB[i]) { + } + return i == 0 ? null : parentsA[i - 1]; + + }, + /** + * 清除node节点左右连续为空的兄弟inline节点 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * 则这些兄弟节点将被删除 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 + * @example + * ```html + * + *
      + * + * + * + * xxx + * + * + * + * ``` + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + clearEmptySibling:function (node, ignoreNext, ignorePre) { + function clear(next, dir) { + var tmpNode; + while (next && !domUtils.isBookmarkNode(next) && (domUtils.isEmptyInlineElement(next) + //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 + || !new RegExp('[^\t\n\r' + domUtils.fillChar + ']').test(next.nodeValue) )) { + tmpNode = next[dir]; + domUtils.remove(next); + next = tmpNode; + } + } + !ignoreNext && clear(node.nextSibling, 'nextSibling'); + !ignorePre && clear(node.previousSibling, 'previousSibling'); + }, + + /** + * 将一个文本节点node拆分成两个文本节点,offset指定拆分位置 + * @name split + * @grammar UM.dom.domUtils.split(node,offset) => TextNode //返回从切分位置开始的后一个文本节点 + */ + split: function (node, offset) { + var doc = node.ownerDocument; + if (browser.ie && offset == node.nodeValue.length) { + var next = doc.createTextNode(''); + return domUtils.insertAfter(node, next); + } + var retval = node.splitText(offset); + //ie8下splitText不会跟新childNodes,我们手动触发他的更新 + if (browser.ie8) { + var tmpNode = doc.createTextNode(''); + domUtils.insertAfter(retval, tmpNode); + domUtils.remove(tmpNode); + } + return retval; + }, + + /** + * 检测节点node是否为空节点(包括空格、换行、占位符等字符) + * @name isWhitespace + * @grammar UM.dom.domUtils.isWhitespace(node) => true|false + */ + isWhitespace: function (node) { + return !new RegExp('[^ \t\n\r' + domUtils.fillChar + ']').test(node.nodeValue); + }, + /** + * 获取元素element相对于viewport的位置坐标 + * @name getXY + * @grammar UM.dom.domUtils.getXY(element) => Object //返回坐标对象{x:left,y:top} + */ + getXY: function (element) { + var x = 0, y = 0; + while (element.offsetParent) { + y += element.offsetTop; + x += element.offsetLeft; + element = element.offsetParent; + } + return { 'x': x, 'y': y}; + }, + /** + * 检查节点node是否是空inline节点 + * @name isEmptyInlineElement + * @grammar UM.dom.domUtils.isEmptyInlineElement(node) => 1|0 + * @example + * => 1 + * => 1 + * => 1 + * xx => 0 + */ + isEmptyInlineElement: function (node) { + if (node.nodeType != 1 || !dtd.$removeEmpty[ node.tagName ]) { + return 0; + } + node = node.firstChild; + while (node) { + //如果是创建的bookmark就跳过 + if (domUtils.isBookmarkNode(node)) { + return 0; + } + if (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node) || + node.nodeType == 3 && !domUtils.isWhitespace(node) + ) { + return 0; + } + node = node.nextSibling; + } + return 1; + + }, + + + /** + * 检查节点node是否为块元素 + * @name isBlockElm + * @grammar UM.dom.domUtils.isBlockElm(node) => true|false + */ + isBlockElm: function (node) { + return node.nodeType == 1 && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, 'display')]) && !dtd.$nonChild[node.tagName]; + }, + + + /** + * 原生方法getElementsByTagName的封装 + * @name getElementsByTagName + * @grammar UM.dom.domUtils.getElementsByTagName(node,tagName) => Array //节点集合数组 + */ + getElementsByTagName: function (node, name, filter) { + if (filter && utils.isString(filter)) { + var className = filter; + filter = function (node) { + var result = false; + $.each(utils.trim(className).replace(/[ ]{2,}/g, ' ').split(' '), function (i, v) { + if ($(node).hasClass(v)) { + result = true; + return false; + } + }) + return result; + } + } + name = utils.trim(name).replace(/[ ]{2,}/g, ' ').split(' '); + var arr = []; + for (var n = 0, ni; ni = name[n++];) { + var list = node.getElementsByTagName(ni); + for (var i = 0, ci; ci = list[i++];) { + if (!filter || filter(ci)) + arr.push(ci); + } + } + return arr; + }, + + + /** + * 设置节点node及其子节点不会被选中 + * @name unSelectable + * @grammar UM.dom.domUtils.unSelectable(node) + */ + unSelectable: ie && browser.ie9below || browser.opera ? function (node) { + //for ie9 + node.onselectstart = function () { + return false; + }; + node.onclick = node.onkeyup = node.onkeydown = function () { + return false; + }; + node.unselectable = 'on'; + node.setAttribute("unselectable", "on"); + for (var i = 0, ci; ci = node.all[i++];) { + switch (ci.tagName.toLowerCase()) { + case 'iframe' : + case 'textarea' : + case 'input' : + case 'select' : + break; + default : + ci.unselectable = 'on'; + node.setAttribute("unselectable", "on"); + } + } + } : function (node) { + node.style.MozUserSelect = + node.style.webkitUserSelect = + node.style.msUserSelect = + node.style.KhtmlUserSelect = 'none'; + }, + /** + * 删除节点node上的属性attrNames,attrNames为属性名称数组 + * @name removeAttributes + * @grammar UM.dom.domUtils.removeAttributes(node,attrNames) + * @example + * //Before remove + * xxxxx + * //Remove + * UM.dom.domUtils.removeAttributes(node,["id","name"]); + * //After remove + * xxxxx + */ + removeAttributes: function (node, attrNames) { + attrNames = utils.isArray(attrNames) ? attrNames : utils.trim(attrNames).replace(/[ ]{2,}/g, ' ').split(' '); + for (var i = 0, ci; ci = attrNames[i++];) { + ci = attrFix[ci] || ci; + switch (ci) { + case 'className': + node[ci] = ''; + break; + case 'style': + node.style.cssText = ''; + !browser.ie && node.removeAttributeNode(node.getAttributeNode('style')) + } + node.removeAttribute(ci); + } + }, + /** + * 在doc下创建一个标签名为tag,属性为attrs的元素 + * @name createElement + * @grammar UM.dom.domUtils.createElement(doc,tag,attrs) => Node //返回创建的节点 + */ + createElement: function (doc, tag, attrs) { + return domUtils.setAttributes(doc.createElement(tag), attrs) + }, + /** + * 为节点node添加属性attrs,attrs为属性键值对 + * @name setAttributes + * @grammar UM.dom.domUtils.setAttributes(node,attrs) => node + */ + setAttributes: function (node, attrs) { + for (var attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + var value = attrs[attr]; + switch (attr) { + case 'class': + //ie下要这样赋值,setAttribute不起作用 + node.className = value; + break; + case 'style' : + node.style.cssText = node.style.cssText + ";" + value; + break; + case 'innerHTML': + node[attr] = value; + break; + case 'value': + node.value = value; + break; + default: + node.setAttribute(attrFix[attr] || attr, value); + } + } + } + return node; + }, + + /** + * 获取元素element的计算样式 + * @name getComputedStyle + * @grammar UM.dom.domUtils.getComputedStyle(element,styleName) => String //返回对应样式名称的样式值 + * @example + * getComputedStyle(document.body,"font-size") => "15px" + * getComputedStyle(form,"color") => "#ffccdd" + */ + getComputedStyle: function (element, styleName) { + return utils.transUnitToPx(utils.fixColor(styleName, $(element).css(styleName))); + }, + + /** + * 阻止事件默认行为 + * @param {Event} evt 需要组织的事件对象 + */ + preventDefault: function (evt) { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + }, + + /** + * 删除元素element指定的样式 + * @method removeStyle + * @param { Element } element 需要删除样式的元素 + * @param { String } styleName 需要删除的样式名 + * @example + * ```html + * + * + * + * ``` + */ + removeStyle:function (element, name) { + if(browser.ie ){ + //针对color先单独处理一下 + if(name == 'color'){ + name = '(^|;)' + name; + } + element.style.cssText = element.style.cssText.replace(new RegExp(name + '[^:]*:[^;]+;?','ig'),'') + }else{ + if (element.style.removeProperty) { + element.style.removeProperty (name); + }else { + element.style.removeAttribute (utils.cssStyleToDomStyle(name)); + } + } + + + if (!element.style.cssText) { + domUtils.removeAttributes(element, ['style']); + } + }, + + /** + * 获取元素element的某个样式值 + * @name getStyle + * @grammar UM.dom.domUtils.getStyle(element,name) => String + */ + getStyle: function (element, name) { + var value = element.style[ utils.cssStyleToDomStyle(name) ]; + return utils.fixColor(name, value); + }, + /** + * 为元素element设置样式属性值 + * @name setStyle + * @grammar UM.dom.domUtils.setStyle(element,name,value) + */ + setStyle: function (element, name, value) { + element.style[utils.cssStyleToDomStyle(name)] = value; + if (!utils.trim(element.style.cssText)) { + this.removeAttributes(element, 'style') + } + }, + + /** + * 删除_moz_dirty属性 + * @function + */ + removeDirtyAttr: function (node) { + for (var i = 0, ci, nodes = node.getElementsByTagName('*'); ci = nodes[i++];) { + ci.removeAttribute('_moz_dirty'); + } + node.removeAttribute('_moz_dirty'); + }, + /** + * 返回子节点的数量 + * @function + * @param {Node} node 父节点 + * @param {Function} fn 过滤子节点的规则,若为空,则得到所有子节点的数量 + * @return {Number} 符合条件子节点的数量 + */ + getChildCount: function (node, fn) { + var count = 0, first = node.firstChild; + fn = fn || function () { + return 1; + }; + while (first) { + if (fn(first)) { + count++; + } + first = first.nextSibling; + } + return count; + }, + + /** + * 判断是否为空节点 + * @function + * @param {Node} node 节点 + * @return {Boolean} 是否为空节点 + */ + isEmptyNode: function (node) { + return !node.firstChild || domUtils.getChildCount(node, function (node) { + return !domUtils.isBr(node) && !domUtils.isBookmarkNode(node) && !domUtils.isWhitespace(node) + }) == 0 + }, + + /** + * 判断节点是否为br + * @function + * @param {Node} node 节点 + */ + isBr: function (node) { + return node.nodeType == 1 && node.tagName == 'BR'; + }, + + isEmptyBlock: function (node, reg) { + if (node.nodeType != 1) + return 0; + reg = reg || new RegExp('[ \t\r\n' + domUtils.fillChar + ']', 'g'); + if (node[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').length > 0) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + }, + + //判断是否是编辑器自定义的参数 + isCustomeNode: function (node) { + return node.nodeType == 1 && node.getAttribute('_ue_custom_node_'); + }, + fillNode: function (doc, node) { + var tmpNode = browser.ie ? doc.createTextNode(domUtils.fillChar) : doc.createElement('br'); + node.innerHTML = ''; + node.appendChild(tmpNode); + }, + isBoundaryNode: function (node, dir) { + var tmp; + while (!domUtils.isBody(node)) { + tmp = node; + node = node.parentNode; + if (tmp !== node[dir]) { + return false; + } + } + return true; + }, + isFillChar: function (node, isInStart) { + return node.nodeType == 3 && !node.nodeValue.replace(new RegExp((isInStart ? '^' : '' ) + domUtils.fillChar), '').length + }, + isBody: function(node){ + return $(node).hasClass('edui-body-container'); + } +}; +var fillCharReg = new RegExp(domUtils.fillChar, 'g'); +///import editor.js +///import core/utils.js +///import core/browser.js +///import core/dom/dom.js +///import core/dom/dtd.js +///import core/dom/domUtils.js +/** + * @file + * @name UM.dom.Range + * @anthor zhanyi + * @short Range + * @import editor.js,core/utils.js,core/browser.js,core/dom/domUtils.js,core/dom/dtd.js + * @desc Range范围实现类,本类是UEditor底层核心类,统一w3cRange和ieRange之间的差异,包括接口和属性 + */ +(function () { + var guid = 0, + fillChar = domUtils.fillChar, + fillData; + + /** + * 更新range的collapse状态 + * @param {Range} range range对象 + */ + function updateCollapse(range) { + range.collapsed = + range.startContainer && range.endContainer && + range.startContainer === range.endContainer && + range.startOffset == range.endOffset; + } + + function selectOneNode(rng){ + return !rng.collapsed && rng.startContainer.nodeType == 1 && rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset == 1 + } + function setEndPoint(toStart, node, offset, range) { + //如果node是自闭合标签要处理 + if (node.nodeType == 1 && (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName])) { + offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1); + node = node.parentNode; + } + if (toStart) { + range.startContainer = node; + range.startOffset = offset; + if (!range.endContainer) { + range.collapse(true); + } + } else { + range.endContainer = node; + range.endOffset = offset; + if (!range.startContainer) { + range.collapse(false); + } + } + updateCollapse(range); + return range; + } + + + /** + * @name Range + * @grammar new UM.dom.Range(document) => Range 实例 + * @desc 创建一个跟document绑定的空的Range实例 + * - ***startContainer*** 开始边界的容器节点,可以是elementNode或者是textNode + * - ***startOffset*** 容器节点中的偏移量,如果是elementNode就是childNodes中的第几个,如果是textNode就是nodeValue的第几个字符 + * - ***endContainer*** 结束边界的容器节点,可以是elementNode或者是textNode + * - ***endOffset*** 容器节点中的偏移量,如果是elementNode就是childNodes中的第几个,如果是textNode就是nodeValue的第几个字符 + * - ***document*** 跟range关联的document对象 + * - ***collapsed*** 是否是闭合状态 + */ + var Range = dom.Range = function (document,body) { + var me = this; + me.startContainer = + me.startOffset = + me.endContainer = + me.endOffset = null; + me.document = document; + me.collapsed = true; + me.body = body; + }; + + /** + * 删除fillData + * @param doc + * @param excludeNode + */ + function removeFillData(doc, excludeNode) { + try { + if (fillData && domUtils.inDoc(fillData, doc)) { + if (!fillData.nodeValue.replace(fillCharReg, '').length) { + var tmpNode = fillData.parentNode; + domUtils.remove(fillData); + while (tmpNode && domUtils.isEmptyInlineElement(tmpNode) && + //safari的contains有bug + (browser.safari ? !(domUtils.getPosition(tmpNode,excludeNode) & domUtils.POSITION_CONTAINS) : !tmpNode.contains(excludeNode)) + ) { + fillData = tmpNode.parentNode; + domUtils.remove(tmpNode); + tmpNode = fillData; + } + } else { + fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, ''); + } + } + } catch (e) { + } + } + + /** + * + * @param node + * @param dir + */ + function mergeSibling(node, dir) { + var tmpNode; + node = node[dir]; + while (node && domUtils.isFillChar(node)) { + tmpNode = node[dir]; + domUtils.remove(node); + node = tmpNode; + } + } + + function execContentsAction(range, action) { + //调整边界 + //range.includeBookmark(); + var start = range.startContainer, + end = range.endContainer, + startOffset = range.startOffset, + endOffset = range.endOffset, + doc = range.document, + frag = doc.createDocumentFragment(), + tmpStart, tmpEnd; + if (start.nodeType == 1) { + start = start.childNodes[startOffset] || (tmpStart = start.appendChild(doc.createTextNode(''))); + } + if (end.nodeType == 1) { + end = end.childNodes[endOffset] || (tmpEnd = end.appendChild(doc.createTextNode(''))); + } + if (start === end && start.nodeType == 3) { + frag.appendChild(doc.createTextNode(start.substringData(startOffset, endOffset - startOffset))); + //is not clone + if (action) { + start.deleteData(startOffset, endOffset - startOffset); + range.collapse(true); + } + return frag; + } + var current, currentLevel, clone = frag, + startParents = domUtils.findParents(start, true), endParents = domUtils.findParents(end, true); + for (var i = 0; startParents[i] == endParents[i];) { + i++; + } + for (var j = i, si; si = startParents[j]; j++) { + current = si.nextSibling; + if (si == start) { + if (!tmpStart) { + if (range.startContainer.nodeType == 3) { + clone.appendChild(doc.createTextNode(start.nodeValue.slice(startOffset))); + //is not clone + if (action) { + start.deleteData(startOffset, start.nodeValue.length - startOffset); + } + } else { + clone.appendChild(!action ? start.cloneNode(true) : start); + } + } + } else { + currentLevel = si.cloneNode(false); + clone.appendChild(currentLevel); + } + while (current) { + if (current === end || current === endParents[j]) { + break; + } + si = current.nextSibling; + clone.appendChild(!action ? current.cloneNode(true) : current); + current = si; + } + clone = currentLevel; + } + clone = frag; + if (!startParents[i]) { + clone.appendChild(startParents[i - 1].cloneNode(false)); + clone = clone.firstChild; + } + for (var j = i, ei; ei = endParents[j]; j++) { + current = ei.previousSibling; + if (ei == end) { + if (!tmpEnd && range.endContainer.nodeType == 3) { + clone.appendChild(doc.createTextNode(end.substringData(0, endOffset))); + //is not clone + if (action) { + end.deleteData(0, endOffset); + } + } + } else { + currentLevel = ei.cloneNode(false); + clone.appendChild(currentLevel); + } + //如果两端同级,右边第一次已经被开始做了 + if (j != i || !startParents[i]) { + while (current) { + if (current === start) { + break; + } + ei = current.previousSibling; + clone.insertBefore(!action ? current.cloneNode(true) : current, clone.firstChild); + current = ei; + } + } + clone = currentLevel; + } + if (action) { + range.setStartBefore(!endParents[i] ? endParents[i - 1] : !startParents[i] ? startParents[i - 1] : endParents[i]).collapse(true); + } + tmpStart && domUtils.remove(tmpStart); + tmpEnd && domUtils.remove(tmpEnd); + return frag; + } + Range.prototype = { + /** + * @name deleteContents + * @grammar range.deleteContents() => Range + * @desc 删除当前选区范围中的所有内容并返回range实例,这时的range已经变成了闭合状态 + * @example + * DOM Element : + * xx[xxx]x + * //执行方法后 + * xx|x + * 注意range改变了 + * range.startContainer => b + * range.startOffset => 2 + * range.endContainer => b + * range.endOffset => 2 + * range.collapsed => true + */ + deleteContents:function () { + var txt; + if (!this.collapsed) { + execContentsAction(this, 1); + } + if (browser.webkit) { + txt = this.startContainer; + if (txt.nodeType == 3 && !txt.nodeValue.length) { + this.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + } + return this; + }, + inFillChar : function(){ + var start = this.startContainer; + if(this.collapsed && start.nodeType == 3 + && start.nodeValue.replace(new RegExp('^' + domUtils.fillChar),'').length + 1 == start.nodeValue.length + ){ + return true; + } + return false; + }, + /** + * @name setStart + * @grammar range.setStart(node,offset) => Range + * @desc 设置range的开始位置位于node节点内,偏移量为offset + * 如果node是elementNode那offset指的是childNodes中的第几个,如果是textNode那offset指的是nodeValue的第几个字符 + */ + setStart:function (node, offset) { + return setEndPoint(true, node, offset, this); + }, + /** + * 设置range的结束位置位于node节点,偏移量为offset + * 如果node是elementNode那offset指的是childNodes中的第几个,如果是textNode那offset指的是nodeValue的第几个字符 + * @name setEnd + * @grammar range.setEnd(node,offset) => Range + */ + setEnd:function (node, offset) { + return setEndPoint(false, node, offset, this); + }, + /** + * 将Range开始位置设置到node节点之后 + * @name setStartAfter + * @grammar range.setStartAfter(node) => Range + * @example + * xxx|xx + * 执行setStartAfter(i)后 + * range.startContainer =>b + * range.startOffset =>2 + */ + setStartAfter:function (node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + /** + * 将Range开始位置设置到node节点之前 + * @name setStartBefore + * @grammar range.setStartBefore(node) => Range + * @example + * xxx|xx + * 执行setStartBefore(i)后 + * range.startContainer =>b + * range.startOffset =>1 + */ + setStartBefore:function (node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node)); + }, + /** + * 将Range结束位置设置到node节点之后 + * @name setEndAfter + * @grammar range.setEndAfter(node) => Range + * @example + * xxx|xx + * setEndAfter(i)后 + * range.endContainer =>b + * range.endtOffset =>2 + */ + setEndAfter:function (node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + /** + * 将Range结束位置设置到node节点之前 + * @name setEndBefore + * @grammar range.setEndBefore(node) => Range + * @example + * xxx|xx + * 执行setEndBefore(i)后 + * range.endContainer =>b + * range.endtOffset =>1 + */ + setEndBefore:function (node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node)); + }, + /** + * 将Range开始位置设置到node节点内的开始位置 + * @name setStartAtFirst + * @grammar range.setStartAtFirst(node) => Range + */ + setStartAtFirst:function (node) { + return this.setStart(node, 0); + }, + /** + * 将Range开始位置设置到node节点内的结束位置 + * @name setStartAtLast + * @grammar range.setStartAtLast(node) => Range + */ + setStartAtLast:function (node) { + return this.setStart(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length); + }, + /** + * 将Range结束位置设置到node节点内的开始位置 + * @name setEndAtFirst + * @grammar range.setEndAtFirst(node) => Range + */ + setEndAtFirst:function (node) { + return this.setEnd(node, 0); + }, + /** + * 将Range结束位置设置到node节点内的结束位置 + * @name setEndAtLast + * @grammar range.setEndAtLast(node) => Range + */ + setEndAtLast:function (node) { + return this.setEnd(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length); + }, + + /** + * 选中完整的指定节点,并返回包含该节点的range + * @name selectNode + * @grammar range.selectNode(node) => Range + */ + selectNode:function (node) { + return this.setStartBefore(node).setEndAfter(node); + }, + /** + * 选中node内部的所有节点,并返回对应的range + * @name selectNodeContents + * @grammar range.selectNodeContents(node) => Range + * @example + * xx[xxxx]xxx + * 执行后 + * [xxxxxxxxx] + * range.startContainer =>b + * range.startOffset =>0 + * range.endContainer =>b + * range.endOffset =>3 + */ + selectNodeContents:function (node) { + return this.setStart(node, 0).setEndAtLast(node); + }, + + /** + * 克隆一个新的range对象 + * @name cloneRange + * @grammar range.cloneRange() => Range + */ + cloneRange:function () { + var me = this; + return new Range(me.document).setStart(me.startContainer, me.startOffset).setEnd(me.endContainer, me.endOffset); + + }, + + /** + * 让选区闭合到尾部,若toStart为真,则闭合到头部 + * @name collapse + * @grammar range.collapse() => Range + * @grammar range.collapse(true) => Range //闭合选区到头部 + */ + collapse:function (toStart) { + var me = this; + if (toStart) { + me.endContainer = me.startContainer; + me.endOffset = me.startOffset; + } else { + me.startContainer = me.endContainer; + me.startOffset = me.endOffset; + } + me.collapsed = true; + return me; + }, + + /** + * 调整range的边界,使其"收缩"到最小的位置 + * @name shrinkBoundary + * @grammar range.shrinkBoundary() => Range //range开始位置和结束位置都调整,参见adjustmentBoundary + * @grammar range.shrinkBoundary(true) => Range //仅调整开始位置,忽略结束位置 + * @example + * xx[xxxxx] ==> xx[xxxxx] + * x[xx]xxx ==> x[xx]xxx + * [xxxxxxxxxxx] ==> [xxxxxxxxxxx] + */ + shrinkBoundary:function (ignoreEnd) { + var me = this, child, + collapsed = me.collapsed; + function check(node){ + return node.nodeType == 1 && !domUtils.isBookmarkNode(node) && !dtd.$empty[node.tagName] && !dtd.$nonChild[node.tagName] + } + while (me.startContainer.nodeType == 1 //是element + && (child = me.startContainer.childNodes[me.startOffset]) //子节点也是element + && check(child)) { + me.setStart(child, 0); + } + if (collapsed) { + return me.collapse(true); + } + if (!ignoreEnd) { + while (me.endContainer.nodeType == 1//是element + && me.endOffset > 0 //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 + && (child = me.endContainer.childNodes[me.endOffset - 1]) //子节点也是element + && check(child)) { + me.setEnd(child, child.childNodes.length); + } + } + return me; + }, + + /** + * 调整边界容器,如果是textNode,就调整到elementNode上 + * @name trimBoundary + * @grammar range.trimBoundary([ignoreEnd]) => Range //true忽略结束边界 + * @example + * DOM Element : + * |xxx + * startContainer = xxx; startOffset = 0 + * //执行后本方法后 + * startContainer = ; startOffset = 0 + * @example + * Dom Element : + * xx|x + * startContainer = xxx; startOffset = 2 + * //执行本方法后,xxx被实实在在地切分成两个TextNode + * startContainer = ; startOffset = 1 + */ + trimBoundary:function (ignoreEnd) { + this.txtToElmBoundary(); + var start = this.startContainer, + offset = this.startOffset, + collapsed = this.collapsed, + end = this.endContainer; + if (start.nodeType == 3) { + if (offset == 0) { + this.setStartBefore(start); + } else { + if (offset >= start.nodeValue.length) { + this.setStartAfter(start); + } else { + var textNode = domUtils.split(start, offset); + //跟新结束边界 + if (start === end) { + this.setEnd(textNode, this.endOffset - offset); + } else if (start.parentNode === end) { + this.endOffset += 1; + } + this.setStartBefore(textNode); + } + } + if (collapsed) { + return this.collapse(true); + } + } + if (!ignoreEnd) { + offset = this.endOffset; + end = this.endContainer; + if (end.nodeType == 3) { + if (offset == 0) { + this.setEndBefore(end); + } else { + offset < end.nodeValue.length && domUtils.split(end, offset); + this.setEndAfter(end); + } + } + } + return this; + }, + /** + * 如果选区在文本的边界上,就扩展选区到文本的父节点上 + * @name txtToElmBoundary + * @example + * Dom Element : + * |xxx + * startContainer = xxx; startOffset = 0 + * //本方法执行后 + * startContainer = ; startOffset = 0 + * @example + * Dom Element : + * xxx| + * startContainer = xxx; startOffset = 3 + * //本方法执行后 + * startContainer = ; startOffset = 1 + */ + txtToElmBoundary:function (ignoreCollapsed) { + function adjust(r, c) { + var container = r[c + 'Container'], + offset = r[c + 'Offset']; + if (container.nodeType == 3) { + if (!offset) { + r['set' + c.replace(/(\w)/, function (a) { + return a.toUpperCase(); + }) + 'Before'](container); + } else if (offset >= container.nodeValue.length) { + r['set' + c.replace(/(\w)/, function (a) { + return a.toUpperCase(); + }) + 'After' ](container); + } + } + } + + if (ignoreCollapsed || !this.collapsed) { + adjust(this, 'start'); + adjust(this, 'end'); + } + return this; + }, + + /** + * 在当前选区的开始位置前插入一个节点或者fragment,range的开始位置会在插入节点的前边 + * @name insertNode + * @grammar range.insertNode(node) => Range //node可以是textNode,elementNode,fragment + * @example + * Range : + * xxx[x

      xxxx

      xxxx]x

      sdfsdf

      + * 待插入Node : + *

      ssss

      + * 执行本方法后的Range : + * xxx[

      ssss

      x

      xxxx

      xxxx]x

      sdfsdf

      + */ + insertNode:function (node) { + var first = node, length = 1; + if (node.nodeType == 11) { + first = node.firstChild; + length = node.childNodes.length; + } + this.trimBoundary(true); + var start = this.startContainer, + offset = this.startOffset; + var nextNode = start.childNodes[ offset ]; + if (nextNode) { + start.insertBefore(node, nextNode); + } else { + start.appendChild(node); + } + if (first.parentNode === this.endContainer) { + this.endOffset = this.endOffset + length; + } + return this.setStartBefore(first); + }, + /** + * 设置光标闭合位置,toEnd设置为true时光标将闭合到选区的结尾 + * @name setCursor + * @grammar range.setCursor([toEnd]) => Range //toEnd为true时,光标闭合到选区的末尾 + */ + setCursor:function (toEnd, noFillData) { + return this.collapse(!toEnd).select(noFillData); + }, + /** + * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 + * @name createBookmark + * @grammar range.createBookmark([serialize]) => Object //{start:开始标记,end:结束标记,id:serialize} serialize为真时,开始结束标记是插入节点的id,否则是插入节点的引用 + */ + createBookmark:function (serialize, same) { + var endNode, + startNode = this.document.createElement('span'); + startNode.style.cssText = 'display:none;line-height:0px;'; + startNode.appendChild(this.document.createTextNode('\u200D')); + startNode.id = '_baidu_bookmark_start_' + (same ? '' : guid++); + + if (!this.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = '_baidu_bookmark_end_' + (same ? '' : guid++); + } + this.insertNode(startNode); + if (endNode) { + this.collapse().insertNode(endNode).setEndBefore(endNode); + } + this.setStartAfter(startNode); + return { + start:serialize ? startNode.id : startNode, + end:endNode ? serialize ? endNode.id : endNode : null, + id:serialize + } + }, + /** + * 移动边界到书签位置,并删除插入的书签节点 + * @name moveToBookmark + * @grammar range.moveToBookmark(bookmark) => Range //让当前的range选到给定bookmark的位置,bookmark对象是由range.createBookmark创建的 + */ + moveToBookmark:function (bookmark) { + var start = bookmark.id ? this.document.getElementById(bookmark.start) : bookmark.start, + end = bookmark.end && bookmark.id ? this.document.getElementById(bookmark.end) : bookmark.end; + this.setStartBefore(start); + domUtils.remove(start); + if (end) { + this.setEndBefore(end); + domUtils.remove(end); + } else { + this.collapse(true); + } + return this; + }, + + /** + * 调整Range的边界,使其"缩小"到最合适的位置 + * @name adjustmentBoundary + * @grammar range.adjustmentBoundary() => Range //参见shrinkBoundary + * @example + * xx[xxxxx] ==> xx[xxxxx] + * x[xx]xxx ==> x[xx]xxx + */ + adjustmentBoundary:function () { + if (!this.collapsed) { + while (!domUtils.isBody(this.startContainer) && + this.startOffset == this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length && + this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length + ) { + + this.setStartAfter(this.startContainer); + } + while (!domUtils.isBody(this.endContainer) && !this.endOffset && + this.endContainer[this.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length + ) { + this.setEndBefore(this.endContainer); + } + } + return this; + }, + + /** + * 得到一个自闭合的节点,常用于获取自闭和的节点,例如图片节点 + * @name getClosedNode + * @grammar range.getClosedNode() => node|null + * @example + * xxxx[]xxx + */ + getClosedNode:function () { + var node; + if (!this.collapsed) { + var range = this.cloneRange().adjustmentBoundary().shrinkBoundary(); + if (selectOneNode(range)) { + var child = range.startContainer.childNodes[range.startOffset]; + if (child && child.nodeType == 1 && (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName])) { + node = child; + } + } + } + return node; + }, + /** + * 根据当前range选中内容节点(在页面上表现为反白显示) + * @name select + * @grammar range.select(); => Range + */ + select:browser.ie ? function (noFillData, textRange) { + var nativeRange; + if (!this.collapsed) + this.shrinkBoundary(); + var node = this.getClosedNode(); + if (node && !textRange) { + try { + nativeRange = this.document.body.createControlRange(); + nativeRange.addElement(node); + nativeRange.select(); + } catch (e) {} + return this; + } + var bookmark = this.createBookmark(), + start = bookmark.start, + end; + nativeRange = this.document.body.createTextRange(); + nativeRange.moveToElementText(start); + nativeRange.moveStart('character', 1); + if (!this.collapsed) { + var nativeRangeEnd = this.document.body.createTextRange(); + end = bookmark.end; + nativeRangeEnd.moveToElementText(end); + nativeRange.setEndPoint('EndToEnd', nativeRangeEnd); + } else { + if (!noFillData && this.startContainer.nodeType != 3) { + //使用|x固定住光标 + var tmpText = this.document.createTextNode(fillChar), + tmp = this.document.createElement('span'); + tmp.appendChild(this.document.createTextNode(fillChar)); + start.parentNode.insertBefore(tmp, start); + start.parentNode.insertBefore(tmpText, start); + //当点b,i,u时,不能清除i上边的b + removeFillData(this.document, tmpText); + fillData = tmpText; + mergeSibling(tmp, 'previousSibling'); + mergeSibling(start, 'nextSibling'); + nativeRange.moveStart('character', -1); + nativeRange.collapse(true); + } + } + this.moveToBookmark(bookmark); + tmp && domUtils.remove(tmp); + //IE在隐藏状态下不支持range操作,catch一下 + try { + nativeRange.select(); + } catch (e) { + } + return this; + } : function (notInsertFillData) { + function checkOffset(rng){ + + function check(node,offset,dir){ + if(node.nodeType == 3 && node.nodeValue.length < offset){ + rng[dir + 'Offset'] = node.nodeValue.length + } + } + check(rng.startContainer,rng.startOffset,'start'); + check(rng.endContainer,rng.endOffset,'end'); + } + var win = domUtils.getWindow(this.document), + sel = win.getSelection(), + txtNode; + //FF下关闭自动长高时滚动条在关闭dialog时会跳 + //ff下如果不body.focus将不能定位闭合光标到编辑器内 + browser.gecko ? this.body.focus() : win.focus(); + if (sel) { + sel.removeAllRanges(); + // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 + // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' + if (this.collapsed && !notInsertFillData) { +// //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 +// if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { +// var tmp = this.document.createTextNode(''); +// this.insertNode(tmp).setStart(tmp, 0).collapse(true); +// } +// + //处理光标落在文本节点的情况 + //处理以下的情况 + //|xxxx + //xxxx|xxxx + //xxxx| + var start = this.startContainer,child = start; + if(start.nodeType == 1){ + child = start.childNodes[this.startOffset]; + + } + if( !(start.nodeType == 3 && this.startOffset) && + (child ? + (!child.previousSibling || child.previousSibling.nodeType != 3) + : + (!start.lastChild || start.lastChild.nodeType != 3) + ) + ){ + txtNode = this.document.createTextNode(fillChar); + //跟着前边走 + this.insertNode(txtNode); + removeFillData(this.document, txtNode); + mergeSibling(txtNode, 'previousSibling'); + mergeSibling(txtNode, 'nextSibling'); + fillData = txtNode; + this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true); + } + } + var nativeRange = this.document.createRange(); + if(this.collapsed && browser.opera && this.startContainer.nodeType == 1){ + var child = this.startContainer.childNodes[this.startOffset]; + if(!child){ + //往前靠拢 + child = this.startContainer.lastChild; + if( child && domUtils.isBr(child)){ + this.setStartBefore(child).collapse(true); + } + }else{ + //向后靠拢 + while(child && domUtils.isBlockElm(child)){ + if(child.nodeType == 1 && child.childNodes[0]){ + child = child.childNodes[0] + }else{ + break; + } + } + child && this.setStartBefore(child).collapse(true) + } + + } + //是createAddress最后一位算的不准,现在这里进行微调 + checkOffset(this); + nativeRange.setStart(this.startContainer, this.startOffset); + nativeRange.setEnd(this.endContainer, this.endOffset); + sel.addRange(nativeRange); + } + return this; + }, + + + createAddress : function(ignoreEnd,ignoreTxt){ + var addr = {},me = this; + + function getAddress(isStart){ + var node = isStart ? me.startContainer : me.endContainer; + var parents = domUtils.findParents(node,true,function(node){return !domUtils.isBody(node)}), + addrs = []; + for(var i = 0,ci;ci = parents[i++];){ + addrs.push(domUtils.getNodeIndex(ci,ignoreTxt)); + } + var firstIndex = 0; + + if(ignoreTxt){ + if(node.nodeType == 3){ + var tmpNode = node.previousSibling; + while(tmpNode && tmpNode.nodeType == 3){ + firstIndex += tmpNode.nodeValue.replace(fillCharReg,'').length; + tmpNode = tmpNode.previousSibling; + } + firstIndex += (isStart ? me.startOffset : me.endOffset)// - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) + }else{ + node = node.childNodes[ isStart ? me.startOffset : me.endOffset]; + if(node){ + firstIndex = domUtils.getNodeIndex(node,ignoreTxt); + }else{ + node = isStart ? me.startContainer : me.endContainer; + var first = node.firstChild; + while(first){ + if(domUtils.isFillChar(first)){ + first = first.nextSibling; + continue; + } + firstIndex++; + if(first.nodeType == 3){ + while( first && first.nodeType == 3){ + first = first.nextSibling; + } + }else{ + first = first.nextSibling; + } + } + } + } + + }else{ + firstIndex = isStart ? domUtils.isFillChar(node) ? 0 : me.startOffset : me.endOffset + } + if(firstIndex < 0){ + firstIndex = 0; + } + addrs.push(firstIndex); + return addrs; + } + addr.startAddress = getAddress(true); + if(!ignoreEnd){ + addr.endAddress = me.collapsed ? [].concat(addr.startAddress) : getAddress(); + } + return addr; + }, + moveToAddress : function(addr,ignoreEnd){ + var me = this; + function getNode(address,isStart){ + var tmpNode = me.body, + parentNode,offset; + for(var i= 0,ci,l=address.length;i '); + this.cloneRange().insertNode($span.get(0)); + var winScrollTop = $(window).scrollTop(), + winHeight = $(window).height(), + spanTop = $span.offset().top; + if(spanTop < winScrollTop-winHeight || spanTop > winScrollTop + winHeight ){ + if(spanTop > winScrollTop + winHeight){ + window.scrollTo(0,spanTop - winHeight + $span.height()) + }else{ + window.scrollTo(0,winScrollTop - spanTop) + } + + } + $span.remove(); + }, + getOffset : function(){ + var bk = this.createBookmark(); + var offset = $(bk.start).css('display','inline-block').offset(); + this.moveToBookmark(bk); + return offset + } + }; +})(); +///import editor.js +///import core/browser.js +///import core/dom/dom.js +///import core/dom/dtd.js +///import core/dom/domUtils.js +///import core/dom/Range.js +/** + * @class UM.dom.Selection Selection类 + */ +(function () { + + function getBoundaryInformation( range, start ) { + var getIndex = domUtils.getNodeIndex; + range = range.duplicate(); + range.collapse( start ); + var parent = range.parentElement(); + //如果节点里没有子节点,直接退出 + if ( !parent.hasChildNodes() ) { + return {container:parent, offset:0}; + } + var siblings = parent.children, + child, + testRange = range.duplicate(), + startIndex = 0, endIndex = siblings.length - 1, index = -1, + distance; + while ( startIndex <= endIndex ) { + index = Math.floor( (startIndex + endIndex) / 2 ); + child = siblings[index]; + testRange.moveToElementText( child ); + var position = testRange.compareEndPoints( 'StartToStart', range ); + if ( position > 0 ) { + endIndex = index - 1; + } else if ( position < 0 ) { + startIndex = index + 1; + } else { + //trace:1043 + return {container:parent, offset:getIndex( child )}; + } + } + if ( index == -1 ) { + testRange.moveToElementText( parent ); + testRange.setEndPoint( 'StartToStart', range ); + distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; + siblings = parent.childNodes; + if ( !distance ) { + child = siblings[siblings.length - 1]; + return {container:child, offset:child.nodeValue.length}; + } + + var i = siblings.length; + while ( distance > 0 ){ + distance -= siblings[ --i ].nodeValue.length; + } + return {container:siblings[i], offset:-distance}; + } + testRange.collapse( position > 0 ); + testRange.setEndPoint( position > 0 ? 'StartToStart' : 'EndToStart', range ); + distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; + if ( !distance ) { + return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] ? + {container:parent, offset:getIndex( child ) + (position > 0 ? 0 : 1)} : + {container:child, offset:position > 0 ? 0 : child.childNodes.length} + } + while ( distance > 0 ) { + try { + var pre = child; + child = child[position > 0 ? 'previousSibling' : 'nextSibling']; + distance -= child.nodeValue.length; + } catch ( e ) { + return {container:parent, offset:getIndex( pre )}; + } + } + return {container:child, offset:position > 0 ? -distance : child.nodeValue.length + distance} + } + + /** + * 将ieRange转换为Range对象 + * @param {Range} ieRange ieRange对象 + * @param {Range} range Range对象 + * @return {Range} range 返回转换后的Range对象 + */ + function transformIERangeToRange( ieRange, range ) { + if ( ieRange.item ) { + range.selectNode( ieRange.item( 0 ) ); + } else { + var bi = getBoundaryInformation( ieRange, true ); + range.setStart( bi.container, bi.offset ); + if ( ieRange.compareEndPoints( 'StartToEnd', ieRange ) != 0 ) { + bi = getBoundaryInformation( ieRange, false ); + range.setEnd( bi.container, bi.offset ); + } + } + return range; + } + + /** + * 获得ieRange + * @param {Selection} sel Selection对象 + * @return {ieRange} 得到ieRange + */ + function _getIERange( sel,txtRange ) { + var ieRange; + //ie下有可能报错 + try { + ieRange = sel.getNative(txtRange).createRange(); + } catch ( e ) { + return null; + } + var el = ieRange.item ? ieRange.item( 0 ) : ieRange.parentElement(); + if ( ( el.ownerDocument || el ) === sel.document ) { + return ieRange; + } + return null; + } + + var Selection = dom.Selection = function ( doc,body ) { + var me = this; + me.document = doc; + me.body = body; + if ( browser.ie9below ) { + $( body).on('beforedeactivate', function () { + me._bakIERange = me.getIERange(); + } ).on('activate', function () { + try { + var ieNativRng = _getIERange( me ); + if ( (!ieNativRng || !me.rangeInBody(ieNativRng)) && me._bakIERange ) { + me._bakIERange.select(); + } + } catch ( ex ) { + } + me._bakIERange = null; + } ); + } + }; + + Selection.prototype = { + hasNativeRange : function(){ + var rng; + if(!browser.ie || browser.ie9above){ + var nativeSel = this.getNative(); + if(!nativeSel.rangeCount){ + return false; + } + rng = nativeSel.getRangeAt(0); + }else{ + rng = _getIERange(this); + } + return this.rangeInBody(rng); + }, + /** + * 获取原生seleciton对象 + * @public + * @function + * @name UM.dom.Selection.getNative + * @return {Selection} 获得selection对象 + */ + getNative:function (txtRange) { + var doc = this.document; + try { + return !doc ? null : browser.ie9below || txtRange? doc.selection : domUtils.getWindow( doc ).getSelection(); + } catch ( e ) { + return null; + } + }, + /** + * 获得ieRange + * @public + * @function + * @name UM.dom.Selection.getIERange + * @return {ieRange} 返回ie原生的Range + */ + getIERange:function (txtRange) { + var ieRange = _getIERange( this,txtRange ); + if ( !ieRange || !this.rangeInBody(ieRange,txtRange)) { + if ( this._bakIERange ) { + return this._bakIERange; + } + } + return ieRange; + }, + rangeInBody : function(rng,txtRange){ + var node = browser.ie9below || txtRange ? rng.item ? rng.item() : rng.parentElement() : rng.startContainer; + + return node === this.body || domUtils.inDoc(node,this.body); + }, + /** + * 缓存当前选区的range和选区的开始节点 + * @public + * @function + * @name UM.dom.Selection.cache + */ + cache:function () { + this.clear(); + this._cachedRange = this.getRange(); + this._cachedStartElement = this.getStart(); + this._cachedStartElementPath = this.getStartElementPath(); + }, + + getStartElementPath:function () { + if ( this._cachedStartElementPath ) { + return this._cachedStartElementPath; + } + var start = this.getStart(); + if ( start ) { + return domUtils.findParents( start, true, null, true ) + } + return []; + }, + /** + * 清空缓存 + * @public + * @function + * @name UM.dom.Selection.clear + */ + clear:function () { + this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null; + }, + /** + * 编辑器是否得到了选区 + */ + isFocus:function () { + return this.hasNativeRange() + + }, + /** + * 获取选区对应的Range + * @public + * @function + * @name UM.dom.Selection.getRange + * @returns {UM.dom.Range} 得到Range对象 + */ + getRange:function () { + var me = this; + function optimze( range ) { + var child = me.body.firstChild, + collapsed = range.collapsed; + while ( child && child.firstChild ) { + range.setStart( child, 0 ); + child = child.firstChild; + } + if ( !range.startContainer ) { + range.setStart( me.body, 0 ) + } + if ( collapsed ) { + range.collapse( true ); + } + } + + if ( me._cachedRange != null ) { + return this._cachedRange; + } + var range = new dom.Range( me.document,me.body ); + if ( browser.ie9below ) { + var nativeRange = me.getIERange(); + if ( nativeRange && this.rangeInBody(nativeRange)) { + + try{ + transformIERangeToRange( nativeRange, range ); + }catch(e){ + optimze( range ); + } + + } else { + optimze( range ); + } + } else { + var sel = me.getNative(); + if ( sel && sel.rangeCount && me.rangeInBody(sel.getRangeAt( 0 ))) { + var firstRange = sel.getRangeAt( 0 ); + var lastRange = sel.getRangeAt( sel.rangeCount - 1 ); + range.setStart( firstRange.startContainer, firstRange.startOffset ).setEnd( lastRange.endContainer, lastRange.endOffset ); + if ( range.collapsed && domUtils.isBody( range.startContainer ) && !range.startOffset ) { + optimze( range ); + } + } else { + //trace:1734 有可能已经不在dom树上了,标识的节点 + if ( this._bakRange && (this._bakRange.startContainer === this.body || domUtils.inDoc( this._bakRange.startContainer, this.body )) ){ + return this._bakRange; + } + optimze( range ); + } + } + + return this._bakRange = range; + }, + + /** + * 获取开始元素,用于状态反射 + * @public + * @function + * @name UM.dom.Selection.getStart + * @return {Element} 获得开始元素 + */ + getStart:function () { + if ( this._cachedStartElement ) { + return this._cachedStartElement; + } + var range = browser.ie9below ? this.getIERange() : this.getRange(), + tmpRange, + start, tmp, parent; + if ( browser.ie9below ) { + if ( !range ) { + //todo 给第一个值可能会有问题 + return this.document.body.firstChild; + } + //control元素 + if ( range.item ){ + return range.item( 0 ); + } + tmpRange = range.duplicate(); + //修正ie下x[xx] 闭合后 x|xx + tmpRange.text.length > 0 && tmpRange.moveStart( 'character', 1 ); + tmpRange.collapse( 1 ); + start = tmpRange.parentElement(); + parent = tmp = range.parentElement(); + while ( tmp = tmp.parentNode ) { + if ( tmp == start ) { + start = parent; + break; + } + } + } else { + start = range.startContainer; + if ( start.nodeType == 1 && start.hasChildNodes() ){ + start = start.childNodes[Math.min( start.childNodes.length - 1, range.startOffset )]; + } + if ( start.nodeType == 3 ){ + return start.parentNode; + } + } + return start; + }, + /** + * 得到选区中的文本 + * @public + * @function + * @name UM.dom.Selection.getText + * @return {String} 选区中包含的文本 + */ + getText:function () { + var nativeSel, nativeRange; + if ( this.isFocus() && (nativeSel = this.getNative()) ) { + nativeRange = browser.ie9below ? nativeSel.createRange() : nativeSel.getRangeAt( 0 ); + return browser.ie9below ? nativeRange.text : nativeRange.toString(); + } + return ''; + } + }; +})(); +/** + * @file + * @name UM.Editor + * @short Editor + * @import editor.js,core/utils.js,core/EventBase.js,core/browser.js,core/dom/dtd.js,core/dom/domUtils.js,core/dom/Range.js,core/dom/Selection.js,plugins/serialize.js + * @desc 编辑器主类,包含编辑器提供的大部分公用接口 + */ +(function () { + var uid = 0, _selectionChangeTimer; + + /** + * @private + * @ignore + * @param form 编辑器所在的form元素 + * @param editor 编辑器实例对象 + */ + function setValue(form, editor) { + var textarea; + if (editor.textarea) { + if (utils.isString(editor.textarea)) { + for (var i = 0, ti, tis = domUtils.getElementsByTagName(form, 'textarea'); ti = tis[i++];) { + if (ti.id == 'umeditor_textarea_' + editor.options.textarea) { + textarea = ti; + break; + } + } + } else { + textarea = editor.textarea; + } + } + if (!textarea) { + form.appendChild(textarea = domUtils.createElement(document, 'textarea', { + 'name': editor.options.textarea, + 'id': 'umeditor_textarea_' + editor.options.textarea, + 'style': "display:none" + })); + //不要产生多个textarea + editor.textarea = textarea; + } + textarea.value = editor.hasContents() ? + (editor.options.allHtmlEnabled ? editor.getAllHtml() : editor.getContent(null, null, true)) : + '' + } + function loadPlugins(me){ + //初始化插件 + for (var pi in UM.plugins) { + if(me.options.excludePlugins.indexOf(pi) == -1){ + UM.plugins[pi].call(me); + me.plugins[pi] = 1; + } + } + me.langIsReady = true; + + me.fireEvent("langReady"); + } + function checkCurLang(I18N){ + for(var lang in I18N){ + return lang + } + } + /** + * UEditor编辑器类 + * @name Editor + * @desc 创建一个跟编辑器实例 + * - ***container*** 编辑器容器对象 + * - ***iframe*** 编辑区域所在的iframe对象 + * - ***window*** 编辑区域所在的window + * - ***document*** 编辑区域所在的document对象 + * - ***body*** 编辑区域所在的body对象 + * - ***selection*** 编辑区域的选区对象 + */ + var Editor = UM.Editor = function (options) { + var me = this; + me.uid = uid++; + EventBase.call(me); + me.commands = {}; + me.options = utils.extend(utils.clone(options || {}), UMEDITOR_CONFIG, true); + me.shortcutkeys = {}; + me.inputRules = []; + me.outputRules = []; + //设置默认的常用属性 + me.setOpt({ + isShow: true, + initialContent: '', + initialStyle:'', + autoClearinitialContent: false, + textarea: 'editorValue', + focus: false, + focusInEnd: true, + autoClearEmptyNode: true, + fullscreen: false, + readonly: false, + zIndex: 999, + enterTag: 'p', + lang: 'zh-cn', + langPath: me.options.UMEDITOR_HOME_URL + 'lang/', + theme: 'default', + themePath: me.options.UMEDITOR_HOME_URL + 'themes/', + allHtmlEnabled: false, + autoSyncData : true, + autoHeightEnabled : true, + excludePlugins:'' + }); + me.plugins = {}; + if(!utils.isEmptyObject(UM.I18N)){ + //修改默认的语言类型 + me.options.lang = checkCurLang(UM.I18N); + loadPlugins(me) + }else{ + utils.loadFile(document, { + src: me.options.langPath + me.options.lang + "/" + me.options.lang + ".js", + tag: "script", + type: "text/javascript", + defer: "defer" + }, function () { + loadPlugins(me) + }); + } + + }; + Editor.prototype = { + /** + * 当编辑器ready后执行传入的fn,如果编辑器已经完成ready,就马上执行fn,fn的中的this是编辑器实例。 + * 大部分的实例接口都需要放在该方法内部执行,否则在IE下可能会报错。 + * @name ready + * @grammar editor.ready(fn) fn是当编辑器渲染好后执行的function + * @example + * var editor = new UM.ui.Editor(); + * editor.render("myEditor"); + * editor.ready(function(){ + * editor.setContent("欢迎使用UEditor!"); + * }) + */ + ready: function (fn) { + var me = this; + if (fn) { + me.isReady ? fn.apply(me) : me.addListener('ready', fn); + } + }, + /** + * 为编辑器设置默认参数值。若用户配置为空,则以默认配置为准 + * @grammar editor.setOpt(key,value); //传入一个键、值对 + * @grammar editor.setOpt({ key:value}); //传入一个json对象 + */ + setOpt: function (key, val) { + var obj = {}; + if (utils.isString(key)) { + obj[key] = val + } else { + obj = key; + } + utils.extend(this.options, obj, true); + }, + getOpt:function(key){ + return this.options[key] || '' + }, + /** + * 销毁编辑器实例对象 + * @name destroy + * @grammar editor.destroy(); + */ + destroy: function () { + + var me = this; + me.fireEvent('destroy'); + var container = me.container.parentNode; + if(container === document.body){ + container = me.container; + } + var textarea = me.textarea; + if (!textarea) { + textarea = document.createElement('textarea'); + container.parentNode.insertBefore(textarea, container); + } else { + textarea.style.display = '' + } + + textarea.style.width = me.body.offsetWidth + 'px'; + textarea.style.height = me.body.offsetHeight + 'px'; + textarea.value = me.getContent(); + textarea.id = me.key; + if(container.contains(textarea)){ + $(textarea).insertBefore(container); + } + container.innerHTML = ''; + + domUtils.remove(container); + UM.clearCache(me.id); + //trace:2004 + for (var p in me) { + if (me.hasOwnProperty(p)) { + delete this[p]; + } + } + + }, + initialCont : function(holder){ + + if(holder){ + holder.getAttribute('name') && ( this.options.textarea = holder.getAttribute('name')); + if (holder && /script|textarea/ig.test(holder.tagName)) { + var newDiv = document.createElement('div'); + holder.parentNode.insertBefore(newDiv, holder); + this.options.initialContent = UM.htmlparser(holder.value || holder.innerHTML|| this.options.initialContent).toHtml(); + holder.className && (newDiv.className = holder.className); + holder.style.cssText && (newDiv.style.cssText = holder.style.cssText); + + if (/textarea/i.test(holder.tagName)) { + this.textarea = holder; + this.textarea.style.display = 'none'; + + } else { + holder.parentNode.removeChild(holder); + holder.id && (newDiv.id = holder.id); + } + holder = newDiv; + holder.innerHTML = ''; + } + return holder; + }else{ + return null; + } + + }, + /** + * 渲染编辑器的DOM到指定容器,必须且只能调用一次 + * @name render + * @grammar editor.render(containerId); //可以指定一个容器ID + * @grammar editor.render(containerDom); //也可以直接指定容器对象 + */ + render: function (container) { + var me = this, + options = me.options, + getStyleValue=function(attr){ + return parseInt($(container).css(attr)); + }; + + if (utils.isString(container)) { + container = document.getElementById(container); + } + if (container) { + this.id = container.getAttribute('id'); + UM.setEditor(this); + utils.cssRule('edui-style-body',me.options.initialStyle,document); + + container = this.initialCont(container); + + container.className += ' edui-body-container'; + + if(options.initialFrameWidth){ + options.minFrameWidth = options.initialFrameWidth + }else{ + //都没给值,先写死了 + options.minFrameWidth = options.initialFrameWidth = $(container).width() || UM.defaultWidth; + } + if(options.initialFrameHeight){ + options.minFrameHeight = options.initialFrameHeight + }else{ + + options.initialFrameHeight = options.minFrameHeight = $(container).height() || UM.defaultHeight; + } + + container.style.width = /%$/.test(options.initialFrameWidth) ? '100%' : options.initialFrameWidth - + getStyleValue("padding-left")- + getStyleValue("padding-right") +'px'; + + var height = /%$/.test(options.initialFrameHeight) ? '100%' : (options.initialFrameHeight - getStyleValue("padding-top")- getStyleValue("padding-bottom") ); + if(this.options.autoHeightEnabled){ + container.style.minHeight = height +'px'; + container.style.height = ''; + if(browser.ie && browser.version <= 6){ + container.style.height = height ; + container.style.setExpression('height', 'this.scrollHeight <= ' + height + ' ? "' + height + 'px" : "auto"'); + } + }else{ + $(container).height(height) + } + container.style.zIndex = options.zIndex; + this._setup(container); + + } + }, + /** + * 编辑器初始化 + * @private + * @ignore + * @param {Element} doc 编辑器Iframe中的文档对象 + */ + _setup: function (cont) { + var me = this, + options = me.options; + + cont.contentEditable = true; + document.body.spellcheck = false; + + me.document = document; + me.window = document.defaultView || document.parentWindow; + me.body = cont; + me.$body = $(cont); + me.selection = new dom.Selection(document,me.body); + me._isEnabled = false; + //gecko初始化就能得到range,无法判断isFocus了 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + this._initEvents(); + //为form提交提供一个隐藏的textarea + for (var form = cont.parentNode; form && !domUtils.isBody(form); form = form.parentNode) { + if (form.tagName == 'FORM') { + me.form = form; + if(me.options.autoSyncData){ + $(cont).on('blur',function(){ + setValue(form,me); + }) + }else{ + $(form).on('submit', function () { + setValue(this, me); + }) + } + break; + } + } + if (options.initialContent) { + if (options.autoClearinitialContent) { + var oldExecCommand = me.execCommand; + me.execCommand = function () { + me.fireEvent('firstBeforeExecCommand'); + return oldExecCommand.apply(me, arguments); + }; + this._setDefaultContent(options.initialContent); + } else + this.setContent(options.initialContent, false, true); + } + + //编辑器不能为空内容 + + if (domUtils.isEmptyNode(me.body)) { + me.body.innerHTML = '

      ' + (browser.ie ? '' : '
      ') + '

      '; + } + //如果要求focus, 就把光标定位到内容开始 + if (options.focus) { + setTimeout(function () { + me.focus(me.options.focusInEnd); + //如果自动清除开着,就不需要做selectionchange; + !me.options.autoClearinitialContent && me._selectionChange(); + }, 0); + } + if (!me.container) { + me.container = cont.parentNode; + } + + me._bindshortcutKeys(); + me.isReady = 1; + me.fireEvent('ready'); + options.onready && options.onready.call(me); + if(!browser.ie || browser.ie9above){ + + $(me.body).on( 'blur focus', function (e) { + var nSel = me.selection.getNative(); + //chrome下会出现alt+tab切换时,导致选区位置不对 + if (e.type == 'blur') { + if(nSel.rangeCount > 0 ){ + me._bakRange = nSel.getRangeAt(0); + } + } else { + try { + me._bakRange && nSel.addRange(me._bakRange) + } catch (e) { + } + me._bakRange = null; + } + }); + } + + !options.isShow && me.setHide(); + options.readonly && me.setDisabled(); + }, + /** + * 同步编辑器的数据,为提交数据做准备,主要用于你是手动提交的情况 + * @name sync + * @grammar editor.sync(); //从编辑器的容器向上查找,如果找到就同步数据 + * @grammar editor.sync(formID); //formID制定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 + * @desc + * 后台取得数据得键值使用你容器上得''name''属性,如果没有就使用参数传入的''textarea'' + * @example + * editor.sync(); + * form.sumbit(); //form变量已经指向了form元素 + * + */ + sync: function (formId) { + var me = this, + form = formId ? document.getElementById(formId) : + domUtils.findParent(me.body.parentNode, function (node) { + return node.tagName == 'FORM' + }, true); + form && setValue(form, me); + }, + /** + * 设置编辑器高度 + * @name setHeight + * @grammar editor.setHeight(number); //纯数值,不带单位 + */ + setHeight: function (height,notSetHeight) { + !notSetHeight && (this.options.initialFrameHeight = height); + if(this.options.autoHeightEnabled){ + $(this.body).css({ + 'min-height':height + 'px' + }); + if(browser.ie && browser.version <= 6 && this.container){ + this.container.style.height = height ; + this.container.style.setExpression('height', 'this.scrollHeight <= ' + height + ' ? "' + height + 'px" : "auto"'); + } + }else{ + $(this.body).height(height) + } + this.fireEvent('resize'); + }, + /** + * 设置编辑器宽度 + * @name setWidth + * @grammar editor.setWidth(number); //纯数值,不带单位 + */ + setWidth:function(width){ + this.$container && this.$container.width(width); + $(this.body).width(width - $(this.body).css('padding-left').replace('px','') * 1 - $(this.body).css('padding-right').replace('px','') * 1); + this.fireEvent('resize'); + }, + addshortcutkey: function (cmd, keys) { + var obj = {}; + if (keys) { + obj[cmd] = keys + } else { + obj = cmd; + } + utils.extend(this.shortcutkeys, obj) + }, + _bindshortcutKeys: function () { + var me = this, shortcutkeys = this.shortcutkeys; + me.addListener('keydown', function (type, e) { + var keyCode = e.keyCode || e.which; + for (var i in shortcutkeys) { + var tmp = shortcutkeys[i].split(','); + for (var t = 0, ti; ti = tmp[t++];) { + ti = ti.split(':'); + var key = ti[0], param = ti[1]; + if (/^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || /^(\d+)$/.test(key)) { + if (( (RegExp.$1 == 'ctrl' ? (e.ctrlKey || e.metaKey) : 0) + && (RegExp.$2 != "" ? e[RegExp.$2.slice(1) + "Key"] : 1) + && keyCode == RegExp.$3 + ) || + keyCode == RegExp.$1 + ) { + if (me.queryCommandState(i,param) != -1) + me.execCommand(i, param); + domUtils.preventDefault(e); + } + } + } + + } + }); + }, + /** + * 获取编辑器内容 + * @name getContent + * @grammar editor.getContent() => String //若编辑器中只包含字符"<p><br /></p/>"会返回空。 + * @grammar editor.getContent(fn) => String + * @example + * getContent默认是会现调用hasContents来判断编辑器是否为空,如果是,就直接返回空字符串 + * 你也可以传入一个fn来接替hasContents的工作,定制判断的规则 + * editor.getContent(function(){ + * return false //编辑器没有内容 ,getContent直接返回空 + * }) + */ + getContent: function (cmd, fn,notSetCursor,ignoreBlank,formatter) { + var me = this; + if (cmd && utils.isFunction(cmd)) { + fn = cmd; + cmd = ''; + } + if (fn ? !fn() : !this.hasContents()) { + return ''; + } + me.fireEvent('beforegetcontent'); + var root = UM.htmlparser(me.body.innerHTML,ignoreBlank); + me.filterOutputRule(root); + me.fireEvent('aftergetcontent',root); + return root.toHtml(formatter); + }, + /** + * 取得完整的html代码,可以直接显示成完整的html文档 + * @name getAllHtml + * @grammar editor.getAllHtml() => String + */ + getAllHtml: function () { + var me = this, + headHtml = [], + html = ''; + me.fireEvent('getAllHtml', headHtml); + if (browser.ie && browser.version > 8) { + var headHtmlForIE9 = ''; + utils.each(me.document.styleSheets, function (si) { + headHtmlForIE9 += ( si.href ? '' : ''); + }); + utils.each(me.document.getElementsByTagName('script'), function (si) { + headHtmlForIE9 += si.outerHTML; + }); + } + return '' + (me.options.charset ? '' : '') + + (headHtmlForIE9 || me.document.getElementsByTagName('head')[0].innerHTML) + headHtml.join('\n') + '' + + '' + me.getContent(null, null, true) + ''; + }, + /** + * 得到编辑器的纯文本内容,但会保留段落格式 + * @name getPlainTxt + * @grammar editor.getPlainTxt() => String + */ + getPlainTxt: function () { + var reg = new RegExp(domUtils.fillChar, 'g'), + html = this.body.innerHTML.replace(/[\n\r]/g, '');//ie要先去了\n在处理 + html = html.replace(/<(p|div)[^>]*>(| )<\/\1>/gi, '\n') + .replace(//gi, '\n') + .replace(/<[^>/]+>/g, '') + .replace(/(\n)?<\/([^>]+)>/g, function (a, b, c) { + return dtd.$block[c] ? '\n' : b ? b : ''; + }); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return html.replace(reg, '').replace(/\u00a0/g, ' ').replace(/ /g, ' '); + }, + + /** + * 获取编辑器中的纯文本内容,没有段落格式 + * @name getContentTxt + * @grammar editor.getContentTxt() => String + */ + getContentTxt: function () { + var reg = new RegExp(domUtils.fillChar, 'g'); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return this.body[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').replace(/\u00a0/g, ' '); + }, + + /** + * 将html设置到编辑器中, 如果是用于初始化时给编辑器赋初值,则必须放在ready方法内部执行 + * @name setContent + * @grammar editor.setContent(html) + * @example + * var editor = new UM.ui.Editor() + * editor.ready(function(){ + * //需要ready后执行,否则可能报错 + * editor.setContent("欢迎使用UEditor!"); + * }) + */ + setContent: function (html, isAppendTo, notFireSelectionchange) { + var me = this; + + me.fireEvent('beforesetcontent', html); + var root = UM.htmlparser(html); + me.filterInputRule(root); + html = root.toHtml(); + + + me.body.innerHTML = (isAppendTo ? me.body.innerHTML : '') + html; + + + function isCdataDiv(node){ + return node.tagName == 'DIV' && node.getAttribute('cdata_tag'); + } + //给文本或者inline节点套p标签 + if (me.options.enterTag == 'p') { + + var child = this.body.firstChild, tmpNode; + if (!child || child.nodeType == 1 && + (dtd.$cdata[child.tagName] || isCdataDiv(child) || + domUtils.isCustomeNode(child) + ) + && child === this.body.lastChild) { + this.body.innerHTML = '

      ' + (browser.ie ? ' ' : '
      ') + '

      ' + this.body.innerHTML; + + } else { + var p = me.document.createElement('p'); + while (child) { + while (child && (child.nodeType == 3 || child.nodeType == 1 && dtd.p[child.tagName] && !dtd.$cdata[child.tagName])) { + tmpNode = child.nextSibling; + p.appendChild(child); + child = tmpNode; + } + if (p.firstChild) { + if (!child) { + me.body.appendChild(p); + break; + } else { + child.parentNode.insertBefore(p, child); + p = me.document.createElement('p'); + } + } + child = child.nextSibling; + } + } + } + me.fireEvent('aftersetcontent'); + me.fireEvent('contentchange'); + + !notFireSelectionchange && me._selectionChange(); + //清除保存的选区 + me._bakRange = me._bakIERange = me._bakNativeRange = null; + //trace:1742 setContent后gecko能得到焦点问题 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + if(me.options.autoSyncData){ + me.form && setValue(me.form,me); + } + }, + + /** + * 让编辑器获得焦点,toEnd确定focus位置 + * @name focus + * @grammar editor.focus([toEnd]) //默认focus到编辑器头部,toEnd为true时focus到内容尾部 + */ + focus: function (toEnd) { + try { + var me = this, + rng = me.selection.getRange(); + if (toEnd) { + rng.setStartAtLast(me.body.lastChild).setCursor(false, true); + } else { + rng.select(true); + } + this.fireEvent('focus'); + } catch (e) { + } + }, + /** + * 使编辑区域失去焦点 + */ + blur:function(){ + var sel = this.selection.getNative(); + sel.empty ? sel.empty() : sel.removeAllRanges(); + this.fireEvent('blur') + }, + /** + * 判断编辑器当前是否获得了焦点 + */ + isFocus : function(){ + if(this.fireEvent('isfocus')===true){ + return true; + } + return this.selection.isFocus(); + }, + + /** + * 初始化UE事件及部分事件代理 + * @private + * @ignore + */ + _initEvents: function () { + var me = this, + cont = me.body, + _proxyDomEvent = function(){ + me._proxyDomEvent.apply(me, arguments); + }; + + $(cont) + .on( 'click contextmenu mousedown keydown keyup keypress mouseup mouseover mouseout selectstart', _proxyDomEvent) + .on( 'focus blur', _proxyDomEvent) + .on('mouseup keydown', function (evt) { + //特殊键不触发selectionchange + if (evt.type == 'keydown' && (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey)) { + return; + } + if (evt.button == 2)return; + me._selectionChange(250, evt); + }); + }, + /** + * 触发事件代理 + * @private + * @ignore + */ + _proxyDomEvent: function (evt) { + return this.fireEvent(evt.type.replace(/^on/, ''), evt); + }, + /** + * 变化选区 + * @private + * @ignore + */ + _selectionChange: function (delay, evt) { + var me = this; + //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) +// if ( !me.selection.isFocus() ){ +// return; +// } + + + var hackForMouseUp = false; + var mouseX, mouseY; + if (browser.ie && browser.version < 9 && evt && evt.type == 'mouseup') { + var range = this.selection.getRange(); + if (!range.collapsed) { + hackForMouseUp = true; + mouseX = evt.clientX; + mouseY = evt.clientY; + } + } + clearTimeout(_selectionChangeTimer); + _selectionChangeTimer = setTimeout(function () { + if (!me.selection.getNative()) { + return; + } + //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. + //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 + var ieRange; + if (hackForMouseUp && me.selection.getNative().type == 'None') { + ieRange = me.document.body.createTextRange(); + try { + ieRange.moveToPoint(mouseX, mouseY); + } catch (ex) { + ieRange = null; + } + } + var bakGetIERange; + if (ieRange) { + bakGetIERange = me.selection.getIERange; + me.selection.getIERange = function () { + return ieRange; + }; + } + me.selection.cache(); + if (bakGetIERange) { + me.selection.getIERange = bakGetIERange; + } + if (me.selection._cachedRange && me.selection._cachedStartElement) { + me.fireEvent('beforeselectionchange'); + // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. + me.fireEvent('selectionchange', !!evt); + me.fireEvent('afterselectionchange'); + me.selection.clear(); + } + }, delay || 50); + }, + _callCmdFn: function (fnName, args) { + args = Array.prototype.slice.call(args,0); + var cmdName = args.shift().toLowerCase(), + cmd, cmdFn; + cmd = this.commands[cmdName] || UM.commands[cmdName]; + cmdFn = cmd && cmd[fnName]; + //没有querycommandstate或者没有command的都默认返回0 + if ((!cmd || !cmdFn) && fnName == 'queryCommandState') { + return 0; + } else if (cmdFn) { + return cmdFn.apply(this, [cmdName].concat(args)); + } + }, + + /** + * 执行编辑命令cmdName,完成富文本编辑效果 + * @name execCommand + * @grammar editor.execCommand(cmdName) => {*} + */ + execCommand: function (cmdName) { + if(!this.isFocus()){ + var bakRange = this.selection._bakRange; + if(bakRange){ + bakRange.select() + }else{ + this.focus(true) + } + + } + cmdName = cmdName.toLowerCase(); + var me = this, + result, + cmd = me.commands[cmdName] || UM.commands[cmdName]; + if (!cmd || !cmd.execCommand) { + return null; + } + if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + if (me.queryCommandState.apply(me,arguments) != -1) { + me.fireEvent('saveScene'); + me.fireEvent('beforeexeccommand', cmdName); + result = this._callCmdFn('execCommand', arguments); + (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange'); + me.fireEvent('afterexeccommand', cmdName); + me.fireEvent('saveScene'); + } + me.__hasEnterExecCommand = false; + } else { + result = this._callCmdFn('execCommand', arguments); + (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange') + } + (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me._selectionChange(); + return result; + }, + /** + * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 + * @name queryCommandState + * @grammar editor.queryCommandState(cmdName) => (-1|0|1) + * @desc + * * ''-1'' 当前命令不可用 + * * ''0'' 当前命令可用 + * * ''1'' 当前命令已经执行过了 + */ + queryCommandState: function (cmdName) { + try{ + return this._callCmdFn('queryCommandState', arguments); + }catch(e){ + return 0 + } + + }, + + /** + * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 + * @name queryCommandValue + * @grammar editor.queryCommandValue(cmdName) => {*} + */ + queryCommandValue: function (cmdName) { + try{ + return this._callCmdFn('queryCommandValue', arguments); + }catch(e){ + return null + } + }, + /** + * 检查编辑区域中是否有内容,若包含tags中的节点类型,直接返回true + * @name hasContents + * @desc + * 默认有文本内容,或者有以下节点都不认为是空 + * {table:1,ul:1,ol:1,dl:1,iframe:1,area:1,base:1,col:1,hr:1,img:1,embed:1,input:1,link:1,meta:1,param:1} + * @grammar editor.hasContents() => (true|false) + * @grammar editor.hasContents(tags) => (true|false) //若文档中包含tags数组里对应的tag,直接返回true + * @example + * editor.hasContents(['span']) //如果编辑器里有这些,不认为是空 + */ + hasContents: function (tags) { + if (tags) { + for (var i = 0, ci; ci = tags[i++];) { + if (this.body.getElementsByTagName(ci).length > 0) { + return true; + } + } + } + if (!domUtils.isEmptyBlock(this.body)) { + return true + } + //随时添加,定义的特殊标签如果存在,不能认为是空 + tags = ['div']; + for (i = 0; ci = tags[i++];) { + var nodes = domUtils.getElementsByTagName(this.body, ci); + for (var n = 0, cn; cn = nodes[n++];) { + if (domUtils.isCustomeNode(cn)) { + return true; + } + } + } + return false; + }, + /** + * 重置编辑器,可用来做多个tab使用同一个编辑器实例 + * @name reset + * @desc + * * 清空编辑器内容 + * * 清空回退列表 + * @grammar editor.reset() + */ + reset: function () { + this.fireEvent('reset'); + }, + isEnabled: function(){ + return this._isEnabled != true; + }, + + setEnabled: function () { + var me = this, range; + + me.body.contentEditable = true; + + /* 恢复选区 */ + if (me.lastBk) { + range = me.selection.getRange(); + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk + } catch (e) { + range.setStartAtFirst(me.body).collapse(true) + } + range.select(true); + } + + /* 恢复query函数 */ + if (me.bkqueryCommandState) { + me.queryCommandState = me.bkqueryCommandState; + delete me.bkqueryCommandState; + } + + /* 恢复原生事件 */ + if (me._bkproxyDomEvent) { + me._proxyDomEvent = me._bkproxyDomEvent; + delete me._bkproxyDomEvent; + } + + /* 触发事件 */ + me.fireEvent('setEnabled'); + }, + /** + * 设置当前编辑区域可以编辑 + * @name enable + * @grammar editor.enable() + */ + enable: function () { + return this.setEnabled(); + }, + setDisabled: function (except, keepDomEvent) { + var me = this; + + me.body.contentEditable = false; + me._except = except ? utils.isArray(except) ? except : [except] : []; + + /* 备份最后的选区 */ + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + + /* 备份并重置query函数 */ + if(!me.bkqueryCommandState) { + me.bkqueryCommandState = me.queryCommandState; + me.queryCommandState = function (type) { + if (utils.indexOf(me._except, type) != -1) { + return me.bkqueryCommandState.apply(me, arguments); + } + return -1; + }; + } + + /* 备份并墙原生事件 */ + if(!keepDomEvent && !me._bkproxyDomEvent) { + me._bkproxyDomEvent = me._proxyDomEvent; + me._proxyDomEvent = function () { + return false; + }; + } + + /* 触发事件 */ + me.fireEvent('selectionchange'); + me.fireEvent('setDisabled', me._except); + }, + /** 设置当前编辑区域不可编辑,except中的命令除外 + * @name disable + * @grammar editor.disable() + * @grammar editor.disable(except) //例外的命令,也即即使设置了disable,此处配置的命令仍然可以执行 + * @example + * //禁用工具栏中除加粗和插入图片之外的所有功能 + * editor.disable(['bold','insertimage']);//可以是单一的String,也可以是Array + */ + disable: function (except) { + return this.setDisabled(except); + }, + /** + * 设置默认内容 + * @ignore + * @private + * @param {String} cont 要存入的内容 + */ + _setDefaultContent: function () { + function clear() { + var me = this; + if (me.document.getElementById('initContent')) { + me.body.innerHTML = '

      ' + (ie ? '' : '
      ') + '

      '; + me.removeListener('firstBeforeExecCommand focus', clear); + setTimeout(function () { + me.focus(); + me._selectionChange(); + }, 0) + } + } + + return function (cont) { + var me = this; + me.body.innerHTML = '

      ' + cont + '

      '; + + me.addListener('firstBeforeExecCommand focus', clear); + } + }(), + /** + * show方法的兼容版本 + * @private + * @ignore + */ + setShow: function () { + var me = this, range = me.selection.getRange(); + if (me.container.style.display == 'none') { + //有可能内容丢失了 + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk + } catch (e) { + range.setStartAtFirst(me.body).collapse(true) + } + //ie下focus实效,所以做了个延迟 + setTimeout(function () { + range.select(true); + }, 100); + me.container.style.display = ''; + } + + }, + /** + * 显示编辑器 + * @name show + * @grammar editor.show() + */ + show: function () { + return this.setShow(); + }, + /** + * hide方法的兼容版本 + * @private + * @ignore + */ + setHide: function () { + var me = this; + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + me.container.style.display = 'none' + }, + /** + * 隐藏编辑器 + * @name hide + * @grammar editor.hide() + */ + hide: function () { + return this.setHide(); + }, + /** + * 根据制定的路径,获取对应的语言资源 + * @name getLang + * @grammar editor.getLang(path) => (JSON|String) 路径根据的是lang目录下的语言文件的路径结构 + * @example + * editor.getLang('contextMenu.delete') //如果当前是中文,那返回是的是删除 + */ + getLang: function (path) { + var lang = UM.I18N[this.options.lang]; + if (!lang) { + throw Error("not import language file"); + } + path = (path || "").split("."); + for (var i = 0, ci; ci = path[i++];) { + lang = lang[ci]; + if (!lang)break; + } + return lang; + }, + /** + * 计算编辑器当前内容的长度 + * @name getContentLength + * @grammar editor.getContentLength(ingoneHtml,tagNames) => + * @example + * editor.getLang(true) + */ + getContentLength: function (ingoneHtml, tagNames) { + var count = this.getContent(false,false,true).length; + if (ingoneHtml) { + tagNames = (tagNames || []).concat([ 'hr', 'img', 'iframe']); + count = this.getContentTxt().replace(/[\t\r\n]+/g, '').length; + for (var i = 0, ci; ci = tagNames[i++];) { + count += this.body.getElementsByTagName(ci).length; + } + } + return count; + }, + addInputRule: function (rule,ignoreUndo) { + rule.ignoreUndo = ignoreUndo; + this.inputRules.push(rule); + }, + filterInputRule: function (root,isUndoLoad) { + for (var i = 0, ci; ci = this.inputRules[i++];) { + if(isUndoLoad && ci.ignoreUndo){ + continue; + } + ci.call(this, root) + } + }, + addOutputRule: function (rule,ignoreUndo) { + rule.ignoreUndo = ignoreUndo; + this.outputRules.push(rule) + }, + filterOutputRule: function (root,isUndoLoad) { + for (var i = 0, ci; ci = this.outputRules[i++];) { + if(isUndoLoad && ci.ignoreUndo){ + continue; + } + ci.call(this, root) + } + } + }; + utils.inherits(Editor, EventBase); +})(); + +/** + * @file + * @name UM.filterWord + * @short filterWord + * @desc 用来过滤word粘贴过来的字符串 + * @import editor.js,core/utils.js + * @anthor zhanyi + */ +var filterWord = UM.filterWord = function () { + + //是否是word过来的内容 + function isWordDocument( str ) { + return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/ig.test( str ); + } + //去掉小数 + function transUnit( v ) { + v = v.replace( /[\d.]+\w+/g, function ( m ) { + return utils.transUnitToPx(m); + } ); + return v; + } + + function filterPasteWord( str ) { + return str.replace(/[\t\r\n]+/g,' ') + .replace( //ig, "" ) + //转换图片 + .replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(str){ + //opera能自己解析出image所这里直接返回空 + if(browser.opera){ + return ''; + } + try{ + //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中 + if(/Bitmap/i.test(str)){ + return ''; + } + var width = str.match(/width:([ \d.]*p[tx])/i)[1], + height = str.match(/height:([ \d.]*p[tx])/i)[1], + src = str.match(/src=\s*"([^"]*)"/i)[1]; + return ''; + } catch(e){ + return ''; + } + }) + //针对wps添加的多余标签处理 + .replace(/<\/?div[^>]*>/g,'') + //去掉多余的属性 + .replace( /v:\w+=(["']?)[^'"]+\1/g, '' ) + .replace( /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, "" ) + .replace( /

      ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

      $1

      " ) + //去掉多余的属性 + .replace( /\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/ig, function(str,name,marks,val){ + //保留list的标示 + return name == 'class' && val == 'MsoListParagraph' ? str : '' + }) + //清除多余的font/span不能匹配 有可能是空格 + .replace( /<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a,b,c){ + return c.replace(/[\t\r\n ]+/g,' ') + }) + //处理style的问题 + .replace( /(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function( str, tag, tmp, style ) { + var n = [], + s = style.replace( /^\s+|\s+$/, '' ) + .replace(/'/g,'\'') + .replace( /"/gi, "'" ) + .split( /;\s*/g ); + + for ( var i = 0,v; v = s[i];i++ ) { + + var name, value, + parts = v.split( ":" ); + + if ( parts.length == 2 ) { + name = parts[0].toLowerCase(); + value = parts[1].toLowerCase(); + if(/^(background)\w*/.test(name) && value.replace(/(initial|\s)/g,'').length == 0 + || + /^(margin)\w*/.test(name) && /^0\w+$/.test(value) + ){ + continue; + } + + switch ( name ) { + case "mso-padding-alt": + case "mso-padding-top-alt": + case "mso-padding-right-alt": + case "mso-padding-bottom-alt": + case "mso-padding-left-alt": + case "mso-margin-alt": + case "mso-margin-top-alt": + case "mso-margin-right-alt": + case "mso-margin-bottom-alt": + case "mso-margin-left-alt": + //ie下会出现挤到一起的情况 + //case "mso-table-layout-alt": + case "mso-height": + case "mso-width": + case "mso-vertical-align-alt": + //trace:1819 ff下会解析出padding在table上 + if(!/]/.test(html)) { + return UM.htmlparser(html).children[0] + } else { + return new uNode({ + type:'element', + children:[], + tagName:html + }) + } + }; + uNode.createText = function (data,noTrans) { + return new UM.uNode({ + type:'text', + 'data':noTrans ? data : utils.unhtml(data || '') + }) + }; + function nodeToHtml(node, arr, formatter, current) { + switch (node.type) { + case 'root': + for (var i = 0, ci; ci = node.children[i++];) { + //插入新行 + if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) { + insertLine(arr, current, true); + insertIndent(arr, current) + } + nodeToHtml(ci, arr, formatter, current) + } + break; + case 'text': + isText(node, arr); + break; + case 'element': + isElement(node, arr, formatter, current); + break; + case 'comment': + isComment(node, arr, formatter); + } + return arr; + } + + function isText(node, arr) { + if(node.parentNode.tagName == 'pre'){ + //源码模式下输入html标签,不能做转换处理,直接输出 + arr.push(node.data) + }else{ + arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g,'  ')) + } + + } + + function isElement(node, arr, formatter, current) { + var attrhtml = ''; + if (node.attrs) { + attrhtml = []; + var attrs = node.attrs; + for (var a in attrs) { + //这里就针对 + //

      '

      + //这里边的\"做转换,要不用innerHTML直接被截断了,属性src + //有可能做的不够 + attrhtml.push(a + (attrs[a] !== undefined ? '="' + (notTransAttrs[a] ? utils.html(attrs[a]).replace(/["]/g, function (a) { + return '"' + }) : utils.unhtml(attrs[a])) + '"' : '')) + } + attrhtml = attrhtml.join(' '); + } + arr.push('<' + node.tagName + + (attrhtml ? ' ' + attrhtml : '') + + (dtd.$empty[node.tagName] ? '\/' : '' ) + '>' + ); + //插入新行 + if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') { + if(node.children && node.children.length){ + current = insertLine(arr, current, true); + insertIndent(arr, current) + } + + } + if (node.children && node.children.length) { + for (var i = 0, ci; ci = node.children[i++];) { + if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) { + insertLine(arr, current); + insertIndent(arr, current) + } + nodeToHtml(ci, arr, formatter, current) + } + } + if (!dtd.$empty[node.tagName]) { + if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') { + + if(node.children && node.children.length){ + current = insertLine(arr, current); + insertIndent(arr, current) + } + } + arr.push('<\/' + node.tagName + '>'); + } + + } + + function isComment(node, arr) { + arr.push(''); + } + + function getNodeById(root, id) { + var node; + if (root.type == 'element' && root.getAttr('id') == id) { + return root; + } + if (root.children && root.children.length) { + for (var i = 0, ci; ci = root.children[i++];) { + if (node = getNodeById(ci, id)) { + return node; + } + } + } + } + + function getNodesByTagName(node, tagName, arr) { + if (node.type == 'element' && node.tagName == tagName) { + arr.push(node); + } + if (node.children && node.children.length) { + for (var i = 0, ci; ci = node.children[i++];) { + getNodesByTagName(ci, tagName, arr) + } + } + } + function nodeTraversal(root,fn){ + if(root.children && root.children.length){ + for(var i= 0,ci;ci=root.children[i];){ + nodeTraversal(ci,fn); + //ci被替换的情况,这里就不再走 fn了 + if(ci.parentNode ){ + if(ci.children && ci.children.length){ + fn(ci) + } + if(ci.parentNode) i++ + } + } + }else{ + fn(root) + } + + } + uNode.prototype = { + + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml(); + * ``` + */ + + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @param { Boolean } formatter 是否格式化返回值 + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml( true ); + * ``` + */ + toHtml:function (formatter) { + var arr = []; + nodeToHtml(this, arr, formatter, 0); + return arr.join('') + }, + + /** + * 获取节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的html内容 + * @example + * ```javascript + * var htmlstr = node.innerHTML(); + * ``` + */ + + /** + * 设置节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } htmlstr 传入要设置的html内容 + * @return { UM.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerHTML('text'); + * ``` + */ + innerHTML:function (htmlstr) { + if (this.type != 'element' || dtd.$empty[this.tagName]) { + return this; + } + if (utils.isString(htmlstr)) { + if(this.children){ + for (var i = 0, ci; ci = this.children[i++];) { + ci.parentNode = null; + } + } + this.children = []; + var tmpRoot = UM.htmlparser(htmlstr); + for (var i = 0, ci; ci = tmpRoot.children[i++];) { + this.children.push(ci); + ci.parentNode = this; + } + return this; + } else { + var tmpRoot = new UM.uNode({ + type:'root', + children:this.children + }); + return tmpRoot.toHtml(); + } + }, + + /** + * 获取节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的存文本内容 + * @example + * ```javascript + * var textStr = node.innerText(); + * ``` + */ + + /** + * 设置节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } textStr 传入要设置的文本内容 + * @return { UM.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerText('text'); + * ``` + */ + innerText:function (textStr,noTrans) { + if (this.type != 'element' || dtd.$empty[this.tagName]) { + return this; + } + if (textStr) { + if(this.children){ + for (var i = 0, ci; ci = this.children[i++];) { + ci.parentNode = null; + } + } + this.children = []; + this.appendChild(uNode.createText(textStr,noTrans)); + return this; + } else { + return this.toHtml().replace(/<[^>]+>/g, ''); + } + }, + + /** + * 获取当前对象的data属性 + * @method getData + * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 + * @example + * ```javascript + * node.getData(); + * ``` + */ + getData:function () { + if (this.type == 'element') + return ''; + return this.data + }, + + /** + * 获取当前节点下的第一个子节点 + * @method firstChild + * @return { UM.uNode } 返回第一个子节点 + * @example + * ```javascript + * node.firstChild(); //返回第一个子节点 + * ``` + */ + firstChild:function () { +// if (this.type != 'element' || dtd.$empty[this.tagName]) { +// return this; +// } + return this.children ? this.children[0] : null; + }, + + /** + * 获取当前节点下的最后一个子节点 + * @method lastChild + * @return { UM.uNode } 返回最后一个子节点 + * @example + * ```javascript + * node.lastChild(); //返回最后一个子节点 + * ``` + */ + lastChild:function () { +// if (this.type != 'element' || dtd.$empty[this.tagName] ) { +// return this; +// } + return this.children ? this.children[this.children.length - 1] : null; + }, + + /** + * 获取和当前节点有相同父亲节点的前一个节点 + * @method previousSibling + * @return { UM.uNode } 返回前一个节点 + * @example + * ```javascript + * node.children[2].previousSibling(); //返回子节点node.children[1] + * ``` + */ + previousSibling : function(){ + var parent = this.parentNode; + for (var i = 0, ci; ci = parent.children[i]; i++) { + if (ci === this) { + return i == 0 ? null : parent.children[i-1]; + } + } + + }, + + /** + * 获取和当前节点有相同父亲节点的后一个节点 + * @method nextSibling + * @return { UM.uNode } 返回后一个节点,找不到返回null + * @example + * ```javascript + * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] + * ``` + */ + nextSibling : function(){ + var parent = this.parentNode; + for (var i = 0, ci; ci = parent.children[i++];) { + if (ci === this) { + return parent.children[i]; + } + } + }, + + /** + * 用新的节点替换当前节点 + * @method replaceChild + * @param { UM.uNode } target 要替换成该节点参数 + * @param { UM.uNode } source 要被替换掉的节点 + * @return { UM.uNode } 返回替换之后的节点对象 + * @example + * ```javascript + * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 + * ``` + */ + replaceChild:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i, 1, target); + source.parentNode = null; + target.parentNode = this; + return target; + } + } + } + }, + + /** + * 在节点的子节点列表最后位置插入一个节点 + * @method appendChild + * @param { UM.uNode } node 要插入的节点 + * @return { UM.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.appendChild( newNode ); //在node内插入子节点newNode + * ``` + */ + appendChild:function (node) { + if (this.type == 'root' || (this.type == 'element' && !dtd.$empty[this.tagName])) { + if (!this.children) { + this.children = [] + } + if(node.parentNode){ + node.parentNode.removeChild(node); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === node) { + this.children.splice(i, 1); + break; + } + } + this.children.push(node); + node.parentNode = this; + return node; + } + + + }, + + /** + * 在传入节点的前面插入一个节点 + * @method insertBefore + * @param { UM.uNode } target 要插入的节点 + * @param { UM.uNode } source 在该参数节点前面插入 + * @return { UM.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertBefore:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i, 0, target); + target.parentNode = this; + return target; + } + } + + } + }, + + /** + * 在传入节点的后面插入一个节点 + * @method insertAfter + * @param { UM.uNode } target 要插入的节点 + * @param { UM.uNode } source 在该参数节点后面插入 + * @return { UM.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertAfter:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i + 1, 0, target); + target.parentNode = this; + return target; + } + + } + } + }, + + /** + * 从当前节点的子节点列表中,移除节点 + * @method removeChild + * @param { UM.uNode } node 要移除的节点引用 + * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 + * @return { * } 返回刚移除的子节点 + * @example + * ```javascript + * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 + * ``` + */ + removeChild:function (node,keepChildren) { + if (this.children) { + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === node) { + this.children.splice(i, 1); + ci.parentNode = null; + if(keepChildren && ci.children && ci.children.length){ + for(var j= 0,cj;cj=ci.children[j];j++){ + this.children.splice(i+j,0,cj); + cj.parentNode = this; + + } + } + return ci; + } + } + } + }, + + /** + * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 + * @method getAttr + * @param { String } attrName 要获取的属性名称 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.getAttr('title'); + * ``` + */ + getAttr:function (attrName) { + return this.attrs && this.attrs[attrName.toLowerCase()] + }, + + /** + * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 + * @method setAttr + * @param { String } attrName 要设置的属性名称 + * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.setAttr('title','标题'); + * ``` + */ + setAttr:function (attrName, attrVal) { + if (!attrName) { + delete this.attrs; + return; + } + if(!this.attrs){ + this.attrs = {}; + } + if (utils.isObject(attrName)) { + for (var a in attrName) { + if (!attrName[a]) { + delete this.attrs[a] + } else { + this.attrs[a.toLowerCase()] = attrName[a]; + } + } + } else { + if (!attrVal) { + delete this.attrs[attrName] + } else { + this.attrs[attrName.toLowerCase()] = attrVal; + } + + } + }, + hasAttr: function( attrName ){ + var attrVal = this.getAttr( attrName ); + return ( attrVal !== null ) && ( attrVal !== undefined ); + }, + /** + * 获取当前节点在父节点下的位置索引 + * @method getIndex + * @return { Number } 返回索引数值,如果没有父节点,返回-1 + * @example + * ```javascript + * node.getIndex(); + * ``` + */ + getIndex:function(){ + var parent = this.parentNode; + for(var i= 0,ci;ci=parent.children[i];i++){ + if(ci === this){ + return i; + } + } + return -1; + }, + + /** + * 在当前节点下,根据id查找节点 + * @method getNodeById + * @param { String } id 要查找的id + * @return { UM.uNode } 返回找到的节点 + * @example + * ```javascript + * node.getNodeById('textId'); + * ``` + */ + getNodeById:function (id) { + var node; + if (this.children && this.children.length) { + for (var i = 0, ci; ci = this.children[i++];) { + if (node = getNodeById(ci, id)) { + return node; + } + } + } + }, + + /** + * 在当前节点下,根据元素名称查找节点列表 + * @method getNodesByTagName + * @param { String } tagNames 要查找的元素名称 + * @return { Array } 返回找到的节点列表 + * @example + * ```javascript + * node.getNodesByTagName('span'); + * ``` + */ + getNodesByTagName:function (tagNames) { + tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, ' ').split(' '); + var arr = [], me = this; + utils.each(tagNames, function (tagName) { + if (me.children && me.children.length) { + for (var i = 0, ci; ci = me.children[i++];) { + getNodesByTagName(ci, tagName, arr) + } + } + }); + return arr; + }, + + /** + * 根据样式名称,获取节点的样式值 + * @method getStyle + * @param { String } name 要获取的样式名称 + * @return { String } 返回样式值 + * @example + * ```javascript + * node.getStyle('font-size'); + * ``` + */ + getStyle:function (name) { + var cssStyle = this.getAttr('style'); + if (!cssStyle) { + return '' + } + var reg = new RegExp('(^|;)\\s*' + name + ':([^;]+)','i'); + var match = cssStyle.match(reg); + if (match && match[0]) { + return match[2] + } + return ''; + }, + + /** + * 给节点设置样式 + * @method setStyle + * @param { String } name 要设置的的样式名称 + * @param { String } val 要设置的的样值 + * @example + * ```javascript + * node.setStyle('font-size', '12px'); + * ``` + */ + setStyle:function (name, val) { + function exec(name, val) { + var reg = new RegExp('(^|;)\\s*' + name + ':([^;]+;?)', 'gi'); + cssStyle = cssStyle.replace(reg, '$1'); + if (val) { + cssStyle = name + ':' + utils.unhtml(val) + ';' + cssStyle + } + + } + + var cssStyle = this.getAttr('style'); + if (!cssStyle) { + cssStyle = ''; + } + if (utils.isObject(name)) { + for (var a in name) { + exec(a, name[a]) + } + } else { + exec(name, val) + } + this.setAttr('style', utils.trim(cssStyle)) + }, + hasClass: function( className ){ + if( this.hasAttr('class') ) { + var classNames = this.getAttr('class').split(/\s+/), + hasClass = false; + $.each(classNames, function(key, item){ + if( item === className ) { + hasClass = true; + } + }); + return hasClass; + } else { + return false; + } + }, + addClass: function( className ){ + + var classes = null, + hasClass = false; + + if( this.hasAttr('class') ) { + + classes = this.getAttr('class'); + classes = classes.split(/\s+/); + + classes.forEach( function( item ){ + + if( item===className ) { + hasClass = true; + return; + } + + } ); + + !hasClass && classes.push( className ); + + this.setAttr('class', classes.join(" ")); + + } else { + this.setAttr('class', className); + } + + }, + removeClass: function( className ){ + if( this.hasAttr('class') ) { + var cl = this.getAttr('class'); + cl = cl.replace(new RegExp('\\b' + className + '\\b', 'g'),''); + this.setAttr('class', utils.trim(cl).replace(/[ ]{2,}/g,' ')); + } + }, + /** + * 传入一个函数,递归遍历当前节点下的所有节点 + * @method traversal + * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 + * @example + * ```javascript + * traversal(node, function(){ + * console.log(node.type); + * }); + * ``` + */ + traversal:function(fn){ + if(this.children && this.children.length){ + nodeTraversal(this,fn); + } + return this; + } + } +})(); + +//html字符串转换成uNode节点 +//by zhanyi +var htmlparser = UM.htmlparser = function (htmlstr,ignoreBlank) { + //todo 原来的方式 [^"'<>\/] 有\/就不能配对上
      这样的标签了 + //先去掉了,加上的原因忘了,这里先记录 + var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, + re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g; + + //ie下取得的html可能会有\n存在,要去掉,在处理replace(/[\t\r\n]*/g,'');代码高量的\n不能去除 + var allowEmptyTags = { + b:1,code:1,i:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,span:1, + sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1 + }; + htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, 'g'), ''); + if(!ignoreBlank){ + htmlstr = htmlstr.replace(new RegExp('[\\r\\t\\n'+(ignoreBlank?'':' ')+']*<\/?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n'+(ignoreBlank?'':' ')+']*','g'), function(a,b){ + //br暂时单独处理 + if(b && allowEmptyTags[b.toLowerCase()]){ + return a.replace(/(^[\n\r]+)|([\n\r]+$)/g,''); + } + return a.replace(new RegExp('^[\\r\\n'+(ignoreBlank?'':' ')+']+'),'').replace(new RegExp('[\\r\\n'+(ignoreBlank?'':' ')+']+$'),''); + }); + } + + var notTransAttrs = { + 'href':1, + 'src':1 + }; + + var uNode = UM.uNode, + needParentNode = { + 'td':'tr', + 'tr':['tbody','thead','tfoot'], + 'tbody':'table', + 'th':'tr', + 'thead':'table', + 'tfoot':'table', + 'caption':'table', + 'li':['ul', 'ol'], + 'dt':'dl', + 'dd':'dl', + 'option':'select' + }, + needChild = { + 'ol':'li', + 'ul':'li' + }; + + function text(parent, data) { + + if(needChild[parent.tagName]){ + var tmpNode = uNode.createElement(needChild[parent.tagName]); + parent.appendChild(tmpNode); + tmpNode.appendChild(uNode.createText(data)); + parent = tmpNode; + }else{ + + parent.appendChild(uNode.createText(data)); + } + } + + function element(parent, tagName, htmlattr) { + var needParentTag; + if (needParentTag = needParentNode[tagName]) { + var tmpParent = parent,hasParent; + while(tmpParent.type != 'root'){ + if(utils.isArray(needParentTag) ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 : needParentTag == tmpParent.tagName){ + parent = tmpParent; + hasParent = true; + break; + } + tmpParent = tmpParent.parentNode; + } + if(!hasParent){ + parent = element(parent, utils.isArray(needParentTag) ? needParentTag[0] : needParentTag) + } + } + //按dtd处理嵌套 +// if(parent.type != 'root' && !dtd[parent.tagName][tagName]) +// parent = parent.parentNode; + var elm = new uNode({ + parentNode:parent, + type:'element', + tagName:tagName.toLowerCase(), + //是自闭合的处理一下 + children:dtd.$empty[tagName] ? null : [] + }); + //如果属性存在,处理属性 + if (htmlattr) { + var attrs = {}, match; + while (match = re_attr.exec(htmlattr)) { + attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] ? (match[2] || match[3] || match[4]) : utils.unhtml(match[2] || match[3] || match[4]) + } + elm.attrs = attrs; + } + + parent.children.push(elm); + //如果是自闭合节点返回父亲节点 + return dtd.$empty[tagName] ? parent : elm + } + + function comment(parent, data) { + parent.children.push(new uNode({ + type:'comment', + data:data, + parentNode:parent + })); + } + + var match, currentIndex = 0, nextIndex = 0; + //设置根节点 + var root = new uNode({ + type:'root', + children:[] + }); + var currentParent = root; + + while (match = re_tag.exec(htmlstr)) { + currentIndex = match.index; + try{ + if (currentIndex > nextIndex) { + //text node + text(currentParent, htmlstr.slice(nextIndex, currentIndex)); + } + if (match[3]) { + + if(dtd.$cdata[currentParent.tagName]){ + text(currentParent, match[0]); + }else{ + //start tag + currentParent = element(currentParent, match[3].toLowerCase(), match[4]); + } + + + } else if (match[1]) { + if(currentParent.type != 'root'){ + if(dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]){ + text(currentParent, match[0]); + }else{ + var tmpParent = currentParent; + while(currentParent.type == 'element' && currentParent.tagName != match[1].toLowerCase()){ + currentParent = currentParent.parentNode; + if(currentParent.type == 'root'){ + currentParent = tmpParent; + throw 'break' + } + } + //end tag + currentParent = currentParent.parentNode; + } + + } + + } else if (match[2]) { + //comment + comment(currentParent, match[2]) + } + }catch(e){} + + nextIndex = re_tag.lastIndex; + + } + //如果结束是文本,就有可能丢掉,所以这里手动判断一下 + //例如
    • sdfsdfsdf
    • sdfsdfsdfsdf + if (nextIndex < htmlstr.length) { + text(currentParent, htmlstr.slice(nextIndex)); + } + return root; +}; +/** + * @file + * @name UM.filterNode + * @short filterNode + * @desc 根据给定的规则过滤节点 + * @import editor.js,core/utils.js + * @anthor zhanyi + */ +var filterNode = UM.filterNode = function () { + function filterNode(node,rules){ + switch (node.type) { + case 'text': + break; + case 'element': + var val; + if(val = rules[node.tagName]){ + if(val === '-'){ + node.parentNode.removeChild(node) + }else if(utils.isFunction(val)){ + var parentNode = node.parentNode, + index = node.getIndex(); + val(node); + if(node.parentNode){ + if(node.children){ + for(var i = 0,ci;ci=node.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + }else{ + for(var i = index,ci;ci=parentNode.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + + + }else{ + var attrs = val['$']; + if(attrs && node.attrs){ + var tmpAttrs = {},tmpVal; + for(var a in attrs){ + tmpVal = node.getAttr(a); + //todo 只先对style单独处理 + if(a == 'style' && utils.isArray(attrs[a])){ + var tmpCssStyle = []; + utils.each(attrs[a],function(v){ + var tmp; + if(tmp = node.getStyle(v)){ + tmpCssStyle.push(v + ':' + tmp); + } + }); + tmpVal = tmpCssStyle.join(';') + } + if(tmpVal){ + tmpAttrs[a] = tmpVal; + } + + } + node.attrs = tmpAttrs; + } + if(node.children){ + for(var i = 0,ci;ci=node.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + } + }else{ + //如果不在名单里扣出子节点并删除该节点,cdata除外 + if(dtd.$cdata[node.tagName]){ + node.parentNode.removeChild(node) + }else{ + var parentNode = node.parentNode, + index = node.getIndex(); + node.parentNode.removeChild(node,true); + for(var i = index,ci;ci=parentNode.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + } + break; + case 'comment': + node.parentNode.removeChild(node) + } + + } + return function(root,rules){ + if(utils.isEmptyObject(rules)){ + return root; + } + var val; + if(val = rules['-']){ + utils.each(val.split(' '),function(k){ + rules[k] = '-' + }) + } + for(var i= 0,ci;ci=root.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + return root; + } +}(); +///import core +/** + * @description 插入内容 + * @name baidu.editor.execCommand + * @param {String} cmdName inserthtml插入内容的命令 + * @param {String} html 要插入的内容 + * @author zhanyi + */ +UM.commands['inserthtml'] = { + execCommand: function (command,html,notNeedFilter){ + var me = this, + range, + div; + if(!html){ + return; + } + if(me.fireEvent('beforeinserthtml',html) === true){ + return; + } + range = me.selection.getRange(); + div = range.document.createElement( 'div' ); + div.style.display = 'inline'; + + if (!notNeedFilter) { + var root = UM.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if(me.options.filterRules){ + UM.filterNode(root,me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + html = root.toHtml() + } + div.innerHTML = utils.trim( html ); + + if ( !range.collapsed ) { + var tmpNode = range.startContainer; + if(domUtils.isFillChar(tmpNode)){ + range.setStartBefore(tmpNode) + } + tmpNode = range.endContainer; + if(domUtils.isFillChar(tmpNode)){ + range.setEndAfter(tmpNode) + } + range.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
      + if(range.endContainer && range.endContainer.nodeType == 1){ + tmpNode = range.endContainer.childNodes[range.endOffset]; + if(tmpNode && domUtils.isBr(tmpNode)){ + range.setEndAfter(tmpNode); + } + } + if(range.startOffset == 0){ + tmpNode = range.startContainer; + if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){ + tmpNode = range.endContainer; + if(range.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){ + me.body.innerHTML = '

      '+(browser.ie ? '' : '
      ')+'

      '; + range.setStart(me.body.firstChild,0).collapse(true) + + } + } + } + !range.collapsed && range.deleteContents(); + if(range.startContainer.nodeType == 1){ + var child = range.startContainer.childNodes[range.startOffset],pre; + if(child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre)){ + range.setEnd(pre,pre.childNodes.length).collapse(); + while(child.firstChild){ + pre.appendChild(child.firstChild); + } + domUtils.remove(child); + } + } + + } + + + var child,parent,pre,tmp,hadBreak = 0, nextNode; + //如果当前位置选中了fillchar要干掉,要不会产生空行 + if(range.inFillChar()){ + child = range.startContainer; + if(domUtils.isFillChar(child)){ + range.setStartBefore(child).collapse(true); + domUtils.remove(child); + }else if(domUtils.isFillChar(child,true)){ + child.nodeValue = child.nodeValue.replace(fillCharReg,''); + range.startOffset--; + range.collapsed && range.collapse(true) + } + } + while ( child = div.firstChild ) { + if(hadBreak){ + var p = me.document.createElement('p'); + while(child && (child.nodeType == 3 || !dtd.$block[child.tagName])){ + nextNode = child.nextSibling; + p.appendChild(child); + child = nextNode; + } + if(p.firstChild){ + + child = p + } + } + range.insertNode( child ); + nextNode = child.nextSibling; + if ( !hadBreak && child.nodeType == domUtils.NODE_ELEMENT && domUtils.isBlockElm( child ) ){ + + parent = domUtils.findParent( child,function ( node ){ return domUtils.isBlockElm( node ); } ); + if ( parent && parent.tagName.toLowerCase() != 'body' && !(dtd[parent.tagName][child.nodeName] && child.parentNode === parent)){ + if(!dtd[parent.tagName][child.nodeName]){ + pre = parent; + }else{ + tmp = child.parentNode; + while (tmp !== parent){ + pre = tmp; + tmp = tmp.parentNode; + + } + } + + + domUtils.breakParent( child, pre || tmp ); + //去掉break后前一个多余的节点

      |<[p> ==>

      |

      + var pre = child.previousSibling; + domUtils.trimWhiteTextNode(pre); + if(!pre.childNodes.length){ + domUtils.remove(pre); + } + //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 + + if(!browser.ie && + (next = child.nextSibling) && + domUtils.isBlockElm(next) && + next.lastChild && + !domUtils.isBr(next.lastChild)){ + next.appendChild(me.document.createElement('br')); + } + hadBreak = 1; + } + } + var next = child.nextSibling; + if(!div.firstChild && next && domUtils.isBlockElm(next)){ + + range.setStart(next,0).collapse(true); + break; + } + range.setEndAfter( child ).collapse(); + + } + + child = range.startContainer; + + if(nextNode && domUtils.isBr(nextNode)){ + domUtils.remove(nextNode) + } + //用chrome可能有空白展位符 + if(domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)){ + if(nextNode = child.nextSibling){ + domUtils.remove(child); + if(nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]){ + + range.setStart(nextNode,0).collapse(true).shrinkBoundary() + } + }else{ + + try{ + child.innerHTML = browser.ie ? domUtils.fillChar : '
      '; + }catch(e){ + range.setStartBefore(child); + domUtils.remove(child) + } + + } + + } + //加上true因为在删除表情等时会删两次,第一次是删的fillData + try{ + if(browser.ie9below && range.startContainer.nodeType == 1 && !range.startContainer.childNodes[range.startOffset]){ + var start = range.startContainer,pre = start.childNodes[range.startOffset-1]; + if(pre && pre.nodeType == 1 && dtd.$empty[pre.tagName]){ + var txt = this.document.createTextNode(domUtils.fillChar); + range.insertNode(txt).setStart(txt,0).collapse(true); + } + } + setTimeout(function(){ + range.select(true); + }) + + }catch(e){} + + + setTimeout(function(){ + range = me.selection.getRange(); + range.scrollIntoView(); + me.fireEvent('afterinserthtml'); + },200); + } +}; + +///import core +///import plugins\inserthtml.js +///commands 插入图片,操作图片的对齐方式 +///commandsName InsertImage,ImageNone,ImageLeft,ImageRight,ImageCenter +///commandsTitle 图片,默认,居左,居右,居中 +///commandsDialog dialogs\image +/** + * Created by . + * User: zhanyi + * for image + */ +UM.commands['insertimage'] = { + execCommand:function (cmd, opt) { + opt = utils.isArray(opt) ? opt : [opt]; + if (!opt.length) { + return; + } + var me = this; + var html = [], str = '', ci; + ci = opt[0]; + if (opt.length == 1) { + str = '' + ci.alt + ''; + if (ci['floatStyle'] == 'center') { + str = '

      ' + str + '

      '; + } + html.push(str); + + } else { + for (var i = 0; ci = opt[i++];) { + str = '

      '; + html.push(str); + } + } + + me.execCommand('insertHtml', html.join(''), true); + } +}; +///import core +///commands 段落格式,居左,居右,居中,两端对齐 +///commandsName JustifyLeft,JustifyCenter,JustifyRight,JustifyJustify +///commandsTitle 居左对齐,居中对齐,居右对齐,两端对齐 +/** + * @description 居左右中 + * @name UM.execCommand + * @param {String} cmdName justify执行对齐方式的命令 + * @param {String} align 对齐方式:left居左,right居右,center居中,justify两端对齐 + * @author zhanyi + */ +UM.plugins['justify']=function(){ + var me = this; + $.each('justifyleft justifyright justifycenter justifyfull'.split(' '),function(i,cmdName){ + me.commands[cmdName] = { + execCommand:function (cmdName) { + return this.document.execCommand(cmdName); + }, + queryCommandValue: function (cmdName) { + var val = this.document.queryCommandValue(cmdName); + return val === true || val === 'true' ? cmdName.replace(/justify/,'') : ''; + }, + queryCommandState: function (cmdName) { + return this.document.queryCommandState(cmdName) ? 1 : 0 + } + }; + }) +}; + +///import core +///import plugins\removeformat.js +///commands 字体颜色,背景色,字号,字体,下划线,删除线 +///commandsName ForeColor,BackColor,FontSize,FontFamily,Underline,StrikeThrough +///commandsTitle 字体颜色,背景色,字号,字体,下划线,删除线 +/** + * @description 字体 + * @name UM.execCommand + * @param {String} cmdName 执行的功能名称 + * @param {String} value 传入的值 + */ +UM.plugins['font'] = function () { + var me = this, + fonts = { + 'forecolor': 'forecolor', + 'backcolor': 'backcolor', + 'fontsize': 'fontsize', + 'fontfamily': 'fontname' + }, + cmdNameToStyle = { + 'forecolor': 'color', + 'backcolor': 'background-color', + 'fontsize': 'font-size', + 'fontfamily': 'font-family' + }, + cmdNameToAttr = { + 'forecolor': 'color', + 'fontsize': 'size', + 'fontfamily': 'face' + }; + me.setOpt({ + 'fontfamily': [ + { name: 'songti', val: '宋体,SimSun'}, + { name: 'yahei', val: '微软雅黑,Microsoft YaHei'}, + { name: 'kaiti', val: '楷体,楷体_GB2312, SimKai'}, + { name: 'heiti', val: '黑体, SimHei'}, + { name: 'lishu', val: '隶书, SimLi'}, + { name: 'andaleMono', val: 'andale mono'}, + { name: 'arial', val: 'arial, helvetica,sans-serif'}, + { name: 'arialBlack', val: 'arial black,avant garde'}, + { name: 'comicSansMs', val: 'comic sans ms'}, + { name: 'impact', val: 'impact,chicago'}, + { name: 'timesNewRoman', val: 'times new roman'}, + { name: 'sans-serif',val:'sans-serif'} + ], + 'fontsize': [10, 12, 16, 18,24, 32,48] + }); + + me.addOutputRule(function (root) { + utils.each(root.getNodesByTagName('font'), function (node) { + if (node.tagName == 'font') { + var cssStyle = []; + for (var p in node.attrs) { + switch (p) { + case 'size': + var val = node.attrs[p]; + $.each({ + '10':'1', + '12':'2', + '16':'3', + '18':'4', + '24':'5', + '32':'6', + '48':'7' + },function(k,v){ + if(v == val){ + val = k; + return false; + } + }); + cssStyle.push('font-size:' + val + 'px'); + break; + case 'color': + cssStyle.push('color:' + node.attrs[p]); + break; + case 'face': + cssStyle.push('font-family:' + node.attrs[p]); + break; + case 'style': + cssStyle.push(node.attrs[p]); + } + } + node.attrs = { + 'style': cssStyle.join(';') + }; + } + node.tagName = 'span'; + if(node.parentNode.tagName == 'span' && node.parentNode.children.length == 1){ + $.each(node.attrs,function(k,v){ + + node.parentNode.attrs[k] = k == 'style' ? node.parentNode.attrs[k] + v : v; + }) + node.parentNode.removeChild(node,true); + } + }); + }); + for(var p in fonts){ + (function (cmd) { + me.commands[cmd] = { + execCommand: function (cmdName,value) { + if(value == 'transparent'){ + return; + } + var rng = this.selection.getRange(); + if(rng.collapsed){ + var span = $('').css(cmdNameToStyle[cmdName],value)[0]; + rng.insertNode(span).setStart(span,0).setCursor(); + }else{ + if(cmdName == 'fontsize'){ + value = { + '10':'1', + '12':'2', + '16':'3', + '18':'4', + '24':'5', + '32':'6', + '48':'7' + }[(value+"").replace(/px/,'')] + } + this.document.execCommand(fonts[cmdName],false, value); + if(browser.gecko){ + $.each(this.$body.find('a'),function(i,a){ + var parent = a.parentNode; + if(parent.lastChild === parent.firstChild && /FONT|SPAN/.test(parent.tagName)){ + var cloneNode = parent.cloneNode(false); + cloneNode.innerHTML = a.innerHTML; + $(a).html('').append(cloneNode).insertBefore(parent); + + $(parent).remove(); + } + }); + } + if(!browser.ie){ + var nativeRange = this.selection.getNative().getRangeAt(0); + var common = nativeRange.commonAncestorContainer; + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + + $(common).find('a').each(function(i,n){ + var parent = n.parentNode; + if(parent.nodeName == 'FONT'){ + var font = parent.cloneNode(false); + font.innerHTML = n.innerHTML; + $(n).html('').append(font); + } + }); + rng.moveToBookmark(bk).select() + } + return true + } + + }, + queryCommandValue: function (cmdName) { + var start = me.selection.getStart(); + var val = $(start).css(cmdNameToStyle[cmdName]); + if(val === undefined){ + val = $(start).attr(cmdNameToAttr[cmdName]) + } + return val ? utils.fixColor(cmdName,val).replace(/px/,'') : ''; + }, + queryCommandState: function (cmdName) { + return this.queryCommandValue(cmdName) + } + }; + })(p); + } +}; +///import core +///commands 超链接,取消链接 +///commandsName Link,Unlink +///commandsTitle 超链接,取消链接 +///commandsDialog dialogs\link +/** + * 超链接 + * @function + * @name UM.execCommand + * @param {String} cmdName link插入超链接 + * @param {Object} options url地址,title标题,target是否打开新页 + * @author zhanyi + */ +/** + * 取消链接 + * @function + * @name UM.execCommand + * @param {String} cmdName unlink取消链接 + * @author zhanyi + */ + +UM.plugins['link'] = function(){ + var me = this; + + me.setOpt('autourldetectinie',false); + //在ie下禁用autolink + if(browser.ie && this.options.autourldetectinie === false){ + this.addListener('keyup',function(cmd,evt){ + var me = this,keyCode = evt.keyCode; + if(keyCode == 13 || keyCode == 32){ + var rng = me.selection.getRange(); + var start = rng.startContainer; + if(keyCode == 13){ + if(start.nodeName == 'P'){ + var pre = start.previousSibling; + if(pre && pre.nodeType == 1){ + var pre = pre.lastChild; + if(pre && pre.nodeName == 'A' && !pre.getAttribute('_href')){ + domUtils.remove(pre,true); + } + } + } + }else if(keyCode == 32){ + if(start.nodeType == 3 && /^\s$/.test(start.nodeValue)){ + start = start.previousSibling; + if(start && start.nodeName == 'A' && !start.getAttribute('_href')){ + domUtils.remove(start,true); + } + } + } + + } + + + }); + } + + this.addOutputRule(function(root){ + $.each(root.getNodesByTagName('a'),function(i,a){ + var _href = a.getAttr('_href'); + if(!/^(ftp|https?|\/|file)/.test(_href)){ + _href = 'http://' + _href; + } + a.setAttr('href', _href); + a.setAttr('_href') + if(a.getAttr('title')==''){ + a.setAttr('title') + } + }) + }); + this.addInputRule(function(root){ + $.each(root.getNodesByTagName('a'),function(i,a){ + a.setAttr('_href', a.getAttr('href')); + }) + }); + me.commands['link'] = { + execCommand : function( cmdName, opt ) { + + var me = this; + var rng = me.selection.getRange(); + opt._href && (opt._href = utils.unhtml(opt._href, /[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g)); + opt.href && (opt.href = utils.unhtml(opt.href, /[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g)); + if(rng.collapsed){ + var start = rng.startContainer; + if(start = domUtils.findParentByTagName(start,'a',true)){ + $(start).attr(opt); + rng.selectNode(start).select() + }else{ + rng.insertNode($('' + opt.href +'').attr(opt)[0]).select() + + } + + }else{ + me.document.execCommand('createlink',false,'_umeditor_link'); + utils.each(domUtils.getElementsByTagName(me.body,'a',function(n){ + + return n.getAttribute('href') == '_umeditor_link' + }),function(l){ + if($(l).text() == '_umeditor_link'){ + $(l).text(opt.href); + } + domUtils.setAttributes(l,opt); + rng.selectNode(l).select() + }) + } + + }, + queryCommandState:function(){ + return this.queryCommandValue('link') ? 1 : 0; + }, + queryCommandValue:function(){ + var path = this.selection.getStartElementPath(); + var result; + $.each(path,function(i,n){ + if(n.nodeName == "A"){ + result = n; + return false; + } + }) + return result; + } + }; + me.commands['unlink'] = { + execCommand : function() { + this.document.execCommand('unlink'); + } + }; +}; +///import core +///commands 打印 +///commandsName Print +///commandsTitle 打印 +/** + * @description 打印 + * @name baidu.editor.execCommand + * @param {String} cmdName print打印编辑器内容 + * @author zhanyi + */ +UM.commands['print'] = { + execCommand : function(){ + var me = this, + id = 'editor_print_' + +new Date(); + + $('').attr('id', id) + .css({ + width:'0px', + height:'0px', + 'overflow':'hidden', + 'float':'left', + 'position':'absolute', + top:'-10000px', + left:'-10000px' + }) + .appendTo(me.$container.find('.edui-dialog-container')); + + var w = window.open('', id, ''), + d = w.document; + d.open(); + d.write('
      '+this.getContent(null,null,true)+'
      '); + d.close(); + }, + notNeedUndo : 1 +}; +///import core +///commands 格式 +///commandsName Paragraph +///commandsTitle 段落格式 +/** + * 段落样式 + * @function + * @name UM.execCommand + * @param {String} cmdName paragraph插入段落执行命令 + * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' + * @param {String} attrs 标签的属性 + * @author zhanyi + */ +UM.plugins['paragraph'] = function() { + var me = this; + me.setOpt('paragraph',{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}); + me.commands['paragraph'] = { + execCommand : function( cmdName, style ) { + return this.document.execCommand('formatBlock',false,'<' + style + '>'); + }, + queryCommandValue : function() { + try{ + var val = this.document.queryCommandValue('formatBlock') + }catch(e){ + } + return val ; + } + }; +}; + +///import core +///import plugins\inserthtml.js +///commands 分割线 +///commandsName Horizontal +///commandsTitle 分隔线 +/** + * 分割线 + * @function + * @name UM.execCommand + * @param {String} cmdName horizontal插入分割线 + */ +UM.plugins['horizontal'] = function(){ + var me = this; + me.commands['horizontal'] = { + execCommand : function( ) { + this.document.execCommand('insertHorizontalRule'); + var rng = me.selection.getRange().txtToElmBoundary(true), + start = rng.startContainer; + if(domUtils.isBody(rng.startContainer)){ + var next = rng.startContainer.childNodes[rng.startOffset]; + if(!next){ + next = $('

      ').appendTo(rng.startContainer).html(browser.ie ? ' ' : '
      ')[0] + } + rng.setStart(next,0).setCursor() + }else{ + + while(dtd.$inline[start.tagName] && start.lastChild === start.firstChild){ + + var parent = start.parentNode; + parent.appendChild(start.firstChild); + parent.removeChild(start); + start = parent; + } + while(dtd.$inline[start.tagName]){ + start = start.parentNode; + } + if(start.childNodes.length == 1 && start.lastChild.nodeName == 'HR'){ + var hr = start.lastChild; + $(hr).insertBefore(start); + rng.setStart(start,0).setCursor(); + }else{ + hr = $('hr',start)[0]; + domUtils.breakParent(hr,start); + var pre = hr.previousSibling; + if(pre && domUtils.isEmptyBlock(pre)){ + $(pre).remove() + } + rng.setStart(hr.nextSibling,0).setCursor(); + } + + } + } + }; + +}; + + +///import core +///commands 清空文档 +///commandsName ClearDoc +///commandsTitle 清空文档 +/** + * + * 清空文档 + * @function + * @name UM.execCommand + * @param {String} cmdName cleardoc清空文档 + */ + +UM.commands['cleardoc'] = { + execCommand : function() { + var me = this, + range = me.selection.getRange(); + me.body.innerHTML = "

      "+(ie ? "" : "
      ")+"

      "; + range.setStart(me.body.firstChild,0).setCursor(false,true); + setTimeout(function(){ + me.fireEvent("clearDoc"); + },0); + + } +}; + + +///import core +///commands 撤销和重做 +///commandsName Undo,Redo +///commandsTitle 撤销,重做 +/** + * @description 回退 + * @author zhanyi + */ + +UM.plugins['undo'] = function () { + var saveSceneTimer; + var me = this, + maxUndoCount = me.options.maxUndoCount || 20, + maxInputCount = me.options.maxInputCount || 20, + fillchar = new RegExp(domUtils.fillChar + '|<\/hr>', 'gi');// ie会产生多余的 + var noNeedFillCharTags = { + ol:1,ul:1,table:1,tbody:1,tr:1,body:1 + }; + var orgState = me.options.autoClearEmptyNode; + function compareAddr(indexA, indexB) { + if (indexA.length != indexB.length) + return 0; + for (var i = 0, l = indexA.length; i < l; i++) { + if (indexA[i] != indexB[i]) + return 0 + } + return 1; + } + + function compareRangeAddress(rngAddrA, rngAddrB) { + if (rngAddrA.collapsed != rngAddrB.collapsed) { + return 0; + } + if (!compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)) { + return 0; + } + return 1; + } + + function UndoManager() { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.undo = function () { + if (this.hasUndo) { + if (!this.list[this.index - 1] && this.list.length == 1) { + this.reset(); + return; + } + while (this.list[this.index].content == this.list[this.index - 1].content) { + this.index--; + if (this.index == 0) { + return this.restore(0); + } + } + this.restore(--this.index); + } + }; + this.redo = function () { + if (this.hasRedo) { + while (this.list[this.index].content == this.list[this.index + 1].content) { + this.index++; + if (this.index == this.list.length - 1) { + return this.restore(this.index); + } + } + this.restore(++this.index); + } + }; + + this.restore = function () { + var me = this.editor; + var scene = this.list[this.index]; + var root = UM.htmlparser(scene.content.replace(fillchar, '')); + me.options.autoClearEmptyNode = false; + me.filterInputRule(root,true); + me.options.autoClearEmptyNode = orgState; + //trace:873 + //去掉展位符 + me.body.innerHTML = root.toHtml(); + me.fireEvent('afterscencerestore'); + //处理undo后空格不展位的问题 + if (browser.ie) { + utils.each(domUtils.getElementsByTagName(me.document,'td th caption p'),function(node){ + if(domUtils.isEmptyNode(node)){ + domUtils.fillNode(me.document, node); + } + }) + } + + try{ + var rng = new dom.Range(me.document,me.body).moveToAddress(scene.address); + if(browser.ie && rng.collapsed && rng.startContainer.nodeType == 1){ + var tmpNode = rng.startContainer.childNodes[rng.startOffset]; + if( !tmpNode || tmpNode.nodeType == 1 && dtd.$empty[tmpNode]){ + rng.insertNode(me.document.createTextNode(' ')).collapse(true); + } + } + rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]); + }catch(e){} + + this.update(); + this.clearKey(); + //不能把自己reset了 + me.fireEvent('reset', true); + }; + + this.getScene = function () { + var me = this.editor; + var rng = me.selection.getRange(), + rngAddress = rng.createAddress(false,true); + me.fireEvent('beforegetscene'); + var root = UM.htmlparser(me.body.innerHTML,true); + me.options.autoClearEmptyNode = false; + me.filterOutputRule(root,true); + me.options.autoClearEmptyNode = orgState; + var cont = root.toHtml(); + browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); + me.fireEvent('aftergetscene'); + return { + address:rngAddress, + content:cont + } + }; + this.save = function (notCompareRange,notSetCursor) { + clearTimeout(saveSceneTimer); + var currentScene = this.getScene(notSetCursor), + lastScene = this.list[this.index]; + //内容相同位置相同不存 + if (lastScene && lastScene.content == currentScene.content && + ( notCompareRange ? 1 : compareRangeAddress(lastScene.address, currentScene.address) ) + ) { + return; + } + this.list = this.list.slice(0, this.index + 1); + this.list.push(currentScene); + //如果大于最大数量了,就把最前的剔除 + if (this.list.length > maxUndoCount) { + this.list.shift(); + } + this.index = this.list.length - 1; + this.clearKey(); + //跟新undo/redo状态 + this.update(); + + }; + this.update = function () { + this.hasRedo = !!this.list[this.index + 1]; + this.hasUndo = !!this.list[this.index - 1]; + }; + this.reset = function () { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.clearKey(); + }; + this.clearKey = function () { + keycont = 0; + lastKeyCode = null; + }; + } + + me.undoManger = new UndoManager(); + me.undoManger.editor = me; + function saveScene() { + this.undoManger.save(); + } + + me.addListener('saveScene', function () { + var args = Array.prototype.splice.call(arguments,1); + this.undoManger.save.apply(this.undoManger,args); + }); + + me.addListener('beforeexeccommand', saveScene); + me.addListener('afterexeccommand', saveScene); + + me.addListener('reset', function (type, exclude) { + if (!exclude) { + this.undoManger.reset(); + } + }); + me.commands['redo'] = me.commands['undo'] = { + execCommand:function (cmdName) { + this.undoManger[cmdName](); + }, + queryCommandState:function (cmdName) { + return this.undoManger['has' + (cmdName.toLowerCase() == 'undo' ? 'Undo' : 'Redo')] ? 0 : -1; + }, + notNeedUndo:1 + }; + + var keys = { + // /*Backspace*/ 8:1, /*Delete*/ 46:1, + /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1, + 37:1, 38:1, 39:1, 40:1 + + }, + keycont = 0, + lastKeyCode; + //输入法状态下不计算字符数 + var inputType = false; + me.addListener('ready', function () { + $(this.body).on('compositionstart', function () { + inputType = true; + }).on('compositionend', function () { + inputType = false; + }) + }); + //快捷键 + me.addshortcutkey({ + "Undo":"ctrl+90", //undo + "Redo":"ctrl+89,shift+ctrl+z" //redo + + }); + var isCollapsed = true; + me.addListener('keydown', function (type, evt) { + + var me = this; + var keyCode = evt.keyCode || evt.which; + if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + if (inputType) + return; + + if(!me.selection.getRange().collapsed){ + me.undoManger.save(false,true); + isCollapsed = false; + return; + } + if (me.undoManger.list.length == 0) { + me.undoManger.save(true); + } + clearTimeout(saveSceneTimer); + function save(cont){ + + if (cont.selection.getRange().collapsed) + cont.fireEvent('contentchange'); + cont.undoManger.save(false,true); + cont.fireEvent('selectionchange'); + } + saveSceneTimer = setTimeout(function(){ + if(inputType){ + var interalTimer = setInterval(function(){ + if(!inputType){ + save(me); + clearInterval(interalTimer) + } + },300) + return; + } + save(me); + },200); + + lastKeyCode = keyCode; + keycont++; + if (keycont >= maxInputCount ) { + save(me) + } + } + }); + me.addListener('keyup', function (type, evt) { + var keyCode = evt.keyCode || evt.which; + if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + if (inputType) + return; + if(!isCollapsed){ + this.undoManger.save(false,true); + isCollapsed = true; + } + } + }); + +}; + +///import core +///import plugins/inserthtml.js +///import plugins/undo.js +///import plugins/serialize.js +///commands 粘贴 +///commandsName PastePlain +///commandsTitle 纯文本粘贴模式 +/** + * @description 粘贴 + * @author zhanyi + */ +UM.plugins['paste'] = function () { + function getClipboardData(callback) { + var doc = this.document; + if (doc.getElementById('baidu_pastebin')) { + return; + } + var range = this.selection.getRange(), + bk = range.createBookmark(), + //创建剪贴的容器div + pastebin = doc.createElement('div'); + pastebin.id = 'baidu_pastebin'; + // Safari 要求div必须有内容,才能粘贴内容进来 + browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar)); + this.body.appendChild(pastebin); + //trace:717 隐藏的span不能得到top + //bk.start.innerHTML = ' '; + bk.start.style.display = ''; + + pastebin.style.cssText = "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + + //要在现在光标平行的位置加入,否则会出现跳动的问题 + $(bk.start).position().top + 'px'; + + range.selectNodeContents(pastebin).select(true); + + setTimeout(function () { + if (browser.webkit) { + for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) { + if (domUtils.isEmptyNode(pi)) { + domUtils.remove(pi); + } else { + pastebin = pi; + break; + } + } + } + try { + pastebin.parentNode.removeChild(pastebin); + } catch (e) { + } + range.moveToBookmark(bk).select(true); + callback(pastebin); + }, 0); + } + + var me = this; + + + function filter(div) { + var html; + if (div.firstChild) { + //去掉cut中添加的边界值 + var nodes = domUtils.getElementsByTagName(div, 'span'); + for (var i = 0, ni; ni = nodes[i++];) { + if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') { + domUtils.remove(ni); + } + } + + if (browser.webkit) { + + var brs = div.querySelectorAll('div br'); + for (var i = 0, bi; bi = brs[i++];) { + var pN = bi.parentNode; + if (pN.tagName == 'DIV' && pN.childNodes.length == 1) { + pN.innerHTML = '


      '; + domUtils.remove(pN); + } + } + var divs = div.querySelectorAll('#baidu_pastebin'); + for (var i = 0, di; di = divs[i++];) { + var tmpP = me.document.createElement('p'); + di.parentNode.insertBefore(tmpP, di); + while (di.firstChild) { + tmpP.appendChild(di.firstChild); + } + domUtils.remove(di); + } + + var metas = div.querySelectorAll('meta'); + for (var i = 0, ci; ci = metas[i++];) { + domUtils.remove(ci); + } + + var brs = div.querySelectorAll('br'); + for (i = 0; ci = brs[i++];) { + if (/^apple-/i.test(ci.className)) { + domUtils.remove(ci); + } + } + } + if (browser.gecko) { + var dirtyNodes = div.querySelectorAll('[_moz_dirty]'); + for (i = 0; ci = dirtyNodes[i++];) { + ci.removeAttribute('_moz_dirty'); + } + } + if (!browser.ie) { + var spans = div.querySelectorAll('span.Apple-style-span'); + for (var i = 0, ci; ci = spans[i++];) { + domUtils.remove(ci, true); + } + } + + //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 + html = div.innerHTML;//.replace(/>(?:(\s| )*?)<'); + + //过滤word粘贴过来的冗余属性 + html = UM.filterWord(html); + //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 + var root = UM.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if (me.options.filterRules) { + UM.filterNode(root, me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + //针对chrome的处理 + if (browser.webkit) { + var br = root.lastChild(); + if (br && br.type == 'element' && br.tagName == 'br') { + root.removeChild(br) + } + utils.each(me.body.querySelectorAll('div'), function (node) { + if (domUtils.isEmptyBlock(node)) { + domUtils.remove(node) + } + }) + } + html = {'html': root.toHtml()}; + me.fireEvent('beforepaste', html, root); + //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 + if(!html.html){ + return; + } + + me.execCommand('insertHtml', html.html, true); + me.fireEvent("afterpaste", html); + } + } + + + me.addListener('ready', function () { + $(me.body).on( 'cut', function () { + var range = me.selection.getRange(); + if (!range.collapsed && me.undoManger) { + me.undoManger.save(); + } + }).on(browser.ie || browser.opera ? 'keydown' : 'paste', function (e) { + //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 + if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) { + return; + } + getClipboardData.call(me, function (div) { + filter(div); + }); + }); + + }); +}; + + +///import core +///commands 有序列表,无序列表 +///commandsName InsertOrderedList,InsertUnorderedList +///commandsTitle 有序列表,无序列表 +/** + * 有序列表 + * @function + * @name UM.execCommand + * @param {String} cmdName insertorderlist插入有序列表 + * @param {String} style 值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman + * @author zhanyi + */ +/** + * 无序链接 + * @function + * @name UM.execCommand + * @param {String} cmdName insertunorderlist插入无序列表 + * * @param {String} style 值为:circle,disc,square + * @author zhanyi + */ + +UM.plugins['list'] = function () { + var me = this; + + me.setOpt( { + 'insertorderedlist':{ + 'decimal':'', + 'lower-alpha':'', + 'lower-roman':'', + 'upper-alpha':'', + 'upper-roman':'' + }, + 'insertunorderedlist':{ + 'circle':'', + 'disc':'', + 'square':'' + } + } ); + + this.addInputRule(function(root){ + utils.each(root.getNodesByTagName('li'), function (node) { + if(node.children.length == 0){ + node.parentNode.removeChild(node); + } + }) + }); + me.commands['insertorderedlist'] = + me.commands['insertunorderedlist'] = { + execCommand:function (cmdName) { + this.document.execCommand(cmdName); + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + + this.$body.find('ol,ul').each(function(i,n){ + var parent = n.parentNode; + if(parent.tagName == 'P' && parent.lastChild === parent.firstChild){ + $(n).children().each(function(j,li){ + var p = parent.cloneNode(false); + $(p).append(li.innerHTML); + $(li).html('').append(p); + }); + $(n).insertBefore(parent); + $(parent).remove(); + } + + if(dtd.$inline[parent.tagName]){ + if(parent.tagName == 'SPAN'){ + + $(n).children().each(function(k,li){ + var span = parent.cloneNode(false); + if(li.firstChild.nodeName != 'P'){ + + while(li.firstChild){ + span.appendChild(li.firstChild) + }; + $('

      ').appendTo(li).append(span); + }else{ + while(li.firstChild){ + span.appendChild(li.firstChild) + }; + $(li.firstChild).append(span); + } + }) + + } + domUtils.remove(parent,true) + } + }); + + + + + rng.moveToBookmark(bk).select(); + return true; + }, + queryCommandState:function (cmdName) { + return this.document.queryCommandState(cmdName); + } + }; +}; + + +///import core +///import plugins/serialize.js +///import plugins/undo.js +///commands 查看源码 +///commandsName Source +///commandsTitle 查看源码 +(function (){ + var sourceEditors = { + textarea: function (editor, holder){ + var textarea = holder.ownerDocument.createElement('textarea'); + textarea.style.cssText = 'resize:none;border:0;padding:0;margin:0;overflow-y:auto;outline:0'; + // todo: IE下只有onresize属性可用... 很纠结 + if (browser.ie && browser.version < 8) { + + textarea.style.width = holder.offsetWidth + 'px'; + textarea.style.height = holder.offsetHeight + 'px'; + holder.onresize = function (){ + textarea.style.width = holder.offsetWidth + 'px'; + textarea.style.height = holder.offsetHeight + 'px'; + }; + } + holder.appendChild(textarea); + return { + container : textarea, + setContent: function (content){ + textarea.value = content; + }, + getContent: function (){ + return textarea.value; + }, + select: function (){ + var range; + if (browser.ie) { + range = textarea.createTextRange(); + range.collapse(true); + range.select(); + } else { + //todo: chrome下无法设置焦点 + textarea.setSelectionRange(0, 0); + textarea.focus(); + } + }, + dispose: function (){ + holder.removeChild(textarea); + // todo + holder.onresize = null; + textarea = null; + holder = null; + } + }; + } + }; + + UM.plugins['source'] = function (){ + var me = this; + var opt = this.options; + var sourceMode = false; + var sourceEditor; + + opt.sourceEditor = 'textarea'; + + me.setOpt({ + sourceEditorFirst:false + }); + function createSourceEditor(holder){ + return sourceEditors.textarea(me, holder); + } + + var bakCssText; + //解决在源码模式下getContent不能得到最新的内容问题 + var oldGetContent = me.getContent, + bakAddress; + + me.commands['source'] = { + execCommand: function (){ + + sourceMode = !sourceMode; + if (sourceMode) { + bakAddress = me.selection.getRange().createAddress(false,true); + me.undoManger && me.undoManger.save(true); + if(browser.gecko){ + me.body.contentEditable = false; + } + +// bakCssText = me.body.style.cssText; + me.body.style.cssText += ';position:absolute;left:-32768px;top:-32768px;'; + + + me.fireEvent('beforegetcontent'); + var root = UM.htmlparser(me.body.innerHTML); + me.filterOutputRule(root); + root.traversal(function (node) { + if (node.type == 'element') { + switch (node.tagName) { + case 'td': + case 'th': + case 'caption': + if(node.children && node.children.length == 1){ + if(node.firstChild().tagName == 'br' ){ + node.removeChild(node.firstChild()) + } + }; + break; + case 'pre': + node.innerText(node.innerText().replace(/ /g,' ')) + + } + } + }); + + me.fireEvent('aftergetcontent'); + + var content = root.toHtml(true); + + sourceEditor = createSourceEditor(me.body.parentNode); + + sourceEditor.setContent(content); + + var getStyleValue=function(attr){ + return parseInt($(me.body).css(attr)); + }; + $(sourceEditor.container).width($(me.body).width()+getStyleValue("padding-left")+getStyleValue("padding-right")) + .height($(me.body).height()); + setTimeout(function (){ + sourceEditor.select(); + }); + //重置getContent,源码模式下取值也能是最新的数据 + me.getContent = function (){ + return sourceEditor.getContent() || '

      ' + (browser.ie ? '' : '
      ')+'

      '; + }; + } else { + me.$body.css({ + 'position':'', + 'left':'', + 'top':'' + }); +// me.body.style.cssText = bakCssText; + var cont = sourceEditor.getContent() || '

      ' + (browser.ie ? '' : '
      ')+'

      '; + //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 + cont = cont.replace(new RegExp('[\\r\\t\\n ]*<\/?(\\w+)\\s*(?:[^>]*)>','g'), function(a,b){ + if(b && !dtd.$inlineWithA[b.toLowerCase()]){ + return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,''); + } + return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,'') + }); + me.setContent(cont); + sourceEditor.dispose(); + sourceEditor = null; + //还原getContent方法 + me.getContent = oldGetContent; + var first = me.body.firstChild; + //trace:1106 都删除空了,下边会报错,所以补充一个p占位 + if(!first){ + me.body.innerHTML = '

      '+(browser.ie?'':'
      ')+'

      '; + } + //要在ifm为显示时ff才能取到selection,否则报错 + //这里不能比较位置了 + me.undoManger && me.undoManger.save(true); + if(browser.gecko){ + me.body.contentEditable = true; + } + try{ + me.selection.getRange().moveToAddress(bakAddress).select(); + }catch(e){} + + } + this.fireEvent('sourcemodechanged', sourceMode); + }, + queryCommandState: function (){ + return sourceMode|0; + }, + notNeedUndo : 1 + }; + var oldQueryCommandState = me.queryCommandState; + + + me.queryCommandState = function (cmdName){ + cmdName = cmdName.toLowerCase(); + if (sourceMode) { + //源码模式下可以开启的命令 + return cmdName in { + 'source' : 1, + 'fullscreen' : 1 + } ? oldQueryCommandState.apply(this, arguments) : -1 + } + return oldQueryCommandState.apply(this, arguments); + }; + + }; + +})(); +///import core +///import plugins/undo.js +///commands 设置回车标签p或br +///commandsName EnterKey +///commandsTitle 设置回车标签p或br +/** + * @description 处理回车 + * @author zhanyi + */ +UM.plugins['enterkey'] = function() { + var hTag, + me = this, + tag = me.options.enterTag; + me.addListener('keyup', function(type, evt) { + + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + var range = me.selection.getRange(), + start = range.startContainer, + doSave; + + //修正在h1-h6里边回车后不能嵌套p的问题 + if (!browser.ie) { + + if (/h\d/i.test(hTag)) { + if (browser.gecko) { + var h = domUtils.findParentByTagName(start, [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption','table'], true); + if (!h) { + me.document.execCommand('formatBlock', false, '

      '); + doSave = 1; + } + } else { + //chrome remove div + if (start.nodeType == 1) { + var tmp = me.document.createTextNode(''),div; + range.insertNode(tmp); + div = domUtils.findParentByTagName(tmp, 'div', true); + if (div) { + var p = me.document.createElement('p'); + while (div.firstChild) { + p.appendChild(div.firstChild); + } + div.parentNode.insertBefore(p, div); + domUtils.remove(div); + range.setStartBefore(tmp).setCursor(); + doSave = 1; + } + domUtils.remove(tmp); + + } + } + + if (me.undoManger && doSave) { + me.undoManger.save(); + } + } + //没有站位符,会出现多行的问题 + browser.opera && range.select(); + }else{ + me.fireEvent('saveScene',true,true) + } + } + }); + + me.addListener('keydown', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) {//回车 + if(me.fireEvent('beforeenterkeydown')){ + domUtils.preventDefault(evt); + return; + } + me.fireEvent('saveScene',true,true); + hTag = ''; + + + var range = me.selection.getRange(); + + if (!range.collapsed) { + //跨td不能删 + var start = range.startContainer, + end = range.endContainer, + startTd = domUtils.findParentByTagName(start, 'td', true), + endTd = domUtils.findParentByTagName(end, 'td', true); + if (startTd && endTd && startTd !== endTd || !startTd && endTd || startTd && !endTd) { + evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false); + return; + } + } + if (tag == 'p') { + + + if (!browser.ie) { + + start = domUtils.findParentByTagName(range.startContainer, ['ol','ul','p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption'], true); + + //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command + //trace:2431 + if (!start && !browser.opera) { + + me.document.execCommand('formatBlock', false, '

      '); + + if (browser.gecko) { + range = me.selection.getRange(); + start = domUtils.findParentByTagName(range.startContainer, 'p', true); + start && domUtils.removeDirtyAttr(start); + } + + + } else { + hTag = start.tagName; + start.tagName.toLowerCase() == 'p' && browser.gecko && domUtils.removeDirtyAttr(start); + } + + } + + } + + } + }); + + browser.ie && me.addListener('setDisabled',function(){ + $(me.body).find('p').each(function(i,p){ + if(domUtils.isEmptyBlock(p)){ + p.innerHTML = ' ' + } + }) + }) +}; + +///import core +///commands 预览 +///commandsName Preview +///commandsTitle 预览 +/** + * 预览 + * @function + * @name UM.execCommand + * @param {String} cmdName preview预览编辑器内容 + */ +UM.commands['preview'] = { + execCommand : function(){ + var w = window.open('', '_blank', ''), + d = w.document, + c = this.getContent(null,null,true), + path = this.getOpt('UMEDITOR_HOME_URL'), + formula = c.indexOf('mathquill-embedded-latex')!=-1 ? + '' + + '' + + '':''; + d.open(); + d.write('' + formula + '

      '+c+'
      '); + d.close(); + }, + notNeedUndo : 1 +}; + +///import core +///commands 加粗,斜体,上标,下标 +///commandsName Bold,Italic,Subscript,Superscript +///commandsTitle 加粗,加斜,下标,上标 +/** + * b u i等基础功能实现 + * @function + * @name UM.execCommands + * @param {String} cmdName bold加粗。italic斜体。subscript上标。superscript下标。 +*/ +UM.plugins['basestyle'] = function(){ + var basestyles = ['bold','underline','superscript','subscript','italic','strikethrough'], + me = this; + //添加快捷键 + me.addshortcutkey({ + "Bold" : "ctrl+66",//^B + "Italic" : "ctrl+73", //^I + "Underline" : "ctrl+shift+85",//^U + "strikeThrough" : 'ctrl+shift+83' //^s + }); + //过滤最后的产出数据 + me.addOutputRule(function(root){ + $.each(root.getNodesByTagName('b i u strike s'),function(i,node){ + switch (node.tagName){ + case 'b': + node.tagName = 'strong'; + break; + case 'i': + node.tagName = 'em'; + break; + case 'u': + node.tagName = 'span'; + node.setStyle('text-decoration','underline'); + break; + case 's': + case 'strike': + node.tagName = 'span'; + node.setStyle('text-decoration','line-through') + } + }); + }); + $.each(basestyles,function(i,cmd){ + me.commands[cmd] = { + execCommand : function( cmdName ) { + var rng = this.selection.getRange(); + if(rng.collapsed && this.queryCommandState(cmdName) != 1){ + var node = this.document.createElement({ + 'bold':'strong', + 'underline':'u', + 'superscript':'sup', + 'subscript':'sub', + 'italic':'em', + 'strikethrough':'strike' + }[cmdName]); + rng.insertNode(node).setStart(node,0).setCursor(false); + return true; + }else{ + return this.document.execCommand(cmdName) + } + + }, + queryCommandState : function(cmdName) { + if(browser.gecko){ + return this.document.queryCommandState(cmdName) + } + var path = this.selection.getStartElementPath(),result = false; + $.each(path,function(i,n){ + switch (cmdName){ + case 'bold': + if(n.nodeName == 'STRONG' || n.nodeName == 'B'){ + result = 1; + return false; + } + break; + case 'underline': + if(n.nodeName == 'U' || n.nodeName == 'SPAN' && $(n).css('text-decoration') == 'underline'){ + result = 1; + return false; + } + break; + case 'superscript': + if(n.nodeName == 'SUP'){ + result = 1; + return false; + } + break; + case 'subscript': + if(n.nodeName == 'SUB'){ + result = 1; + return false; + } + break; + case 'italic': + if(n.nodeName == 'EM' || n.nodeName == 'I'){ + result = 1; + return false; + } + break; + case 'strikethrough': + if(n.nodeName == 'S' || n.nodeName == 'STRIKE' || n.nodeName == 'SPAN' && $(n).css('text-decoration') == 'line-through'){ + result = 1; + return false; + } + break; + } + }) + return result + } + }; + }) +}; + + +///import core +///import plugins/inserthtml.js +///commands 视频 +///commandsName InsertVideo +///commandsTitle 插入视频 +///commandsDialog dialogs\video +UM.plugins['video'] = function (){ + var me =this, + div; + + /** + * 创建插入视频字符窜 + * @param url 视频地址 + * @param width 视频宽度 + * @param height 视频高度 + * @param align 视频对齐 + * @param toEmbed 是否以flash代替显示 + * @param addParagraph 是否需要添加P 标签 + */ + function creatInsertStr(url,width,height,id,align,toEmbed){ + return !toEmbed ? + + '' + + : + ''; + } + + function switchImgAndEmbed(root,img2embed){ + utils.each(root.getNodesByTagName(img2embed ? 'img' : 'embed'),function(node){ + if(node.getAttr('class') == 'edui-faked-video'){ + + var html = creatInsertStr( img2embed ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',img2embed); + node.parentNode.replaceChild(UM.uNode.createElement(html),node) + } + }) + } + + me.addOutputRule(function(root){ + switchImgAndEmbed(root,true) + }); + me.addInputRule(function(root){ + switchImgAndEmbed(root) + }); + + me.commands["insertvideo"] = { + execCommand: function (cmd, videoObjs){ + videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; + var html = [],id = 'tmpVedio'; + for(var i=0,vi,len = videoObjs.length;i'](?:(amp|lt|quot|gt|#39|nbsp);)?/g); + html.push(creatInsertStr( vi.url, vi.width || 420, vi.height || 280, id + i,vi.align,false)); + } + me.execCommand("inserthtml",html.join(""),true); + + }, + queryCommandState : function(){ + var img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-video"); + return flag ? 1 : 0; + } + }; +}; +///import core +///commands 全选 +///commandsName SelectAll +///commandsTitle 全选 +/** + * 选中所有 + * @function + * @name UM.execCommand + * @param {String} cmdName selectall选中编辑器里的所有内容 + * @author zhanyi +*/ +UM.plugins['selectall'] = function(){ + var me = this; + me.commands['selectall'] = { + execCommand : function(){ + //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 + var me = this,body = me.body, + range = me.selection.getRange(); + range.selectNodeContents(body); + if(domUtils.isEmptyBlock(body)){ + //opera不能自动合并到元素的里边,要手动处理一下 + if(browser.opera && body.firstChild && body.firstChild.nodeType == 1){ + range.setStartAtFirst(body.firstChild); + } + range.collapse(true); + } + range.select(true); + }, + notNeedUndo : 1 + }; + + + //快捷键 + me.addshortcutkey({ + "selectAll" : "ctrl+65" + }); +}; + +//UM.plugins['removeformat'] = function () { +// var me = this; +// me.commands['removeformat'] = { +// execCommand: function () { +// me.document.execCommand('removeformat'); +// +// /* 处理ie8和firefox选区有链接时,清除格式的bug */ +// if (browser.gecko || browser.ie8 || browser.webkit) { +// var nativeRange = this.selection.getNative().getRangeAt(0), +// common = nativeRange.commonAncestorContainer, +// rng = me.selection.getRange(), +// bk = rng.createBookmark(); +// +// function isEleInBookmark(node, bk){ +// if ( (domUtils.getPosition(node, bk.start) & domUtils.POSITION_FOLLOWING) && +// (domUtils.getPosition(bk.end, node) & domUtils.POSITION_FOLLOWING) ) { +// return true; +// } else if ( (domUtils.getPosition(node, bk.start) & domUtils.POSITION_CONTAINS) || +// (domUtils.getPosition(node, bk.end) & domUtils.POSITION_CONTAINS) ) { +// return true; +// } +// return false; +// } +// +// $(common).find('a').each(function (k, a) { +// if ( isEleInBookmark(a, bk) ) { +// a.removeAttribute('style'); +// } +// }); +// +// } +// } +// }; +// +//}; +// + + +UM.plugins['removeformat'] = function(){ + var me = this; + me.setOpt({ + 'removeFormatTags': 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var', + 'removeFormatAttributes':'class,style,lang,width,height,align,hspace,valign' + }); + me.commands['removeformat'] = { + execCommand : function( cmdName, tags, style, attrs,notIncludeA ) { + + var tagReg = new RegExp( '^(?:' + (tags || this.options.removeFormatTags).replace( /,/g, '|' ) + ')$', 'i' ) , + removeFormatAttributes = style ? [] : (attrs || this.options.removeFormatAttributes).split( ',' ), + range = new dom.Range( this.document ), + bookmark,node,parent, + filter = function( node ) { + return node.nodeType == 1; + }; + + function isRedundantSpan (node) { + if (node.nodeType == 3 || node.tagName.toLowerCase() != 'span'){ + return 0; + } + if (browser.ie) { + //ie 下判断实效,所以只能简单用style来判断 + //return node.style.cssText == '' ? 1 : 0; + var attrs = node.attributes; + if ( attrs.length ) { + for ( var i = 0,l = attrs.length; i + var node = range.startContainer, + tmp, + collapsed = range.collapsed; + while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ + tmp = node.parentNode; + range.setStartBefore(node); + //trace:937 + //更新结束边界 + if(range.startContainer === range.endContainer){ + range.endOffset--; + } + domUtils.remove(node); + node = tmp; + } + + if(!collapsed){ + node = range.endContainer; + while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ + tmp = node.parentNode; + range.setEndBefore(node); + domUtils.remove(node); + + node = tmp; + } + + + } + } + + + + range = this.selection.getRange(); + if(!range.collapsed) { + doRemove( range ); + range.select(); + } + + } + + }; + +}; +/* + * 处理特殊键的兼容性问题 + */ +UM.plugins['keystrokes'] = function() { + var me = this; + var collapsed = true; + me.addListener('keydown', function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng = me.selection.getRange(); + + //处理全选的情况 + if(!rng.collapsed && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && (keyCode >= 65 && keyCode <=90 + || keyCode >= 48 && keyCode <= 57 || + keyCode >= 96 && keyCode <= 111 || { + 13:1, + 8:1, + 46:1 + }[keyCode]) + ){ + + var tmpNode = rng.startContainer; + if(domUtils.isFillChar(tmpNode)){ + rng.setStartBefore(tmpNode) + } + tmpNode = rng.endContainer; + if(domUtils.isFillChar(tmpNode)){ + rng.setEndAfter(tmpNode) + } + rng.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
      + if(rng.endContainer && rng.endContainer.nodeType == 1){ + tmpNode = rng.endContainer.childNodes[rng.endOffset]; + if(tmpNode && domUtils.isBr(tmpNode)){ + rng.setEndAfter(tmpNode); + } + } + if(rng.startOffset == 0){ + tmpNode = rng.startContainer; + if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){ + tmpNode = rng.endContainer; + if(rng.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){ + me.fireEvent('saveScene'); + me.body.innerHTML = '

      '+(browser.ie ? '' : '
      ')+'

      '; + rng.setStart(me.body.firstChild,0).setCursor(false,true); + me._selectionChange(); + return; + } + } + } + } + + //处理backspace + if (keyCode == 8) { + rng = me.selection.getRange(); + collapsed = rng.collapsed; + if(me.fireEvent('delkeydown',evt)){ + return; + } + var start,end; + //避免按两次删除才能生效的问题 + if(rng.collapsed && rng.inFillChar()){ + start = rng.startContainer; + + if(domUtils.isFillChar(start)){ + rng.setStartBefore(start).shrinkBoundary(true).collapse(true); + domUtils.remove(start) + }else{ + start.nodeValue = start.nodeValue.replace(new RegExp('^' + domUtils.fillChar ),''); + rng.startOffset--; + rng.collapse(true).select(true) + } + } + //解决选中control元素不能删除的问题 + if (start = rng.getClosedNode()) { + me.fireEvent('saveScene'); + rng.setStartBefore(start); + domUtils.remove(start); + rng.setCursor(); + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + return; + } + //阻止在table上的删除 + if (!browser.ie) { + start = domUtils.findParentByTagName(rng.startContainer, 'table', true); + end = domUtils.findParentByTagName(rng.endContainer, 'table', true); + if (start && !end || !start && end || start !== end) { + evt.preventDefault(); + return; + } + } + start = rng.startContainer; + if(rng.collapsed && start.nodeType == 1){ + var currentNode = start.childNodes[rng.startOffset-1]; + if(currentNode && currentNode.nodeType == 1 && currentNode.tagName == 'BR'){ + me.fireEvent('saveScene'); + rng.setStartBefore(currentNode).collapse(true); + domUtils.remove(currentNode); + rng.select(); + me.fireEvent('saveScene'); + } + } + + //trace:3613 + if(browser.chrome){ + if(rng.collapsed){ + + while(rng.startOffset == 0 && !domUtils.isEmptyBlock(rng.startContainer)){ + rng.setStartBefore(rng.startContainer) + } + var pre = rng.startContainer.childNodes[rng.startOffset-1]; + if(pre && pre.nodeName == 'BR'){ + rng.setStartBefore(pre); + me.fireEvent('saveScene'); + $(pre).remove(); + rng.setCursor(); + me.fireEvent('saveScene'); + } + + } + } + } + //trace:1634 + //ff的del键在容器空的时候,也会删除 + if(browser.gecko && keyCode == 46){ + var range = me.selection.getRange(); + if(range.collapsed){ + start = range.startContainer; + if(domUtils.isEmptyBlock(start)){ + var parent = start.parentNode; + while(domUtils.getChildCount(parent) == 1 && !domUtils.isBody(parent)){ + start = parent; + parent = parent.parentNode; + } + if(start === parent.lastChild) + evt.preventDefault(); + return; + } + } + } + }); + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng,me = this; + if(keyCode == 8){ + if(me.fireEvent('delkeyup')){ + return; + } + rng = me.selection.getRange(); + if(rng.collapsed){ + var tmpNode, + autoClearTagName = ['h1','h2','h3','h4','h5','h6']; + if(tmpNode = domUtils.findParentByTagName(rng.startContainer,autoClearTagName,true)){ + if(domUtils.isEmptyBlock(tmpNode)){ + var pre = tmpNode.previousSibling; + if(pre && pre.nodeName != 'TABLE'){ + domUtils.remove(tmpNode); + rng.setStartAtLast(pre).setCursor(false,true); + return; + }else{ + var next = tmpNode.nextSibling; + if(next && next.nodeName != 'TABLE'){ + domUtils.remove(tmpNode); + rng.setStartAtFirst(next).setCursor(false,true); + return; + } + } + } + } + //处理当删除到body时,要重新给p标签展位 + if(domUtils.isBody(rng.startContainer)){ + var tmpNode = domUtils.createElement(me.document,'p',{ + 'innerHTML' : browser.ie ? domUtils.fillChar : '
      ' + }); + rng.insertNode(tmpNode).setStart(tmpNode,0).setCursor(false,true); + } + } + + + //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 + if( !collapsed && (rng.startContainer.nodeType == 3 || rng.startContainer.nodeType == 1 && domUtils.isEmptyBlock(rng.startContainer))){ + if(browser.ie){ + var span = rng.document.createElement('span'); + rng.insertNode(span).setStartBefore(span).collapse(true); + rng.select(); + domUtils.remove(span) + }else{ + rng.select() + } + + } + } + + }) +}; +/** + * 自动保存草稿 + */ +UM.plugins['autosave'] = function() { + + + var me = this, + //无限循环保护 + lastSaveTime = new Date(), + //最小保存间隔时间 + MIN_TIME = 20, + //auto save key + saveKey = null; + + + //默认间隔时间 + me.setOpt('saveInterval', 500); + + //存储媒介封装 + var LocalStorage = UM.LocalStorage = ( function () { + + var storage = window.localStorage || getUserData() || null, + LOCAL_FILE = "localStorage"; + + return { + + saveLocalData: function ( key, data ) { + + if ( storage && data) { + storage.setItem( key, data ); + return true; + } + + return false; + + }, + + getLocalData: function ( key ) { + + if ( storage ) { + return storage.getItem( key ); + } + + return null; + + }, + + removeItem: function ( key ) { + + storage && storage.removeItem( key ); + + } + + }; + + function getUserData () { + + var container = document.createElement( "div" ); + container.style.display = "none"; + + if( !container.addBehavior ) { + return null; + } + + container.addBehavior("#default#userdata"); + + return { + + getItem: function ( key ) { + + var result = null; + + try { + document.body.appendChild( container ); + container.load( LOCAL_FILE ); + result = container.getAttribute( key ); + document.body.removeChild( container ); + } catch ( e ) { + } + + return result; + + }, + + setItem: function ( key, value ) { + + document.body.appendChild( container ); + container.setAttribute( key, value ); + container.save( LOCAL_FILE ); + document.body.removeChild( container ); + + }, +// 暂时没有用到 +// clear: function () { +// +// var expiresTime = new Date(); +// expiresTime.setFullYear( expiresTime.getFullYear() - 1 ); +// document.body.appendChild( container ); +// container.expires = expiresTime.toUTCString(); +// container.save( LOCAL_FILE ); +// document.body.removeChild( container ); +// +// }, + + removeItem: function ( key ) { + + document.body.appendChild( container ); + container.removeAttribute( key ); + container.save( LOCAL_FILE ); + document.body.removeChild( container ); + + } + + }; + + } + + } )(); + + function save ( editor ) { + + var saveData = null; + + if ( new Date() - lastSaveTime < MIN_TIME ) { + return; + } + + if ( !editor.hasContents() ) { + //这里不能调用命令来删除, 会造成事件死循环 + saveKey && LocalStorage.removeItem( saveKey ); + return; + } + + lastSaveTime = new Date(); + + editor._saveFlag = null; + + saveData = me.body.innerHTML; + + if ( editor.fireEvent( "beforeautosave", { + content: saveData + } ) === false ) { + return; + } + + LocalStorage.saveLocalData( saveKey, saveData ); + + editor.fireEvent( "afterautosave", { + content: saveData + } ); + + } + + me.addListener('ready', function(){ + var _suffix = "-drafts-data", + key = null; + + if ( me.key ) { + key = me.key + _suffix; + } else { + key = ( me.container.parentNode.id || 'ue-common' ) + _suffix; + } + + //页面地址+编辑器ID 保持唯一 + saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key; + }); + + me.addListener('contentchange', function(){ + + if ( !saveKey ) { + return; + } + + if ( me._saveFlag ) { + window.clearTimeout( me._saveFlag ); + } + + if ( me.options.saveInterval > 0 ) { + + me._saveFlag = window.setTimeout( function () { + + save( me ); + + }, me.options.saveInterval ); + + } else { + + save(me); + + } + + }) + + + me.commands['clearlocaldata'] = { + execCommand:function (cmd, name) { + if ( saveKey && LocalStorage.getLocalData( saveKey ) ) { + LocalStorage.removeItem( saveKey ) + } + }, + notNeedUndo: true, + ignoreContentChange:true + }; + + me.commands['getlocaldata'] = { + execCommand:function (cmd, name) { + return saveKey ? LocalStorage.getLocalData( saveKey ) || '' : ''; + }, + notNeedUndo: true, + ignoreContentChange:true + }; + + me.commands['drafts'] = { + execCommand:function (cmd, name) { + if ( saveKey ) { + me.body.innerHTML = LocalStorage.getLocalData( saveKey ) || '

      '+(browser.ie ? ' ' : '
      ')+'

      '; + me.focus(true); + } + }, + queryCommandState: function () { + return saveKey ? ( LocalStorage.getLocalData( saveKey ) === null ? -1 : 0 ) : -1; + }, + notNeedUndo: true, + ignoreContentChange:true + } + +}; + +/** + * @description + * 1.拖放文件到编辑区域,自动上传并插入到选区 + * 2.插入粘贴板的图片,自动上传并插入到选区 + * @author Jinqn + * @date 2013-10-14 + */ +UM.plugins['autoupload'] = function () { + + var me = this; + + me.setOpt('pasteImageEnabled', true); + me.setOpt('dropFileEnabled', true); + var sendAndInsertImage = function (file, editor) { + //模拟数据 + var fd = new FormData(); + fd.append(editor.options.imageFieldName || 'upfile', file, file.name || ('blob.' + file.type.substr('image/'.length))); + fd.append('type', 'ajax'); + var xhr = new XMLHttpRequest(); + xhr.open("post", me.options.imageUrl, true); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + xhr.addEventListener('load', function (e) { + try { + var json = eval('('+e.target.response+')'), + link = json.url, + picLink = me.options.imagePath + link; + editor.execCommand('insertimage', { + src: picLink, + _src: picLink + }); + } catch (er) { + } + }); + xhr.send(fd); + }; + + function getPasteImage(e) { + return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null; + } + + function getDropImage(e) { + return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null; + } + + me.addListener('ready', function () { + if (window.FormData && window.FileReader) { + var autoUploadHandler = function (e) { + var hasImg = false, + items; + //获取粘贴板文件列表或者拖放文件列表 + items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent); + if (items) { + var len = items.length, + file; + while (len--) { + file = items[len]; + if (file.getAsFile) file = file.getAsFile(); + if (file && file.size > 0 && /image\/\w+/i.test(file.type)) { + sendAndInsertImage(file, me); + hasImg = true; + } + } + if (hasImg) return false; + } + + }; + me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler); + me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler); + + //取消拖放图片时出现的文字光标位置提示 + me.$body.on('dragover', function (e) { + if (e.originalEvent.dataTransfer.types[0] == 'Files') { + return false; + } + }); + } + }); + +}; +/** + * 公式插件 + */ +UM.plugins['formula'] = function () { + var me = this; + + function getActiveIframe() { + return me.$body.find('iframe.edui-formula-active')[0] || null; + } + + function blurActiveIframe(){ + var iframe = getActiveIframe(); + iframe && iframe.contentWindow.formula.blur(); + } + + me.addInputRule(function (root) { + $.each(root.getNodesByTagName('span'), function (i, node) { + if (node.hasClass('mathquill-embedded-latex')) { + var firstChild, latex = ''; + while(firstChild = node.firstChild()){ + latex += firstChild.data; + node.removeChild(firstChild); + } + node.tagName = 'iframe'; + node.setAttr({ + 'frameborder': '0', + 'src': me.getOpt('UMEDITOR_HOME_URL') + 'dialogs/formula/formula.html', + 'data-latex': utils.unhtml(latex) + }); + } + }); + }); + me.addOutputRule(function (root) { + $.each(root.getNodesByTagName('iframe'), function (i, node) { + if (node.hasClass('mathquill-embedded-latex')) { + node.tagName = 'span'; + node.appendChild(UM.uNode.createText(node.getAttr('data-latex'))); + node.setAttr({ + 'frameborder': '', + 'src': '', + 'data-latex': '' + }); + } + }); + }); + me.addListener('click', function(){ + blurActiveIframe(); + }); + me.addListener('afterexeccommand', function(type, cmd){ + if(cmd != 'formula') { + blurActiveIframe(); + } + }); + + me.commands['formula'] = { + execCommand: function (cmd, latex) { + var iframe = getActiveIframe(); + if (iframe) { + iframe.contentWindow.formula.insertLatex(latex); + } else { + me.execCommand('inserthtml', '' + latex + ''); + browser.ie && browser.ie9below && setTimeout(function(){ + var rng = me.selection.getRange(), + startContainer = rng.startContainer; + if(startContainer.nodeType == 1 && !startContainer.childNodes[rng.startOffset]){ + rng.insertNode(me.document.createTextNode(' ')); + rng.setCursor() + } + },100) + } + }, + queryCommandState: function (cmd) { + return 0; + }, + queryCommandValue: function (cmd) { + var iframe = getActiveIframe(); + return iframe && iframe.contentWindow.formula.getLatex(); + } + } + +}; + +/** + * @file xssFilter.js + * @desc xss过滤器 + * @author robbenmu + */ + +UM.plugins.xssFilter = function() { + + var config = UMEDITOR_CONFIG; + var whiteList = config.whiteList; + + function filter(node) { + + var tagName = node.tagName; + var attrs = node.attrs; + + if (!whiteList.hasOwnProperty(tagName)) { + node.parentNode.removeChild(node); + return false; + } + + UM.utils.each(attrs, function (val, key) { + + if (whiteList[tagName].indexOf(key) === -1) { + node.setAttr(key); + } + }); + } + + // 添加inserthtml\paste等操作用的过滤规则 + if (whiteList && config.xssFilterRules) { + this.options.filterRules = function () { + + var result = {}; + + UM.utils.each(whiteList, function(val, key) { + result[key] = function (node) { + return filter(node); + }; + }); + + return result; + }(); + } + + var tagList = []; + + UM.utils.each(whiteList, function (val, key) { + tagList.push(key); + }); + + // 添加input过滤规则 + // + if (whiteList && config.inputXssFilter) { + this.addInputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + // 添加output过滤规则 + // + if (whiteList && config.outputXssFilter) { + this.addOutputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + +}; +(function ($) { + //对jquery的扩展 + $.parseTmpl = function parse(str, data) { + var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + 'with(obj||{}){__p.push(\'' + str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g,function (match, code) { + return "',obj." + code.replace(/\\'/g, "'") + ",'"; + }).replace(/<%([\s\S]+?)%>/g,function (match, code) { + return "');" + code.replace(/\\'/g, "'").replace(/[\r\n\t]/g, ' ') + "__p.push('"; + }).replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/\t/g, '\\t') + "');}return __p.join('');"; + var func = new Function('obj', tmpl); + return data ? func(data) : func; + }; + $.extend2 = function (t, s) { + var a = arguments, + notCover = $.type(a[a.length - 1]) == 'boolean' ? a[a.length - 1] : false, + len = $.type(a[a.length - 1]) == 'boolean' ? a.length - 1 : a.length; + for (var i = 1; i < len; i++) { + var x = a[i]; + for (var k in x) { + if (!notCover || !t.hasOwnProperty(k)) { + t[k] = x[k]; + } + } + } + return t; + }; + + $.IE6 = !!window.ActiveXObject && parseFloat(navigator.userAgent.match(/msie (\d+)/i)[1]) == 6; + + //所有ui的基类 + var _eventHandler = []; + var _widget = function () { + }; + var _prefix = 'edui'; + _widget.prototype = { + on: function (ev, cb) { + this.root().on(ev, $.proxy(cb, this)); + return this; + }, + off: function (ev, cb) { + this.root().off(ev, $.proxy(cb, this)); + return this; + }, + trigger: function (ev, data) { + return this.root().trigger(ev, data) === false ? false : this; + }, + root: function ($el) { + return this._$el || (this._$el = $el); + }, + destroy: function () { + + }, + data: function (key, val) { + if (val !== undefined) { + this.root().data(_prefix + key, val); + return this; + } else { + return this.root().data(_prefix + key) + } + }, + register: function (eventName, $el, fn) { + _eventHandler.push({ + 'evtname': eventName, + '$els': $.isArray($el) ? $el : [$el], + handler: $.proxy(fn, $el) + }) + } + }; + + //从jq实例上拿到绑定的widget实例 + $.fn.edui = function (obj) { + return obj ? this.data('eduiwidget', obj) : this.data('eduiwidget'); + }; + + function _createClass(ClassObj, properties, supperClass) { + ClassObj.prototype = $.extend2( + $.extend({}, properties), + (UM.ui[supperClass] || _widget).prototype, + true + ); + ClassObj.prototype.supper = (UM.ui[supperClass] || _widget).prototype; + //父class的defaultOpt 合并 + if( UM.ui[supperClass] && UM.ui[supperClass].prototype.defaultOpt ) { + + var parentDefaultOptions = UM.ui[supperClass].prototype.defaultOpt, + subDefaultOptions = ClassObj.prototype.defaultOpt; + + ClassObj.prototype.defaultOpt = $.extend( {}, parentDefaultOptions, subDefaultOptions || {} ); + + } + return ClassObj + } + + var _guid = 1; + + function mergeToJQ(ClassObj, className) { + $[_prefix + className] = ClassObj; + $.fn[_prefix + className] = function (opt) { + var result, args = Array.prototype.slice.call(arguments, 1); + + this.each(function (i, el) { + var $this = $(el); + var obj = $this.edui(); + if (!obj) { + ClassObj(!opt || !$.isPlainObject(opt) ? {} : opt, $this); + $this.edui(obj) + } + if ($.type(opt) == 'string') { + if (opt == 'this') { + result = obj; + } else { + result = obj[opt].apply(obj, args); + if (result !== obj && result !== undefined) { + return false; + } + result = null; + } + + } + }); + + return result !== null ? result : this; + } + } + + UM.ui = { + define: function (className, properties, supperClass) { + var ClassObj = UM.ui[className] = _createClass(function (options, $el) { + var _obj = function () { + }; + $.extend(_obj.prototype, ClassObj.prototype, { + guid: className + _guid++, + widgetName: className + } + ); + var obj = new _obj; + if ($.type(options) == 'string') { + obj.init && obj.init({}); + obj.root().edui(obj); + obj.root().find('a').click(function (evt) { + evt.preventDefault() + }); + return obj.root()[_prefix + className].apply(obj.root(), arguments) + } else { + $el && obj.root($el); + obj.init && obj.init(!options || $.isPlainObject(options) ? $.extend2(options || {}, obj.defaultOpt || {}, true) : options); + try{ + obj.root().find('a').click(function (evt) { + evt.preventDefault() + }); + }catch(e){ + } + + return obj.root().edui(obj); + } + + },properties, supperClass); + + mergeToJQ(ClassObj, className); + } + }; + + $(function () { + $(document).on('click mouseup mousedown dblclick mouseover', function (evt) { + $.each(_eventHandler, function (i, obj) { + if (obj.evtname == evt.type) { + $.each(obj.$els, function (i, $el) { + if ($el[0] !== evt.target && !$.contains($el[0], evt.target)) { + obj.handler(evt); + } + }) + } + }) + }) + }) +})(jQuery); +//button 类 +UM.ui.define('button', { + tpl: '<<%if(!texttype){%>div class="edui-btn edui-btn-<%=icon%> <%if(name){%>edui-btn-name-<%=name%><%}%>" unselectable="on" onmousedown="return false" <%}else{%>a class="edui-text-btn"<%}%><% if(title) {%> data-original-title="<%=title%>" <%};%>> ' + + '<% if(icon) {%>
      <% }; %><%if(text) {%><%=text%><%}%>' + + '<%if(caret && text){%><%}%>' + + '<% if(caret) {%><% };%>div<%}else{%>a<%}%>>', + defaultOpt: { + text: '', + title: '', + icon: '', + width: '', + caret: false, + texttype: false, + click: function () { + } + }, + init: function (options) { + var me = this; + + me.root($($.parseTmpl(me.tpl, options))) + .click(function (evt) { + me.wrapclick(options.click, evt) + }); + + me.root().hover(function () { + if(!me.root().hasClass("edui-disabled")){ + me.root().toggleClass('edui-hover') + } + }) + + return me; + }, + wrapclick: function (fn, evt) { + if (!this.disabled()) { + this.root().trigger('wrapclick'); + $.proxy(fn, this, evt)() + } + return this; + }, + label: function (text) { + if (text === undefined) { + return this.root().find('.edui-button-label').text(); + } else { + this.root().find('.edui-button-label').text(text); + return this; + } + }, + disabled: function (state) { + if (state === undefined) { + return this.root().hasClass('edui-disabled') + } + this.root().toggleClass('edui-disabled', state); + if(this.root().hasClass('edui-disabled')){ + this.root().removeClass('edui-hover') + } + return this; + }, + active: function (state) { + if (state === undefined) { + return this.root().hasClass('edui-active') + } + this.root().toggleClass('edui-active', state) + + return this; + }, + mergeWith: function ($obj) { + var me = this; + me.data('$mergeObj', $obj); + $obj.edui().data('$mergeObj', me.root()); + if (!$.contains(document.body, $obj[0])) { + $obj.appendTo(me.root()); + } + me.on('click',function () { + me.wrapclick(function () { + $obj.edui().show(); + }) + }).register('click', me.root(), function (evt) { + $obj.hide() + }); + } +}); +//toolbar 类 +(function () { + UM.ui.define('toolbar', { + tpl: '
      ' + , + init: function () { + var $root = this.root($(this.tpl)); + this.data('$btnToolbar', $root.find('.edui-btn-toolbar')) + }, + appendToBtnmenu : function(data){ + var $cont = this.data('$btnToolbar'); + data = $.isArray(data) ? data : [data]; + $.each(data,function(i,$item){ + $cont.append($item) + }) + } + }); +})(); + +//menu 类 +UM.ui.define('menu',{ + show : function($obj,dir,fnname,topOffset,leftOffset){ + + fnname = fnname || 'position'; + if(this.trigger('beforeshow') === false){ + return; + }else{ + this.root().css($.extend({display:'block'},$obj ? { + top : $obj[fnname]().top + ( dir == 'right' ? 0 : $obj.outerHeight()) - (topOffset || 0), + left : $obj[fnname]().left + (dir == 'right' ? $obj.outerWidth() : 0) - (leftOffset || 0) + }:{})) + this.trigger('aftershow'); + } + }, + hide : function(all){ + var $parentmenu; + if(this.trigger('beforehide') === false){ + return; + } else { + + if($parentmenu = this.root().data('parentmenu')){ + if($parentmenu.data('parentmenu')|| all) + $parentmenu.edui().hide(); + } + this.root().css('display','none'); + this.trigger('afterhide'); + } + }, + attachTo : function($obj){ + var me = this; + if(!$obj.data('$mergeObj')){ + $obj.data('$mergeObj',me.root()); + $obj.on('wrapclick',function(evt){ + me.show() + }); + me.register('click',$obj,function(evt){ + me.hide() + }); + me.data('$mergeObj',$obj) + } + } +}); +//dropmenu 类 +UM.ui.define('dropmenu', { + tmpl: '
        ' + + '<%for(var i=0,ci;ci=data[i++];){%>' + + '<%if(ci.divider){%>
      • <%}else{%>' + + '
      • class="<%= ci.active|| \'\' %> <%=ci.disabled||\'\' %>" <%}%> data-value="<%= ci.value%>">' + + '<%= ci.label%>' + + '
      • <%}%>' + + '<%}%>' + + '
      ', + defaultOpt: { + data: [], + click: function () { + + } + }, + init: function (options) { + var me = this; + var eventName = { + click: 1, + mouseover: 1, + mouseout: 1 + }; + + this.root($($.parseTmpl(this.tmpl, options))).on('click', 'li[class!="edui-disabled edui-divider edui-dropdown-submenu"]',function (evt) { + $.proxy(options.click, me, evt, $(this).data('value'), $(this))() + }).find('li').each(function (i, el) { + var $this = $(this); + if (!$this.hasClass("edui-disabled edui-divider edui-dropdown-submenu")) { + var data = options.data[i]; + $.each(eventName, function (k) { + data[k] && $this[k](function (evt) { + $.proxy(data[k], el)(evt, data, me.root) + }) + }) + } + }) + + }, + disabled: function (cb) { + $('li[class!=edui-divider]', this.root()).each(function () { + var $el = $(this); + if (cb === true) { + $el.addClass('edui-disabled') + } else if ($.isFunction(cb)) { + $el.toggleClass('edui-disabled', cb(li)) + } else { + $el.removeClass('edui-disabled') + } + + }); + }, + val: function (val) { + var currentVal; + $('li[class!="edui-divider edui-disabled edui-dropdown-submenu"]', this.root()).each(function () { + var $el = $(this); + if (val === undefined) { + if ($el.find('em.edui-dropmenu-checked').length) { + currentVal = $el.data('value'); + return false + } + } else { + $el.find('em').toggleClass('edui-dropmenu-checked', $el.data('value') == val) + } + }); + if (val === undefined) { + return currentVal + } + }, + addSubmenu: function (label, menu, index) { + index = index || 0; + + var $list = $('li[class!=edui-divider]', this.root()); + var $node = $('
    • ' + label + '
    • ').append(menu); + + if (index >= 0 && index < $list.length) { + $node.insertBefore($list[index]); + } else if (index < 0) { + $node.insertBefore($list[0]); + } else if (index >= $list.length) { + $node.appendTo($list); + } + } +}, 'menu'); +//splitbutton 类 +///import button +UM.ui.define('splitbutton',{ + tpl :'
      data-original-title="<%=title%>"<%}%>>
      <%if(icon){%>
      <%}%><%if(text){%><%=text%><%}%>
      '+ + '
      '+ + '
      <\/div>'+ + '
      '+ + '
      ', + defaultOpt:{ + text:'', + title:'', + click:function(){} + }, + init : function(options){ + var me = this; + me.root( $($.parseTmpl(me.tpl,options))); + me.root().find('.edui-btn:first').click(function(evt){ + if(!me.disabled()){ + $.proxy(options.click,me)(); + } + }); + me.root().find('.edui-dropdown-toggle').click(function(){ + if(!me.disabled()){ + me.trigger('arrowclick') + } + }); + me.root().hover(function () { + if(!me.root().hasClass("edui-disabled")){ + me.root().toggleClass('edui-hover') + } + }); + + return me; + }, + wrapclick:function(fn,evt){ + if(!this.disabled()){ + $.proxy(fn,this,evt)() + } + return this; + }, + disabled : function(state){ + if(state === undefined){ + return this.root().hasClass('edui-disabled') + } + this.root().toggleClass('edui-disabled',state).find('.edui-btn').toggleClass('edui-disabled',state); + return this; + }, + active:function(state){ + if(state === undefined){ + return this.root().hasClass('edui-active') + } + this.root().toggleClass('edui-active',state).find('.edui-btn:first').toggleClass('edui-active',state); + return this; + }, + mergeWith:function($obj){ + var me = this; + me.data('$mergeObj',$obj); + $obj.edui().data('$mergeObj',me.root()); + if(!$.contains(document.body,$obj[0])){ + $obj.appendTo(me.root()); + } + me.root().delegate('.edui-dropdown-toggle','click',function(){ + me.wrapclick(function(){ + $obj.edui().show(); + }) + }); + me.register('click',me.root().find('.edui-dropdown-toggle'),function(evt){ + $obj.hide() + }); + } +}); +/** + * Created with JetBrains PhpStorm. + * User: hn + * Date: 13-7-10 + * Time: 下午3:07 + * To change this template use File | Settings | File Templates. + */ +UM.ui.define('colorsplitbutton',{ + + tpl : '
      data-original-title="<%=title%>"<%}%>>
      <%if(icon){%>
      <%}%>
      style="background: <%=color%>"<%}%>>
      <%if(text){%><%=text%><%}%>
      '+ + '
      '+ + '
      <\/div>'+ + '
      '+ + '
      ', + defaultOpt: { + color: '' + }, + init: function( options ){ + + var me = this; + + me.supper.init.call( me, options ); + + }, + colorLabel: function(){ + return this.root().find('.edui-splitbutton-color-label'); + } + +}, 'splitbutton'); +//popup 类 +UM.ui.define('popup', { + tpl: '
      ){%>onmousedown="return false"<%}%>'+ + '>
      <%=subtpl%>
      ' + + '
      ' + + '
      ', + defaultOpt: { + stopprop:false, + subtpl: '', + width: '', + height: '' + }, + init: function (options) { + this.root($($.parseTmpl(this.tpl, options))); + return this; + }, + mergeTpl: function (data) { + return $.parseTmpl(this.tpl, {subtpl: data}); + }, + show: function ($obj, posObj) { + if (!posObj) posObj = {}; + + var fnname = posObj.fnname || 'position'; + if (this.trigger('beforeshow') === false) { + return; + } else { + this.root().css($.extend({display: 'block'}, $obj ? { + top: $obj[fnname]().top + ( posObj.dir == 'right' ? 0 : $obj.outerHeight()) - (posObj.offsetTop || 0), + left: $obj[fnname]().left + (posObj.dir == 'right' ? $obj.outerWidth() : 0) - (posObj.offsetLeft || 0), + position: 'absolute' + } : {})); + + this.root().find('.edui-popup-caret').css({ + top: posObj.caretTop || 0, + left: posObj.caretLeft || 0, + position: 'absolute' + }).addClass(posObj.caretDir || "up") + + } + this.trigger("aftershow"); + }, + hide: function () { + this.root().css('display', 'none'); + this.trigger('afterhide') + }, + attachTo: function ($obj, posObj) { + var me = this + if (!$obj.data('$mergeObj')) { + $obj.data('$mergeObj', me.root()); + $obj.on('wrapclick', function (evt) { + me.show($obj, posObj) + }); + me.register('click', $obj, function (evt) { + me.hide() + }); + me.data('$mergeObj', $obj) + } + }, + getBodyContainer: function () { + return this.root().find(".edui-popup-body"); + } +}); +//scale 类 +UM.ui.define('scale', { + tpl: '
      ' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
      ', + defaultOpt: { + $doc: $(document), + $wrap: $(document) + }, + init: function (options) { + if(options.$doc) this.defaultOpt.$doc = options.$doc; + if(options.$wrap) this.defaultOpt.$wrap = options.$wrap; + this.root($($.parseTmpl(this.tpl, options))); + this.initStyle(); + this.startPos = this.prePos = {x: 0, y: 0}; + this.dragId = -1; + return this; + }, + initStyle: function () { + utils.cssRule('edui-style-scale', '.edui-scale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;}' + + '.edui-scale span{position:absolute;left:0;top:0;width:7px;height:7px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}' + + '.edui-scale .edui-scale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}' + + '.edui-scale .edui-scale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}' + + '.edui-scale .edui-scale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}' + + '.edui-scale .edui-scale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}' + + '.edui-scale .edui-scale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}' + + '.edui-scale .edui-scale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}' + + '.edui-scale .edui-scale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}' + + '.edui-scale .edui-scale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}'); + }, + _eventHandler: function (e) { + var me = this, + $doc = me.defaultOpt.$doc; + switch (e.type) { + case 'mousedown': + var hand = e.target || e.srcElement, hand; + if (hand.className.indexOf('edui-scale-hand') != -1) { + me.dragId = hand.className.slice(-1); + me.startPos.x = me.prePos.x = e.clientX; + me.startPos.y = me.prePos.y = e.clientY; + $doc.bind('mousemove', $.proxy(me._eventHandler, me)); + } + break; + case 'mousemove': + if (me.dragId != -1) { + me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y}); + me.prePos.x = e.clientX; + me.prePos.y = e.clientY; + me.updateTargetElement(); + } + break; + case 'mouseup': + if (me.dragId != -1) { + me.dragId = -1; + me.updateTargetElement(); + var $target = me.data('$scaleTarget'); + if ($target.parent()) me.attachTo(me.data('$scaleTarget')); + } + $doc.unbind('mousemove', $.proxy(me._eventHandler, me)); + break; + default: + break; + } + }, + updateTargetElement: function () { + var me = this, + $root = me.root(), + $target = me.data('$scaleTarget'); + $target.css({width: $root.width(), height: $root.height()}); + me.attachTo($target); + }, + updateContainerStyle: function (dir, offset) { + var me = this, + $dom = me.root(), + tmp, + rect = [ + //[left, top, width, height] + [0, 0, -1, -1], + [0, 0, 0, -1], + [0, 0, 1, -1], + [0, 0, -1, 0], + [0, 0, 1, 0], + [0, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + + if (rect[dir][0] != 0) { + tmp = parseInt($dom.offset().left) + offset.x; + $dom.css('left', me._validScaledProp('left', tmp)); + } + if (rect[dir][1] != 0) { + tmp = parseInt($dom.offset().top) + offset.y; + $dom.css('top', me._validScaledProp('top', tmp)); + } + if (rect[dir][2] != 0) { + tmp = $dom.width() + rect[dir][2] * offset.x; + $dom.css('width', me._validScaledProp('width', tmp)); + } + if (rect[dir][3] != 0) { + tmp = $dom.height() + rect[dir][3] * offset.y; + $dom.css('height', me._validScaledProp('height', tmp)); + } + }, + _validScaledProp: function (prop, value) { + var $ele = this.root(), + $wrap = this.defaultOpt.$doc, + calc = function(val, a, b){ + return (val + a) > b ? b - a : value; + }; + + value = isNaN(value) ? 0 : value; + switch (prop) { + case 'left': + return value < 0 ? 0 : calc(value, $ele.width(), $wrap.width()); + case 'top': + return value < 0 ? 0 : calc(value, $ele.height(),$wrap.height()); + case 'width': + return value <= 0 ? 1 : calc(value, $ele.offset().left, $wrap.width()); + case 'height': + return value <= 0 ? 1 : calc(value, $ele.offset().top, $wrap.height()); + } + }, + show: function ($obj) { + var me = this; + if ($obj) me.attachTo($obj); + me.root().bind('mousedown', $.proxy(me._eventHandler, me)); + me.defaultOpt.$doc.bind('mouseup', $.proxy(me._eventHandler, me)); + me.root().show(); + me.trigger("aftershow"); + }, + hide: function () { + var me = this; + me.root().unbind('mousedown', $.proxy(me._eventHandler, me)); + me.defaultOpt.$doc.unbind('mouseup', $.proxy(me._eventHandler, me)); + me.root().hide(); + me.trigger('afterhide') + }, + attachTo: function ($obj) { + var me = this, + imgPos = $obj.offset(), + $root = me.root(), + $wrap = me.defaultOpt.$wrap, + posObj = $wrap.offset(); + + me.data('$scaleTarget', $obj); + me.root().css({ + position: 'absolute', + width: $obj.width(), + height: $obj.height(), + left: imgPos.left - posObj.left - parseInt($wrap.css('border-left-width')) - parseInt($root.css('border-left-width')), + top: imgPos.top - posObj.top - parseInt($wrap.css('border-top-width')) - parseInt($root.css('border-top-width')) + }); + }, + getScaleTarget: function () { + return this.data('$scaleTarget')[0]; + } +}); +//colorpicker 类 +UM.ui.define('colorpicker', { + tpl: function (opt) { + var COLORS = ( + 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' + + 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' + + 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' + + 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' + + 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' + + '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' + + 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(','); + + var html = '
      ' + + '' + + '' + + ''; + + for (var i = 0; i < COLORS.length; i++) { + if (i && i % 10 === 0) { + html += '' + (i == 60 ? '' : '') + ''; + } + html += i < 70 ? '' : ''; + } + html += '
      '+opt.lang_themeColor+'
      '+opt.lang_standardColor+'
      '; + return html; + }, + init: function (options) { + var me = this; + me.root($($.parseTmpl(me.supper.mergeTpl(me.tpl(options)),options))); + + me.root().on("click",function (e) { + me.trigger('pickcolor', $(e.target).data('color')); + }); + } +}, 'popup'); +/** + * Created with JetBrains PhpStorm. + * User: hn + * Date: 13-5-29 + * Time: 下午8:01 + * To change this template use File | Settings | File Templates. + */ + +(function(){ + + var widgetName = 'combobox', + itemClassName = 'edui-combobox-item', + HOVER_CLASS = 'edui-combobox-item-hover', + ICON_CLASS = 'edui-combobox-checked-icon', + labelClassName = 'edui-combobox-item-label'; + + UM.ui.define( widgetName, ( function(){ + + return { + tpl: "
        edui-combobox-<%=comboboxName%><%}%>\" unselectable=\"on\" onmousedown=\"return false\" role=\"menu\" aria-labelledby=\"dropdownMenu\">" + + "<%if(autoRecord) {%>" + + "<%for( var i=0, len = recordStack.length; i" + + "<%var index = recordStack[i];%>" + + "
      • <%if( selected == index ) {%> edui-combobox-checked<%}%>\" data-item-index=\"<%=index%>\" unselectable=\"on\" onmousedown=\"return false\">" + + "" + + "" + + "
      • " + + "<%}%>" + + "<%if( i ) {%>" + + "
      • " + + "<%}%>" + + "<%}%>" + + "<%for( var i=0, label; label = items[i]; i++ ) {%>" + + "
      • <%if( selected == i ) {%> edui-combobox-checked<%}%> edui-combobox-item-<%=i%>\" data-item-index=\"<%=i%>\" unselectable=\"on\" onmousedown=\"return false\">" + + "" + + "" + + "
      • " + + "<%}%>" + + "
      ", + defaultOpt: { + //记录栈初始列表 + recordStack: [], + //可用项列表 + items: [], + //item对应的值列表 + value: [], + comboboxName: '', + selected: '', + //自动记录 + autoRecord: true, + //最多记录条数 + recordCount: 5 + }, + init: function( options ){ + + var me = this; + + $.extend( me._optionAdaptation( options ), me._createItemMapping( options.recordStack, options.items ), { + itemClassName: itemClassName, + iconClass: ICON_CLASS, + labelClassName: labelClassName + } ); + + this._transStack( options ); + + me.root( $( $.parseTmpl( me.tpl, options ) ) ); + + this.data( 'options', options ).initEvent(); + + }, + initEvent: function(){ + + var me = this; + + me.initSelectItem(); + + this.initItemActive(); + + }, + /** + * 初始化选择项 + */ + initSelectItem: function(){ + + var me = this, + labelClass = "."+labelClassName; + + me.root().delegate('.' + itemClassName, 'click', function(){ + + var $li = $(this), + index = $li.attr('data-item-index'); + + me.trigger('comboboxselect', { + index: index, + label: $li.find(labelClass).text(), + value: me.data('options').value[ index ] + }).select( index ); + + me.hide(); + + return false; + + }); + + }, + initItemActive: function(){ + var fn = { + mouseenter: 'addClass', + mouseleave: 'removeClass' + }; + if ($.IE6) { + this.root().delegate( '.'+itemClassName, 'mouseenter mouseleave', function( evt ){ + $(this)[ fn[ evt.type ] ]( HOVER_CLASS ); + }).one('afterhide', function(){ + }); + } + }, + /** + * 选择给定索引的项 + * @param index 项索引 + * @returns {*} 如果存在对应索引的项,则返回该项;否则返回null + */ + select: function( index ){ + + var itemCount = this.data('options').itemCount, + items = this.data('options').autowidthitem; + + if ( items && !items.length ) { + items = this.data('options').items; + } + + if( itemCount == 0 ) { + return null; + } + + if( index < 0 ) { + + index = itemCount + index % itemCount; + + } else if ( index >= itemCount ) { + + index = itemCount-1; + + } + + this.trigger( 'changebefore', items[ index ] ); + + this._update( index ); + + this.trigger( 'changeafter', items[ index ] ); + + return null; + + }, + selectItemByLabel: function( label ){ + + var itemMapping = this.data('options').itemMapping, + me = this, + index = null; + + !$.isArray( label ) && ( label = [ label ] ); + + $.each( label, function( i, item ){ + + index = itemMapping[ item ]; + + if( index !== undefined ) { + + me.select( index ); + return false; + + } + + } ); + + }, + /** + * 转换记录栈 + */ + _transStack: function( options ) { + + var temp = [], + itemIndex = -1, + selected = -1; + + $.each( options.recordStack, function( index, item ){ + + itemIndex = options.itemMapping[ item ]; + + if( $.isNumeric( itemIndex ) ) { + + temp.push( itemIndex ); + + //selected的合法性检测 + if( item == options.selected ) { + selected = itemIndex; + } + + } + + } ); + + options.recordStack = temp; + options.selected = selected; + temp = null; + + }, + _optionAdaptation: function( options ) { + + if( !( 'itemStyles' in options ) ) { + + options.itemStyles = []; + + for( var i = 0, len = options.items.length; i < len; i++ ) { + options.itemStyles.push(''); + } + + } + + options.autowidthitem = options.autowidthitem || options.items; + options.itemCount = options.items.length; + + return options; + + }, + _createItemMapping: function( stackItem, items ){ + + var temp = {}, + result = { + recordStack: [], + mapping: {} + }; + + $.each( items, function( index, item ){ + temp[ item ] = index; + } ); + + result.itemMapping = temp; + + $.each( stackItem, function( index, item ){ + + if( temp[ item ] !== undefined ) { + result.recordStack.push( temp[ item ] ); + result.mapping[ item ] = temp[ item ]; + } + + } ); + + return result; + + }, + _update: function ( index ) { + + var options = this.data("options"), + newStack = [], + newChilds = null; + + $.each( options.recordStack, function( i, item ){ + + if( item != index ) { + newStack.push( item ); + } + + } ); + + //压入最新的记录 + newStack.unshift( index ); + + if( newStack.length > options.recordCount ) { + newStack.length = options.recordCount; + } + + options.recordStack = newStack; + options.selected = index; + + newChilds = $( $.parseTmpl( this.tpl, options ) ); + + //重新渲染 + this.root().html( newChilds.html() ); + + newChilds = null; + newStack = null; + + } + }; + + } )(), 'menu' ); + +})(); + +/** + * Combox 抽象基类 + * User: hn + * Date: 13-5-29 + * Time: 下午8:01 + * To change this template use File | Settings | File Templates. + */ + +(function(){ + + var widgetName = 'buttoncombobox'; + + UM.ui.define( widgetName, ( function(){ + + return { + defaultOpt: { + //按钮初始文字 + label: '', + title: '' + }, + init: function( options ) { + + var me = this; + + var btnWidget = $.eduibutton({ + caret: true, + name: options.comboboxName, + title: options.title, + text: options.label, + click: function(){ + me.show( this.root() ); + } + }); + + me.supper.init.call( me, options ); + + //监听change, 改变button显示内容 + me.on('changebefore', function( e, label ){ + btnWidget.eduibutton('label', label ); + }); + + me.data( 'button', btnWidget ); + + me.attachTo(btnWidget) + + }, + button: function(){ + return this.data( 'button' ); + } + } + + } )(), 'combobox' ); + +})(); + +/*modal 类*/ +UM.ui.define('modal', { + tpl: '
      ' + + '
      ' + + '
      ' + + '

      <%=title%>

      ' + + '
      ' + + '
      ' + + '
      ' + + '<% if(cancellabel || oklabel) {%>' + + '' + + '<%}%>
      ', + defaultOpt: { + title: "", + cancellabel: "", + oklabel: "", + width: '', + height: '', + backdrop: true, + keyboard: true + }, + init: function (options) { + var me = this; + + me.root($($.parseTmpl(me.tpl, options || {}))); + + me.data("options", options); + if (options.okFn) { + me.on('ok', $.proxy(options.okFn, me)) + } + if (options.cancelFn) { + me.on('beforehide', $.proxy(options.cancelFn, me)) + } + + me.root().delegate('[data-hide="modal"]', 'click', $.proxy(me.hide, me)) + .delegate('[data-ok="modal"]', 'click', $.proxy(me.ok, me)); + + $('[data-hide="modal"],[data-ok="modal"]',me.root()).hover(function(){ + $(this).toggleClass('edui-hover') + }); + }, + toggle: function () { + var me = this; + return me[!me.data("isShown") ? 'show' : 'hide'](); + }, + show: function () { + + var me = this; + + me.trigger("beforeshow"); + + if (me.data("isShown")) return; + + me.data("isShown", true); + + me.escape(); + + me.backdrop(function () { + me.autoCenter(); + me.root() + .show() + .focus() + .trigger('aftershow'); + }) + }, + showTip: function ( text ) { + $( '.edui-modal-tip', this.root() ).html( text ).fadeIn(); + }, + hideTip: function ( text ) { + $( '.edui-modal-tip', this.root() ).fadeOut( function (){ + $(this).html(''); + } ); + }, + autoCenter: function () { + //ie6下不用处理了 + !$.IE6 && this.root().css("margin-left", -(this.root().width() / 2)); + }, + hide: function () { + var me = this; + + me.trigger("beforehide"); + + if (!me.data("isShown")) return; + + me.data("isShown", false); + + me.escape(); + + me.hideModal(); + }, + escape: function () { + var me = this; + if (me.data("isShown") && me.data("options").keyboard) { + me.root().on('keyup', function (e) { + e.which == 27 && me.hide(); + }) + } + else if (!me.data("isShown")) { + me.root().off('keyup'); + } + }, + hideModal: function () { + var me = this; + me.root().hide(); + me.backdrop(function () { + me.removeBackdrop(); + me.trigger('afterhide'); + }) + }, + removeBackdrop: function () { + this.$backdrop && this.$backdrop.remove(); + this.$backdrop = null; + }, + backdrop: function (callback) { + var me = this; + if (me.data("isShown") && me.data("options").backdrop) { + me.$backdrop = $('
      ').click( + me.data("options").backdrop == 'static' ? + $.proxy(me.root()[0].focus, me.root()[0]) + : $.proxy(me.hide, me) + ) + } + me.trigger('afterbackdrop'); + callback && callback(); + + }, + attachTo: function ($obj) { + var me = this + if (!$obj.data('$mergeObj')) { + + $obj.data('$mergeObj', me.root()); + $obj.on('click', function () { + me.toggle($obj) + }); + me.data('$mergeObj', $obj) + } + }, + ok: function () { + var me = this; + me.trigger('beforeok'); + if (me.trigger("ok", me) === false) { + return; + } + me.hide(); + }, + getBodyContainer: function () { + return this.root().find('.edui-modal-body') + } +}); + + +/*tooltip 类*/ +UM.ui.define('tooltip', { + tpl: '
      ' + + '
      ' + + '
      ' + + '
      ', + init: function (options) { + var me = this; + me.root($($.parseTmpl(me.tpl, options || {}))); + }, + content: function (e) { + var me = this, + title = $(e.currentTarget).attr("data-original-title"); + + me.root().find('.edui-tooltip-inner')['text'](title); + }, + position: function (e) { + var me = this, + $obj = $(e.currentTarget); + + me.root().css($.extend({display: 'block'}, $obj ? { + top: $obj.outerHeight(), + left: (($obj.outerWidth() - me.root().outerWidth()) / 2) + } : {})) + }, + show: function (e) { + if ($(e.currentTarget).hasClass('edui-disabled')) return; + + var me = this; + me.content(e); + me.root().appendTo($(e.currentTarget)); + me.position(e); + me.root().css('display', 'block'); + }, + hide: function () { + var me = this; + me.root().css('display', 'none') + }, + attachTo: function ($obj) { + var me = this; + + function tmp($obj) { + var me = this; + + if (!$.contains(document.body, me.root()[0])) { + me.root().appendTo($obj); + } + + me.data('tooltip', me.root()); + + $obj.each(function () { + if ($(this).attr("data-original-title")) { + $(this).on('mouseenter', $.proxy(me.show, me)) + .on('mouseleave click', $.proxy(me.hide, me)) + + } + }); + + } + + if ($.type($obj) === "undefined") { + $("[data-original-title]").each(function (i, el) { + tmp.call(me, $(el)); + }) + + } else { + if (!$obj.data('tooltip')) { + tmp.call(me, $obj); + } + } + } +}); + +/*tab 类*/ +UM.ui.define('tab', { + init: function (options) { + var me = this, + slr = options.selector; + + if ($.type(slr)) { + me.root($(slr, options.context)); + me.data("context", options.context); + + $(slr, me.data("context")).on('click', function (e) { + me.show(e); + }); + } + }, + show: function (e) { + + var me = this, + $cur = $(e.target), + $ul = $cur.closest('ul'), + selector, + previous, + $target, + e; + + selector = $cur.attr('data-context'); + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, ''); + + var $tmp = $cur.parent('li'); + + if (!$tmp.length || $tmp.hasClass('edui-active')) return; + + previous = $ul.find('.edui-active:last a')[0]; + + e = $.Event('beforeshow', { + target: $cur[0], + relatedTarget: previous + }); + + me.trigger(e); + + if (e.isDefaultPrevented()) return; + + $target = $(selector, me.data("context")); + + me.activate($cur.parent('li'), $ul); + me.activate($target, $target.parent(), function () { + me.trigger({ + type: 'aftershow', relatedTarget: previous + }) + }); + }, + activate: function (element, container, callback) { + if (element === undefined) { + return $(".edui-tab-item.edui-active",this.root()).index(); + } + + var $active = container.find('> .edui-active'); + + $active.removeClass('edui-active'); + + element.addClass('edui-active'); + + callback && callback(); + } +}); + + +//button 类 +UM.ui.define('separator', { + tpl: '
      ', + init: function (options) { + var me = this; + me.root($($.parseTmpl(me.tpl, options))); + return me; + } +}); +/** + * @file adapter.js + * @desc adapt ui to editor + * @import core/Editor.js, core/utils.js + */ + +(function () { + var _editorUI = {}, + _editors = {}, + _readyFn = [], + _activeWidget = null, + _widgetData = {}, + _widgetCallBack = {}, + _cacheUI = {}, + _maxZIndex = null; + + utils.extend(UM, { + defaultWidth : 500, + defaultHeight : 500, + registerUI: function (name, fn) { + utils.each(name.split(/\s+/), function (uiname) { + _editorUI[uiname] = fn; + }) + }, + + setEditor : function(editor){ + !_editors[editor.id] && (_editors[editor.id] = editor); + }, + registerWidget : function(name,pro,cb){ + _widgetData[name] = $.extend2(pro,{ + $root : '', + _preventDefault:false, + root:function($el){ + return this.$root || (this.$root = $el); + }, + preventDefault:function(){ + this._preventDefault = true; + }, + clear:false + }); + if(cb){ + _widgetCallBack[name] = cb; + } + }, + getWidgetData : function(name){ + return _widgetData[name] + }, + setWidgetBody : function(name,$widget,editor){ + if(!editor._widgetData){ + + utils.extend(editor,{ + _widgetData : {}, + getWidgetData : function(name){ + return this._widgetData[name]; + }, + getWidgetCallback : function(widgetName){ + var me = this; + return function(){ + return _widgetCallBack[widgetName].apply(me,[me,$widget].concat(Array.prototype.slice.call(arguments,0))) + } + } + }) + + } + var pro = _widgetData[name]; + if(!pro){ + return null; + } + pro = editor._widgetData[name]; + if(!pro){ + pro = _widgetData[name]; + pro = editor._widgetData[name] = $.type(pro) == 'function' ? pro : utils.clone(pro); + } + + pro.root($widget.edui().getBodyContainer()); + + pro.initContent(editor,$widget); + if(!pro._preventDefault){ + pro.initEvent(editor,$widget); + } + + pro.width && $widget.width(pro.width); + + + }, + setActiveWidget : function($widget){ + _activeWidget = $widget; + }, + getEditor: function (id, options) { + var editor = _editors[id] || (_editors[id] = this.createEditor(id, options)); + _maxZIndex = _maxZIndex ? Math.max(editor.getOpt('zIndex'), _maxZIndex):editor.getOpt('zIndex'); + return editor; + }, + setTopEditor: function(editor){ + $.each(_editors, function(i, o){ + if(editor == o) { + editor.$container && editor.$container.css('zIndex', _maxZIndex + 1); + } else { + o.$container && o.$container.css('zIndex', o.getOpt('zIndex')); + } + }); + }, + clearCache : function(id){ + if ( _editors[id]) { + delete _editors[id] + } + }, + delEditor: function (id) { + var editor; + if (editor = _editors[id]) { + editor.destroy(); + } + }, + ready: function( fn ){ + _readyFn.push( fn ); + }, + createEditor: function (id, opt) { + var editor = new UM.Editor(opt); + var T = this; + + editor.langIsReady ? $.proxy(renderUI,T)() : editor.addListener("langReady", $.proxy(renderUI,T)); + function renderUI(){ + + + var $container = this.createUI('#' + id, editor); + editor.key=id; + editor.ready(function(){ + $.each( _readyFn, function( index, fn ){ + $.proxy( fn, editor )(); + } ); + }); + var options = editor.options; + if(options.initialFrameWidth){ + options.minFrameWidth = options.initialFrameWidth + }else{ + options.minFrameWidth = options.initialFrameWidth = editor.$body.width() || UM.defaultWidth; + } + + $container.css({ + width: options.initialFrameWidth, + zIndex:editor.getOpt('zIndex') + }); + + //ie6下缓存图片 + UM.browser.ie && UM.browser.version === 6 && document.execCommand("BackgroundImageCache", false, true); + + editor.render(id); + + + //添加tooltip; + $.eduitooltip && $.eduitooltip('attachTo', $("[data-original-title]",$container)).css('z-index',editor.getOpt('zIndex')+1); + + $container.find('a').click(function(evt){ + evt.preventDefault() + }); + + editor.fireEvent("afteruiready"); + } + + return editor; + + }, + createUI: function (id, editor) { + var $editorCont = $(id), + $container = $('
      ').insertBefore($editorCont); + editor.$container = $container; + editor.container = $container[0]; + + editor.$body = $editorCont; + + //修正在ie9+以上的版本中,自动长高收起时的,残影问题 + if(browser.ie && browser.ie9above){ + var $span = $(''); + $span.insertAfter($container); + } + //初始化注册的ui组件 + $.each(_editorUI,function(n,v){ + var widget = v.call(editor,n); + if(widget){ + _cacheUI[n] = widget; + } + + }); + + $container.find('.edui-editor-body').append($editorCont).before(this.createToolbar(editor.options, editor)); + + $container.find('.edui-toolbar').append($('
      ')); + + + return $container; + }, + createToolbar: function (options, editor) { + var $toolbar = $.eduitoolbar(), toolbar = $toolbar.edui(); + //创建下来菜单列表 + + if (options.toolbar && options.toolbar.length) { + var btns = []; + $.each(options.toolbar,function(i,uiNames){ + $.each(uiNames.split(/\s+/),function(index,name){ + if(name == '|'){ + $.eduiseparator && btns.push($.eduiseparator()); + }else{ + var ui = _cacheUI[name]; + if(name=="fullscreen"){ + ui&&btns.unshift(ui); + }else{ + ui && btns.push(ui); + } + } + + }); + btns.length && toolbar.appendToBtnmenu(btns); + }); + } else { + $toolbar.find('.edui-btn-toolbar').remove() + } + return $toolbar; + } + + }) + + +})(); + + + +UM.registerUI('bold italic redo undo underline strikethrough superscript subscript insertorderedlist insertunorderedlist ' + + 'cleardoc selectall link unlink print preview justifyleft justifycenter justifyright justifyfull removeformat horizontal drafts', + function(name) { + var me = this; + var $btn = $.eduibutton({ + icon : name, + click : function(){ + me.execCommand(name); + }, + title: this.getLang('labelMap')[name] || '' + }); + + this.addListener('selectionchange',function(){ + var state = this.queryCommandState(name); + $btn.edui().disabled(state == -1).active(state == 1) + }); + return $btn; + } +); + + +/** + * 全屏组件 + */ + +(function(){ + + //状态缓存 + var STATUS_CACHE = {}, + //状态值列表 + STATUS_LIST = [ 'width', 'height', 'position', 'top', 'left', 'margin', 'padding', 'overflowX', 'overflowY' ], + CONTENT_AREA_STATUS = {}, + //页面状态 + DOCUMENT_STATUS = {}, + DOCUMENT_ELEMENT_STATUS = {}, + + FULLSCREENS = {}; + + + UM.registerUI('fullscreen', function( name ){ + + var me = this, + $button = $.eduibutton({ + 'icon': 'fullscreen', + 'title': (me.options.labelMap && me.options.labelMap[name]) || me.getLang("labelMap." + name), + 'click': function(){ + //切换 + me.execCommand( name ); + UM.setTopEditor(me); + } + }); + + me.addListener( "selectionchange", function () { + + var state = this.queryCommandState( name ); + $button.edui().disabled( state == -1 ).active( state == 1 ); + + } ); + + //切换至全屏 + me.addListener('ready', function(){ + + me.options.fullscreen && Fullscreen.getInstance( me ).toggle(); + + }); + + return $button; + + }); + + UM.commands[ 'fullscreen' ] = { + + execCommand: function (cmdName) { + + Fullscreen.getInstance( this ).toggle(); + + }, + queryCommandState: function (cmdName) { + + return this._edui_fullscreen_status; + }, + notNeedUndo: 1 + + }; + + function Fullscreen( editor ) { + + var me = this; + + if( !editor ) { + throw new Error('invalid params, notfound editor'); + } + + me.editor = editor; + + //记录初始化的全屏组件 + FULLSCREENS[ editor.uid ] = this; + + editor.addListener('destroy', function(){ + delete FULLSCREENS[ editor.uid ]; + me.editor = null; + }); + + } + + Fullscreen.prototype = { + + /** + * 全屏状态切换 + */ + toggle: function(){ + + var editor = this.editor, + //当前编辑器的缩放状态 + _edui_fullscreen_status = this.isFullState(); + editor.fireEvent('beforefullscreenchange', !_edui_fullscreen_status ); + + //更新状态 + this.update( !_edui_fullscreen_status ); + + !_edui_fullscreen_status ? this.enlarge() : this.revert(); + + editor.fireEvent('afterfullscreenchange', !_edui_fullscreen_status ); + if(editor.body.contentEditable === 'true'){ + editor.fireEvent( 'fullscreenchanged', !_edui_fullscreen_status ); + } + + editor.fireEvent( 'selectionchange' ); + + }, + /** + * 执行放大 + */ + enlarge: function(){ + + this.saveSataus(); + + this.setDocumentStatus(); + + this.resize(); + + }, + /** + * 全屏还原 + */ + revert: function(){ + + //还原CSS表达式 + var options = this.editor.options, + height = /%$/.test(options.initialFrameHeight) ? '100%' : (options.initialFrameHeight - this.getStyleValue("padding-top")- this.getStyleValue("padding-bottom") - this.getStyleValue('border-width')); + + $.IE6 && this.getEditorHolder().style.setExpression('height', 'this.scrollHeight <= ' + height + ' ? "' + height + 'px" : "auto"'); + + //还原容器状态 + this.revertContainerStatus(); + + this.revertContentAreaStatus(); + + this.revertDocumentStatus(); + + }, + /** + * 更新状态 + * @param isFull 当前状态是否是全屏状态 + */ + update: function( isFull ) { + this.editor._edui_fullscreen_status = isFull; + }, + /** + * 调整当前编辑器的大小, 如果当前编辑器不处于全屏状态, 则不做调整 + */ + resize: function(){ + + var $win = null, + height = 0, + width = 0, + borderWidth = 0, + paddingWidth = 0, + editor = this.editor, + me = this, + bound = null, + editorBody = null; + + if( !this.isFullState() ) { + return; + } + + $win = $( window ); + width = $win.width(); + height = $win.height(); + editorBody = this.getEditorHolder(); + //文本编辑区border宽度 + borderWidth = parseInt( domUtils.getComputedStyle( editorBody, 'border-width' ), 10 ) || 0; + //容器border宽度 + borderWidth += parseInt( domUtils.getComputedStyle( editor.container, 'border-width' ), 10 ) || 0; + //容器padding + paddingWidth += parseInt( domUtils.getComputedStyle( editorBody, 'padding-left' ), 10 ) + parseInt( domUtils.getComputedStyle( editorBody, 'padding-right' ), 10 ) || 0; + + //干掉css表达式 + $.IE6 && editorBody.style.setExpression( 'height', null ); + + bound = this.getBound(); + + $( editor.container ).css( { + width: width + 'px', + height: height + 'px', + position: !$.IE6 ? 'fixed' : 'absolute', + top: bound.top, + left: bound.left, + margin: 0, + padding: 0, + overflowX: 'hidden', + overflowY: 'hidden' + } ); + + $( editorBody ).css({ + width: width - 2*borderWidth - paddingWidth + 'px', + height: height - 2*borderWidth - ( editor.options.withoutToolbar ? 0 : $( '.edui-toolbar', editor.container ).outerHeight() ) - $( '.edui-bottombar', editor.container).outerHeight() + 'px', + overflowX: 'hidden', + overflowY: 'auto' + }); + + }, + /** + * 保存状态 + */ + saveSataus: function(){ + + var styles = this.editor.container.style, + tmp = null, + cache = {}; + + for( var i= 0, len = STATUS_LIST.length; i offset) { + setFloating(); + }else{ + unsetFloating(); + } + } + var defer_updateFloating = utils.defer(function(){ + updateFloating(); + },browser.ie ? 200 : 100,true); + + me.addListener('destroy',function(){ + $(window).off('scroll resize',updateFloating); + me.removeListener('keydown', defer_updateFloating); + }); + + if(checkHasUI(me)){ + toolbarBox = $('.edui-toolbar',me.container)[0]; + me.addListener("afteruiready",function(){ + setTimeout(function(){ + orgTop = $(toolbarBox).offset().top; + },100); + }); + bakCssText = toolbarBox.style.cssText; + placeHolder.style.height = toolbarBox.offsetHeight + 'px'; + if(LteIE6){ + fixIE6FixedPos(); + } + + $(window).on('scroll resize',updateFloating); + me.addListener('keydown', defer_updateFloating); + me.addListener('resize', function(){ + unsetFloating(); + placeHolder.style.height = toolbarBox.offsetHeight + 'px'; + updateFloating(); + }); + + me.addListener('beforefullscreenchange', function (t, enabled){ + if (enabled) { + unsetFloating(); + isFullScreening = enabled; + } + }); + me.addListener('fullscreenchanged', function (t, enabled){ + if (!enabled) { + updateFloating(); + } + isFullScreening = enabled; + }); + me.addListener('sourcemodechanged', function (t, enabled){ + setTimeout(function (){ + updateFloating(); + },0); + }); + me.addListener("clearDoc",function(){ + setTimeout(function(){ + updateFloating(); + },0); + + }) + } + }) + + +}); +UM.registerUI('source',function(name){ + var me = this; + me.addListener('fullscreenchanged',function(){ + me.$container.find('textarea').width(me.$body.width() - 10).height(me.$body.height()) + + }); + var $btn = $.eduibutton({ + icon : name, + click : function(){ + me.execCommand(name); + UM.setTopEditor(me); + }, + title: this.getLang('labelMap')[name] || '' + }); + + this.addListener('selectionchange',function(){ + var state = this.queryCommandState(name); + $btn.edui().disabled(state == -1).active(state == 1) + }); + return $btn; +}); + +UM.registerUI('paragraph fontfamily fontsize', function( name ) { + + var me = this, + label = (me.options.labelMap && me.options.labelMap[name]) || me.getLang("labelMap." + name), + options = { + label: label, + title: label, + comboboxName: name, + items: me.options[ name ] || [], + itemStyles: [], + value: [], + autowidthitem: [] + }, + $combox = null, + comboboxWidget = null; + if(options.items.length == 0){ + return null; + } + switch ( name ) { + + case 'paragraph': + options = transForParagraph( options ); + break; + + case 'fontfamily': + options = transForFontfamily( options ); + break; + + case 'fontsize': + options = transForFontsize( options ); + break; + + } + + //实例化 + $combox = $.eduibuttoncombobox(options).css('zIndex',me.getOpt('zIndex') + 1); + comboboxWidget = $combox.edui(); + + comboboxWidget.on('comboboxselect', function( evt, res ){ + me.execCommand( name, res.value ); + }).on("beforeshow", function(){ + if( $combox.parent().length === 0 ) { + $combox.appendTo( me.$container.find('.edui-dialog-container') ); + } + UM.setTopEditor(me); + }); + + + //状态反射 + this.addListener('selectionchange',function( evt ){ + + var state = this.queryCommandState( name ), + value = this.queryCommandValue( name ); + + //设置按钮状态 + comboboxWidget.button().edui().disabled( state == -1 ).active( state == 1 ); + if(value){ + //设置label + value = value.replace(/['"]/g, '').toLowerCase().split(/['|"]?\s*,\s*[\1]?/); + + comboboxWidget.selectItemByLabel( value ); + } + + + }); + + return comboboxWidget.button().addClass('edui-combobox'); + + /** + * 宽度自适应工具函数 + * @param word 单词内容 + * @param hasSuffix 是否含有后缀 + */ + function wordCountAdaptive ( word, hasSuffix ) { + + var $tmpNode = $('' ).html( word ).css( { + display: 'inline', + position: 'absolute', + top: -10000000, + left: -100000 + } ).appendTo( document.body), + width = $tmpNode.width(); + + $tmpNode.remove(); + $tmpNode = null; + + if( width < 50 ) { + + return word; + + } else { + + word = word.slice( 0, hasSuffix ? -4 : -1 ); + + if( !word.length ) { + return '...'; + } + + return wordCountAdaptive( word + '...', true ); + + } + + } + + + //段落参数转换 + function transForParagraph ( options ) { + + var tempItems = []; + + for( var key in options.items ) { + + options.value.push( key ); + tempItems.push( key ); + options.autowidthitem.push( wordCountAdaptive( key ) ); + + } + + options.items = tempItems; + options.autoRecord = false; + + return options; + + } + + //字体参数转换 + function transForFontfamily ( options ) { + + var temp = null, + tempItems = []; + + for( var i = 0, len = options.items.length; i < len; i++ ) { + + temp = options.items[ i ].val; + tempItems.push( temp.split(/\s*,\s*/)[0] ); + options.itemStyles.push('font-family: ' + temp); + options.value.push( temp ); + options.autowidthitem.push( wordCountAdaptive( tempItems[ i ] ) ); + + } + + options.items = tempItems; + + return options; + + } + + //字体大小参数转换 + function transForFontsize ( options ) { + + var temp = null, + tempItems = []; + + options.itemStyles = []; + options.value = []; + + for( var i = 0, len = options.items.length; i < len; i++ ) { + + temp = options.items[ i ]; + tempItems.push( temp ); + options.itemStyles.push('font-size: ' + temp +'px'); + + } + + options.value = options.items; + options.items = tempItems; + options.autoRecord = false; + + return options; + + } + +}); + + +UM.registerUI('forecolor backcolor', function( name ) { + function getCurrentColor() { + return domUtils.getComputedStyle( $colorLabel[0], 'background-color' ); + } + + var me = this, + $colorPickerWidget = null, + $colorLabel = null, + $btn = null; + + //querycommand + this.addListener('selectionchange', function(){ + + var state = this.queryCommandState( name ); + $btn.edui().disabled( state == -1 ).active( state == 1 ); + + }); + + $btn = $.eduicolorsplitbutton({ + icon: name, + caret: true, + name: name, + title: me.getLang("labelMap")[name], + click: function() { + me.execCommand( name, getCurrentColor() ); + } + }); + + $colorLabel = $btn.edui().colorLabel(); + + $colorPickerWidget = $.eduicolorpicker({ + name: name, + lang_clearColor: me.getLang('clearColor') || '', + lang_themeColor: me.getLang('themeColor') || '', + lang_standardColor: me.getLang('standardColor') || '' + }) + .on('pickcolor', function( evt, color ){ + window.setTimeout( function(){ + $colorLabel.css("backgroundColor", color); + me.execCommand( name, color ); + }, 0 ); + }) + .on('show',function(){ + UM.setActiveWidget( colorPickerWidget.root() ); + }).css('zIndex',me.getOpt('zIndex') + 1); + + $btn.edui().on('arrowclick',function(){ + if(!$colorPickerWidget.parent().length){ + me.$container.find('.edui-dialog-container').append($colorPickerWidget); + } + $colorPickerWidget.edui().show($btn,{ + caretDir:"down", + offsetTop:-5, + offsetLeft:8, + caretLeft:11, + caretTop:-8 + }); + UM.setTopEditor(me); + }).register('click', $btn, function () { + $colorPickerWidget.edui().hide() + }); + + return $btn; + +}); + })(jQuery) \ No newline at end of file diff --git a/Public/statics/umeditor1_2_3/umeditor.min.js b/Public/statics/umeditor1_2_3/umeditor.min.js new file mode 100644 index 0000000..b12ab44 --- /dev/null +++ b/Public/statics/umeditor1_2_3/umeditor.min.js @@ -0,0 +1,273 @@ +/* + UEditor Mini?? + version: 1.2.2 + build: Thu Dec 22 2016 16:33:28 GMT+0800 (CST) +*/ +var $jscomp={scope:{},findInternal:function(g,B,w){g instanceof String&&(g=String(g));for(var x=g.length,m=0;mc||d.quirks;d.ie9above=8c}d.gecko&&(f=a.match(/rv:([\d\.]+)/))&&(f=f[1].split("."),c=1E4*f[0]+100*(f[1]||0)+1*(f[2]||0));/chrome\/(\d+\.\d)/i.test(a)&&(d.chrome=+RegExp.$1);/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a)&&!/chrome/i.test(a)&&(d.safari=+(RegExp.$1||RegExp.$2));d.opera&&(c=parseFloat(b.version()));d.webkit&&(c=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));d.version=c;d.isCompatible= +!d.mobile&&(d.ie&&6<=c||d.gecko&&10801<=c||d.opera&&9.5<=c||d.air&&1<=c||d.webkit&&522<=c||!1);return d}(),E=m.ie,n=UM.utils={each:function(a,b,d){if(null!=a)if(a.length===+a.length)for(var c=0,f=a.length;c=d&&a===b)return c= +h,!1});return c},removeItem:function(a,b){for(var d=0,c=a.length;d'](?:(amp|lt|quot|gt|#39|nbsp);)?/g,function(a,b){return b?a:{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},html:function(a){return a? +a.replace(/&((g|l|quo)t|amp|#39);/g,function(a){return{"<":"<","&":"&",""":'"',">":">","'":"'"}[a]}):""},cssStyleToDomStyle:function(){var a=document.createElement("div").style,b={"float":void 0!=a.cssFloat?"cssFloat":void 0!=a.styleFloat?"styleFloat":"float"};return function(a){return b[a]||(b[a]=a.toLowerCase().replace(/-./g,function(a){return a.charAt(1).toUpperCase()}))}}(),loadFile:function(){function a(a,c){try{for(var d=0,h;h=b[d++];)if(h.doc===a&&h.url==(c.src||c.href))return h}catch(e){return null}} +var b=[];return function(d,c,f){var h=a(d,c);if(h)h.ready?f&&f():h.funs.push(f);else if(b.push({doc:d,url:c.src||c.href,funs:[f]}),!d.body){f=[];for(var e in c)"tag"!=e&&f.push(e+'="'+c[e]+'"');d.write("<"+c.tag+" "+f.join(" ")+" >")}else if(!c.id||!d.getElementById(c.id)){var l=d.createElement(c.tag);delete c.tag;for(e in c)l.setAttribute(e,c[e]);l.onload=l.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){h=a(d,c);if(0m.version?{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}:{tabindex:"tabIndex",readonly:"readOnly"},K=n.listToMap("-webkit-box -moz-box block list-item table table-row-group table-header-group table-footer-group table-row table-column-group table-column table-cell table-caption".split(" ")), +k=x.domUtils={NODE_ELEMENT:1,NODE_DOCUMENT:9,NODE_TEXT:3,NODE_COMMENT:8,NODE_DOCUMENT_FRAGMENT:11,POSITION_IDENTICAL:0,POSITION_DISCONNECTED:1,POSITION_FOLLOWING:2,POSITION_PRECEDING:4,POSITION_IS_CONTAINED:8,POSITION_CONTAINS:16,fillChar:E&&"6"==m.version?"\ufeff":"\u200b",keys:{8:1,46:1,16:1,17:1,18:1,37:1,38:1,39:1,40:1,13:1},breakParent:function(a,b){var d,c=a,f=a,h,e;do{c=c.parentNode;h?(d=c.cloneNode(!1),d.appendChild(h),h=d,d=c.cloneNode(!1),d.appendChild(e),e=d):(h=c.cloneNode(!1),e=h.cloneNode(!1)); +for(;d=f.previousSibling;)h.insertBefore(d,h.firstChild);for(;d=f.nextSibling;)e.appendChild(d);f=c}while(b!==c);d=b.parentNode;d.insertBefore(h,b);d.insertBefore(e,b);d.insertBefore(a,e);k.remove(b);return a},trimWhiteTextNode:function(a){function b(b){for(var c;(c=a[b])&&3==c.nodeType&&k.isWhitespace(c);)a.removeChild(c)}b("firstChild");b("lastChild")},getPosition:function(a,b){if(a===b)return 0;var d,c=[a],f=[b];for(d=a;d=d.parentNode;){if(d===b)return 10;c.push(d)}for(d=b;d=d.parentNode;){if(d=== +a)return 20;f.push(d)}c.reverse();f.reverse();if(c[0]!==f[0])return 1;for(d=-1;d++,c[d]===f[d];);a=c[d];for(b=f[d];a=a.nextSibling;)if(a===b)return 4;return 2},getNodeIndex:function(a,b){for(var d=a,c=0;d=d.previousSibling;)b&&3==d.nodeType?d.nodeType!=d.nextSibling.nodeType&&c++:c++;return c},inDoc:function(a,b){return 10==k.getPosition(a,b)},findParent:function(a,b,d){if(a&&!k.isBody(a))for(a=d?a:a.parentNode;a;){if(!b||b(a)||k.isBody(a))return b&&!b(a)&&k.isBody(a)?null:a;a=a.parentNode}return null}, +findParentByTagName:function(a,b,d,c){b=n.listToMap(n.isArray(b)?b:[b]);return k.findParent(a,function(a){return b[a.tagName]&&!(c&&c(a))},d)},findParents:function(a,b,d,c){for(b=b&&(d&&d(a)||!d)?[a]:[];a=k.findParent(a,d);)b.push(a);return c?b:b.reverse()},insertAfter:function(a,b){return a.parentNode.insertBefore(b,a.nextSibling)},remove:function(a,b){var d=a.parentNode,c;if(d){if(b&&a.hasChildNodes())for(;c=a.firstChild;)d.insertBefore(c,a);d.removeChild(a)}return a},getNextDomNode:function(a, +b,d,c){return w(a,"firstChild","nextSibling",b,d,c)},getPreDomNode:function(a,b,d,c){return w(a,"lastChild","previousSibling",b,d,c)},isBookmarkNode:function(a){return 1==a.nodeType&&a.id&&/^_baidu_bookmark_/i.test(a.id)},getWindow:function(a){a=a.ownerDocument||a;return a.defaultView||a.parentWindow},getCommonAncestor:function(a,b){if(a===b)return a;for(var d=[a],c=[b],f=a,h=-1;f=f.parentNode;){if(f===b)return f;d.push(f)}for(f=b;f=f.parentNode;){if(f===a)return f;c.push(f)}d.reverse();for(c.reverse();h++, +d[h]===c[h];);return 0==h?null:d[h-1]},clearEmptySibling:function(a,b,d){function c(a,b){for(var c;a&&!k.isBookmarkNode(a)&&(k.isEmptyInlineElement(a)||!(new RegExp("[^\t\n\r"+k.fillChar+"]")).test(a.nodeValue));)c=a[b],k.remove(a),a=c}!b&&c(a.nextSibling,"nextSibling");!d&&c(a.previousSibling,"previousSibling")},split:function(a,b){var d=a.ownerDocument;if(m.ie&&b==a.nodeValue.length){var c=d.createTextNode("");return k.insertAfter(a,c)}c=a.splitText(b);m.ie8&&(d=d.createTextNode(""),k.insertAfter(c, +d),k.remove(d));return c},isWhitespace:function(a){return!(new RegExp("[^ \t\n\r"+k.fillChar+"]")).test(a.nodeValue)},getXY:function(a){for(var b=0,d=0;a.offsetParent;)d+=a.offsetTop,b+=a.offsetLeft,a=a.offsetParent;return{x:b,y:d}},isEmptyInlineElement:function(a){if(1!=a.nodeType||!p.$removeEmpty[a.tagName])return 0;for(a=a.firstChild;a;){if(k.isBookmarkNode(a)||1==a.nodeType&&!k.isEmptyInlineElement(a)||3==a.nodeType&&!k.isWhitespace(a))return 0;a=a.nextSibling}return 1},isBlockElm:function(a){return 1== +a.nodeType&&(p.$block[a.tagName]||K[k.getComputedStyle(a,"display")])&&!p.$nonChild[a.tagName]},getElementsByTagName:function(a,b,d){if(d&&n.isString(d)){var c=d;d=function(a){var b=!1;g.each(n.trim(c).replace(/[ ]{2,}/g," ").split(" "),function(l,c){if(g(a).hasClass(c))return b=!0,!1});return b}}b=n.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var f=[],h=0,e;e=b[h++];){e=a.getElementsByTagName(e);for(var l=0,t;t=e[l++];)d&&!d(t)||f.push(t)}return f},unSelectable:E&&m.ie9below||m.opera?function(a){a.onselectstart= +function(){return!1};a.onclick=a.onkeyup=a.onkeydown=function(){return!1};a.unselectable="on";a.setAttribute("unselectable","on");for(var b=0,d;d=a.all[b++];)switch(d.tagName.toLowerCase()){case "iframe":case "textarea":case "input":case "select":break;default:d.unselectable="on",a.setAttribute("unselectable","on")}}:function(a){a.style.MozUserSelect=a.style.webkitUserSelect=a.style.msUserSelect=a.style.KhtmlUserSelect="none"},removeAttributes:function(a,b){b=n.isArray(b)?b:n.trim(b).replace(/[ ]{2,}/g, +" ").split(" ");for(var d=0,c;c=b[d++];){c=J[c]||c;switch(c){case "className":a[c]="";break;case "style":a.style.cssText="",!m.ie&&a.removeAttributeNode(a.getAttributeNode("style"))}a.removeAttribute(c)}},createElement:function(a,b,d){return k.setAttributes(a.createElement(b),d)},setAttributes:function(a,b){for(var d in b)if(b.hasOwnProperty(d)){var c=b[d];switch(d){case "class":a.className=c;break;case "style":a.style.cssText=a.style.cssText+";"+c;break;case "innerHTML":a[d]=c;break;case "value":a.value= +c;break;default:a.setAttribute(J[d]||d,c)}}return a},getComputedStyle:function(a,b){return n.transUnitToPx(n.fixColor(b,g(a).css(b)))},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},removeStyle:function(a,b){m.ie?("color"==b&&(b="(^|;)"+b),a.style.cssText=a.style.cssText.replace(new RegExp(b+"[^:]*:[^;]+;?","ig"),"")):a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(n.cssStyleToDomStyle(b));a.style.cssText||k.removeAttributes(a,["style"])}, +getStyle:function(a,b){var d=a.style[n.cssStyleToDomStyle(b)];return n.fixColor(b,d)},setStyle:function(a,b,d){a.style[n.cssStyleToDomStyle(b)]=d;n.trim(a.style.cssText)||this.removeAttributes(a,"style")},removeDirtyAttr:function(a){for(var b=0,d,c=a.getElementsByTagName("*");d=c[b++];)d.removeAttribute("_moz_dirty");a.removeAttribute("_moz_dirty")},getChildCount:function(a,b){var d=0,c=a.firstChild;for(b=b||function(){return 1};c;)b(c)&&d++,c=c.nextSibling;return d},isEmptyNode:function(a){return!a.firstChild|| +0==k.getChildCount(a,function(a){return!k.isBr(a)&&!k.isBookmarkNode(a)&&!k.isWhitespace(a)})},isBr:function(a){return 1==a.nodeType&&"BR"==a.tagName},isEmptyBlock:function(a,b){if(1!=a.nodeType)return 0;b=b||new RegExp("[ \t\r\n"+k.fillChar+"]","g");if(0=b.nodeValue.length)this.setStartAfter(b);else{var d=k.split(b,c);b===e?this.setEnd(d,this.endOffset-c):b.parentNode===e&&(this.endOffset+=1);this.setStartBefore(d)}if(l)return this.collapse(!0)}a||(c=this.endOffset,e=this.endContainer,3==e.nodeType&&(0==c?this.setEndBefore(e):(c=c.nodeValue.length)a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"After"](c)}if(a||!this.collapsed)b(this,"start"),b(this,"end");return this},insertNode:function(a){var b=a,c=1;11==a.nodeType&&(b=a.firstChild,c=a.childNodes.length);this.trimBoundary(!0);var l=this.startContainer,e=l.childNodes[this.startOffset];e?l.insertBefore(a,e): +l.appendChild(a);b.parentNode===this.endContainer&&(this.endOffset+=c);return this.setStartBefore(b)},setCursor:function(a,b){return this.collapse(!a).select(b)},createBookmark:function(a,b){var l,e=this.document.createElement("span");e.style.cssText="display:none;line-height:0px;";e.appendChild(this.document.createTextNode("\u200d"));e.id="_baidu_bookmark_start_"+(b?"":c++);this.collapsed||(l=e.cloneNode(!0),l.id="_baidu_bookmark_end_"+(b?"":c++));this.insertNode(e);l&&this.collapse().insertNode(l).setEndBefore(l); +this.setStartAfter(e);return{start:a?e.id:e,end:l?a?l.id:l:null,id:a}},moveToBookmark:function(a){var b=a.id?this.document.getElementById(a.start):a.start;a=a.end&&a.id?this.document.getElementById(a.end):a.end;this.setStartBefore(b);k.remove(b);a?(this.setEndBefore(a),k.remove(a)):this.collapse(!0);return this},adjustmentBoundary:function(){if(!this.collapsed){for(;!k.isBody(this.startContainer)&&this.startOffset==this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length&& +this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length;)this.setStartAfter(this.startContainer);for(;!k.isBody(this.endContainer)&&!this.endOffset&&this.endContainer[3==this.endContainer.nodeType?"nodeValue":"childNodes"].length;)this.setEndBefore(this.endContainer)}return this},getClosedNode:function(){var a;if(!this.collapsed){var b=this.cloneRange().adjustmentBoundary().shrinkBoundary();b.collapsed||1!=b.startContainer.nodeType||b.startContainer!==b.endContainer|| +1!=b.endOffset-b.startOffset||(b=b.startContainer.childNodes[b.startOffset])&&1==b.nodeType&&(p.$empty[b.tagName]||p.$nonChild[b.tagName])&&(a=b)}return a},select:m.ie?function(a,c){var l;this.collapsed||this.shrinkBoundary();var e=this.getClosedNode();if(e&&!c){try{l=this.document.body.createControlRange(),l.addElement(e),l.select()}catch(G){}return this}var e=this.createBookmark(),t=e.start;l=this.document.body.createTextRange();l.moveToElementText(t);l.moveStart("character",1);if(!this.collapsed){var g= +this.document.body.createTextRange(),t=e.end;g.moveToElementText(t);l.setEndPoint("EndToEnd",g)}else if(!a&&3!=this.startContainer.nodeType){var g=this.document.createTextNode(f),A=this.document.createElement("span");A.appendChild(this.document.createTextNode(f));t.parentNode.insertBefore(A,t);t.parentNode.insertBefore(g,t);b(this.document,g);h=g;d(A,"previousSibling");d(t,"nextSibling");l.moveStart("character",-1);l.collapse(!0)}this.moveToBookmark(e);A&&k.remove(A);try{l.select()}catch(G){}return this}: +function(a){function c(a){function b(b,c,e){3==b.nodeType&&b.nodeValue.lengthe&&(e=0);d.push(e);return d}var e={},l=this;e.startAddress=c(!0);a||(e.endAddress=l.collapsed?[].concat(e.startAddress):c());return e},moveToAddress:function(a,b){function c(a, +b){for(var c=e.body,l,d,f=0,h,t=a.length;f ');this.cloneRange().insertNode(a.get(0));var b=g(window).scrollTop(), +c=g(window).height(),e=a.offset().top;if(eb+c)e>b+c?window.scrollTo(0,e-c+a.height()):window.scrollTo(0,b-e);a.remove()},getOffset:function(){var a=this.createBookmark(),b=g(a.start).css("display","inline-block").offset();this.moveToBookmark(a);return b}}})();(function(){function a(a,b){var c=k.getNodeIndex;a=a.duplicate();a.collapse(b);var e=a.parentElement();if(!e.hasChildNodes())return{container:e,offset:0};for(var l=e.children,d,f=a.duplicate(),r=0,g=l.length-1,y=-1;r<=g;){y=Math.floor((r+ +g)/2);d=l[y];f.moveToElementText(d);var A=f.compareEndPoints("StartToStart",a);if(0A)r=y+1;else return{container:e,offset:c(d)}}if(-1==y){f.moveToElementText(e);f.setEndPoint("StartToStart",a);f=f.text.replace(/(\r\n|\r)/g,"\n").length;l=e.childNodes;if(!f)return d=l[l.length-1],{container:d,offset:d.nodeValue.length};for(c=l.length;0=m.version&&(a.style.height=c,a.style.setExpression("height", +"this.scrollHeight <= "+c+' ? "'+c+'px" : "auto"'))):g(a).height(c),a.style.zIndex=b.zIndex,this._setup(a))},_setup:function(b){var c=this,d=c.options;b.contentEditable=!0;document.body.spellcheck=!1;c.document=document;c.window=document.defaultView||document.parentWindow;c.body=b;c.$body=g(b);c.selection=new x.Selection(document,c.body);c._isEnabled=!1;var e;m.gecko&&(e=this.selection.getNative())&&e.removeAllRanges();this._initEvents();for(var f=b.parentNode;f&&!k.isBody(f);f=f.parentNode)if("FORM"== +f.tagName){c.form=f;if(c.options.autoSyncData)g(b).on("blur",function(){a(f,c)});else g(f).on("submit",function(){a(this,c)});break}if(d.initialContent)if(d.autoClearinitialContent){var h=c.execCommand;c.execCommand=function(){c.fireEvent("firstBeforeExecCommand");return h.apply(c,arguments)};this._setDefaultContent(d.initialContent)}else this.setContent(d.initialContent,!1,!0);k.isEmptyNode(c.body)&&(c.body.innerHTML="

      "+(m.ie?"":"
      ")+"

      ");d.focus&&setTimeout(function(){c.focus(c.options.focusInEnd); +!c.options.autoClearinitialContent&&c._selectionChange()},0);c.container||(c.container=b.parentNode);c._bindshortcutKeys();c.isReady=1;c.fireEvent("ready");d.onready&&d.onready.call(c);if(!m.ie||m.ie9above)g(c.body).on("blur focus",function(a){var b=c.selection.getNative();if("blur"==a.type)0=m.version&&this.container&&(this.container.style.height=a,this.container.style.setExpression("height","this.scrollHeight <= "+a+' ? "'+a+'px" : "auto"'))):g(this.body).height(a);this.fireEvent("resize")},setWidth:function(a){this.$container&&this.$container.width(a);g(this.body).width(a- +1*g(this.body).css("padding-left").replace("px","")-1*g(this.body).css("padding-right").replace("px",""));this.fireEvent("resize")},addshortcutkey:function(a,b){var c={};b?c[a]=b:c=a;n.extend(this.shortcutkeys,c)},_bindshortcutKeys:function(){var a=this,b=this.shortcutkeys;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which,f;for(f in b)for(var l=b[f].split(","),h=0,t;t=l[h++];){t=t.split(":");var g=t[0];t=t[1];if(/^(ctrl)(\+shift)?\+(\d+)$/.test(g.toLowerCase())||/^(\d+)$/.test(g))if("ctrl"== +RegExp.$1&&(d.ctrlKey||d.metaKey)&&(""!=RegExp.$2?d[RegExp.$2.slice(1)+"Key"]:1)&&e==RegExp.$3||e==RegExp.$1)-1!=a.queryCommandState(f,t)&&a.execCommand(f,t),k.preventDefault(d)}})},getContent:function(a,b,c,d,f){a&&n.isFunction(a)&&(b=a);if(b?!b():!this.hasContents())return"";this.fireEvent("beforegetcontent");a=UM.htmlparser(this.body.innerHTML,d);this.filterOutputRule(a);this.fireEvent("aftergetcontent",a);return a.toHtml(f)},getAllHtml:function(){var a=[];this.fireEvent("getAllHtml",a);if(m.ie&& +8':""});n.each(this.document.getElementsByTagName("script"),function(a){b+=a.outerHTML})}return""+(this.options.charset?'':"")+(b||this.document.getElementsByTagName("head")[0].innerHTML)+a.join("\n")+"m.version?'class="view"': +"")+">"+this.getContent(null,null,!0)+""},getPlainTxt:function(){var a=new RegExp(k.fillChar,"g"),b=this.body.innerHTML.replace(/[\n\r]/g,""),b=b.replace(/<(p|div)[^>]*>(| )<\/\1>/gi,"\n").replace(//gi,"\n").replace(/<[^>/]+>/g,"").replace(/(\n)?<\/([^>]+)>/g,function(a,b,c){return p.$block[c]?"\n":b?b:""});return b.replace(a,"").replace(/\u00a0/g," ").replace(/ /g," ")},getContentTxt:function(){return this.body[m.ie?"innerText":"textContent"].replace(new RegExp(k.fillChar, +"g"),"").replace(/\u00a0/g," ")},setContent:function(b,c,d){this.fireEvent("beforesetcontent",b);b=UM.htmlparser(b);this.filterInputRule(b);b=b.toHtml();this.body.innerHTML=(c?this.body.innerHTML:"")+b;if("p"==this.options.enterTag)if(c=this.body.firstChild,!c||1==c.nodeType&&(p.$cdata[c.tagName]||"DIV"==c.tagName&&c.getAttribute("cdata_tag")||k.isCustomeNode(c))&&c===this.body.lastChild)this.body.innerHTML="

      "+(m.ie?" ":"
      ")+"

      "+this.body.innerHTML;else for(var e=this.document.createElement("p");c;){for(;c&& +(3==c.nodeType||1==c.nodeType&&p.p[c.tagName]&&!p.$cdata[c.tagName]);)b=c.nextSibling,e.appendChild(c),c=b;if(e.firstChild)if(c)c.parentNode.insertBefore(e,c),e=this.document.createElement("p");else{this.body.appendChild(e);break}c=c.nextSibling}this.fireEvent("aftersetcontent");this.fireEvent("contentchange");!d&&this._selectionChange();this._bakRange=this._bakIERange=this._bakNativeRange=null;var f;m.gecko&&(f=this.selection.getNative())&&f.removeAllRanges();this.options.autoSyncData&&this.form&& +a(this.form,this)},focus:function(a){try{var b=this.selection.getRange();a?b.setStartAtLast(this.body.lastChild).setCursor(!1,!0):b.select(!0);this.fireEvent("focus")}catch(t){}},blur:function(){var a=this.selection.getNative();a.empty?a.empty():a.removeAllRanges();this.fireEvent("blur")},isFocus:function(){return!0===this.fireEvent("isfocus")?!0:this.selection.isFocus()},_initEvents:function(){var a=this,b=function(){a._proxyDomEvent.apply(a,arguments)};g(a.body).on("click contextmenu mousedown keydown keyup keypress mouseup mouseover mouseout selectstart", +b).on("focus blur",b).on("mouseup keydown",function(b){"keydown"==b.type&&(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)||2!=b.button&&a._selectionChange(250,b)})},_proxyDomEvent:function(a){return this.fireEvent(a.type.replace(/^on/,""),a)},_selectionChange:function(a,b){var c=this,d=!1,e,l;m.ie&&9>m.version&&b&&"mouseup"==b.type&&!this.selection.getRange().collapsed&&(d=!0,e=b.clientX,l=b.clientY);clearTimeout(f);f=setTimeout(function(){if(c.selection.getNative()){var a;if(d&&"None"==c.selection.getNative().type){a= +c.document.body.createTextRange();try{a.moveToPoint(e,l)}catch(G){a=null}}var f;a&&(f=c.selection.getIERange,c.selection.getIERange=function(){return a});c.selection.cache();f&&(c.selection.getIERange=f);c.selection._cachedRange&&c.selection._cachedStartElement&&(c.fireEvent("beforeselectionchange"),c.fireEvent("selectionchange",!!b),c.fireEvent("afterselectionchange"),c.selection.clear())}},a||50)},_callCmdFn:function(a,b){b=Array.prototype.slice.call(b,0);var c=b.shift().toLowerCase(),d,e;e=(d= +this.commands[c]||UM.commands[c])&&d[a];if(!(d&&e||"queryCommandState"!=a))return 0;if(e)return e.apply(this,[c].concat(b))},execCommand:function(a){if(!this.isFocus()){var b=this.selection._bakRange;b?b.select():this.focus(!0)}a=a.toLowerCase();var c,b=this.commands[a]||UM.commands[a];if(!b||!b.execCommand)return null;b.notNeedUndo||this.__hasEnterExecCommand?(c=this._callCmdFn("execCommand",arguments),this.__hasEnterExecCommand||b.ignoreContentChange||this._ignoreContentChange||this.fireEvent("contentchange")): +(this.__hasEnterExecCommand=!0,-1!=this.queryCommandState.apply(this,arguments)&&(this.fireEvent("saveScene"),this.fireEvent("beforeexeccommand",a),c=this._callCmdFn("execCommand",arguments),b.ignoreContentChange||this._ignoreContentChange||this.fireEvent("contentchange"),this.fireEvent("afterexeccommand",a),this.fireEvent("saveScene")),this.__hasEnterExecCommand=!1);this.__hasEnterExecCommand||b.ignoreContentChange||this._ignoreContentChange||this._selectionChange();return c},queryCommandState:function(a){try{return this._callCmdFn("queryCommandState", +arguments)}catch(l){return 0}},queryCommandValue:function(a){try{return this._callCmdFn("queryCommandValue",arguments)}catch(l){return null}},hasContents:function(a){if(a)for(var b=0,c;c=a[b++];)if(0"+(E?"":"
      ")+"

      ",b.removeListener("firstBeforeExecCommand focus",a),setTimeout(function(){b.focus();b._selectionChange()},0))}return function(b){this.body.innerHTML='

      '+b+"

      ";this.addListener("firstBeforeExecCommand focus",a)}}(),setShow:function(){var a=this.selection.getRange();if("none"==this.container.style.display){try{a.moveToBookmark(this.lastBk), +delete this.lastBk}catch(l){a.setStartAtFirst(this.body).collapse(!0)}setTimeout(function(){a.select(!0)},100);this.container.style.display=""}},show:function(){return this.setShow()},setHide:function(){this.lastBk||(this.lastBk=this.selection.getRange().createBookmark(!0));this.container.style.display="none"},hide:function(){return this.setHide()},getLang:function(a){var b=UM.I18N[this.options.lang];if(!b)throw Error("not import language file");a=(a||"").split(".");for(var c=0,d;(d=a[c++])&&(b=b[d], +b););return b},getContentLength:function(a,b){var c=this.getContent(!1,!1,!0).length;if(a){b=(b||[]).concat(["hr","img","iframe"]);for(var c=this.getContentTxt().replace(/[\t\r\n]+/g,"").length,d=0,e;e=b[d++];)c+=this.body.getElementsByTagName(e).length}return c},addInputRule:function(a,b){a.ignoreUndo=b;this.inputRules.push(a)},filterInputRule:function(a,b){for(var c=0,d;d=this.inputRules[c++];)b&&d.ignoreUndo||d.call(this,a)},addOutputRule:function(a,b){a.ignoreUndo=b;this.outputRules.push(a)}, +filterOutputRule:function(a,b){for(var c=0,d;d=this.outputRules[c++];)b&&d.ignoreUndo||d.call(this,a)}};n.inherits(h,I)})();UM.filterWord=function(){function a(a){return a=a.replace(/[\d.]+\w+/g,function(a){return n.transUnitToPx(a)})}function b(b){return b.replace(/[\t\r\n]+/g," ").replace(/\x3c!--[\s\S]*?--\x3e/ig,"").replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(b){if(m.opera)return"";try{if(/Bitmap/i.test(b))return"";var c=b.match(/width:([ \d.]*p[tx])/i)[1],d=b.match(/height:([ \d.]*p[tx])/i)[1], +e=b.match(/src=\s*"([^"]*)"/i)[1];return''}catch(l){return""}}).replace(/<\/?div[^>]*>/g,"").replace(/v:\w+=(["']?)[^'"]+\1/g,"").replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi,"").replace(/

      ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

      $1

      ").replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/ig,function(a,b,d,e){return"class"==b&&"MsoListParagraph"== +e?a:""}).replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi,function(a,b,d){return d.replace(/[\t\r\n ]+/g," ")}).replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi,function(b,d,h,e){b=[];e=e.replace(/^\s+|\s+$/,"").replace(/'/g,"'").replace(/"/gi,"'").split(/;\s*/g);h=0;for(var c;c=e[h];h++){var f,g=c.split(":");if(2==g.length&&(c=g[0].toLowerCase(),f=g[1].toLowerCase(),!(/^(background)\w*/.test(c)&&0==f.replace(/(initial|\s)/g,"").length||/^(margin)\w*/.test(c)&&/^0\w+$/.test(f)))){switch(c){case "mso-padding-alt":case "mso-padding-top-alt":case "mso-padding-right-alt":case "mso-padding-bottom-alt":case "mso-padding-left-alt":case "mso-margin-alt":case "mso-margin-top-alt":case "mso-margin-right-alt":case "mso-margin-bottom-alt":case "mso-margin-left-alt":case "mso-height":case "mso-width":case "mso-vertical-align-alt":/");e&&!p.$inlineWithA[c.tagName]&&"pre"!= +c.tagName&&c.children&&c.children.length&&(l=a(f,l,!0),b(f,l));if(c.children&&c.children.length)for(h=0;g=c.children[h++];)e&&"element"==g.type&&!p.$inlineWithA[g.tagName]&&1"))}function f(a,b){var c;if("element"==a.type&&a.getAttr("id")==b)return a;if(a.children&&a.children.length)for(var d=0;c=a.children[d++];)if(c=f(c,b))return c} +function h(a,b,c){"element"==a.type&&a.tagName==b&&c.push(a);if(a.children&&a.children.length)for(var d=0,f;f=a.children[d++];)h(f,b,c)}function e(a,b){if(a.children&&a.children.length)for(var c=0,d;d=a.children[c];)e(d,b),d.parentNode&&(d.children&&d.children.length&&b(d),d.parentNode&&c++);else b(a)}var l=UM.uNode=function(a){this.type=a.type;this.data=a.data;this.tagName=a.tagName;this.parentNode=a.parentNode;this.attrs=a.attrs||{};this.children=a.children},t={href:1,src:1,_src:1,_href:1,cdata_data:1}, +k={style:1,script:1};l.createElement=function(a){return/[<>]/.test(a)?UM.htmlparser(a).children[0]:new l({type:"element",children:[],tagName:a})};l.createText=function(a,b){return new UM.uNode({type:"text",data:b?a:n.unhtml(a||"")})};l.prototype={toHtml:function(a){var b=[];d(this,b,a,0);return b.join("")},innerHTML:function(a){if("element"!=this.type||p.$empty[this.tagName])return this;if(n.isString(a)){if(this.children)for(var b=0,c;c=this.children[b++];)c.parentNode=null;this.children=[];a=UM.htmlparser(a); +for(b=0;c=a.children[b++];)this.children.push(c),c.parentNode=this;return this}a=new UM.uNode({type:"root",children:this.children});return a.toHtml()},innerText:function(a,b){if("element"!=this.type||p.$empty[this.tagName])return this;if(a){if(this.children)for(var c=0,d;d=this.children[c++];)d.parentNode=null;this.children=[];this.appendChild(l.createText(a,b));return this}return this.toHtml().replace(/<[^>]+>/g,"")},getData:function(){return"element"==this.type?"":this.data},firstChild:function(){return this.children? +this.children[0]:null},lastChild:function(){return this.children?this.children[this.children.length-1]:null},previousSibling:function(){for(var a=this.parentNode,b=0,c;c=a.children[b];b++)if(c===this)return 0==b?null:a.children[b-1]},nextSibling:function(){for(var a=this.parentNode,b=0,c;c=a.children[b++];)if(c===this)return a.children[b]},replaceChild:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c=0,d;d=this.children[c];c++)if(d===b)return this.children.splice(c, +1,a),b.parentNode=null,a.parentNode=this,a}},appendChild:function(a){if("root"==this.type||"element"==this.type&&!p.$empty[this.tagName]){this.children||(this.children=[]);a.parentNode&&a.parentNode.removeChild(a);for(var b=0,c;c=this.children[b];b++)if(c===a){this.children.splice(b,1);break}this.children.push(a);a.parentNode=this;return a}},insertBefore:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c=0,d;d=this.children[c];c++)if(d===b)return this.children.splice(c, +0,a),a.parentNode=this,a}},insertAfter:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c=0,d;d=this.children[c];c++)if(d===b)return this.children.splice(c+1,0,a),a.parentNode=this,a}},removeChild:function(a,b){if(this.children)for(var c=0,d;d=this.children[c];c++)if(d===a){this.children.splice(c,1);d.parentNode=null;if(b&&d.children&&d.children.length)for(var f=0,e;e=d.children[f];f++)this.children.splice(c+f,0,e),e.parentNode=this;return d}},getAttr:function(a){return this.attrs&& +this.attrs[a.toLowerCase()]},setAttr:function(a,b){if(a)if(this.attrs||(this.attrs={}),n.isObject(a))for(var c in a)a[c]?this.attrs[c.toLowerCase()]=a[c]:delete this.attrs[c];else b?this.attrs[a.toLowerCase()]=b:delete this.attrs[a];else delete this.attrs},hasAttr:function(a){a=this.getAttr(a);return null!==a&&void 0!==a},getIndex:function(){for(var a=this.parentNode,b=0,c;c=a.children[b];b++)if(c===this)return b;return-1},getNodeById:function(a){var b;if(this.children&&this.children.length)for(var c= +0;b=this.children[c++];)if(b=f(b,a))return b},getNodesByTagName:function(a){a=n.trim(a).replace(/[ ]{2,}/g," ").split(" ");var b=[],c=this;n.each(a,function(a){if(c.children&&c.children.length)for(var d=0,f;f=c.children[d++];)h(f,a,b)});return b},getStyle:function(a){var b=this.getAttr("style");return b?(a=b.match(new RegExp("(^|;)\\s*"+a+":([^;]+)","i")))&&a[0]?a[2]:"":""},setStyle:function(a,b){function c(a,b){d=d.replace(new RegExp("(^|;)\\s*"+a+":([^;]+;?)","gi"),"$1");b&&(d=a+":"+n.unhtml(b)+ +";"+d)}var d=this.getAttr("style");d||(d="");if(n.isObject(a))for(var f in a)c(f,a[f]);else c(a,b);this.setAttr("style",n.trim(d))},hasClass:function(a){if(this.hasAttr("class")){var b=this.getAttr("class").split(/\s+/),c=!1;g.each(b,function(b,d){d===a&&(c=!0)});return c}return!1},addClass:function(a){var b=null,c=!1;this.hasAttr("class")?(b=this.getAttr("class"),b=b.split(/\s+/),b.forEach(function(b){b===a&&(c=!0)}),!c&&b.push(a),this.setAttr("class",b.join(" "))):this.setAttr("class",a)},removeClass:function(a){if(this.hasAttr("class")){var b= +this.getAttr("class"),b=b.replace(new RegExp("\\b"+a+"\\b","g"),"");this.setAttr("class",n.trim(b).replace(/[ ]{2,}/g," "))}},traversal:function(a){this.children&&this.children.length&&e(this,a);return this}}})();UM.htmlparser=function(a,b){function d(a,b){if(r[a.tagName]){var c=g.createElement(r[a.tagName]);a.appendChild(c);c.appendChild(g.createText(b))}else a.appendChild(g.createText(b))}function c(a,b,d){var f;if(f=v[b]){for(var e=a,t;"root"!=e.type;){if(n.isArray(f)?-1!=n.indexOf(f,e.tagName): +f==e.tagName){a=e;t=!0;break}e=e.parentNode}t||(a=c(a,n.isArray(f)?f[0]:f))}f=new g({parentNode:a,type:"element",tagName:b.toLowerCase(),children:p.$empty[b]?null:[]});if(d){for(e={};t=h.exec(d);)e[t[1].toLowerCase()]=l[t[1].toLowerCase()]?t[2]||t[3]||t[4]:n.unhtml(t[2]||t[3]||t[4]);f.attrs=e}a.children.push(f);return p.$empty[b]?a:f}var f=/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\x3e)|(?:([^\s\/>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,h=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g, +e={b:1,code:1,i:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,span:1,sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1};a=a.replace(new RegExp(k.fillChar,"g"),"");b||(a=a.replace(new RegExp("[\\r\\t\\n"+(b?"":" ")+"]*]*)>[\\r\\t\\n"+(b?"":" ")+"]*","g"),function(a,c){return c&&e[c.toLowerCase()]?a.replace(/(^[\n\r]+)|([\n\r]+$)/g,""):a.replace(new RegExp("^[\\r\\n"+(b?"":" ")+"]+"),"").replace(new RegExp("[\\r\\n"+(b?"":" ")+"]+$"),"")}));for(var l={href:1,src:1}, +g=UM.uNode,v={td:"tr",tr:["tbody","thead","tfoot"],tbody:"table",th:"tr",thead:"table",tfoot:"table",caption:"table",li:["ul","ol"],dt:"dl",dd:"dl",option:"select"},r={ol:"li",ul:"li"},q,y=0,m=0,G=new g({type:"root",children:[]}),u=G;q=f.exec(a);){y=q.index;try{if(y>m&&d(u,a.slice(m,y)),q[3])p.$cdata[u.tagName]?d(u,q[0]):u=c(u,q[3].toLowerCase(),q[4]);else if(q[1]){if("root"!=u.type)if(p.$cdata[u.tagName]&&!p.$cdata[q[1]])d(u,q[0]);else{for(y=u;"element"==u.type&&u.tagName!=q[1].toLowerCase();)if(u= +u.parentNode,"root"==u.type)throw u=y,"break";u=u.parentNode}}else q[2]&&u.children.push(new g({type:"comment",data:q[2],parentNode:u}))}catch(L){}m=f.lastIndex}m"+(m.ie?"":"
      ")+ +"

      ",f.setStart(c.body.firstChild,0).collapse(!0)))),!f.collapsed&&f.deleteContents(),1==f.startContainer.nodeType)){b=f.startContainer.childNodes[f.startOffset];var h;if(b&&k.isBlockElm(b)&&(h=b.previousSibling)&&k.isBlockElm(h)){for(f.setEnd(h,h.childNodes.length).collapse();b.firstChild;)h.appendChild(b.firstChild);k.remove(b)}}var e,l;d=0;var g;f.inFillChar()&&(b=f.startContainer,k.isFillChar(b)?(f.setStartBefore(b).collapse(!0),k.remove(b)):k.isFillChar(b,!0)&&(b.nodeValue=b.nodeValue.replace(H, +""),f.startOffset--,f.collapsed&&f.collapse(!0)));for(;b=a.firstChild;){if(d){for(e=c.document.createElement("p");b&&(3==b.nodeType||!p.$block[b.tagName]);)g=b.nextSibling,e.appendChild(b),b=g;e.firstChild&&(b=e)}f.insertNode(b);g=b.nextSibling;if(!d&&b.nodeType==k.NODE_ELEMENT&&k.isBlockElm(b)&&(e=k.findParent(b,function(a){return k.isBlockElm(a)}))&&"body"!=e.tagName.toLowerCase()&&(!p[e.tagName][b.nodeName]||b.parentNode!==e)){if(p[e.tagName][b.nodeName])for(l=b.parentNode;l!==e;)h=l,l=l.parentNode; +else h=e;k.breakParent(b,h||l);h=b.previousSibling;k.trimWhiteTextNode(h);h.childNodes.length||k.remove(h);!m.ie&&(v=b.nextSibling)&&k.isBlockElm(v)&&v.lastChild&&!k.isBr(v.lastChild)&&v.appendChild(c.document.createElement("br"));d=1}var v=b.nextSibling;if(!a.firstChild&&v&&k.isBlockElm(v)){f.setStart(v,0).collapse(!0);break}f.setEndAfter(b).collapse()}b=f.startContainer;g&&k.isBr(g)&&k.remove(g);if(k.isBlockElm(b)&&k.isEmptyNode(b))if(g=b.nextSibling)k.remove(b),1==g.nodeType&&p.$block[g.tagName]&& +f.setStart(g,0).collapse(!0).shrinkBoundary();else try{b.innerHTML=m.ie?k.fillChar:"
      "}catch(q){f.setStartBefore(b),k.remove(b)}try{if(m.ie9below&&1==f.startContainer.nodeType&&!f.startContainer.childNodes[f.startOffset]&&(h=f.startContainer.childNodes[f.startOffset-1])&&1==h.nodeType&&p.$empty[h.tagName]){var r=this.document.createTextNode(k.fillChar);f.insertNode(r).setStart(r,0).collapse(!0)}setTimeout(function(){f.select(!0)})}catch(q){}setTimeout(function(){f=c.selection.getRange();f.scrollIntoView(); +c.fireEvent("afterinserthtml")},200)}}};UM.commands.insertimage={execCommand:function(a,b){b=n.isArray(b)?b:[b];if(b.length){var d=[],c,f;f=b[0];if(1==b.length)c=''+f.alt+'","center"==f.floatStyle&&(c='

      '+c+"

      "),d.push(c);else for(var h=0;f=b[h++];)c="

      ",d.push(c);this.execCommand("insertHtml",d.join(""),!0)}}};UM.plugins.justify=function(){var a=this;g.each(["justifyleft","justifyright","justifycenter","justifyfull"],function(b,d){a.commands[d]={execCommand:function(a){return this.document.execCommand(a)},queryCommandValue:function(a){var b=this.document.queryCommandValue(a);return!0===b||"true"===b?a.replace(/justify/,""):""},queryCommandState:function(a){return this.document.queryCommandState(a)? +1:0}}})};UM.plugins.font=function(){var a=this,b={forecolor:"forecolor",backcolor:"backcolor",fontsize:"fontsize",fontfamily:"fontname"},d={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family"},c={forecolor:"color",fontsize:"size",fontfamily:"face"};a.setOpt({fontfamily:[{name:"songti",val:"\u5b8b\u4f53,SimSun"},{name:"yahei",val:"\u5fae\u8f6f\u96c5\u9ed1,Microsoft YaHei"},{name:"kaiti",val:"\u6977\u4f53,\u6977\u4f53_GB2312, SimKai"},{name:"heiti",val:"\u9ed1\u4f53, SimHei"}, +{name:"lishu",val:"\u96b6\u4e66, SimLi"},{name:"andaleMono",val:"andale mono"},{name:"arial",val:"arial, helvetica,sans-serif"},{name:"arialBlack",val:"arial black,avant garde"},{name:"comicSansMs",val:"comic sans ms"},{name:"impact",val:"impact,chicago"},{name:"timesNewRoman",val:"times new roman"},{name:"sans-serif",val:"sans-serif"}],fontsize:[10,12,16,18,24,32,48]});a.addOutputRule(function(a){n.each(a.getNodesByTagName("font"),function(a){if("font"==a.tagName){var b=[],c;for(c in a.attrs)switch(c){case "size":var d= +a.attrs[c];g.each({10:"1",12:"2",16:"3",18:"4",24:"5",32:"6",48:"7"},function(a,b){if(b==d)return d=a,!1});b.push("font-size:"+d+"px");break;case "color":b.push("color:"+a.attrs[c]);break;case "face":b.push("font-family:"+a.attrs[c]);break;case "style":b.push(a.attrs[c])}a.attrs={style:b.join(";")}}a.tagName="span";"span"==a.parentNode.tagName&&1==a.parentNode.children.length&&(g.each(a.attrs,function(b,c){a.parentNode.attrs[b]="style"==b?a.parentNode.attrs[b]+c:c}),a.parentNode.removeChild(a,!0))})}); +for(var f in b)(function(f){a.commands[f]={execCommand:function(a,c){if("transparent"!=c){var f=this.selection.getRange();if(f.collapsed){var e=g("").css(d[a],c)[0];f.insertNode(e).setStart(e,0).setCursor()}else{"fontsize"==a&&(c={10:"1",12:"2",16:"3",18:"4",24:"5",32:"6",48:"7"}[(c+"").replace(/px/,"")]);this.document.execCommand(b[a],!1,c);m.gecko&&g.each(this.$body.find("a"),function(a,b){var c=b.parentNode;if(c.lastChild===c.firstChild&&/FONT|SPAN/.test(c.tagName)){var d=c.cloneNode(!1); +d.innerHTML=b.innerHTML;g(b).html("").append(d).insertBefore(c);g(c).remove()}});if(!m.ie){var e=this.selection.getNative().getRangeAt(0).commonAncestorContainer,f=this.selection.getRange(),l=f.createBookmark(!0);g(e).find("a").each(function(a,b){var c=b.parentNode;"FONT"==c.nodeName&&(c=c.cloneNode(!1),c.innerHTML=b.innerHTML,g(b).html("").append(c))});f.moveToBookmark(l).select()}return!0}}},queryCommandValue:function(b){var f=a.selection.getStart(),e=g(f).css(d[b]);void 0===e&&(e=g(f).attr(c[b])); +return e?n.fixColor(b,e).replace(/px/,""):""},queryCommandState:function(a){return this.queryCommandValue(a)}}})(f)};UM.plugins.link=function(){this.setOpt("autourldetectinie",!1);m.ie&&!1===this.options.autourldetectinie&&this.addListener("keyup",function(a,b){var d=b.keyCode;if(13==d||32==d){var c=this.selection.getRange().startContainer;13==d?"P"==c.nodeName&&(d=c.previousSibling)&&1==d.nodeType&&(d=d.lastChild)&&"A"==d.nodeName&&!d.getAttribute("_href")&&k.remove(d,!0):32==d&&3==c.nodeType&&/^\s$/.test(c.nodeValue)&& +(c=c.previousSibling)&&"A"==c.nodeName&&!c.getAttribute("_href")&&k.remove(c,!0)}});this.addOutputRule(function(a){g.each(a.getNodesByTagName("a"),function(a,d){var b=d.getAttr("_href");/^(ftp|https?|\/|file)/.test(b)||(b="http://"+b);d.setAttr("href",b);d.setAttr("_href");""==d.getAttr("title")&&d.setAttr("title")})});this.addInputRule(function(a){g.each(a.getNodesByTagName("a"),function(a,d){d.setAttr("_href",d.getAttr("href"))})});this.commands.link={execCommand:function(a,b){var d=this.selection.getRange(); +b._href&&(b._href=n.unhtml(b._href,/[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g));b.href&&(b.href=n.unhtml(b.href,/[<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g));if(d.collapsed){var c=d.startContainer;(c=k.findParentByTagName(c,"a",!0))?(g(c).attr(b),d.selectNode(c).select()):d.insertNode(g(""+b.href+"").attr(b)[0]).select()}else this.document.execCommand("createlink",!1,"_umeditor_link"),n.each(k.getElementsByTagName(this.body,"a",function(a){return"_umeditor_link"==a.getAttribute("href")}),function(a){"_umeditor_link"== +g(a).text()&&g(a).text(b.href);k.setAttributes(a,b);d.selectNode(a).select()})},queryCommandState:function(){return this.queryCommandValue("link")?1:0},queryCommandValue:function(){var a=this.selection.getStartElementPath(),b;g.each(a,function(a,c){if("A"==c.nodeName)return b=c,!1});return b}};this.commands.unlink={execCommand:function(){this.document.execCommand("unlink")}}};UM.commands.print={execCommand:function(){var a="editor_print_"+ +new Date;g('').attr("id", +a).css({width:"0px",height:"0px",overflow:"hidden","float":"left",position:"absolute",top:"-10000px",left:"-10000px"}).appendTo(this.$container.find(".edui-dialog-container"));var b=window.open("",a,"").document;b.open();b.write("
      "+this.getContent(null,null,!0)+"
      - - - - - - -
      - - -
      - - - - - -
      -
      - -
      -
      -
      - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +后台首页
      后台首页
      \ No newline at end of file diff --git a/tpl/Admin/Nav/index.html b/tpl/Admin/Nav/index.html index 819bc78..d86f5e3 100755 --- a/tpl/Admin/Nav/index.html +++ b/tpl/Admin/Nav/index.html @@ -1,190 +1,31 @@ - - - - - 菜单管理 - bjyadmin - - - - - -
      - 首页 - > - 菜单管理 -
      - - -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - -
      排序菜单名连接操作
      - - {$v['_name']}{$v['mca']} - 添加子菜单 | - 修改 | - 删除 -
      - -
      -
      -
      - - - - +菜单管理
      排序菜单名连接操作
      {$v['_name']}{$v['mca']} 添加子菜单 | 修改 | 删除
      - - + // 修改菜单 + function edit(obj){ + var navId=$(obj).attr('navId'); + var navName=$(obj).attr('navName'); + var navMca=$(obj).attr('navMca'); + var navIco=$(obj).attr('navIco'); + $("input[name='id']").val(navId); + $("input[name='name']").val(navName); + $("input[name='mca']").val(navMca); + $("input[name='ico']").val(navIco); + $('#bjy-edit').modal('show'); + } + \ No newline at end of file diff --git a/tpl/Admin/Posts/index.html b/tpl/Admin/Posts/index.html new file mode 100644 index 0000000..a916656 --- /dev/null +++ b/tpl/Admin/Posts/index.html @@ -0,0 +1 @@ +文章列表
      文章列表
      \ No newline at end of file diff --git a/tpl/Admin/Public/base.html b/tpl/Admin/Public/base.html new file mode 100644 index 0000000..1f3a672 --- /dev/null +++ b/tpl/Admin/Public/base.html @@ -0,0 +1,26 @@ +<block name="title"></block> - bjyadmin
      \ No newline at end of file diff --git a/tpl/Admin/Rule/add_admin.html b/tpl/Admin/Rule/add_admin.html index 005f48b..278e7cf 100644 --- a/tpl/Admin/Rule/add_admin.html +++ b/tpl/Admin/Rule/add_admin.html @@ -1,85 +1 @@ - - - - - 添加管理员 - bjyadmin - - - - - - -
      - 首页 - > - 后台管理 - > - 添加管理员 -
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      管理组 - - {$v['title']} - -   - -
      姓名 - -
      手机号 - -
      邮箱 - -
      初始密码 - -
      状态 - 允许登录 - -   - 禁止登录 - -
      - -
      -
      - - - - \ No newline at end of file +添加管理员
      管理组 {$v['title']}
      姓名
      手机号
      邮箱
      初始密码
      状态 允许登录 禁止登录
      \ No newline at end of file diff --git a/tpl/Admin/Rule/admin_user_list.html b/tpl/Admin/Rule/admin_user_list.html index f53230f..1681d49 100755 --- a/tpl/Admin/Rule/admin_user_list.html +++ b/tpl/Admin/Rule/admin_user_list.html @@ -1,43 +1 @@ - - - - - 用户组添加用户 - bjyadmin - - - -
      - 首页 - > - 后台管理 - > - 管理员列表 -
      - - - - - - - - - - - - - - -
      用户名用户组操作
      {$v['username']}{$v['title']} - 修改权限或密码 -
      - - - - \ No newline at end of file +用户组添加用户
      用户名用户组操作
      {$v['username']}{$v['title']} 修改权限或密码
      \ No newline at end of file diff --git a/tpl/Admin/Rule/check_user.html b/tpl/Admin/Rule/check_user.html index 47dd03a..86aea37 100755 --- a/tpl/Admin/Rule/check_user.html +++ b/tpl/Admin/Rule/check_user.html @@ -1,51 +1 @@ - - - - - 用户组添加用户 - bjyadmin - - - -
      - 首页 - > - 用户组列表 - > - 用户组添加用户 -
      - - - - - -
      - 搜索用户名: - -
      - - -
      -
      - - - - - - - - - - - - -
      用户名操作
      {$v['username']} - - 已经是{$group_name} - - 设为{$group_name} - -
      - - - - +用户组添加用户
      搜索用户名:
      用户名操作
      {$v['username']} 已经是{$group_name} 设为{$group_name}
      \ No newline at end of file diff --git a/tpl/Admin/Rule/edit_admin.html b/tpl/Admin/Rule/edit_admin.html index 5237188..2e713e8 100644 --- a/tpl/Admin/Rule/edit_admin.html +++ b/tpl/Admin/Rule/edit_admin.html @@ -1,86 +1 @@ - - - - - 修改管理员 - bjyadmin - - - - - - -
      - 首页 - > - 后台管理 - > - 修改管理员 -
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      管理组 - - {$v['title']} - checked="checked" > -   - -
      姓名 - -
      手机号 - -
      邮箱 - -
      初始密码 - 如不改密码;留空即可 -
      状态 - 允许登录 - checked="checked" > -   - 禁止登录 - checked="checked" > -
      - -
      -
      - - - - \ No newline at end of file +修改管理员
      管理组 {$v['title']} checked="checked" >  
      姓名
      手机号
      邮箱
      初始密码 如不改密码;留空即可
      状态 允许登录 checked="checked" >   禁止登录 checked="checked" >
      \ No newline at end of file diff --git a/tpl/Admin/Rule/group.html b/tpl/Admin/Rule/group.html index 0819cbe..7dff658 100755 --- a/tpl/Admin/Rule/group.html +++ b/tpl/Admin/Rule/group.html @@ -1,132 +1,16 @@ - - - - - 用户组管理 - bjyadmin - - - -
      - 首页 - > - 用户组管理 -
      - -
      -
      - - - - - - - - - - - -
      用户组名操作
      {$v['title']} - 修改 | - 删除 | - 分配权限 | - 添加成员 -
      -
      -
      +用户组管理 - - + // 修改菜单 + function edit(obj){ + var ruleId=$(obj).attr('ruleId'); + var ruletitle=$(obj).attr('ruletitle'); + $("input[name='id']").val(ruleId); + $("input[name='title']").val(ruletitle); + $('#bjy-edit').modal('show'); + } + \ No newline at end of file diff --git a/tpl/Admin/Rule/index.html b/tpl/Admin/Rule/index.html index ad3ea42..465eada 100755 --- a/tpl/Admin/Rule/index.html +++ b/tpl/Admin/Rule/index.html @@ -1,160 +1,28 @@ - - - - - 权限管理 - bjyadmin - - - - -
      - 首页 - > - 权限管理 -
      - - -
      -
      - - - - - - - - - - - - - -
      权限名权限操作
      {$v['_name']}{$v['name']} - 添加子权限 | - 修改 | - 删除 -
      -
      -
      +权限管理
      权限名权限操作
      {$v['_name']}{$v['name']} 添加子权限 | 修改 | 删除
      - - + // 修改菜单 + function edit(obj){ + var ruleId=$(obj).attr('ruleId'); + var ruletitle=$(obj).attr('ruletitle'); + var ruleName=$(obj).attr('ruleName'); + $("input[name='id']").val(ruleId); + $("input[name='title']").val(ruletitle); + $("input[name='name']").val(ruleName); + $('#bjy-edit').modal('show'); + } + \ No newline at end of file diff --git a/tpl/Admin/Rule/rule_group.html b/tpl/Admin/Rule/rule_group.html index 90f6729..a9bdc03 100755 --- a/tpl/Admin/Rule/rule_group.html +++ b/tpl/Admin/Rule/rule_group.html @@ -1,79 +1,6 @@ - - - - - 分配权限 - bjyadmin - - - -
      - 首页 - > - 用户组列表 - > - 分配权限 -
      -

      {$group_data['title']}分配权限

      -
      - - - - - - - - - - - - - - - - - - - -
      - -
      - - - - - - - - -
      - - - - - - - -
      -
      -
      - -
      -
      - - - - +分配权限

      {$group_data['title']}分配权限

      \ No newline at end of file diff --git a/tpl/Admin/User/index.html b/tpl/Admin/User/index.html index cace156..e69de29 100755 --- a/tpl/Admin/User/index.html +++ b/tpl/Admin/User/index.html @@ -1,113 +0,0 @@ - - - - - 用户列表 - bjyadmin - - - - -
      - 首页 - > - 用户列表列表 -
      -
      - - - - - - -
      搜索 - - - -
      -
      - - - - - - - - - - - - - - - - - - - - -
      用户名邮箱手机号状态注册时间操作
      {$v['username']}{$v['email']}{$v['phone']} - - 禁用 - 正常 - 未验证 - - {$v['register_time']} - 发放优惠券 -
      -
      {$page}
      - - - - - - - - diff --git a/tpl/Api/Weixinpay/pay.html b/tpl/Api/Weixinpay/pay.html index 459eb55..68fee8d 100644 --- a/tpl/Api/Weixinpay/pay.html +++ b/tpl/Api/Weixinpay/pay.html @@ -1,25 +1,15 @@ - - - - - Title - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tpl/Home/Index/index.html b/tpl/Home/Index/index.html index 2f4f6df..94eb63c 100755 --- a/tpl/Home/Index/index.html +++ b/tpl/Home/Index/index.html @@ -1,11 +1,4 @@ - - - - - 简易登录界面 - bjyadmin - - - - - -

      - 当前状态:{$data} -

      -
      -

      - thinkphp整合系列之rbac的升级版auth权限管理系统demo -

      - 超级管理员登录: -
      - 用户名: - 密码: - -
      -
      - 文章管理员登录: -
      - 用户名: - 密码: - -
      -
      - 退出登录 -
      - - -
      -

      - thinkphp整合系列之phpqrcode生成二维码 -

      -
      - 输入连接:http:// - -
      -
      - - - - - -
      -

      - thinkphp整合系列之tcpdf生成pdf文件 -

      -
      - 输入内容: - -
      -
      - -
      -

      - thinkphp整合系列之融云即时通讯在线聊天 -

      - 请使用2个不同的浏览器分别打开着两个链接即可聊天:用户1用户2 -
      - -
      -

      - thinkphp整合系列之phpexcel生成生成excel文件 -

      -
      - - - - - - - - - - - - - - - - -
      - - - - - -
      - - - - - -
      - - - - - -
      - -
      -
      - -
      -

      - 生成csv格式表格 -

      -
      - - - - - - - - - - - - - - - - -
      - - - - - -
      - - - - - -
      - - - - - -
      - -
      -
      - - - - - -
      -

      - thinkphp整合系列之极验滑动验证码 -

      -
      - 账号: - 密码: - - -
      -
      -
      - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tpl/Home/Index/jsclone.html b/tpl/Home/Index/jsclone.html new file mode 100644 index 0000000..58054b4 --- /dev/null +++ b/tpl/Home/Index/jsclone.html @@ -0,0 +1,99 @@ +jsclone示例 - 白俊遥博客
      日期1:
      日期2:
      性别:
      ajax搜索:
      \ No newline at end of file diff --git a/tpl/Home/Index/user1.html b/tpl/Home/Index/user1.html index 75987d8..2505342 100644 --- a/tpl/Home/Index/user1.html +++ b/tpl/Home/Index/user1.html @@ -1,90 +1,4 @@ - - - - - 用户1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tpl/Home/Index/user2.html b/tpl/Home/Index/user2.html index e03813f..c7f5329 100644 --- a/tpl/Home/Index/user2.html +++ b/tpl/Home/Index/user2.html @@ -1,90 +1,4 @@ - - - - - 用户2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tpl/Home/Index/webuploader.html b/tpl/Home/Index/webuploader.html index 0437b9d..8929cec 100644 --- a/tpl/Home/Index/webuploader.html +++ b/tpl/Home/Index/webuploader.html @@ -1,18 +1 @@ - - - - - thinkphp整合系列之webuploader异步预览上传 - - - - -
      - - - - - - - - \ No newline at end of file +thinkphp整合系列之webuploader异步预览上传
      自定义附加字段: \ No newline at end of file diff --git a/tpl/Home/Vue/web_page.html b/tpl/Home/Vue/web_page.html new file mode 100644 index 0000000..3ea426f --- /dev/null +++ b/tpl/Home/Vue/web_page.html @@ -0,0 +1,94 @@ +Vue 配合thinkphp分页示例

      {{item.name}}

      \ No newline at end of file diff --git a/tpl/Public/css/base.css b/tpl/Public/css/base.css old mode 100755 new mode 100644 index b8882cc..08d2b3d --- a/tpl/Public/css/base.css +++ b/tpl/Public/css/base.css @@ -1,517 +1 @@ -@charset "utf-8"; -/* CSS Document */ -/* 清除内外边距 */ -body, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -p, -blockquote, -dl, -dt, -dd, -ul, -ol, -li, -pre, -fieldset, -lengend, -button, -input, -textarea, -th, -td { - /* table elements 表格元素 */ - margin: 0; - padding: 0; -} -/* 设置默认字体 */ -body, -button, -input, -select, -textarea { - /* for ie */ - font: 12px/1 "微软雅黑", Arial, Tahoma, Helvetica, "\5b8b\4f53", sans-serif; - /* 用 ascii 字符表示,使得在任何编码下都无问题 */ -} -body { - position: relative; -} -address, -cite, -dfn, -em, -var, -i { - font-style: normal; -} -/* 将斜体扶正 */ -/* 重置列表元素 */ -ul, -ol { - list-style: none; -} -/* 重置文本格式元素 */ -a { - text-decoration: none; -} -a:hover { - text-decoration: underline; - transition: all 0.5s ease 0s; - color: #0B7DF2; -} -/* 去除a标签点击后的虚线框 */ -a:focus { - outline: none; - text-decoration: none; - -moz-outline: none; -} -/* 重置表单元素 */ -button, -input, -select, -textarea { - font-size: 100%; - /* 使得表单元素在 ie 下能继承字体大小 */ -} -input { - outline: none; -} -/* 重置表格元素 */ -table { - border-collapse: collapse; - border-spacing: 0; -} -/* 重置 hr */ -hr { - border: none; - height: 1px; -} -/*设置textarea固定大小*/ -textarea { - resize: none; -} -img { - vertical-align: middle; -} -* { - box-sizing: border-box; -} -.xb-show { - display: block; -} -.xb-hide { - display: none; -} -.xb-hidden { - display: none; -} -.xb-out { - display: table; - width: 100%; -} -.xb-inside { - margin: 0 auto; - width: 1100px; - display: table; -} -.xb-middle-out { - display: table; - width: 100%; - height: 100%; - text-align: center; -} -.xb-middle-inside { - display: table-cell; - vertical-align: middle; -} -.xb-h-5 { - width: 100%; - height: 5px; -} -.xb-h-10 { - width: 100%; - height: 10px; -} -.xb-h-15 { - width: 100%; - height: 15px; -} -.xb-h-20 { - width: 100%; - height: 20px; -} -.xb-h-25 { - width: 100%; - height: 25px; -} -.xb-h-30 { - width: 100%; - height: 30px; -} -.xb-h-35 { - width: 100%; - height: 35px; -} -.xb-h-40 { - width: 100%; - height: 40px; -} -.xb-h-45 { - width: 100%; - height: 45px; -} -.xb-h-50 { - width: 100%; - height: 50px; -} -.xb-h-55 { - width: 100%; - height: 55px; -} -.xb-h-60 { - width: 100%; - height: 60px; -} -.xb-h-65 { - width: 100%; - height: 65px; -} -.xb-h-70 { - width: 100%; - height: 70px; -} -.xb-h-100 { - width: 100%; - height: 100px; -} -.bjy-admin-nav { - width: 100%; - height: 30px; - line-height: 30px; - font-size: 14px; -} -.bjy-public-jump { - margin: 0 auto; - padding: 50px 100px; - width: 455px; - height: 195px; - border: 2px solid #00CCC0; - border-radius: 4px; - text-align: center; -} -.bjy-public-jump .bjy-pj-word { - width: 100%; - height: 30px; - line-height: 30px; - font-size: 16px; -} -.bjy-public-jump .bjy-pj-word b { - color: #00CCC0; -} -.bjy-emoji-box { - display: none; -} -.bjy-emoji-ico { - background: none; - border: none; -} -.bjy-emoji-imgs img { - padding: 2px; -} -.bjy-show-box { - overflow-y: auto; -} -.bjy-emoji-out3 .bjy-show-out { - width: 490px; - height: 115px; - background: #fff; - border-bottom: 1px solid #E1E1E1; - z-index: 1; - position: relative; -} -.bjy-emoji-out3 .bjy-show-out .bjy-show-box { - width: 490px; - height: 115px; - padding: 10px; - overflow-y: auto; -} -.bjy-emoji-out3 .bjy-show-out .bjy-emoji-ico { - width: 25px; - height: 25px; - background: url(http://xueba17.oss-cn-beijing.aliyuncs.com/tpl/default/User/Public/images/lqk-smile.png); - cursor: pointer; - position: absolute; - left: 15px; - top: 3px; - z-index: 2; -} -.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box { - padding: 0 5px 5px 5px; - width: 480px; - background: #fff; - border: 1px solid #eee; - box-shadow: 2px 2px 6px #8E99A9; - position: absolute; - left: 0; - top: 33px; - z-index: 1; -} -.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box .bjy-e-triangle { - position: absolute; - left: 7px; - top: -30px; -} -.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box img { - margin: 2px; - cursor: pointer; -} -#bjy-chat-modal .modal-dialog { - width: 710px; - height: 570px; - margin-top: 20px; -} -#bjy-chat-modal .modal-dialog .modal-content { - width: 710px; - height: 570px; - border-radius: 0; - border: none; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top { - width: 710px; - height: 45px; - background: #00ccc0; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-myinfo { - padding-left: 85px; - width: 220px; - height: 45px; - line-height: 45px; - font-weight: 600; - font-size: 14px; - float: left; - position: relative; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-myinfo .bjy-t-avatar { - width: 55px; - height: 55px; - border-radius: 50%; - position: absolute; - left: 20px; - top: -20px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title { - width: 490px; - height: 45px; - line-height: 45px; - text-align: center; - float: left; - font-size: 14px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title .bjy-tt-name { - font-weight: 600; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title .bjy-tt-close { - margin: 10px; - width: 20px; - height: 20px; - background: url('http://xueba17.oss-cn-beijing.aliyuncs.com/tpl/default/User/Public/images/f-x.png') no-repeat; - float: right; - cursor: pointer; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat { - width: 710px; - height: 525px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list { - width: 220px; - height: 525px; - float: left; - background: url(/Public/statics/rongcloud/images/bg_left.min.png); - overflow-y: auto; - overflow-x: hidden; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one { - padding: 15px 5px 15px 10px; - width: 220px; - height: 65px; - border-bottom: 2px solid #C3E8F0; - cursor: pointer; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar { - margin-right: 10px; - width: 35px; - height: 35px; - float: left; - position: relative; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-floa-img { - width: 35px; - height: 35px; - border-radius: 3px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-floa-approve { - width: 15px; - height: 15px; - position: absolute; - right: -2px; - bottom: -2px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-flo-count { - width: 15px; - height: 15px; - line-height: 15px; - text-align: center; - background: #ff4f5f; - border-radius: 50%; - color: #fff; - position: absolute; - right: -2px; - top: -2px; - display: none; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .xb-show { - display: block; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info { - width: 160px; - height: 35px; - font-size: 14px; - float: left; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-username { - width: 160px; - height: 15px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-username .bjy-flou-time { - float: right; - font-size: 12px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-school { - margin-top: 5px; - width: 160px; - height: 15px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-flo-checked { - background: #fff; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box { - width: 490px; - height: 525px; - float: left; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history { - padding: 10px; - width: 490px; - height: 325px; - overflow-y: auto; - overflow-x: hidden; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one { - margin-bottom: 20px; - padding: 0 50px; - width: 470px; - position: relative; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar { - width: 50px; - height: 50px; - position: absolute; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-img { - width: 35px; - height: 35px; - border-radius: 3px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-approve { - width: 15px; - height: 15px; - position: absolute; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-triangle { - width: 10px; - height: 20px; - position: absolute; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-content { - width: 370px; - line-height: 20px; - padding: 10px; - border-radius: 5px; - font-size: 14px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar { - left: 0px; - top: 0; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar .bjy-cbhla-approve { - left: 22px; - top: 22px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar .bjy-cbhla-triangle { - left: 44px; - top: 10px; - background: url('/Public/statics/rongcloud/images/triangle-left-bjy.png') no-repeat; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-content { - background: #e6ecff; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar { - right: -10px; - top: 0; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar .bjy-cbhla-approve { - right: 37px; - top: 22px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar .bjy-cbhla-triangle { - right: 50px; - top: 10px; - background: url('/Public/statics/rongcloud/images/triangle-right-bjy.png') no-repeat; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-content { - background: #d7efff; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-middle { - width: 490px; - height: 30px; - background: #eee; - position: relative; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-sendbox { - width: 490px; - height: 115px; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-sendbox .bjy-cbs-content { - padding: 10px; - width: 490px; - line-height: 20px; - font-size: 14px; - border: none; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle { - padding-left: 310px; - padding-bottom: 25px; - width: 490px; - height: 30px; - overflow: hidden; -} -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle .bjy-cbh-close, -#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle .bjy-cbh-send { - margin-left: 10px; - width: 70px; - height: 30px; - line-height: 30px; - text-align: center; - background: #00ccc0; - font-size: 14px; - color: #000; - border-radius: 5px; - float: left; - cursor: pointer; -} +@charset "UTF-8";a,a:focus{text-decoration:none}.xb-middle-inside,img{vertical-align:middle}blockquote,body,button,dd,dl,dt,fieldset,h1,h2,h3,h4,h5,h6,hr,input,lengend,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0}body,button,input,select,textarea{font:12px/1 "微软雅黑",Arial,Tahoma,Helvetica,"\5b8b\4f53",sans-serif}body{position:relative}address,cite,dfn,em,i,var{font-style:normal}ol,ul{list-style:none}a:hover{text-decoration:underline;transition:all .5s ease 0s;color:#0B7DF2}a:focus{outline:0;-moz-outline:none}button,input,select,textarea{font-size:100%}input{outline:0}table{border-collapse:collapse;border-spacing:0}hr{border:none;height:1px}textarea{resize:none}*{box-sizing:border-box}.xb-show{display:block}.xb-hidden,.xb-hide{display:none}.xb-out{display:table;width:100%}.xb-inside{margin:0 auto;width:1100px;display:table}.bjy-admin-nav,.xb-h-10,.xb-h-100,.xb-h-15,.xb-h-20,.xb-h-25,.xb-h-30,.xb-h-35,.xb-h-45,.xb-h-5,.xb-h-50,.xb-h-55,.xb-h-60,.xb-h-65,.xb-h-70,.xb-middle-out{width:100%}.xb-middle-out{display:table;height:100%;text-align:center}.xb-middle-inside{display:table-cell}.xb-h-5{height:5px}.xb-h-10{height:10px}.xb-h-15{height:15px}.xb-h-20{height:20px}.xb-h-25{height:25px}.xb-h-30{height:30px}.xb-h-35{height:35px}.xb-h-40{width:100%;height:40px}.xb-h-45{height:45px}.xb-h-50{height:50px}.xb-h-55{height:55px}.xb-h-60{height:60px}.xb-h-65{height:65px}.xb-h-70{height:70px}.xb-h-100{height:100px}.bjy-admin-nav{height:30px;line-height:30px;font-size:14px}.bjy-public-jump{margin:0 auto;padding:50px 100px;width:455px;height:195px;border:2px solid #00CCC0;border-radius:4px;text-align:center}.bjy-public-jump .bjy-pj-word{width:100%;height:30px;line-height:30px;font-size:16px}.bjy-public-jump .bjy-pj-word b{color:#00CCC0}.bjy-emoji-box{display:none}.bjy-emoji-ico{background:0 0;border:none}.bjy-emoji-imgs img{padding:2px}.bjy-show-box{overflow-y:auto}.bjy-emoji-out3 .bjy-show-out{width:490px;height:115px;background:#fff;border-bottom:1px solid #E1E1E1;z-index:1;position:relative}.bjy-emoji-out3 .bjy-show-out .bjy-show-box{width:490px;height:115px;padding:10px;overflow-y:auto}.bjy-emoji-out3 .bjy-show-out .bjy-emoji-ico{width:25px;height:25px;background:url(/tpl/default/User/Public/images/lqk-smile.png);cursor:pointer;position:absolute;left:15px;top:3px;z-index:2}.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box{padding:0 5px 5px;width:480px;background:#fff;border:1px solid #eee;box-shadow:2px 2px 6px #8E99A9;position:absolute;left:0;top:33px;z-index:1}.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box .bjy-e-triangle{position:absolute;left:7px;top:-30px}.bjy-emoji-out3 .bjy-show-out .bjy-emoji-box img{margin:2px;cursor:pointer}#bjy-chat-modal .modal-dialog{width:710px;height:570px;margin-top:20px}#bjy-chat-modal .modal-dialog .modal-content{width:710px;height:570px;border-radius:0;border:none}#bjy-chat-modal .modal-dialog .modal-content .bjy-top{width:710px;height:45px;background:#00ccc0}#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-myinfo{padding-left:85px;width:220px;height:45px;line-height:45px;font-weight:600;font-size:14px;float:left;position:relative}#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-myinfo .bjy-t-avatar{width:55px;height:55px;border-radius:50%;position:absolute;left:20px;top:-20px}#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title{width:490px;height:45px;line-height:45px;text-align:center;float:left;font-size:14px}#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title .bjy-tt-name{font-weight:600}#bjy-chat-modal .modal-dialog .modal-content .bjy-top .bjy-t-title .bjy-tt-close{margin:10px;width:20px;height:20px;background:url(/tpl/default/User/Public/images/f-x.png) no-repeat;float:right;cursor:pointer}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat{width:710px;height:525px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list{width:220px;height:525px;float:left;background:url(/Public/statics/rongcloud/images/bg_left.min.png);overflow-y:auto;overflow-x:hidden}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one{padding:15px 5px 15px 10px;width:220px;height:65px;border-bottom:2px solid #C3E8F0;cursor:pointer}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar{margin-right:10px;width:35px;height:35px;float:left;position:relative}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-floa-img{width:35px;height:35px;border-radius:3px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-floa-approve{width:15px;height:15px;position:absolute;right:-2px;bottom:-2px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .bjy-flo-count{width:15px;height:15px;line-height:15px;text-align:center;background:#ff4f5f;border-radius:50%;color:#fff;position:absolute;right:-2px;top:-2px;display:none}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-avatar .xb-show{display:block}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info{width:160px;height:35px;font-size:14px;float:left}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-username{width:160px;height:15px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-username .bjy-flou-time{float:right;font-size:12px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-fl-one .bjy-flo-info .bjy-flo-school{margin-top:5px;width:160px;height:15px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-friend-list .bjy-flo-checked{background:#fff}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box{width:490px;height:525px;float:left}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history{padding:10px;width:490px;height:325px;overflow-y:auto;overflow-x:hidden}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one{margin-bottom:20px;padding:0 50px;width:470px;position:relative}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar{width:50px;height:50px;position:absolute}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-img{width:35px;height:35px;border-radius:3px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-approve{width:15px;height:15px;position:absolute}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-avatar .bjy-cbhla-triangle{width:10px;height:20px;position:absolute}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbh-one .bjy-cbhl-content{width:370px;line-height:20px;padding:10px;border-radius:5px;font-size:14px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar{left:0;top:0}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar .bjy-cbhla-approve{left:22px;top:22px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-avatar .bjy-cbhla-triangle{left:44px;top:10px;background:url(/Public/statics/rongcloud/images/triangle-left-bjy.png) no-repeat}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-left .bjy-cbhl-content{background:#e6ecff}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar{right:-10px;top:0}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar .bjy-cbhla-approve{right:37px;top:22px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-avatar .bjy-cbhla-triangle{right:50px;top:10px;background:url(/Public/statics/rongcloud/images/triangle-right-bjy.png) no-repeat}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-history .bjy-cbhla-right .bjy-cbhl-content{background:#d7efff}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-middle{width:490px;height:30px;background:#eee;position:relative}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-sendbox{width:490px;height:115px}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-sendbox .bjy-cbs-content{padding:10px;width:490px;line-height:20px;font-size:14px;border:none}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle{padding-left:310px;padding-bottom:25px;width:490px;height:30px;overflow:hidden}#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle .bjy-cbh-close,#bjy-chat-modal .modal-dialog .modal-content .bjy-chat .bjy-chat-box .bjy-cb-handle .bjy-cbh-send{margin-left:10px;width:70px;height:30px;line-height:30px;text-align:center;background:#00ccc0;font-size:14px;color:#000;border-radius:5px;float:left;cursor:pointer} \ No newline at end of file diff --git a/tpl/Public/dispatch_jump.tpl b/tpl/Public/dispatch_jump.tpl index 15dbb41..458f31d 100755 --- a/tpl/Public/dispatch_jump.tpl +++ b/tpl/Public/dispatch_jump.tpl @@ -1,26 +1,4 @@ - - - - - 跳转提示 - bjyadmin - - - - -
      -
      -
        -
      • - {$message}{$error} -
      • -
      • - 页面将在{$waitSecond}秒后跳转 -
      • -
      -
      - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/tpl/Public/images/lqk-mark.png b/tpl/Public/images/lqk-mark.png index f60dd10..e40a9fe 100755 Binary files a/tpl/Public/images/lqk-mark.png and b/tpl/Public/images/lqk-mark.png differ diff --git a/tpl/Public/images/lqk-r-dui.png b/tpl/Public/images/lqk-r-dui.png index 363c087..b56aa40 100755 Binary files a/tpl/Public/images/lqk-r-dui.png and b/tpl/Public/images/lqk-r-dui.png differ diff --git a/tpl/Public/images/lqk-tip.png b/tpl/Public/images/lqk-tip.png index 3e4effc..e06bdf8 100755 Binary files a/tpl/Public/images/lqk-tip.png and b/tpl/Public/images/lqk-tip.png differ diff --git a/tpl/Public/images/tc.png b/tpl/Public/images/tc.png index 5eeecdb..a0e98c6 100755 Binary files a/tpl/Public/images/tc.png and b/tpl/Public/images/tc.png differ diff --git a/tpl/Public/js/base.js b/tpl/Public/js/base.js index a1ad6ec..bd163eb 100755 --- a/tpl/Public/js/base.js +++ b/tpl/Public/js/base.js @@ -1,136 +1 @@ - -/** - * 通用跳转函数 - * @param String url 跳转的目标url - * @param Number second 多少秒后跳转 - * @param String message 提示信息 - */ -function xbGoTo(url,second,message){ - var url=arguments[0] ? arguments[0] : '/', - second=arguments[1] ? arguments[1] : 0, - message=arguments[2] ? arguments[2] : ''; - // 转换为毫秒 为了处理0毫秒的问题所以+1 - second=second*1000+1; - // 设置提示信息 - if (message!='') { - xbAlert(message); - } - // 设置跳转时间 - setTimeout(function(){ - location.href=url; - },second) -} - -/** - * 刷新本页 - * @param {Number} second 多少秒后刷新 默认是0立即刷新 - * @param {Boolean} history 默认为 false刷新后停留在当前位置 true 刷新后到顶部 - */ -function xbRefresh(second,history){ - var second=arguments[0] ? arguments[0] : 0, - history=arguments[1] ? arguments[1] : false; - // 转换为毫秒 为了处理0毫秒的问题所以+1 - second=second*1000+1; - setTimeout(function(){ - if (history) { - location.reload(true); - }else{ - console.log(history); - location.reload(false); - } - },second) -} - -/** - * 检测是否登录 - * @return {boolean} 登录:true 未登录:false; - */ -function xbCheckLogin(){ - var isLogin=false; - $.ajaxSetup({ - async : false - }); - // ajax检测是否登录 - $.get(xbCheckLoginUrl, function(data) { - if (data['error_code']==0) { - isLogin=true; - } - },'json'); - return isLogin; -} - -/** - * 如果登录直接访问连接;未登录则弹出登录框 - * @param {string} url 连接 - */ -function xbNeedLogin(url){ - if(xbCheckLogin()){ - xbGoTo(url); - }else{ - xbAlert('您需要登录'); - // 设置cookie - xbSetCookie('thisUrl',url); - // 显示登录框 - xbShowLogin() - } -} - -/** - * 需要确认的跳转 - * @param {string} url 跳转的连接 - * @param {string} word 确认的提示语 默认是 确认操作? - */ -function xbNeedConfirm(url,word){ - var word=arguments[1] ? arguments[1] : '确认操作'; - if (confirm(word)) { - location.href=url; - } -} - -/** - * 获取form中的数据并转为json对象格式 - * @param {object} obj form对象 - * @return {json} json对象 - */ -function xbGetForm(obj){ - var formData=$(obj).serializeArray(); - var formArray={}; - $.each(formData, function(index, val) { - formArray[val['name']]=val['value']; - }); - return formArray; -} - -/** - * 设置cookie - * @param {string} name 键名 - * @param {string} value 键值 - * @param {integer} days cookie周期 - */ -function xbSetCookie(name,value,days) { - if (days) { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - }else{ - var expires = ""; - } - document.cookie = name+"="+value+expires+"; path=/"; -} - -// 获取cookie -function xbGetCookie(name) { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; -} - -// 删除cookie -function xbDeleteCookie(name) { - xbSetCookie(name,"",-1); -} +"use strict";function xbGoTo(e,o,n){var e=arguments[0]?arguments[0]:"/",o=arguments[1]?arguments[1]:0,n=arguments[2]?arguments[2]:"";o=1e3*o+1,""!=n&&xbAlert(n),setTimeout(function(){location.href=e},o)}function xbRefresh(e,o){var e=arguments[0]?arguments[0]:0,o=!!arguments[1]&&arguments[1];e=1e3*e+1,setTimeout(function(){o?location.reload(!0):(console.log(o),location.reload(!1))},e)}function xbCheckLogin(){var e=!1;return $.ajaxSetup({async:!1}),$.get(xbCheckLoginUrl,function(o){0==o.error_code&&(e=!0)},"json"),e}function xbNeedLogin(e){xbCheckLogin()?xbGoTo(e):(xbAlert("您需要登录"),xbSetCookie("thisUrl",e),xbShowLogin())}function xbNeedConfirm(e,o){var o=arguments[1]?arguments[1]:"确认操作";confirm(o)&&(location.href=e)}function xbGetForm(e){var o=$(e).serializeArray(),n={};return $.each(o,function(e,o){n[o.name]=o.value}),n}function xbSetCookie(e,o,n){if(n){var t=new Date;t.setTime(t.getTime()+24*n*60*60*1e3);var i="; expires="+t.toGMTString()}else var i="";document.cookie=e+"="+o+i+"; path=/"}function xbGetCookie(e){for(var o=e+"=",n=document.cookie.split(";"),t=0;t + +后台首页 + + + +
      +
      + 后台首页 +
      +
      +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/Index/welcome.html b/tpl_src/Admin/Index/welcome.html new file mode 100644 index 0000000..e69de29 diff --git a/tpl_src/Admin/Nav/index.html b/tpl_src/Admin/Nav/index.html new file mode 100644 index 0000000..1a81d49 --- /dev/null +++ b/tpl_src/Admin/Nav/index.html @@ -0,0 +1,190 @@ + + +菜单管理 + + + +
      +
      + + +
      +
      + + + + + + + + + + + + + + + + + + + + + +
      排序菜单名连接操作
      + + {$v['_name']}{$v['mca']} + 添加子菜单 | + 修改 | + 删除 +
      + +
      +
      +
      +
      +
      + + + + + + + + +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/Posts/index.html b/tpl_src/Admin/Posts/index.html new file mode 100644 index 0000000..53f5eff --- /dev/null +++ b/tpl_src/Admin/Posts/index.html @@ -0,0 +1,19 @@ + + +文章列表 + + + +
      +
      + 文章列表 +
      +
      +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/Public/base.html b/tpl_src/Admin/Public/base.html new file mode 100644 index 0000000..cc406e1 --- /dev/null +++ b/tpl_src/Admin/Public/base.html @@ -0,0 +1,220 @@ + + + + + <block name="title"></block> - bjyadmin + + + + + + + + + + + + + + + + + + +
      + + +
      + + + + + +
      +
      + +
      +
      +
      + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tpl_src/Admin/Rule/add_admin.html b/tpl_src/Admin/Rule/add_admin.html new file mode 100644 index 0000000..04bffc5 --- /dev/null +++ b/tpl_src/Admin/Rule/add_admin.html @@ -0,0 +1,89 @@ + + +添加管理员 + + + + + + +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      管理组 + + {$v['title']} + +   + +
      姓名 + +
      手机号 + +
      邮箱 + +
      初始密码 + +
      状态 + 允许登录 + +   + 禁止登录 + +
      + +
      +
      +
      +
      +
      +
      + + + diff --git a/tpl_src/Admin/Rule/admin_user_list.html b/tpl_src/Admin/Rule/admin_user_list.html new file mode 100644 index 0000000..c0c47e1 --- /dev/null +++ b/tpl_src/Admin/Rule/admin_user_list.html @@ -0,0 +1,45 @@ + + +用户组添加用户 + + + +
      +
      + +
      + + + + + + + + + + + + + +
      用户名用户组操作
      {$v['username']}{$v['title']} + 修改权限或密码 +
      +
      +
      +
      +
      diff --git a/tpl_src/Admin/Rule/check_user.html b/tpl_src/Admin/Rule/check_user.html new file mode 100644 index 0000000..1198a33 --- /dev/null +++ b/tpl_src/Admin/Rule/check_user.html @@ -0,0 +1,48 @@ + + +用户组添加用户 + + + +
      +
      + + + + + +
      + 搜索用户名: + +
      + + +
      +
      + + + + + + + + + + + +
      用户名操作
      {$v['username']} + + 已经是{$group_name} + + 设为{$group_name} + +
      +
      +
      +
      diff --git a/tpl_src/Admin/Rule/edit_admin.html b/tpl_src/Admin/Rule/edit_admin.html new file mode 100644 index 0000000..bf3fa6d --- /dev/null +++ b/tpl_src/Admin/Rule/edit_admin.html @@ -0,0 +1,90 @@ + + +修改管理员 + + + + + + +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      管理组 + + {$v['title']} + checked="checked" > +   + +
      姓名 + +
      手机号 + +
      邮箱 + +
      初始密码 + 如不改密码;留空即可 +
      状态 + 允许登录 + checked="checked" > +   + 禁止登录 + checked="checked" > +
      + +
      +
      +
      +
      +
      +
      + + + diff --git a/tpl_src/Admin/Rule/group.html b/tpl_src/Admin/Rule/group.html new file mode 100644 index 0000000..45114a4 --- /dev/null +++ b/tpl_src/Admin/Rule/group.html @@ -0,0 +1,132 @@ + + +用户组管理 + + + +
      +
      + +
      + + + + + + + + + + + +
      用户组名操作
      {$v['title']} + 修改 | + 删除 | + 分配权限 | + 添加成员 +
      +
      +
      +
      + + + + + + + +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/Rule/index.html b/tpl_src/Admin/Rule/index.html new file mode 100644 index 0000000..5342c23 --- /dev/null +++ b/tpl_src/Admin/Rule/index.html @@ -0,0 +1,157 @@ + + +权限管理 + + + +
      +
      + +
      + + + + + + + + + + + + + +
      权限名权限操作
      {$v['_name']}{$v['name']} + 添加子权限 | + 修改 | + 删除 +
      +
      +
      +
      + + + + + + + +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/Rule/rule_group.html b/tpl_src/Admin/Rule/rule_group.html new file mode 100644 index 0000000..b9a475a --- /dev/null +++ b/tpl_src/Admin/Rule/rule_group.html @@ -0,0 +1,92 @@ + + +分配权限 + + + +
      +
      + +
      +

      {$group_data['title']}分配权限

      +
      + + + + + + + + + + + + + + + + + + + +
      + +
      + + + + + + + + +
      + + + + + + + +
      +
      +
      + +
      +
      +
      +
      +
      +
      + + + \ No newline at end of file diff --git a/tpl_src/Admin/User/index.html b/tpl_src/Admin/User/index.html new file mode 100644 index 0000000..e69de29 diff --git a/tpl_src/Api/Weixinpay/pay.html b/tpl_src/Api/Weixinpay/pay.html new file mode 100644 index 0000000..3995cba --- /dev/null +++ b/tpl_src/Api/Weixinpay/pay.html @@ -0,0 +1,42 @@ + + + + + Title + + + + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Index/index.html b/tpl_src/Home/Index/index.html new file mode 100644 index 0000000..d2477bb --- /dev/null +++ b/tpl_src/Home/Index/index.html @@ -0,0 +1,269 @@ + + + + + 简易登录界面 - bjyadmin + + + + + +

      + 当前状态:{$data} +

      +
      +

      + thinkphp整合系列之rbac的升级版auth权限管理系统demo +

      + 超级管理员登录: +
      + 用户名: + 密码: + +
      +
      + 文章管理员登录: +
      + 用户名: + 密码: + +
      +
      + 退出登录 +
      + + +
      +

      + thinkphp整合系列之phpqrcode生成二维码 +

      +
      + 输入连接:http:// + +
      +
      + + + + + +
      +

      + thinkphp整合系列之tcpdf生成pdf文件 +

      +
      + 输入内容: + +
      +
      + +
      +

      + thinkphp整合系列之融云即时通讯在线聊天 +

      + 请使用2个不同的浏览器分别打开着两个链接即可聊天:用户1用户2 +
      + +
      +

      + thinkphp整合系列之phpexcel生成生成excel文件 +

      +
      + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + +
      + + + + + +
      + +
      +
      + +
      +

      + 生成csv格式表格 +

      +
      + + + + + + + + + + + + + + + + +
      + + + + + +
      + + + + + +
      + + + + + +
      + +
      +
      + + + + + + + +
      +

      + thinkphp整合系列之极验滑动验证码 +

      +
      + 账号: + 密码: + + +
      +
      +
      + + + + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Index/jsclone.html b/tpl_src/Home/Index/jsclone.html new file mode 100644 index 0000000..f802278 --- /dev/null +++ b/tpl_src/Home/Index/jsclone.html @@ -0,0 +1,137 @@ + + + + + jsclone示例 - 白俊遥博客 + + + + +
      +
      + 日期1: +
      + 日期2: +
      + 性别:男 + 女 +
      + ajax搜索: + +
      + +
      + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Index/user1.html b/tpl_src/Home/Index/user1.html new file mode 100644 index 0000000..2d10daf --- /dev/null +++ b/tpl_src/Home/Index/user1.html @@ -0,0 +1,218 @@ + + + + + 用户1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Index/user2.html b/tpl_src/Home/Index/user2.html new file mode 100644 index 0000000..da4dffb --- /dev/null +++ b/tpl_src/Home/Index/user2.html @@ -0,0 +1,218 @@ + + + + + 用户2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Index/webuploader.html b/tpl_src/Home/Index/webuploader.html new file mode 100644 index 0000000..c1575da --- /dev/null +++ b/tpl_src/Home/Index/webuploader.html @@ -0,0 +1,20 @@ + + + + + thinkphp整合系列之webuploader异步预览上传 + + + + +
      + + + 自定义附加字段: + + + + + + + \ No newline at end of file diff --git a/tpl_src/Home/Vue/web_page.html b/tpl_src/Home/Vue/web_page.html new file mode 100644 index 0000000..c1a00d6 --- /dev/null +++ b/tpl_src/Home/Vue/web_page.html @@ -0,0 +1,112 @@ + + + + + Vue 配合thinkphp分页示例 + + +

      +

      +
      +

      {{item.name}}

      +
      + + + + + + + \ No newline at end of file diff --git a/tpl/Public/css/base.less b/tpl_src/Public/css/base.scss old mode 100755 new mode 100644 similarity index 97% rename from tpl/Public/css/base.less rename to tpl_src/Public/css/base.scss index d40c21a..2eea13e --- a/tpl/Public/css/base.less +++ b/tpl_src/Public/css/base.scss @@ -226,7 +226,7 @@ img{ .bjy-emoji-ico{ width: 25px; height: 25px; - background: url(http://xueba17.oss-cn-beijing.aliyuncs.com/tpl/default/User/Public/images/lqk-smile.png); + background: url(/tpl/default/User/Public/images/lqk-smile.png); cursor: pointer; position: absolute; left: 15px; @@ -258,7 +258,7 @@ img{ // 聊天框emoji表情结束 // 聊天框开始 -@background-color:#00ccc0; +$background-color:#00ccc0; #bjy-chat-modal{ .modal-dialog{ width: 710px; @@ -272,7 +272,7 @@ img{ .bjy-top{ width: 710px; height: 45px; - background: @background-color; + background: $background-color; .bjy-t-myinfo{ padding-left: 85px; width: 220px; @@ -305,7 +305,7 @@ img{ margin: 10px; width: 20px; height: 20px; - background: url('http://xueba17.oss-cn-beijing.aliyuncs.com/tpl/default/User/Public/images/f-x.png') no-repeat; + background: url('/tpl/default/User/Public/images/f-x.png') no-repeat; float: right; cursor: pointer; } @@ -495,7 +495,7 @@ img{ height: 30px; line-height: 30px; text-align: center; - background: @background-color; + background: $background-color; font-size: 14px; color: #000; border-radius: 5px; diff --git a/tpl_src/Public/dispatch_jump.tpl b/tpl_src/Public/dispatch_jump.tpl new file mode 100644 index 0000000..15dbb41 --- /dev/null +++ b/tpl_src/Public/dispatch_jump.tpl @@ -0,0 +1,36 @@ + + + + + 跳转提示 - bjyadmin + + + + +
      +
      +
        +
      • + {$message}{$error} +
      • +
      • + 页面将在{$waitSecond}秒后跳转 +
      • +
      +
      + + + + + \ No newline at end of file diff --git a/tpl_src/Public/images/lqk-mark.png b/tpl_src/Public/images/lqk-mark.png new file mode 100644 index 0000000..f60dd10 Binary files /dev/null and b/tpl_src/Public/images/lqk-mark.png differ diff --git a/tpl_src/Public/images/lqk-r-dui.png b/tpl_src/Public/images/lqk-r-dui.png new file mode 100644 index 0000000..363c087 Binary files /dev/null and b/tpl_src/Public/images/lqk-r-dui.png differ diff --git a/tpl_src/Public/images/lqk-tip.png b/tpl_src/Public/images/lqk-tip.png new file mode 100644 index 0000000..3e4effc Binary files /dev/null and b/tpl_src/Public/images/lqk-tip.png differ diff --git a/tpl_src/Public/images/tc.png b/tpl_src/Public/images/tc.png new file mode 100644 index 0000000..5eeecdb Binary files /dev/null and b/tpl_src/Public/images/tc.png differ diff --git a/tpl_src/Public/js/base.js b/tpl_src/Public/js/base.js new file mode 100644 index 0000000..a1ad6ec --- /dev/null +++ b/tpl_src/Public/js/base.js @@ -0,0 +1,136 @@ + +/** + * 通用跳转函数 + * @param String url 跳转的目标url + * @param Number second 多少秒后跳转 + * @param String message 提示信息 + */ +function xbGoTo(url,second,message){ + var url=arguments[0] ? arguments[0] : '/', + second=arguments[1] ? arguments[1] : 0, + message=arguments[2] ? arguments[2] : ''; + // 转换为毫秒 为了处理0毫秒的问题所以+1 + second=second*1000+1; + // 设置提示信息 + if (message!='') { + xbAlert(message); + } + // 设置跳转时间 + setTimeout(function(){ + location.href=url; + },second) +} + +/** + * 刷新本页 + * @param {Number} second 多少秒后刷新 默认是0立即刷新 + * @param {Boolean} history 默认为 false刷新后停留在当前位置 true 刷新后到顶部 + */ +function xbRefresh(second,history){ + var second=arguments[0] ? arguments[0] : 0, + history=arguments[1] ? arguments[1] : false; + // 转换为毫秒 为了处理0毫秒的问题所以+1 + second=second*1000+1; + setTimeout(function(){ + if (history) { + location.reload(true); + }else{ + console.log(history); + location.reload(false); + } + },second) +} + +/** + * 检测是否登录 + * @return {boolean} 登录:true 未登录:false; + */ +function xbCheckLogin(){ + var isLogin=false; + $.ajaxSetup({ + async : false + }); + // ajax检测是否登录 + $.get(xbCheckLoginUrl, function(data) { + if (data['error_code']==0) { + isLogin=true; + } + },'json'); + return isLogin; +} + +/** + * 如果登录直接访问连接;未登录则弹出登录框 + * @param {string} url 连接 + */ +function xbNeedLogin(url){ + if(xbCheckLogin()){ + xbGoTo(url); + }else{ + xbAlert('您需要登录'); + // 设置cookie + xbSetCookie('thisUrl',url); + // 显示登录框 + xbShowLogin() + } +} + +/** + * 需要确认的跳转 + * @param {string} url 跳转的连接 + * @param {string} word 确认的提示语 默认是 确认操作? + */ +function xbNeedConfirm(url,word){ + var word=arguments[1] ? arguments[1] : '确认操作'; + if (confirm(word)) { + location.href=url; + } +} + +/** + * 获取form中的数据并转为json对象格式 + * @param {object} obj form对象 + * @return {json} json对象 + */ +function xbGetForm(obj){ + var formData=$(obj).serializeArray(); + var formArray={}; + $.each(formData, function(index, val) { + formArray[val['name']]=val['value']; + }); + return formArray; +} + +/** + * 设置cookie + * @param {string} name 键名 + * @param {string} value 键值 + * @param {integer} days cookie周期 + */ +function xbSetCookie(name,value,days) { + if (days) { + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + var expires = "; expires="+date.toGMTString(); + }else{ + var expires = ""; + } + document.cookie = name+"="+value+expires+"; path=/"; +} + +// 获取cookie +function xbGetCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i=0;i < ca.length;i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1,c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); + } + return null; +} + +// 删除cookie +function xbDeleteCookie(name) { + xbSetCookie(name,"",-1); +} diff --git a/tpl_src/User/Public/images/f-x.png b/tpl_src/User/Public/images/f-x.png new file mode 100644 index 0000000..ac4847d Binary files /dev/null and b/tpl_src/User/Public/images/f-x.png differ