diff --git a/include/znc/WebModules.h b/include/znc/WebModules.h index d630f050..576cfffc 100644 --- a/include/znc/WebModules.h +++ b/include/znc/WebModules.h @@ -21,6 +21,7 @@ #include #include #include +#include class CAuthBase; class CUser; @@ -91,12 +92,27 @@ class CWebSubPage { m_sTitle(sTitle), m_vParams(vParams) {} + CWebSubPage(const CString& sName, const CDelayedTranslation& dTitle, + const VPair& vParams, unsigned int uFlags = 0) + : m_uFlags(uFlags), + m_sName(sName), + m_dTitle(dTitle), + m_bTranslating(true), + m_vParams(vParams) {} + virtual ~CWebSubPage() {} enum { F_ADMIN = 1 }; void SetName(const CString& s) { m_sName = s; } - void SetTitle(const CString& s) { m_sTitle = s; } + void SetTitle(const CString& s) { + m_sTitle = s; + m_bTranslating = false; + } + void SetTitle(const CDelayedTranslation& d) { + m_dTitle = d; + m_bTranslating = true; + } void AddParam(const CString& sName, const CString& sValue) { m_vParams.push_back(make_pair(sName, sValue)); } @@ -104,13 +120,15 @@ class CWebSubPage { bool RequiresAdmin() const { return m_uFlags & F_ADMIN; } const CString& GetName() const { return m_sName; } - const CString& GetTitle() const { return m_sTitle; } + CString GetTitle() const; const VPair& GetParams() const { return m_vParams; } private: unsigned int m_uFlags; CString m_sName; CString m_sTitle; + CDelayedTranslation m_dTitle; + bool m_bTranslating = false; VPair m_vParams; }; diff --git a/src/WebModules.cpp b/src/WebModules.cpp index 6408244c..f59f0883 100644 --- a/src/WebModules.cpp +++ b/src/WebModules.cpp @@ -1001,3 +1001,7 @@ CString CWebSock::GetSkinName() { return CZNC::Get().GetSkinName(); } + +CString CWebSubPage::GetTitle() const { + return m_bTranslating ? m_dTitle.Resolve() : m_sTitle; +}