fixed in Item: void Item::link(Ezc::FunInfo<HtmlTextStream> & env) now returns a correct directory for the item (before the current directory was returned)

added to Item: void Item::dir_link(Ezc::FunInfo<HtmlTextStream> & env)
added to WinixModel:
  Dirs * get_dirs();
  Mounts * get_mounts();
  Users * get_users();
  Groups * get_groups();
  SLog * get_session_logger(); // not finished yet
This commit is contained in:
2021-06-16 23:42:23 +02:00
parent 53fe5c35b9
commit ab89ffe096
9 changed files with 208 additions and 16 deletions

View File

@@ -67,8 +67,9 @@ void Item::fields()
field(L"sort_index", sort_index);
field(L"content_id", L"content", item_content, morm::FT::foreign_key);
field(L"is", &Item::is);
field(L"link", &Item::link);
field(L"is", &Item::is);
field(L"dir_link", &Item::dir_link);
field(L"link", &Item::link);
// may we should add a method setTypeFromInt(int t)?
@@ -281,6 +282,21 @@ void Item::is(Ezc::FunInfo<HtmlTextStream> & env)
}
void Item::dir_link(Ezc::FunInfo<HtmlTextStream> & env)
{
Dirs * dirs = get_dirs();
std::vector<Item*> dir_tab;
if( dirs && dirs->CreateDirTab(parent_id, dir_tab) )
{
for(Item * pitem : dir_tab)
{
env.out << pitem->url << '/';
}
}
}
void Item::link(Ezc::FunInfo<HtmlTextStream> & env)
{
Config * config = get_config();
@@ -295,8 +311,15 @@ void Item::link(Ezc::FunInfo<HtmlTextStream> & env)
env.out << config->base_url;
// FIXME this prints cur->request->dir_tab but we should print the directory in which actually there is the item
print_dir(env);
if( parent_id == req->dir_tab.back()->id )
{
print_dir(env);
}
else
{
dir_link(env);
}
env.out << url;
}
}

View File

@@ -188,6 +188,7 @@ public:
void print_dir_without_slash(Ezc::FunInfo<HtmlTextStream> & env);
void is(Ezc::FunInfo<HtmlTextStream> & env);
void dir_link(Ezc::FunInfo<HtmlTextStream> & env);
void link(Ezc::FunInfo<HtmlTextStream> & env);

View File

@@ -76,6 +76,74 @@ Log * WinixModel::get_logger()
}
Dirs * WinixModel::get_dirs()
{
WinixModelConnector * connector = get_winix_model_connector();
if( connector )
{
return connector->get_winix_dirs();
}
return nullptr;
}
Mounts * WinixModel::get_mounts()
{
WinixModelConnector * connector = get_winix_model_connector();
if( connector )
{
return connector->get_winix_mounts();
}
return nullptr;
}
Users * WinixModel::get_users()
{
WinixModelConnector * connector = get_winix_model_connector();
if( connector )
{
return connector->get_winix_users();
}
return nullptr;
}
Groups * WinixModel::get_groups()
{
WinixModelConnector * connector = get_winix_model_connector();
if( connector )
{
return connector->get_winix_groups();
}
return nullptr;
}
SLog * WinixModel::get_session_logger()
{
WinixModelConnector * connector = get_winix_model_connector();
if( connector )
{
return connector->get_winix_session_logger();
}
return nullptr;
}
WinixModelConnector * WinixModel::get_winix_model_connector()
{
if( model_connector )

View File

@@ -45,6 +45,11 @@ namespace Winix
class Config;
class Request;
class Log;
class Dirs;
class Mounts;
class Users;
class Groups;
class SLog;
class WinixModel : public morm::Model
@@ -54,7 +59,11 @@ public:
Config * get_config();
Request * get_request();
Log * get_logger();
Dirs * get_dirs();
Mounts * get_mounts();
Users * get_users();
Groups * get_groups();
SLog * get_session_logger(); // FIXME always return null at the moment, should be set when a new request is created and clear at the end of a request
protected:

View File

@@ -44,6 +44,11 @@ WinixModelConnector::WinixModelConnector()
config = nullptr;
request = nullptr;
log = nullptr;
dirs = nullptr;
mounts = nullptr;
users = nullptr;
groups = nullptr;
slog = nullptr;
}
@@ -65,6 +70,35 @@ Log * WinixModelConnector::get_winix_logger()
}
Dirs * WinixModelConnector::get_winix_dirs()
{
return dirs;
}
Mounts * WinixModelConnector::get_winix_mounts()
{
return mounts;
}
Users * WinixModelConnector::get_winix_users()
{
return users;
}
Groups * WinixModelConnector::get_winix_groups()
{
return groups;
}
SLog * WinixModelConnector::get_winix_session_logger()
{
return slog;
}
void WinixModelConnector::set_winix_config(Config * config)
{
this->config = config;
@@ -83,6 +117,34 @@ void WinixModelConnector::set_winix_logger(Log * log)
}
void WinixModelConnector::set_winix_dirs(Dirs * dirs)
{
this->dirs = dirs;
}
void WinixModelConnector::set_winix_mounts(Mounts * mounts)
{
this->mounts = mounts;
}
void WinixModelConnector::set_winix_users(Users * users)
{
this->users = users;
}
void WinixModelConnector::set_winix_groups(Groups * groups)
{
this->groups = groups;
}
void WinixModelConnector::set_winix_session_logger(SLog * slog)
{
this->slog = slog;
}
}

View File

@@ -43,6 +43,12 @@ namespace Winix
class Config;
class Request;
class Log;
class Dirs;
class Mounts;
class Users;
class Groups;
class SLog;
class WinixModelConnector : public morm::ModelConnector
{
@@ -50,13 +56,23 @@ public:
WinixModelConnector();
Config * get_winix_config();
Config * get_winix_config();
Request * get_winix_request();
Log * get_winix_logger();
Log * get_winix_logger();
Dirs * get_winix_dirs();
Mounts * get_winix_mounts();
Users * get_winix_users();
Groups * get_winix_groups();
SLog * get_winix_session_logger();
void set_winix_config(Config * config);
void set_winix_request(Request * request);
void set_winix_logger(Log * log);
void set_winix_dirs(Dirs * dirs);
void set_winix_mounts(Mounts * mounts);
void set_winix_users(Users * users);
void set_winix_groups(Groups * groups);
void set_winix_session_logger(SLog * slog);
protected:
@@ -64,6 +80,11 @@ protected:
Config * config; // one global config
Request * request; // each thread worker has its own request (not implemented yet)
Log * log; // each thread has its own logger
Dirs * dirs;
Mounts * mounts;
Users * users;
Groups * groups;
SLog * slog;
};