add closing dialogs, redirecting and removing content functionality to the winix framework

add such new methods to FunctionBase:
- bool can_push_url_to_browser_history();
- void add_standard_models();
- void close_modal_dialogs();

- void prepare_doc_url(const wchar_t * local_url, pt::WTextStream & url);
- void prepare_doc_url(const wchar_t * local_url, std::wstring & url);
- std::wstring prepare_doc_url(const wchar_t * local_url = nullptr);
- std::wstring prepare_doc_url(const std::wstring & local_url);

- void redirect_to(const wchar_t * url, bool append_domain = true);
- void redirect_to(const std::wstring & url, bool append_domain = true);
- void redirect_to(const pt::WTextStream & url, bool append_domain = true);

- void redirect_to(const wchar_t * url, const wchar_t * frame_url, const wchar_t * dom_target);
- void redirect_to(const std::wstring & url, const std::wstring & frame_url, const std::wstring & dom_target);
- void redirect_to(pt::WTextStream & url, pt::WTextStream & frame_url, pt::WTextStream & dom_target);
- void redirect_to(pt::WTextStream & url, pt::WTextStream & frame_url, const wchar_t * dom_target);
- void redirect_to(const wchar_t * url, const wchar_t * frame_url, pt::WTextStream & dom_target);

- void retarged(const wchar_t * frame, const wchar_t * dom_target, const wchar_t * push_url = nullptr, const wchar_t * swap_algorithm = nullptr);
- void retarged(const std::wstring & frame, const std::wstring & dom_target, const std::wstring & push_url, const wchar_t * swap_algorithm = nullptr);
- void retarged(const wchar_t * frame, pt::WTextStream & dom_target, const wchar_t * push_url = nullptr, const wchar_t * swap_algorithm = nullptr);

- void remove_content(pt::WTextStream & dom_target, bool close_dialogs = false);
- void remove_content(const wchar_t * dom_target, bool has_postfix, long dom_target_postfix, bool close_dialogs = false);
- void remove_content(const wchar_t * dom_target, long dom_target_postfix, bool close_dialogs = false);
- void remove_content(const wchar_t * dom_target, bool close_dialogs = false);

- void update_content(const wchar_t * frame, pt::WTextStream & dom_target, bool close_dialogs = false);
- void update_content(const wchar_t * frame, const wchar_t * dom_target, bool has_postfix, long dom_target_postfix, bool close_dialogs = false);
- void update_content(const wchar_t * frame, const wchar_t * dom_target, long dom_target_postfix, bool close_dialogs = false);
- void update_content(const wchar_t * frame, const wchar_t * dom_target, bool close_dialogs = false);

while here:
- refactor PascalCase to snake_case in FunctionBase
- add start_request() and finish_request() methods to FunctionBase
- add has_*_access() methods to FunctionBase
- fix: FunctionBase::clear() method was not called if a request was assigned to a job
- add a WinixEzcHelper model
- allow to serialize a header if the header value is neither a string nor an integer
- refactor PascalCase to snake_case in functions: Emacs, Mkdir, Upload
This commit is contained in:
2024-06-27 10:57:08 +02:00
parent 6aa100f12c
commit c30b7db041
129 changed files with 4064 additions and 3199 deletions

View File

@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2008-2021, Tomasz Sowa
* Copyright (c) 2008-2024, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -52,7 +52,7 @@ Emacs::Emacs()
bool Emacs::HasAccess(const Item & item)
bool Emacs::has_emacs_access(const Item & item)
{
if( cur->session->puser && cur->session->puser->is_super_user )
// super user can use emacs everywhere
@@ -72,9 +72,9 @@ return false;
bool Emacs::HasAccess()
bool Emacs::has_access()
{
return HasAccess(*cur->request->last_item);
return has_emacs_access(*cur->request->last_item);
}
@@ -106,9 +106,9 @@ return true;
*/
int Emacs::NotifyCodeEdit()
int Emacs::notify_code_edit()
{
// !! nie potrzebne
// !! not needed
// if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
// return WINIX_NOTIFY_CODE_THREAD_POST_CHANGED;
@@ -118,9 +118,9 @@ return WINIX_NOTIFY_CODE_EDIT;
int Emacs::NotifyCodeAdd()
int Emacs::notify_code_add()
{
// !! nie potrzebne
// !! not needed
// if( system->mounts.pmount->type == system->mounts.MountTypeThread() )
// return WINIX_NOTIFY_CODE_THREAD_REPLAYED;
@@ -131,7 +131,7 @@ return WINIX_NOTIFY_CODE_ADD;
// IMPROVEME
// make some kind of utils and put this method there
// because this method is used from ckeditor and other editors too
void Emacs::MakePost()
void Emacs::make_post()
{
bool status = false;
bool adding = !cur->request->is_item;
@@ -150,7 +150,7 @@ void Emacs::MakePost()
if( adding )
{
cur->request->item.item_content.privileges = system->NewFilePrivileges();
status = system->AddFile(cur->request->item, NotifyCodeAdd());
status = system->AddFile(cur->request->item, notify_code_edit());
if( status )
{
@@ -159,7 +159,7 @@ void Emacs::MakePost()
}
else
{
status = system->EditFile(cur->request->item, cur->request->item.url != old_url, NotifyCodeEdit());
status = system->EditFile(cur->request->item, cur->request->item.url != old_url, notify_code_edit());
}
cur->request->status = status ? WINIX_ERR_OK : WINIX_ERR_PERMISSION_DENIED;
@@ -185,7 +185,7 @@ void Emacs::MakePost()
}
void Emacs::Clear()
void Emacs::clear()
{
answer.clear();
}