diff --git a/winixd/core/config.cpp b/winixd/core/config.cpp index 06e4f81..9558d74 100644 --- a/winixd/core/config.cpp +++ b/winixd/core/config.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2018, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -186,6 +186,7 @@ void Config::AssignValues(bool stdout_is_closed) templates_fun_prefix = Text(L"templates_fun_prefix", L"fun_"); templates_fun_postfix = Text(L"templates_fun_postfix", L".html"); templates_index = Text(L"templates_index", L"index.html"); + templates_index_generic = Text(L"templates_index_generic", L"index_generic.html"); templates_index_raw = Text(L"templates_index_raw", L"index_raw.html"); template_only_root_use_template_fun = Bool(L"template_only_root_use_template_fun", false); diff --git a/winixd/core/config.h b/winixd/core/config.h index 8322c26..97a17f6 100644 --- a/winixd/core/config.h +++ b/winixd/core/config.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2018, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -181,6 +181,10 @@ public: // default: index.html std::wstring templates_index; + // html template used to send generic content - without site-css styles and markup (only uikit) + // default: index_generic.html + std::wstring templates_index_generic; + // html template used to send raw content // default: index_raw.html std::wstring templates_index_raw; diff --git a/winixd/core/request.cpp b/winixd/core/request.cpp index d5e4884..f6cf15f 100644 --- a/winixd/core/request.cpp +++ b/winixd/core/request.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2015, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -153,6 +153,8 @@ void Request::Clear() ip = 0; ip_str.clear(); use_200_status_for_not_found_and_permission_denied = false; + + html_template.clear(); } diff --git a/winixd/core/request.h b/winixd/core/request.h index 86f21a0..d46bcb8 100644 --- a/winixd/core/request.h +++ b/winixd/core/request.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2018, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -339,6 +339,8 @@ struct Request bool gen_use_special_chars; + // index template name + std::wstring html_template; /* diff --git a/winixd/functions/cat.cpp b/winixd/functions/cat.cpp index 3b021fe..3fd37be 100644 --- a/winixd/functions/cat.cpp +++ b/winixd/functions/cat.cpp @@ -51,6 +51,9 @@ Cat::Cat() void Cat::MakeGet() { + // IMPROVE ME this probably should be set for all winix functions + cur->request->html_template = cur->request->last_item->html_template; + if( !cur->request->is_item ) { log << log1 << "Content: cat function requires an item" << logend; diff --git a/winixd/functions/ls.cpp b/winixd/functions/ls.cpp index 9b01de3..d50b5eb 100644 --- a/winixd/functions/ls.cpp +++ b/winixd/functions/ls.cpp @@ -56,7 +56,7 @@ void Ls::MakeGet() // this should be moved to ckeditor function (similarly the html content from fun_ls.html) if( cur->request->IsParam(L"ckeditor_browse") ) { - cur->request->index_template = config->templates_index_generic; + cur->request->html_template = config->templates_index_generic; } if( !cur->request->is_item ) diff --git a/winixd/functions/run.cpp b/winixd/functions/run.cpp index 280ad49..baf682b 100644 --- a/winixd/functions/run.cpp +++ b/winixd/functions/run.cpp @@ -60,6 +60,9 @@ void Run::MakePost() void Run::MakeGet() { + // IMPROVE ME this probably should be set for all winix functions + cur->request->html_template = cur->request->last_item->html_template; + if( !cur->request->is_item ) { log << log1 << "Content: Run function requires an item" << logend; diff --git a/winixd/functions/template.cpp b/winixd/functions/template.cpp index 2f8f4df..ac30372 100644 --- a/winixd/functions/template.cpp +++ b/winixd/functions/template.cpp @@ -97,12 +97,17 @@ void Template::CreateTemplateFileName(const std::wstring & index_str) } else if( index == 1 ) + { + html_template = config->templates_index_generic; + } + else + if( index == 2 ) { html_template = config->templates_index_raw; } else { - index -= 2; + index -= 3; Mount::ParamRow & par = system->mounts.pmount->param[system->mounts.MountParHtmlTemplate()]; if( !par.defined || (size_t)index >= par.arg.size() ) diff --git a/winixd/html/index_generic.html b/winixd/html/index_generic.html new file mode 100644 index 0000000..1420223 --- /dev/null +++ b/winixd/html/index_generic.html @@ -0,0 +1,16 @@ + +[# minimalistic template] + + + + + [include "index_head_functions_add.html"] + + [doc_title] + + + + [include "slog.html"] + [content] + + diff --git a/winixd/templates/template.cpp b/winixd/templates/template.cpp index d3a7d00..1293810 100644 --- a/winixd/templates/template.cpp +++ b/winixd/templates/template.cpp @@ -91,8 +91,9 @@ void template_init() // the first item in the html template is an empty string // added in the html template temp_tab.clear(); - temp_tab.push_back(config->templates_index); // index: 0 - temp_tab.push_back(config->templates_index_raw); // index: 1 + temp_tab.push_back(config->templates_index); // index: 0 (indices are used in template.cpp in functions) !! IMPROVE ME it should be done better + temp_tab.push_back(config->templates_index_generic);// index: 1 + temp_tab.push_back(config->templates_index_raw); // index: 2 Mount::ParamRow & par = system->mounts.pmount->param[system->mounts.MountParHtmlTemplate()]; diff --git a/winixd/templates/templates.cpp b/winixd/templates/templates.cpp index 2ca16a0..cc1db03 100644 --- a/winixd/templates/templates.cpp +++ b/winixd/templates/templates.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2018, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -46,7 +46,8 @@ namespace TemplatesFunctions { size_t pat_index; // main index pattern -size_t pat_index_raw; // pattern for a raw content +size_t pat_index_generic; // generic index pattern, without any css-site styles, only main css (uikit) +size_t pat_index_raw; // pattern for a raw content (raw content without html, body markup) size_t pat_err_404; // 404 error size_t pat_err_per_denied; // permission denied error @@ -964,6 +965,7 @@ using namespace TemplatesFunctions; ezc_blocks.Clear(); pat_index = patterns.Add(config->templates_index); + pat_index_generic = patterns.Add(config->templates_index_generic); pat_index_raw = patterns.Add(config->templates_index_raw); pat_err_404 = patterns.Add(L"err_404.html"); // !! IMPROVE ME name to the config pat_err_per_denied = patterns.Add(L"err_per_denied.html"); // !! IMPROVE ME name to the config @@ -1031,6 +1033,11 @@ using namespace TemplatesFunctions; index = patterns.Get(pat_index, TemplatesFunctions::locale.GetCurLang()); } else + if( template_name == config->templates_index_generic ) + { + index = patterns.Get(pat_index_generic, TemplatesFunctions::locale.GetCurLang()); + } + else if( template_name == config->templates_index_raw ) { index = patterns.Get(pat_index_raw, TemplatesFunctions::locale.GetCurLang()); @@ -1058,9 +1065,9 @@ using namespace TemplatesFunctions; Ezc::Pattern * index = 0; - if( (cur->request->function == &functions->fun_cat || cur->request->function == &functions->fun_run) && !cur->request->last_item->html_template.empty() ) + if( !cur->request->html_template.empty() ) { - index = SelectIndexPattern(cur->request->last_item->html_template); + index = SelectIndexPattern(cur->request->html_template); } else { diff --git a/winixd/templates/templates.h b/winixd/templates/templates.h index 41b037d..113a5c5 100644 --- a/winixd/templates/templates.h +++ b/winixd/templates/templates.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2008-2018, Tomasz Sowa + * Copyright (c) 2008-2021, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -67,7 +67,8 @@ class Functions; namespace TemplatesFunctions { extern size_t pat_index; - extern size_t pat_index_fullscreen; + extern size_t pat_index_generic; + extern size_t pat_index_raw; extern size_t pat_err_404; extern size_t pat_err_per_denied;