diff options
author | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-08-22 02:35:06 +0200 |
---|---|---|
committer | faketruth <faketruth@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-08-22 02:35:06 +0200 |
commit | b5c4994475fccfddc111b44cc4b60f3c069be4e7 (patch) | |
tree | 4ebb01d19e8a20098624ec62ef51ed179858b88b | |
parent | Now it's possible to only show the plugin's WebAdmin content without the template around it by going to /~webadmin/ instead of /webadmin/ (diff) | |
download | cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar.gz cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar.bz2 cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar.lz cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar.xz cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.tar.zst cuberite-b5c4994475fccfddc111b44cc4b60f3c069be4e7.zip |
Diffstat (limited to '')
-rw-r--r-- | MCServer/Plugins/Core/main.lua | 2 | ||||
-rw-r--r-- | MCServer/Plugins/Core/web_chat.lua | 110 |
2 files changed, 112 insertions, 0 deletions
diff --git a/MCServer/Plugins/Core/main.lua b/MCServer/Plugins/Core/main.lua index 803600431..9aed80ab1 100644 --- a/MCServer/Plugins/Core/main.lua +++ b/MCServer/Plugins/Core/main.lua @@ -22,6 +22,7 @@ function Initialize( Plugin ) PluginManager:AddHook(Plugin, cPluginManager.HOOK_BLOCK_DIG)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_KILLED)
PluginManager:AddHook(Plugin, cPluginManager.HOOK_CRAFTING_NO_RECIPE)
+ PluginManager:AddHook(Plugin, cPluginManager.E_PLUGIN_CHAT) -- used in web_chat.lua
Plugin:AddCommand("/help", " - [Page] Show this message", "core.help")
Plugin:AddCommand("/pluginlist", " - Show list of plugins", "core.pluginlist")
@@ -137,6 +138,7 @@ function Initialize( Plugin ) local WebPlugin = Plugin:CreateWebPlugin()
WebPlugin:SetName( Plugin:GetName() )
WebPlugin:AddTab( "Server Settings", HandleRequest_ServerSettings )
+ WebPlugin:AddTab( "Chat", HandleRequest_Chat )
WebPlugin:AddTab( "Playerlist", HandleRequest_PlayerList )
WebPlugin:AddTab( "Whitelist", HandleRequest_WhiteList )
WebPlugin:AddTab( "Permissions", HandleRequest_Permissions )
diff --git a/MCServer/Plugins/Core/web_chat.lua b/MCServer/Plugins/Core/web_chat.lua new file mode 100644 index 000000000..66fe994eb --- /dev/null +++ b/MCServer/Plugins/Core/web_chat.lua @@ -0,0 +1,110 @@ +local JavaScript = [[
+<script type="text/javascript">
+ function createXHR()
+ {
+ var request = false;
+ try {
+ request = new ActiveXObject('Msxml2.XMLHTTP');
+ }
+ catch (err2) {
+ try {
+ request = new ActiveXObject('Microsoft.XMLHTTP');
+ }
+ catch (err3) {
+ try {
+ request = new XMLHttpRequest();
+ }
+ catch (err1)
+ {
+ request = false;
+ }
+ }
+ }
+ return request;
+ }
+
+ function loadWholePage( url )
+ {
+ var storage = document.getElementById('ChatDiv');
+ var xhr = createXHR();
+ xhr.onreadystatechange=function()
+ {
+ if(xhr.readyState == 4)
+ {
+ //alert( xhr.status + " " + xhr.statusText );
+ //if(xhr.status == 200)
+ {
+ storage.innerHTML = xhr.responseText;//getBody(xhr.responseText);
+ storage.scrollTop = storage.scrollHeight;
+ }
+ }
+ };
+ xhr.open("GET", url , true);
+ xhr.send(null);
+
+ return false;
+ }
+
+ function SendChatMessage()
+ {
+ var MessageContainer = document.getElementById('ChatMessage');
+ if( MessageContainer.value == "" ) return;
+
+ var xhr = createXHR();
+ xhr.onreadystatechange=function()
+ {
+ if(xhr.readyState == 4)
+ {
+ //alert( xhr.status + " " + xhr.statusText );
+ RefreshChat();
+ }
+ };
+ xhr.open("GET", "/~webadmin/Core/Chat/?ChatMessage=" + MessageContainer.value, true);
+ xhr.send(null);
+ MessageContainer.value = "";
+ }
+
+ function RefreshChat()
+ {
+ loadWholePage('/~webadmin/Core/Chat/?JustChat=true');
+ }
+
+ setInterval(RefreshChat, 1000);
+ window.onload = RefreshChat;
+
+ </script>
+]]
+
+local ChatLogMessages = {}
+
+function AddMessage( PlayerName, Message )
+ table.insert( ChatLogMessages, { name = PlayerName, message = Message } )
+end
+
+function OnChat( Player, Message )
+ AddMessage( Player:GetName(), Message )
+end
+
+function HandleRequest_Chat( Request )
+ if( Request.Params["JustChat"] ~= nil ) then
+ local Content = ""
+ for key, value in pairs(ChatLogMessages) do
+ Content = Content .. "[" .. value.name .. "]: " .. value.message .. "<br>"
+ end
+ return Content
+ end
+
+ if( Request.Params["ChatMessage"] ~= nil ) then
+ local Message = "[WebAdmin]: " .. Request.Params["ChatMessage"]
+ cRoot:Get():GetServer():SendMessage( Message )
+ AddMessage("WebAdmin", Request.Params["ChatMessage"] )
+ return ""
+ end
+
+ local Content = JavaScript
+ Content = Content .. [[
+ <div style="font-family: Courier; border: 1px solid #DDD; padding: 10px; width: 97%; height: 200px; overflow: scroll;" id="ChatDiv">Chat messageessss</div>
+ <input type="text" id="ChatMessage" onKeyPress="if (event.keyCode == 13) { SendChatMessage(); }"><input type="submit" value="Submit" onClick="SendChatMessage();">
+ ]]
+ return Content
+end
\ No newline at end of file |