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 "sys.base.vl"
|
|
use "dev:vm[xcell.vm]"
|
|
unit vbusiness.vpage
|
[
|
Roleconfig is extend TProject;
|
about Roleconfig
|
[
|
field:
|
|
method:
|
[
|
treeview__ tv_menu;
|
xdwtable__ dw_list;
|
xdwgrid__ dw_param;
|
xdwgrid__ dw_role;
|
string m_status;
|
|
int SetAgent()
|
{
|
string xfNodeAgentArea = "agentarea";
|
xnode__ anode = new xnode__;
|
anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
|
var xframeElement = win__::GetElement();
|
var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]");
|
if(agent)
|
{
|
string s = agent.xml+"";
|
SetAgentNodeContent (anode,s);
|
}
|
return 1;
|
}
|
|
int createTree(string id, int parentItem)
|
{
|
if(treeview__::GetChildItem(tv_menu.GetId(), parentItem) > 0) return 0;
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("pid",id);
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[leftFrame.xq]",arg.GetString(),x)!=1)
|
//if(url::get(m_iface+"/pref/tree",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/tree",arg.GetString(),x)!=1)
|
{
|
trace(x.GetXml());
|
return -1;
|
}
|
//trace(x.GetXml());
|
var list=x.GetXmlDoc().selectNodes("items/item");
|
int i=0,s=list.length;
|
msxml::IXMLDOMElement xitem;
|
for (i=0;i<s;i++)
|
{
|
xitem= list.item(s - i - 1);
|
string id = xitem.selectSingleNode("ModuleID").text;
|
string Name="";
|
if(xitem.selectSingleNode("ModuleName")) Name=xitem.selectSingleNode("ModuleName").text;
|
string image = 15;
|
if(xitem.selectSingleNode("ModuelImage")) image=xitem.selectSingleNode("ModuelImage").text;
|
int curItem=treeview__::InsertItem(tv_menu.GetId(), parentItem,0,Name,id,image.toInt());
|
string child=xitem.selectSingleNode("@child").text;//item.getAttribute("HasChild");
|
if (child != "0")
|
treeview__::SetItemChild1(tv_menu.GetId(), curItem,1);
|
}
|
}
|
|
int OnNew()
|
{
|
int i =1;
|
while(dw_list.GetColumnName(i) != "")
|
{
|
dw_list.SetItemString(1, i, "");
|
i++;
|
}
|
dw_list.ResetUpdateStatus();
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
x.LoadXml("<item><ModuelPage/><status _displaystring='ÆôÓÃ'>Y</status><type _displaystring='²Ëµ¥'>0</type><ModuelImage>17</ModuelImage><ModuelParam><args/></ModuelParam><roles/></item>");
|
dw_list.Retrieve(x);
|
dw_list.ResetUpdateStatus();
|
dw_list.Redraw();
|
dw_param.Retrieve(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args"));
|
dw_param.ResetUpdateStatus();
|
dw_param.Redraw();
|
dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("item/roles"));
|
dw_role.ResetUpdateStatus();
|
dw_role.Redraw();
|
return 1;
|
}
|
|
int OnAddRow(xdwgrid__ dw)
|
{
|
dw.InsertRow(0);
|
return 1;
|
}
|
|
int OnDelRow(xdwgrid__ dw)
|
{
|
int row = dw.GetRow();
|
if(row<1 || row > dw.GetRowCount()) return -1;
|
dw.DeleteRow(row);
|
return 1;
|
}
|
/*
|
int openUrl(string aurl, param para)
|
{
|
int pos = aurl.find("/",0);
|
if(pos<0) return "";
|
string iface = aurl.left(pos);
|
string root = aurl.mid(pos + 1,9999);
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
if( iface.find(".vface",0)<0 )
|
{
|
return -1;
|
}
|
else
|
{
|
string typ = iface.mid(iface.find(".",0) + 1,9999);
|
xaserver__::LoadUrl("","dev:"+typ+"["+iface+"]","",x);
|
}
|
var doc = x.GetXmlDoc();
|
var n = doc.selectSingleNode("//resource[@url='" + root+"']/@src");
|
if(n)
|
{
|
string xq = n.text;
|
return OpenWindow(xq, para);
|
}else
|
{
|
n = doc.selectSingleNode("//group[@for='worknode']/resource[@url='" + root+"']");
|
if(n)
|
{
|
string vface = n.selectSingleNode("@vface").text;
|
string view = n.selectSingleNode("@view").text;
|
string config = n.selectSingleNode("@config").text;
|
if(config != "" )
|
{
|
xaserverarg__ arg = para;
|
arg.AddArg("config",config);
|
}
|
|
if(vface=="."|| vface=="")
|
{
|
var v = doc.selectSingleNode("//resource[@url='" + view+"']/@src");
|
if(v)
|
{
|
return OpenWindow(v.text, para);
|
}
|
}else
|
return openUrl(vface+"/"+view,para);
|
}
|
}
|
return -1;
|
}
|
*/
|
int OnAddRole()
|
{
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
//OpenWindow("dev:xpage[selectRole.vx]", arg);
|
//openUrl(m_vface+"/xpage/role/select/user", arg);
|
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;
|
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", name);
|
dw_role.SetItemString(row + i, "type", tpy);
|
}
|
return 1;
|
}
|
|
int OnDel()
|
{
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
dw_list.DwUpdateAllTo(x.GetXmlDoc());
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
string id = e.selectSingleNode("@guid").text;
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id", id);
|
//trace(id);
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[deleteModule.xq]",arg.GetString(),x)!=1)
|
//if(url::get(m_iface+"/pref/delete",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/delete",arg.GetString(),x)!=1)
|
{
|
trace("error:"+x.GetXml());
|
alert("ɾ³ý³ö´í!");
|
return 0;
|
}
|
if(x.GetXmlDoc().selectSingleNode("error"))
|
{
|
alert("ÇëÏÈɾ³ý×ÓÏî!");
|
return 0;
|
}
|
int sitem = treeview__::GetSelectedItem(tv_menu.GetId());
|
treeview__::DeleteItem(tv_menu.GetId(), sitem);
|
return 1;
|
}
|
|
int OnSave()
|
{
|
dw_param.AcceptText();
|
dw_list.AcceptText();
|
/*int aa=1,bb=1;
|
xpoint p;
|
dw_list.getNullCell(p);
|
int xx = p.x;
|
trace(xx);
|
int yy = p.y;
|
trace(yy);
|
string zz = dw_list.GetColumnName(yy);
|
trace(zz);*/
|
|
int m = treeview__::GetSelectedItem(tv_menu.GetId());
|
if(m == 0) return -1;
|
|
int n = treeview__::GetRootItem(tv_menu.GetId());
|
if(m == n)
|
if(m_status == "update.modify")
|
{
|
alert("¸ù½Úµã²»ÄÜÐÞ¸Ä!");
|
return 1;
|
}
|
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
dw_list.DwUpdateAllTo(x.GetXmlDoc());
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
e.SetAttribute(m_status, "1");
|
//trace(e.xml);
|
//return 1;
|
|
xml__ x1 = new xml__;
|
x1.setNativePointer(xml__ ::CreateInstance());
|
dw_param.DwUpdateAllTo(x1.GetXmlDoc());
|
msxml::IXMLDOMElement p = x1.GetXmlDoc().documentElement;
|
e.AppendChild(p);
|
|
xml__ x2 = new xml__;
|
x2.setNativePointer(xml__ ::CreateInstance());
|
dw_role.DwUpdateAllToEx(x2.GetXmlDoc());
|
msxml::IXMLDOMElement r = x2.GetXmlDoc().documentElement;
|
e.AppendChild(r);
|
|
//trace(e.xml);
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("content", e.xml);
|
arg.AddArg("dbmap", "Role.config.dbmap");
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[saveModule.xq]",arg.GetString(),x)!=1)
|
//if(url::get(m_iface+"/pref/save",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/save",arg.GetString(),x)!=1)
|
{
|
trace("error:"+x.GetXml());
|
alert("±£´æ³ö´í!");
|
return 0;
|
}
|
//trace(x.GetXml());
|
if(x.GetXmlDoc().selectSingleNode("error"))
|
{
|
alert("±£´æ³ö´í2!");
|
return 0;
|
}
|
dw_list.ResetUpdateStatus();
|
dw_param.ResetUpdateStatus();
|
dw_role.ResetUpdateStatus();
|
|
string id = e.selectSingleNode("@guid").text;
|
string name = "";
|
if(e.selectSingleNode("ModuleName"))
|
name = e.selectSingleNode("ModuleName").text;
|
string image = 15;
|
if(e.selectSingleNode("ModuelImage"))
|
image = e.selectSingleNode("ModuelImage").text;
|
int sitem = treeview__::GetSelectedItem(tv_menu.GetId());
|
if(m_status == "update.new")
|
treeview__::InsertChildItem(tv_menu.GetId(), sitem, name, id, image.toInt());
|
else if(m_status == "update.modify")
|
treeview__::SetItemLabel(tv_menu.GetId(), sitem, name);
|
|
if(m_status == "update.new")
|
{
|
OnNew();
|
int sitem = treeview__::GetSelectedItem(tv_menu.GetId());
|
string xxid = treeview__::GetItemData(tv_menu.GetId(), sitem);
|
dw_list.SetItemString(1, "ModulePID", xxid);
|
}
|
alert("±£´æ³É¹¦!");
|
return 1;
|
}
|
|
int OnCmdDispatch(string comdid)
|
{
|
int hCursor = xutil__::SetCursorWait();
|
if(comdid == "New")
|
{
|
m_status = "update.new";
|
OnNew();
|
int sitem = treeview__::GetSelectedItem(tv_menu.GetId());
|
string id = treeview__::GetItemData(tv_menu.GetId(), sitem);
|
dw_list.SetItemString(1, "ModulePID", id);
|
}
|
else if(comdid == "addparam")
|
OnAddRow(dw_param);
|
else if(comdid == "delparam")
|
OnDelRow(dw_param);
|
else if(comdid == "addrole")
|
OnAddRole();
|
else if(comdid == "delrole")
|
OnDelRow(dw_role);
|
else if(comdid == "Del")
|
OnDel();
|
else if(comdid == "Save")
|
OnSave();
|
|
xutil__::RestoreCursor(hCursor);
|
return 0;
|
}
|
|
int OnTreeMoveNode(ref TNotifyEvent evt,int p)
|
{
|
ref TVNNMHDR nmtv = evt.pnmh;
|
int xfrom = nmtv.FromItem;
|
int xto = nmtv.ToItem;
|
|
int ret = win__::MessageBox(this.GetHWND(), "È·¶¨Òƶ¯½Úµã£¡","Ìáʾ£º",1);
|
//trace(ret);
|
if(ret == 2)
|
{
|
treeview__::DeleteItem(tv_menu.GetId(), xto);
|
return -1;
|
}
|
|
string fid = treeview__::GetItemData(tv_menu.GetId(), xfrom);
|
int xpto = treeview__::GetParentItem(tv_menu.GetId(), xto);
|
string tid = treeview__::GetItemData(tv_menu.GetId(), xpto);
|
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("from", fid);
|
arg.AddArg("to", tid);
|
trace(arg.GetString());
|
//if(url::get(m_iface+"/pref/tree/move",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/tree/move",arg.GetString(),x)!=1)
|
{
|
trace("error:"+x.GetXml());
|
alert("ÒÆ¶¯½Úµã³ö´í!");
|
treeview__::DeleteItem(tv_menu.GetId(), xto);
|
return 0;
|
}
|
treeview__::DeleteItem(tv_menu.GetId(), xfrom);
|
return 1;
|
}
|
|
int OnTreeExpanding(ref TNotifyEvent evt,int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int sitem = nmtv.itemNew.hItem;
|
|
string id = treeview__::GetItemData(tv_menu.GetId(), sitem);
|
int hCursor = xutil__::SetCursorWait();
|
createTree(id, sitem);
|
xutil__::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnTreeSelChanged(ref TNotifyEvent evt,int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int hItem = nmtv.itemNew.hItem;
|
|
int hCursor = xutil__::SetCursorWait();
|
string id = treeview__::GetItemData(tv_menu.GetId(), hItem);
|
//trace(id);
|
m_status = "update.modify";
|
|
OnNew();
|
|
int xItem = treeview__::GetRootItem(tv_menu.GetId());
|
if(hItem == xItem)
|
{
|
string label = treeview__::GetItemLabel(tv_menu.GetId(), xItem);
|
dw_list.SetItemString(1, "ModuleName", label);
|
dw_list.ResetUpdateStatus();
|
return 0;
|
}
|
|
xml__ x = new xml__;
|
x.setNativePointer(xml__ ::CreateInstance());
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
xaserverarg__ arg=new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id",id);
|
//if(xaserver__::ExecXQuery(GetServerUrl(),"[leftMenu.xq]",arg.GetString(),x)!=1)
|
//if(url::get(m_iface+"/pref/maint",arg.GetString(),x)!=1)
|
if(url::get("/sale/data/Role.config/pref/maint",arg.GetString(),x)!=1)
|
{
|
trace(x.GetXml());
|
return -1;
|
}
|
dw_list.Retrieve(x);
|
dw_list.ResetUpdateStatus();
|
dw_list.Redraw();
|
if(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args"))
|
{
|
dw_param.Retrieve(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args"));
|
dw_param.ResetUpdateStatus();
|
dw_param.Redraw();
|
}
|
if(x.GetXmlDoc().selectSingleNode("item/roles"))
|
{
|
dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("item/roles"));
|
dw_role.ResetUpdateStatus();
|
dw_role.SetReadOnly(true);
|
dw_role.Redraw();
|
}
|
//msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
|
xutil__::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnSetFocus(ref TEvent evt,int p)
|
{
|
SetAgent();
|
return 1;
|
}
|
|
int OnXCommand(ref TXCommandEvent evt,int p)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
int OnItemChanged(ref TNotifyEvent evt,int p)
|
{
|
ref DWNMHDR hdr = evt.pnmh;
|
string colname=hdr.colname;
|
if(colname == "type")
|
{
|
string value = hdr.data;
|
//trace(colname, value);
|
if(value == "0")
|
dw_list.SetItemString(1, "ModuelImage", "17");
|
else
|
dw_list.SetItemString(1, "ModuelImage", "16");
|
}
|
return 1;
|
}
|
|
int OnDBClick(ref TNotifyEvent evt,int p)
|
{
|
ref DWNMHDR hdr = evt.pnmh;
|
string colname=hdr.colname;
|
if(colname == "type")
|
{
|
string value = hdr.data;
|
//trace(colname, value);
|
if(value == "0")
|
dw_list.SetItemString(1, "ModuelImage", "17");
|
else
|
dw_list.SetItemString(1, "ModuelImage", "16");
|
}
|
return 1;
|
}
|
|
int OnItemError(ref TNotifyEvent evt,int p)
|
{
|
ref DWNMHDR hdr = evt.pnmh;
|
string colname=hdr.colname;
|
trace(colname);
|
int e = hdr.idFrom;
|
trace(e);
|
|
return 1;
|
}
|
|
int onload()
|
{
|
tv_menu = new treeview__;
|
tv_menu.setNativePointer(GetControl("tv_folder"));
|
int hItem = treeview__::InsertChildItem(tv_menu.GetId(), 0, "Ä£¿é", "", 17);
|
createTree("null", hItem);
|
treeview__::ExpandItemEx(tv_menu.GetId(), hItem);
|
|
dw_list = new xdwtable__;
|
dw_list.setNativePointer(GetControl("dw_base"));
|
//dw_list.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/module]");
|
//dw_list.openUrl(m_vface+"/template/role/config/module");
|
dw_list.openUrl("/sale/view/Role.config/template/role/config/module");
|
dw_list.SetColHeaderHeight(0);
|
dw_list.SetRowSelectorWidth(0);
|
dw_list.SetScrollState(false);
|
|
dw_param = new xdwgrid__;
|
dw_param.setNativePointer(GetControl("dw_param"));
|
//dw_param.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/param]");
|
//dw_param.openUrl(m_vface+"/template/role/config/param");
|
dw_param.openUrl("/sale/view/Role.config/template/role/config/param");
|
|
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);
|
|
AttachEvent("tv_folder", "TVN_ITEMEXPANDING",OnTreeExpanding);
|
AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged);
|
AttachEvent("tv_folder", "TVN_ENDDRAG",OnTreeMoveNode);
|
AttachEvent("WM_XCOMMAND",OnXCommand);
|
AttachEvent("WM_SETFOCUS",OnSetFocus);
|
AttachEvent("dw_base","DWV_ITEMCHANGED",OnItemChanged);
|
AttachEvent("dw_base","DWV_DOUBLECLICKED",OnDBClick);
|
AttachEvent("dw_base","DWV_ITEMERROR",OnItemError);
|
|
SetAgent();
|
|
return 1;
|
}
|
]
|
]
|
]
|