Loading CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading Dockerfile +5 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 \ Loading cmake/FindNodeJS.cmake +16 −3 Original line number Diff line number Diff line # cmake/FindNodeJS.cmake include_guard(GLOBAL) find_path(NodeJS_INCLUDE_DIR NAMES node.h Loading @@ -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" Loading editor/CMakeLists.txt +4 −3 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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() Loading Loading @@ -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 Loading editor/html/css/editor.css +51 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
Dockerfile +5 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 \ Loading
cmake/FindNodeJS.cmake +16 −3 Original line number Diff line number Diff line # cmake/FindNodeJS.cmake include_guard(GLOBAL) find_path(NodeJS_INCLUDE_DIR NAMES node.h Loading @@ -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" Loading
editor/CMakeLists.txt +4 −3 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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() Loading Loading @@ -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 Loading
editor/html/css/editor.css +51 −0 Original line number Diff line number Diff line Loading @@ -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