#include #include #include #include #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) TemplatePrintDialog : public responsewin { public: xaserverarg arg_param; xstring m_EntityName; xstring m_EntityID; xstring m_EntityNo; xstring m_Dir; xstring m_filePath; xstring strNode; xdwgrid dw_list; xdwgrid dw_doclist; xole ole_1; bool bupdate; public: TemplatePrintDialog(void* implPtr, HWND hWnd) :maint(implPtr, hWnd) {} public: static TemplatePrintDialog* CreateInstance(void* implPtr, void* hWnd) { TemplatePrintDialog* pWin = new TemplatePrintDialog(implPtr, (HWND)hWnd); return pWin; } int OnHtml() { xstring s1=L""+ " "+ " 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, L"+ " 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()); //xstring s2=L""+ xstring 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()); xstring 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() { xstring username = publiccode::GetUser().name; if(username != L"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(L"Entity",m_EntityName); arg.AddArg(L"Dir",m_Dir); dw_list.Reset(); if (url::get(L"/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; }else { xstring 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(L"dev:xpage[Maint.Template.Print.vx]"); return 1; } int OnMaintTempl() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert(L"ÇëÑ¡ÔñҪά»¤µÄÄ£°å!"); return 1; } else { KXMLDOMElement ele = dw_list.GetRowElement(row); xstring sguid = ele.selectSingleNode(L"ID").text; xstring sTemplName = ele.selectSingleNode(L"TemplName").text; //xstring sFile = m_filePath + sguid+L".xsl"; xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text; arg_param.AddArg(L"xsl",sFile); arg_param.AddArg(L"return",L"cancel"); OpenWindow(L"dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int)); CloseWindow(); } return 1; } int OnAddDir() { return 0; } int OnAddTempl() { if (m_Dir==L"") { alert(L"ÇëÑ¡ÔñÄ£°åĿ¼!"); return 0; } xstring sguid = publiccode::GetGuid(); xstring sname= sguid +L".xsl"; xstring suri= L"rpttemplate"+L"\\"+m_EntityName; //rpttemplate\SO //suri = L"supplier00"; xstring ret = xaserver::UploadFile(suri, sname, this.GetHWND(),L"",false); if (ret == L"-1") { alert(L"ÉÏ´«µÄÎļþûѡÔñ!"); return 1; } else { xml x=new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg args = new xaserverarg; args.setNativePointer(args.CreateInstance()); args.AddArg(L"sID",sguid); args.AddArg(L"sEntity",m_EntityName); args.AddArg(L"sDir",m_Dir); args.AddArg(L"urlPath", sname); //alert(m_Dir); while(ret.find(L"\\",0)>=0) ret = ret.mid(ret.find(L"\\",0) + 1,9999); args.AddArg(L"sTemplName",ret); //trace(args.GetString()); if (url::get(L"/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1) { trace(L"error:"+x.GetXml()); alert(L"±£´æ³ö´íÁË!"); return 1; } else { alert(L"ÉÏ´«Ä£°å³É¹¦!"); OnRetrieve(); } } return 1; } int OnDelTempl() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert(L"ÇëÑ¡ÔñҪɾ³ýµÄÄ£°å!"); return 0; } else { if (win32::MessageBox(GetHWND(),L"È·¶¨ÒªÉ¾³ýÑ¡ÖеÄÄ£°å£¿",L"Ìáʾ",1) == 2) return 0; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring sguid = ele.selectSingleNode(L"ID").text; xml x=new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg args = new xaserverarg; args.setNativePointer(args.CreateInstance()); args.AddArg(L"sID",sguid); if (url::get(L"/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1) { trace(L"error:"+x.GetXml()); alert(L"ɾ³ý³ö´íÁË!"); return 0; } else { alert(L"ɾ³ý³É¹¦!"); 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; xstring documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute(L"guid"); //xstring billid = dw_docList arg_param.AddArg(L"DocumentID",documentid); arg_param.AddArg(L"return",L"ok"); arg_param.AddArg(L"action",L"open"); CloseWindow(); return 1; } int OnOk() { int row = dw_list.GetRow(); if(row<0 || row>dw_list.GetRowCount()) { alert(L"ÇëÑ¡ÔñÒª´òÓ¡µÄÄ£°å!"); return 1; } else { KXMLDOMElement ele = dw_list.GetRowElement(row); trace(L"\r\n---------------"); trace(ele.xml); xstring sguid = ele.selectSingleNode(L"ID").text; xstring pre = L""; if(ele.selectSingleNode(L"TemplPre")) pre = ele.selectSingleNode(L"TemplPre").text; xstring sTemplName = ele.selectSingleNode(L"TemplName").text; //xstring sFile = m_filePath + sguid+L".xsl"; trace(sTemplName); xstring sFile = m_filePath + ele.selectSingleNode(L"urlPath").text; arg_param.AddArg(L"xsl",sFile); arg_param.AddArg(L"return",L"ok"); arg_param.AddArg(L"template-name",sTemplName); arg_param.AddArg(L"template-guid",sguid); arg_param.AddArg(L"template-pre",pre); arg_param.AddArg(L"action",L"new"); trace(arg_param.GetString()); CloseWindow(); /*xaserver::CreateDirectory(L"C:/Temp"); int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,L"C:/Temp/"+sTemplName); if(openRet < 0) { alert(L"Îļþ´ò¿ªÊ§°Ü£¡"); 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(L"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(L"filesize = %d",filesize); xstring buffer = L"".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,L"open",L"C:/Temp/"+sTemplName,L"",L"",5); if(openRet < 32) { alert(L"Îļþ´ò¿ªÊ§°Ü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(L"content",x.GetXml()); if (url::get(L"/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1) { trace(L"error:"+x.GetXml()); alert(L"±£´æ³ö´íÁË!"); return 1; } else { dw_list.ResetUpdateStatus(); alert(L"±£´æ³É¹¦!"); } return 1; } int PreOnCmdDispatch(xstring comdid) { //·µ»Ø0¡ª¡ª²»ÔÚÖ´ÐÐÒÔÏ´úÂ룻·µ»ØÆäËû¡ª¡ªÖ´ÐÐÒÔÏ´úÂë¡£ if(comdid.left(8) == L"xmPanel:"){ xstring no = comdid.mid(8, 99); //int id = no.toInt(); xml x = new xml; x.setNativePointer(xml::CreateInstance()); x.LoadXml(strNode); KXMLDOMDocument doc= x.GetXmlDoc(); KXMLDOMElement e = doc.documentElement; xstring slable =e.selectSingleNode(L"//xtoolbutton[@name='"+comdid+L"']/@caption").text; m_Dir = slable; OnRetrieve(); return 1; } if (comdid==L"xmAddDir") return OnAddDir(); if (comdid==L"xmAddTempl" && bupdate) return OnAddTempl(); if (comdid==L"xmDelTempl" && bupdate) return OnDelTempl(); if (comdid==L"xmMaintTempl" && bupdate) return OnMaintTempl(); if (comdid==L"xmNewTempl" && bupdate) return OnNewTempl(); if (comdid==L"xmHtml") return OnHtml(); if (comdid==L"xmOk") return OnOk(); if (comdid==L"xmSave") return OnSave(); if(comdid==L"xmOpen") return OnOpenDocument(); else if (comdid==L"xmCancel") { arg_param.AddArg(L"return",L"cancel"); CloseWindow(); return 1; } return 0; } int PostOnAttachEvent() { //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged); //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClicked); //AttachEvent(L"dw_list",L"DWV_RCLICKED",OnRClicked); //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged); //AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent); AttachEvent(L"dw_doclist",L"DWV_DOUBLECLICKED",OnDocListDoubleClicked); AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED",OnDoubleClicked); return 1; } int SetAgent() { PUser puser = new PUser; puser = publiccode::GetUser(); xstring susername = puser.name; if (susername !=L"admin") { xstring xfNodeAgentArea = L"DirButton"; xnode anode = GetAgentNode(xfNodeAgentArea); KXMLDOMElement xframeElement = GetElement(); xstring tools=L""; SetAgentNode(anode, tools); } return 1; } int CreateDir() { PUser puser = new PUser; puser = publiccode::GetUser(); xstring susername = puser.name; xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"EntityName",m_EntityName,L""); arg.AddArg(L"EntityID",m_EntityID,L""); arg.AddArg(L"susername",susername,L""); // if (url::get(L"/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1) { trace(x.GetXmlDoc().text); return -1; }else { xstring s = x.GetXml(); } KXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes(L"//Entity"); int i; int nlen = nlist.length; xstring toolStr = L""; xstring deptName= publiccode::GetUser().deptname; if(deptName==L"¸úµ¥²¿" && m_EntityName==L"GDN3"){ for(i=2; i"; toolStr += str1; if (i==2) m_Dir = sDir1; } }else if(deptName.find(L"ÒµÎñ")>=0 && m_EntityName==L"GDN3" ) { for(i=1; i<2; i++) { KXMLDOMElement e2 = nlist.item(i); xstring sDir2 = e2.selectSingleNode(L"@Dir").text; xstring str2 = L""; 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 += L""; strNode = toolStr; //trace(toolStr); xnode anode = GetAgentNode(L"Dir"); xwin::SetAgentNode(anode,toolStr) ; OnRetrieve(); return 1; } int OnInit() { SetAgent(); dw_list = this.GetControl(L"dw_list"); dw_list.openUrl(L"/sale/view/view.base/template/PrintView/listDialog"); dw_list.SetReadOnly(true); dw_list.SetSelectionMode(4); dw_list.SetColumnState(L"ID",false); dw_doclist = GetControl(L"dw_doclist"); dw_doclist.openUrl(L"/sale/view/GDN/template/doclist"); xstring sUrl = GetServerUrl(); sUrl = sUrl.mid(0, sUrl.length() - 19); m_filePath = L"/business/rpttemplate"; arg_param = new xaserverarg; if (GetParam()) { int p = GetParam(); arg_param.setNativePointer(p); m_EntityName = arg_param.GetArgString(L"EntityName"); m_EntityID = arg_param.GetArgString(L"EntityID"); m_EntityNo = arg_param.GetArgString(L"EntityNo"); xaserverarg arg = new xaserverarg; arg.setNativePointer(xaserverarg::CreateInstance()); arg.AddArg(L"EntityName", m_EntityName); arg.AddArg(L"EntityID", m_EntityID); arg.AddArg(L"EntityNo", m_EntityNo); xml x =new xml; x.setNativePointer(xml::CreateInstance()); if(url::get(L"/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1) { xstring error = x.GetXmlDoc().text; trace(error); }else { dw_doclist.Retrieve(x); dw_doclist.SetReadOnly(true); } } else { arg_param.setNativePointer(arg_param.CreateInstance()); m_EntityName = L"SO"; m_EntityID =L"00000000-0000-0000-0000-000000000000"; } m_Dir = L""; m_filePath = m_filePath + L"/" + m_EntityName+L"/"; //trace(m_filePath); CreateDir(); return 1; } int onload() { responsewin::onload(); /*if (GetParam()) { xstring action = arg_param.GetArgString(L"action"); if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0)) SwitchLayer(L"sheet2",L"frame"); } */ return 1; } int onloaded() { //responsewin::onload(); /*if (GetParam()) { xstring action = arg_param.GetArgString(L"action"); if(action==L"open" || (action==L"" && dw_doclist.GetRowCount() > 0)) SwitchLayer(L"sheet2",L"frame"); } */ return 1; } };