summaryrefslogtreecommitdiffstats
path: root/source/WebPlugin.cpp
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-09-24 00:09:57 +0200
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-09-24 00:09:57 +0200
commitecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26 (patch)
tree898e37fe747f0fdcefeb88f833557fd45db3347c /source/WebPlugin.cpp
parentSource files cleanup: ChunkDataSerializer is Protocol-related (diff)
downloadcuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.gz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.bz2
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.lz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.xz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.zst
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.zip
Diffstat (limited to 'source/WebPlugin.cpp')
-rw-r--r--source/WebPlugin.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/source/WebPlugin.cpp b/source/WebPlugin.cpp
new file mode 100644
index 000000000..93619ef14
--- /dev/null
+++ b/source/WebPlugin.cpp
@@ -0,0 +1,109 @@
+
+#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()
+{
+ LOG("cWebPlugin::cWebPlugin()");
+ cWebAdmin* WebAdmin = cRoot::Get()->GetWebAdmin();
+ if( WebAdmin ) WebAdmin->AddPlugin( this );
+}
+
+
+
+
+
+cWebPlugin::~cWebPlugin()
+{
+ LOG("~cWebPlugin::cWebPlugin()");
+ cWebAdmin* WebAdmin = cRoot::Get()->GetWebAdmin();
+ if( WebAdmin ) 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()
+{
+ 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( 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