Commit 3fdb1936 authored by jan.koester's avatar jan.koester
Browse files

test

parent 645efbfe
Loading
Loading
Loading
Loading
+16 −4
Changes for editor/src/webedit_api.cpp: 16 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -482,12 +482,15 @@ void webedit::Api::loadDocumentTreeFromXml(DocumentState &doc, const std::string
            continue;

        el->fromXmlObject(child);
        const char *instanceIdAttr = child->Attribute("instance_id");
        if (instanceIdAttr && instanceIdAttr[0])
            el->setInstanceId(instanceIdAttr);
        if (!doc.root)
            doc.root = el;
        else if (lastTop)
            lastTop->setNextEl(el);
        lastTop = el;
        loadChildrenFromXml(child, el, doc);
        loadChildrenFromXml(child, el, doc, /*preserveInstanceIds=*/true);
    }
}

@@ -1889,6 +1892,9 @@ void webedit::Api::handleImportXml(libhttppp::HttpRequest &curreq,
        if (!el) continue;

        el->fromXmlObject(child);
        const char *instanceIdAttr = child->Attribute("instance_id");
        if (instanceIdAttr && instanceIdAttr[0])
            el->setInstanceId(instanceIdAttr);

        if (!doc.root) {
            doc.root = el;
@@ -1898,7 +1904,7 @@ void webedit::Api::handleImportXml(libhttppp::HttpRequest &curreq,
        lastTop = el;

        // Load children recursively
        loadChildrenFromXml(child, el, doc);
        loadChildrenFromXml(child, el, doc, /*preserveInstanceIds=*/true);
    }

    persistDocumentStateToSession(sessionid, doc);
@@ -3848,7 +3854,8 @@ blogi::webedit::EditPlugin *webedit::Api::createPluginByName(

void webedit::Api::loadChildrenFromXml(tinyxml2::XMLElement *parentXml,
                                        blogi::webedit::EditPlugin *parentEl,
                                        DocumentState &doc) {
                                        DocumentState &doc,
                                        bool preserveInstanceIds) {
    blogi::webedit::EditPlugin *lastChild = nullptr;
    for (auto *childXml = parentXml->FirstChildElement(); childXml;
         childXml = childXml->NextSiblingElement()) {
@@ -3864,6 +3871,11 @@ void webedit::Api::loadChildrenFromXml(tinyxml2::XMLElement *parentXml,
        if (!childEl) continue;

        childEl->fromXmlObject(childXml);
        if (preserveInstanceIds) {
            const char *instanceIdAttr = childXml->Attribute("instance_id");
            if (instanceIdAttr && instanceIdAttr[0])
                childEl->setInstanceId(instanceIdAttr);
        }

        if (!lastChild) {
            parentEl->setChildEl(childEl);
@@ -3873,7 +3885,7 @@ void webedit::Api::loadChildrenFromXml(tinyxml2::XMLElement *parentXml,
        lastChild = childEl;

        // Recurse
        loadChildrenFromXml(childXml, childEl, doc);
        loadChildrenFromXml(childXml, childEl, doc, preserveInstanceIds);
    }
}

+2 −1
Changes for editor/src/webedit_api.h: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -200,7 +200,8 @@ namespace webedit {

        void loadChildrenFromXml(tinyxml2::XMLElement *parentXml,
                                 blogi::webedit::EditPlugin *parentEl,
                                 DocumentState &doc);
                                 DocumentState &doc,
                                 bool preserveInstanceIds = false);

        NodeContext findNodeContextInChildren(blogi::webedit::EditPlugin *parent,
                                              const std::string &uuid);
+4 −0
Changes for src/plugin.h: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -317,6 +317,10 @@ namespace blogi {
                Id.generate();
            }

            void setInstanceId(const std::string &id) {
                if (!id.empty()) Id.parse(id);
            }

        protected:
            uuid::uuid                              Type;
            uuid::uuid                              Id;