summaryrefslogtreecommitdiffstats
path: root/src/Bindings/WebPlugin.cpp
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2013-12-08 15:02:45 +0100
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2013-12-08 15:02:45 +0100
commit1d554677b49e7b2b2121b3fc4e3665a8be7bf710 (patch)
treed39d3790b018e0e8f04e81be1a2bc3870b3dae2a /src/Bindings/WebPlugin.cpp
parentFixed tabcompletion packet, fixes #356 (diff)
parentFixed normalizing large angles. (diff)
downloadcuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar.gz
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar.bz2
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar.lz
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar.xz
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.tar.zst
cuberite-1d554677b49e7b2b2121b3fc4e3665a8be7bf710.zip
Diffstat (limited to 'src/Bindings/WebPlugin.cpp')
-rw-r--r--src/Bindings/WebPlugin.cpp113
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