added: to config: 'content_type_header' parameter
the kind of "Content-Type" header send to the client if utf8 is enabled then 'charset=UTF-8' will also be appended added: to templates: an index pattern for 'rawcontent' used when 'rawcontent' parameter is present by default the template has only one [content] ezc function useful in AJAX requests git-svn-id: svn://ttmath.org/publicrep/winix/trunk@784 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
fe2f1605f1
commit
fa05e25a9d
29
core/app.cpp
29
core/app.cpp
|
@ -667,12 +667,35 @@ void App::SendHeadersStatic()
|
|||
}
|
||||
|
||||
|
||||
void App::SendHeaderContentType()
|
||||
{
|
||||
switch( config.content_type_header )
|
||||
{
|
||||
case 1:
|
||||
FCGX_PutS("Content-Type: application/xhtml+xml", fcgi_request.out);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
FCGX_PutS("Content-Type: application/xml", fcgi_request.out);
|
||||
break;
|
||||
|
||||
case 0:
|
||||
default:
|
||||
FCGX_PutS("Content-Type: text/html", fcgi_request.out);
|
||||
}
|
||||
|
||||
if( config.utf8 )
|
||||
FCGX_PutS("; charset=UTF-8", fcgi_request.out);
|
||||
|
||||
FCGX_PutS("\r\n", fcgi_request.out);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void App::SendHeadersForbidden()
|
||||
{
|
||||
FCGX_PutS("Status: 403 Forbidden\r\n", fcgi_request.out);
|
||||
FCGX_PutS("Content-Type: text/html\r\n", fcgi_request.out);
|
||||
SendHeaderContentType();
|
||||
log << log2 << "App: response: 403 Forbidden" << logend;
|
||||
}
|
||||
|
||||
|
@ -739,7 +762,7 @@ void App::SendHeadersNormal(Header header)
|
|||
{
|
||||
case h_404:
|
||||
FCGX_PutS("Status: 404 Not Found\r\n", fcgi_request.out);
|
||||
FCGX_PutS("Content-Type: text/html\r\n", fcgi_request.out);
|
||||
SendHeaderContentType();
|
||||
log << log2 << "App: response: 404 Not Found" << logend;
|
||||
break;
|
||||
|
||||
|
@ -751,7 +774,7 @@ void App::SendHeadersNormal(Header header)
|
|||
FCGX_PutS("Status: 200 OK\r\n", fcgi_request.out);
|
||||
|
||||
if( cur.request->role != Request::authorizer )
|
||||
FCGX_PutS("Content-Type: text/html\r\n", fcgi_request.out);
|
||||
SendHeaderContentType();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -152,6 +152,7 @@ private:
|
|||
void FilterCompressSend(bool compressing, int compress_encoding, const std::wstring & source_ref);
|
||||
bool SendHeadersStaticCreateResource();
|
||||
void SendHeadersStatic();
|
||||
void SendHeaderContentType();
|
||||
void SendHeadersForbidden();
|
||||
void SendHeadersRedirect();
|
||||
void SendHeadersSendFile();
|
||||
|
|
|
@ -227,6 +227,8 @@ void Config::AssignValues(bool stdout_is_closed)
|
|||
|
||||
pattern_cacher_when_delete = Size(L"pattern_cacher_when_delete", 130);
|
||||
pattern_cacher_how_many_delete = Size(L"pattern_cacher_how_many_delete", 30);
|
||||
|
||||
content_type_header = Int(L"content_type_header", 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -245,6 +247,9 @@ void Config::SetAdditionalVariables()
|
|||
|
||||
CheckLocale();
|
||||
CheckPasswd();
|
||||
|
||||
if( content_type_header < 0 || content_type_header > 2 )
|
||||
content_type_header = 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -445,8 +445,13 @@ public:
|
|||
size_t pattern_cacher_when_delete;
|
||||
size_t pattern_cacher_how_many_delete;
|
||||
|
||||
|
||||
|
||||
// header "Content-Type" send to the client
|
||||
// 0 - text/html - for HTML
|
||||
// 1 - application/xhtml+xml - for XHTML 1.0
|
||||
// 2 - application/xml - for XHTML 1.0 or for XHTML 1.1
|
||||
// default: 0
|
||||
// if utf8 is true then "; charset=UTF-8" will also be appended
|
||||
int content_type_header;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,8 @@ namespace TemplatesFunctions
|
|||
{
|
||||
|
||||
size_t pat_index; // main index pattern
|
||||
size_t pat_index_fullscreen; // an empty pattern (without menus etc., used for ckeditor images browser)
|
||||
size_t pat_index_fullscreen; // an empty pattern (without menus etc. but with all rest html tags, used for ckeditor images browser)
|
||||
size_t pat_index_rawcontent; // completly empty pattern (only content, without html tags such as <html>, <body>)
|
||||
size_t pat_err_404; // 404 error
|
||||
size_t pat_err_per_denied; // permission denied error
|
||||
|
||||
|
@ -695,6 +696,7 @@ using namespace TemplatesFunctions;
|
|||
|
||||
pat_index = patterns.Add(config->templates_index);
|
||||
pat_index_fullscreen = patterns.Add(L"index_fullscreen.html");
|
||||
pat_index_rawcontent = patterns.Add(L"index_rawcontent.html");
|
||||
pat_err_404 = patterns.Add(L"err_404.html");
|
||||
pat_err_per_denied = patterns.Add(L"err_per_denied.html");
|
||||
|
||||
|
@ -741,34 +743,53 @@ using namespace TemplatesFunctions;
|
|||
}
|
||||
|
||||
|
||||
void Templates::Generate()
|
||||
|
||||
// can return a null pointer
|
||||
Ezc::Pattern * Templates::SelectIndexPatternFromItemAndMountPoint()
|
||||
{
|
||||
using namespace TemplatesFunctions;
|
||||
|
||||
Ezc::Pattern * index = 0;
|
||||
const std::wstring * index_file_local = 0;
|
||||
|
||||
if( cur->request->IsParam(L"fullscreen") )
|
||||
// first we try to get an index template from 'template' item parameter (template winix function)
|
||||
// if such a parameter is not defined then we try to get an index from the mount point
|
||||
if( !cur->request->last_item->html_template.empty() )
|
||||
{
|
||||
index = patterns.Get(pat_index_fullscreen, locale.GetLang());
|
||||
index_file_local = &cur->request->last_item->html_template;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !cur->request->last_item->html_template.empty() )
|
||||
index_file_local = &cur->request->last_item->html_template;
|
||||
Mounts & mounts = TemplatesFunctions::system->mounts;
|
||||
const std::wstring & temp = cur->mount->FirstArg(mounts.MountParHtmlTemplate());
|
||||
|
||||
if( !index_file_local )
|
||||
{
|
||||
Mounts & mounts = TemplatesFunctions::system->mounts;
|
||||
const std::wstring & temp = cur->mount->FirstArg(mounts.MountParHtmlTemplate());
|
||||
|
||||
if( !temp.empty() )
|
||||
index_file_local = &temp;
|
||||
}
|
||||
|
||||
if( index_file_local && *index_file_local != config->templates_index )
|
||||
index = index_patterns.Get(*index_file_local, locale.GetLang());
|
||||
if( !temp.empty() )
|
||||
index_file_local = &temp;
|
||||
}
|
||||
|
||||
if( index_file_local && *index_file_local != config->templates_index )
|
||||
index = index_patterns.Get(*index_file_local, locale.GetLang());
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// can return a null pointer
|
||||
Ezc::Pattern * Templates::SelectIndexPattern()
|
||||
{
|
||||
using namespace TemplatesFunctions;
|
||||
|
||||
Ezc::Pattern * index = 0;
|
||||
|
||||
if( cur->request->IsParam(L"rawcontent") )
|
||||
index = patterns.Get(pat_index_rawcontent, locale.GetLang());
|
||||
else
|
||||
if( cur->request->IsParam(L"fullscreen") )
|
||||
index = patterns.Get(pat_index_fullscreen, locale.GetLang());
|
||||
else
|
||||
index = SelectIndexPatternFromItemAndMountPoint();
|
||||
|
||||
if( !index )
|
||||
index = change_patterns.Get(cur->mount->dir_id, config->templates_index, locale.GetLang());
|
||||
|
@ -776,6 +797,17 @@ using namespace TemplatesFunctions;
|
|||
if( !index )
|
||||
index = patterns.Get(pat_index, locale.GetLang());;
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Templates::Generate()
|
||||
{
|
||||
using namespace TemplatesFunctions;
|
||||
|
||||
Ezc::Pattern * index = SelectIndexPattern();
|
||||
|
||||
if( index )
|
||||
generator.Generate(cur->request->page, *index);
|
||||
else
|
||||
|
|
|
@ -37,6 +37,8 @@ class Functions;
|
|||
namespace TemplatesFunctions
|
||||
{
|
||||
extern size_t pat_index;
|
||||
extern size_t pat_index_fullscreen;
|
||||
extern size_t pat_index_rawcontent;
|
||||
extern size_t pat_err_404;
|
||||
extern size_t pat_err_per_denied;
|
||||
|
||||
|
@ -485,6 +487,8 @@ private:
|
|||
void ReadLocale();
|
||||
void SetHtmlFilter();
|
||||
void CreateFunctions(); // should be called before reading patterns (patterns will cache ezc functions)
|
||||
Ezc::Pattern * SelectIndexPatternFromItemAndMountPoint();
|
||||
Ezc::Pattern * SelectIndexPattern();
|
||||
|
||||
TemplatesFunctions::EzcGen generator;
|
||||
std::wstring temp;
|
||||
|
|
Loading…
Reference in New Issue