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:
Tomasz Sowa 2021-06-16 23:42:23 +02:00
parent 53fe5c35b9
commit ab89ffe096
9 changed files with 208 additions and 16 deletions

View File

@ -331,6 +331,11 @@ bool App::Init()
model_connector.set_winix_config(&config);
model_connector.set_winix_request(&req);
model_connector.set_winix_logger(&log);
model_connector.set_winix_dirs(&system.dirs);
model_connector.set_winix_mounts(&system.mounts);
model_connector.set_winix_users(&system.users);
model_connector.set_winix_groups(&system.groups);
model_connector.set_winix_session_logger(nullptr); // will be set for each request
if( !TryToMakeDatabaseMigration() )
return false;

View File

@ -106,10 +106,6 @@ public:
/*
model
*/
// ...
System system;
@ -121,9 +117,6 @@ public:
bool stdout_is_closed;
/*
view
*/
Templates templates;

View File

@ -95,9 +95,19 @@ void ThreadManager::Add(BaseThread * pbase, const wchar_t * thread_name)
data.postgresql_connector.wait_for_connection();
data.model_connector.set_db_connector(data.postgresql_connector);
data.model_connector.set_flat_connector(data.json_connector);
data.model_connector.set_winix_config(config);
data.model_connector.set_winix_logger(item.object->get_logger());
data.model_connector.set_logger(item.object->get_logger());
data.model_connector.set_winix_config(config);
data.model_connector.set_winix_request(nullptr);
data.model_connector.set_winix_logger(item.object->get_logger());
data.model_connector.set_winix_dirs(nullptr);
data.model_connector.set_winix_mounts(nullptr);
data.model_connector.set_winix_users(nullptr);
data.model_connector.set_winix_groups(nullptr);
data.model_connector.set_winix_session_logger(nullptr);
//data.model_connector.set_winix_request();
item.object->set_model_connector(&data.model_connector);

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;
};