use "lang.vl"
|
use "win.vl"
|
use "treeview.vm"
|
use "dev:vm[xutil.vm]"
|
use "dev:vm[xdwtable.vm]"
|
use "dev:vm[xdwgrid.vm]"
|
use "dev:vm[combobox.vm]"
|
use "frame.vl"
|
use "file.vl"
|
use "dev:vm[xlayersheet.vm]"
|
use "publiccode.vl"
|
|
unit vbusiness.vpage
|
[
|
DataConfig is extend frame;
|
about DataConfig
|
[
|
field:
|
|
method:
|
[
|
treeview__ dw_tree;
|
xdwgrid__ dw_list;
|
xdwgrid__ dw_role;
|
combobox__ dw_ddlb;
|
xlayersheet__ m_sheet;
|
|
int alert(string str)
|
{
|
TApp::alert(this,str,3);
|
return 0;
|
}
|
int createTree(msxml::IXMLDOMElement e, int parentItem)
|
{
|
if(treeview__::GetChildItem(dw_tree.GetId(), parentItem) > 0) return 0;
|
|
var list=e.selectNodes("item");
|
int i=0,s=list.length;
|
msxml::IXMLDOMElement xitem;
|
for (i=0;i<s;i++)
|
{
|
xitem= list.item(s - i - 1);
|
string Name=xitem.selectSingleNode("name").text;
|
string image = xitem.selectSingleNode("image").text;
|
int curItem=treeview__::InsertItem(dw_tree.GetId(), parentItem,0,Name,xitem,image.toInt());
|
string child=xitem.selectSingleNode("child").text;
|
if (child != "0")
|
treeview__::SetItemChild1(dw_tree.GetId(), curItem,1);
|
}
|
return 1;
|
}
|
|
int OnTreeExpanding(ref TNotifyEvent evt,int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int sitem = nmtv.itemNew.hItem;
|
|
int i = combobox__::GetCurSel(dw_ddlb.GetId());
|
msxml::IXMLDOMElement e = treeview__::GetItemData(dw_tree.GetId(), sitem);
|
string id = e.selectSingleNode("id").text;
|
string xid = e.selectSingleNode("tree").text;
|
int hCursor = xutil__::SetCursorWait();
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("pid",id);
|
arg.AddArg("tree",xid);
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/user/select",arg.GetString(),x)!=1)
|
{
|
trace("´íÎó·µ»Ø="+x.GetXml());
|
return -1;
|
}
|
|
msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
|
createTree(ele, sitem);
|
xutil__::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnRetrieve(string id)
|
{
|
int hIcon= xutil__::SetCursorWait();
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id",id);
|
trace(id);
|
arg.AddArg("flag","-1");
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/maint/data",arg.GetString(),x)!=1)
|
{
|
trace("´íÎó·µ»Ø1="+x.GetXml());
|
return -1;
|
}
|
|
if(x.GetXml() == "")
|
x.LoadXml("<root><items/><roles/></root>");
|
|
xml__ x1 = new xml__;
|
x1.setNativePointer(xml__ ::CreateInstance());
|
if(x.GetXmlDoc().selectSingleNode("root/items"))
|
{
|
dw_list.Retrieve(x.GetXmlDoc().selectSingleNode("root/items"));
|
dw_list.SetReadOnly(true);
|
dw_list.Redraw();
|
}
|
else
|
{
|
x1.LoadXml("<items/>");
|
dw_list.Retrieve(x1);
|
dw_list.SetReadOnly(true);
|
dw_list.Redraw();
|
}
|
if(x.GetXmlDoc().selectSingleNode("root/roles"))
|
{
|
dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("root/roles"));
|
dw_role.SetReadOnly(true);
|
dw_role.Redraw();
|
}
|
else
|
{
|
x1.LoadXml("<roles/>");
|
dw_role.Retrieve(x1);
|
dw_role.SetReadOnly(true);
|
dw_role.Redraw();
|
}
|
xutil__::RestoreCursor(hIcon);
|
return 1;
|
}
|
|
int OnTreeSelecded( ref TNotifyEvent evt,int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int hItem = nmtv.itemNew.hItem;
|
int wid = dw_tree.GetId();
|
msxml::IXMLDOMElement ele =treeview__::GetItemData(wid,hItem);
|
|
string id = ele.SelectSingleNode("id").text;
|
OnRetrieve(id);
|
|
return 1;
|
}
|
|
int OnSelect()
|
{
|
int nIndex = combobox__::GetCurSel(dw_ddlb.GetId());
|
|
combobox__ dw_ddlbdata = new combobox__;
|
dw_ddlbdata.setNativePointer(this.GetControl("dw_ddlbdata"));
|
int h = combobox__::FindString(dw_ddlbdata.GetId(), nIndex.toString());
|
param p;
|
xnode__ bnode;
|
xnode__ anode = new xnode__;
|
anode.setNativePointer(GetAgentNode("tree"));
|
if(h < 0)
|
{
|
string str = "<vbox><xtree name='dw_tree"+nIndex.toString()+"' imagelist='0'/></vbox>";
|
bnode = new xnode__;
|
bnode.setNativePointer(SetAgentNodeContent(anode,str));
|
|
p = combobox__::GetItemData(dw_ddlb.GetId(), nIndex);
|
msxml::IXMLDOMElement ele = p;
|
|
dw_tree = new treeview__;
|
dw_tree.setNativePointer(this.GetControl("dw_tree"+nIndex.toString()));
|
|
createTree(ele, 0);
|
AttachEvent("dw_tree"+nIndex.toString(), "TVN_ITEMEXPANDING",OnTreeExpanding);
|
AttachEvent("dw_tree"+nIndex.toString(), "TVN_SELCHANGED",OnTreeSelecded);
|
|
int sk = combobox__::AddItem(dw_ddlbdata.GetId(), nIndex.toString());
|
p = bnode;
|
combobox__::SetItemData(dw_ddlbdata.GetId(), sk, p);
|
}
|
else
|
{
|
p = combobox__::GetItemData(dw_ddlbdata.GetId(), h);
|
bnode = p;
|
SetAgentNodeContent(anode,bnode);
|
|
dw_tree = new treeview__;
|
dw_tree.setNativePointer(this.GetControl("dw_tree"+nIndex.toString()));
|
}
|
|
return 1;
|
}
|
|
int OnSave()
|
{
|
int m = treeview__::GetSelectedItem(dw_tree.GetId());
|
if(m == 0) return 0;
|
|
int wid = dw_tree.GetId();
|
int hItem=treeview__::GetSelectedItem(wid);
|
msxml::IXMLDOMElement ele =treeview__::GetItemData(wid,hItem);
|
string id = ele.SelectSingleNode("id").text;
|
string tpy = ele.SelectSingleNode("type").text;
|
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
e.SetAttribute("id", id);
|
e.SetAttribute("type", tpy);
|
|
xml__ x1 = new xml__;
|
x1.setNativePointer(xml__ ::CreateInstance());
|
dw_role.DwUpdateAllToEx(x1.GetXmlDoc());
|
msxml::IXMLDOMElement e1 = x1.GetXmlDoc().documentElement;
|
e.AppendChild(e1);
|
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("content", e.xml);
|
arg.AddArg("dbmap", "Data.config.dbmap");
|
//if(xaserver__::ExecXAction(GetServerUrl(),"[onSave.xa]",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/save",arg.GetString(),x)!=1)
|
//if(url::get("/workflow/action/datarole.resource/bill.update",arg.GetString(),x)!=1)
|
{
|
trace("error:"+x.GetXml());
|
alert("±£´æ³ö´í!");
|
return 0;
|
}
|
if(x.GetXmlDoc().selectSingleNode("error"))
|
{
|
alert("±£´æ³ö´í2!");
|
return 0;
|
}
|
dw_list.ResetUpdateStatus();
|
dw_role.ResetUpdateStatus();
|
alert("±£´æ³É¹¦!");
|
|
return 1;
|
}
|
|
int OnSelectDdlb(ref TNotifyEvent evt,int p)
|
{
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
if(e)
|
{
|
var list = e.SelectNodes("//*[@update.new='1' or @update.modify='1' or @update.delete='1']");
|
int s = list.length;
|
if(s>0)
|
{
|
int ret = win__::MessageBox(this.GetHWND(), "µ±Ç°Ð޸ļÇ¼δ±£´æ£¬ÊÇ·ñ±£´æ£¿","Ìáʾ",4);
|
if(ret == 6)
|
OnSave();
|
}
|
}
|
|
OnSelect();
|
|
int m = treeview__::GetSelectedItem(dw_tree.GetId());
|
string id;
|
if(m == 0)
|
{
|
id = "";
|
}
|
else
|
{
|
msxml::IXMLDOMElement ele =treeview__::GetItemData(dw_tree.GetId(),m);
|
id = ele.SelectSingleNode("id").text;
|
}
|
OnRetrieve(id);
|
|
return 1;
|
}
|
|
int createTreeRoot()
|
{
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("pid","");
|
arg.AddArg("tree","0");
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/user/select",arg.GetString(),x)!=1)
|
{
|
trace("´íÎó·µ»Ø="+x.GetXml());
|
return -1;
|
}
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
var list = e.SelectNodes("*");
|
int i;
|
int len = list.length;
|
msxml::IXMLDOMElement ele;
|
for(i=0; i<len; i++)
|
{
|
ele= list.item(i);
|
string name = ele.selectSingleNode("@tree").text;
|
int sk = combobox__::AddItem(dw_ddlb.GetId(), name);
|
param p = ele;
|
combobox__::SetItemData(dw_ddlb.GetId(), sk, p);
|
}
|
if(len > 0)
|
{
|
combobox__::SetCurSel(dw_ddlb.GetId(), 0);
|
OnSelect();
|
}
|
OnRetrieve("");
|
return 1;
|
}
|
|
int OnSetFocus(ref TEvent evt,int p)
|
{
|
SetAgent("data");
|
return 1;
|
}
|
|
string GetPath()
|
{
|
int h = treeview__::GetSelectedItem(dw_tree.GetId());
|
if(h == 0) return 0;
|
|
int tv = dw_tree.GetId();
|
string str = treeview__::GetItemLabel(tv, h);
|
int k = treeview__::GetParentItem(tv, h);
|
while(k > 0)
|
{
|
string tmp = treeview__::GetItemLabel(tv, k);
|
str = tmp+"\\" + str;
|
k = treeview__::GetParentItem(tv, k);
|
}
|
return str;
|
}
|
|
int OnAddRole()
|
{
|
int m = treeview__::GetSelectedItem(dw_tree.GetId());
|
if(m == 0) return -1;
|
msxml::IXMLDOMElement ele =treeview__::GetItemData(dw_tree.GetId(),m);
|
string tpy=""+ele.selectSingleNode("type").text;
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("dataUrl","/sale/data/Role.config/pref/model/select");
|
openUrl("/sale/view/Role.config/xpage/role/select/user", arg);
|
string str = arg.GetArgString("item");
|
if(str == "") return -1;
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
x.LoadXml(str);
|
var list=x.GetXmlDoc().selectNodes("items/item");
|
int i=0,s=list.length;
|
msxml::IXMLDOMElement xitem;
|
int row = dw_role.GetRowCount() + 1;
|
string treepath = GetPath();
|
for (i=0;i<s;i++)
|
{
|
xitem= list.item(i);
|
string id = ""+xitem.selectSingleNode("@id").text;
|
string name=""+xitem.selectSingleNode("@name").text;
|
//string tpy=""+xitem.selectSingleNode("@type").text;
|
dw_role.InsertRow(0);
|
dw_role.SetItemString(row + i, "id", id);
|
dw_role.SetItemString(row + i, "name", ""+treepath);
|
dw_role.SetItemDisplayString(row + i, "name", name);
|
dw_role.SetItemString(row + i, "type", tpy);
|
}
|
return 1;
|
}
|
|
int OnAddRow()
|
{
|
int m = treeview__::GetSelectedItem(dw_tree.GetId());
|
if(m == 0) return 0;
|
|
int k = m_sheet.GetSheetIndex();
|
if(k == 0)
|
//openUrl("/sale/view/role.config/xpage/data/select/resource", dw_list);
|
OpenWindow("dev:xpage[Resource.select.data.config.vx]", dw_list);
|
else
|
OnAddRole();
|
|
return 1;
|
}
|
|
int OnDelRow()
|
{
|
int k = m_sheet.GetSheetIndex();
|
int row;
|
string hr_type;
|
msxml::IXMLDOMElement e;
|
if(k == 0)
|
{
|
row = dw_list.GetRow();
|
if(row<1 || row > dw_list.GetRowCount()) return -1;
|
e = dw_list.GetRowElement(row);
|
if(e.selectSingleNode("fromparent"))
|
{
|
hr_type = e.selectSingleNode("fromparent").text;
|
if(hr_type != "")
|
{
|
alert("¼Ì³ÐµÄȨÏÞÎÞȨɾ³ý£¡");
|
return 0;
|
}
|
}
|
dw_list.DeleteRow(row);
|
}
|
else
|
{
|
row = dw_role.GetRow();
|
if(row<1 || row > dw_role.GetRowCount()) return -1;
|
e = dw_role.GetRowElement(row);
|
if(e.selectSingleNode("fromparent"))
|
{
|
hr_type = e.selectSingleNode("fromparent").text;
|
if(hr_type != "")
|
{
|
alert("¼Ì³ÐµÄȨÏÞÎÞȨɾ³ý£¡");
|
return 0;
|
}
|
}
|
dw_role.DeleteRow(row);
|
}
|
|
return 1;
|
}
|
|
int OnSetCopy(xdwgrid__ dw, msxml::IXMLDOMElement e, string name)
|
{
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
msxml::IXMLDOMElement ele;
|
bool f = false;
|
|
int count = dw.GetRowCount();
|
if(count == 0)
|
{
|
x.LoadXml("<" + name + "s/>");
|
ele = x.GetXmlDoc().documentElement;
|
}
|
else
|
{
|
msxml::IXMLDOMElement e1 = dw.GetRowElement(1);
|
ele = e1.parentNode;
|
}
|
var li = e.SelectNodes(name);
|
int i;
|
int len = li.length;
|
string treepath = GetPath();
|
for(i=0; i<len; i++)
|
{
|
msxml::IXMLDOMElement ele1= li.item(i);
|
if(ele1.selectSingleNode("fromparent"))
|
{
|
string str = ele1.selectSingleNode("fromparent").text;
|
if(str != "") continue;
|
}
|
xml__ x1 = new xml__;
|
x1.setNativePointer(xml__::CreateInstance());
|
x1.LoadXml(ele1.xml);
|
msxml::IXMLDOMElement ele2 = x1.GetXmlDoc().documentElement;
|
ele2.setAttribute("update.new","1");
|
ele2.setAttribute("update.modify","1");
|
ele2.setAttribute("guid",publiccode::GetGuid());
|
if(ele2.selectSingleNode("name"))
|
ele2.selectSingleNode("name").text = treepath;
|
//ele1.selectSingleNode("@guid").text = publiccode::GetGuid();
|
//ele1.selectSingleNode("@update.new").text = "1";
|
//ele1.selectSingleNode("@update.modify").text = "1";
|
ele.appendChild(ele2);
|
}
|
dw.Retrieve(ele);
|
dw.SetReadOnly(true);
|
dw.Redraw();
|
|
return 1;
|
}
|
|
int OnCopy()
|
{
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
int p = arg.__nativept;
|
OpenWindow("dev:xpage[Data.config.copy.vx]", p);
|
string id = arg.GetArgString("id");
|
string f = arg.GetArgString("flag");
|
if(id == "") return 1;
|
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
if(url::get("/sale/data/Role.config/pref/maint/data",arg.GetString(),x)!=1)
|
{
|
trace("´íÎó·µ»Ø="+x.GetXml());
|
return -1;
|
}
|
|
if(x.GetXml() == "")
|
x.LoadXml("<root><items/><roles/></root>");
|
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
|
if(f == "0" || f == "1")
|
{
|
msxml::IXMLDOMElement ele1 = e.selectSingleNode("items");
|
OnSetCopy(dw_list, ele1, "item");
|
}
|
|
if(f == "0" || f == "2")
|
{
|
msxml::IXMLDOMElement ele2 = e.selectSingleNode("roles")
|
OnSetCopy(dw_role, ele2, "role");
|
}
|
|
return 1;
|
}
|
|
int OnCmdDispatch(string comdid)
|
{
|
if(comdid == "Config")
|
openUrl("/sale/view/role.config/xpage/data/resource/config");
|
if(comdid == "RightQuery")
|
openUrl("/sale/view/role.config/xpage/data/modulerightquery");
|
else if(comdid == "New")
|
OnAddRow();
|
else if(comdid == "Del")
|
OnDelRow();
|
else if(comdid == "Save")
|
OnSave();
|
else if(comdid == "Copy")
|
OnCopy();
|
else if(comdid == "xmProdDivi")
|
openUrl("/sale/view/RoleAccount3/xpage/data/proddivi");
|
return 0;
|
}
|
|
int OnXCommand(ref TXCommandEvent evt,int p)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
int onload()
|
{
|
SetAgent("data");
|
|
dw_list = new xdwgrid__;
|
dw_list.setNativePointer(GetControl("dw_list"));
|
dw_list.openUrl("/sale/view/Role.config/template/data/config/resourceOrg");
|
dw_list.SetReadOnly(false);
|
|
dw_role = new xdwgrid__;
|
dw_role.setNativePointer(GetControl("dw_role"));
|
//dw_role.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/role]");
|
//dw_role.openUrl(m_vface+"/template/role/config/role");
|
dw_role.openUrl("/sale/view/Role.config/template/role/config/role");
|
dw_role.SetReadOnly(false);
|
|
dw_ddlb = new combobox__;
|
dw_ddlb.setNativePointer(this.GetControl("dw_ddlb"));
|
|
m_sheet = new xlayersheet__;
|
m_sheet.setNativePointer(this.GetControl("m_sheet"));
|
|
AttachEvent("WM_XCOMMAND",OnXCommand);
|
AttachEvent("WM_SETFOCUS",OnSetFocus);
|
AttachEvent("dw_ddlb","CBN_SELCHANGE",OnSelectDdlb);
|
|
createTreeRoot();
|
|
return 1;
|
}
|
]
|
]
|
]
|