</span> <input class='form-control' name='exerciseStartDate' id='exerciseStartDate' type='text' value='$exerciseStartDate'".($enableStartDate ? '' : ' disabled')."> </div> <span class='help-block'>".(Session::hasError('exerciseStartDate') ? Session::getError('exerciseStartDate') : " <i class='fa fa-share fa-rotate-270'></i> $langExerciseStartHelpBlock")."</span> </div> </div> <div class='input-append date form-group".(Session::getError('exerciseEndDate') ? " has-error" : "")."' id='enddatepicker' data-date='$exerciseEndDate' data-date-format='dd-mm-yyyy'> <label for='exerciseEndDate' class='col-sm-2 control-label'>$langEnd:</label> <div class='col-sm-10'> <div class='input-group'> <span class='input-group-addon'> <input style='cursor:pointer;' type='checkbox' id='enableEndDate' name='enableEndDate' value='1'".($enableEndDate ? ' checked' : '')."> </span> <input class='form-control' name='exerciseEndDate' id='exerciseEndDate' type='text' value='$exerciseEndDate'".($enableEndDate ? '' : ' disabled')."> </div> <span class='help-block'>".(Session::hasError('exerciseEndDate') ? Session::getError('exerciseEndDate') : " <i class='fa fa-share fa-rotate-270'></i> $langExerciseEndHelpBlock")."</span> </div> </div> <div class='form-group'> <label for='exerciseTempSave' class='col-sm-2 control-label'>$langTemporarySave:</label> <div class='col-sm-10'> <div class='radio'> <label> <input type='radio' name='exerciseTempSave' value='0' ".(($exerciseTempSave==0)? 'checked' : '')."> $langDeactivate </label> </div> <div class='radio'> <label> <input type='radio' name='exerciseTempSave' value='1' ".(($exerciseTempSave==1)? 'checked' : '')."> $langActivate
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&get=$row->id&file_type=1'>".q($row->file_name)."</a>" . "<a href='$_SERVER[SCRIPT_NAME]?course=$course_code&id=$id&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') : " <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') : " <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=' >> ' /><br /><input type='button' onClick=\"move('assignee_box','assign_box')\" value=' << ' /> </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>"; }
function show_edit_form($id, $sid, $assign) { global $m, $langGradeOk, $tool_content, $course_code, $langCancel, $langBack, $assign, $langWorkOnlineText, $course_id; $sub = Database::get()->querySingle("SELECT * FROM assignment_submit WHERE id = ?d",$sid); if (count($sub)>0) { $uid_2_name = display_user($sub->uid); if (!empty($sub->group_id)) { $group_submission = "($m[groupsubmit] $m[ofgroup] " . "<a href='../group/group_space.php?course=$course_code&group_id=$sub->group_id'>" . gid_to_name($sub->group_id) . "</a>)"; } else { $group_submission = ''; } $grade = Session::has('grade') ? Session::get('grade') : $sub->grade; $comments = Session::has('comments') ? Session::get('comments') : q($sub->grade_comments); $email_status = !Session::has('email') ?: " checked"; $pageName = $m['addgradecomments']; if($assign->submission_type){ $submission = " <div class='form-group'> <label class='col-sm-3 control-label'>$langWorkOnlineText:</label> <div class='col-sm-9'> $sub->submission_text </div> </div>"; } else { $submission = " <div class='form-group'> <label class='col-sm-3 control-label'>$m[filename]:</label> <div class='col-sm-9'> <a href='index.php?course=$course_code&get=$sub->id'>".q($sub->file_name)."</a> </div> </div>"; } if ($assign->grading_scale_id) { $serialized_scale_data = Database::get()->querySingle('SELECT scales FROM grading_scale WHERE id = ?d AND course_id = ?d', $assign->grading_scale_id, $course_id)->scales; $scales = unserialize($serialized_scale_data); $scale_options = "<option value> - </option>"; $scale_values = array_value_recursive('scale_item_value', $scales); if (!in_array($sub->grade, $scale_values) && !is_null($sub->grade)) { $sub->grade = closest($sub->grade, $scale_values)['value']; } foreach ($scales as $scale) { $scale_options .= "<option value='$scale[scale_item_value]'".($sub->grade == $scale['scale_item_value'] ? " selected" : "").">$scale[scale_item_name]</option>"; } $grade_field = " <select name='grade' class='form-control' id='scales'> $scale_options </select>"; } else { $grade_field = "<input class='form-control' type='text' name='grade' maxlength='4' size='3' value='$sub->grade'> ($m[max_grade]: $assign->max_grade)"; } $tool_content .= action_bar(array( array( 'title' => $langBack, 'url' => "index.php?course=$course_code&id=$sub->assignment_id", 'icon' => "fa-reply", 'level' => 'primary-label' ) ))." <div class='form-wrapper'> <form class='form-horizontal' role='form' method='post' action='index.php?course=$course_code'> <input type='hidden' name='assignment' value='$id'> <input type='hidden' name='submission' value='$sid'> <fieldset> <div class='form-group'> <label class='col-sm-3 control-label'>$m[username]:</label> <div class='col-sm-9'> $uid_2_name $group_submission </div> </div> <div class='form-group'> <label class='col-sm-3 control-label'>$m[sub_date]:</label> <div class='col-sm-9'> <span>".q($sub->submission_date)."</span> </div> </div> $submission <div class='form-group".(Session::getError('grade') ? " has-error" : "")."'> <label for='grade' class='col-sm-3 control-label'>$m[grade]:</label> <div class='col-sm-4'> $grade_field <span class='help-block'>".(Session::hasError('grade') ? Session::getError('grade') : "")."</span> </div> </div> <div class='form-group'> <label for='comments' class='col-sm-3 control-label'>$m[gradecomments]:</label> <div class='col-sm-9'> <textarea class='form-control' rows='3' name='comments' id='comments'>$comments</textarea> </div> </div> <div class='form-group'> <div class='col-sm-9 col-sm-offset-3'> <div class='checkbox'> <label> <input type='checkbox' value='1' id='email_button' name='email'$email_status> $m[email_users] </label> </div> </div> </div> <div class='form-group'> <div class='col-sm-9 col-sm-offset-3'> <input class='btn btn-primary' type='submit' name='grade_comments' value='$langGradeOk'> <a class='btn btn-default' href='index.php?course=$course_code&id=$sub->assignment_id'>$langCancel</a> </div> </div> </fieldset> </form> </div>"; } else { Session::Messages($m['WorkNoSubmission'], 'alert-danger'); redirect_to_home_page('modules/work/index.php?course='.$course_code.'&id='.$id); } }
/** * Render custom profile fields in profile forms * @param array $context * @param boolean $valitron * @return string */ function render_profile_fields_form($context, $valitron = false) { global $langOptional, $langCompulsory; if ($context['origin'] == 'admin_edit_profile') { //admin editing users' profile $uid = $context['user_id']; } else { global $uid; } $return_string = ""; $result = Database::get()->queryArray("SELECT id, name FROM custom_profile_fields_category ORDER BY sortorder DESC"); foreach ($result as $c) { $args = array(); $args[0] = $c->id; $registr = ''; if ($context['origin'] == 'student_register') { //student registration form $registr = 'AND registration = ?d '; $args[] = 1; $args[] = CPF_USER_TYPE_PROF; } elseif ($context['origin'] == 'teacher_register') { //teacher registration form $registr = 'AND registration = ?d '; $args[] = 1; $args[] = CPF_USER_TYPE_STUD; } elseif ($context['origin'] == 'edit_profile') { //edit profile form if ($_SESSION['status'] == USER_TEACHER) { $args[] = CPF_USER_TYPE_STUD; } elseif ($_SESSION['status'] == USER_STUDENT) { $args[] = CPF_USER_TYPE_PROF; } } elseif ($context['origin'] == 'admin_edit_profile') { //admin edit user profile form $status = Database::get()->querySingle("SELECT status FROM user WHERE id = ?d", $uid)->status; if ($status == USER_TEACHER) { $args[] = CPF_USER_TYPE_STUD; } elseif ($status == USER_STUDENT) { $args[] = CPF_USER_TYPE_PROF; } } $res = Database::get()->queryArray("SELECT id, name, shortname, description, required, datatype, data FROM custom_profile_fields WHERE categoryid = ?d ".$registr. "AND user_type <> ?d ORDER BY sortorder DESC", $args); if (count($res) > 0) { foreach ($res as $f) { if (isset($fdata)) { unset($fdata); } if ($valitron) { if (Session::hasError('cpf_'.$f->shortname)) { $form_class = 'form-group has-error'; $help_block = '<span class="help-block">' . Session::getError('cpf_'.$f->shortname) . '</span>'; } else { $form_class = 'form-group'; $help_block = ''; } } else { $form_class = 'form-group'; $help_block = ''; } $return_string .= '<div class="'.$form_class.'">'; $return_string .= '<label class="col-sm-2 control-label" for="'.$f->shortname.'">'.q($f->name).'</label>'; $return_string .= '<div class="col-sm-10">'; //get data to prefill fields if ($context['origin'] == 'edit_profile' || $context['origin'] == 'admin_edit_profile') { $data_res = Database::get()->querySingle("SELECT data FROM custom_profile_fields_data WHERE field_id = ?d AND user_id = ?d", $f->id, $uid); if ($data_res) { $fdata = $data_res->data; } } elseif (isset($context['pending']) && $context['pending']) { $data_res = Database::get()->querySingle("SELECT data FROM custom_profile_fields_data_pending WHERE field_id = ?d AND user_request_id = ?d", $f->id, $context['user_request_id']); if ($data_res) { $fdata = $data_res->data; } } if ($valitron) { if (Session::has('cpf_'.$f->shortname)) { $fdata = Session::get('cpf_'.$f->shortname); } } $val = ''; $placeholder = ''; switch ($f->datatype) { case CPF_TEXTBOX: if (isset($fdata) && $fdata != '') { $val = 'value="'.q($fdata).'"'; } elseif (isset($_REQUEST['cpf_'.$f->shortname]) && isset($_REQUEST['cpf_'.$f->shortname]) != '') { $val = 'value="'.q($_REQUEST['cpf_'.$f->shortname]).'"'; } if ($f->required == 0) { $placeholder = 'placeholder="'.$langOptional.'"'; } else { $placeholder = 'placeholder="'.$langCompulsory.'"'; } $return_string .= '<input class="form-control" '.$val.' type="text" '.$placeholder.' name="cpf_'.$f->shortname.'">'; break; case CPF_TEXTAREA: if (isset($fdata) && $fdata != '') { $val = $fdata; } elseif (isset($_REQUEST['cpf_'.$f->shortname]) && isset($_REQUEST['cpf_'.$f->shortname]) != '') { $val = $_REQUEST['cpf_'.$f->shortname]; } $return_string .= rich_text_editor('cpf_'.$f->shortname, 8, 20, $val); break; case CPF_DATE: if (isset($fdata) && $fdata != '') { $val = 'value="'.q($fdata).'"'; } elseif (isset($_REQUEST['cpf_'.$f->shortname]) && isset($_REQUEST['cpf_'.$f->shortname]) != '') { $val = 'value="'.q($_REQUEST['cpf_'.$f->shortname]).'"'; } if ($f->required == 0) { $placeholder = 'placeholder="'.$langOptional.'"'; } else { $placeholder = 'placeholder="'.$langCompulsory.'"'; } load_js('bootstrap-datepicker'); $return_string .= '<input class="form-control" '.$val.' type="text" '.$placeholder.' name="cpf_'.$f->shortname.'" data-provide="datepicker" data-date-format="dd-mm-yyyy">'; break; case CPF_MENU: if (isset($fdata) && $fdata != '') { $def_selection = intval($fdata); } elseif (isset($_REQUEST['cpf_'.$f->shortname]) && isset($_REQUEST['cpf_'.$f->shortname]) != '') { $def_selection = intval($_REQUEST['cpf_'.$f->shortname]); } else { $def_selection = 0; } $options = unserialize($f->data); $return_string .= selection($options, 'cpf_'.$f->shortname, $def_selection); break; case CPF_LINK: if (isset($fdata) && $fdata != '') { $val = 'value="'.q($fdata).'"'; } elseif (isset($_REQUEST['cpf_'.$f->shortname]) && isset($_REQUEST['cpf_'.$f->shortname]) != '') { $val = 'value="'.q($_REQUEST['cpf_'.$f->shortname]).'"'; } if ($f->required == 0) { $placeholder = 'placeholder="'.$langOptional.'"'; } else { $placeholder = 'placeholder="'.$langCompulsory.'"'; } $return_string .= '<input class="form-control" '.$val.' type="text" '.$placeholder.' name="cpf_'.$f->shortname.'">'; break; } if (!empty($f->description)) { $return_string .= '<small><em>'.standard_text_escape($f->description).'</em></small>'; } $return_string .= $help_block.'</div></div>'; } } } return $return_string; }
function formGroup($name, $label, $input) { global $tool_content; if (Session::hasError($name)) { $form_class = 'form-group has-error'; $help_block = '<span class="help-block">' . Session::getError($name) . '</span>'; } else { $form_class = 'form-group'; $help_block = ''; } $tool_content .= " <div class='$form_class'> <label for='$name' class='col-sm-2 control-label'>" . q($label) . ":</label> <div class='col-sm-10'>$input$help_block</div> </div>"; }