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="<catalog>"+
|
" <book id='bk101'>"+
|
" <author>Gambardella, Matthew</author>"+
|
" <title>XML Developer's Guide</title>"+
|
" <genre>Computer</genre>"+
|
" <price>44.95</price>"+
|
" <publish_date>2000-10-01</publish_date>"+
|
" <description>An in-depth look at creating applications "+
|
" with XML.</description>"+
|
" </book>"+
|
" <book id='bk102'>"+
|
" <author>Ralls, Kim</author>"+
|
" <title>Midnight Rain</title>"+
|
" <genre>Fantasy</genre>"+
|
" <price>5.95</price>"+
|
" <publish_date>2000-12-16</publish_date>"+
|
" <description>A former architect battles corporate zombies, "+
|
" an evil sorceress, and her own childhood to become queen "+
|
" of the world.</description>"+
|
" </book>"+
|
" </catalog>";
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
x.LoadXml(s1);
|
//trace(x.GetXml());
|
|
//string s2="<?xml version='1.0'?>"+
|
string s2=
|
"<xsl:stylesheet version='1.0'"+
|
" xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+
|
"<xsl:output method='xml' indent='yes'/>"+
|
"<xsl:template match='catalog'>"+
|
"<HTML>"+
|
" <HEAD>"+
|
" <TITLE>Books catalog - listing for Books.xml</TITLE>"+
|
" </HEAD>"+
|
" <BODY><FONT FACE='Verdana'>"+
|
" <H3>My Books Catalog</H3>"+
|
" <TABLE CELLPADDING='5' CELLSPACING='2'>"+
|
" <xsl:for-each select='book'>"+
|
" <TR>"+
|
" <TD ALIGN='LEFT'><FONT SIZE='2'><B>ID:</B>  <xsl:value-of select='@id'/><BR/>"+
|
" <B>Author:</B>  <xsl:value-of select='author'/><BR/>"+
|
" <B>Title:</B>  <xsl:value-of select='title'/><BR/>"+
|
" <B>Genre:</B>  <xsl:value-of select='genre'/><BR/>"+
|
" <B>Price:</B>  <xsl:value-of select='price'/><BR/>"+
|
" <B>Published on:</B>  <xsl:value-of select='publish_date'/><BR/>"+
|
" <B>Description:</B>  <xsl:value-of select='description'/></FONT></TD>"+
|
" </TR>"+
|
" </xsl:for-each>"+
|
"</TABLE>"+
|
"</FONT>"+
|
"</BODY>"+
|
"</HTML>"+
|
"</xsl:template>"+
|
"</xsl:stylesheet>" ;
|
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="<vbox name='DirButton' height='48' />";
|
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 = "<vbox name='Dir'>";
|
string deptName= publiccode::GetUser().deptname;
|
if(deptName=="¸úµ¥²¿" && m_EntityName=="GDN3"){
|
for(i=2; i<nlen; i++)
|
{
|
msxml::IXMLDOMElement e1 = nlist.item(i);
|
string sDir1 = e1.selectSingleNode("@Dir").text;
|
string str1 = "<xtoolbutton image='15' caption='"+sDir1+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
|
|
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 = "<xtoolbutton image='15' caption='"+sDir2+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str2;
|
if (i==1)
|
m_Dir = sDir2;
|
}
|
for(i=4; i<nlen; i++)
|
{
|
msxml::IXMLDOMElement e3 = nlist.item(i);
|
string sDir3 = e3.selectSingleNode("@Dir").text;
|
string str3 = "<xtoolbutton image='15' caption='"+sDir3+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str3;
|
}
|
}else{
|
for(i=0; i<nlen; i++)
|
{
|
msxml::IXMLDOMElement e = nlist.item(i);
|
string sDir = e.selectSingleNode("@Dir").text;
|
string str = "<xtoolbutton image='15' caption='"+sDir+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>";
|
|
toolStr += str;
|
if (i==0)
|
m_Dir = sDir;
|
}
|
}
|
|
toolStr += "</vbox>";
|
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;
|
}
|
};
|