Commit d5e6d089 authored by jan.koester's avatar jan.koester
Browse files

test

parent 62b17748
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(WINDOWS_EXPORT_ALL_SYMBOLS ON)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

find_package(libnetplus REQUIRED)
find_package(libhtmlpp REQUIRED)
+5 −4
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@ RUN apk update --no-cache && apk upgrade --no-cache && \
    sudo \
    tinyxml2-dev \
    util-linux-dev \
    yaml-dev 
    yaml-dev \
    nodejs-libs

# Clone and build C++ dependencies sequentially
# Using cmake -B/build -S/source to avoid sloppy 'cd' tracking
@@ -107,8 +108,7 @@ RUN apk update && apk upgrade && \
    sed \
    sqlite-libs \
    tinyxml2 \
    yaml \
    nodejs-libs
    yaml

RUN mkdir -p /etc/blogi /usr/local/share/blogi /usr/local/sbin /usr/local/bin /usr/local/lib

@@ -156,7 +156,8 @@ RUN apk update && apk upgrade && \
    sed \
    sqlite-libs \
    tinyxml2 \
    yaml
    yaml \
    nodejs-libs

RUN mkdir -p /etc/blogi \
    /usr/local/share/blogi \
+16 −3
Original line number Diff line number Diff line
# cmake/FindNodeJS.cmake
include_guard(GLOBAL)

find_path(NodeJS_INCLUDE_DIR
    NAMES node.h
@@ -15,13 +16,25 @@ find_package_handle_standard_args(NodeJS
)

if(NodeJS_FOUND AND NOT TARGET NodeJS::NodeJS)
    add_library(NodeJS::NodeJS SHARED IMPORTED)
    add_library(NodeJS::NodeJS UNKNOWN IMPORTED GLOBAL)
    
    # Hier fügen wir NodeJS_INCLUDE_DIR als primären Pfad hinzu.
    # WICHTIG: Sollte der Pfad auf /usr/local/include/node enden, fügen wir 
    # zusätzlich /usr/local/include hinzu, damit V8-Inter-Includes sich finden.
    set(NodeJS_INTERNAL_INCLUDE_DIRS "${NodeJS_INCLUDE_DIR}")
    
    if(NodeJS_INCLUDE_DIR MATCHES "(.+)/node$")
        list(APPEND NodeJS_INTERNAL_INCLUDE_DIRS "${CMAKE_MATCH_1}")
    elseif(NodeJS_INCLUDE_DIR MATCHES "(.+)/include/node$")
        list(APPEND NodeJS_INTERNAL_INCLUDE_DIRS "${CMAKE_MATCH_1}/include")
    endif()

    set_target_properties(NodeJS::NodeJS PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${NodeJS_INCLUDE_DIR}"
        INTERFACE_INCLUDE_DIRECTORIES "${NodeJS_INTERNAL_INCLUDE_DIRS}"
        IMPORTED_LOCATION "${NodeJS_LIBRARY}"
    )

    # Für Alpine/Linux den Whole-Archive Linker-Flag direkt an das Target heften
    # Der saubere, moderne Weg für GCC/Clang unter Linux (speziell Alpine musl)
    if(CMAKE_SYSTEM_NAME MATCHES "Linux")
        set_target_properties(NodeJS::NodeJS PROPERTIES
            INTERFACE_LINK_LIBRARIES "-Wl,--no-as-needed;-Wl,--whole-archive;${NodeJS_LIBRARY};-Wl,--no-whole-archive"
+4 −3
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ include(GNUInstallDirs)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(NodeJS REQUIRED)

# When built standalone, add parent cmake module path
if(NOT TARGET blogidev)
    list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../cmake)
@@ -23,7 +25,6 @@ if(NOT TARGET blogidev)
    find_package(smtpclient REQUIRED)
    find_package(Brotli REQUIRED)
    find_package(paritypp REQUIRED)
    find_package(NodeJS REQUIRED)
    add_definitions(-D${CMAKE_HOST_SYSTEM_NAME} -DWIN32_LEAN_AND_MEAN)
endif()

@@ -60,16 +61,16 @@ set(BLOGI_LIBNODE_LIBRARY "${NodeJS_LIBRARY}" CACHE INTERNAL "blogi libnode libr

if(TARGET blogidev)
    target_link_libraries(blogi-editor PRIVATE
        NodeJS::NodeJS
        blogidev
        json-c::json-c
        tinyxml2::tinyxml2
        NodeJS::NodeJS
    )
else()
    target_sources(blogi-editor PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/../src/plugin.cpp
        ${CMAKE_CURRENT_SOURCE_DIR}/../src/conf.cpp
    )
else()
    target_link_libraries(blogi-editor PRIVATE
        NodeJS::NodeJS
        httppp::httppp
+51 −0
Original line number Diff line number Diff line
@@ -860,6 +860,57 @@ dialog label {
    color: var(--bg-primary);
}

.template-wizard-dialog {
    width: 860px;
    max-width: 92vw;
}

.template-wizard-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin: 10px 0;
}

.template-wizard-template-list,
.template-wizard-columns {
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--bg-tertiary);
    padding: 8px;
    max-height: 280px;
    overflow: auto;
}

.template-wizard-template-item {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 6px;
    font-size: 13px;
}

.template-wizard-template-group {
    color: var(--text-muted);
    font-size: 12px;
}

.template-wizard-column-chip {
    display: inline-block;
    margin: 0 6px 6px 0;
    padding: 4px 8px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--bg-secondary);
    font-size: 12px;
}

@media (max-width: 900px) {
    .template-wizard-layout {
        grid-template-columns: 1fr;
    }
}

/* Settings Dialog */
.settings-dialog {
    width: 700px;
Loading