From 858d5b84cb2f9311d6e00d90c6f9527e2e6f57b4 Mon Sep 17 00:00:00 2001
From: lifan <2308045698@qq.com>
Date: 星期四, 04 九月 2025 17:50:13 +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 5f615e1..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
@@ -218,41 +235,70 @@
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