| <?xml version="1.0" encoding="UTF-8"?> | 
| <ViewConfig> | 
|   <Arguments/> | 
|   <Context/> | 
|   <Model> | 
|     <DataType name="dataTypeUrl"> | 
|       <Property name="creationType">com.bstek.bdf2.core.model.Url</Property> | 
|       <PropertyDef name="id"> | 
|         <Property></Property> | 
|         <Property name="label">菜单ID</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="name"> | 
|         <Property></Property> | 
|         <Property name="label">菜单名称</Property> | 
|         <Property name="required">true</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="desc"> | 
|         <Property></Property> | 
|         <Property name="label">菜单说明</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="url"> | 
|         <Property></Property> | 
|         <Property name="label">菜单路径</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="forNavigation"> | 
|         <Property name="dataType">boolean</Property> | 
|         <Property name="label">是否启用</Property> | 
|         <Property name="required">true</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="companyId"> | 
|         <Property></Property> | 
|         <Property name="label">所属组织</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="systemId"> | 
|         <Property></Property> | 
|         <Property name="label">所属分类</Property> | 
|         <Property name="mapping"> | 
|           <Property name="mapValues">${dorado.getDataProvider("companyPR#triggerFunctionModel").getResult()}</Property> | 
|           <Property name="keyProperty">code</Property> | 
|           <Property name="valueProperty">name</Property> | 
|         </Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="icon"> | 
|         <Property></Property> | 
|         <Property name="label">菜单图标</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="order"> | 
|         <Property name="dataType">Integer</Property> | 
|         <Property name="label">排序</Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="parentId"> | 
|         <Property></Property> | 
|       </PropertyDef> | 
|       <PropertyDef name="target"> | 
|         <Property name="label">打开方式</Property> | 
|       </PropertyDef> | 
|       <Reference name="children"> | 
|         <Property name="dataType">[SELF]</Property> | 
|         <Property name="dataProvider">core.urlMaintain#loadUrls</Property> | 
|         <Property name="parameter"> | 
|           <Entity> | 
|             <Property name="parentId">$${this.id}</Property> | 
|           </Entity> | 
|         </Property> | 
|       </Reference> | 
|     </DataType> | 
|   </Model> | 
|   <View layout="padding:5;regionPadding:5"> | 
|     <ClientEvent name="onReady">self.buildOrder=function(nodes){
 | 
|     var order=1;
 | 
|     nodes.each(function(node){
 | 
|         var entityOrder=node.get("data.order");
 | 
|         order=entityOrder+1;
 | 
|     });
 | 
|     return order;
 | 
| }</ClientEvent> | 
|     <UpdateAction id="updateActionUrl"> | 
|       <Property name="dataResolver">bdf2.urlMaintain#saveUrls</Property> | 
|       <Property name="successMessage">数据已保存</Property> | 
|       <UpdateItem> | 
|         <Property name="dataSet">dataSetUrl</Property> | 
|       </UpdateItem> | 
|     </UpdateAction> | 
|     <DataSet id="dataSetUrl"> | 
|       <Property name="dataType">[dataTypeUrl]</Property> | 
|       <Property name="dataProvider">core.urlMaintain#loadUrls0</Property> | 
|     </DataSet> | 
|     <Panel layoutConstraint="left"> | 
|       <Property name="caption">菜单列表</Property> | 
|       <Property name="width">280</Property> | 
|       <Buttons/> | 
|       <Children> | 
|         <ToolBar> | 
|           <ToolBarLabel> | 
|             <Property name="text">所属分类:</Property> | 
|           </ToolBarLabel> | 
|           <TextEditor id="systemId"> | 
|             <ClientEvent name="onPost">var key = view.get("#systemId").get("value");
 | 
| view.get("#dataSetUrl").set("parameter",key).flushAsync();</ClientEvent> | 
|             <Property name="mapping"> | 
|               <Property name="mapValues">${dorado.getDataProvider("companyPR#triggerFunctionModel").getResult()}</Property> | 
|               <Property name="keyProperty">code</Property> | 
|               <Property name="valueProperty">name</Property> | 
|             </Property> | 
|             <Property name="trigger">autoMappingDropDown2</Property> | 
|             <Property name="style"> | 
|               <Property name="height">25px</Property> | 
|               <Property name="line-height">25px</Property> | 
|             </Property> | 
|           </TextEditor> | 
|         </ToolBar> | 
|         <DataTree id="dataTreeUrl"> | 
|           <ClientEvent name="beforeCurrentChange">var node=arg.oldCurrent;
 | 
| if(node){
 | 
|     var data=node.get("data");
 | 
|     if(data && data.state!=dorado.Entity.STATE_NONE && data.state!=dorado.Entity.STATE_MOVED){
 | 
|         view.id("updateActionUrl").execute();
 | 
|         if(data.validate()!="ok"){
 | 
|             arg.processDefault=false;
 | 
|         }
 | 
|     }
 | 
| }
 | 
| </ClientEvent> | 
|           <ClientEvent name="onDraggingSourceDrop">var draggingInfo=arg.draggingInfo;
 | 
| if(!draggingInfo){
 | 
|     return true;
 | 
| }
 | 
| var parentNode=draggingInfo.get("targetObject");
 | 
| if(!parentNode){
 | 
|     return true;
 | 
| }
 | 
| var parentId=parentNode.get("data.id");
 | 
| var order=1;
 | 
| parentNode.get("nodes").each(function(node){
 | 
|     var data=node.get("data");
 | 
|     data.set("order",order++);
 | 
|     data.set("parentId",parentId);
 | 
| });
 | 
| view.id("updateActionUrl").execute();
 | 
| </ClientEvent> | 
|           <ClientEvent name="onContextMenu">view.id("menuOperate").show({
 | 
|     position: {
 | 
|         left: arg.event.pageX,
 | 
|         top: arg.event.pageY
 | 
|     }
 | 
| });
 | 
| </ClientEvent> | 
|           <Property name="dataSet">dataSetUrl</Property> | 
|           <Property name="width">280</Property> | 
|           <Property name="currentNodeDataPath">currentUrl</Property> | 
|           <Property name="draggable">true</Property> | 
|           <Property name="dragTags">url</Property> | 
|           <Property name="droppable">true</Property> | 
|           <Property name="droppableTags">url</Property> | 
|           <Property name="dropMode">onOrInsertItems</Property> | 
|           <BindingConfigs> | 
|             <BindingConfig> | 
|               <Property name="childrenProperty">children</Property> | 
|               <Property name="iconProperty">icon</Property> | 
|               <Property name="tipProperty">desc</Property> | 
|               <Property name="labelProperty">name</Property> | 
|               <Property name="expandLevel">1</Property> | 
|               <Property name="recursive">true</Property> | 
|             </BindingConfig> | 
|           </BindingConfigs> | 
|         </DataTree> | 
|       </Children> | 
|       <Tools/> | 
|     </Panel> | 
|     <Panel layoutConstraint="center "> | 
|       <Property name="caption">菜单编辑</Property> | 
|       <Property name="style"> | 
|         <Property name="padding-left">10px</Property> | 
|       </Property> | 
|       <Buttons/> | 
|       <Children> | 
|         <AutoForm layoutConstraint="center"> | 
|           <Property name="dataSet">dataSetUrl</Property> | 
|           <Property name="dataPath">!currentUrl</Property> | 
|           <Property name="cols">*</Property> | 
|           <Property name="labelSeparator">:</Property> | 
|           <Property name="labelAlign">right</Property> | 
|           <Property name="labelWidth">120</Property> | 
|           <Property name="width">600</Property> | 
|           <AutoFormElement> | 
|             <Property name="name">name</Property> | 
|             <Property name="property">name</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">forNavigation</Property> | 
|             <Property name="property">forNavigation</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">url</Property> | 
|             <Property name="property">url</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">target</Property> | 
|             <Property name="property">target</Property> | 
|             <Editor> | 
|               <RadioGroup> | 
|                 <Property name="dataSet">dataSetUrl</Property> | 
|                 <Property name="dataPath">!currentUrl</Property> | 
|                 <Property name="property">target</Property> | 
|                 <RadioButton> | 
|                   <Property name="text">默认打开</Property> | 
|                   <Property name="value">_self</Property> | 
|                 </RadioButton> | 
|                 <RadioButton> | 
|                   <Property name="text">新页面打开</Property> | 
|                   <Property name="value">_blank</Property> | 
|                 </RadioButton> | 
|               </RadioGroup> | 
|             </Editor> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">icon</Property> | 
|             <Property name="property">icon</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">systemId</Property> | 
|             <Property name="property">systemId</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|           <AutoFormElement> | 
|             <Property name="name">desc</Property> | 
|             <Property name="property">desc</Property> | 
|             <Property name="editorType">TextArea</Property> | 
|             <Editor/> | 
|           </AutoFormElement> | 
|         </AutoForm> | 
|         <Container layout="regionPadding:20" layoutConstraint="center"> | 
|           <Button layoutConstraint="left "> | 
|             <ClientEvent name="onClick">dorado.MessageBox.confirm("您真的要删除用于导航的URL缓存吗?",function(){
 | 
|     view.id("ajaxActionRefreshCache").execute();
 | 
| })</ClientEvent> | 
|             <Property name="caption">刷新缓存</Property> | 
|             <Property name="icon">url(skin>common/icons.gif) -40px -240px</Property> | 
|           </Button> | 
|           <Button layoutConstraint="left"> | 
|             <Property name="icon">url(skin>common/icons.gif) -140px -20px</Property> | 
|             <Property name="caption">确定保存</Property> | 
|             <Property name="style"> | 
|               <Property name="margin-right">30</Property> | 
|             </Property> | 
|             <Property name="action">updateActionUrl</Property> | 
|           </Button> | 
|         </Container> | 
|       </Children> | 
|       <Tools/> | 
|     </Panel> | 
|     <Menu id="menuOperate"> | 
|       <MenuItem> | 
|         <ClientEvent name="onClick">var data=view.id("dataSetUrl").getData();
 | 
| var newOrder=view.buildOrder(view.id("dataTreeUrl").get("root").get("nodes"));
 | 
| var newEntity=data.insert({order:newOrder,name:'新菜单'});
 | 
| view.id("dataTreeUrl").set("currentEntity",newEntity);</ClientEvent> | 
|         <Property name="name">addRoot</Property> | 
|         <Property name="caption">添加根节点</Property> | 
|         <Property name="icon">url(skin>common/icons.gif) -280px -100px</Property> | 
|       </MenuItem> | 
|       <MenuItem> | 
|         <ClientEvent name="onClick">var tree=view.id("dataTreeUrl");
 | 
| var currentNode=tree.get("currentNode");
 | 
| if(!currentNode){
 | 
|     dorado.MessageBox.alert("请先选中一个父节点!");
 | 
|     return;
 | 
| }
 | 
| var newOrder=view.buildOrder(currentNode.get("nodes"));
 | 
| var currentEntity=currentNode.get("data");
 | 
| currentNode.expand();
 | 
| var newEntity=currentEntity.createChild("children",{
 | 
|     parentId:currentEntity.get("id"),
 | 
|     order:newOrder,
 | 
|     name:'新菜单'
 | 
| });
 | 
| tree.set("currentEntity",newEntity);
 | 
| </ClientEvent> | 
|         <Property name="caption">添加子节点</Property> | 
|         <Property name="name">addSub</Property> | 
|         <Property name="icon">url(skin>common/icons.gif) -120px 0px</Property> | 
|       </MenuItem> | 
|       <MenuItem> | 
|         <ClientEvent name="onClick">var tree=view.id("dataTreeUrl");
 | 
| var entity=tree.get("currentEntity");
 | 
| if(entity){
 | 
|     view.id("ajaxActionCheckChildren").set("parameter", entity.get("id")).execute(function(count){
 | 
|         if (count>0){
 | 
|             dorado.MessageBox.alert("请先删除子节点");
 | 
|         } else {
 | 
|             dorado.MessageBox.confirm("真的要删除当前节点?",function(){
 | 
|                 entity.remove();
 | 
|                 var firstNode=tree.get("firstNode");
 | 
|                 if(firstNode){
 | 
|                     tree.set("currentNode",firstNode);
 | 
|                 }
 | 
|                 view.id("updateActionUrl").execute();
 | 
|             });
 | 
|         }
 | 
|     });
 | 
| }else{
 | 
|     dorado.MessageBox.alert("当前没有节点可供删除!");
 | 
| }
 | 
| </ClientEvent> | 
|         <Property name="name">del</Property> | 
|         <Property name="caption">删除</Property> | 
|         <Property name="icon">url(skin>common/icons.gif) -140px 0px</Property> | 
|       </MenuItem> | 
|     </Menu> | 
|     <Import src="bdf2.core.view.IconSelect#$dialogSelectIcon"/> | 
|     <AjaxAction id="ajaxActionCheckChildren"> | 
|       <Property name="service">core.urlMaintain#countChildren</Property> | 
|     </AjaxAction> | 
|     <AjaxAction id="ajaxActionRefreshCache"> | 
|       <Property name="service">core.urlMaintain#refreshUrlCache</Property> | 
|       <Property name="successMessage">缓存刷新成功!</Property> | 
|     </AjaxAction> | 
|   </View> | 
| </ViewConfig> |