$link_back = "admin.php?course=$course_code".(isset($exerciseId) ? "&exerciseId=$exerciseId" : "").(isset($_GET['newQuestion']) ? "&editQuestion=$_GET[newQuestion]" : "&editQuestion=$_GET[modifyQuestion]"); } $tool_content .= action_bar(array( array('title' => $langBack, 'url' => $link_back, 'icon' => 'fa-reply', 'level' => 'primary-label' ) )); $q_cats = Database::get()->queryArray("SELECT * FROM exercise_question_cats WHERE course_id = ?d", $course_id); $options = "<option value='0'>-- $langQuestionWithoutCat --</option>\n"; foreach ($q_cats as $q_cat) { $options .= "<option value='$q_cat->question_cat_id' ". (($category == $q_cat->question_cat_id) ? "selected" : "") .">$q_cat->question_cat_name</option>\n"; } enableCheckFileSize(); $tool_content .= " <div class='form-wrapper'> <form class='form-horizontal' role='form' enctype='multipart/form-data' method='post' action='$form_submit_action'> <div class='form-group'> <label for='questionCat' class='col-sm-2 control-label'>$langQuestionCat:</label> <div class='col-sm-10'> <select name='category' id='questionCat' class='form-control'> $options </select> </div> </div> <div class='form-group ".(Session::getError('questionName') ? "has-error" : "")."'> <label for='questionName' class='col-sm-2 control-label'>$langQuestion:</label> <div class='col-sm-10'> <input name='questionName' type='text' class='form-control' id='questionName' placeholder='$langQuestion' value='" . q($questionName) . "'>
function new_assignment() { global $tool_content, $m, $langAdd, $course_code, $course_id, $answer; global $desc, $language, $head_content, $langCancel, $langMoreOptions, $langLessOptions; global $langBack, $langSave, $langStudents, $langMove, $langWorkFile, $langAssignmentStartHelpBlock, $langAssignmentEndHelpBlock, $langWorkSubType, $langWorkOnlineText, $langStartDate, $langGradeNumbers, $langGradeScalesSelect, $langGradeType, $langGradeScales, $langAutoJudgeInputNotSupported, $langAutoJudgeSum, $langAutoJudgeNewScenario, $langAutoJudgeEnable, $langAutoJudgeInput, $langAutoJudgeExpectedOutput, $langAutoJudgeOperator, $langAutoJudgeWeight, $langAutoJudgeProgrammingLanguage, $langAutoJudgeAssertions; $connector = AutojudgeApp::getAutojudge(); load_js('bootstrap-datetimepicker'); load_js('select2'); $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'>$scale->title</option>"; } $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); $('#late_sub_row').removeClass('hide'); } else { $('input#'+dateType).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>"; $tool_content .= action_bar(array( array('title' => $langBack, 'level' => 'primary-label', 'url' => "$_SERVER[PHP_SELF]?course=$course_code", 'icon' => 'fa-reply'))); $title_error = Session::getError('title'); $max_grade_error = Session::getError('max_grade'); $scale_error = Session::getError('scale'); $max_grade = Session::has('max_grade') ? Session::get('max_grade') : 10; $scale = Session::getError('scale'); $submission_type = Session::has('submission_type') ? Session::get('submission_type') : 0; $grading_type = Session::has('grading_type') ? Session::get('grading_type') : 0; $WorkStart = Session::has('WorkStart') ? Session::get('WorkStart') : (new DateTime('NOW'))->format('d-m-Y H:i'); $WorkEnd = Session::has('WorkEnd') ? Session::get('WorkEnd') : ""; $enableWorkStart = Session::has('enableWorkStart') ? Session::get('enableWorkStart') : null; $enableWorkEnd = Session::has('enableWorkEnd') ? Session::get('enableWorkEnd') : ($WorkEnd ? 1 : 0); enableCheckFileSize(); $tool_content .= " <div class='row'><div class='col-sm-12'> <div class='form-wrapper'> <form class='form-horizontal' role='form' enctype='multipart/form-data' method='post' action='$_SERVER[SCRIPT_NAME]?course=$course_code'> <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' 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, $desc) . " </div> </div> <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'>" . fileSizeHidenInput() . " <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' 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'". ($submission_type ? "" : " checked") ."> $langWorkFile </label> </div> <div class='radio'> <label> <input type='radio' name='submission_type' value='1'". ($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') : " <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='exerciseEndDate' 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') : " <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'> $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' checked> $m[user_work] </label> </div> <div class='radio'> <label> <input type='radio' id='group_button' name='group_submissions' value='1'> $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' 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'> <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 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></select> </td> <td class='text-center'> <input type='button' onClick=\"move('assign_box','assignee_box')\" value=' >> ' /><br /><input type='button' onClick=\"move('assignee_box','assign_box')\" value=' << ' /> </td> <td width='40%'> <select class='form-control' id='assignee_box' name='ingroup[]' size='10' multiple></select> </td> </tr> </table> </div> </div> </div>"; if(AutojudgeApp::getAutojudge()->isEnabled()) { $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' /></div> <table style='display: none;'> <thead> <tr> <th>$langAutoJudgeInput</th> <th>$langAutoJudgeOperator</th> <th>$langAutoJudgeExpectedOutput</th> <th>$langAutoJudgeWeight</th> <th>".$m['delete']."</th> </tr> </thead> <tbody> <tr> <td><input type='text' name='auto_judge_scenarios[0][input]' ".($connector->supportsInput() ? '' : 'readonly="readonly" placeholder="'.$langAutoJudgeInputNotSupported.'"')." /></td> <td> <select name='auto_judge_scenarios[0][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[0][output]' class='auto_judge_output' /></td> <td><input type='text' name='auto_judge_scenarios[0][weight]' class='auto_judge_weight'/></td> <td><a href='#' class='autojudge_remove_scenario' style='display: none;'>X</a></td> </tr> <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 $lang => $ext) { $tool_content .= "<option value='$lang'>$lang</option>\n"; } $tool_content .= "</select> </div> </div> "; } $tool_content .= Tag::tagInput()." </div> <div class='form-group'> <div class='col-sm-offset-2 col-sm-10'>". form_buttons(array( array( 'class' => 'btn-primary', 'name' => 'new_assign', 'value' => $langSave, 'javascript' => "selectAll('assignee_box',true)" ), array( 'href' => "$_SERVER[SCRIPT_NAME]?course=$course_code", ) )) ."</div> </div> </fieldset> </form></div></div></div>"; }