2008-12-30 02:05:03 +01:00
|
|
|
/*
|
|
|
|
* This file is a part of CMSLU -- Content Management System like Unix
|
|
|
|
* and is not publicly distributed
|
|
|
|
*
|
|
|
|
* Copyright (c) 2008, Tomasz Sowa
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "templates.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace TemplatesFunctions
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void dir(Info & i)
|
|
|
|
{
|
|
|
|
for(size_t a=0 ; a<request.dir_table.size() ; ++a)
|
|
|
|
{
|
|
|
|
HtmlEscape(i.out, request.dir_table[a]->url);
|
|
|
|
i.out << '/';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-14 21:11:12 +01:00
|
|
|
void dir_can_read_exec(Info & i)
|
|
|
|
{
|
|
|
|
bool result = true;
|
|
|
|
|
|
|
|
for(size_t a=0 ; a<request.dir_table.size() ; ++a)
|
|
|
|
{
|
|
|
|
if( !request.HasReadExecAccess(*request.dir_table[a]) )
|
|
|
|
{
|
|
|
|
result = false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
i.result = result;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
|
|
|
|
static std::vector<Item*> dir_childs_table;
|
|
|
|
static size_t dir_childs_index;
|
|
|
|
|
|
|
|
// request.id is never 0 and we can start dir_childs_reqid from 0
|
|
|
|
static size_t dir_childs_reqid = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void dir_childs_tab(Info & i)
|
|
|
|
{
|
|
|
|
if( dir_childs_reqid != request.id )
|
|
|
|
{
|
|
|
|
dir_childs_reqid = request.id;
|
|
|
|
dir_childs_table.clear();
|
|
|
|
|
|
|
|
if( !request.dir_table.empty() )
|
|
|
|
data.dirs.GetDirChilds(request.dir_table.back()->id, dir_childs_table);
|
|
|
|
}
|
|
|
|
|
|
|
|
dir_childs_index = i.iter;
|
|
|
|
i.result = dir_childs_index < dir_childs_table.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void dir_childs_tab_url(Info & i)
|
|
|
|
{
|
|
|
|
if( dir_childs_index < dir_childs_table.size() )
|
|
|
|
HtmlEscape(i.out, dir_childs_table[dir_childs_index]->url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static size_t dir_index;
|
|
|
|
|
|
|
|
|
|
|
|
void dir_tab(Info & i)
|
|
|
|
{
|
|
|
|
dir_index = i.iter;
|
|
|
|
i.result = dir_index < request.dir_table.size();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void dir_tab_url(Info & i)
|
|
|
|
{
|
|
|
|
if( dir_index < request.dir_table.size() )
|
|
|
|
HtmlEscape(i.out, request.dir_table[dir_index]->url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void dir_tab_link(Info & i)
|
|
|
|
{
|
|
|
|
i.out << data.base_url;
|
|
|
|
|
|
|
|
for(size_t a = 0 ; a <= dir_index && a < request.dir_table.size() ; ++a)
|
|
|
|
{
|
|
|
|
HtmlEscape(i.out, request.dir_table[a]->url);
|
|
|
|
i.out << '/';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-12-31 19:28:12 +01:00
|
|
|
static Item dir_last_default_item;
|
|
|
|
static size_t dir_last_default_item_reqid = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void dir_last_default_item_init()
|
|
|
|
{
|
|
|
|
if( dir_last_default_item_reqid == request.id )
|
|
|
|
return;
|
|
|
|
|
|
|
|
dir_last_default_item_reqid = request.id;
|
|
|
|
|
|
|
|
dir_last_default_item.Clear();
|
|
|
|
log << "inicjalizacja dir_last_default_item" << logend;
|
|
|
|
|
|
|
|
if( request.dir_table.empty() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
long default_item = request.dir_table.back()->default_item;
|
|
|
|
|
|
|
|
if( default_item == -1 )
|
|
|
|
return;
|
|
|
|
|
|
|
|
std::vector<Item> item_table; // !! tymczasowo, nie bedzie tego po zmianie interfejsu dla Db
|
|
|
|
db.GetItem(item_table, default_item);
|
|
|
|
|
|
|
|
if( item_table.empty() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
dir_last_default_item = item_table[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void dir_last_default_item_dir(Info & i)
|
|
|
|
{
|
|
|
|
dir_last_default_item_init();
|
|
|
|
|
|
|
|
std::string path;
|
|
|
|
|
|
|
|
if( dir_last_default_item.parent_id != -1 )
|
|
|
|
if( data.dirs.MakePath(dir_last_default_item.parent_id, path) )
|
|
|
|
HtmlEscape(i.out, path);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void dir_last_default_item_url(Info & i)
|
|
|
|
{
|
|
|
|
dir_last_default_item_init();
|
|
|
|
|
|
|
|
HtmlEscape(i.out, dir_last_default_item.url);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
|
|
|
|
|
2009-01-14 21:11:12 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2008-12-30 02:05:03 +01:00
|
|
|
} // namespace TemplatesFunctions
|
|
|
|
|
|
|
|
|
|
|
|
|