<?php session_start(); require_once("bower_components/pythonauto/util/lti_util.php"); ?> <!DOCTYPE html> <html> <head> <title>Python Automarker</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link href="css/automarker.css" rel="stylesheet" media="screen"> <!--[if lt IE 9]> <script src="bower_components/html5shiv/dist/html5shiv-printshiv.min.js"></script> <![endif]--> <script type="text/javascript" src="bower_components/jquery/dist/jquery.min.js"></script> <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script type="text/javascript" src="bower_components/Brython3.2.7-20160621-184325.tar/brython.js"></script> <script type="text/javascript" src="bower_components/ace/src-min-noconflict/ace.js"></script> <script type="text/javascript"> exercise_id = <?php echo isset($_REQUEST["exercise_id"]) ? $_REQUEST["exercise_id"] : 0; ?>; jQuery(document).ready(function() { editor = ace.edit("editor"); editor.session.setMode("ace/mode/python"); brython(); }); </script> </head> <body class="container"> <div class="row" id="header-row"> <div class="col-md-12 panel-primary"> <h1 id="exercise" class="panel-heading">Loading...</h1> <p id="instructions" class="panel-body">Loading...</p> </div> </div> <div class="row" id="code-row"> <div class="col-md-8"> <pre id="editor" style="height: 240px;"></pre> </div> <div class="col-md-4"> <h3 class="text-center">Tests</h3> <div id="tests" class="list-group"></div> </div> </div> <div class="row" id="controls-row"> <div class="col-md-12 text-center"> <div class="form-group"> <button id="run" class="btn">Run</button> <button id="test-all" type="button" class="btn">Run Tests</button> <button id="grade" type="button" class="btn disabled">Grade</button> <span id="nograde" class="hidden">Connect through a LMS to submit grade information</span> </div> </div> </div> <div class="row hidden" id="output-row"> <div class="col-md-12"> <h3 class="text-center">Output</h3> <div id="container" style="width: 100%"></div> <textarea id="output" readonly class="form-control" style="height: 240px"></textarea> </div> </div> <div class="row hidden" id="test-row"> <div class="col-md-12 text-center"> <h3>Expected Output</h3> <div class="form-group"> <textarea id="expected" readonly class="form-control"></textarea> </div> <h3>Actual Output</h3> <div class="form-group"> <textarea id="actual" readonly class="form-control"></textarea> </div> <h3>Test Input</h3> <div class="form-group"> <textarea id="input" readonly class="form-control"></textarea> </div> </div> </div> <script type="text/python" src="automarker_client.py"></script> <script type="text/javascript"> submission_url = ''; redirect_url = ''; <?php if (!is_lti_request()) { echo " jQuery('#grade').addClass('hidden');\n"; echo " jQuery('#nograde').removeClass('hidden');\n"; echo " jQuery('#nograde').show();\n"; } else { $oauth_consumer_key = ""; $oauth_consumer_secret = ""; if (isset($_POST['oauth_consumer_key'])) { $oauth_consumer_key = $_POST['oauth_consumer_key']; # TODO: Look this up, rather than just having the same value for everybody $oauth_consumer_secret = "12345"; $_SESSION['oauth_consumer_key'] = $oauth_consumer_key; $_SESSION['oauth_consumer_secret'] = $oauth_consumer_secret; } $context = new BLTI($oauth_consumer_secret, true, false); if (!$context->valid) { echo " jQuery('#grade').addClass('hidden');\n"; echo " jQuery('#nograde').removeClass('hidden');\n"; echo " jQuery('#nograde').show();\n"; } else { echo " submission_url = '" . $context->addSession("grade.php") . "';\n"; if (isset($_POST['launch_presentation_return_url'])) { echo " redirect_url = '" . $_POST['launch_presentation_return_url'] . "';\n"; } } } ?> function submitGrade() { if (submission_url != "") { data = { exercise: exercise_id, code: editor.getValue() }; jq.post(submission_url, data , function(data, textStatus){ if (data["status"] == "success") { alert("Grade updated!"); if (redirect_url != '') { window.location = redirect_url; } } else { alert("Error updating grade. Please try again.\nError: " + data["detail"]); } }, "json"); } else { alert("Connect through a LMS to submit grade information"); } } </script> </body> </html>