diff options
Diffstat (limited to 'src/Bindings/WebPlugin.cpp')
-rw-r--r-- | src/Bindings/WebPlugin.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/Bindings/WebPlugin.cpp b/src/Bindings/WebPlugin.cpp new file mode 100644 index 000000000..3b71d553c --- /dev/null +++ b/src/Bindings/WebPlugin.cpp @@ -0,0 +1,113 @@ + +#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules + +#include "WebPlugin.h" +#include "../WebAdmin.h" +#include "../Server.h" +#include "../Root.h" + + + + + +cWebPlugin::cWebPlugin() +{ + cWebAdmin * WebAdmin = cRoot::Get()->GetWebAdmin(); + if (WebAdmin != NULL) + { + WebAdmin->AddPlugin(this); + } +} + + + + + +cWebPlugin::~cWebPlugin() +{ + cWebAdmin * WebAdmin = cRoot::Get()->GetWebAdmin(); + if (WebAdmin != NULL) + { + WebAdmin->RemovePlugin(this); + } + + for (TabList::iterator itr = m_Tabs.begin(); itr != m_Tabs.end(); ++itr) + { + delete *itr; + } + m_Tabs.clear(); +} + + + + + +std::list<std::pair<AString, AString> > cWebPlugin::GetTabNames(void) +{ + std::list< std::pair< AString, AString > > NameList; + for( TabList::iterator itr = GetTabs().begin(); itr != GetTabs().end(); ++itr ) + { + std::pair< AString, AString > StringPair; + StringPair.first = (*itr)->Title; + StringPair.second = (*itr)->SafeTitle; + NameList.push_back( StringPair ); + } + return NameList; +} + + + + + +std::pair< AString, AString > cWebPlugin::GetTabNameForRequest(const HTTPRequest * a_Request) +{ + std::pair< AString, AString > Names; + AStringVector Split = StringSplit(a_Request->Path, "/"); + + if( Split.size() > 1 ) + { + sWebPluginTab* Tab = 0; + if( Split.size() > 2 ) // If we got the tab name, show that page + { + for( TabList::iterator itr = GetTabs().begin(); itr != GetTabs().end(); ++itr ) + { + if( (*itr)->SafeTitle.compare( Split[2] ) == 0 ) // This is the one! Rawr + { + Tab = *itr; + break; + } + } + } + else // Otherwise show the first tab + { + if( GetTabs().size() > 0 ) + Tab = *GetTabs().begin(); + } + + if( Tab ) + { + Names.first = Tab->Title; + Names.second = Tab->SafeTitle; + } + } + + return Names; +} + + + + +AString cWebPlugin::SafeString( const AString & a_String ) +{ + AString RetVal; + for( unsigned int i = 0; i < a_String.size(); ++i ) + { + char c = a_String[i]; + if( c == ' ' ) + { + c = '_'; + } + RetVal.push_back( c ); + } + return RetVal; +}
\ No newline at end of file |