From 03ef0b51103c735077c784c7df81ae2bcc1599ab Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期四, 13 二月 2025 18:33:56 +0800 Subject: [PATCH] update --- jrj/xframe/devloper/XDevEditPage.hpp | 143 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 97 insertions(+), 46 deletions(-) diff --git a/jrj/xframe/devloper/XDevEditPage.hpp b/jrj/xframe/devloper/XDevEditPage.hpp index d9a4f38..b2bac45 100644 --- a/jrj/xframe/devloper/XDevEditPage.hpp +++ b/jrj/xframe/devloper/XDevEditPage.hpp @@ -8,6 +8,8 @@ #include <vbusiness/vutil/publiccode.vutil.vbusiness.hpp> #include <win32/xfile.hpp> +#include <tchar.h> + using xml = KXMLDOMDocument; class export XDevEditPage : public xwin { @@ -16,17 +18,7 @@ public: xstring ProcessDevCmd(xstring cmd, xstring ext) { - //trace(ext); - int nlen = 0; - BYTE* pdata; - xaserver::ProcessCmd(GetServerUrl(), (L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext, pdata, nlen); - if (nlen > 0) - { - xstring str = ((wchar_t*)pdata); - return str.mid(1, 9999999); - } - else - return L""; + return xaserver::ProcessCmd(GetServerUrl(), (L"uri.hxsoft.com/xaserver/developer " + cmd).c_str(), ext); } HTREEITEM GetProjectItem(xtreeview tv_folder, HTREEITEM hItem ) @@ -116,11 +108,10 @@ 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") @@ -139,7 +130,7 @@ //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"); @@ -168,9 +159,34 @@ } 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() @@ -178,18 +194,19 @@ 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 @@ -217,42 +234,71 @@ int himage = xstring(e1.getAttribute(L"image")).toInt(); HTREEITEM hNewItem = tv_folder.InsertChildItem(hItem, arg.GetArgString(L"name"), e1, himage); - /* - 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; - HANDLE hFile = xfile::CreateFile(L"D:\\jrjhome\\developer-yh\\projects\\mherp.com.cn\\前端策略\works\\供应链\\" + 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); - DWORD FileSizeHigh = 0; - int filesize = xfile::GetFileSize(hFile,FileSizeHigh); - char * buffer = new char[filesize+2]; - DWORD readsize; - xfile:ReadFile(hFile, buffer, filesize, &readsize, 0); - xfile::CloseHandle(hFile); - }*/ - 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; } @@ -266,7 +312,12 @@ 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; @@ -305,12 +356,12 @@ 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; -- Gitblit v1.9.3