├── .gitignore ├── README.md ├── ZTree.php ├── ZTreeAsset.php ├── assets ├── css │ ├── awesomeStyle │ │ ├── awesome.css │ │ ├── awesome.less │ │ ├── fa.less │ │ └── img │ │ │ └── loading.gif │ ├── metroStyle │ │ ├── img │ │ │ ├── line_conn.png │ │ │ ├── loading.gif │ │ │ ├── metro.gif │ │ │ └── metro.png │ │ └── metroStyle.css │ └── zTreeStyle │ │ ├── img │ │ ├── diy │ │ │ ├── 1_close.png │ │ │ ├── 1_open.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ ├── line_conn.gif │ │ ├── loading.gif │ │ ├── zTreeStandard.gif │ │ └── zTreeStandard.png │ │ └── zTreeStyle.css └── js │ ├── jquery-1.4.4.min.js │ ├── jquery.ztree.all-3.5.js │ ├── jquery.ztree.all-3.5.min.js │ ├── jquery.ztree.core-3.5.js │ ├── jquery.ztree.core-3.5.min.js │ ├── jquery.ztree.excheck-3.5.js │ ├── jquery.ztree.excheck-3.5.min.js │ ├── jquery.ztree.exedit-3.5.js │ ├── jquery.ztree.exedit-3.5.min.js │ ├── jquery.ztree.exhide-3.5.js │ └── jquery.ztree.exhide-3.5.min.js └── composer.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # yii2-ztree 2 | The zTree extension for the Yii framework 2.0 3 | 4 | ## Installation 5 | 6 | The preferred way to install this extension is through composer. 7 | 8 | Either run 9 | 10 | ``` bash 11 | php composer.phar require --prefer-dist liyuze/yii2-ztree "*" 12 | ``` 13 | or add 14 | ``` bash 15 | "liyuze/yii2-ztree": "*" 16 | ``` 17 | to the require section of your `composer.json` file. 18 | 19 | ## Usage 20 | 21 | Once the extension is installed, simply use it in your code by : 22 | 23 | ``` php 24 | '{ 26 | data: { 27 | simpleData: { 28 | enable: true 29 | } 30 | } 31 | }', 32 | 'nodes' => '[ 33 | { id:1, pId:0, name:"父节点1 - 展开", open:true}, 34 | { id:11, pId:1, name:"父节点11 - 折叠"}, 35 | { id:111, pId:11, name:"叶子节点111"}, 36 | { id:112, pId:11, name:"叶子节点112"}, 37 | { id:113, pId:11, name:"叶子节点113"}, 38 | { id:114, pId:11, name:"叶子节点114"}, 39 | { id:12, pId:1, name:"父节点12 - 折叠"}, 40 | { id:121, pId:12, name:"叶子节点121"}, 41 | { id:122, pId:12, name:"叶子节点122"}, 42 | { id:123, pId:12, name:"叶子节点123"}, 43 | { id:124, pId:12, name:"叶子节点124"}, 44 | { id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true} 45 | ]' 46 | ]); 47 | ?> 48 | ``` 49 | 50 | or, standard use it on your code by: 51 | 52 | ``` php 53 | 'category_tree', //自定义id 55 | 'setting' => '{ 56 | view: { 57 | dblClickExpand: false, 58 | showLine: false 59 | }, 60 | callback: { 61 | onClick: onClick 62 | } 63 | }', 64 | 'nodes' => '[ 65 | { name:"父节点1 - 展开", open:true, 66 | children: [ 67 | { name:"父节点11 - 折叠", 68 | children: [ 69 | { name:"叶子节点111"}, 70 | { name:"叶子节点112"}, 71 | { name:"叶子节点113"}, 72 | { name:"叶子节点114"} 73 | ]}, 74 | { name:"父节点12 - 折叠", 75 | children: [ 76 | { name:"叶子节点121"}, 77 | { name:"叶子节点122"}, 78 | { name:"叶子节点123"}, 79 | { name:"叶子节点124"} 80 | ]}, 81 | { name:"父节点13 - 没有子节点", isParent:true} 82 | ] 83 | } 84 | ]' 85 | ]); 86 | ?> 87 | 88 | 94 | ``` 95 | 96 | ## Extend 97 | [zTree GitHub](https://github.com/zTree/zTree_v3) 98 | [zTree API](http://www.ztree.me/v3/api.php) 99 | [zTree Demo](http://www.ztree.me/v3/demo.php) -------------------------------------------------------------------------------- /ZTree.php: -------------------------------------------------------------------------------- 1 | id)) 20 | $this->id = $this->getId(); 21 | } 22 | 23 | public function run() 24 | { 25 | echo ''; 26 | 27 | $view = $this->getView(); 28 | 29 | $t = new ZTreeAsset; 30 | $t->css = ['css/awesomeStyle/awesome.css']; 31 | $t::register($view); 32 | 33 | $js = '$.fn.zTree.init($("#'.$this->id.'"), '.$this->_setting.', '.$this->_nodes.');'; 34 | $view->registerJs($js); 35 | } 36 | 37 | public function setSetting($value) 38 | { 39 | if (is_array($value)) 40 | $value = json_encode($value, JSON_UNESCAPED_UNICODE); 41 | 42 | $this->_setting = $value; 43 | } 44 | 45 | public function setNodes($value) 46 | { 47 | if (is_array($value)) 48 | $value = json_encode($value, JSON_UNESCAPED_UNICODE); 49 | 50 | $this->_nodes = $value; 51 | } 52 | } -------------------------------------------------------------------------------- /ZTreeAsset.php: -------------------------------------------------------------------------------- 1 | dark background 14 | @color-normal: white; 15 | // Background color 16 | @color-bg: #af0000; 17 | // Highlight color 18 | @color-highlight: yellow; 19 | // Partially selected (checkboxes, radio buttons) 20 | @color-partial: #aaaaaa; 21 | // Partially selected and focused (checkboxes, radio buttons) 22 | @color-partfocus: #cad96c; 23 | // Disabled altogether 24 | @color-disabled: #808080; 25 | // Editing color 26 | @color-edit: yellow; 27 | @w: 15px; 28 | @h: 17px; 29 | @pad-left: 2px; 30 | @pad-top: 10px; 31 | /* End of Definitions ---------------*/ 32 | 33 | /* Imports -------------------------*/ 34 | @import "fa.less"; 35 | /* End of Imports ------------------*/ 36 | 37 | .ztree * {padding:0; margin:0; font-size:@font-size; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif; background-color: @color-bg;} 38 | .ztree { 39 | margin:0; padding:5px; color:@color-normal; background-color: @color-bg; 40 | li { 41 | padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0; 42 | ul { 43 | margin: 0px; padding:0 0 0 18px; 44 | } 45 | ul.line { } 46 | a {padding-right:3px; margin:0; cursor:pointer; height:@h; color:@color-normal; background-color: transparent; 47 | text-decoration:none; vertical-align:top; display: inline-block; 48 | input.rename {height:14px; width:80px; padding:0; margin:0; 49 | color: @color-bg; background-color: @color-normal; 50 | font-size:@font-size; border:1px #585956 solid; *border:0px} 51 | } 52 | a:hover {text-decoration:underline} 53 | a.curSelectedNode {padding-top:0px; background-color:#af4040; color:@color-highlight; height:@h; opacity:0.8;} 54 | a.curSelectedNode_Edit {padding-top:0px; background-color:transparent; color:@color-highlight; height:@h; border:1px #666 solid; opacity:0.8;} 55 | a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:@color-highlight; height:@h; border:1px #666 solid; 56 | opacity:0.8; filter:alpha(opacity=80)} 57 | a.tmpTargetNode_prev {} 58 | a.tmpTargetNode_next {} 59 | span {line-height:@h; margin-right:2px; background-color:transparent;} 60 | span.button {line-height:0; margin:0; padding: 0; width:@w; height:@h; display: inline-block; vertical-align:top; 61 | border:0px solid; cursor: pointer;outline:none; 62 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 63 | 64 | &::before{color: @color-normal; font-family: FontAwesome; padding-top:@pad-top;} 65 | &.chk { margin:0px; cursor: auto; width: 12px; 66 | display: inline-block;padding-top:@pad-top;padding-left:@pad-left; 67 | 68 | &.checkbox_false_full::before {content: @fa-square-o;} 69 | &.checkbox_false_full_focus::before {content: @fa-square-o; color:@color-highlight;} 70 | &.checkbox_false_part::before {content: @fa-square-o;color: @color-partial;} 71 | &.checkbox_false_part_focus::before {content: @fa-square-o; color:@color-partfocus;} 72 | &.checkbox_false_disable::before {content: @fa-square-o; color:@color-disabled;} 73 | &.checkbox_true_full::before {content: @fa-check-square-o;} 74 | &.checkbox_true_full_focus::before {content: @fa-check-square-o;} 75 | &.checkbox_true_part::before {content: @fa-check-square;} 76 | &.checkbox_true_part_focus::before {content: @fa-check-square; color: @color-highlight} 77 | &.checkbox_true_full_focus::before {content: @fa-check-square-o; color: @color-highlight} 78 | &.checkbox_true_part::before {content: @fa-check-square-o;color: @color-partial} 79 | &.checkbox_true_part_focus::before {content: @fa-check-square-o;color: @color-partfocus;} 80 | &.checkbox_true_disable::before {content: @fa-check-square-o;color: @color-disabled} 81 | 82 | &.radio_false_full::before {content: @fa-circle-o;} 83 | &.radio_false_full_focus::before {content: @fa-circle-o;color: @color-highlight} 84 | &.radio_false_part::before {content: @fa-circle-o;color: @color-partial} 85 | &.radio_false_part_focus::before {content: @fa-circle-o;color: @color-highlight} 86 | &.radio_false_disable::before {content: @fa-circle-thin;color: @color-disabled} 87 | &.radio_true_full::before {content: @fa-dot-circle-o;} 88 | &.radio_true_full_focus::before {content: @fa-dot-circle-o;color: @color-highlight} 89 | &.radio_true_part::before {content: @fa-dot-circle-o;color: @color-partial} 90 | &.radio_true_part_focus::before {content: @fa-dot-circle-o;color: @color-partial;} 91 | &.radio_true_disable::before {content: @fa-circle-thin;color: @color-disabled} 92 | 93 | } 94 | &.switch {width:@w; height:@h} 95 | &.root_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 96 | &.root_close::before{content: @fa-folder-open-o;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 97 | &.roots_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 98 | &.roots_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 99 | &.center_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 100 | &.center_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 101 | &.bottom_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 102 | &.bottom_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;} 103 | &.noline_open{} 104 | &.noline_close{} 105 | &.root_docu{ background:none;} 106 | &.roots_docu::before{content: @fa-list-alt;padding-left:@pad-left;display: inline-block;color:@color-normal;} 107 | &.center_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;} 108 | &.bottom_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;} 109 | &.noline_docu{ background:none;} 110 | 111 | &.ico_open::before {content: @fa-folder-open-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;} 112 | &.ico_close::before {content: @fa-folder-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;} 113 | &.ico_docu::before{content: @fa-list-alt;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;} 114 | 115 | &.edit {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;} 116 | &.edit::before{content: @fa-pencil-square-o;font-family: FontAwesome;} 117 | 118 | &.remove {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;} 119 | &.remove::before{content: @fa-trash;font-family: FontAwesome;} 120 | 121 | 122 | &.add {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;} 123 | &.add::before{content: @fa-plus;font-family: FontAwesome;} 124 | 125 | &.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} 126 | } 127 | 128 | } 129 | } 130 | 131 | 132 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 133 | 134 | // this is the arrow that moves 135 | span.tmpzTreeMove_arrow{width:16px; height:@h; display: inline-block; 136 | padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; 137 | background-color:transparent; background-attachment: scroll; 138 | } 139 | span.tmpzTreeMove_arrow::before{content: @fa-play;font-family: FontAwesome;color: @color-highlight; 140 | } 141 | // outline 142 | 143 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; 144 | background-color:#cfcfcf; border:1px @color-highlight dotted; opacity:0.8; filter:alpha(opacity=80)} 145 | .ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} 146 | 147 | -------------------------------------------------------------------------------- /assets/css/awesomeStyle/fa.less: -------------------------------------------------------------------------------- 1 | @fa-glass: "\f000"; 2 | @fa-music: "\f001"; 3 | @fa-search: "\f002"; 4 | @fa-envelope-o: "\f003"; 5 | @fa-heart: "\f004"; 6 | @fa-star: "\f005"; 7 | @fa-star-o: "\f006"; 8 | @fa-user: "\f007"; 9 | @fa-film: "\f008"; 10 | @fa-th-large: "\f009"; 11 | @fa-th: "\f00a"; 12 | @fa-th-list: "\f00b"; 13 | @fa-check: "\f00c"; 14 | @fa-times: "\f00d"; 15 | @fa-search-plus: "\f00e"; 16 | @fa-search-minus: "\f010"; 17 | @fa-power-off: "\f011"; 18 | @fa-signal: "\f012"; 19 | @fa-cog: "\f013"; 20 | @fa-trash-o: "\f014"; 21 | @fa-home: "\f015"; 22 | @fa-file-o: "\f016"; 23 | @fa-clock-o: "\f017"; 24 | @fa-road: "\f018"; 25 | @fa-download: "\f019"; 26 | @fa-arrow-circle-o-down: "\f01a"; 27 | @fa-arrow-circle-o-up: "\f01b"; 28 | @fa-inbox: "\f01c"; 29 | @fa-play-circle-o: "\f01d"; 30 | @fa-repeat: "\f01e"; 31 | @fa-refresh: "\f021"; 32 | @fa-list-alt: "\f022"; 33 | @fa-lock: "\f023"; 34 | @fa-flag: "\f024"; 35 | @fa-headphones: "\f025"; 36 | @fa-volume-off: "\f026"; 37 | @fa-volume-down: "\f027"; 38 | @fa-volume-up: "\f028"; 39 | @fa-qrcode: "\f029"; 40 | @fa-barcode: "\f02a"; 41 | @fa-tag: "\f02b"; 42 | @fa-tags: "\f02c"; 43 | @fa-book: "\f02d"; 44 | @fa-bookmark: "\f02e"; 45 | @fa-print: "\f02f"; 46 | @fa-camera: "\f030"; 47 | @fa-font: "\f031"; 48 | @fa-bold: "\f032"; 49 | @fa-italic: "\f033"; 50 | @fa-text-height: "\f034"; 51 | @fa-text-width: "\f035"; 52 | @fa-align-left: "\f036"; 53 | @fa-align-center: "\f037"; 54 | @fa-align-right: "\f038"; 55 | @fa-align-justify: "\f039"; 56 | @fa-list: "\f03a"; 57 | @fa-outdent: "\f03b"; 58 | @fa-indent: "\f03c"; 59 | @fa-video-camera: "\f03d"; 60 | @fa-picture-o: "\f03e"; 61 | @fa-pencil: "\f040"; 62 | @fa-map-marker: "\f041"; 63 | @fa-adjust: "\f042"; 64 | @fa-tint: "\f043"; 65 | @fa-pencil-square-o: "\f044"; 66 | @fa-share-square-o: "\f045"; 67 | @fa-check-square-o: "\f046"; 68 | @fa-arrows: "\f047"; 69 | @fa-step-backward: "\f048"; 70 | @fa-fast-backward: "\f049"; 71 | @fa-backward: "\f04a"; 72 | @fa-play: "\f04b"; 73 | @fa-pause: "\f04c"; 74 | @fa-stop: "\f04d"; 75 | @fa-forward: "\f04e"; 76 | @fa-fast-forward: "\f050"; 77 | @fa-step-forward: "\f051"; 78 | @fa-eject: "\f052"; 79 | @fa-chevron-left: "\f053"; 80 | @fa-chevron-right: "\f054"; 81 | @fa-plus-circle: "\f055"; 82 | @fa-minus-circle: "\f056"; 83 | @fa-times-circle: "\f057"; 84 | @fa-check-circle: "\f058"; 85 | @fa-question-circle: "\f059"; 86 | @fa-info-circle: "\f05a"; 87 | @fa-crosshairs: "\f05b"; 88 | @fa-times-circle-o: "\f05c"; 89 | @fa-check-circle-o: "\f05d"; 90 | @fa-ban: "\f05e"; 91 | @fa-arrow-left: "\f060"; 92 | @fa-arrow-right: "\f061"; 93 | @fa-arrow-up: "\f062"; 94 | @fa-arrow-down: "\f063"; 95 | @fa-share: "\f064"; 96 | @fa-expand: "\f065"; 97 | @fa-compress: "\f066"; 98 | @fa-plus: "\f067"; 99 | @fa-minus: "\f068"; 100 | @fa-asterisk: "\f069"; 101 | @fa-exclamation-circle: "\f06a"; 102 | @fa-gift: "\f06b"; 103 | @fa-leaf: "\f06c"; 104 | @fa-fire: "\f06d"; 105 | @fa-eye: "\f06e"; 106 | @fa-eye-slash: "\f070"; 107 | @fa-exclamation-triangle: "\f071"; 108 | @fa-plane: "\f072"; 109 | @fa-calendar: "\f073"; 110 | @fa-random: "\f074"; 111 | @fa-comment: "\f075"; 112 | @fa-magnet: "\f076"; 113 | @fa-chevron-up: "\f077"; 114 | @fa-chevron-down: "\f078"; 115 | @fa-retweet: "\f079"; 116 | @fa-shopping-cart: "\f07a"; 117 | @fa-folder: "\f07b"; 118 | @fa-folder-open: "\f07c"; 119 | @fa-arrows-v: "\f07d"; 120 | @fa-arrows-h: "\f07e"; 121 | @fa-bar-chart: "\f080"; 122 | @fa-twitter-square: "\f081"; 123 | @fa-facebook-square: "\f082"; 124 | @fa-camera-retro: "\f083"; 125 | @fa-key: "\f084"; 126 | @fa-cogs: "\f085"; 127 | @fa-comments: "\f086"; 128 | @fa-thumbs-o-up: "\f087"; 129 | @fa-thumbs-o-down: "\f088"; 130 | @fa-star-half: "\f089"; 131 | @fa-heart-o: "\f08a"; 132 | @fa-sign-out: "\f08b"; 133 | @fa-linkedin-square: "\f08c"; 134 | @fa-thumb-tack: "\f08d"; 135 | @fa-external-link: "\f08e"; 136 | @fa-sign-in: "\f090"; 137 | @fa-trophy: "\f091"; 138 | @fa-github-square: "\f092"; 139 | @fa-upload: "\f093"; 140 | @fa-lemon-o: "\f094"; 141 | @fa-phone: "\f095"; 142 | @fa-square-o: "\f096"; 143 | @fa-bookmark-o: "\f097"; 144 | @fa-phone-square: "\f098"; 145 | @fa-twitter: "\f099"; 146 | @fa-facebook: "\f09a"; 147 | @fa-github: "\f09b"; 148 | @fa-unlock: "\f09c"; 149 | @fa-credit-card: "\f09d"; 150 | @fa-rss: "\f09e"; 151 | @fa-hdd-o: "\f0a0"; 152 | @fa-bullhorn: "\f0a1"; 153 | @fa-bell: "\f0f3"; 154 | @fa-certificate: "\f0a3"; 155 | @fa-hand-o-right: "\f0a4"; 156 | @fa-hand-o-left: "\f0a5"; 157 | @fa-hand-o-up: "\f0a6"; 158 | @fa-hand-o-down: "\f0a7"; 159 | @fa-arrow-circle-left: "\f0a8"; 160 | @fa-arrow-circle-right: "\f0a9"; 161 | @fa-arrow-circle-up: "\f0aa"; 162 | @fa-arrow-circle-down: "\f0ab"; 163 | @fa-globe: "\f0ac"; 164 | @fa-wrench: "\f0ad"; 165 | @fa-tasks: "\f0ae"; 166 | @fa-filter: "\f0b0"; 167 | @fa-briefcase: "\f0b1"; 168 | @fa-arrows-alt: "\f0b2"; 169 | @fa-users: "\f0c0"; 170 | @fa-link: "\f0c1"; 171 | @fa-cloud: "\f0c2"; 172 | @fa-flask: "\f0c3"; 173 | @fa-scissors: "\f0c4"; 174 | @fa-files-o: "\f0c5"; 175 | @fa-paperclip: "\f0c6"; 176 | @fa-floppy-o: "\f0c7"; 177 | @fa-square: "\f0c8"; 178 | @fa-bars: "\f0c9"; 179 | @fa-list-ul: "\f0ca"; 180 | @fa-list-ol: "\f0cb"; 181 | @fa-strikethrough: "\f0cc"; 182 | @fa-underline: "\f0cd"; 183 | @fa-table: "\f0ce"; 184 | @fa-magic: "\f0d0"; 185 | @fa-truck: "\f0d1"; 186 | @fa-pinterest: "\f0d2"; 187 | @fa-pinterest-square: "\f0d3"; 188 | @fa-google-plus-square: "\f0d4"; 189 | @fa-google-plus: "\f0d5"; 190 | @fa-money: "\f0d6"; 191 | @fa-caret-down: "\f0d7"; 192 | @fa-caret-up: "\f0d8"; 193 | @fa-caret-left: "\f0d9"; 194 | @fa-caret-right: "\f0da"; 195 | @fa-columns: "\f0db"; 196 | @fa-sort: "\f0dc"; 197 | @fa-sort-desc: "\f0dd"; 198 | @fa-sort-asc: "\f0de"; 199 | @fa-envelope: "\f0e0"; 200 | @fa-linkedin: "\f0e1"; 201 | @fa-undo: "\f0e2"; 202 | @fa-gavel: "\f0e3"; 203 | @fa-tachometer: "\f0e4"; 204 | @fa-comment-o: "\f0e5"; 205 | @fa-comments-o: "\f0e6"; 206 | @fa-bolt: "\f0e7"; 207 | @fa-sitemap: "\f0e8"; 208 | @fa-umbrella: "\f0e9"; 209 | @fa-clipboard: "\f0ea"; 210 | @fa-lightbulb-o: "\f0eb"; 211 | @fa-exchange: "\f0ec"; 212 | @fa-cloud-download: "\f0ed"; 213 | @fa-cloud-upload: "\f0ee"; 214 | @fa-user-md: "\f0f0"; 215 | @fa-stethoscope: "\f0f1"; 216 | @fa-suitcase: "\f0f2"; 217 | @fa-bell-o: "\f0a2"; 218 | @fa-coffee: "\f0f4"; 219 | @fa-cutlery: "\f0f5"; 220 | @fa-file-text-o: "\f0f6"; 221 | @fa-building-o: "\f0f7"; 222 | @fa-hospital-o: "\f0f8"; 223 | @fa-ambulance: "\f0f9"; 224 | @fa-medkit: "\f0fa"; 225 | @fa-fighter-jet: "\f0fb"; 226 | @fa-beer: "\f0fc"; 227 | @fa-h-square: "\f0fd"; 228 | @fa-plus-square: "\f0fe"; 229 | @fa-angle-double-left: "\f100"; 230 | @fa-angle-double-right: "\f101"; 231 | @fa-angle-double-up: "\f102"; 232 | @fa-angle-double-down: "\f103"; 233 | @fa-angle-left: "\f104"; 234 | @fa-angle-right: "\f105"; 235 | @fa-angle-up: "\f106"; 236 | @fa-angle-down: "\f107"; 237 | @fa-desktop: "\f108"; 238 | @fa-laptop: "\f109"; 239 | @fa-tablet: "\f10a"; 240 | @fa-mobile: "\f10b"; 241 | @fa-circle-o: "\f10c"; 242 | @fa-quote-left: "\f10d"; 243 | @fa-quote-right: "\f10e"; 244 | @fa-spinner: "\f110"; 245 | @fa-circle: "\f111"; 246 | @fa-reply: "\f112"; 247 | @fa-github-alt: "\f113"; 248 | @fa-folder-o: "\f114"; 249 | @fa-folder-open-o: "\f115"; 250 | @fa-smile-o: "\f118"; 251 | @fa-frown-o: "\f119"; 252 | @fa-meh-o: "\f11a"; 253 | @fa-gamepad: "\f11b"; 254 | @fa-keyboard-o: "\f11c"; 255 | @fa-flag-o: "\f11d"; 256 | @fa-flag-checkered: "\f11e"; 257 | @fa-terminal: "\f120"; 258 | @fa-code: "\f121"; 259 | @fa-reply-all: "\f122"; 260 | @fa-star-half-o: "\f123"; 261 | @fa-location-arrow: "\f124"; 262 | @fa-crop: "\f125"; 263 | @fa-code-fork: "\f126"; 264 | @fa-chain-broken: "\f127"; 265 | @fa-question: "\f128"; 266 | @fa-info: "\f129"; 267 | @fa-exclamation: "\f12a"; 268 | @fa-superscript: "\f12b"; 269 | @fa-subscript: "\f12c"; 270 | @fa-eraser: "\f12d"; 271 | @fa-puzzle-piece: "\f12e"; 272 | @fa-microphone: "\f130"; 273 | @fa-microphone-slash: "\f131"; 274 | @fa-shield: "\f132"; 275 | @fa-calendar-o: "\f133"; 276 | @fa-fire-extinguisher: "\f134"; 277 | @fa-rocket: "\f135"; 278 | @fa-maxcdn: "\f136"; 279 | @fa-chevron-circle-left: "\f137"; 280 | @fa-chevron-circle-right: "\f138"; 281 | @fa-chevron-circle-up: "\f139"; 282 | @fa-chevron-circle-down: "\f13a"; 283 | @fa-html5: "\f13b"; 284 | @fa-css3: "\f13c"; 285 | @fa-anchor: "\f13d"; 286 | @fa-unlock-alt: "\f13e"; 287 | @fa-bullseye: "\f140"; 288 | @fa-ellipsis-h: "\f141"; 289 | @fa-ellipsis-v: "\f142"; 290 | @fa-rss-square: "\f143"; 291 | @fa-play-circle: "\f144"; 292 | @fa-ticket: "\f145"; 293 | @fa-minus-square: "\f146"; 294 | @fa-minus-square-o: "\f147"; 295 | @fa-level-up: "\f148"; 296 | @fa-level-down: "\f149"; 297 | @fa-check-square: "\f14a"; 298 | @fa-pencil-square: "\f14b"; 299 | @fa-external-link-square: "\f14c"; 300 | @fa-share-square: "\f14d"; 301 | @fa-compass: "\f14e"; 302 | @fa-caret-square-o-down: "\f150"; 303 | @fa-caret-square-o-up: "\f151"; 304 | @fa-caret-square-o-right: "\f152"; 305 | @fa-eur: "\f153"; 306 | @fa-gbp: "\f154"; 307 | @fa-usd: "\f155"; 308 | @fa-inr: "\f156"; 309 | @fa-jpy: "\f157"; 310 | @fa-rub: "\f158"; 311 | @fa-krw: "\f159"; 312 | @fa-btc: "\f15a"; 313 | @fa-file: "\f15b"; 314 | @fa-file-text: "\f15c"; 315 | @fa-sort-alpha-asc: "\f15d"; 316 | @fa-sort-alpha-desc: "\f15e"; 317 | @fa-sort-amount-asc: "\f160"; 318 | @fa-sort-amount-desc: "\f161"; 319 | @fa-sort-numeric-asc: "\f162"; 320 | @fa-sort-numeric-desc: "\f163"; 321 | @fa-thumbs-up: "\f164"; 322 | @fa-thumbs-down: "\f165"; 323 | @fa-youtube-square: "\f166"; 324 | @fa-youtube: "\f167"; 325 | @fa-xing: "\f168"; 326 | @fa-xing-square: "\f169"; 327 | @fa-youtube-play: "\f16a"; 328 | @fa-dropbox: "\f16b"; 329 | @fa-stack-overflow: "\f16c"; 330 | @fa-instagram: "\f16d"; 331 | @fa-flickr: "\f16e"; 332 | @fa-adn: "\f170"; 333 | @fa-bitbucket: "\f171"; 334 | @fa-bitbucket-square: "\f172"; 335 | @fa-tumblr: "\f173"; 336 | @fa-tumblr-square: "\f174"; 337 | @fa-long-arrow-down: "\f175"; 338 | @fa-long-arrow-up: "\f176"; 339 | @fa-long-arrow-left: "\f177"; 340 | @fa-long-arrow-right: "\f178"; 341 | @fa-apple: "\f179"; 342 | @fa-windows: "\f17a"; 343 | @fa-android: "\f17b"; 344 | @fa-linux: "\f17c"; 345 | @fa-dribbble: "\f17d"; 346 | @fa-skype: "\f17e"; 347 | @fa-foursquare: "\f180"; 348 | @fa-trello: "\f181"; 349 | @fa-female: "\f182"; 350 | @fa-male: "\f183"; 351 | @fa-gittip: "\f184"; 352 | @fa-sun-o: "\f185"; 353 | @fa-moon-o: "\f186"; 354 | @fa-archive: "\f187"; 355 | @fa-bug: "\f188"; 356 | @fa-vk: "\f189"; 357 | @fa-weibo: "\f18a"; 358 | @fa-renren: "\f18b"; 359 | @fa-pagelines: "\f18c"; 360 | @fa-stack-exchange: "\f18d"; 361 | @fa-arrow-circle-o-right: "\f18e"; 362 | @fa-arrow-circle-o-left: "\f190"; 363 | @fa-caret-square-o-left: "\f191"; 364 | @fa-dot-circle-o: "\f192"; 365 | @fa-wheelchair: "\f193"; 366 | @fa-vimeo-square: "\f194"; 367 | @fa-try: "\f195"; 368 | @fa-plus-square-o: "\f196"; 369 | @fa-space-shuttle: "\f197"; 370 | @fa-slack: "\f198"; 371 | @fa-envelope-square: "\f199"; 372 | @fa-wordpress: "\f19a"; 373 | @fa-openid: "\f19b"; 374 | @fa-university: "\f19c"; 375 | @fa-graduation-cap: "\f19d"; 376 | @fa-yahoo: "\f19e"; 377 | @fa-google: "\f1a0"; 378 | @fa-reddit: "\f1a1"; 379 | @fa-reddit-square: "\f1a2"; 380 | @fa-stumbleupon-circle: "\f1a3"; 381 | @fa-stumbleupon: "\f1a4"; 382 | @fa-delicious: "\f1a5"; 383 | @fa-digg: "\f1a6"; 384 | @fa-pied-piper: "\f1a7"; 385 | @fa-pied-piper-alt: "\f1a8"; 386 | @fa-drupal: "\f1a9"; 387 | @fa-joomla: "\f1aa"; 388 | @fa-language: "\f1ab"; 389 | @fa-fax: "\f1ac"; 390 | @fa-building: "\f1ad"; 391 | @fa-child: "\f1ae"; 392 | @fa-paw: "\f1b0"; 393 | @fa-spoon: "\f1b1"; 394 | @fa-cube: "\f1b2"; 395 | @fa-cubes: "\f1b3"; 396 | @fa-behance: "\f1b4"; 397 | @fa-behance-square: "\f1b5"; 398 | @fa-steam: "\f1b6"; 399 | @fa-steam-square: "\f1b7"; 400 | @fa-recycle: "\f1b8"; 401 | @fa-car: "\f1b9"; 402 | @fa-taxi: "\f1ba"; 403 | @fa-tree: "\f1bb"; 404 | @fa-spotify: "\f1bc"; 405 | @fa-deviantart: "\f1bd"; 406 | @fa-soundcloud: "\f1be"; 407 | @fa-database: "\f1c0"; 408 | @fa-file-pdf-o: "\f1c1"; 409 | @fa-file-word-o: "\f1c2"; 410 | @fa-file-excel-o: "\f1c3"; 411 | @fa-file-powerpoint-o: "\f1c4"; 412 | @fa-file-image-o: "\f1c5"; 413 | @fa-file-archive-o: "\f1c6"; 414 | @fa-file-audio-o: "\f1c7"; 415 | @fa-file-video-o: "\f1c8"; 416 | @fa-file-code-o: "\f1c9"; 417 | @fa-vine: "\f1ca"; 418 | @fa-codepen: "\f1cb"; 419 | @fa-jsfiddle: "\f1cc"; 420 | @fa-life-ring: "\f1cd"; 421 | @fa-circle-o-notch: "\f1ce"; 422 | @fa-rebel: "\f1d0"; 423 | @fa-empire: "\f1d1"; 424 | @fa-git-square: "\f1d2"; 425 | @fa-git: "\f1d3"; 426 | @fa-hacker-news: "\f1d4"; 427 | @fa-tencent-weibo: "\f1d5"; 428 | @fa-qq: "\f1d6"; 429 | @fa-weixin: "\f1d7"; 430 | @fa-paper-plane: "\f1d8"; 431 | @fa-paper-plane-o: "\f1d9"; 432 | @fa-history: "\f1da"; 433 | @fa-circle-thin: "\f1db"; 434 | @fa-header: "\f1dc"; 435 | @fa-paragraph: "\f1dd"; 436 | @fa-sliders: "\f1de"; 437 | @fa-share-alt: "\f1e0"; 438 | @fa-share-alt-square: "\f1e1"; 439 | @fa-bomb: "\f1e2"; 440 | @fa-futbol-o: "\f1e3"; 441 | @fa-tty: "\f1e4"; 442 | @fa-binoculars: "\f1e5"; 443 | @fa-plug: "\f1e6"; 444 | @fa-slideshare: "\f1e7"; 445 | @fa-twitch: "\f1e8"; 446 | @fa-yelp: "\f1e9"; 447 | @fa-newspaper-o: "\f1ea"; 448 | @fa-wifi: "\f1eb"; 449 | @fa-calculator: "\f1ec"; 450 | @fa-paypal: "\f1ed"; 451 | @fa-google-wallet: "\f1ee"; 452 | @fa-cc-visa: "\f1f0"; 453 | @fa-cc-mastercard: "\f1f1"; 454 | @fa-cc-discover: "\f1f2"; 455 | @fa-cc-amex: "\f1f3"; 456 | @fa-cc-paypal: "\f1f4"; 457 | @fa-cc-stripe: "\f1f5"; 458 | @fa-bell-slash: "\f1f6"; 459 | @fa-bell-slash-o: "\f1f7"; 460 | @fa-trash: "\f1f8"; 461 | @fa-copyright: "\f1f9"; 462 | @fa-at: "\f1fa"; 463 | @fa-eyedropper: "\f1fb"; 464 | @fa-paint-brush: "\f1fc"; 465 | @fa-birthday-cake: "\f1fd"; 466 | @fa-area-chart: "\f1fe"; 467 | @fa-pie-chart: "\f200"; 468 | @fa-line-chart: "\f201"; 469 | @fa-lastfm: "\f202"; 470 | @fa-lastfm-square: "\f203"; 471 | @fa-toggle-off: "\f204"; 472 | @fa-toggle-on: "\f205"; 473 | @fa-bicycle: "\f206"; 474 | @fa-bus: "\f207"; 475 | @fa-ioxhost: "\f208"; 476 | @fa-angellist: "\f209"; 477 | @fa-cc: "\f20a"; 478 | @fa-ils: "\f20b"; 479 | @fa-meanpath: "\f20c"; 480 | 481 | -------------------------------------------------------------------------------- /assets/css/awesomeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/awesomeStyle/img/loading.gif -------------------------------------------------------------------------------- /assets/css/metroStyle/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/metroStyle/img/line_conn.png -------------------------------------------------------------------------------- /assets/css/metroStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/metroStyle/img/loading.gif -------------------------------------------------------------------------------- /assets/css/metroStyle/img/metro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/metroStyle/img/metro.gif -------------------------------------------------------------------------------- /assets/css/metroStyle/img/metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/metroStyle/img/metro.png -------------------------------------------------------------------------------- /assets/css/metroStyle/metroStyle.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------- 2 | zTree Style 3 | 4 | version: 3.4 5 | author: Hunter.z 6 | email: hunter.z@263.net 7 | website: http://code.google.com/p/jquerytree/ 8 | 9 | -------------------------------------*/ 10 | 11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} 12 | .ztree {margin:0; padding:5px; color:#333} 13 | .ztree li{padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0} 14 | .ztree li ul{ margin:0; padding:0 0 0 18px} 15 | .ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;} 16 | 17 | .ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; vertical-align:top; display: inline-block} 18 | .ztree li a:hover {text-decoration:underline} 19 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; opacity:0.8;} 20 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; border:1px #666 solid; opacity:0.8;} 21 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid; 22 | opacity:0.8; filter:alpha(opacity=80)} 23 | .ztree li a.tmpTargetNode_prev {} 24 | .ztree li a.tmpTargetNode_next {} 25 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; 26 | font-size:12px; border:1px #585956 solid; *border:0px} 27 | .ztree li span {line-height:21px; margin-right:2px} 28 | .ztree li span.button {line-height:0; margin:0; padding: 0; width:21px; height:21px; display: inline-block; vertical-align:middle; 29 | border:0 none; cursor: pointer;outline:none; 30 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 31 | background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")} 32 | 33 | .ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto} 34 | .ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;} 35 | .ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;} 36 | .ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;} 37 | .ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;} 38 | .ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;} 39 | .ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;} 40 | .ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;} 41 | .ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;} 42 | .ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;} 43 | .ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;} 44 | .ztree li span.button.chk.radio_false_full {background-position: -47px -5px;} 45 | .ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;} 46 | .ztree li span.button.chk.radio_false_part {background-position: -47px -47px;} 47 | .ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;} 48 | .ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;} 49 | .ztree li span.button.chk.radio_true_full {background-position: -68px -5px;} 50 | .ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;} 51 | .ztree li span.button.chk.radio_true_part {background-position: -68px -47px;} 52 | .ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;} 53 | .ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;} 54 | 55 | .ztree li span.button.switch {width:21px; height:21px} 56 | .ztree li span.button.root_open{background-position:-105px -63px} 57 | .ztree li span.button.root_close{background-position:-126px -63px} 58 | .ztree li span.button.roots_open{background-position: -105px 0;} 59 | .ztree li span.button.roots_close{background-position: -126px 0;} 60 | .ztree li span.button.center_open{background-position: -105px -21px;} 61 | .ztree li span.button.center_close{background-position: -126px -21px;} 62 | .ztree li span.button.bottom_open{background-position: -105px -42px;} 63 | .ztree li span.button.bottom_close{background-position: -126px -42px;} 64 | .ztree li span.button.noline_open{background-position: -105px -84px;} 65 | .ztree li span.button.noline_close{background-position: -126px -84px;} 66 | .ztree li span.button.root_docu{ background:none;} 67 | .ztree li span.button.roots_docu{background-position: -84px 0;} 68 | .ztree li span.button.center_docu{background-position: -84px -21px;} 69 | .ztree li span.button.bottom_docu{background-position: -84px -42px;} 70 | .ztree li span.button.noline_docu{ background:none;} 71 | 72 | .ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle} 73 | .ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle} 74 | .ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -42px; vertical-align:top; *vertical-align:middle} 75 | .ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle} 76 | .ztree li span.button.edit:hover { 77 | background-position: -168px -21px; 78 | } 79 | .ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle} 80 | .ztree li span.button.remove:hover { 81 | background-position: -168px -42px; 82 | } 83 | .ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle} 84 | .ztree li span.button.add:hover { 85 | background-position: -168px 0; 86 | } 87 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} 88 | 89 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 90 | 91 | span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; 92 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 93 | background-position:-168px -84px; background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")} 94 | 95 | ul.ztreeul.ztreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} 96 | .ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} 97 | -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/1_close.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/1_open.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/2.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/3.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/4.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/5.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/6.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/7.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/8.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/diy/9.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/line_conn.gif -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/loading.gif -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/zTreeStandard.gif -------------------------------------------------------------------------------- /assets/css/zTreeStyle/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liyuze/yii2-ztree/cc025f61d6d51071f38f5d9814f6f301566aebb7/assets/css/zTreeStyle/img/zTreeStandard.png -------------------------------------------------------------------------------- /assets/css/zTreeStyle/zTreeStyle.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------- 2 | zTree Style 3 | 4 | version: 3.5.19 5 | author: Hunter.z 6 | email: hunter.z@263.net 7 | website: http://code.google.com/p/jquerytree/ 8 | 9 | -------------------------------------*/ 10 | 11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} 12 | .ztree {margin:0; padding:5px; color:#333} 13 | .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0} 14 | .ztree li ul{ margin:0; padding:0 0 0 18px} 15 | .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;} 16 | 17 | .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent; 18 | text-decoration:none; vertical-align:top; display: inline-block} 19 | .ztree li a:hover {text-decoration:underline} 20 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 21 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 22 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; 23 | opacity:0.8; filter:alpha(opacity=80)} 24 | .ztree li a.tmpTargetNode_prev {} 25 | .ztree li a.tmpTargetNode_next {} 26 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; 27 | font-size:12px; border:1px #7EC4CC solid; *border:0px} 28 | .ztree li span {line-height:16px; margin-right:2px} 29 | .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle; 30 | border:0 none; cursor: pointer;outline:none; 31 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 32 | background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 33 | 34 | .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto} 35 | .ztree li span.button.chk.checkbox_false_full {background-position:0 0} 36 | .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} 37 | .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} 38 | .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} 39 | .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} 40 | .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} 41 | .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} 42 | .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} 43 | .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} 44 | .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} 45 | .ztree li span.button.chk.radio_false_full {background-position:-28px 0} 46 | .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} 47 | .ztree li span.button.chk.radio_false_part {background-position:-28px -28px} 48 | .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} 49 | .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} 50 | .ztree li span.button.chk.radio_true_full {background-position:-42px 0} 51 | .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} 52 | .ztree li span.button.chk.radio_true_part {background-position:-42px -28px} 53 | .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} 54 | .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} 55 | 56 | .ztree li span.button.switch {width:18px; height:18px} 57 | .ztree li span.button.root_open{background-position:-92px -54px} 58 | .ztree li span.button.root_close{background-position:-74px -54px} 59 | .ztree li span.button.roots_open{background-position:-92px 0} 60 | .ztree li span.button.roots_close{background-position:-74px 0} 61 | .ztree li span.button.center_open{background-position:-92px -18px} 62 | .ztree li span.button.center_close{background-position:-74px -18px} 63 | .ztree li span.button.bottom_open{background-position:-92px -36px} 64 | .ztree li span.button.bottom_close{background-position:-74px -36px} 65 | .ztree li span.button.noline_open{background-position:-92px -72px} 66 | .ztree li span.button.noline_close{background-position:-74px -72px} 67 | .ztree li span.button.root_docu{ background:none;} 68 | .ztree li span.button.roots_docu{background-position:-56px 0} 69 | .ztree li span.button.center_docu{background-position:-56px -18px} 70 | .ztree li span.button.bottom_docu{background-position:-56px -36px} 71 | .ztree li span.button.noline_docu{ background:none;} 72 | 73 | .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle} 74 | .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle} 75 | .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle} 76 | .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle} 77 | .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle} 78 | 79 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} 80 | 81 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 82 | 83 | span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; 84 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 85 | background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 86 | 87 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} 88 | .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} 89 | 90 | /* level style*/ 91 | /*.ztree li span.button.level0 { 92 | display:none; 93 | } 94 | .ztree li ul.level0 { 95 | padding:0; 96 | background:none; 97 | }*/ -------------------------------------------------------------------------------- /assets/js/jquery.ztree.core-3.5.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree core v3.5.20 3 | * http://zTree.me/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2016-01-20 12 | */ 13 | (function(q){var H,I,J,K,L,M,u,r={},v={},w={},N={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url",icon:"icon"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text", 14 | url:"",autoParam:[],otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},x=[function(b){var a=b.treeObj,c=f.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated, 15 | [a,c,g])});a.bind(c.CLICK,function(a,c,g,n,h){j.apply(b.callback.onClick,[c,g,n,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,n){j.apply(b.callback.onAsyncSuccess,[a,c,g,n])});a.bind(c.ASYNC_ERROR,function(a,c,g,n,h,f){j.apply(b.callback.onAsyncError,[a,c,g,n,h,f])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])});a.bind(c.SELECTED, 16 | function(a,c,g){j.apply(b.callback.onSelected,[c,g])});a.bind(c.UNSELECTED,function(a,c,g){j.apply(b.callback.onUnSelected,[c,g])})}],y=[function(b){var a=f.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE).unbind(a.SELECTED).unbind(a.UNSELECTED)}],z=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],A=[function(b,a,c,d,e,g){if(c){var n=h.getRoot(b),f=b.data.key.children; 17 | c.level=a;c.tId=b.treeId+"_"+ ++n.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[f]&&c[f].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent=="string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=e;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b, 18 | c)};c.getIndex=function(){return h.getNodeIndex(b,c)};c.getPath=function(){return h.getNodePath(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],t=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",e=null,g="",n="",i=null,m=null,k=null;if(j.eqs(b.type,"mousedown"))n="mousedown";else if(j.eqs(b.type,"mouseup"))n="mouseup";else if(j.eqs(b.type,"contextmenu"))n="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+f.id.SWITCH)!==null)d=j.getNodeMainDom(a).id, 19 | g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+f.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(n="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+f.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(n.length>0&&d.length==0&&(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+f.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(e=h.getNodeCache(c,d),g){case "switchNode":e.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&& 20 | j.apply(c.view.dblClickExpand,[c.treeId,e],c.view.dblClickExpand)?i=H:g="":g="";break;case "clickNode":i=I}switch(n){case "mousedown":m=J;break;case "mouseup":m=K;break;case "dblclick":m=L;break;case "contextmenu":m=M}return{stop:!1,node:e,nodeEventType:g,nodeEventCallback:i,treeEventType:n,treeEventCallback:m}}],B=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}], 21 | C=[],D=[],E=[],F=[],G=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){D.push(b)},addBeforeA:function(b){C.push(b)},addInnerAfterA:function(b){F.push(b)},addInnerBeforeA:function(b){E.push(b)},addInitBind:function(b){x.push(b)},addInitUnBind:function(b){y.push(b)},addInitCache:function(b){z.push(b)},addInitNode:function(b){A.push(b)},addInitProxy:function(b,a){a?t.splice(0,0, 22 | b):t.push(b)},addInitRoot:function(b){B.push(b)},addNodesData:function(b,a,c,d){var e=b.data.key.children;a[e]?c>=a[e].length&&(c=-1):(a[e]=[],c=-1);if(a[e].length>0&&c===0)a[e][0].isFirstNode=!1,i.setNodeLineIcos(b,a[e][0]);else if(a[e].length>0&&c<0)a[e][a[e].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[e][a[e].length-1]);a.isParent=!0;c<0?a[e]=a[e].concat(d):(b=[c,0].concat(d),a[e].splice.apply(a[e],b))},addSelectedNode:function(b,a){var c=h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)}, 23 | addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){G.push(b)},exSetting:function(b){q.extend(!0,N,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,e=D.length;d-1&&g.push(a[f]),g=g.concat(h.getNodesByParamFuzzy(b,a[f][e],c,d));return g},getNodesByFilter:function(b,a,c,d,e){if(!a)return d?null:[];for(var g=b.data.key.children,f=d?null:[],i=0,m=a.length;i0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)=== 38 | "[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?q(b,c?c.treeObj.get(0).ownerDocument:null):q("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,e=c.length;a.tagName&&d0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d,e){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(d)||(d=[d]),b.data.simpleData.enable&&(d=h.transformTozTreeFormat(b,d)),a){var g=k(a,f.id.SWITCH,b),n=k(a,f.id.ICON,b),o=k(a,f.id.UL,b);if(!a.open)i.replaceSwitchClass(a,g,f.folder.CLOSE),i.replaceIcoClass(a,n,f.folder.CLOSE),a.open=!1,o.css({display:"none"});h.addNodesData(b,a,c,d);i.createNodes(b,a.level+1,d,a,c);e||i.expandCollapseParentNode(b,a, 40 | !0)}else h.addNodesData(b,h.getRoot(b),c,d),i.createNodes(b,0,d,null,c)},appendNodes:function(b,a,c,d,e,g,f){if(!c)return[];var j=[],m=b.data.key.children,k=(d?d:h.getRoot(b))[m],l,Q;if(!k||e>=k.length)e=-1;for(var s=0,q=c.length;s0&&(l=i.appendNodes(b,a+1,p[m],p,-1,g,f&&p.open));f&&(i.makeDOMNodeMainBefore(j,b,p),i.makeDOMNodeLine(j,b,p),h.getBeforeA(b, 41 | p,j),i.makeDOMNodeNameBefore(j,b,p),h.getInnerBeforeA(b,p,j),i.makeDOMNodeIcon(j,b,p),h.getInnerAfterA(b,p,j),i.makeDOMNodeNameAfter(j,b,p),h.getAfterA(b,p,j),p.isParent&&p.open&&i.makeUlHtml(b,p,j,l.join("")),i.makeDOMNodeMainAfter(j,b,p),h.addCreatedNode(b,p))}return j},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),d=k(a,b));var e=k(a,f.id.UL,b);e.get(0)&&e.remove();e=i.appendNodes(b,a.level+1,a[b.data.key.children],a,-1,!1,!0); 42 | i.makeUlHtml(b,a,c,e.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var e,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,f.id.ICON,b).attr({style:"","class":f.className.BUTTON+" "+f.className.ICO_LOADING});var n={};for(e=0,g=b.async.autoParam.length;a&&e1&&(m=o[1],o=o[0]);n[m]=a[o]}if(j.isArray(b.async.otherParam))for(e= 43 | 0,g=b.async.otherParam.length;e=0;e--)if(g=d[e],a===g||!a&&(!c||c!==g))if(k(g, 45 | f.id.A,b).removeClass(f.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}else d.splice(e,1),b.treeObj.trigger(f.event.UNSELECTED,[b.treeId,g])},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(f.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,a,c,d,e){if(c&&c.length!=0){var g=h.getRoot(b),j=b.data.key.children, 46 | j=!d||d.open||!!k(d[j][0],b).get(0);g.createdNodes=[];var a=i.appendNodes(b,a,c,d,e,!0,j),o,m;d?(d=k(d,f.id.UL,b),d.get(0)&&(o=d)):o=b.treeObj;o&&(e>=0&&(m=o.children()[e]),e>=0&&m?q(m).before(a.join("")):o.append(a.join("")));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),l.unbindTree(b),l.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,e){var g=h.getRoot(b),n=b.data.key.children;if(a){if(g.expandTriggerFlag){var o=e,e=function(){o&& 47 | o();a.open?b.treeObj.trigger(f.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(f.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,f.id.UL,b).get(0)||a[n]&&a[n].length>0&&!k(a[n][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(e,[]);else{var c=k(a,f.id.UL,b),g=k(a,f.id.SWITCH,b),m=k(a,f.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&m.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,g,f.folder.OPEN), 48 | i.replaceIcoClass(a,m,f.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(e,[])):a[n]&&a[n].length>0?c.slideDown(b.view.expandSpeed,e):(c.show(),j.apply(e,[]))):(i.replaceSwitchClass(a,g,f.folder.CLOSE),i.replaceIcoClass(a,m,f.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[n]&&a[n].length>0)?(c.hide(),j.apply(e,[])):c.slideUp(b.view.expandSpeed,e))):j.apply(e,[])}}else j.apply(e,[])},expandCollapseParentNode:function(b,a,c,d,e){a&&(a.parentTId?(i.expandCollapseNode(b,a,c,d),a.parentTId&& 49 | i.expandCollapseParentNode(b,a.getParentNode(),c,d,e)):i.expandCollapseNode(b,a,c,d,e))},expandCollapseSonNode:function(b,a,c,d,e){var g=h.getRoot(b),f=b.data.key.children,g=a?a[f]:g[f],f=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,l=g.length;k=0;d--)if(a===c[d])return!0;return!1},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?d:d.replace(/&/g,"&").replace(//g,">");b.push("",d,"")},makeDOMNodeLine:function(b,a,c){b.push("")},makeDOMNodeMainAfter:function(b){b.push("")},makeDOMNodeMainBefore:function(b,a,c){b.push("
  • ")},makeDOMNodeNameAfter:function(b){b.push("")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),e=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),n=[],k;for(k in g)n.push(k,":",g[k],";");b.push("0?"href='"+e+"'":""," target='",i.makeNodeTarget(c),"' style='",n.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"'").replace(//g,">"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"]; 53 | a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?f.folder.OPEN:f.folder.CLOSE):c.push(f.folder.DOCU));return f.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a[b.data.key.icon];d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b, 54 | a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(f.line.ROOT):a.level==0&&a.isFirstNode?c.push(f.line.ROOTS):a.isLastNode?c.push(f.line.BOTTOM):c.push(f.line.CENTER):c.push(f.line.NOLINE);a.isParent?c.push(a.open?f.folder.OPEN:f.folder.CLOSE):c.push(f.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return f.className.BUTTON+" "+f.className.LEVEL+b.level+" "+f.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"}, 55 | makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("
      ");c.push(d);c.push("
    ")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?f.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var e=0,g=d.length;e0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,e=a.parentTId?a.getParentNode(): 57 | c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,j=e[d].length;g0){var m=e[d][g-1],g=k(m,f.id.UL,b),j=k(m,f.id.SWITCH,b);o=k(m,f.id.ICON,b);e==c?e[d].length==1?i.replaceSwitchClass(m,j,f.line.ROOT):(c=k(e[d][0],f.id.SWITCH,b),i.replaceSwitchClass(e[d][0],c,f.line.ROOTS),i.replaceSwitchClass(m,j,f.line.BOTTOM)):i.replaceSwitchClass(m,j,f.line.BOTTOM);g.removeClass(f.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case f.folder.OPEN:case f.folder.CLOSE:case f.folder.DOCU:b[b.length- 59 | 1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case f.line.ROOT:case f.line.ROOTS:case f.line.CENTER:case f.line.BOTTOM:case f.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case f.folder.OPEN:case f.folder.CLOSE:case f.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==f.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b,null,a);k(a, 60 | f.id.A,b).addClass(f.node.CURSELECTED);h.addSelectedNode(b,a);b.treeObj.trigger(f.event.SELECTED,[b.treeId,a])},setNodeFontCss:function(b,a){var c=k(a,f.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,f.id.SWITCH,b),d=k(a,f.id.UL,b),e=k(a,f.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(f.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");e.removeAttr("style"); 61 | e.attr("style",i.makeNodeIcoStyle(b,a));e.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=k(a,f.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,f.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,f.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,f.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"): 62 | c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};q.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch",NAME:"node_name"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error", 63 | REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:l,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])}, 64 | init:function(b,a,c){var d=j.clone(N);q.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);l.unbindTree(d);l.bindTree(d);l.unbindEvent(d);l.bindEvent(d);c={setting:d,addNodes:function(a,b,c,f){function h(){i.addNodes(d,a,b,l,f==!0)} 65 | a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var k=parseInt(b,10);isNaN(k)?(f=!!c,c=b,b=-1):b=k;if(!c)return null;var l=j.clone(j.isArray(c)?c:[c]);j.canAsync(d,a)?i.asyncNode(d,a,f,h):h();return l},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,f,m){function l(){var b=k(a,d).get(0);if(b&&f!==!1)if(b.scrollIntoView)b.scrollIntoView(!1); 66 | else try{b.focus().blur()}catch(c){}}if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((m=!!m)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(m&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=m;!j.canAsync(d,a)&&c?i.expandCollapseSonNode(d,a,b,!0,l):(a.open=!b,i.switchNode(this.setting,a),l());return b}, 67 | getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,f){b=!!b;return!a||typeof a!="function"? 68 | b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,f)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),f=0,i=c[b].length;f0?i.createNodes(d,0,b[a],null,-1):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d); 72 | return c}};var O=q.fn.zTree,k=j.$,f=O.consts})(jQuery); 73 | -------------------------------------------------------------------------------- /assets/js/jquery.ztree.excheck-3.5.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree excheck v3.5.20 3 | * http://zTree.me/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2016-01-20 12 | */ 13 | (function($){ 14 | //default consts of excheck 15 | var _consts = { 16 | event: { 17 | CHECK: "ztree_check" 18 | }, 19 | id: { 20 | CHECK: "_check" 21 | }, 22 | checkbox: { 23 | STYLE: "checkbox", 24 | DEFAULT: "chk", 25 | DISABLED: "disable", 26 | FALSE: "false", 27 | TRUE: "true", 28 | FULL: "full", 29 | PART: "part", 30 | FOCUS: "focus" 31 | }, 32 | radio: { 33 | STYLE: "radio", 34 | TYPE_ALL: "all", 35 | TYPE_LEVEL: "level" 36 | } 37 | }, 38 | //default setting of excheck 39 | _setting = { 40 | check: { 41 | enable: false, 42 | autoCheckTrigger: false, 43 | chkStyle: _consts.checkbox.STYLE, 44 | nocheckInherit: false, 45 | chkDisabledInherit: false, 46 | radioType: _consts.radio.TYPE_LEVEL, 47 | chkboxType: { 48 | "Y": "ps", 49 | "N": "ps" 50 | } 51 | }, 52 | data: { 53 | key: { 54 | checked: "checked" 55 | } 56 | }, 57 | callback: { 58 | beforeCheck:null, 59 | onCheck:null 60 | } 61 | }, 62 | //default root of excheck 63 | _initRoot = function (setting) { 64 | var r = data.getRoot(setting); 65 | r.radioCheckedList = []; 66 | }, 67 | //default cache of excheck 68 | _initCache = function(treeId) {}, 69 | //default bind event of excheck 70 | _bindEvent = function(setting) { 71 | var o = setting.treeObj, 72 | c = consts.event; 73 | o.bind(c.CHECK, function (event, srcEvent, treeId, node) { 74 | event.srcEvent = srcEvent; 75 | tools.apply(setting.callback.onCheck, [event, treeId, node]); 76 | }); 77 | }, 78 | _unbindEvent = function(setting) { 79 | var o = setting.treeObj, 80 | c = consts.event; 81 | o.unbind(c.CHECK); 82 | }, 83 | //default event proxy of excheck 84 | _eventProxy = function(e) { 85 | var target = e.target, 86 | setting = data.getSetting(e.data.treeId), 87 | tId = "", node = null, 88 | nodeEventType = "", treeEventType = "", 89 | nodeEventCallback = null, treeEventCallback = null; 90 | 91 | if (tools.eqs(e.type, "mouseover")) { 92 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 93 | tId = tools.getNodeMainDom(target).id; 94 | nodeEventType = "mouseoverCheck"; 95 | } 96 | } else if (tools.eqs(e.type, "mouseout")) { 97 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 98 | tId = tools.getNodeMainDom(target).id; 99 | nodeEventType = "mouseoutCheck"; 100 | } 101 | } else if (tools.eqs(e.type, "click")) { 102 | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) { 103 | tId = tools.getNodeMainDom(target).id; 104 | nodeEventType = "checkNode"; 105 | } 106 | } 107 | if (tId.length>0) { 108 | node = data.getNodeCache(setting, tId); 109 | switch (nodeEventType) { 110 | case "checkNode" : 111 | nodeEventCallback = _handler.onCheckNode; 112 | break; 113 | case "mouseoverCheck" : 114 | nodeEventCallback = _handler.onMouseoverCheck; 115 | break; 116 | case "mouseoutCheck" : 117 | nodeEventCallback = _handler.onMouseoutCheck; 118 | break; 119 | } 120 | } 121 | var proxyResult = { 122 | stop: nodeEventType === "checkNode", 123 | node: node, 124 | nodeEventType: nodeEventType, 125 | nodeEventCallback: nodeEventCallback, 126 | treeEventType: treeEventType, 127 | treeEventCallback: treeEventCallback 128 | }; 129 | return proxyResult 130 | }, 131 | //default init node of excheck 132 | _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { 133 | if (!n) return; 134 | var checkedKey = setting.data.key.checked; 135 | if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true"); 136 | n[checkedKey] = !!n[checkedKey]; 137 | n.checkedOld = n[checkedKey]; 138 | if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true"); 139 | n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck); 140 | if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true"); 141 | n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled); 142 | if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true"); 143 | n.halfCheck = !!n.halfCheck; 144 | n.check_Child_State = -1; 145 | n.check_Focus = false; 146 | n.getCheckStatus = function() {return data.getCheckStatus(setting, n);}; 147 | 148 | if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && n[checkedKey] ) { 149 | var r = data.getRoot(setting); 150 | r.radioCheckedList.push(n); 151 | } 152 | }, 153 | //add dom for check 154 | _beforeA = function(setting, node, html) { 155 | var checkedKey = setting.data.key.checked; 156 | if (setting.check.enable) { 157 | data.makeChkFlag(setting, node); 158 | html.push(""); 159 | } 160 | }, 161 | //update zTreeObj, add method of check 162 | _zTreeTools = function(setting, zTreeTools) { 163 | zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) { 164 | var checkedKey = this.setting.data.key.checked; 165 | if (node.chkDisabled === true) return; 166 | if (checked !== true && checked !== false) { 167 | checked = !node[checkedKey]; 168 | } 169 | callbackFlag = !!callbackFlag; 170 | 171 | if (node[checkedKey] === checked && !checkTypeFlag) { 172 | return; 173 | } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) { 174 | return; 175 | } 176 | if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) { 177 | node[checkedKey] = checked; 178 | var checkObj = $$(node, consts.id.CHECK, this.setting); 179 | if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); 180 | view.setChkClass(this.setting, checkObj, node); 181 | view.repairParentChkClassWithSelf(this.setting, node); 182 | if (callbackFlag) { 183 | this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]); 184 | } 185 | } 186 | } 187 | 188 | zTreeTools.checkAllNodes = function(checked) { 189 | view.repairAllChk(this.setting, !!checked); 190 | } 191 | 192 | zTreeTools.getCheckedNodes = function(checked) { 193 | var childKey = this.setting.data.key.children; 194 | checked = (checked !== false); 195 | return data.getTreeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey], checked); 196 | } 197 | 198 | zTreeTools.getChangeCheckedNodes = function() { 199 | var childKey = this.setting.data.key.children; 200 | return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey]); 201 | } 202 | 203 | zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) { 204 | disabled = !!disabled; 205 | inheritParent = !!inheritParent; 206 | inheritChildren = !!inheritChildren; 207 | view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren); 208 | view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent); 209 | } 210 | 211 | var _updateNode = zTreeTools.updateNode; 212 | zTreeTools.updateNode = function(node, checkTypeFlag) { 213 | if (_updateNode) _updateNode.apply(zTreeTools, arguments); 214 | if (!node || !this.setting.check.enable) return; 215 | var nObj = $$(node, this.setting); 216 | if (nObj.get(0) && tools.uCanDo(this.setting)) { 217 | var checkObj = $$(node, consts.id.CHECK, this.setting); 218 | if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); 219 | view.setChkClass(this.setting, checkObj, node); 220 | view.repairParentChkClassWithSelf(this.setting, node); 221 | } 222 | } 223 | }, 224 | //method of operate data 225 | _data = { 226 | getRadioCheckedList: function(setting) { 227 | var checkedList = data.getRoot(setting).radioCheckedList; 228 | for (var i=0, j=checkedList.length; i -1 && node.check_Child_State < 2) : (node.check_Child_State > 0))) 242 | }; 243 | return r; 244 | }, 245 | getTreeCheckedNodes: function(setting, nodes, checked, results) { 246 | if (!nodes) return []; 247 | var childKey = setting.data.key.children, 248 | checkedKey = setting.data.key.checked, 249 | onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL); 250 | results = !results ? [] : results; 251 | for (var i = 0, l = nodes.length; i < l; i++) { 252 | if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) { 253 | results.push(nodes[i]); 254 | if(onlyOne) { 255 | break; 256 | } 257 | } 258 | data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results); 259 | if(onlyOne && results.length > 0) { 260 | break; 261 | } 262 | } 263 | return results; 264 | }, 265 | getTreeChangeCheckedNodes: function(setting, nodes, results) { 266 | if (!nodes) return []; 267 | var childKey = setting.data.key.children, 268 | checkedKey = setting.data.key.checked; 269 | results = !results ? [] : results; 270 | for (var i = 0, l = nodes.length; i < l; i++) { 271 | if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) { 272 | results.push(nodes[i]); 273 | } 274 | data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results); 275 | } 276 | return results; 277 | }, 278 | makeChkFlag: function(setting, node) { 279 | if (!node) return; 280 | var childKey = setting.data.key.children, 281 | checkedKey = setting.data.key.checked, 282 | chkFlag = -1; 283 | if (node[childKey]) { 284 | for (var i = 0, l = node[childKey].length; i < l; i++) { 285 | var cNode = node[childKey][i]; 286 | var tmp = -1; 287 | if (setting.check.chkStyle == consts.radio.STYLE) { 288 | if (cNode.nocheck === true || cNode.chkDisabled === true) { 289 | tmp = cNode.check_Child_State; 290 | } else if (cNode.halfCheck === true) { 291 | tmp = 2; 292 | } else if (cNode[checkedKey]) { 293 | tmp = 2; 294 | } else { 295 | tmp = cNode.check_Child_State > 0 ? 2:0; 296 | } 297 | if (tmp == 2) { 298 | chkFlag = 2; break; 299 | } else if (tmp == 0){ 300 | chkFlag = 0; 301 | } 302 | } else if (setting.check.chkStyle == consts.checkbox.STYLE) { 303 | if (cNode.nocheck === true || cNode.chkDisabled === true) { 304 | tmp = cNode.check_Child_State; 305 | } else if (cNode.halfCheck === true) { 306 | tmp = 1; 307 | } else if (cNode[checkedKey] ) { 308 | tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1; 309 | } else { 310 | tmp = (cNode.check_Child_State > 0) ? 1 : 0; 311 | } 312 | if (tmp === 1) { 313 | chkFlag = 1; break; 314 | } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) { 315 | chkFlag = 1; break; 316 | } else if (chkFlag === 2 && tmp > -1 && tmp < 2) { 317 | chkFlag = 1; break; 318 | } else if (tmp > -1) { 319 | chkFlag = tmp; 320 | } 321 | } 322 | } 323 | } 324 | node.check_Child_State = chkFlag; 325 | } 326 | }, 327 | //method of event proxy 328 | _event = { 329 | 330 | }, 331 | //method of event handler 332 | _handler = { 333 | onCheckNode: function (event, node) { 334 | if (node.chkDisabled === true) return false; 335 | var setting = data.getSetting(event.data.treeId), 336 | checkedKey = setting.data.key.checked; 337 | if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true; 338 | node[checkedKey] = !node[checkedKey]; 339 | view.checkNodeRelation(setting, node); 340 | var checkObj = $$(node, consts.id.CHECK, setting); 341 | view.setChkClass(setting, checkObj, node); 342 | view.repairParentChkClassWithSelf(setting, node); 343 | setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]); 344 | return true; 345 | }, 346 | onMouseoverCheck: function(event, node) { 347 | if (node.chkDisabled === true) return false; 348 | var setting = data.getSetting(event.data.treeId), 349 | checkObj = $$(node, consts.id.CHECK, setting); 350 | node.check_Focus = true; 351 | view.setChkClass(setting, checkObj, node); 352 | return true; 353 | }, 354 | onMouseoutCheck: function(event, node) { 355 | if (node.chkDisabled === true) return false; 356 | var setting = data.getSetting(event.data.treeId), 357 | checkObj = $$(node, consts.id.CHECK, setting); 358 | node.check_Focus = false; 359 | view.setChkClass(setting, checkObj, node); 360 | return true; 361 | } 362 | }, 363 | //method of tools for zTree 364 | _tools = { 365 | 366 | }, 367 | //method of operate ztree dom 368 | _view = { 369 | checkNodeRelation: function(setting, node) { 370 | var pNode, i, l, 371 | childKey = setting.data.key.children, 372 | checkedKey = setting.data.key.checked, 373 | r = consts.radio; 374 | if (setting.check.chkStyle == r.STYLE) { 375 | var checkedList = data.getRadioCheckedList(setting); 376 | if (node[checkedKey]) { 377 | if (setting.check.radioType == r.TYPE_ALL) { 378 | for (i = checkedList.length-1; i >= 0; i--) { 379 | pNode = checkedList[i]; 380 | if (pNode[checkedKey] && pNode != node) { 381 | pNode[checkedKey] = false; 382 | checkedList.splice(i, 1); 383 | 384 | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); 385 | if (pNode.parentTId != node.parentTId) { 386 | view.repairParentChkClassWithSelf(setting, pNode); 387 | } 388 | } 389 | } 390 | checkedList.push(node); 391 | } else { 392 | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); 393 | for (i = 0, l = parentNode[childKey].length; i < l; i++) { 394 | pNode = parentNode[childKey][i]; 395 | if (pNode[checkedKey] && pNode != node) { 396 | pNode[checkedKey] = false; 397 | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); 398 | } 399 | } 400 | } 401 | } else if (setting.check.radioType == r.TYPE_ALL) { 402 | for (i = 0, l = checkedList.length; i < l; i++) { 403 | if (node == checkedList[i]) { 404 | checkedList.splice(i, 1); 405 | break; 406 | } 407 | } 408 | } 409 | 410 | } else { 411 | if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) { 412 | view.setSonNodeCheckBox(setting, node, true); 413 | } 414 | if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) { 415 | view.setSonNodeCheckBox(setting, node, false); 416 | } 417 | if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) { 418 | view.setParentNodeCheckBox(setting, node, true); 419 | } 420 | if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) { 421 | view.setParentNodeCheckBox(setting, node, false); 422 | } 423 | } 424 | }, 425 | makeChkClass: function(setting, node) { 426 | var checkedKey = setting.data.key.checked, 427 | c = consts.checkbox, r = consts.radio, 428 | fullStyle = ""; 429 | if (node.chkDisabled === true) { 430 | fullStyle = c.DISABLED; 431 | } else if (node.halfCheck) { 432 | fullStyle = c.PART; 433 | } else if (setting.check.chkStyle == r.STYLE) { 434 | fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART; 435 | } else { 436 | fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART); 437 | } 438 | var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle; 439 | chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName; 440 | return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName; 441 | }, 442 | repairAllChk: function(setting, checked) { 443 | if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { 444 | var checkedKey = setting.data.key.checked, 445 | childKey = setting.data.key.children, 446 | root = data.getRoot(setting); 447 | for (var i = 0, l = root[childKey].length; i 0) { 474 | view.repairParentChkClass(setting, node[childKey][0]); 475 | } else { 476 | view.repairParentChkClass(setting, node); 477 | } 478 | }, 479 | repairSonChkDisabled: function(setting, node, chkDisabled, inherit) { 480 | if (!node) return; 481 | var childKey = setting.data.key.children; 482 | if (node.chkDisabled != chkDisabled) { 483 | node.chkDisabled = chkDisabled; 484 | } 485 | view.repairChkClass(setting, node); 486 | if (node[childKey] && inherit) { 487 | for (var i = 0, l = node[childKey].length; i < l; i++) { 488 | var sNode = node[childKey][i]; 489 | view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit); 490 | } 491 | } 492 | }, 493 | repairParentChkDisabled: function(setting, node, chkDisabled, inherit) { 494 | if (!node) return; 495 | if (node.chkDisabled != chkDisabled && inherit) { 496 | node.chkDisabled = chkDisabled; 497 | } 498 | view.repairChkClass(setting, node); 499 | view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit); 500 | }, 501 | setChkClass: function(setting, obj, node) { 502 | if (!obj) return; 503 | if (node.nocheck === true) { 504 | obj.hide(); 505 | } else { 506 | obj.show(); 507 | } 508 | obj.attr('class', view.makeChkClass(setting, node)); 509 | }, 510 | setParentNodeCheckBox: function(setting, node, value, srcNode) { 511 | var childKey = setting.data.key.children, 512 | checkedKey = setting.data.key.checked, 513 | checkObj = $$(node, consts.id.CHECK, setting); 514 | if (!srcNode) srcNode = node; 515 | data.makeChkFlag(setting, node); 516 | if (node.nocheck !== true && node.chkDisabled !== true) { 517 | node[checkedKey] = value; 518 | view.setChkClass(setting, checkObj, node); 519 | if (setting.check.autoCheckTrigger && node != srcNode) { 520 | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); 521 | } 522 | } 523 | if (node.parentTId) { 524 | var pSign = true; 525 | if (!value) { 526 | var pNodes = node.getParentNode()[childKey]; 527 | for (var i = 0, l = pNodes.length; i < l; i++) { 528 | if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey]) 529 | || ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) { 530 | pSign = false; 531 | break; 532 | } 533 | } 534 | } 535 | if (pSign) { 536 | view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode); 537 | } 538 | } 539 | }, 540 | setSonNodeCheckBox: function(setting, node, value, srcNode) { 541 | if (!node) return; 542 | var childKey = setting.data.key.children, 543 | checkedKey = setting.data.key.checked, 544 | checkObj = $$(node, consts.id.CHECK, setting); 545 | if (!srcNode) srcNode = node; 546 | 547 | var hasDisable = false; 548 | if (node[childKey]) { 549 | for (var i = 0, l = node[childKey].length; i < l; i++) { 550 | var sNode = node[childKey][i]; 551 | view.setSonNodeCheckBox(setting, sNode, value, srcNode); 552 | if (sNode.chkDisabled === true) hasDisable = true; 553 | } 554 | } 555 | 556 | if (node != data.getRoot(setting) && node.chkDisabled !== true) { 557 | if (hasDisable && node.nocheck !== true) { 558 | data.makeChkFlag(setting, node); 559 | } 560 | if (node.nocheck !== true && node.chkDisabled !== true) { 561 | node[checkedKey] = value; 562 | if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1; 563 | } else { 564 | node.check_Child_State = -1; 565 | } 566 | view.setChkClass(setting, checkObj, node); 567 | if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) { 568 | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); 569 | } 570 | } 571 | 572 | } 573 | }, 574 | 575 | _z = { 576 | tools: _tools, 577 | view: _view, 578 | event: _event, 579 | data: _data 580 | }; 581 | $.extend(true, $.fn.zTree.consts, _consts); 582 | $.extend(true, $.fn.zTree._z, _z); 583 | 584 | var zt = $.fn.zTree, 585 | tools = zt._z.tools, 586 | consts = zt.consts, 587 | view = zt._z.view, 588 | data = zt._z.data, 589 | event = zt._z.event, 590 | $$ = tools.$; 591 | 592 | data.exSetting(_setting); 593 | data.addInitBind(_bindEvent); 594 | data.addInitUnBind(_unbindEvent); 595 | data.addInitCache(_initCache); 596 | data.addInitNode(_initNode); 597 | data.addInitProxy(_eventProxy, true); 598 | data.addInitRoot(_initRoot); 599 | data.addBeforeA(_beforeA); 600 | data.addZTreeTools(_zTreeTools); 601 | 602 | var _createNodes = view.createNodes; 603 | view.createNodes = function(setting, level, nodes, parentNode, index) { 604 | if (_createNodes) _createNodes.apply(view, arguments); 605 | if (!nodes) return; 606 | view.repairParentChkClassWithSelf(setting, parentNode); 607 | } 608 | var _removeNode = view.removeNode; 609 | view.removeNode = function(setting, node) { 610 | var parentNode = node.getParentNode(); 611 | if (_removeNode) _removeNode.apply(view, arguments); 612 | if (!node || !parentNode) return; 613 | view.repairChkClass(setting, parentNode); 614 | view.repairParentChkClass(setting, parentNode); 615 | } 616 | 617 | var _appendNodes = view.appendNodes; 618 | view.appendNodes = function(setting, level, nodes, parentNode, index, initFlag, openFlag) { 619 | var html = ""; 620 | if (_appendNodes) { 621 | html = _appendNodes.apply(view, arguments); 622 | } 623 | if (parentNode) { 624 | data.makeChkFlag(setting, parentNode); 625 | } 626 | return html; 627 | } 628 | })(jQuery); -------------------------------------------------------------------------------- /assets/js/jquery.ztree.excheck-3.5.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree excheck v3.5.20 3 | * http://zTree.me/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2016-01-20 12 | */ 13 | (function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c, 14 | a){if(a.chkDisabled===!0)return!1;var b=g.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=g.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled=== 15 | !0)return!1;var b=g.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var f=g.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=f.length-1;d>=0;d--)b=f[d],b[l]&&b!=a&&(b[l]=!1,f.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!= 16 | a.parentTId&&e.repairParentChkClassWithSelf(c,b));f.push(a)}else{f=a.parentTId?a.getParentNode():g.getRoot(c);for(d=0,h=f[i].length;d-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c, 17 | a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+ 18 | "_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=g.getRoot(c),i=0,l=h[d].length;i0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var f=!1;if(a[h])for(var k=0,m=a[h].length;k0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=g.getRoot(c).radioCheckedList,b=0,d=a.length;b-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,d=!d?[]:d, 24 | f=0,k=a.length;f0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i0?2:0,g==2){h=2;break}else g==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(g=f.nocheck===!0||f.chkDisabled===!0?f.check_Child_State:f.halfCheck===!0?1:f[d]?f.check_Child_State===-1||f.check_Child_State===2?2:1:f.check_Child_State>0?1:0,g===1){h=1;break}else if(g=== 26 | 2&&h>-1&&i>0&&g!==h){h=1;break}else if(h===2&&g>-1&&g<2){h=1;break}else g>-1&&(h=g)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,g=m._z.data,n=k.$;g.exSetting(v);g.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});g.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});g.addInitCache(function(){});g.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]= 27 | k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return g.getCheckStatus(c, 28 | b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&g.getRoot(c).radioCheckedList.push(b)}});g.addInitProxy(function(c){var a=c.target,b=g.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d= 29 | k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=g.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);g.addInitRoot(function(c){g.getRoot(c).radioCheckedList=[]}); 30 | g.addBeforeA(function(c,a,b){c.check.enable&&(g.makeChkFlag(c,a),b.push(""))});g.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,g){var f=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[f]),g=!!g,(a[f]!==b||c)&&!(g&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&& 31 | a.nocheck!==!0))a[f]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),g&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return g.getTreeCheckedNodes(this.setting,g.getRoot(this.setting)[b],a!==!1)}; 32 | a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return g.getTreeChangeCheckedNodes(this.setting,g.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,g){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!g);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,g){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(g==!0||this.setting.check.chkStyle=== 33 | j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d,g){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i,j){var f="";u&&(f=u.apply(e,arguments)); 34 | d&&g.makeChkFlag(c,d);return f}})(jQuery); 35 | -------------------------------------------------------------------------------- /assets/js/jquery.ztree.exedit-3.5.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree exedit v3.5.20 3 | * http://zTree.me/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2016-01-20 12 | */ 13 | (function($){ 14 | //default consts of exedit 15 | var _consts = { 16 | event: { 17 | DRAG: "ztree_drag", 18 | DROP: "ztree_drop", 19 | RENAME: "ztree_rename", 20 | DRAGMOVE:"ztree_dragmove" 21 | }, 22 | id: { 23 | EDIT: "_edit", 24 | INPUT: "_input", 25 | REMOVE: "_remove" 26 | }, 27 | move: { 28 | TYPE_INNER: "inner", 29 | TYPE_PREV: "prev", 30 | TYPE_NEXT: "next" 31 | }, 32 | node: { 33 | CURSELECTED_EDIT: "curSelectedNode_Edit", 34 | TMPTARGET_TREE: "tmpTargetzTree", 35 | TMPTARGET_NODE: "tmpTargetNode" 36 | } 37 | }, 38 | //default setting of exedit 39 | _setting = { 40 | edit: { 41 | enable: false, 42 | editNameSelectAll: false, 43 | showRemoveBtn: true, 44 | showRenameBtn: true, 45 | removeTitle: "remove", 46 | renameTitle: "rename", 47 | drag: { 48 | autoExpandTrigger: false, 49 | isCopy: true, 50 | isMove: true, 51 | prev: true, 52 | next: true, 53 | inner: true, 54 | minMoveSize: 5, 55 | borderMax: 10, 56 | borderMin: -5, 57 | maxShowNodeNum: 5, 58 | autoOpenTime: 500 59 | } 60 | }, 61 | view: { 62 | addHoverDom: null, 63 | removeHoverDom: null 64 | }, 65 | callback: { 66 | beforeDrag:null, 67 | beforeDragOpen:null, 68 | beforeDrop:null, 69 | beforeEditName:null, 70 | beforeRename:null, 71 | onDrag:null, 72 | onDragMove:null, 73 | onDrop:null, 74 | onRename:null 75 | } 76 | }, 77 | //default root of exedit 78 | _initRoot = function (setting) { 79 | var r = data.getRoot(setting), rs = data.getRoots(); 80 | r.curEditNode = null; 81 | r.curEditInput = null; 82 | r.curHoverNode = null; 83 | r.dragFlag = 0; 84 | r.dragNodeShowBefore = []; 85 | r.dragMaskList = new Array(); 86 | rs.showHoverDom = true; 87 | }, 88 | //default cache of exedit 89 | _initCache = function(treeId) {}, 90 | //default bind event of exedit 91 | _bindEvent = function(setting) { 92 | var o = setting.treeObj; 93 | var c = consts.event; 94 | o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) { 95 | tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]); 96 | }); 97 | 98 | o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) { 99 | tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]); 100 | }); 101 | 102 | o.bind(c.DRAGMOVE,function(event, srcEvent, treeId, treeNodes){ 103 | tools.apply(setting.callback.onDragMove,[srcEvent, treeId, treeNodes]); 104 | }); 105 | 106 | o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) { 107 | tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]); 108 | }); 109 | }, 110 | _unbindEvent = function(setting) { 111 | var o = setting.treeObj; 112 | var c = consts.event; 113 | o.unbind(c.RENAME); 114 | o.unbind(c.DRAG); 115 | o.unbind(c.DRAGMOVE); 116 | o.unbind(c.DROP); 117 | }, 118 | //default event proxy of exedit 119 | _eventProxy = function(e) { 120 | var target = e.target, 121 | setting = data.getSetting(e.data.treeId), 122 | relatedTarget = e.relatedTarget, 123 | tId = "", node = null, 124 | nodeEventType = "", treeEventType = "", 125 | nodeEventCallback = null, treeEventCallback = null, 126 | tmp = null; 127 | 128 | if (tools.eqs(e.type, "mouseover")) { 129 | tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); 130 | if (tmp) { 131 | tId = tools.getNodeMainDom(tmp).id; 132 | nodeEventType = "hoverOverNode"; 133 | } 134 | } else if (tools.eqs(e.type, "mouseout")) { 135 | tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); 136 | if (!tmp) { 137 | tId = "remove"; 138 | nodeEventType = "hoverOutNode"; 139 | } 140 | } else if (tools.eqs(e.type, "mousedown")) { 141 | tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]); 142 | if (tmp) { 143 | tId = tools.getNodeMainDom(tmp).id; 144 | nodeEventType = "mousedownNode"; 145 | } 146 | } 147 | if (tId.length>0) { 148 | node = data.getNodeCache(setting, tId); 149 | switch (nodeEventType) { 150 | case "mousedownNode" : 151 | nodeEventCallback = _handler.onMousedownNode; 152 | break; 153 | case "hoverOverNode" : 154 | nodeEventCallback = _handler.onHoverOverNode; 155 | break; 156 | case "hoverOutNode" : 157 | nodeEventCallback = _handler.onHoverOutNode; 158 | break; 159 | } 160 | } 161 | var proxyResult = { 162 | stop: false, 163 | node: node, 164 | nodeEventType: nodeEventType, 165 | nodeEventCallback: nodeEventCallback, 166 | treeEventType: treeEventType, 167 | treeEventCallback: treeEventCallback 168 | }; 169 | return proxyResult 170 | }, 171 | //default init node of exedit 172 | _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { 173 | if (!n) return; 174 | n.isHover = false; 175 | n.editNameFlag = false; 176 | }, 177 | //update zTreeObj, add method of edit 178 | _zTreeTools = function(setting, zTreeTools) { 179 | zTreeTools.cancelEditName = function(newName) { 180 | var root = data.getRoot(this.setting); 181 | if (!root.curEditNode) return; 182 | view.cancelCurEditNode(this.setting, newName?newName:null, true); 183 | } 184 | zTreeTools.copyNode = function(targetNode, node, moveType, isSilent) { 185 | if (!node) return null; 186 | if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null; 187 | var _this = this, 188 | newNode = tools.clone(node); 189 | if (!targetNode) { 190 | targetNode = null; 191 | moveType = consts.move.TYPE_INNER; 192 | } 193 | if (moveType == consts.move.TYPE_INNER) { 194 | function copyCallback() { 195 | view.addNodes(_this.setting, targetNode, -1, [newNode], isSilent); 196 | } 197 | 198 | if (tools.canAsync(this.setting, targetNode)) { 199 | view.asyncNode(this.setting, targetNode, isSilent, copyCallback); 200 | } else { 201 | copyCallback(); 202 | } 203 | } else { 204 | view.addNodes(this.setting, targetNode.parentNode, -1, [newNode], isSilent); 205 | view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent); 206 | } 207 | return newNode; 208 | } 209 | zTreeTools.editName = function(node) { 210 | if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return; 211 | if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true); 212 | view.editNode(this.setting, node) 213 | } 214 | zTreeTools.moveNode = function(targetNode, node, moveType, isSilent) { 215 | if (!node) return node; 216 | if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) { 217 | return null; 218 | } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) { 219 | return null; 220 | } else if (!targetNode) { 221 | targetNode = null; 222 | } 223 | var _this = this; 224 | function moveCallback() { 225 | view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent); 226 | } 227 | if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) { 228 | view.asyncNode(this.setting, targetNode, isSilent, moveCallback); 229 | } else { 230 | moveCallback(); 231 | } 232 | return node; 233 | } 234 | zTreeTools.setEditable = function(editable) { 235 | this.setting.edit.enable = editable; 236 | return this.refresh(); 237 | } 238 | }, 239 | //method of operate data 240 | _data = { 241 | setSonNodeLevel: function(setting, parentNode, node) { 242 | if (!node) return; 243 | var childKey = setting.data.key.children; 244 | node.level = (parentNode)? parentNode.level + 1 : 0; 245 | if (!node[childKey]) return; 246 | for (var i = 0, l = node[childKey].length; i < l; i++) { 247 | if (node[childKey][i]) data.setSonNodeLevel(setting, node, node[childKey][i]); 248 | } 249 | } 250 | }, 251 | //method of event proxy 252 | _event = { 253 | 254 | }, 255 | //method of event handler 256 | _handler = { 257 | onHoverOverNode: function(event, node) { 258 | var setting = data.getSetting(event.data.treeId), 259 | root = data.getRoot(setting); 260 | if (root.curHoverNode != node) { 261 | _handler.onHoverOutNode(event); 262 | } 263 | root.curHoverNode = node; 264 | view.addHoverDom(setting, node); 265 | }, 266 | onHoverOutNode: function(event, node) { 267 | var setting = data.getSetting(event.data.treeId), 268 | root = data.getRoot(setting); 269 | if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) { 270 | view.removeTreeDom(setting, root.curHoverNode); 271 | root.curHoverNode = null; 272 | } 273 | }, 274 | onMousedownNode: function(eventMouseDown, _node) { 275 | var i,l, 276 | setting = data.getSetting(eventMouseDown.data.treeId), 277 | root = data.getRoot(setting), roots = data.getRoots(); 278 | //right click can't drag & drop 279 | if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true; 280 | 281 | //input of edit node name can't drag & drop 282 | var target = eventMouseDown.target, 283 | _nodes = data.getRoot(setting).curSelectedList, 284 | nodes = []; 285 | if (!data.isSelectedNode(setting, _node)) { 286 | nodes = [_node]; 287 | } else { 288 | for (i=0, l=_nodes.length; i1) { 356 | var pNodes = nodes[0].parentTId ? nodes[0].getParentNode()[childKey] : data.getNodes(setting); 357 | tmpNodes = []; 358 | for (i=0, l=pNodes.length; i -1 && (lastIndex+1) !== i) { 361 | isOrder = false; 362 | } 363 | tmpNodes.push(pNodes[i]); 364 | lastIndex = i; 365 | } 366 | if (nodes.length === tmpNodes.length) { 367 | nodes = tmpNodes; 368 | break; 369 | } 370 | } 371 | } 372 | if (isOrder) { 373 | preNode = nodes[0].getPreNode(); 374 | nextNode = nodes[nodes.length-1].getNextNode(); 375 | } 376 | 377 | //set node in selected 378 | curNode = $$("
      ", setting); 379 | for (i=0, l=nodes.length; i0); 383 | view.removeTreeDom(setting, tmpNode); 384 | 385 | if (i > setting.edit.drag.maxShowNodeNum-1) { 386 | continue; 387 | } 388 | 389 | tmpDom = $$("
    • ", setting); 390 | tmpDom.append($$(tmpNode, consts.id.A, setting).clone()); 391 | tmpDom.css("padding", "0"); 392 | tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED); 393 | curNode.append(tmpDom); 394 | if (i == setting.edit.drag.maxShowNodeNum-1) { 395 | tmpDom = $$("
    • ...
    • ", setting); 396 | curNode.append(tmpDom); 397 | } 398 | } 399 | curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp"); 400 | curNode.addClass(setting.treeObj.attr("class")); 401 | curNode.appendTo(body); 402 | 403 | tmpArrow = $$("", setting); 404 | tmpArrow.attr("id", "zTreeMove_arrow_tmp"); 405 | tmpArrow.appendTo(body); 406 | 407 | setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]); 408 | } 409 | 410 | if (root.dragFlag == 1) { 411 | if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft()+2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) { 412 | var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget); 413 | event.target = (xT.length > 0) ? xT.get(0) : event.target; 414 | } else if (tmpTarget) { 415 | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); 416 | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) 417 | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); 418 | } 419 | tmpTarget = null; 420 | tmpTargetNodeId = null; 421 | 422 | //judge drag & drop in multi ztree 423 | isOtherTree = false; 424 | targetSetting = setting; 425 | var settings = data.getSettings(); 426 | for (var s in settings) { 427 | if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId 428 | && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length>0)) { 429 | isOtherTree = true; 430 | targetSetting = settings[s]; 431 | } 432 | } 433 | 434 | var docScrollTop = doc.scrollTop(), 435 | docScrollLeft = doc.scrollLeft(), 436 | treeOffset = targetSetting.treeObj.offset(), 437 | scrollHeight = targetSetting.treeObj.get(0).scrollHeight, 438 | scrollWidth = targetSetting.treeObj.get(0).scrollWidth, 439 | dTop = (event.clientY + docScrollTop - treeOffset.top), 440 | dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop), 441 | dLeft = (event.clientX + docScrollLeft - treeOffset.left), 442 | dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft), 443 | isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin), 444 | isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin), 445 | isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin), 446 | isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin), 447 | isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin, 448 | isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0), 449 | isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height()+10) >= scrollHeight), 450 | isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0), 451 | isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width()+10) >= scrollWidth); 452 | 453 | if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) { 454 | //get node
    • dom 455 | var targetObj = event.target; 456 | while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) { 457 | targetObj = targetObj.parentNode; 458 | } 459 | 460 | var canMove = true; 461 | //don't move to self or children of self 462 | for (i=0, l=nodes.length; i 0) { 468 | canMove = false; 469 | break; 470 | } 471 | } 472 | if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) { 473 | tmpTarget = $(targetObj); 474 | tmpTargetNodeId = targetObj.id; 475 | } 476 | } 477 | 478 | //the mouse must be in zTree 479 | tmpNode = nodes[0]; 480 | if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) { 481 | //judge mouse move in root of ztree 482 | if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) { 483 | tmpTarget = targetSetting.treeObj; 484 | } 485 | //auto scroll top 486 | if (isTop) { 487 | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()-10); 488 | } else if (isBottom) { 489 | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()+10); 490 | } 491 | if (isLeft) { 492 | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()-10); 493 | } else if (isRight) { 494 | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+10); 495 | } 496 | //auto scroll left 497 | if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) { 498 | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+ tmpTarget.offset().left - targetSetting.treeObj.offset().left); 499 | } 500 | } 501 | 502 | curNode.css({ 503 | "top": (event.clientY + docScrollTop + 3) + "px", 504 | "left": (event.clientX + docScrollLeft + 3) + "px" 505 | }); 506 | 507 | var dX = 0; 508 | var dY = 0; 509 | if (tmpTarget && tmpTarget.attr("id")!=targetSetting.treeId) { 510 | var tmpTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId), 511 | isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy), 512 | isPrev = !!(preNode && tmpTargetNodeId === preNode.tId), 513 | isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId), 514 | isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId), 515 | canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev), 516 | canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next), 517 | canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !tmpTargetNode.isParent) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner); 518 | if (!canPrev && !canNext && !canInner) { 519 | tmpTarget = null; 520 | tmpTargetNodeId = ""; 521 | moveType = consts.move.TYPE_INNER; 522 | tmpArrow.css({ 523 | "display":"none" 524 | }); 525 | if (window.zTreeMoveTimer) { 526 | clearTimeout(window.zTreeMoveTimer); 527 | window.zTreeMoveTargetNodeTId = null 528 | } 529 | } else { 530 | var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget), 531 | tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()), 532 | tmpTop = tmpTargetA.offset().top, 533 | tmpLeft = tmpTargetA.offset().left, 534 | prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1) ) : -1, 535 | nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0) ) : -1, 536 | dY_percent = (event.clientY + docScrollTop - tmpTop)/tmpTargetA.height(); 537 | if ((prevPercent==1 ||dY_percent<=prevPercent && dY_percent>=-.2) && canPrev) { 538 | dX = 1 - tmpArrow.width(); 539 | dY = tmpTop - tmpArrow.height()/2; 540 | moveType = consts.move.TYPE_PREV; 541 | } else if ((nextPercent==0 || dY_percent>=nextPercent && dY_percent<=1.2) && canNext) { 542 | dX = 1 - tmpArrow.width(); 543 | dY = (tmpNextA == null || (tmpTargetNode.isParent && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height()/2) : (tmpNextA.offset().top - tmpArrow.height()/2); 544 | moveType = consts.move.TYPE_NEXT; 545 | }else { 546 | dX = 5 - tmpArrow.width(); 547 | dY = tmpTop; 548 | moveType = consts.move.TYPE_INNER; 549 | } 550 | tmpArrow.css({ 551 | "display":"block", 552 | "top": dY + "px", 553 | "left": (tmpLeft + dX) + "px" 554 | }); 555 | tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType); 556 | 557 | if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) { 558 | startTime = (new Date()).getTime(); 559 | } 560 | if (tmpTargetNode && tmpTargetNode.isParent && moveType == consts.move.TYPE_INNER) { 561 | var startTimer = true; 562 | if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) { 563 | clearTimeout(window.zTreeMoveTimer); 564 | window.zTreeMoveTargetNodeTId = null; 565 | }else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) { 566 | startTimer = false; 567 | } 568 | if (startTimer) { 569 | window.zTreeMoveTimer = setTimeout(function() { 570 | if (moveType != consts.move.TYPE_INNER) return; 571 | if (tmpTargetNode && tmpTargetNode.isParent && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime 572 | && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) { 573 | view.switchNode(targetSetting, tmpTargetNode); 574 | if (targetSetting.edit.drag.autoExpandTrigger) { 575 | targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]); 576 | } 577 | } 578 | }, targetSetting.edit.drag.autoOpenTime+50); 579 | window.zTreeMoveTargetNodeTId = tmpTargetNode.tId; 580 | } 581 | } 582 | } 583 | } else { 584 | moveType = consts.move.TYPE_INNER; 585 | if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) { 586 | tmpTarget.addClass(consts.node.TMPTARGET_TREE); 587 | } else { 588 | tmpTarget = null; 589 | } 590 | tmpArrow.css({ 591 | "display":"none" 592 | }); 593 | if (window.zTreeMoveTimer) { 594 | clearTimeout(window.zTreeMoveTimer); 595 | window.zTreeMoveTargetNodeTId = null; 596 | } 597 | } 598 | preTmpTargetNodeId = tmpTargetNodeId; 599 | preTmpMoveType = moveType; 600 | 601 | setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]); 602 | } 603 | return false; 604 | } 605 | 606 | doc.bind("mouseup", _docMouseUp); 607 | function _docMouseUp(event) { 608 | if (window.zTreeMoveTimer) { 609 | clearTimeout(window.zTreeMoveTimer); 610 | window.zTreeMoveTargetNodeTId = null; 611 | } 612 | preTmpTargetNodeId = null; 613 | preTmpMoveType = null; 614 | doc.unbind("mousemove", _docMouseMove); 615 | doc.unbind("mouseup", _docMouseUp); 616 | doc.unbind("selectstart", _docSelect); 617 | body.css("cursor", "auto"); 618 | if (tmpTarget) { 619 | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); 620 | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) 621 | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); 622 | } 623 | tools.showIfameMask(setting, false); 624 | 625 | roots.showHoverDom = true; 626 | if (root.dragFlag == 0) return; 627 | root.dragFlag = 0; 628 | 629 | var i, l, tmpNode; 630 | for (i=0, l=nodes.length; i 0) { 757 | root.dragMaskList[0].remove(); 758 | root.dragMaskList.shift(); 759 | } 760 | if (showSign) { 761 | //show mask 762 | var iframeList = $$("iframe", setting); 763 | for (var i = 0, l = iframeList.length; i < l; i++) { 764 | var obj = iframeList.get(i), 765 | r = tools.getAbs(obj), 766 | dragMask = $$("
      ", setting); 767 | dragMask.appendTo($$("body", setting)); 768 | root.dragMaskList.push(dragMask); 769 | } 770 | } 771 | } 772 | }, 773 | //method of operate ztree dom 774 | _view = { 775 | addEditBtn: function(setting, node) { 776 | if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) { 777 | return; 778 | } 779 | if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) { 780 | return; 781 | } 782 | var aObj = $$(node, consts.id.A, setting), 783 | editStr = ""; 784 | aObj.append(editStr); 785 | 786 | $$(node, consts.id.EDIT, setting).bind('click', 787 | function() { 788 | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false; 789 | view.editNode(setting, node); 790 | return false; 791 | } 792 | ).show(); 793 | }, 794 | addRemoveBtn: function(setting, node) { 795 | if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) { 796 | return; 797 | } 798 | if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) { 799 | return; 800 | } 801 | var aObj = $$(node, consts.id.A, setting), 802 | removeStr = ""; 803 | aObj.append(removeStr); 804 | 805 | $$(node, consts.id.REMOVE, setting).bind('click', 806 | function() { 807 | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false; 808 | view.removeNode(setting, node); 809 | setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]); 810 | return false; 811 | } 812 | ).bind('mousedown', 813 | function(eventMouseDown) { 814 | return true; 815 | } 816 | ).show(); 817 | }, 818 | addHoverDom: function(setting, node) { 819 | if (data.getRoots().showHoverDom) { 820 | node.isHover = true; 821 | if (setting.edit.enable) { 822 | view.addEditBtn(setting, node); 823 | view.addRemoveBtn(setting, node); 824 | } 825 | tools.apply(setting.view.addHoverDom, [setting.treeId, node]); 826 | } 827 | }, 828 | cancelCurEditNode: function (setting, forceName, isCancel) { 829 | var root = data.getRoot(setting), 830 | nameKey = setting.data.key.name, 831 | node = root.curEditNode; 832 | 833 | if (node) { 834 | var inputObj = root.curEditInput, 835 | newName = forceName ? forceName:(isCancel ? node[nameKey]: inputObj.val()); 836 | if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) { 837 | return false; 838 | } 839 | node[nameKey] = newName; 840 | var aObj = $$(node, consts.id.A, setting); 841 | aObj.removeClass(consts.node.CURSELECTED_EDIT); 842 | inputObj.unbind(); 843 | view.setNodeName(setting, node); 844 | node.editNameFlag = false; 845 | root.curEditNode = null; 846 | root.curEditInput = null; 847 | view.selectNode(setting, node, false); 848 | setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]); 849 | } 850 | root.noSelection = true; 851 | return true; 852 | }, 853 | editNode: function(setting, node) { 854 | var root = data.getRoot(setting); 855 | view.editNodeBlur = false; 856 | if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) { 857 | setTimeout(function() {tools.inputFocus(root.curEditInput);}, 0); 858 | return; 859 | } 860 | var nameKey = setting.data.key.name; 861 | node.editNameFlag = true; 862 | view.removeTreeDom(setting, node); 863 | view.cancelCurEditNode(setting); 864 | view.selectNode(setting, node, false); 865 | $$(node, consts.id.SPAN, setting).html(""); 866 | var inputObj = $$(node, consts.id.INPUT, setting); 867 | inputObj.attr("value", node[nameKey]); 868 | if (setting.edit.editNameSelectAll) { 869 | tools.inputSelect(inputObj); 870 | } else { 871 | tools.inputFocus(inputObj); 872 | } 873 | 874 | inputObj.bind('blur', function(event) { 875 | if (!view.editNodeBlur) { 876 | view.cancelCurEditNode(setting); 877 | } 878 | }).bind('keydown', function(event) { 879 | if (event.keyCode=="13") { 880 | view.editNodeBlur = true; 881 | view.cancelCurEditNode(setting); 882 | } else if (event.keyCode=="27") { 883 | view.cancelCurEditNode(setting, null, true); 884 | } 885 | }).bind('click', function(event) { 886 | return false; 887 | }).bind('dblclick', function(event) { 888 | return false; 889 | }); 890 | 891 | $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT); 892 | root.curEditInput = inputObj; 893 | root.noSelection = false; 894 | root.curEditNode = node; 895 | }, 896 | moveNode: function(setting, targetNode, node, moveType, animateFlag, isSilent) { 897 | var root = data.getRoot(setting), 898 | childKey = setting.data.key.children; 899 | if (targetNode == node) return; 900 | if (setting.data.keep.leaf && targetNode && !targetNode.isParent && moveType == consts.move.TYPE_INNER) return; 901 | var oldParentNode = (node.parentTId ? node.getParentNode(): root), 902 | targetNodeIsRoot = (targetNode === null || targetNode == root); 903 | if (targetNodeIsRoot && targetNode === null) targetNode = root; 904 | if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER; 905 | var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root); 906 | 907 | if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) { 908 | moveType = consts.move.TYPE_INNER; 909 | } 910 | 911 | if (moveType == consts.move.TYPE_INNER) { 912 | if (targetNodeIsRoot) { 913 | //parentTId of root node is null 914 | node.parentTId = null; 915 | } else { 916 | if (!targetNode.isParent) { 917 | targetNode.isParent = true; 918 | targetNode.open = !!targetNode.open; 919 | view.setNodeLineIcos(setting, targetNode); 920 | } 921 | node.parentTId = targetNode.tId; 922 | } 923 | } 924 | 925 | //move node Dom 926 | var targetObj, target_ulObj; 927 | if (targetNodeIsRoot) { 928 | targetObj = setting.treeObj; 929 | target_ulObj = targetObj; 930 | } else { 931 | if (!isSilent && moveType == consts.move.TYPE_INNER) { 932 | view.expandCollapseNode(setting, targetNode, true, false); 933 | } else if (!isSilent) { 934 | view.expandCollapseNode(setting, targetNode.getParentNode(), true, false); 935 | } 936 | targetObj = $$(targetNode, setting); 937 | target_ulObj = $$(targetNode, consts.id.UL, setting); 938 | if (!!targetObj.get(0) && !target_ulObj.get(0)) { 939 | var ulstr = []; 940 | view.makeUlHtml(setting, targetNode, ulstr, ''); 941 | targetObj.append(ulstr.join('')); 942 | } 943 | target_ulObj = $$(targetNode, consts.id.UL, setting); 944 | } 945 | var nodeDom = $$(node, setting); 946 | if (!nodeDom.get(0)) { 947 | nodeDom = view.appendNodes(setting, node.level, [node], null, -1, false, true).join(''); 948 | } else if (!targetObj.get(0)) { 949 | nodeDom.remove(); 950 | } 951 | if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) { 952 | target_ulObj.append(nodeDom); 953 | } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) { 954 | targetObj.before(nodeDom); 955 | } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) { 956 | targetObj.after(nodeDom); 957 | } 958 | 959 | //repair the data after move 960 | var i,l, 961 | tmpSrcIndex = -1, 962 | tmpTargetIndex = 0, 963 | oldNeighbor = null, 964 | newNeighbor = null, 965 | oldLevel = node.level; 966 | if (node.isFirstNode) { 967 | tmpSrcIndex = 0; 968 | if (oldParentNode[childKey].length > 1 ) { 969 | oldNeighbor = oldParentNode[childKey][1]; 970 | oldNeighbor.isFirstNode = true; 971 | } 972 | } else if (node.isLastNode) { 973 | tmpSrcIndex = oldParentNode[childKey].length -1; 974 | oldNeighbor = oldParentNode[childKey][tmpSrcIndex - 1]; 975 | oldNeighbor.isLastNode = true; 976 | } else { 977 | for (i = 0, l = oldParentNode[childKey].length; i < l; i++) { 978 | if (oldParentNode[childKey][i].tId == node.tId) { 979 | tmpSrcIndex = i; 980 | break; 981 | } 982 | } 983 | } 984 | if (tmpSrcIndex >= 0) { 985 | oldParentNode[childKey].splice(tmpSrcIndex, 1); 986 | } 987 | if (moveType != consts.move.TYPE_INNER) { 988 | for (i = 0, l = targetParentNode[childKey].length; i < l; i++) { 989 | if (targetParentNode[childKey][i].tId == targetNode.tId) tmpTargetIndex = i; 990 | } 991 | } 992 | if (moveType == consts.move.TYPE_INNER) { 993 | if (!targetNode[childKey]) targetNode[childKey] = new Array(); 994 | if (targetNode[childKey].length > 0) { 995 | newNeighbor = targetNode[childKey][targetNode[childKey].length - 1]; 996 | newNeighbor.isLastNode = false; 997 | } 998 | targetNode[childKey].splice(targetNode[childKey].length, 0, node); 999 | node.isLastNode = true; 1000 | node.isFirstNode = (targetNode[childKey].length == 1); 1001 | } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) { 1002 | targetParentNode[childKey].splice(tmpTargetIndex, 0, node); 1003 | newNeighbor = targetNode; 1004 | newNeighbor.isFirstNode = false; 1005 | node.parentTId = targetNode.parentTId; 1006 | node.isFirstNode = true; 1007 | node.isLastNode = false; 1008 | 1009 | } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) { 1010 | targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node); 1011 | newNeighbor = targetNode; 1012 | newNeighbor.isLastNode = false; 1013 | node.parentTId = targetNode.parentTId; 1014 | node.isFirstNode = false; 1015 | node.isLastNode = true; 1016 | 1017 | } else { 1018 | if (moveType == consts.move.TYPE_PREV) { 1019 | targetParentNode[childKey].splice(tmpTargetIndex, 0, node); 1020 | } else { 1021 | targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node); 1022 | } 1023 | node.parentTId = targetNode.parentTId; 1024 | node.isFirstNode = false; 1025 | node.isLastNode = false; 1026 | } 1027 | data.fixPIdKeyValue(setting, node); 1028 | data.setSonNodeLevel(setting, node.getParentNode(), node); 1029 | 1030 | //repair node what been moved 1031 | view.setNodeLineIcos(setting, node); 1032 | view.repairNodeLevelClass(setting, node, oldLevel) 1033 | 1034 | //repair node's old parentNode dom 1035 | if (!setting.data.keep.parent && oldParentNode[childKey].length < 1) { 1036 | //old parentNode has no child nodes 1037 | oldParentNode.isParent = false; 1038 | oldParentNode.open = false; 1039 | var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting), 1040 | tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting), 1041 | tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting); 1042 | view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU); 1043 | view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU); 1044 | tmp_ulObj.css("display", "none"); 1045 | 1046 | } else if (oldNeighbor) { 1047 | //old neigbor node 1048 | view.setNodeLineIcos(setting, oldNeighbor); 1049 | } 1050 | 1051 | //new neigbor node 1052 | if (newNeighbor) { 1053 | view.setNodeLineIcos(setting, newNeighbor); 1054 | } 1055 | 1056 | //repair checkbox / radio 1057 | if (!!setting.check && setting.check.enable && view.repairChkClass) { 1058 | view.repairChkClass(setting, oldParentNode); 1059 | view.repairParentChkClassWithSelf(setting, oldParentNode); 1060 | if (oldParentNode != node.parent) 1061 | view.repairParentChkClassWithSelf(setting, node); 1062 | } 1063 | 1064 | //expand parents after move 1065 | if (!isSilent) { 1066 | view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag); 1067 | } 1068 | }, 1069 | removeEditBtn: function(setting, node) { 1070 | $$(node, consts.id.EDIT, setting).unbind().remove(); 1071 | }, 1072 | removeRemoveBtn: function(setting, node) { 1073 | $$(node, consts.id.REMOVE, setting).unbind().remove(); 1074 | }, 1075 | removeTreeDom: function(setting, node) { 1076 | node.isHover = false; 1077 | view.removeEditBtn(setting, node); 1078 | view.removeRemoveBtn(setting, node); 1079 | tools.apply(setting.view.removeHoverDom, [setting.treeId, node]); 1080 | }, 1081 | repairNodeLevelClass: function(setting, node, oldLevel) { 1082 | if (oldLevel === node.level) return; 1083 | var liObj = $$(node, setting), 1084 | aObj = $$(node, consts.id.A, setting), 1085 | ulObj = $$(node, consts.id.UL, setting), 1086 | oldClass = consts.className.LEVEL + oldLevel, 1087 | newClass = consts.className.LEVEL + node.level; 1088 | liObj.removeClass(oldClass); 1089 | liObj.addClass(newClass); 1090 | aObj.removeClass(oldClass); 1091 | aObj.addClass(newClass); 1092 | ulObj.removeClass(oldClass); 1093 | ulObj.addClass(newClass); 1094 | }, 1095 | selectNodes : function(setting, nodes) { 1096 | for (var i=0, l=nodes.length; i0); 1098 | } 1099 | } 1100 | }, 1101 | 1102 | _z = { 1103 | tools: _tools, 1104 | view: _view, 1105 | event: _event, 1106 | data: _data 1107 | }; 1108 | $.extend(true, $.fn.zTree.consts, _consts); 1109 | $.extend(true, $.fn.zTree._z, _z); 1110 | 1111 | var zt = $.fn.zTree, 1112 | tools = zt._z.tools, 1113 | consts = zt.consts, 1114 | view = zt._z.view, 1115 | data = zt._z.data, 1116 | event = zt._z.event, 1117 | $$ = tools.$; 1118 | 1119 | data.exSetting(_setting); 1120 | data.addInitBind(_bindEvent); 1121 | data.addInitUnBind(_unbindEvent); 1122 | data.addInitCache(_initCache); 1123 | data.addInitNode(_initNode); 1124 | data.addInitProxy(_eventProxy); 1125 | data.addInitRoot(_initRoot); 1126 | data.addZTreeTools(_zTreeTools); 1127 | 1128 | var _cancelPreSelectedNode = view.cancelPreSelectedNode; 1129 | view.cancelPreSelectedNode = function (setting, node) { 1130 | var list = data.getRoot(setting).curSelectedList; 1131 | for (var i=0, j=list.length; i1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("
        ", 16 | e);for(a=0,c=l.length;a0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("
      • ",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("
      • ...
      • ",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);A=o("", 17 | e);A.attr("id","zTreeMove_arrow_tmp");A.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(B.dragFlag==1){s&&A.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>v("#"+u+d.id.A,s).offset().left?(n=v("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&v("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER)); 18 | u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||v(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=ce.edit.drag.borderMin;var j=pe.edit.drag.borderMin,K=qe.edit.drag.borderMin,G=xe.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!= 20 | h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=v(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+ 21 | 10);s&&s!=h.treeObj&&s.offset().left=-0.2)&&n?(a=1-A.width(),i=j-A.height()/2,w=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-A.width(),i=i==null||z.isParent&&z.open?j+c.height()-A.height()/2:i.offset().top-A.height()/2,w=d.move.TYPE_NEXT):(a=5-A.width(),i=j,w=d.move.TYPE_INNER);A.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+w);if(T!=u||U!=w)L=(new Date).getTime();if(z&&z.isParent&&w==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&& 24 | window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){w==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50), 25 | window.zTreeMoveTargetNodeTId=z.tId}}else if(w=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,A.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=w;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c); 26 | F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&v("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(B.dragFlag!=0){B.dragFlag=0;var a,i,j;for(a=0,i=l.length;a0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b, 33 | a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}}, 34 | addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b, 35 | a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;i[k]=a;o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT); 36 | j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1);b.treeObj.trigger(d.event.RENAME,[b.treeId,i,c])}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection= 38 | !1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p; 39 | t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,-1,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,v=0,x=null,t=null,D=c.level; 40 | if(c.isFirstNode){if(l=0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV? 41 | (j[e].splice(v,0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(v+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(v,0,c):j[e].splice(v+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length< 42 | 1?(g.isParent=!1,g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()}, 43 | removeRemoveBtn:function(b,a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c0)}},event:{},data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e= 48 | x.onHoverOutNode}return{stop:!1,node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null; 49 | if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,-1,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,-1,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(), 50 | !0),f.editNode(this.setting,a))};a.moveNode=function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}}); 51 | var N=f.cancelPreSelectedNode;f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d"); 117 | }, 118 | showNode: function(setting, node, options) { 119 | node.isHidden = false; 120 | data.initShowForExCheck(setting, node); 121 | $$(node, setting).show(); 122 | }, 123 | showNodes: function(setting, nodes, options) { 124 | if (!nodes || nodes.length == 0) { 125 | return; 126 | } 127 | var pList = {}, i, j; 128 | for (i=0, j=nodes.length; i 0 && !parentNode[childKey][0].isHidden) { 172 | parentNode[childKey][0].isFirstNode = true; 173 | } else if (childLength > 0) { 174 | view.setFirstNodeForHide(setting, parentNode[childKey]); 175 | } 176 | }, 177 | setLastNode: function(setting, parentNode) { 178 | var childKey = setting.data.key.children, childLength = parentNode[childKey].length; 179 | if (childLength > 0 && !parentNode[childKey][0].isHidden) { 180 | parentNode[childKey][childLength - 1].isLastNode = true; 181 | } else if (childLength > 0) { 182 | view.setLastNodeForHide(setting, parentNode[childKey]); 183 | } 184 | }, 185 | setFirstNodeForHide: function(setting, nodes) { 186 | var n,i,j; 187 | for (i=0, j=nodes.length; i=0; i--) { 227 | n = nodes[i]; 228 | if (n.isLastNode) { 229 | break; 230 | } 231 | if (!n.isHidden && !n.isLastNode) { 232 | n.isLastNode = true; 233 | view.setNodeLineIcos(setting, n); 234 | break; 235 | } else { 236 | n = null; 237 | } 238 | } 239 | return n; 240 | }, 241 | setLastNodeForShow: function(setting, nodes) { 242 | var n,i,j, last, old; 243 | for (i=nodes.length-1; i>=0; i--) { 244 | n = nodes[i]; 245 | if (!last && !n.isHidden && n.isLastNode) { 246 | last = n; 247 | break; 248 | } else if (!last && !n.isHidden && !n.isLastNode) { 249 | n.isLastNode = true; 250 | last = n; 251 | view.setNodeLineIcos(setting, n); 252 | } else if (last && n.isLastNode) { 253 | n.isLastNode = false; 254 | old = n; 255 | view.setNodeLineIcos(setting, n); 256 | break; 257 | } else { 258 | n = null; 259 | } 260 | } 261 | return {"new":last, "old":old}; 262 | } 263 | }, 264 | 265 | _z = { 266 | view: _view, 267 | data: _data 268 | }; 269 | $.extend(true, $.fn.zTree._z, _z); 270 | 271 | var zt = $.fn.zTree, 272 | tools = zt._z.tools, 273 | consts = zt.consts, 274 | view = zt._z.view, 275 | data = zt._z.data, 276 | event = zt._z.event, 277 | $$ = tools.$; 278 | 279 | data.addInitNode(_initNode); 280 | data.addBeforeA(_beforeA); 281 | data.addZTreeTools(_zTreeTools); 282 | 283 | // Override method in core 284 | var _dInitNode = data.initNode; 285 | data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) { 286 | var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting), 287 | children = tmpPNode[setting.data.key.children]; 288 | data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children); 289 | data.tmpHideLastNode = view.setLastNodeForHide(setting, children); 290 | if (openFlag) { 291 | view.setNodeLineIcos(setting, data.tmpHideFirstNode); 292 | view.setNodeLineIcos(setting, data.tmpHideLastNode); 293 | } 294 | isFirstNode = (data.tmpHideFirstNode === node); 295 | isLastNode = (data.tmpHideLastNode === node); 296 | if (_dInitNode) _dInitNode.apply(data, arguments); 297 | if (openFlag && isLastNode) { 298 | view.clearOldLastNode(setting, node, openFlag); 299 | } 300 | }; 301 | 302 | var _makeChkFlag = data.makeChkFlag; 303 | if (!!_makeChkFlag) { 304 | data.makeChkFlag = function(setting, node) { 305 | if (!!node && !!node.isHidden) { 306 | return; 307 | } 308 | _makeChkFlag.apply(data, arguments); 309 | } 310 | } 311 | 312 | var _getTreeCheckedNodes = data.getTreeCheckedNodes; 313 | if (!!_getTreeCheckedNodes) { 314 | data.getTreeCheckedNodes = function(setting, nodes, checked, results) { 315 | if (!!nodes && nodes.length > 0) { 316 | var p = nodes[0].getParentNode(); 317 | if (!!p && !!p.isHidden) { 318 | return []; 319 | } 320 | } 321 | return _getTreeCheckedNodes.apply(data, arguments); 322 | } 323 | } 324 | 325 | var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes; 326 | if (!!_getTreeChangeCheckedNodes) { 327 | data.getTreeChangeCheckedNodes = function(setting, nodes, results) { 328 | if (!!nodes && nodes.length > 0) { 329 | var p = nodes[0].getParentNode(); 330 | if (!!p && !!p.isHidden) { 331 | return []; 332 | } 333 | } 334 | return _getTreeChangeCheckedNodes.apply(data, arguments); 335 | } 336 | } 337 | 338 | var _expandCollapseSonNode = view.expandCollapseSonNode; 339 | if (!!_expandCollapseSonNode) { 340 | view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) { 341 | if (!!node && !!node.isHidden) { 342 | return; 343 | } 344 | _expandCollapseSonNode.apply(view, arguments); 345 | } 346 | } 347 | 348 | var _setSonNodeCheckBox = view.setSonNodeCheckBox; 349 | if (!!_setSonNodeCheckBox) { 350 | view.setSonNodeCheckBox = function(setting, node, value, srcNode) { 351 | if (!!node && !!node.isHidden) { 352 | return; 353 | } 354 | _setSonNodeCheckBox.apply(view, arguments); 355 | } 356 | } 357 | 358 | var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf; 359 | if (!!_repairParentChkClassWithSelf) { 360 | view.repairParentChkClassWithSelf = function(setting, node) { 361 | if (!!node && !!node.isHidden) { 362 | return; 363 | } 364 | _repairParentChkClassWithSelf.apply(view, arguments); 365 | } 366 | } 367 | })(jQuery); -------------------------------------------------------------------------------- /assets/js/jquery.ztree.exhide-3.5.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * JQuery zTree exHideNodes v3.5.20 3 | * http://zTree.me/ 4 | * 5 | * Copyright (c) 2010 Hunter.z 6 | * 7 | * Licensed same as jquery - MIT License 8 | * http://www.opensource.org/licenses/mit-license.php 9 | * 10 | * email: hunter.z@263.net 11 | * Date: 2016-01-20 12 | */ 13 | (function(i){i.extend(!0,i.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;d.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a,b){for(a=a.getPreNode();a;){if(a.isLastNode){a.isLastNode=!1;b&&d.setNodeLineIcos(c,a);break}if(a.isFirstNode)break;a=a.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){c.push("
      • ")},showNode:function(c,a){a.isHidden=!1;f.initShowForExCheck(c,a);j(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var e={},g,k;for(g=0,k=a.length;g0&&!a[b][0].isHidden? 16 | a[b][0].isFirstNode=!0:e>0&&d.setFirstNodeForHide(c,a[b])},setLastNode:function(c,a){var b=c.data.key.children,e=a[b].length;e>0&&!a[b][0].isHidden?a[b][e-1].isLastNode=!0:e>0&&d.setLastNodeForHide(c,a[b])},setFirstNodeForHide:function(c,a){var b,e,g;for(e=0,g=a.length;e=0;e--){b=a[e];if(b.isLastNode)break;if(!b.isHidden&&!b.isLastNode){b.isLastNode=!0;d.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c,a){var b,e,g,f;for(e=a.length-1;e>=0;e--)if(b=a[e],!g&&!b.isHidden&& 18 | b.isLastNode){g=b;break}else if(!g&&!b.isHidden&&!b.isLastNode)b.isLastNode=!0,g=b,d.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;f=b;d.setNodeLineIcos(c,b);break}return{"new":g,old:f}}},data:{initHideForExCheck:function(c,a){if(a.isHidden&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}},initShowForExCheck:function(c,a){if(!a.isHidden&&c.check&& 19 | c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(d.setChkClass){var b=j(a,l.id.CHECK,c);d.setChkClass(c,b,a)}d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}}}});var i=i.fn.zTree,m=i._z.tools,l=i.consts,d=i._z.view,f=i._z.data,j=m.$;f.addInitNode(function(c,a,b){if(typeof b.isHidden=="string")b.isHidden=m.eqs(b.isHidden,"true");b.isHidden=!!b.isHidden;f.initHideForExCheck(c,b)});f.addBeforeA(function(){});f.addZTreeTools(function(c,a){a.showNodes= 20 | function(a,b){d.showNodes(c,a,b)};a.showNode=function(a,b){a&&d.showNodes(c,[a],b)};a.hideNodes=function(a,b){d.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&d.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(c,d,f,h){(!c||!c.isHidden)&&b.apply(a,arguments)}});var n=f.initNode;f.initNode=function(c,a,b,e,g,i,h){var j=(e?e:f.getRoot(c))[c.data.key.children];f.tmpHideFirstNode=d.setFirstNodeForHide(c,j);f.tmpHideLastNode=d.setLastNodeForHide(c,j);h&&(d.setNodeLineIcos(c,f.tmpHideFirstNode), 21 | d.setNodeLineIcos(c,f.tmpHideLastNode));g=f.tmpHideFirstNode===b;i=f.tmpHideLastNode===b;n&&n.apply(f,arguments);h&&i&&d.clearOldLastNode(c,b,h)};var o=f.makeChkFlag;if(o)f.makeChkFlag=function(c,a){(!a||!a.isHidden)&&o.apply(f,arguments)};var p=f.getTreeCheckedNodes;if(p)f.getTreeCheckedNodes=function(c,a,b,e){if(a&&a.length>0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return p.apply(f,arguments)};var q=f.getTreeChangeCheckedNodes;if(q)f.getTreeChangeCheckedNodes=function(c,a,b){if(a&& 22 | a.length>0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return q.apply(f,arguments)};var r=d.expandCollapseSonNode;if(r)d.expandCollapseSonNode=function(c,a,b,e,f){(!a||!a.isHidden)&&r.apply(d,arguments)};var s=d.setSonNodeCheckBox;if(s)d.setSonNodeCheckBox=function(c,a,b,e){(!a||!a.isHidden)&&s.apply(d,arguments)};var t=d.repairParentChkClassWithSelf;if(t)d.repairParentChkClassWithSelf=function(c,a){(!a||!a.isHidden)&&t.apply(d,arguments)}})(jQuery); 23 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liyuze/yii2-ztree", 3 | "description": "The zTree extension for the Yii framework 2.0", 4 | "homepage": "https://github.com/liyuze/yii2-ztree", 5 | "type": "yii2-extension", 6 | "keywords": [ 7 | "yii2", 8 | "extension", 9 | "widget", 10 | "tree", 11 | "ztree" 12 | ], 13 | "license": "BSD-3-Clause", 14 | "authors": [ 15 | { 16 | "name": "li yuze", 17 | "email": "290315384@qq.com" 18 | } 19 | ], 20 | "require": { 21 | "yiisoft/yii2": "*" 22 | }, 23 | "autoload": { 24 | "psr-4": { 25 | "liyuze\\ztree\\": "" 26 | } 27 | }, 28 | "minimum-stability": "dev", 29 | "prefer-stable": true 30 | } --------------------------------------------------------------------------------