require_login($course);
$context = get_context_instance(CONTEXT_COURSE, $course->id);
if (!has_capability('moodle/grade:manage', $context)) {
- require_capability('moodle/grade:override', $context);
+ require_capability('moodle/grade:edit', $context);
}
// default return url
$grade_grade->set_excluded($data->excluded);
}
- if (isset($data->overridden) and has_capability('moodle/grade:manage', $context) or has_capability('moodle/grade:override', $context)) {
+ if (isset($data->overridden) and has_capability('moodle/grade:manage', $context) or has_capability('moodle/grade:edit', $context)) {
// ignore overridden flag when changing final grade
if ($old_grade_grade->finalgrade == $grade_grade->finalgrade) {
$grade_grade->set_overridden($data->overridden);
global $CFG;
if (!has_capability('moodle/grade:manage', $this->context)) {
- if ($element['type'] == 'grade' and has_capability('moodle/grade:override', $this->context)) {
+ if ($element['type'] == 'grade' and has_capability('moodle/grade:edit', $this->context)) {
// oki - let them override grade
} else {
return '';
$USER->gradeediting = array();
}
-if (has_capability('moodle/grade:override', $context)) {
+if (has_capability('moodle/grade:edit', $context)) {
if (!isset($USER->gradeediting[$course->id])) {
$USER->gradeediting[$course->id] = 0;
}
*/
function process_data($data) {
- if (!has_capability('moodle/grade:override', $this->context)) {
+ if (!has_capability('moodle/grade:edit', $this->context)) {
return false;
}
$scales_list = substr($scales_list, 0, -1);
$scales_array = get_records_list('scale', 'id', $scales_list);
}
-
+
$canviewhidden = has_capability('moodle/grade:viewhidden', get_context_instance(CONTEXT_COURSE, $this->course->id));
foreach ($this->users as $userid => $user) {
$studentshtml .= '<td class="cell c'.$columncount++.'">'.userdate($grade->timecreated,get_string('strftimedatetimeshort')).'</td>'; } else {
$studentshtml .= '<td class="cell c'.$columncount++.'">-</td>';
}
- continue;
+ continue;
}
$grade->courseid = $this->courseid;
$groupwheresql = null;
}
+ if ($shownumberofgrades) {
+ $straverage .= ' (' . get_string('submissions', 'grades') . ') ';
+ }
+
$totalcount = $this->get_numusers($grouponly);
if ($showaverages) {
$show_hide_icon = '';
$lock_unlock_icon = '';
- if ($this->get_pref('showcalculations')) {
- $edit_calculation_icon = $this->gtree->get_calculation_icon($element, $this->gpr);
- }
+ if (has_capability('moodle/grade:manage', $this->context)) {
- if ($this->get_pref('showeyecons')) {
- $show_hide_icon = $this->gtree->get_hiding_icon($element, $this->gpr);
- }
+ if ($this->get_pref('showcalculations')) {
+ $edit_calculation_icon = $this->gtree->get_calculation_icon($element, $this->gpr);
+ }
+
+ if ($this->get_pref('showeyecons')) {
+ $show_hide_icon = $this->gtree->get_hiding_icon($element, $this->gpr);
+ }
- if ($this->get_pref('showlocks')) {
- $lock_unlock_icon = $this->gtree->get_locking_icon($element, $this->gpr);
+ if ($this->get_pref('showlocks')) {
+ $lock_unlock_icon = $this->gtree->get_locking_icon($element, $this->gpr);
+ }
}
return '<div class="grade_icons">'.$edit_icon.$edit_calculation_icon.$show_hide_icon.$lock_unlock_icon.'</div>';
require_login($course->id);
$context = get_context_instance(CONTEXT_COURSE, $course->id);
-require_capability('moodle/grade:manage', $context);
+require_capability('gradereport/grader:view', $context);
// If data submitted, then process and store.
if ($data = data_submitted()) {
$mform =& $this->_form;
$course = $this->_customdata['course'];
+ $context = get_context_instance(CONTEXT_COURSE, $course->id);
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$strgradeboundary = get_string('gradeboundary', 'grades');
/// form definition with preferences defaults
//--------------------------------------------------------------------------------
$preferences = array();
- $preferences['prefgeneral'] = array(
- 'studentsperpage' => 'text',
- 'quickgrading' => $checkbox_default,
- 'quickfeedback' => $checkbox_default,
- 'decimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default', 0, 1, 2, 3, 4, 5),
- 'aggregationposition' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_AGGREGATION_POSITION_LEFT => get_string('left', 'grades'),
- GRADE_REPORT_AGGREGATION_POSITION_RIGHT => get_string('right', 'grades')),
- 'aggregationview' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('fullmode', 'grades'),
- GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY => get_string('aggregatesonly', 'grades'),
- GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY => get_string('gradesonly', 'grades')),
- 'gradedisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
- 'meanselection' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_MEAN_ALL => get_string('meanall', 'grades'),
- GRADE_REPORT_MEAN_GRADED => get_string('meangraded', 'grades')),
- 'enableajax' => $checkbox_default);
-
- $preferences['prefshow'] = array('showcalculations' => $checkbox_default,
- 'showeyecons' => $checkbox_default,
- 'showaverages' => $checkbox_default,
- 'showgroups' => $checkbox_default,
- 'showlocks' => $checkbox_default,
- 'showranges' => $checkbox_default,
- 'showuserimage' => $checkbox_default,
- 'showactivityicons' => $checkbox_default);
-
- $preferences['prefrows'] = array(
- 'shownumberofgrades' => $checkbox_default,
- 'averagesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
- GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
- 'rangesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
- GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
- GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
- 'averagesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_PREFERENCE_INHERIT => $strinherit, 0, 1, 2, 3, 4, 5),
- 'rangesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
- GRADE_REPORT_PREFERENCE_INHERIT => $strinherit, 0, 1, 2, 3, 4, 5));
-
-
- for ($i = 1; $i <= 10; $i++) {
- $preferences['prefletters']['gradeletter' . $i] = 'text';
- $preferences['prefletters']['gradeboundary' . $i] = $percentages;
+
+ // Initialise the preferences arrays with grade:manage capabilities
+ if (has_capability('moodle/grade:manage', $context)) {
+ $preferences['prefgeneral'] = array(
+ 'decimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default', 0, 1, 2, 3, 4, 5),
+ 'aggregationview' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_AGGREGATION_VIEW_FULL => get_string('fullmode', 'grades'),
+ GRADE_REPORT_AGGREGATION_VIEW_AGGREGATES_ONLY => get_string('aggregatesonly', 'grades'),
+ GRADE_REPORT_AGGREGATION_VIEW_GRADES_ONLY => get_string('gradesonly', 'grades')),
+ 'gradedisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
+ 'meanselection' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_MEAN_ALL => get_string('meanall', 'grades'),
+ GRADE_REPORT_MEAN_GRADED => get_string('meangraded', 'grades')));
+
+
+ $preferences['prefshow'] = array('showcalculations' => $checkbox_default,
+ 'showeyecons' => $checkbox_default,
+ 'showaverages' => $checkbox_default,
+ 'showgroups' => $checkbox_default,
+ 'showlocks' => $checkbox_default);
+
+ $preferences['prefrows'] = array(
+ 'averagesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
+ 'rangesdisplaytype' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_PREFERENCE_INHERIT => $strinherit,
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_REAL => get_string('real', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_PERCENTAGE => get_string('percentage', 'grades'),
+ GRADE_REPORT_GRADE_DISPLAY_TYPE_LETTER => get_string('letter', 'grades')),
+ 'averagesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_PREFERENCE_INHERIT => $strinherit, 0, 1, 2, 3, 4, 5),
+ 'rangesdecimalpoints' => array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_PREFERENCE_INHERIT => $strinherit, 0, 1, 2, 3, 4, 5));
+
+
+ for ($i = 1; $i <= 10; $i++) {
+ $preferences['prefletters']['gradeletter' . $i] = 'text';
+ $preferences['prefletters']['gradeboundary' . $i] = $percentages;
+ }
}
+ // quickgrading and quickfeedback are conditional on grade:edit capability
+ if (has_capability('moodle/grade:edit', $context)) {
+ $preferences['prefgeneral']['quickgrading'] = $checkbox_default;
+ $preferences['prefgeneral']['quickfeedback'] = $checkbox_default;
+ }
+
+ // View capability is the lowest permission. Users with grade:manage or grade:edit must also have grader:view
+ if (has_capability('gradereport/grader:view', $context)) {
+ $preferences['prefgeneral']['studentsperpage'] = 'text';
+ $preferences['prefgeneral']['aggregationposition'] = array(GRADE_REPORT_PREFERENCE_DEFAULT => 'default',
+ GRADE_REPORT_AGGREGATION_POSITION_LEFT => get_string('left', 'grades'),
+ GRADE_REPORT_AGGREGATION_POSITION_RIGHT => get_string('right', 'grades'));
+ $preferences['prefgeneral']['enableajax'] = $checkbox_default;
+
+ $preferences['prefshow']['showuserimage'] = $checkbox_default;
+ $preferences['prefshow']['showactivityicons'] = $checkbox_default;
+ $preferences['prefshow']['showranges'] = $checkbox_default;
+
+ $preferences['prefrows']['shownumberofgrades'] = $checkbox_default;
+ }
+
+
foreach ($preferences as $group => $prefs) {
$mform->addElement('header', $group, get_string($group, 'grades'));
<?php // $Id$
$row = $tabs = array();
-
+ $tabcontext = get_context_instance(CONTEXT_COURSE, $COURSE->id);
$row[] = new tabobject('graderreport',
$CFG->wwwroot.'/grade/report/grader/index.php?id='.$courseid,
get_string('modulename', 'gradereport_grader'));
- if (has_capability('moodle/grade:manage', get_context_instance(CONTEXT_COURSE, $COURSE->id))) {
+ if (has_capability('moodle/grade:manage',$tabcontext ) ||
+ has_capability('moodle/grade:edit', $tabcontext) ||
+ has_capability('gradereport/grader:view', $tabcontext)) {
$row[] = new tabobject('preferences',
$CFG->wwwroot.'/grade/report/grader/preferences.php?id='.$courseid,
get_string('preferences'));
<?PHP // $Id$
-$plugin->version = 2007091400;
-$plugin->requires = 2007091400;
+$plugin->version = 2007091700;
+$plugin->requires = 2007091700;
?>
$string['course:viewparticipants'] = 'View participants';
$string['course:viewscales'] = 'View scales';
$string['course:visibility'] = 'Hide/show courses';
+$string['grade:edit'] = 'Edit grades';
$string['grade:export'] = 'Export grades';
$string['grade:hide'] = 'Hide/unhide grades or items';
$string['grade:import'] = 'Import grades';
'coursecreator' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
- 'admin' => CAP_ALLOW
+ 'admin' => CAP_ALLOW
)
),
)
),
- 'moodle/user:editownprofile' => array(
+ 'moodle/user:editownprofile' => array(
- 'captype' => 'write',
- 'contextlevel' => CONTEXT_SYSTEM,
- 'legacy' => array(
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_SYSTEM,
+ 'legacy' => array(
'guest' => CAP_PROHIBIT,
'user' => CAP_ALLOW,
'admin' => CAP_ALLOW
- )
+ )
),
- 'moodle/user:changeownpassword' => array(
+ 'moodle/user:changeownpassword' => array(
- 'captype' => 'write',
- 'contextlevel' => CONTEXT_SYSTEM,
- 'legacy' => array(
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_SYSTEM,
+ 'legacy' => array(
'guest' => CAP_PROHIBIT,
'user' => CAP_ALLOW,
'admin' => CAP_ALLOW
- )
+ )
),
// The next 3 might make no sense for some roles, e.g teacher, etc.
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
- ),
-
+ ),
+
//new in moodle 1.9
'moodle/question:add' => array(
'riskbitmask' => RISK_SPAM,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:editall' => array(
'riskbitmask' => RISK_SPAM,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:viewmine' => array(
'captype' => 'read',
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:viewall' => array(
'captype' => 'read',
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:usemine' => array(
'captype' => 'read',
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:useall' => array(
'captype' => 'read',
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
- ),
+ 'clonepermissionsfrom' => 'moodle/question:manage'
+ ),
'moodle/question:movemine' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
'moodle/question:moveall' => array(
'captype' => 'write',
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
),
- 'clonepermissionsfrom' => 'moodle/question:manage'
+ 'clonepermissionsfrom' => 'moodle/question:manage'
),
//END new in moodle 1.9
-
+
// Configure the installed question types.
'moodle/question:config' => array(
'clonepermissionsfrom' => 'moodle/course:managegrades'
),
- 'moodle/grade:manageoutcomes' => array(
- 'riskbitmask' => RISK_PERSONAL,
+ 'moodle/grade:edit' => array(
+ 'riskbitmask' => RISK_PERSONAL | RISK_XSS,
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'clonepermissionsfrom' => 'moodle/course:managegrades'
),
- 'moodle/grade:hide' => array(
+ 'moodle/grade:manageoutcomes' => array(
+ 'riskbitmask' => RISK_PERSONAL,
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
- )
+ ),
+ 'clonepermissionsfrom' => 'moodle/course:managegrades'
),
- 'moodle/grade:lock' => array(
+ 'moodle/grade:hide' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
)
),
- 'moodle/grade:unlock' => array(
+ 'moodle/grade:lock' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
)
),
- 'moodle/grade:override' => array(
+ 'moodle/grade:unlock' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_COURSE,
'legacy' => array(
'user' => CAP_ALLOW
)
),
-
+
'moodle/tag:edit' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
'user' => CAP_ALLOW
)
),
-
+
'moodle/tag:editblocks' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_SYSTEM,
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
- $version = 2007091401; // YYYYMMDD = date
+ $version = 2007091702; // YYYYMMDD = date
// XY = increments within a single day
$release = '1.9 Beta +'; // Human-friendly version name