Esempio n. 1
0
function show_edit_assignment($id)
{
    global $tool_content, $m, $langEdit, $langBack, $course_code, $langCancel, $urlAppend, $works_url, $course_id, $head_content, $language, $langStudents, $langMove, $langWorkFile, $themeimg, $langDelWarnUserAssignment, $langLessOptions, $langMoreOptions, $langAutoJudgeInputNotSupported, $langAutoJudgeSum, $langAutoJudgeNewScenario, $langAutoJudgeEnable, $langAutoJudgeInput, $langAutoJudgeExpectedOutput, $langAutoJudgeOperator, $langAutoJudgeWeight, $langAutoJudgeProgrammingLanguage, $langAutoJudgeAssertions;
    load_js('bootstrap-datetimepicker');
    $head_content .= "<script type='text/javascript'>\n        \$(function() {\n            \$('#enddatepicker').datetimepicker({\n                format: 'dd-mm-yyyy hh:ii',\n                pickerPosition: 'bottom-left', language: '" . $language . "',\n                autoclose: true\n            });\n            \$('#hidden-opt-btn').on('click', function(e) {\n                e.preventDefault();\n                \$('#hidden-opt').collapse('toggle');\n            });\n            \$('#hidden-opt').on('shown.bs.collapse', function () {\n                \$('#hidden-opt-btn i').removeClass('fa-caret-down').addClass('fa-caret-up');\n                var caret = '<i class=\"fa fa-caret-up\"></i>';\n                \$('#hidden-opt-btn').html('{$langLessOptions} '+caret);\n            })\n            \$('#hidden-opt').on('hidden.bs.collapse', function () {\n                var caret = '<i class=\"fa fa-caret-down\"></i>';\n                \$('#hidden-opt-btn').html('{$langMoreOptions} '+caret);\n            })\n        });\n    </script>";
    $row = Database::get()->querySingle("SELECT * FROM assignment WHERE id = ?d", $id);
    if ($row->assign_to_specific) {
        //preparing options in select boxes for assigning to speficic users/groups
        $assignee_options = '';
        $unassigned_options = '';
        if ($row->group_submissions) {
            $assignees = Database::get()->queryArray("SELECT `group`.id AS id, `group`.name\n                                   FROM assignment_to_specific, `group`\n                                   WHERE `group`.id = assignment_to_specific.group_id AND assignment_to_specific.assignment_id = ?d", $id);
            $all_groups = Database::get()->queryArray("SELECT name,id FROM `group` WHERE course_id = ?d", $course_id);
            foreach ($assignees as $assignee_row) {
                $assignee_options .= "<option value='" . $assignee_row->id . "'>" . $assignee_row->name . "</option>";
            }
            $unassigned = array_udiff($all_groups, $assignees, function ($obj_a, $obj_b) {
                return $obj_a->id - $obj_b->id;
            });
            foreach ($unassigned as $unassigned_row) {
                $unassigned_options .= "<option value='{$unassigned_row->id}'>{$unassigned_row->name}</option>";
            }
        } else {
            $assignees = Database::get()->queryArray("SELECT user.id AS id, surname, givenname\n                                   FROM assignment_to_specific, user\n                                   WHERE user.id = assignment_to_specific.user_id AND assignment_to_specific.assignment_id = ?d", $id);
            $all_users = Database::get()->queryArray("SELECT user.id AS id, user.givenname, user.surname\n                                    FROM user, course_user\n                                    WHERE user.id = course_user.user_id\n                                    AND course_user.course_id = ?d AND course_user.status = 5\n                                    AND user.id", $course_id);
            foreach ($assignees as $assignee_row) {
                $assignee_options .= "<option value='{$assignee_row->id}'>{$assignee_row->surname} {$assignee_row->givenname}</option>";
            }
            $unassigned = array_udiff($all_users, $assignees, function ($obj_a, $obj_b) {
                return $obj_a->id - $obj_b->id;
            });
            foreach ($unassigned as $unassigned_row) {
                $unassigned_options .= "<option value='{$unassigned_row->id}'>{$unassigned_row->surname} {$unassigned_row->givenname}</option>";
            }
        }
    }
    if ((int) $row->deadline) {
        $deadline = date('d-m-Y H:i', strtotime($row->deadline));
    } else {
        $deadline = '';
    }
    $comments = trim($row->comments);
    $tool_content .= action_bar(array(array('title' => $langBack, 'level' => 'primary-label', 'url' => "{$_SERVER['PHP_SELF']}?course={$course_code}", 'icon' => 'fa-reply')));
    //Get possible validation errors
    $title_error = Session::getError('title');
    $max_grade_error = Session::getError('max_grade');
    $tool_content .= "\n    <div class='form-wrapper'>\n    <form class='form-horizontal' role='form' enctype='multipart/form-data' action='{$_SERVER['SCRIPT_NAME']}?course={$course_code}' method='post' onsubmit='return check_weights();'>\n    <input type='hidden' name='id' value='{$id}' />\n    <input type='hidden' name='choice' value='do_edit' />\n    <fieldset>\n            <div class='form-group " . ($title_error ? "has-error" : "") . "'>\n                <label for='title' class='col-sm-2 control-label'>{$m['title']}:</label>\n                <div class='col-sm-10'>\n                  <input name='title' type='text' class='form-control' id='title' value='" . q($row->title) . "' placeholder='{$m['title']}'>\n                  <span class='help-block'>{$title_error}</span>\n                </div>\n            </div>\n            <div class='form-group'>\n                <label for='desc' class='col-sm-2 control-label'>{$m['description']}:</label>\n                <div class='col-sm-10'>\n                " . rich_text_editor('desc', 4, 20, $row->description) . "\n                </div>\n            </div>";
    if (!empty($comments)) {
        $tool_content .= "<div class='form-group'>\n                <label for='desc' class='col-sm-2 control-label'>{$m['comments']}:</label>\n                <div class='col-sm-10'>\n                " . rich_text_editor('comments', 5, 65, $comments) . "\n                </div>\n            </div>";
    }
    $tool_content .= "\n            <div class='col-sm-10 col-sm-offset-2 margin-top-fat margin-bottom-fat'>\n                <a id='hidden-opt-btn' class='btn btn-success btn-xs' href='#' style='text-decoration:none;'>{$langMoreOptions} <i class='fa fa-caret-down'></i></a>\n            </div>\n            <div class='collapse " . (Session::hasErrors() ? "in" : "") . "' id='hidden-opt'>\n                <div class='form-group'>\n                    <label for='userfile' class='col-sm-2 control-label'>{$langWorkFile}:</label>\n                    <div class='col-sm-10'>\n                      " . ($row->file_name ? "<a href='{$_SERVER['SCRIPT_NAME']}?course={$course_code}&amp;get={$row->id}&amp;file_type=1'>" . q($row->file_name) . "</a>" . "<a href='{$_SERVER['SCRIPT_NAME']}?course={$course_code}&amp;id={$id}&amp;choice=do_delete_file' onClick='return confirmation(\"{$m['WorkDeleteAssignmentFileConfirm']}\");'>\n                                     <img src='{$themeimg}/delete.png' title='{$m['WorkDeleteAssignmentFile']}' /></a>" : "<input type='file' id='userfile' name='userfile' />") . "\n                    </div>\n                </div>\n                <div class='form-group " . ($max_grade_error ? "has-error" : "") . "'>\n                    <label for='max_grade' class='col-sm-2 control-label'>{$m['max_grade']}:</label>\n                    <div class='col-sm-10'>\n                        <input name='max_grade' type='text' class='form-control' id='max_grade' value='{$row->max_grade}' placeholder='{$m['max_grade']}'>\n                        <span class='help-block'>{$max_grade_error}</span>\n                    </div>\n                </div>\n                <div class='form-group'>\n                    <label class='col-sm-2 control-label'>{$m['deadline']}:</label>\n                    <div class='col-sm-10'>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' name='is_deadline' value='0' " . (!empty($deadline) ? "" : "checked") . " onclick='\$(\"#enddatepicker, #late_sub_row\").addClass(\"hide\");\$(\"#deadline\").val(\"\");'>\n                            {$m['no_deadline']}\n                          </label>\n                        </div>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' name='is_deadline' value='1' " . (!empty($deadline) ? "checked" : "") . " onclick='\$(\"#enddatepicker, #late_sub_row\").removeClass(\"hide\")'>\n                            {$m['with_deadline']}\n                          </label>\n                        </div>\n                    </div>\n                </div>\n                <div class='input-append date form-group " . (!empty($deadline) ? "" : "hide") . "' id='enddatepicker' data-date='{$deadline}' data-date-format='dd-mm-yyyy'>\n                    <div class='col-xs-8 col-xs-offset-2'>\n                        <input class='form-control' name='WorkEnd' id='deadline' type='text' value='{$deadline}'>\n                    </div>\n                    <div class='col-xs-2'>\n                        <span class='add-on'><i class='fa fa-times'></i></span>\n                        <span class='add-on'><i class='fa fa-calendar'></i></span>\n                    </div>\n                    <div class='col-xs-10 col-xs-offset-2'>{$m['deadline_notif']}</div>\n                </div>\n                <div class='form-group " . (!empty($deadline) ? "" : "hide") . "' id='late_sub_row'>\n                    <div class='col-xs-10 col-xs-offset-2'>\n                        <div class='checkbox'>\n                          <label>\n                            <input type='checkbox' name='late_submission' value='1' " . ($row->late_submission ? 'checked' : '') . ">\n                            {$m['late_submission_enable']}\n                          </label>\n                        </div>\n                    </div>\n                </div>\n                <div class='form-group'>\n                    <label class='col-sm-2 control-label'>{$m['group_or_user']}:</label>\n                    <div class='col-sm-10'>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' id='user_button' name='group_submissions' value='0' " . ($row->group_submissions == 1 ? '' : 'checked') . ">\n                            {$m['user_work']}\n                          </label>\n                        </div>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' id='group_button' name='group_submissions' value='1' " . ($row->group_submissions == 1 ? 'checked' : '') . ">\n                            {$m['group_work']}\n                          </label>\n                        </div>\n                    </div>\n                </div>\n                <div class='form-group'>\n                    <label class='col-sm-2 control-label'>{$m['WorkAssignTo']}:</label>\n                    <div class='col-sm-10'>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' id='assign_button_all' name='assign_to_specific' value='0' " . ($row->assign_to_specific == 1 ? '' : 'checked') . ">\n                            <span id='assign_button_all_text'>{$m['WorkToAllUsers']}</span>\n                          </label>\n                        </div>\n                        <div class='radio'>\n                          <label>\n                            <input type='radio' id='assign_button_some' name='assign_to_specific' value='1' " . ($row->assign_to_specific == 1 ? 'checked' : '') . ">\n                            <span id='assign_button_some_text'>{$m['WorkToUser']}</span>\n                          </label>\n                        </div>\n                    </div>\n                </div>\n                <table id='assignees_tbl' class='table " . ($row->assign_to_specific == 1 ? '' : 'hide') . "'>\n                <tr class='title1'>\n                  <td id='assignees'>{$langStudents}</td>\n                  <td class='text-center'>{$langMove}</td>\n                  <td>{$m['WorkAssignTo']}</td>\n                </tr>\n                <tr>\n                  <td>\n                    <select id='assign_box' size='15' multiple>\n                    " . (isset($unassigned_options) ? $unassigned_options : '') . "\n                    </select>\n                  </td>\n                  <td class='text-center'>\n                    <input type='button' onClick=\"move('assign_box','assignee_box')\" value='   &gt;&gt;   ' /><br /><input type='button' onClick=\"move('assignee_box','assign_box')\" value='   &lt;&lt;   ' />\n                  </td>\n                  <td width='40%'>\n                    <select id='assignee_box' name='ingroup[]' size='15' multiple>\n                    " . (isset($assignee_options) ? $assignee_options : '') . "\n                    </select>\n                  </td>\n                </tr>\n                </table>";
    $auto_judge = $row->auto_judge;
    $lang = $row->lang;
    $tool_content .= "\n                <div class='form-group'>\n                    <label class='col-sm-2 control-label'>{$langAutoJudgeEnable}:</label>\n                    <div class='col-sm-10'>\n                        <div class='radio'><input type='checkbox' id='auto_judge' name='auto_judge' value='1' " . ($auto_judge == true ? "checked='1'" : '') . " /></div>\n                        <table>\n                            <thead>\n                                <tr>\n                                    <th>{$langAutoJudgeInput}</th>\n                                    <th>{$langAutoJudgeOperator}</th>\n                                    <th>{$langAutoJudgeExpectedOutput}</th>\n                                    <th>{$langAutoJudgeWeight}</th>\n                                    <th>" . $m['delete'] . "</th>\n                                </tr>\n                            </thead>\n                            <tbody>";
    $auto_judge_scenarios = $auto_judge == true ? unserialize($row->auto_judge_scenarios) : null;
    $connector = q(get_config('autojudge_connector'));
    $connector = new $connector();
    $rows = 0;
    $display = 'visible';
    if ($auto_judge_scenarios != null) {
        $scenariosCount = count($auto_judge_scenarios);
        foreach ($auto_judge_scenarios as $aajudge) {
            $tool_content .= "<tr>\n                                        <td><input type='text' value='" . htmlspecialchars($aajudge['input'], ENT_QUOTES) . "' name='auto_judge_scenarios[{$rows}][input]' " . ($connector->supportsInput() ? '' : 'readonly="readonly" placeholder="' . $langAutoJudgeInputNotSupported . '"') . " /></td>";
            $tool_content .= "<td>\n                                        <select name='auto_judge_scenarios[{$rows}][assertion]' class='auto_judge_assertion'>\n                                            <option value='eq'";
            if ($aajudge['assertion'] === 'eq') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['eq'] . "</option>\n                                            <option value='same'";
            if ($aajudge['assertion'] === 'same') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['same'] . "</option>\n                                            <option value='notEq'";
            if ($aajudge['assertion'] === 'notEq') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['notEq'] . "</option>\n                                            <option value='notSame'";
            if ($aajudge['assertion'] === 'notSame') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['notSame'] . "</option>\n                                            <option value='integer'";
            if ($aajudge['assertion'] === 'integer') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['integer'] . "</option>\n                                            <option value='float'";
            if ($aajudge['assertion'] === 'float') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['float'] . "</option>\n                                            <option value='digit'";
            if ($aajudge['assertion'] === 'digit') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['digit'] . "</option>\n                                            <option value='boolean'";
            if ($aajudge['assertion'] === 'boolean') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['boolean'] . "</option>\n                                            <option value='notEmpty'";
            if ($aajudge['assertion'] === 'notEmpty') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['notEmpty'] . "</option>\n                                            <option value='notNull'";
            if ($aajudge['assertion'] === 'notNull') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['notNull'] . "</option>\n                                            <option value='string'";
            if ($aajudge['assertion'] === 'string') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['string'] . "</option>\n                                            <option value='startsWith'";
            if ($aajudge['assertion'] === 'startsWith') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['startsWith'] . "</option>\n                                            <option value='endsWith'";
            if ($aajudge['assertion'] === 'endsWith') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['endsWith'] . "</option>\n                                            <option value='contains'";
            if ($aajudge['assertion'] === 'contains') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['contains'] . "</option>\n                                            <option value='numeric'";
            if ($aajudge['assertion'] === 'numeric') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['numeric'] . "</option>\n                                            <option value='isArray'";
            if ($aajudge['assertion'] === 'isArray') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['isArray'] . "</option>\n                                            <option value='true'";
            if ($aajudge['assertion'] === 'true') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['true'] . "</option>\n                                            <option value='false'";
            if ($aajudge['assertion'] === 'false') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['false'] . "</option>\n                                            <option value='isJsonString'";
            if ($aajudge['assertion'] === 'isJsonString') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['isJsonString'] . "</option>\n                                            <option value='isObject'";
            if ($aajudge['assertion'] === 'isObject') {
                $tool_content .= " selected='selected'";
            }
            $tool_content .= ">" . $langAutoJudgeAssertions['isObject'] . "</option>\n                                        </select>\n                                    </td>";
            if (isset($aajudge['output'])) {
                $tool_content .= "<td><input type='text' value='" . htmlspecialchars($aajudge['output'], ENT_QUOTES) . "' name='auto_judge_scenarios[{$rows}][output]' class='auto_judge_output' /></td>";
            } else {
                $tool_content .= "<td><input type='text' value='' name='auto_judge_scenarios[{$rows}][output]' disabled='disabled' class='auto_judge_output' /></td>";
            }
            $tool_content .= "<td><input type='text' value='{$aajudge['weight']}' name='auto_judge_scenarios[{$rows}][weight]' class='auto_judge_weight'/></td>\n                                        <td><a href='#' class='autojudge_remove_scenario' style='display: " . ($rows <= 0 ? 'none' : 'visible') . ";'>X</a></td>\n                                    </tr>";
            $rows++;
        }
    } else {
        $tool_content .= "<tr>\n                                            <td><input type='text' name='auto_judge_scenarios[{$rows}][input]' /></td>\n                                            <td>\n                                                <select name='auto_judge_scenarios[{$rows}][assertion]' class='auto_judge_assertion'>\n                                                    <option value='eq' selected='selected'>" . $langAutoJudgeAssertions['eq'] . "</option>\n                                                    <option value='same'>" . $langAutoJudgeAssertions['same'] . "</option>\n                                                    <option value='notEq'>" . $langAutoJudgeAssertions['notEq'] . "</option>\n                                                    <option value='notSame'>" . $langAutoJudgeAssertions['notSame'] . "</option>\n                                                    <option value='integer'>" . $langAutoJudgeAssertions['integer'] . "</option>\n                                                    <option value='float'>" . $langAutoJudgeAssertions['float'] . "</option>\n                                                    <option value='digit'>" . $langAutoJudgeAssertions['digit'] . "</option>\n                                                    <option value='boolean'>" . $langAutoJudgeAssertions['boolean'] . "</option>\n                                                    <option value='notEmpty'>" . $langAutoJudgeAssertions['notEmpty'] . "</option>\n                                                    <option value='notNull'>" . $langAutoJudgeAssertions['notNull'] . "</option>\n                                                    <option value='string'>" . $langAutoJudgeAssertions['string'] . "</option>\n                                                    <option value='startsWith'>" . $langAutoJudgeAssertions['startsWith'] . "</option>\n                                                    <option value='endsWith'>" . $langAutoJudgeAssertions['endsWith'] . "</option>\n                                                    <option value='contains'>" . $langAutoJudgeAssertions['contains'] . "</option>\n                                                    <option value='numeric'>" . $langAutoJudgeAssertions['numeric'] . "</option>\n                                                    <option value='isArray'>" . $langAutoJudgeAssertions['isArray'] . "</option>\n                                                    <option value='true'>" . $langAutoJudgeAssertions['true'] . "</option>\n                                                    <option value='false'>" . $langAutoJudgeAssertions['false'] . "</option>\n                                                    <option value='isJsonString'>" . $langAutoJudgeAssertions['isJsonString'] . "</option>\n                                                    <option value='isObject'>" . $langAutoJudgeAssertions['isObject'] . "</option>\n                                                </select>\n                                            </td>\n                                            <td><input type='text' name='auto_judge_scenarios[{$rows}][output]' class='auto_judge_output' /></td>\n                                            <td><input type='text' name='auto_judge_scenarios[{$rows}][weight]' class='auto_judge_weight'/></td>\n                                            <td><a href='#' class='autojudge_remove_scenario' style='display: none;'>X</a></td>\n                                        </tr>\n                                ";
    }
    $tool_content .= "<tr>\n                                <td> </td>\n                                <td> </td>\n                                <td> </td>\n                                <td style='text-align:center;'> {$langAutoJudgeSum}: <span id='weights-sum'>0</span></td>\n                                <td> <input type='submit' value='{$langAutoJudgeNewScenario}' id='autojudge_new_scenario' /></td>\n                            </tr>\n                            </tbody>\n                        </table>\n                    </div>\n                </div>\n                <div class='form-group'>\n                  <label class='col-sm-2 control-label'>{$langAutoJudgeProgrammingLanguage}:</label>\n                  <div class='col-sm-10'>\n                    <select id='lang' name='lang'>";
    foreach ($connector->getSupportedLanguages() as $llang => $ext) {
        $tool_content .= "<option value='{$llang}' " . ($llang === $lang ? "selected='selected'" : "") . ">{$llang}</option>\n";
    }
    $tool_content .= "</select>\n                  </div>\n                </div>\n            </div>\n            <div class='col-sm-offset-2 col-sm-10'>\n                <input type='submit' class='btn btn-primary' name='do_edit' value='{$langEdit}' onclick=\"selectAll('assignee_box',true)\" />\n                <a href='{$_SERVER['SCRIPT_NAME']}?course={$course_code}' class='btn btn-default'>{$langCancel}</a>\n            </div>\n    </fieldset>\n    </form></div>";
}
Esempio n. 2
0
function show_edit_assignment($id) {

    global $tool_content, $m, $langBack, $course_code, $langCancel,
        $urlAppend, $langSave, $works_url, $course_id, $head_content, $language, $langAssignmentStartHelpBlock,
        $langAssignmentEndHelpBlock, $langStudents, $langMove, $langWorkFile, $themeimg, $langStartDate,
        $langLessOptions, $langMoreOptions, $langWorkOnlineText, $langWorkSubType,
        $langGradeScalesSelect, $langGradeType, $langGradeNumbers, $langGradeScales,
        $langLessOptions, $langMoreOptions, $langAutoJudgeInputNotSupported,
        $langAutoJudgeSum, $langAutoJudgeNewScenario, $langAutoJudgeEnable,
        $langAutoJudgeInput, $langAutoJudgeExpectedOutput, $langAutoJudgeOperator,
        $langAutoJudgeWeight, $langAutoJudgeProgrammingLanguage, $langAutoJudgeAssertions;

    load_js('bootstrap-datetimepicker');
    load_js('select2');

    $head_content .= "<script type='text/javascript'>
        $(function() {
            $('#scales').select2();
            $('input[name=grading_type]').on('change', function(e){
                var choice = $(this).val();
                if (choice == 0) {
                    $('#max_grade')
                        .prop('disabled', false)
                        .closest('div.form-group')
                        .removeClass('hidden');
                    $('#scales')
                        .prop('disabled', true)
                        .closest('div.form-group')
                        .addClass('hidden');
                } else {
                    $('#max_grade')
                        .prop('disabled', true)
                        .closest('div.form-group')
                        .addClass('hidden');
                    $('#scales')
                        .prop('disabled', false)
                        .closest('div.form-group')
                        .removeClass('hidden');
                }
            });
            $('#WorkEnd, #WorkStart').datetimepicker({
                format: 'dd-mm-yyyy hh:ii',
                pickerPosition: 'bottom-left',
                language: '".$language."',
                autoclose: true
            });
            $('#enableWorkEnd, #enableWorkStart').change(function() {
                var dateType = $(this).prop('id').replace('enable', '');
                if($(this).prop('checked')) {
                    $('input#'+dateType).prop('disabled', false);
                    if (dateType == 'WorkEnd') $('#late_submission').prop('disabled', false);
                    $('#late_sub_row').removeClass('hide');
                } else {
                    $('input#'+dateType).prop('disabled', true);
                    if (dateType == 'WorkEnd') $('#late_submission').prop('disabled', true);
                    $('#late_sub_row').addClass('hide');
                }
            });
            $('#hidden-opt-btn').on('click', function(e) {
                e.preventDefault();
                $('#hidden-opt').collapse('toggle');
            });
            $('#hidden-opt').on('shown.bs.collapse', function () {
                $('#hidden-opt-btn i').removeClass('fa-caret-down').addClass('fa-caret-up');
                var caret = '<i class=\"fa fa-caret-up\"></i>';
                $('#hidden-opt-btn').html('$langLessOptions '+caret);
            })
            $('#hidden-opt').on('hidden.bs.collapse', function () {
                var caret = '<i class=\"fa fa-caret-down\"></i>';
                $('#hidden-opt-btn').html('$langMoreOptions '+caret);
            })
        });
    </script>";

    $row = Database::get()->querySingle("SELECT * FROM assignment WHERE id = ?d", $id);

    $scales = Database::get()->queryArray('SELECT * FROM grading_scale WHERE course_id = ?d', $course_id);
    $scale_options = "<option value>-- $langGradeScalesSelect --</option>";
    foreach ($scales as $scale) {
        $scale_options .= "<option value='$scale->id'".($row->grading_scale_id == $scale->id ? " selected" : "").">$scale->title</option>";
    }

    if ($row->assign_to_specific) {
        //preparing options in select boxes for assigning to speficic users/groups
        $assignee_options='';
        $unassigned_options='';
        if ($row->group_submissions) {
            $assignees = Database::get()->queryArray("SELECT `group`.id AS id, `group`.name
                                   FROM assignment_to_specific, `group`
                                   WHERE `group`.id = assignment_to_specific.group_id AND assignment_to_specific.assignment_id = ?d", $id);
            $all_groups = Database::get()->queryArray("SELECT name,id FROM `group` WHERE course_id = ?d", $course_id);
            foreach ($assignees as $assignee_row) {
                $assignee_options .= "<option value='".$assignee_row->id."'>".$assignee_row->name."</option>";
            }
            $unassigned = array_udiff($all_groups, $assignees,
              function ($obj_a, $obj_b) {
                return $obj_a->id - $obj_b->id;
              }
            );
            foreach ($unassigned as $unassigned_row) {
                $unassigned_options .= "<option value='$unassigned_row->id'>$unassigned_row->name</option>";
            }
        } else {
            $assignees = Database::get()->queryArray("SELECT user.id AS id, surname, givenname
                                   FROM assignment_to_specific, user
                                   WHERE user.id = assignment_to_specific.user_id AND assignment_to_specific.assignment_id = ?d", $id);
            $all_users = Database::get()->queryArray("SELECT user.id AS id, user.givenname, user.surname
                                    FROM user, course_user
                                    WHERE user.id = course_user.user_id
                                    AND course_user.course_id = ?d AND course_user.status = 5
                                    AND user.id", $course_id);
            foreach ($assignees as $assignee_row) {
                $assignee_options .= "<option value='$assignee_row->id'>$assignee_row->surname $assignee_row->givenname</option>";
            }
            $unassigned = array_udiff($all_users, $assignees,
              function ($obj_a, $obj_b) {
                return $obj_a->id - $obj_b->id;
              }
            );
            foreach ($unassigned as $unassigned_row) {
                $unassigned_options .= "<option value='$unassigned_row->id'>$unassigned_row->surname $unassigned_row->givenname</option>";
            }
        }
    }
    $WorkStart = $row->submission_date ? DateTime::createFromFormat('Y-m-d H:i:s', $row->submission_date)->format('d-m-Y H:i') : NULL;
    $WorkEnd = $row->deadline ? DateTime::createFromFormat('Y-m-d H:i:s', $row->deadline)->format('d-m-Y H:i') : NULL;
    $max_grade = Session::has('max_grade') ? Session::get('max_grade') : ($row->max_grade ? $row->max_grade : 10);
    $grading_type = Session::has('grading_type') ? Session::get('grading_type') : ($row->grading_scale_id ? 1 : 0);
    $enableWorkStart = Session::has('enableWorkStart') ? Session::get('enableWorkStart') : null;
    $enableWorkEnd = Session::has('enableWorkEnd') ? Session::get('enableWorkEnd') : ($WorkEnd ? 1 : 0);
    $comments = trim($row->comments);
    $tool_content .= action_bar(array(
        array('title' => $langBack,
              'level' => 'primary-label',
              'url' => "$_SERVER[PHP_SELF]?course=$course_code",
              'icon' => 'fa-reply')));

    //Get possible validation errors
    $title_error = Session::getError('title');
    $max_grade_error = Session::getError('max_grade');
    $scale_error = Session::getError('scale');

    $tool_content .= "
    <div class='form-wrapper'>
    <form class='form-horizontal' role='form' enctype='multipart/form-data' action='$_SERVER[SCRIPT_NAME]?course=$course_code' method='post'>
    <input type='hidden' name='id' value='$id' />
    <input type='hidden' name='choice' value='do_edit' />
    <fieldset>
            <div class='form-group ".($title_error ? "has-error" : "")."'>
                <label for='title' class='col-sm-2 control-label'>$m[title]:</label>
                <div class='col-sm-10'>
                  <input name='title' type='text' class='form-control' id='title' value='".q($row->title)."' placeholder='$m[title]'>
                  <span class='help-block'>$title_error</span>
                </div>
            </div>
            <div class='form-group'>
                <label for='desc' class='col-sm-2 control-label'>$m[description]:</label>
                <div class='col-sm-10'>
                " . rich_text_editor('desc', 4, 20, $row->description) . "
                </div>
            </div>";
    if (!empty($comments)) {
    $tool_content .= "<div class='form-group'>
                <label for='desc' class='col-sm-2 control-label'>$m[comments]:</label>
                <div class='col-sm-10'>
                " . rich_text_editor('comments', 5, 65, $comments) . "
                </div>
            </div>";
    }

    $tool_content .= "
        <div class='form-group'>
            <div class='col-sm-10 col-sm-offset-2 margin-top-fat margin-bottom-fat'>
                <a id='hidden-opt-btn' class='btn btn-success btn-xs' href='#' style='text-decoration:none;'>$langMoreOptions <i class='fa fa-caret-down'></i></a>
            </div>
        </div>
            <div class='collapse ".(Session::hasErrors() ? "in" : "")."' id='hidden-opt'>
                <div class='form-group'>
                    <label for='userfile' class='col-sm-2 control-label'>$langWorkFile:</label>
                    <div class='col-sm-10'>
                      ".(($row->file_name)? "<a href='$_SERVER[SCRIPT_NAME]?course=$course_code&amp;get=$row->id&amp;file_type=1'>".q($row->file_name)."</a>"
                . "<a href='$_SERVER[SCRIPT_NAME]?course=$course_code&amp;id=$id&amp;choice=do_delete_file' onClick='return confirmation(\"$m[WorkDeleteAssignmentFileConfirm]\");'>
                                     <img src='$themeimg/delete.png' title='$m[WorkDeleteAssignmentFile]' /></a>" : "<input type='file' id='userfile' name='userfile' />")."
                    </div>
                </div>
                <div class='form-group'>
                    <label class='col-sm-2 control-label'>$langGradeType:</label>
                    <div class='col-sm-10'>
                        <div class='radio'>
                          <label>
                            <input type='radio' name='grading_type' value='0'". ($grading_type ? "" : " checked") .">
                             $langGradeNumbers
                          </label>
                        </div>
                        <div class='radio'>
                          <label>
                            <input type='radio' name='grading_type' value='1'". ($grading_type ? " checked" : "") .">
                            $langGradeScales
                          </label>
                        </div>
                    </div>
                </div>
                <div class='form-group".($scale_error ? " has-error" : "").(!$grading_type ? " hidden" : "")."'>
                    <label for='title' class='col-sm-2 control-label'>$langGradeScales:</label>
                    <div class='col-sm-10'>
                      <select name='scale' class='form-control' id='scales'".(!$grading_type ? " disabled" : "").">
                            $scale_options
                      </select>
                      <span class='help-block'>$scale_error</span>
                    </div>
                </div>
                <div class='form-group".($max_grade_error ? " has-error" : "").($grading_type ? " hidden" : "")."'>
                    <label for='title' class='col-sm-2 control-label'>$m[max_grade]:</label>
                    <div class='col-sm-10'>
                      <input name='max_grade' type='text' class='form-control' id='max_grade' placeholder='$m[max_grade]' value='$max_grade'>
                      <span class='help-block'>$max_grade_error</span>
                    </div>
                </div>
                <div class='form-group'>
                    <label class='col-sm-2 control-label'>$langWorkSubType:</label>
                    <div class='col-sm-10'>
                        <div class='radio'>
                          <label>
                            <input type='radio' name='submission_type' value='0'". ($row->submission_type ? "" : "checked") .">
                             $langWorkFile
                          </label>
                        </div>
                        <div class='radio'>
                          <label>
                            <input type='radio' name='submission_type' value='1' ". ($row->submission_type ? "checked" : "") .">
                            $langWorkOnlineText
                          </label>
                        </div>
                    </div>
                </div>
                <div class='input-append date form-group".(Session::getError('WorkStart') ? " has-error" : "")."' id='enddatepicker' data-date='$WorkStart' data-date-format='dd-mm-yyyy'>
                    <label for='WorkStart' class='col-sm-2 control-label'>$langStartDate:</label>
                    <div class='col-sm-10'>
                       <div class='input-group'>
                           <span class='input-group-addon'>
                             <input style='cursor:pointer;' type='checkbox' id='enableWorkStart' name='enableWorkStart' value='1'".($enableWorkStart ? ' checked' : '').">
                           </span>
                           <input class='form-control' name='WorkStart' id='WorkStart' type='text' value='$WorkStart'".($enableWorkStart ? '' : ' disabled').">
                       </div>
                       <span class='help-block'>".(Session::hasError('WorkStart') ? Session::getError('WorkStart') : "&nbsp;&nbsp;&nbsp;<i class='fa fa-share fa-rotate-270'></i> $langAssignmentStartHelpBlock")."</span>
                    </div>
                </div>
                <div class='input-append date form-group".(Session::getError('WorkEnd') ? " has-error" : "")."' id='enddatepicker' data-date='$WorkEnd' data-date-format='dd-mm-yyyy'>
                    <label for='WorkEnd' class='col-sm-2 control-label'>$m[deadline]:</label>
                    <div class='col-sm-10'>
                       <div class='input-group'>
                           <span class='input-group-addon'>
                             <input style='cursor:pointer;' type='checkbox' id='enableWorkEnd' name='enableWorkEnd' value='1'".($enableWorkEnd ? ' checked' : '').">
                           </span>
                           <input class='form-control' name='WorkEnd' id='WorkEnd' type='text' value='$WorkEnd'".($enableWorkEnd ? '' : ' disabled').">
                       </div>
                       <span class='help-block'>".(Session::hasError('WorkEnd') ? Session::getError('WorkEnd') : "&nbsp;&nbsp;&nbsp;<i class='fa fa-share fa-rotate-270'></i> $langAssignmentEndHelpBlock")."</span>
                    </div>
                </div>
                <div class='form-group ". ($WorkEnd ? "" : "hide") ."' id='late_sub_row'>
                    <div class='col-xs-10 col-xs-offset-2'>
                        <div class='checkbox'>
                          <label>
                            <input type='checkbox' id='late_submission' name='late_submission' value='1' ".(($row->late_submission)? 'checked' : '').">
                            $m[late_submission_enable]
                          </label>
                        </div>
                    </div>
                </div>
                <div class='form-group'>
                    <label class='col-sm-2 control-label'>$m[group_or_user]:</label>
                    <div class='col-sm-10'>
                        <div class='radio'>
                          <label>
                            <input type='radio' id='user_button' name='group_submissions' value='0' ".(($row->group_submissions==1) ? '' : 'checked').">
                            $m[user_work]
                          </label>
                        </div>
                        <div class='radio'>
                          <label>
                            <input type='radio' id='group_button' name='group_submissions' value='1' ".(($row->group_submissions==1) ? 'checked' : '').">
                            $m[group_work]
                          </label>
                        </div>
                    </div>
                </div>
                <div class='form-group'>
                    <label class='col-sm-2 control-label'>$m[WorkAssignTo]:</label>
                    <div class='col-sm-10'>
                        <div class='radio'>
                          <label>
                            <input type='radio' id='assign_button_all' name='assign_to_specific' value='0' ".(($row->assign_to_specific==1) ? '' : 'checked').">
                            <span id='assign_button_all_text'>$m[WorkToAllUsers]</span>
                          </label>
                        </div>
                        <div class='radio'>
                          <label>
                            <input type='radio' id='assign_button_some' name='assign_to_specific' value='1' ".(($row->assign_to_specific==1) ? 'checked' : '').">
                            <span id='assign_button_some_text'>$m[WorkToUser]</span>
                          </label>
                        </div>
                    </div>
                </div>
                <div class='form-group'>
                    <div class='col-sm-10 col-sm-offset-2'>
                        <div class='table-responsive'>
                            <table id='assignees_tbl' class='table-default ".(($row->assign_to_specific==1) ? '' : 'hide')."'>
                            <tr class='title1'>
                              <td id='assignees'>$langStudents</td>
                              <td class='text-center'>$langMove</td>
                              <td>$m[WorkAssignTo]</td>
                            </tr>
                            <tr>
                              <td>
                                <select class='form-control' id='assign_box' size='10' multiple>
                                ".((isset($unassigned_options)) ? $unassigned_options : '')."
                                </select>
                              </td>
                              <td class='text-center'>
                                <input type='button' onClick=\"move('assign_box','assignee_box')\" value='   &gt;&gt;   ' /><br /><input type='button' onClick=\"move('assignee_box','assign_box')\" value='   &lt;&lt;   ' />
                              </td>
                              <td>
                                <select class='form-control' id='assignee_box' name='ingroup[]' size='10' multiple>
                                ".((isset($assignee_options)) ? $assignee_options : '')."
                                </select>
                              </td>
                            </tr>
                            </table>
                        </div>
                    </div>
                </div>";
                if(AutojudgeApp::getAutojudge()->isEnabled()) {
                $auto_judge = $row->auto_judge;
                $lang = $row->lang;
                $tool_content .= "
                <div class='form-group'>
                    <label class='col-sm-2 control-label'>$langAutoJudgeEnable:</label>
                    <div class='col-sm-10'>
                        <div class='radio'><input type='checkbox' id='auto_judge' name='auto_judge' value='1' ".($auto_judge == true ? "checked='1'" : '')." /></div>
                        <table>
                            <thead>
                                <tr>
                                    <th>$langAutoJudgeInput</th>
                                    <th>$langAutoJudgeOperator</th>
                                    <th>$langAutoJudgeExpectedOutput</th>
                                    <th>$langAutoJudgeWeight</th>
                                    <th>".$m['delete']."</th>
                                </tr>
                            </thead>
                            <tbody>";
                            $auto_judge_scenarios = $auto_judge == true ? unserialize($row->auto_judge_scenarios) : null;
                            $connector = AutojudgeApp::getAutojudge();
                            $rows    = 0;
                            $display = 'visible';
                            if ($auto_judge_scenarios != null) {
                                $scenariosCount = count($auto_judge_scenarios);
                                foreach ($auto_judge_scenarios as $aajudge) {
                                    $tool_content .=
                                    "<tr>
                                        <td><input type='text' value='".htmlspecialchars($aajudge['input'], ENT_QUOTES)."' name='auto_judge_scenarios[$rows][input]' ".($connector->supportsInput() ? '' : 'readonly="readonly" placeholder="'.$langAutoJudgeInputNotSupported.'"')." /></td>";

                                    $tool_content .=
                                    "<td>
                                        <select name='auto_judge_scenarios[$rows][assertion]' class='auto_judge_assertion'>
                                            <option value='eq'"; if ($aajudge['assertion'] === 'eq') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['eq']."</option>
                                            <option value='same'"; if ($aajudge['assertion'] === 'same') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['same']."</option>
                                            <option value='notEq'"; if ($aajudge['assertion'] === 'notEq') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['notEq']."</option>
                                            <option value='notSame'"; if ($aajudge['assertion'] === 'notSame') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['notSame']."</option>
                                            <option value='integer'"; if ($aajudge['assertion'] === 'integer') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['integer']."</option>
                                            <option value='float'"; if ($aajudge['assertion'] === 'float') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['float']."</option>
                                            <option value='digit'"; if ($aajudge['assertion'] === 'digit') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['digit']."</option>
                                            <option value='boolean'"; if ($aajudge['assertion'] === 'boolean') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['boolean']."</option>
                                            <option value='notEmpty'"; if ($aajudge['assertion'] === 'notEmpty') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['notEmpty']."</option>
                                            <option value='notNull'"; if ($aajudge['assertion'] === 'notNull') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['notNull']."</option>
                                            <option value='string'"; if ($aajudge['assertion'] === 'string') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['string']."</option>
                                            <option value='startsWith'"; if ($aajudge['assertion'] === 'startsWith') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['startsWith']."</option>
                                            <option value='endsWith'"; if ($aajudge['assertion'] === 'endsWith') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['endsWith']."</option>
                                            <option value='contains'"; if ($aajudge['assertion'] === 'contains') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['contains']."</option>
                                            <option value='numeric'"; if ($aajudge['assertion'] === 'numeric') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['numeric']."</option>
                                            <option value='isArray'"; if ($aajudge['assertion'] === 'isArray') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['isArray']."</option>
                                            <option value='true'"; if ($aajudge['assertion'] === 'true') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['true']."</option>
                                            <option value='false'"; if ($aajudge['assertion'] === 'false') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['false']."</option>
                                            <option value='isJsonString'"; if ($aajudge['assertion'] === 'isJsonString') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['isJsonString']."</option>
                                            <option value='isObject'"; if ($aajudge['assertion'] === 'isObject') {$tool_content .= " selected='selected'";} $tool_content .=">".$langAutoJudgeAssertions['isObject']."</option>
                                        </select>
                                    </td>";

                                    if (isset($aajudge['output'])) {
                                        $tool_content .= "<td><input type='text' value='".htmlspecialchars($aajudge['output'], ENT_QUOTES)."' name='auto_judge_scenarios[$rows][output]' class='auto_judge_output' /></td>";
                                    } else {
                                        $tool_content .= "<td><input type='text' value='' name='auto_judge_scenarios[$rows][output]' disabled='disabled' class='auto_judge_output' /></td>";
                                    }

                                    $tool_content .=
                                        "<td><input type='text' value='$aajudge[weight]' name='auto_judge_scenarios[$rows][weight]' class='auto_judge_weight'/></td>
                                        <td><a href='#' class='autojudge_remove_scenario' style='display: ".($rows <= 0 ? 'none': 'visible').";'>X</a></td>
                                    </tr>";

                                    $rows++;
                                }
                            } else {
                                $tool_content .= "<tr>
                                            <td><input type='text' name='auto_judge_scenarios[$rows][input]' /></td>
                                            <td>
                                                <select name='auto_judge_scenarios[$rows][assertion]' class='auto_judge_assertion'>
                                                    <option value='eq' selected='selected'>".$langAutoJudgeAssertions['eq']."</option>
                                                    <option value='same'>".$langAutoJudgeAssertions['same']."</option>
                                                    <option value='notEq'>".$langAutoJudgeAssertions['notEq']."</option>
                                                    <option value='notSame'>".$langAutoJudgeAssertions['notSame']."</option>
                                                    <option value='integer'>".$langAutoJudgeAssertions['integer']."</option>
                                                    <option value='float'>".$langAutoJudgeAssertions['float']."</option>
                                                    <option value='digit'>".$langAutoJudgeAssertions['digit']."</option>
                                                    <option value='boolean'>".$langAutoJudgeAssertions['boolean']."</option>
                                                    <option value='notEmpty'>".$langAutoJudgeAssertions['notEmpty']."</option>
                                                    <option value='notNull'>".$langAutoJudgeAssertions['notNull']."</option>
                                                    <option value='string'>".$langAutoJudgeAssertions['string']."</option>
                                                    <option value='startsWith'>".$langAutoJudgeAssertions['startsWith']."</option>
                                                    <option value='endsWith'>".$langAutoJudgeAssertions['endsWith']."</option>
                                                    <option value='contains'>".$langAutoJudgeAssertions['contains']."</option>
                                                    <option value='numeric'>".$langAutoJudgeAssertions['numeric']."</option>
                                                    <option value='isArray'>".$langAutoJudgeAssertions['isArray']."</option>
                                                    <option value='true'>".$langAutoJudgeAssertions['true']."</option>
                                                    <option value='false'>".$langAutoJudgeAssertions['false']."</option>
                                                    <option value='isJsonString'>".$langAutoJudgeAssertions['isJsonString']."</option>
                                                    <option value='isObject'>".$langAutoJudgeAssertions['isObject']."</option>
                                                </select>
                                            </td>
                                            <td><input type='text' name='auto_judge_scenarios[$rows][output]' class='auto_judge_output' /></td>
                                            <td><input type='text' name='auto_judge_scenarios[$rows][weight]' class='auto_judge_weight'/></td>
                                            <td><a href='#' class='autojudge_remove_scenario' style='display: none;'>X</a></td>
                                        </tr>
                                ";
                            }
                            $tool_content .=
                            "<tr>
                                <td> </td>
                                <td> </td>
                                <td> </td>
                                <td style='text-align:center;'> $langAutoJudgeSum: <span id='weights-sum'>0</span></td>
                                <td> <input type='submit' value='$langAutoJudgeNewScenario' id='autojudge_new_scenario' /></td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
                <div class='form-group'>
                  <label class='col-sm-2 control-label'>$langAutoJudgeProgrammingLanguage:</label>
                  <div class='col-sm-10'>
                    <select id='lang' name='lang'>";
                    foreach($connector->getSupportedLanguages() as $llang => $ext) {
                        $tool_content .= "<option value='$llang' ".($llang === $lang ? "selected='selected'" : "").">$llang</option>\n";
                    }
                    $tool_content .= "</select>
                  </div>
                </div>";
                }
                $tool_content .= Tag::tagInput($id)."
            </div>
            <div class='form-group'>
            <div class='col-sm-offset-2 col-sm-10'>".
                    form_buttons(array(
                        array(
                            'class'         => 'btn-primary',
                            'name'          => 'do_edit',
                            'value'         => $langSave,
                            'javascript'    => "selectAll('assignee_box',true)"
                        ),
                        array(
                            'href' => "$_SERVER[SCRIPT_NAME]?course=$course_code",
                        )
                    ))
                    ."</div>
            </div>
    </fieldset>
    </form></div>";
}