use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "publiccode.vutil.vbusiness.vd"
unit business
[
class CommentaryEx : public xframe
{
string m_EntityID;
string m_EntityType;
string m_EntityConnect;
string m_ConnectID;
xcontrol m_Edit;
htmlctrl m_Html;
xcombobox m_cb;
int Init()
{
if (m_EntityID == "") return -1;
xml x = new xml;
x.setNativePointer(x.CreateInstance());
xaserverarg arg = new xaserverarg;
arg.setNativePointer(arg.CreateInstance());
arg.AddArg("EntityID", m_EntityID);
arg.AddArg("EntityType", m_EntityType);
arg.AddArg("EntityConnect", m_EntityConnect);
if (url::get("/sale/data/Commentary/entity/notelist", arg.GetString(), x) == 1)
{
m_Html.SetContent(x.GetXml());
m_Html.Redraw();
}
return 1;
}
int AppendItem(xml x, msxml::IXMLDOMElement r, string name, string value)
{
msxml::IXMLDOMElement e = x.GetXmlDoc().createElement(name);
e.text = value;
r.appendChild(e);
return 1;
}
int showAtt()
{
xnode anode = GetAgentNode("att");
int s = xcombobox::GetCount(m_cb.GetId());
xml x = new xml;
x.setNativePointer(xml::CreateInstance());
x.LoadXml("");
msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
int i = 0;
for (i = 0; i < s; i++)
{
string tmp = xcombobox::GetLBText(m_cb.GetId(), i);
msxml::IXMLDOMElement e = x.GetXmlDoc().createElement("hbox");
e.setAttribute("height", "20");
msxml::IXMLDOMElement l = x.GetXmlDoc().createElement("xlabel");
l.setAttribute("caption", "" + tmp);
msxml::IXMLDOMElement b = x.GetXmlDoc().createElement("xtoolbutton");
b.setAttribute("width", "18");
b.setAttribute("name", "att_" + i.toString());
b.setAttribute("image", "1,5");
e.appendChild(l);
e.appendChild(b);
ele.appendChild(e);
msxml::IXMLDOMElement g = x.GetXmlDoc().createElement("xlabel");
g.setAttribute("height", "2");
g.setAttribute("style", "background-color:#000000");
ele.appendChild(g);
}
SetAgentNodeContent(anode, ele.xml);
anode.SetWidthHeight(-1, i * 20 + 1);
return 1;
}
int addAtt()
{
string guid = publiccode::GetGuid();
string str = guid.left(2);
string ret = xaserver::UploadFile("attachment" + str, guid + ".jpg", this.GetHWND(), "", false);
int nIndex = xcombobox::AddItem(m_cb.GetId(), ret, guid + ".jpg");
showAtt();
return 1;
}
int delAtt(string no)
{
int nIndex = no.toInt();
xcombobox::DeleteItem(m_cb.GetId(), nIndex);
showAtt();
return 1;
}
msxml::IXMLDOMElement getAtt()
{
int s = xcombobox::GetCount(m_cb.GetId());
xml x = new xml;
x.setNativePointer(xml::CreateInstance());
x.LoadXml("");
msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
int i = 0;
for (i = 0; i < s; i++)
{
string tmp = xcombobox::GetLBText(m_cb.GetId(), i);
string tmp2 = xcombobox::GetItemData(m_cb.GetId(), i);
msxml::IXMLDOMElement e = x.GetXmlDoc().createElement("item");
e.setAttribute("name", "" + tmp);
e.setAttribute("file", "" + tmp2);
ele.appendChild(e);
}
return ele;
}
//ÃüÁî·¢²¼º¯Êý
int OnCmdDispatch(string comdid)
{
if (comdid == "xmOK")
{
if (m_EntityID == "") return 1;
xml x = new xml;
x.setNativePointer(xml::CreateInstance());
xaserverarg arg = new xaserverarg;
arg.setNativePointer(arg.CreateInstance());
string value = m_Edit.GetText();
if (value == "")
{
alert("ÇëÌîдÅú×¢£¡");
return 1;
}
x.LoadXml("");
msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
AppendItem(x, ele, "CommentaryID", publiccode::GetGuid());
AppendItem(x, ele, "EntityID", m_EntityID);
AppendItem(x, ele, "EntityType", m_EntityType);
AppendItem(x, ele, "Remark", value);
AppendItem(x, ele, "ParentConnect", m_EntityConnect);
AppendItem(x, ele, "ParentCommentaryID", m_ConnectID);
AppendItem(x, ele, "CreatorID", xaserver::GetUserId());
ele.appendChild(getAtt());
arg.AddArg("content", "" + ele.xml + "");
if (getUrl("/workflow/action/Commentary/bill.update", arg.GetString(), x) == 1)
{
m_Edit.SetText("");
xcombobox::ResetContent(m_cb.GetId());
Init();
showAtt();
return 1;
}
else
{
alert("Ìí¼Óʧ°Ü!");
return -1;
}
}
else if (comdid == "xmAtt")
{
addAtt();
}
else if (comdid.left(4) == "att_")
{
delAtt(comdid.right(comdid.length() - 4));
}
else
{
CloseWindow();
}
return 1;
}
//ÃüÁî´¦Àíʼþ
int OnXCommand(ref TXCommandEvent evt, int param)
{
return OnCmdDispatch(evt.pStrID);
}
int OnHtmlClick(ref TNotifyEvent evt, int pr)
{
ref HTMLNMHDR p = evt.pnmh;
const string d = m_Html.GetData(p.object);
if (d == "") return -1;
string file = d.mid(0, d.find("|##@@|", 0));
string name = d.mid(d.find("|##@@|", 0) + 6, d.length());
xaserver::CreateDirectory("C:/Temp");
string str = file.left(2);
string ext = "";
if (name.find(".") >= 0) ext = name.mid(name.find("."), name.length());
string sfile = file.left(file.length() - 4);
//trace("--"+ext +" " + "/business/attachment/"+str+"/"+ file);
//int openRet = xaserver::DownLoadFile(GetServerUrl(),"/business/attachment/"+str+"/"+ file,name,"C:/Temp/"+name);
int openRet = xaserver::DownLoadFile(GetServerUrl(), "/business/attachment/" + str + "/" + file, "", "C:/Temp/" + sfile + ext);
if (openRet < 0)
{
alert("Îļþ´ò¿ªÊ§°Ü1£¡");
return -1;
}
//openRet = win32::ShellExecute(0,"open","C:/Temp/"+name,"","",5);
openRet = win32::ShellExecute(0, "open", "C:/Temp/" + sfile + ext, "", "", 5);
if (openRet < 32)
{
alert("Îļþ´ò¿ªÊ§°Ü2£¡");
return -1;
}
return -1;
}
int OnAttachEvent()
{
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
AttachEvent("WM_XCOMMAND", OnXCommand);
AttachEvent("note", "HTC_OBJECTCLICKED", OnHtmlClick);
}
int onload()
{
OnAttachEvent();
m_Edit = GetControl("Txt");
m_Html = GetControl("note");
m_cb = GetControl("attlist");
m_EntityID = "";
m_EntityType = "";
m_EntityConnect = "";
m_ConnectID = "";
if (this.GetParam())
{
//xaserverarg arg = new xaserverarg;
//arg.setNativePointer(GetParam());
xaserverarg arg = GetParam();
m_EntityID = arg.GetArgString("EntityID");
m_EntityType = arg.GetArgString("m_EntityType");
m_EntityConnect = arg.GetArgString("m_EntityConnect");
}
Init();
return 1;
}
};
]