From d9ebc757fe438622e5cbd986a941d34ef6739495 Mon Sep 17 00:00:00 2001 From: Nils G <nils.gondermann@ruhr-uni-bochum.de> Date: Mon, 27 Apr 2020 12:09:55 +0200 Subject: [PATCH] Actually enable the player to submit content --- controllers/player.py | 10 +++++++- static/game/debug/renderer.js | 46 ++++++++++++++++++++++++++--------- views/game/index.html | 4 +-- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/controllers/player.py b/controllers/player.py index 92dd1ac..b1d6f0e 100644 --- a/controllers/player.py +++ b/controllers/player.py @@ -74,13 +74,21 @@ def submit(): if not JSON_CONTAINS(parameters, [('submit', str)]): return(FAIL(CODE_MISSING)) + parameters["submit"] = ''.join(c for c in parameters["submit"] if c.isalnum()) + new_input = {"submit": parameters["submit"]} if JSON_CONTAINS(parameters, [('inputs', dict)]): inputs = parameters["inputs"] for key in inputs: - if not isinstance(inputs[key], str): + + keytest = ''.join(c for c in key if c.isalnum()) + + if (not isinstance(inputs[key], str)) or (keytest != key): return(FAIL(CODE_MISSING)) + + inputs[key] = ''.join(c for c in inputs[key] if (c.isalnum() or c == " ")) + new_input["inputs"] = inputs #Insert new input into table diff --git a/static/game/debug/renderer.js b/static/game/debug/renderer.js index bacab23..4a5f1e9 100644 --- a/static/game/debug/renderer.js +++ b/static/game/debug/renderer.js @@ -77,13 +77,20 @@ function renderRole(_definition, _roleIdle) { case "input": e = $("<input class='game_input' type='text'/>"); e.attr("placeholder", value); + if(!prompt) { + e.attr("disabled", "true"); + } break; case "submit": e = $("<input class='game_input' type='submit'/>"); e.val(value); - e.click(function(){ - submit(e); - }); + if(!prompt) { + e.attr("disabled", "true"); + } else { + e.click(function(){ + submit(e); + }); + } break; default: e = $("<span>Invalid Element</span>"); @@ -102,23 +109,38 @@ function sanitizeCSS(_css) { } function submit(_button) { - var submit = {"inputs": []}; + var submit = {}; + var inputs = {}; - var inputs = $("#game_content .game_input").each(function(index, element) { + $("#game_content .game_input").each(function(index, element) { element.setAttribute("disabled", "true"); - var obj = {}; - obj[element.getAttribute("name")] = element.value; - switch(element.getAttribute("type")) { case "text": - submit["inputs"].push(obj); + inputs[element.getAttribute("name")] = element.value.replace(/[^0-9a-zA-Z\s]/g, '');; break; } }); submit["submit"] = _button.attr("name"); - - //JSON.stringify(submit) - alert(URL_SUBMIT); + submit["inputs"] = inputs; + + AJAX_JSON(URL_SUBMIT, submit, function(_code, _data) { + switch(_code) { + case 200: + case 409: + currentPrompt++; + if(prompts[currentPrompt]) { + render(role, roles); + } + break; + case 401: + case 410: + content_reload(); + break; + default: + set_error(_data); + break; + } + }); } diff --git a/views/game/index.html b/views/game/index.html index 74185a0..e0872ed 100644 --- a/views/game/index.html +++ b/views/game/index.html @@ -17,8 +17,8 @@ {{ include 'include/consts.js' }} var role = "{{=player_record.role}}"; var roles = JSON.parse(atob('{{=XML(room_record.roles)}}')); - var prompts = JSON.parse(atob('{{=XML(player_record.prompts)}}'));; - var currentPrompt = 0; + var prompts = JSON.parse(atob('{{=XML(player_record.prompts)}}')); + var currentPrompt = JSON.parse(atob('{{=XML(player_record.inputs)}}')).length; </script> {{block game_js}}{{end game_js}} -- GitLab