From bd1084acac2a7b39a089252474a9f26f1ea94dd2 Mon Sep 17 00:00:00 2001 From: prozacx Date: Wed, 8 Feb 2006 08:43:48 +0000 Subject: [PATCH] Added support to change skin in settings page git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@622 726aef4b-f618-498e-8847-2d620e286838 --- modules/webadmin.cpp | 38 ++++++++++++++++++++ modules/webadmin/skins/default/Settings.tmpl | 16 +++++++-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index 10f9ed76..98d9a175 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -69,6 +69,7 @@ class CWebAdminMod : public CGlobalModule { public: CWebAdminMod(void *pDLL, const CString& sModName) : CGlobalModule(pDLL, sModName) { m_uPort = 8080; + m_sSkinName = GetNV("SkinName"); } virtual ~CWebAdminMod() { @@ -118,8 +119,16 @@ public: m_spSocks.erase(pSock); } + void SetSkinName(const CString& s) { + m_sSkinName = s; + SetNV("SkinName", m_sSkinName); + } + + CString GetSkinName() const { return (m_sSkinName.empty()) ? CString("default") : m_sSkinName; } + private: unsigned int m_uPort; + CString m_sSkinName; set m_spSocks; }; @@ -130,6 +139,12 @@ CString CWebAdminSock::GetSkinDir() { sModPath.RightChomp(); } + CString sSkinDir = sModPath + "/" + m_pModule->GetModName() + "/skins/" + m_pModule->GetSkinName() + "/"; + + if (CDir::Exists(sSkinDir)) { + return sSkinDir; + } + return sModPath + "/" + m_pModule->GetModName() + "/skins/default/"; } @@ -367,6 +382,27 @@ bool CWebAdminSock::SettingsPage(CString& sPageRet) { l["Line"] = vsMotd[b]; } + CString sDir(GetSkinDir() + "/.."); + + if (CDir::Exists(sDir)) { + CDir Dir(sDir); + + m_Template.AddRow("SkinLoop")["Name"] = "default"; + + for (unsigned int c = 0; c < Dir.size(); c++) { + const CFile& SubDir = *Dir[c]; + + if (SubDir.IsDir() && SubDir.GetShortName() != "CVS" && SubDir.GetShortName() != "default") { + CTemplate& l = m_Template.AddRow("SkinLoop"); + l["Name"] = SubDir.GetShortName(); + + if (SubDir.GetShortName() == m_pModule->GetSkinName()) { + l["Checked"] = "true"; + } + } + } + } + set ssGlobalMods; CZNC::Get().GetModules().GetAvailableMods(ssGlobalMods, true); @@ -413,6 +449,8 @@ bool CWebAdminSock::SettingsPage(CString& sPageRet) { CZNC::Get().AddVHost(vsArgs[a].Trim_n()); } + m_pModule->SetSkinName(GetParam("skin")); + set ssArgs; GetParamValues("loadmod", ssArgs); diff --git a/modules/webadmin/skins/default/Settings.tmpl b/modules/webadmin/skins/default/Settings.tmpl index aa6797f0..ebe1da24 100644 --- a/modules/webadmin/skins/default/Settings.tmpl +++ b/modules/webadmin/skins/default/Settings.tmpl @@ -24,16 +24,28 @@
+
+
Skin:
+
+ +
+
+
+
MOTD:
-
VHosts:
-