Commit 7241d57f authored by jan.koester's avatar jan.koester
Browse files

test

parent a1d64ccc
Loading
Loading
Loading
Loading
+21 −0
Changes for editor/widgets/article/article.cpp: 21 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -91,6 +91,11 @@ extern "C" {
            std::string verticalAlign = "";
            std::string m_verticalAlign = "";

            // Flex layout: main-axis direction and cross-axis alignment
            std::string direction = "";
            std::string m_direction = "";
            std::string alignItems = "";

            // Visibility
            bool hidden = false;
            bool m_hidden = false;
@@ -231,6 +236,10 @@ extern "C" {
                addField("border_style", "Border", "text", "e.g. 1px solid #ccc", "desktop");
                addField("opacity", "Opacity", "text", "0.0 - 1.0", "desktop");
                addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"}));
                addField("direction", "Direction", "select", nullptr, "desktop", mkOpts({"vertical","horizontal"}));
                addField("m_direction", "Mobile Direction", "select", nullptr, "mobile", mkOpts({"vertical","horizontal"}));
                addField("align_items", "Align Items", "select", nullptr, "all",
                         mkOpts({"", "flex-start","center","flex-end","stretch","baseline"}));
                addField("hidden", "Hidden", "checkbox", nullptr, "desktop", nullptr, "simple");
                {
                    json_object *hf = json_object_array_get_idx(arr, json_object_array_length(arr) - 1);
@@ -305,6 +314,9 @@ extern "C" {

                element->SetAttribute("vertical_align", verticalAlign.c_str());
                element->SetAttribute("m_vertical_align", m_verticalAlign.c_str());
                element->SetAttribute("direction", direction.c_str());
                element->SetAttribute("m_direction", m_direction.c_str());
                element->SetAttribute("align_items", alignItems.c_str());

                element->SetAttribute("hidden", hidden ? "true" : "false");
                element->SetAttribute("m_hidden", m_hidden ? "true" : "false");
@@ -430,6 +442,12 @@ extern "C" {
                if (val) verticalAlign = val;
                val = xml_data->Attribute("m_vertical_align");
                if (val) m_verticalAlign = val;
                val = xml_data->Attribute("direction");
                if (val) direction = val;
                val = xml_data->Attribute("m_direction");
                if (val) m_direction = val;
                val = xml_data->Attribute("align_items");
                if (val) alignItems = val;

                const char* loaded_hidden = xml_data->Attribute("hidden");
                if (loaded_hidden) hidden = (strcmp(loaded_hidden, "true") == 0);
@@ -492,6 +510,9 @@ extern "C" {
                json_object_object_add(obj, "m_height", json_object_new_string(m_height.c_str()));
                json_object_object_add(obj, "vertical_align", json_object_new_string(verticalAlign.c_str()));
                json_object_object_add(obj, "m_vertical_align", json_object_new_string(m_verticalAlign.c_str()));
                json_object_object_add(obj, "direction", json_object_new_string(direction.c_str()));
                json_object_object_add(obj, "m_direction", json_object_new_string(m_direction.c_str()));
                json_object_object_add(obj, "align_items", json_object_new_string(alignItems.c_str()));
                json_object_object_add(obj, "hidden", json_object_new_boolean(hidden));
                json_object_object_add(obj, "m_hidden", json_object_new_boolean(m_hidden));
                json_object_object_add(obj, "custom_css", json_object_new_string(customCss.c_str()));
+47 −5
Changes for editor/widgets/section/section.cpp: 47 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -101,6 +101,11 @@ extern "C" {
            std::string verticalAlign = "";
            std::string m_verticalAlign = "";

            // Flex layout: main-axis direction and cross-axis alignment
            std::string direction = "";
            std::string m_direction = "";
            std::string alignItems = "";

            // Shape divider: a decorative SVG (wave/oval) cut into the
            // section's top or bottom edge, e.g. to end a hero section
            // without a hard horizontal line.
@@ -259,6 +264,9 @@ extern "C" {
                addField("border_style", "Border", "text", "e.g. 1px solid #ccc", "desktop");
                addField("opacity", "Opacity", "text", "0.0 - 1.0", "desktop");
                addField("vertical_align", "Vertical Align", "select", nullptr, "desktop", mkOpts({"top","center","bottom"}));
                addField("direction", "Direction", "select", nullptr, "desktop", mkOpts({"vertical","horizontal"}));
                addField("align_items", "Align Items", "select", nullptr, "all",
                         mkOpts({"", "flex-start","center","flex-end","stretch","baseline"}));
                addField("shape_divider_type", "Shape Divider", "select", nullptr, "desktop", mkOpts({"none","wave","oval"}), "simple");
                addField("shape_divider_position", "Shape Divider Position", "select", nullptr, "desktop", mkOpts({"bottom","top","both"}), "simple");
                addField("shape_divider_color", "Shape Divider Color", "color_var", nullptr, "desktop", nullptr, "simple");
@@ -290,6 +298,7 @@ extern "C" {
                addField("m_border_style", "Mobile Border", "text", "e.g. 1px solid #ccc", "mobile");
                addField("m_opacity", "Mobile Opacity", "text", "0.0 - 1.0", "mobile");
                addField("m_vertical_align", "Mobile Vertical Align", "select", nullptr, "mobile", mkOpts({"top","center","bottom"}));
                addField("m_direction", "Mobile Direction", "select", nullptr, "mobile", mkOpts({"vertical","horizontal"}));
                addField("m_hidden", "Mobile Hidden", "checkbox", nullptr, "mobile", nullptr, "simple");
                {
                    json_object *mhf = json_object_array_get_idx(arr, json_object_array_length(arr) - 1);
@@ -381,6 +390,11 @@ extern "C" {
                element->SetAttribute("vertical_align", verticalAlign.c_str());
                element->SetAttribute("m_vertical_align", m_verticalAlign.c_str());

                // Flex layout
                element->SetAttribute("direction", direction.c_str());
                element->SetAttribute("m_direction", m_direction.c_str());
                element->SetAttribute("align_items", alignItems.c_str());

                // Shape divider
                element->SetAttribute("shape_divider_type", shapeDividerType.c_str());
                element->SetAttribute("shape_divider_position", shapeDividerPosition.c_str());
@@ -552,6 +566,14 @@ extern "C" {
                val = xml_data->Attribute("m_vertical_align");
                if (val) m_verticalAlign = val;

                // Flex layout
                val = xml_data->Attribute("direction");
                if (val) direction = val;
                val = xml_data->Attribute("m_direction");
                if (val) m_direction = val;
                val = xml_data->Attribute("align_items");
                if (val) alignItems = val;

                // Shape divider
                val = xml_data->Attribute("shape_divider_type");
                if (val) shapeDividerType = val;
@@ -628,6 +650,9 @@ extern "C" {
                json_object_object_add(obj, "m_height", json_object_new_string(m_height.c_str()));
                json_object_object_add(obj, "vertical_align", json_object_new_string(verticalAlign.c_str()));
                json_object_object_add(obj, "m_vertical_align", json_object_new_string(m_verticalAlign.c_str()));
                json_object_object_add(obj, "direction", json_object_new_string(direction.c_str()));
                json_object_object_add(obj, "m_direction", json_object_new_string(m_direction.c_str()));
                json_object_object_add(obj, "align_items", json_object_new_string(alignItems.c_str()));
                json_object_object_add(obj, "shape_divider_type", json_object_new_string(shapeDividerType.c_str()));
                json_object_object_add(obj, "shape_divider_position", json_object_new_string(shapeDividerPosition.c_str()));
                json_object_object_add(obj, "shape_divider_color", json_object_new_string(shapeDividerColor.c_str()));
@@ -832,6 +857,18 @@ extern "C" {
                    val = json_object_get_string(val_obj);
                    if (val) m_verticalAlign = val;
                }
                if (json_object_object_get_ex(obj, "direction", &val_obj)) {
                    val = json_object_get_string(val_obj);
                    if (val) direction = val;
                }
                if (json_object_object_get_ex(obj, "m_direction", &val_obj)) {
                    val = json_object_get_string(val_obj);
                    if (val) m_direction = val;
                }
                if (json_object_object_get_ex(obj, "align_items", &val_obj)) {
                    val = json_object_get_string(val_obj);
                    if (val) alignItems = val;
                }
                if (json_object_object_get_ex(obj, "shape_divider_type", &val_obj)) {
                    val = json_object_get_string(val_obj);
                    if (val && val[0]) shapeDividerType = val;
@@ -940,11 +977,13 @@ extern "C" {
                if (!height.empty()) {
                    style += " height: " + height + ";";
                }
                if (!verticalAlign.empty()) {
                    style += " display: flex; flex-direction: column;";
                if (!verticalAlign.empty() || !direction.empty() || !alignItems.empty()) {
                    style += " display: flex; flex-direction: " +
                        std::string(direction == "horizontal" ? "row" : "column") + ";";
                    if (verticalAlign == "top") style += " justify-content: flex-start;";
                    else if (verticalAlign == "center") style += " justify-content: center;";
                    else if (verticalAlign == "bottom") style += " justify-content: flex-end;";
                    if (!alignItems.empty()) style += " align-items: " + alignItems + ";";
                }
                bool hasShapeDivider = (shapeDividerType == "wave" || shapeDividerType == "oval");
                if (hasShapeDivider) {
@@ -1039,15 +1078,18 @@ extern "C" {
                if (!m_width.empty()) mobileCSS += " width: " + m_width + " !important;";
                else if (width.find("px") != std::string::npos) mobileCSS += " width: 100% !important;";
                if (!m_height.empty()) mobileCSS += " height: " + m_height + " !important;";
                if (!m_verticalAlign.empty()) {
                    mobileCSS += " display: flex !important; flex-direction: column !important;";
                if (!m_verticalAlign.empty() || !m_direction.empty()) {
                    std::string effectiveDirection = !m_direction.empty() ? m_direction : direction;
                    mobileCSS += " display: flex !important; flex-direction: " +
                        std::string(effectiveDirection == "horizontal" ? "row" : "column") + " !important;";
                    if (m_verticalAlign == "top") mobileCSS += " justify-content: flex-start !important;";
                    else if (m_verticalAlign == "center") mobileCSS += " justify-content: center !important;";
                    else if (m_verticalAlign == "bottom") mobileCSS += " justify-content: flex-end !important;";
                }
                if (m_hidden) mobileCSS += " display: none !important;";
                else if (hidden) {
                    if (!m_verticalAlign.empty() || !verticalAlign.empty())
                    if (!m_verticalAlign.empty() || !verticalAlign.empty() ||
                        !m_direction.empty() || !direction.empty() || !alignItems.empty())
                        mobileCSS += " display: flex !important;";
                    else
                        mobileCSS += " display: block !important;";