| | |
| | | #include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> |
| | | #include <win32/xfile.hpp> |
| | | |
| | | #include <tchar.h> |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | class export XDevEditPage : public xwin |
| | | { |
| | |
| | | return GetData(0); |
| | | } |
| | | |
| | | int SaveContentEx(xstring content, int bcode) |
| | | int SaveContentEx(HTREEITEM hItem,xstring content, int bcode) |
| | | { |
| | | xwin w = GetFrameWindow(); |
| | | xtreeview tv_folder = w.GetControl(L"DevExplorer"); |
| | | HTREEITEM hItem = (HTREEITEM)GetWinParam(); |
| | | KXMLDOMElement e = tv_folder.GetItemData(hItem); |
| | | xstring node = e.tagName(); |
| | | if (node == L"File" || node == L"file") |
| | |
| | | |
| | | //find project folder |
| | | xstring prjguid = L""; |
| | | HTREEITEM pitem = GetProjectItem(tv_folder, hItem); |
| | | HTREEITEM pitem = GetProjectItem(tv_folder, hItem); |
| | | if (pitem) |
| | | prjguid = ((KXMLDOMElement)tv_folder.GetItemData(pitem)).getAttribute(L"guid"); |
| | | |
| | |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int SaveContentEx(xstring content, int bcode) |
| | | { |
| | | HTREEITEM hItem = (HTREEITEM)GetWinParam(); |
| | | return SaveContentEx(hItem,content,bcode); |
| | | } |
| | | |
| | | int SaveContent(HTREEITEM hItem,xstring content) |
| | | { |
| | | return SaveContentEx(hItem,content, 0); |
| | | } |
| | | |
| | | int SaveContent(xstring content) |
| | | { |
| | | return SaveContentEx(content, 0); |
| | | } |
| | | |
| | | int SaveContentEx(xstring prjguid, xstring domainguid, xstring rootguid, xstring guid,xstring content, int bcode) |
| | | { |
| | | xaserverarg arg; |
| | | arg.AddArg(L"project.guid", prjguid); |
| | | arg.AddArg(L"root.guid", rootguid); |
| | | arg.AddArg(L"domain.guid", domainguid); |
| | | arg.AddArg(L"guid", guid); |
| | | arg.AddArg(L"content", content); |
| | | if (bcode)arg.AddArg(L"iscode", L"yes"); |
| | | ProcessDevCmd(L"saveobject", arg.GetString()); |
| | | return 1; |
| | | } |
| | | |
| | | xstring GetGuid() |
| | |
| | | return publiccode::GetGuid(); |
| | | } |
| | | |
| | | int ImportItem(HTREEITEM hItem, KXMLDOMElement ele, xstring prjguid, xstring domainguid, xstring rootguid) |
| | | int ImportItem(xstring baseFolder,HTREEITEM hItem, KXMLDOMElement ele, xstring prjguid, xstring domainguid, xstring rootguid) |
| | | { |
| | | xwin w = GetFrameWindow(); |
| | | xtreeview tv_folder = w.GetControl(L"DevExplorer"); |
| | | xstring caption = ele.getAttribute(L"src"); |
| | | xstring uri = ele.getAttribute(L"uri"); |
| | | xstring guid = ((KXMLDOMElement)tv_folder.GetItemData(hItem)).getAttribute(L"guid"); |
| | | xstring typ = ele.tagName(); |
| | | KXMLDOMElement e = tv_folder.GetItemData(hItem); |
| | | |
| | | |
| | | xaserverarg arg; |
| | | KXMLDOMNode node = e.selectSingleNode(typ + L"[@caption='" + caption + L"']"); |
| | | KXMLDOMNode node = e.selectSingleNode(typ + L"[not(@delete) and @caption='" + caption + L"']"); |
| | | if (!node) |
| | | { |
| | | //add file folder |
| | |
| | | |
| | | |
| | | int lens; |
| | | KXMLDOMNodeList nodes = ele.selectNodes(L"node()"); |
| | | KXMLDOMNodeList nodes = ele.selectNodes(L"node()[not(@delete)]"); |
| | | lens = nodes.length(); |
| | | for (int i = 0; i < lens; i++) |
| | | { |
| | | KXMLDOMElement child = nodes.item(i); |
| | | ImportItem(hNewItem, child, prjguid, domainguid, rootguid); |
| | | ImportItem(baseFolder,hNewItem, child, prjguid, domainguid, rootguid); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | else |
| | | { |
| | | //update content |
| | | if (typ == L"file" && node.selectSingleNode(L"@guid") && node.selectSingleNode(L"@src")) |
| | | { |
| | | wchar_t path[MAX_PATH]=L""; |
| | | xstring src = node.selectSingleNode(L"@src").text(); |
| | | trace(L"\r\n" + src); |
| | | wcscat_s(path, MAX_PATH, baseFolder); |
| | | wcscat_s(path, MAX_PATH, L"/"); |
| | | wcscat_s(path, MAX_PATH, src.c_str()); |
| | | xstring xs = xfile::GetString(path); |
| | | const wchar_t* val = xs.c_str(); |
| | | xstring myguid = node.selectSingleNode(L"@guid").text(); |
| | | xstring mytype = node.selectSingleNode(L"@type") ? node.selectSingleNode(L"@type").text() : L""; |
| | | |
| | | if (xs != L"") |
| | | { |
| | | this->SaveContentEx(prjguid, domainguid, rootguid, myguid, xs, false); |
| | | if (mytype == L"xpage") |
| | | { |
| | | ::PathRemoveExtensionW(path); |
| | | wcscat_s(path, MAX_PATH, L".xss"); |
| | | xs = xfile::GetString(path); |
| | | if (xs != L"")this->SaveContentEx(prjguid, domainguid, rootguid, myguid, xs, true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | HTREEITEM hNewItem = tv_folder.GetChildItem(hItem); |
| | | KXMLDOMElement e2 = node; |
| | | xstring url2 = e2.getAttribute(L"uri"); |
| | | while (hNewItem) |
| | | { |
| | | KXMLDOMElement e1 = tv_folder.GetItemData(hNewItem); |
| | | wchar_t* uri1 = e1.getAttribute(L"uri"); |
| | | wchar_t* uri2 = e2.getAttribute(L"uri"); |
| | | if (url2 == e1.getAttribute(L"uri"))break; |
| | | hNewItem = tv_folder.GetNextItem(hNewItem); |
| | | } |
| | | |
| | | if (hNewItem) |
| | | { |
| | | int lens; |
| | | KXMLDOMNodeList nodes = ele.selectNodes(L"node()[not(@delete)]"); |
| | | lens = nodes.length(); |
| | | for (int i = 0; i < lens; i++) |
| | | { |
| | | KXMLDOMElement child = nodes.item(i); |
| | | ImportItem(baseFolder, hNewItem, child, prjguid, domainguid, rootguid); |
| | | } |
| | | } |
| | | |
| | | } |
| | | return 1; |
| | | } |
| | |
| | | |
| | | xml src; |
| | | src.load(srcfile); |
| | | xstring path = L"//*[(name()='file' or name()='folder') and @src='" + id + L"']"; |
| | | |
| | | TCHAR szPath[MAX_PATH]=L""; |
| | | wcscat_s(szPath, MAX_PATH,srcfile.c_str()); |
| | | ::PathRemoveExtensionW(szPath); |
| | | |
| | | xstring path = L"//*[(name()='file' or name()='folder') and not(@delete) and @src='" + id + L"']"; |
| | | const wchar_t* str = src.xml(); |
| | | KXMLDOMElement srcele = src.selectSingleNode(path); |
| | | if (!srcele) return 1; |
| | |
| | | domainguid = d.getAttribute(L"guid"); |
| | | } |
| | | int lens; |
| | | KXMLDOMNodeList nodes = srcele.selectNodes(L"node()"); |
| | | KXMLDOMNodeList nodes = srcele.selectNodes(L"node()[not(@delete)]"); |
| | | lens = nodes.length(); |
| | | for (int i = 0; i < lens; i++) |
| | | { |
| | | KXMLDOMElement child = nodes.item(i); |
| | | ImportItem(hItem, child, prjguid, domainguid, rootguid); |
| | | ImportItem(szPath,hItem, child, prjguid, domainguid, rootguid); |
| | | } |
| | | |
| | | return 1; |