From 1e0503f6023f1d535d3b20b50a6443eabeb0ba93 Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Mon, 18 Jun 2007 08:05:53 +0000 Subject: [PATCH] flexitable for user report --- grade/report/user/index.php | 184 ++++++++++++++++++++---------------- lang/en_utf8/grades.php | 2 + 2 files changed, 102 insertions(+), 84 deletions(-) diff --git a/grade/report/user/index.php b/grade/report/user/index.php index 3de62baaaaf..fb2c2bbf886 100644 --- a/grade/report/user/index.php +++ b/grade/report/user/index.php @@ -2,105 +2,121 @@ /// This creates and handles the whole user report interface, sans header and footer -print_heading('User Grades Report'); - +require_once($CFG->libdir.'/tablelib.php'); include_once($CFG->libdir.'/gradelib.php'); -$courseid = required_param('id', PARAM_INT); -if (!$userid = optional_param('user', 9, PARAM_INT)) { +// get the params +$courseid = required_param('id', PARAM_INT); +if (!$userid = optional_param('user', 0, PARAM_INT)) { // current user $userid = $USER->id; } // get all the grade_items -$gradeitems = grade_get_items($courseid); -$gradetotal = 0; -$gradesum = 0; -/* - * - * Table has 6 columns - *| pic | itemname/description | grade (grade_final) | percentage | rank | feedback | - * - */ -echo ' - - - - - - - '; +if ($gradeitems = grade_get_items($courseid)) { + $gradetotal = 0; + $gradesum = 0; -foreach ($gradeitems as $gradeitem) { - - echo ''; + /* + * Table has 6 columns + *| pic | itemname/description | grade (grade_final) | percentage | rank | feedback | + */ + $baseurl = $CFG->wwwroot.'/grade/report?id='.$id.'&userid='.$userid; + + // setting up table headers + $tablecolumns = array('itempic', 'itemname', 'grade', 'percentage', 'rank', 'feedback'); + $tableheaders = array('',get_string('gradeitem', 'grades'), get_string('grade'),get_string('percent', 'grades'), get_string('rank', 'grades'),get_string('feedback')); - $params->itemid = $gradeitem->id; - $params->userid = $userid; - $grade_grades_final = new grade_grades_final($params); - $grade_text = $grade_grades_final->load_text(); + $table = new flexible_table('grade-report-user-'.$course->id); + + $table->define_columns($tablecolumns); + $table->define_headers($tableheaders); + $table->define_baseurl($baseurl); + + $table->set_attribute('cellspacing', '0'); + $table->set_attribute('id', 'user-grade'); + $table->set_attribute('class', 'generaltable generalbox'); - /// prints mod icon if available - echo ''; - - /// prints grade item name - if ($gradeitem->itemtype == 'category') { - echo ''; - } else { - echo ''; - } - - /// prints the grade - echo ''; - - /// prints percentage - - if ($gradeitem->gradetype == 1) { - // processing numeric grade - if ($grade_grades_final->gradevalue) { - $percentage = $grade_grades_final->gradevalue / $gradeitem->grademax * 100 .'%'; + // not sure tables should be sortable or not, because if we allow it then sorted resutls distort grade category structure and sortorder + $table->set_control_variables(array( + TABLE_VAR_SORT => 'ssort', + TABLE_VAR_HIDE => 'shide', + TABLE_VAR_SHOW => 'sshow', + TABLE_VAR_IFIRST => 'sifirst', + TABLE_VAR_ILAST => 'silast', + TABLE_VAR_PAGE => 'spage' + )); + + $table->setup(); + + // loop through grade items to extra data + foreach ($gradeitems as $gradeitem) { + $data = array(); + + $params->itemid = $gradeitem->id; + $params->userid = $userid; + $grade_grades_final = new grade_grades_final($params); + $grade_text = $grade_grades_final->load_text(); + + /// prints mod icon if available + if ($gradeitem->itemtype == 'mod') { + $iconpath = $CFG->dirroot.'/mod/'.$gradeitem->itemmodule.'/icon.gif'; + $icon = $CFG->wwwroot.'/mod/'.$gradeitem->itemmodule.'/icon.gif'; + if (file_exists($iconpath)) { + $data[] = ''.$gradeitem->itemname.''; + } } else { - $percentage = '-'; + $data[] = ''; } - $gradetotal += $gradeitem->grademax; - $gradesum += $grade_grades_final->gradevalue; - } else if ($gradeitem->gradetype == 2) { - // processing scale grade - $scale = get_record('scale', 'id', $gradeitem->scaleid); - $scalevals = explode(",", $scale->scale); - $percentage = ($grade_grades_final->gradevalue -1) / count($scalevals); - $gradesum += count($scalevals); - $gradetotal += $grade_grades_final->gradevalue; - } else { - // text grade - $percentage = '-'; - } + + /// prints grade item name + if ($gradeitem->itemtype == 'category') { + $data[] = ''.$gradeitem->itemname.''; + } else { + $data[] = $gradeitem->itemname; + } + + /// prints the grade + $data[] = $grade_grades_final->gradevalue; + + /// prints percentage - echo ''; + if ($gradeitem->gradetype == 1) { + // processing numeric grade + if ($grade_grades_final->gradevalue) { + $percentage = $grade_grades_final->gradevalue / $gradeitem->grademax * 100 .'%'; + } else { + $percentage = '-'; + } + $gradetotal += $gradeitem->grademax; + $gradesum += $grade_grades_final->gradevalue; + } else if ($gradeitem->gradetype == 2) { + // processing scale grade + $scale = get_record('scale', 'id', $gradeitem->scaleid); + $scalevals = explode(",", $scale->scale); + $percentage = ($grade_grades_final->gradevalue -1) / count($scalevals); + $gradesum += count($scalevals); + $gradetotal += $grade_grades_final->gradevalue; + } else { + // text grade + $percentage = '-'; + } + + $data[] = $percentage; - /// prints rank - echo ''; + /// prints rank + $data[] = ''; - /// prints notes - echo ''; + /// prints notes + $data[] = $grade_text->feedback; - /// close row tag - echo ''; -} - -/// prints the total -echo ''; -echo ''; -echo ''; -echo ''; -echo '
'.get_string('gradeitem', 'grades').''.get_string('grade','grades').''.get_string('percentage', 'grades').''.get_string('rank', 'grades').''.get_string('feedback').'
'; - if ($gradeitem->itemtype == 'mod') { - $iconpath = $CFG->dirroot.'/mod/'.$gradeitem->itemmodule.'/icon.gif'; - $icon = $CFG->wwwroot.'/mod/'.$gradeitem->itemmodule.'/icon.gif'; - if (file_exists($iconpath)) { - echo ''.$gradeitem->itemname.''; - } - } - echo ''.$gradeitem->itemname.''.$gradeitem->itemname.''.$grade_grades_final->gradevalue.''.$percentage.''.$grade_text->feedback.'
'.get_string('total').''.$gradesum.'/'.$gradetotal.' 
'; + $table->add_data($data); + } + + $table->add_data(array('', get_string('total'), $gradesum.'/'.$gradetotal)); + // print the page + print_heading(get_string('userreport', 'grades')); + $table->print_html(); +} ?> diff --git a/lang/en_utf8/grades.php b/lang/en_utf8/grades.php index 9a49f1b60a5..c6839c7a72f 100644 --- a/lang/en_utf8/grades.php +++ b/lang/en_utf8/grades.php @@ -115,6 +115,7 @@ $string['points'] = 'points'; $string['pointsascending'] = 'Sort by points ascending'; $string['pointsdescending'] = 'Sort by points descdending'; $string['preferences'] = 'Preferences'; +$string['rank'] = 'Rank'; $string['rawpct'] = 'Raw %%'; $string['reprintheaders'] = 'Reprint Headers'; $string['savechanges'] = 'Save Changes'; @@ -150,6 +151,7 @@ $string['unlock'] = 'Unlock'; $string['uploadgrades'] = 'Upload grades'; $string['useadvanced'] = 'Use Advanced Features'; $string['usepercent'] = 'Use Percent'; +$string['userreport'] = 'User grade report'; $string['useweighted'] = 'Use Weighted'; $string['viewbygroup'] = 'Group'; $string['viewgrades'] = 'View Grades';