<?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>