Commit f572ada0 authored by Jan Köster's avatar Jan Köster
Browse files

test

parent 31c29d17
Loading
Loading
Loading
Loading
+21 −12
Changes for src/theme.cpp: 21 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -208,7 +208,13 @@ blogi::Theme::~Theme(){
}

void blogi::Theme::registerCss(const std::string &publicPath, const std::string &variableName){
    _pluginCssMap[publicPath] = variableName;
    for(const auto& file : _PublicFiles){
        if(file.Path == publicPath){
            _pluginCssMap[variableName] = file.Content;
            return;
        }
    }
    std::cerr << "[WARNING] theme::registerCss: '" << publicPath << "' not found in public files" << std::endl;
}

std::string blogi::Theme::getLogoUrl(const int tid) const {
@@ -280,26 +286,29 @@ void blogi::Theme::renderPage(const int tid,const char *name,libhtmlpp::HtmlPage
    };

    for(const auto& file : _PublicFiles){
        std::string css_key;

        auto it = builtinCssMap.find(file.Path);
        if(it != builtinCssMap.end())
            css_key = it->second;
        else {
            auto pit = _pluginCssMap.find(file.Path);
            if(pit != _pluginCssMap.end())
                css_key = pit->second;
        }
        if(it == builtinCssMap.end())
            continue;

        if(!css_key.empty()){
        std::string css = file.Content;
        size_t p = 0;
        while((p = css.find(prefix_placeholder, p)) != std::string::npos){
            css.replace(p, prefix_placeholder.size(), prefix_value);
            p += prefix_value.size();
        }
            variable_map[css_key] = std::move(css);
        variable_map[it->second] = std::move(css);
    }

    // Plugin-registered CSS: content already resolved in registerCss()
    for(const auto& [varName, cssContent] : _pluginCssMap){
        if(variable_map.count(varName)) continue; // builtin takes precedence
        std::string css = cssContent;
        size_t p = 0;
        while((p = css.find(prefix_placeholder, p)) != std::string::npos){
            css.replace(p, prefix_placeholder.size(), prefix_value);
            p += prefix_value.size();
        }
        variable_map[varName] = std::move(css);
    }

    // Template variable replacement loop (e.g., replacing ${VARIABLE} placeholders)
+1 −1
Changes for src/theme.h: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -107,6 +107,6 @@ namespace blogi {
        std::unordered_map<std::string, size_t>             _PublicFileIndex; // lowercase path -> index
        std::string                                        _PrefixLower;     // pre-computed lowercase prefix
        bool                                               _Formated;
        std::map<std::string, std::string>                 _pluginCssMap;    // publicPath -> variable name
        std::map<std::string, std::string>                 _pluginCssMap;    // variableName -> css content (resolved at registerCss time)
    };
};