class TemplatePrintDialog : public responsewin { xaserverarg arg_param; string m_EntityName; string m_EntityID; string m_EntityNo; string m_Dir; string m_filePath; string strNode; xdwgrid dw_list; xdwgrid dw_doclist; xole ole_1; bool bupdate; int OnHtml() { string s1=""+ " "+ " Gambardella, Matthew"+ " XML Developer's Guide"+ " Computer"+ " 44.95"+ " 2000-10-01"+ " An in-depth look at creating applications "+ " with XML."+ " "+ " "+ " Ralls, Kim"+ " Midnight Rain"+ " Fantasy"+ " 5.95"+ " 2000-12-16"+ " A former architect battles corporate zombies, "+ " an evil sorceress, and her own childhood to become queen "+ " of the world."+ " "+ " "; xml x = new xml; x.setNativePointer(xml::CreateInstance()); x.LoadXml(s1); //trace(x.GetXml()); //string s2=""+ string s2= ""+ ""+ ""+ ""+ " "+ " Books catalog - listing for Books.xml"+ " "+ " "+ " My Books Catalog"+ " "+ " "+ " "+ " ID: "+ " Author: "+ " Title: "+ " Genre: "+ " Price: "+ " Published on: "+ " Description: "+ " "+ " "+ ""+ ""+ ""+ ""+ ""+ "" ; xml xsl = new xml; xsl.setNativePointer(xml::CreateInstance()); xsl.LoadXml(s2); //trace(xsl.GetXml()); string strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc()); //strHtml = str.mid(21,99999); ole_1.LoadHtml(strHtml); //html_1.SetContent(strHtml); //alert(strHtml); return 0; } int OnRetrieve() { string username = publiccode::GetUser().name; if(username != "admin" && m_Dir != username ) { bupdate = false; }else { bupdate = true; } xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("Entity",m_EntityName); arg.AddArg("Dir",m_Dir); dw_list.Reset(); if (url::get("/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; }else { string s = x.GetXml(); dw_list.Retrieve(x); } dw_list.Redraw(); //dw_list.SetReadOnly(true); if (dw_list.GetRowCount()>0) dw_list.SelectRow(1,true); return 1; } int OnNewTempl() { OpenWindow("dev:xpage[Maint.Template.Print.vx]"); return 1; } int OnMaintTempl() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert("ÇëÑ¡ÔñҪά»¤µÄÄ£°å!"); return 1; } else { msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); string sguid = ele.selectSingleNode("ID").text; string sTemplName = ele.selectSingleNode("TemplName").text; //string sFile = m_filePath + sguid+".xsl"; string sFile = m_filePath + ele.selectSingleNode("urlPath").text; arg_param.AddArg("xsl",sFile); arg_param.AddArg("return","cancel"); OpenWindow("dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int)); CloseWindow(); } return 1; } int OnAddDir() { return 0; } int OnAddTempl() { if (m_Dir=="") { alert("ÇëÑ¡ÔñÄ£°åĿ¼!"); return 0; } string sguid = publiccode::GetGuid(); string sname= sguid +".xsl"; string suri= "rpttemplate"+"\\"+m_EntityName; //rpttemplate\SO //suri = "supplier00"; string ret = xaserver::UploadFile(suri, sname, this.GetHWND(),"",false); if (ret == "-1") { alert("ÉÏ´«µÄÎļþûѡÔñ!"); return 1; } else { xml x=new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg args = new xaserverarg; args.setNativePointer(args.CreateInstance()); args.AddArg("sID",sguid); args.AddArg("sEntity",m_EntityName); args.AddArg("sDir",m_Dir); args.AddArg("urlPath", sname); //alert(m_Dir); while(ret.find("\\",0)>=0) ret = ret.mid(ret.find("\\",0) + 1,9999); args.AddArg("sTemplName",ret); //trace(args.GetString()); if (url::get("/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1) { trace("error:"+x.GetXml()); alert("±£´æ³ö´íÁË!"); return 1; } else { alert("ÉÏ´«Ä£°å³É¹¦!"); OnRetrieve(); } } return 1; } int OnDelTempl() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert("ÇëÑ¡ÔñҪɾ³ýµÄÄ£°å!"); return 0; } else { if (win32::MessageBox(GetHWND(),"È·¶¨ÒªÉ¾³ýÑ¡ÖеÄÄ£°å£¿","Ìáʾ",1) == 2) return 0; msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); string sguid = ele.selectSingleNode("ID").text; xml x=new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg args = new xaserverarg; args.setNativePointer(args.CreateInstance()); args.AddArg("sID",sguid); if (url::get("/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1) { trace("error:"+x.GetXml()); alert("ɾ³ý³ö´íÁË!"); return 0; } else { alert("ɾ³ý³É¹¦!"); OnRetrieve(); } } return 0; } int OnDocListDoubleClicked(ref TNotifyEvent evt,int p) { int hCursor = xutil::SetCursorWait(); OnOpenDocument(); xutil::RestoreCursor(hCursor); return 1; } int OnDoubleClicked(ref TNotifyEvent evt,int p) { int hCursor = xutil::SetCursorWait(); OnOk(); xutil::RestoreCursor(hCursor); return 1; } int OnOpenDocument() { if(dw_doclist.GetRowCount() < 1) return 1; string documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute("guid"); //string billid = dw_docList arg_param.AddArg("DocumentID",documentid); arg_param.AddArg("return","ok"); arg_param.AddArg("action","open"); CloseWindow(); return 1; } int OnOk() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert("ÇëÑ¡ÔñÒª´òÓ¡µÄÄ£°å!"); return 1; } else { msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); trace("\r\n---------------"); trace(ele.xml); string sguid = ele.selectSingleNode("ID").text; string pre = ""; if(ele.selectSingleNode("TemplPre")) pre = ele.selectSingleNode("TemplPre").text; string sTemplName = ele.selectSingleNode("TemplName").text; //string sFile = m_filePath + sguid+".xsl"; trace(sTemplName); string sFile = m_filePath + ele.selectSingleNode("urlPath").text; arg_param.AddArg("xsl",sFile); arg_param.AddArg("return","ok"); arg_param.AddArg("template-name",sTemplName); arg_param.AddArg("template-guid",sguid); arg_param.AddArg("template-pre",pre); arg_param.AddArg("action","new"); trace(arg_param.GetString()); CloseWindow(); /*xaserver::CreateDirectory("C:/Temp"); int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,"C:/Temp/"+sTemplName); if(openRet < 0) { alert("Îļþ´ò¿ªÊ§°Ü£¡"); return 0; } int GENERIC_READ = 0x80000000; int GENERIC_WRITE = 0x40000000; int FILE_SHARE_READ = 0x00000001; int FILE_SHARE_WRITE = 0x00000002; int OPEN_EXISTING = 3; int FILE_ATTRIBUTE_ARCHIVE =0x00000020; int hFile = xwin::CreateFile("C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); if (hFile >0) { //int GMEM_MOVEABLE=0x0002; //int GMEM_ZEROINIT=0x0040; //int MEMSIZE; //int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE); //int pMemory = GlobalLock(hMemory); //int SizeReadWrite; //xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0); int filesize = xwin::GetFileSize(hFile,0); trace("filesize = %d",filesize); string buffer = "".space(filesize+1); int readsize = new int; xwin::ReadFile(hFile,buffer,filesize,readsize,0); trace(buffer); xwin::CloseHandle(hFile); //GlobalUnlock(pMemory); //GlobalFree(hMemory); } */ /*openRet = xwin::ShellExecute(0,"open","C:/Temp/"+sTemplName,"","",5); if(openRet < 32) { alert("Îļþ´ò¿ªÊ§°Ü2£¡"); return 0; }*/ } return 0; } int OnSave() { dw_list.AcceptText(); xml x = new xml; x.setNativePointer(xml::CreateInstance()); dw_list.DwUpdateAllToEx(x.GetXmlDoc()); xaserverarg arg = new xaserverarg; arg.setNativePointer(xaserverarg::CreateInstance()); arg.AddArg("content",x.GetXml()); if (url::get("/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1) { trace("error:"+x.GetXml()); alert("±£´æ³ö´íÁË!"); return 1; } else { dw_list.ResetUpdateStatus(); alert("±£´æ³É¹¦!"); } return 1; } int PreOnCmdDispatch(string comdid) { //·µ»Ø0¡ª¡ª²»ÔÚÖ´ÐÐÒÔÏ´úÂ룻·µ»ØÆäËû¡ª¡ªÖ´ÐÐÒÔÏ´úÂë¡£ if(comdid.left(8) == "xmPanel:"){ string no = comdid.mid(8, 99); //int id = no.toInt(); xml x = new xml; x.setNativePointer(xml::CreateInstance()); x.LoadXml(strNode); msxml::IXMLDOMDocument doc= x.GetXmlDoc(); msxml::IXMLDOMElement e = doc.documentElement; string slable =e.selectSingleNode("//xtoolbutton[@name='"+comdid+"']/@caption").text; m_Dir = slable; OnRetrieve(); return 1; } if (comdid=="xmAddDir") return OnAddDir(); if (comdid=="xmAddTempl" && bupdate) return OnAddTempl(); if (comdid=="xmDelTempl" && bupdate) return OnDelTempl(); if (comdid=="xmMaintTempl" && bupdate) return OnMaintTempl(); if (comdid=="xmNewTempl" && bupdate) return OnNewTempl(); if (comdid=="xmHtml") return OnHtml(); if (comdid=="xmOk") return OnOk(); if (comdid=="xmSave") return OnSave(); if(comdid=="xmOpen") return OnOpenDocument(); else if (comdid=="xmCancel") { arg_param.AddArg("return","cancel"); CloseWindow(); return 1; } return 0; } int PostOnAttachEvent() { //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged); //AttachEvent("dw_list","DWV_CLICKED",OnClicked); //AttachEvent("dw_list","DWV_RCLICKED",OnRClicked); //AttachEvent("dw_list","DWV_ITEMCHANGED",OnItemChanged); //AttachEvent("dw_list","DWV_CHILDCONTENT",OnChildContent); AttachEvent("dw_doclist","DWV_DOUBLECLICKED",OnDocListDoubleClicked); AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked); return 1; } int SetAgent() { PUser puser = new PUser; puser = publiccode::GetUser(); string susername = puser.name; if (susername !="admin") { string xfNodeAgentArea = "DirButton"; xnode anode = GetAgentNode(xfNodeAgentArea); msxml::IXMLDOMElement xframeElement = GetElement(); string tools=""; SetAgentNodeContent(anode, tools); } return 1; } int CreateDir() { PUser puser = new PUser; puser = publiccode::GetUser(); string susername = puser.name; xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("EntityName",m_EntityName,""); arg.AddArg("EntityID",m_EntityID,""); arg.AddArg("susername",susername,""); // if (url::get("/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; }else { string s = x.GetXml(); } msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//Entity"); int i; int nlen = nlist.length; string toolStr = ""; string deptName= publiccode::GetUser().deptname; if(deptName=="¸úµ¥²¿" && m_EntityName=="GDN3"){ for(i=2; i"; toolStr += str1; if (i==2) m_Dir = sDir1; } }else if(deptName.find("ÒµÎñ")>=0 && m_EntityName=="GDN3" ) { for(i=1; i<2; i++) { msxml::IXMLDOMElement e2 = nlist.item(i); string sDir2 = e2.selectSingleNode("@Dir").text; string str2 = ""; toolStr += str2; if (i==1) m_Dir = sDir2; } for(i=4; i"; toolStr += str3; } }else{ for(i=0; i"; toolStr += str; if (i==0) m_Dir = sDir; } } toolStr += ""; strNode = toolStr; //trace(toolStr); xnode anode = GetAgentNode("Dir"); xwin::SetAgentNodeContent(anode,toolStr) ; OnRetrieve(); return 1; } int OnInit() { SetAgent(); dw_list = this.GetControl("dw_list"); dw_list.openUrl("/sale/view/view.base/template/PrintView/listDialog"); dw_list.SetReadOnly(true); dw_list.SetSelectionMode(4); dw_list.SetColumnState("ID",false); dw_doclist = GetControl("dw_doclist"); dw_doclist.openUrl("/sale/view/GDN/template/doclist"); string sUrl = GetServerUrl(); sUrl = sUrl.mid(0, sUrl.length() - 19); m_filePath = "/business/rpttemplate"; arg_param = new xaserverarg; if (GetParam()) { int p = GetParam(); arg_param.setNativePointer(p); m_EntityName = arg_param.GetArgString("EntityName"); m_EntityID = arg_param.GetArgString("EntityID"); m_EntityNo = arg_param.GetArgString("EntityNo"); xaserverarg arg = new xaserverarg; arg.setNativePointer(xaserverarg::CreateInstance()); arg.AddArg("EntityName", m_EntityName); arg.AddArg("EntityID", m_EntityID); arg.AddArg("EntityNo", m_EntityNo); xml x =new xml; x.setNativePointer(xml::CreateInstance()); if(url::get("/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1) { string error = x.GetXmlDoc().text; trace(error); }else { dw_doclist.Retrieve(x); dw_doclist.SetReadOnly(true); } } else { arg_param.setNativePointer(arg_param.CreateInstance()); m_EntityName = "SO"; m_EntityID ="00000000-0000-0000-0000-000000000000"; } m_Dir = ""; m_filePath = m_filePath + "/" + m_EntityName+"/"; //trace(m_filePath); CreateDir(); return 1; } int onload() { responsewin::onload(); /*if (GetParam()) { string action = arg_param.GetArgString("action"); if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0)) SwitchLayer("sheet2","frame"); } */ return 1; } int onloaded() { //responsewin::onload(); /*if (GetParam()) { string action = arg_param.GetArgString("action"); if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0)) SwitchLayer("sheet2","frame"); } */ return 1; } };