Skip to content

Commit

Permalink
MDL-10210 Added the grader report admin settings, and its correspondi…
Browse files Browse the repository at this point in the history
…ng language strings. Few other minor edits.
  • Loading branch information
nicolasconnault committed Jul 4, 2007
1 parent 28e2c55 commit 82b4da8
Show file tree
Hide file tree
Showing 7 changed files with 261 additions and 14 deletions.
2 changes: 1 addition & 1 deletion grade/report.php
Expand Up @@ -25,7 +25,7 @@

require_once("../config.php");
require_once("../lib/gradelib.php");
grade_grab_grades();
$courseid = required_param('id'); // course id
$report = optional_param('report', 'user', PARAM_FILE); // course id
$edit = optional_param('edit', -1, PARAM_BOOL); // sticky editting mode
Expand Down
91 changes: 91 additions & 0 deletions grade/report/grader/edit_feedback.php
@@ -0,0 +1,91 @@
<?php //$Id$

require_once '../../../config.php';
require_once $CFG->libdir.'/gradelib.php';
require_once 'edit_feedback_form.php';

$courseid = required_param('courseid', PARAM_INT);
$id = optional_param('id', 0, PARAM_INT);

if (!$course = get_record('course', 'id', $courseid)) {
print_error('nocourseid');
}

require_login($course);

$context = get_context_instance(CONTEXT_COURSE, $course->id);
//require_capability() here!!

// default return url
$returnurl = 'index.php?id='.$course->id;


$mform = new edit_feedback_form();
if ($grade_text = get_record('grade_grades_text', 'gradeid', $id)) {
$mform->set_data($grade_text);
} else {
$mform->set_data(array('courseid'=>$course->id));
}

if ($mform->is_cancelled()) {
redirect($returnurl);

} else if ($data = $mform->get_data()) {
$grade_text = new grade_grades_text(array('gradeid'=>$id));
grade_grades_text::set_properties($grade_text, $data);

if (empty($grade_text->id)) {
$grade_text->insert();

} else {
$grade_text->update();
}

redirect($returnurl);
}

// Get name of student and gradeitem name
$query = "SELECT a.firstname, a.lastname, b.itemname, c.finalgrade, b.grademin, b.grademax
FROM {$CFG->prefix}user AS a,
{$CFG->prefix}grade_items AS b,
{$CFG->prefix}grade_grades AS c
WHERE c.id = $id
AND b.id = c.itemid
AND a.id = c.userid";

$extra_info = get_record_sql($query) ;
$extra_info->grademin = round($extra_info->grademin);
$extra_info->grademax = round($extra_info->grademax);
$extra_info->finalgrade = round($extra_info->finalgrade);

$stronascaleof = get_string('onascaleof', 'grades', $extra_info);
$strgrades = get_string('grades');
$strgrade = get_string('grade');
$strgraderreport = get_string('graderreport', 'grades');
$strfeedbackedit = get_string('feedbackedit', 'grades');
$strstudent = get_string('student', 'grades');
$strgradeitem = get_string('gradeitem', 'grades');

$nav = array(array('name'=>$strgrades,'link'=>$CFG->wwwroot.'/grade/index.php?id='.$courseid, 'type'=>'misc'),
array('name'=>$strgraderreport, 'link'=>$CFG->wwwroot.'/grade/report.php?id='.$courseid.'&amp;report=grader', 'type'=>'misc'),
array('name'=>$strfeedbackedit, 'link'=>'', 'type'=>'misc'));

$navigation = build_navigation($nav);


print_header_simple($strgrades . ': ' . $strgraderreport, ': ' . $strfeedbackedit, $navigation, '', '', true, '', navmenu($course));

print_heading(get_string('feedbackedit', 'grades'));
print_box_start('gradefeedbackbox generalbox');
echo "<p>$strstudent: " . fullname($extra_info) . "</p>";
echo "<p>$strgradeitem: " . $extra_info->itemname . "</p>";
if (!empty($extra_info->finalgrade)) {
echo "<p>$strgrade: " . $extra_info->finalgrade . "$stronascaleof</p>";
}

$mform->display();

print_box_end();

print_footer($course);
die;
36 changes: 36 additions & 0 deletions grade/report/grader/edit_feedback_form.php
@@ -0,0 +1,36 @@
<?php //$Id$

require_once $CFG->libdir.'/formslib.php';

class edit_feedback_form extends moodleform {
function definition() {
global $CFG, $USER;
$mform =& $this->_form;

$feedbackformat = get_user_preferences('grade_report_feedbackformat', $CFG->grade_report_feedbackformat);

// visible elements
// User preference determines the format
if ($CFG->htmleditor && $USER->htmleditor && $feedbackformat == GRADER_REPORT_FEEDBACK_FORMAT_HTML) {
$mform->addElement('htmleditor', 'feedback', get_string('feedback', 'grades'),
array('rows'=> '15', 'course' => optional_param('courseid', PARAM_INT), 'cols'=>'45'));
} else {
$mform->addElement('textarea', 'feedback', get_string('feedback', 'grades'));
}

//TODO: add other elements

// hidden params
$mform->addElement('hidden', 'gradeid', 0);
$mform->setType('gradeid', PARAM_INT);

$mform->addElement('hidden', 'courseid', 0);
$mform->setType('courseid', PARAM_INT);

//-------------------------------------------------------------------------------
// buttons
$this->add_action_buttons();
}
}

?>
28 changes: 18 additions & 10 deletions grade/report/grader/index.php
Expand Up @@ -7,7 +7,7 @@

// Prepare language strings
$strsortasc = get_string('sortasc', 'grades');
$strsortdesc = get_string('sortdesc', 'grades');
$strsortdesc = get_string('sortasc', 'grades');

/// processing posted grades here

Expand Down Expand Up @@ -51,12 +51,20 @@
$page = optional_param('page', 0, PARAM_INT);
$sortitemid = optional_param('sortitemid', 0, PARAM_ALPHANUM); // sort by which grade item
$report = optional_param('report', 0, PARAM_ALPHANUM);
$perpage = optional_param('perpage', 3, PARAM_INT); // number of users on a page
$action = optional_param('action', 0, PARAM_ALPHA);
$move = optional_param('move', 0, PARAM_INT);
$type = optional_param('type', 0, PARAM_ALPHA);
$target = optional_param('target', 0, PARAM_ALPHANUM);

// Get the user preferences
$perpage = get_user_preferences('grade_report_studentsperpage', $CFG->grade_report_studentsperpage); // number of users on a page
$decimals = get_user_preferences('grade_report_decimalpoints', $CFG->grade_report_decimalpoints); // decimals in grades

// Override perpage if set in URL
if ($perpageurl = optional_param('perpage', 0, PARAM_INT)) {
$perpage = $perpageurl;
}

// Grab the grade_tree for this course
$gtree = new grade_tree($courseid);

Expand Down Expand Up @@ -244,19 +252,19 @@

if ($sortitemid === 'lastname') {
if ($sortorder == 'ASC') {
$lastarrow = ' <img src="'.$CFG->pixpath.'/t/up.gif" alt="'.$strsortasc.'" /> ';
$lastarrow = print_arrow('up', $strsortasc, true);
} else {
$lastarrow = ' <img src="'.$CFG->pixpath.'/t/down.gif" alt="'.$strsortdesc.'" /> ';
$lastarrow = print_arrow('down', $strsortdesc, true);
}
} else {
$lastarrow = '';
}

if ($sortitemid === 'firstname') {
if ($sortorder == 'ASC') {
$firstarrow = ' <img src="'.$CFG->pixpath.'/t/up.gif" alt="'.$strsortasc.'" /> ';
$firstarrow = print_arrow('up', $strsortasc, true);
} else {
$firstarrow = ' <img src="'.$CFG->pixpath.'/t/down.gif" alt="'.$strsortdesc.'" /> ';
$firstarrow = print_arrow('down', $strsortdesc, true);
}
} else {
$firstarrow = '';
Expand Down Expand Up @@ -317,9 +325,9 @@
} else {
if ($element['object']->id == $sortitemid) {
if ($sortorder == 'ASC') {
$arrow = ' <img src="'.$CFG->pixpath.'/t/up.gif" alt="'.$strsortasc.'" /> ';
$arrow = print_arrow('up', $strsortasc, true);
} else {
$arrow = ' <img src="'.$CFG->pixpath.'/t/down.gif" alt="'.$strsortdesc.'" /> ';
$arrow = print_arrow('down', $strsortdesc, true);
}
} else {
$arrow = '';
Expand Down Expand Up @@ -416,13 +424,13 @@
if ((int) $gradeval < 1) {
$studentshtml .= '-';
} else {
$studentshtml .= $scales[$gradeval-1];
$studentshtml .= round($scales[$gradeval-1], $decimals);
}
} else {
// no such scale, throw error?
}
} else {
$studentshtml .= $gradeval;
$studentshtml .= round($gradeval, $decimals);
}
}

Expand Down
43 changes: 40 additions & 3 deletions grade/report/grader/settings.php
@@ -1,7 +1,44 @@
<?php // $Id$

/// Add settings for this module to the $settings object (it's already defined)

$settings->add(new admin_setting_configcheckbox('gradereport_grader_enableajax', 'Enable AJAX in gradebook', 'This setting will enable the AJAX interface in the gradebooks, depending on the site setting and the individual user profile choice.', 1));

$settings->add(new admin_setting_configselect('grade_report_aggregationposition', get_string('aggregationposition', 'grades'),
get_string('configaggregationposition', 'grades'), false,
array( '0' => 'left',
'1' => 'right')));
$settings->add(new admin_setting_configselect('grade_report_aggregationview', get_string('aggregationview', 'grades'),
get_string('configaggregationview', 'grades'), false,
array( '0' => 'full',
'1' => 'compact')));
$settings->add(new admin_setting_configcheckbox('grade_report_bulkcheckboxes', get_string('bulkcheckboxes', 'grades'),
get_string('configbulkcheckboxes', 'grades'), 0));
$settings->add(new admin_setting_configcheckbox('grade_report_enableajax', get_string('enableajax', 'grades'),
get_string('configenableajax', 'grades'), 0));
$settings->add(new admin_setting_configselect('grade_report_gradedisplaytype', get_string('gradedisplaytype', 'grades'),
get_string('configgradedisplaytype', 'grades'), false,
array( '0' => 'raw',
'1' => 'percentage')));
$settings->add(new admin_setting_configcheckbox('grade_report_showeyecons', get_string('showeyecons', 'grades'),
get_string('configshoweyecons', 'grades'), 0));
$settings->add(new admin_setting_configcheckbox('grade_report_showgroups', get_string('showgroups', 'grades'),
get_string('configshowgroups', 'grades'), 0));
$settings->add(new admin_setting_configcheckbox('grade_report_showlocks', get_string('showlocks', 'grades'),
get_string('configshowlocks', 'grades'), 0));
$settings->add(new admin_setting_configcheckbox('grade_report_shownotes', get_string('shownotes', 'grades'),
get_string('configshownotes', 'grades'), 0));
$settings->add(new admin_setting_configcheckbox('grade_report_showscales', get_string('showscales', 'grades'),
get_string('configshowscales', 'grades'), 0));
$settings->add(new admin_setting_configtext('grade_report_studentsperpage', get_string('studentsperpage', 'grades'),
get_string('configstudentsperpage', 'grades'), 20));
$settings->add(new admin_setting_configselect('grade_report_feedbackformat', get_string('feedbackformat', 'grades'),
get_string('configfeedbackformat', 'grades'), false,
array( '0' => 'text',
'1' => 'html')));
$settings->add(new admin_setting_configselect('grade_report_decimalpoints', get_string('decimalpoints', 'grades'),
get_string('configdecimalpoints', 'grades'), 2,
array( '0' => '0',
'1' => '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5')));
?>
27 changes: 27 additions & 0 deletions lang/en_utf8/grades.php
Expand Up @@ -7,24 +7,42 @@
$string['addexceptionerror'] = 'Error occurred while adding exception for userid:gradeitem';
$string['addfeedback'] = 'Add Feedback';
$string['additem'] = 'Add Grade Item';
$string['aggregation'] = 'Aggregation';
$string['aggregationposition'] = 'Aggregation position';
$string['aggregationview'] = 'Aggregation view';
$string['allgrades'] = 'All grades by category';
$string['allstudents'] = 'All Students';
$string['autosort'] = 'Auto-sort';
$string['average'] = 'Average';
$string['badgrade'] = 'Supplied grade is invalid';
$string['baduser'] = 'Supplied user is invalid';
$string['bonuspoints'] = 'Bonus Points';
$string['bulkcheckboxes'] = 'Bulk checkboxes';
$string['calculation'] = 'Calculation';
$string['categories'] = 'Categories';
$string['category'] = 'Category';
$string['categoriesedit'] = 'Edit Categories';
$string['categoryname'] = 'Category name';
$string['choosecategory'] = 'Select Category';
$string['configaggregationposition'] = 'The position of the aggregation column in the grader report table, in reference to the raw grades.';
$string['configaggregationview'] = 'The way aggregations are displayed: either alongside the raw grades, or in a compact form in which only one type is shown in the table at once: the raw grades OR the aggregated grades.';
$string['configbulkcheckboxes'] = 'Checkboxes near each grade for Bulk grade operations.';
$string['configdecimalpoints'] = 'The number of decimal points to display for each grade. This can be overriden per grading item.';
$string['configenableajax'] = 'Adds a layer of AJAX functionality to the grader report, simplifying and speeding up common operations. Depends on Javascript being switched on at the user\'s browser level.';
$string['configfeedbackformat'] = 'The format of feedback notes attached to grades. This also determines the interface element used to enter such feedback (htmleditor for HTML format).';
$string['configgradedisplaytype'] = 'Grades can be shown as raw grades or as percentages (in reference to the minimum and maximum grades).';
$string['configshoweyecons'] = 'Whether to show an eye-con near each grade (controlling its visibility to the user).';
$string['configshowgroups'] = 'Show group totals and means in the grader report.';
$string['configshowlocks'] = 'Whether to show a lock/unlock icon near each grade.';
$string['configshownotes'] = 'Whether to show a feedback icon (for adding/editing) near each grade.';
$string['configshowscales'] = 'Display a row showing the scale for each grading item, in the grader report.';
$string['configstudentsperpage'] = 'The number of students to display per page in the grader report.';
$string['contract'] = 'Contract Category';
$string['createcategory'] = 'Create Category';
$string['createcategoryerror'] = 'Could not create a new category';
$string['creatinggradebooksettings'] = 'Creating Gradebook settings';
$string['curveto'] = 'Curve To';
$string['decimalpoints'] = 'Decimal points';
$string['deletecategory'] = 'Delete Category';
$string['displaylettergrade'] = 'Display Letter Grades';
$string['displaypercent'] = 'Display Percents';
Expand All @@ -34,6 +52,7 @@
$string['dropxlowest'] = 'Drop X Lowest';
$string['dropxlowestwarning'] = 'Note: If you use drop x lowest the grading assumes that all items in the category have the same point value. If point values differ results will be unpredictable';
$string['editfeedback'] = 'Edit Feedback';
$string['enableajax'] = 'Enable AJAX';
$string['encoding'] = 'Encoding';
$string['errorgradevaluenonnumeric'] = 'Received non-numeric for low or high grade for';
$string['errornocategorizedid'] = 'Could not get an uncategorized id!';
Expand All @@ -49,12 +68,14 @@
$string['extracreditwarning'] = 'Note: Setting all items for a category to extra credit will effectively remove them from the grade calculation. Since there will be no point total';
$string['feedback'] = 'Feedback';
$string['feedbackedit'] = 'Edit feedback';
$string['feedbackformat'] = 'Feedback format';
$string['forelementtypes'] = ' for the selected $a';
$string['forstudents'] = 'For Students';
$string['grade'] = 'Grade';
$string['gradebook'] = 'Gradebook';
$string['gradebookhiddenerror'] = 'The gradebook is currently set to hide everything from students.';
$string['gradecategoryhelp'] = 'Grade Category Help';
$string['gradedisplaytype'] = 'Grade display type';
$string['gradeexceptions'] = 'Grade Exceptions';
$string['gradeexceptionshelp'] = 'Grade Exceptions Help';
$string['gradehelp'] = 'Grade Help';
Expand Down Expand Up @@ -159,6 +180,11 @@
$string['settings'] = 'Settings';
$string['setweights'] = 'Set Weights';
$string['showallstudents'] = 'Show All Students';
$string['showeyecons'] = 'Show eye-cons';
$string['showgroups'] = 'Show groups';
$string['showlocks'] = 'Show locks';
$string['shownotes'] = 'Show feedback';
$string['showscales'] = 'Show scales';
$string['showhiddenitems'] = 'Show Hidden Items';
$string['sort'] = 'sort';
$string['sortasc'] = 'Sort in ascending order';
Expand All @@ -169,6 +195,7 @@
$string['stats'] = 'Statistics';
$string['statslink'] = 'Stats';
$string['student'] = 'Student';
$string['studentsperpage'] = 'Students per page';
$string['subcategory'] = 'Normal Category';
$string['synclegacygrades'] = 'Synchronise legacy grades';
$string['topcategory'] = 'Super Category';
Expand Down

0 comments on commit 82b4da8

Please sign in to comment.