Skip to content

Commit

Permalink
adding some strings and checks for grade book import/export
Browse files Browse the repository at this point in the history
  • Loading branch information
toyomoyo committed Jun 12, 2007
1 parent f3de721 commit f115f8c
Show file tree
Hide file tree
Showing 9 changed files with 114 additions and 34 deletions.
2 changes: 1 addition & 1 deletion grade/export/grade_export_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function definition (){
global $CFG;
include_once($CFG->libdir.'/pear/HTML/QuickForm/advcheckbox.php');
$mform =& $this->_form;
$mform->addElement('header', 'general', 'Gradeitems to be included'); // TODO: localize
$mform->addElement('header', 'general', get_string('gradeitemsinc', 'grades')); // TODO: localize
$id = $this->_customdata['id']; // course id
$mform->addElement('hidden', 'id', $id);
if ($grade_items = grade_get_items($id)) {
Expand Down
8 changes: 5 additions & 3 deletions grade/export/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,16 +115,18 @@ function grade_export($id, $itemids = '') {
// if grade_item ids are specified
if ($itemids) {
foreach ($itemids as $iid) {
$params->id = $iid;
$gradeitems[] = new grade_item($params);

if ($iid) {
$params->id = $iid;
$gradeitems[] = new grade_item($params);
}
}
} else {
// else we get all items for this course
$gradeitems = grade_get_items($this->id);
}

if ($gradeitems) {

foreach ($gradeitems as $gradeitem) {

$gradeitem -> generate_final();
Expand Down
6 changes: 3 additions & 3 deletions grade/export/txt/grade_export_txt_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ function definition (){

include_once($CFG->libdir.'/pear/HTML/QuickForm/radio.php');
$radio = array();
$radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('tab'), 'tab');
$radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('comma'), 'comma');
$mform->addGroup($radio, 'separator', get_string('separator'), ' ', false);
$radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('septab', 'grades'), 'tab');
$radio[] = &MoodleQuickForm::createElement('radio', 'separator', null, get_string('sepcomma', 'grades'), 'comma');
$mform->addGroup($radio, 'separator', get_string('separator', 'grades'), ' ', false);
$mform->setDefault('separator', 'comma');

$this->add_action_buttons(false, get_string('submit'));
Expand Down
84 changes: 71 additions & 13 deletions grade/import/csv/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@
}

$newgradeitems = array(); // temporary array to keep track of what new headers are processed
$status = true;

while (!feof ($fp)) {
// add something
$line = split($csv_delimiter, fgets($fp,1024));
Expand All @@ -83,19 +85,42 @@
$value = preg_replace($csv_encode,$csv_delimiter2,trim($value));

switch ($map[$header[$key]]) {
case 'userid': //
case 'userid': //
if (!$user = get_record('user','id', $value)) {
// user not found, abort whold import
import_cleanup($importcode);
notify("user mapping error, could not find user with id \"$value\"");
$status = false;
break 3;
}
$studentid = $value;
break;
case 'useridnumber':
$user = get_record('user', 'idnumber', $value);
if (!$user = get_record('user', 'idnumber', $value)) {
// user not found, abort whold import
import_cleanup($importcode);
notify("user mapping error, could not find user with idnumber \"$value\"");
$status = false;
break 3;
}
$studentid = $user->id;
break;
case 'useremail':
$user = get_record('user', 'email', $value);
if (!$user = get_record('user', 'email', $value)) {
import_cleanup($importcode);
notify("user mapping error, could not find user with email address \"$value\"");
$status = false;
break 3;
}
$studentid = $user->id;
break;
case 'username':
$user = get_record('user', 'username', $value);
if (!$user = get_record('user', 'username', $value)) {
import_cleanup($importcode);
notify("user mapping error, could not find user with username \"$value\"");
$status = false;
break 3;
}
$studentid = $user->id;
break;
case 'new':
Expand All @@ -104,26 +129,49 @@
if (empty($newgradeitems[$key])) {

$newgradeitem->itemname = $header[$key];
$newgradeitem->import_code = $importcode;
$newgradeitems[$key] = insert_record('grade_import_newitem', $newgradeitem);
$newgradeitem->import_code = $importcode;

// failed to insert into new grade item buffer
if (!$newgradeitems[$key] = insert_record('grade_import_newitem', $newgradeitem)) {
$status = false;
import_cleanup($importcode);
notify(get_string('importfailed', 'grades'));
break 3;
}
// add this to grade_import_newitem table
// add the new id to $newgradeitem[$key]
}
unset($newgrade);
$newgrade -> newgradeitem = $newgradeitems[$key];
$newgrade -> gradevalue = $value;
$newgrades[] = $newgrade;
// if not, put it in

// if not, put it in
// else, insert grade into the table
break;
default:
// existing grade items
if (!empty($map[$header[$key]])) {

// non numeric grade value supplied, possibly mapped wrong column
if (!is_numeric($value)) {
$status = false;
import_cleanup($importcode);
notify(get_string('badgrade', 'grades'));
break 3;
}

// case of an id, only maps idnumber of a grade_item
include_once($CFG->libdir.'/grade/grade_item.php');
$gradeitem = new grade_item(array('idnumber'=>$map[$header[$key]]));
if (!$gradeitem = new grade_item(array('idnumber'=>$map[$header[$key]]))) {
// supplied bad mapping, should not be possible since user
// had to pick mapping
$status = false;
import_cleanup($importcode);
notify(get_string('importfailed', 'grades'));
break 3;
}

unset($newgrade);
$newgrade -> itemid = $gradeitem->id;
$newgrade -> gradevalue = $value;
Expand All @@ -133,26 +181,36 @@
break;
}
}


// no user mapping supplied at all, or user mapping failed
if (empty($studentid) || !is_numeric($studentid)) {
// user not found, abort whold import
$status = false;
import_cleanup($importcode);
error('user mapping error, could not find user!');
notify('user mapping error, could not find user!');
break;
}

// insert results of this students into buffer
if (!empty($newgrades)) {
foreach ($newgrades as $newgrade) {
$newgrade->import_code = $importcode;
$newgrade->userid = $studentid;
insert_record('grade_import_values', $newgrade);
if (!insert_record('grade_import_values', $newgrade)) {
// could not insert into temporary table
$status = false;
import_cleanup($importcode);
notify(get_string('importfailed', 'grades'));
break 2;
}
}
}
}

/// at this stage if things are all ok, we commit the changes from temp table
grade_import_commit($course->id, $importcode);

if ($status) {
grade_import_commit($course->id, $importcode);
}
// temporary file can go now
unlink($filename);
} else {
Expand Down
16 changes: 8 additions & 8 deletions grade/import/grade_import_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ function definition (){

// course id needs to be passed for auth purposes
$mform->addElement('hidden', 'id', optional_param('id'));
$mform->addElement('header', 'general', get_string('importfile'));
$mform->addElement('header', 'general', get_string('importfile', 'grades'));
// file upload
$mform->addElement('file', 'userfile', get_string('file'));
$mform->addRule('userfile', null, 'required');
$textlib = new textlib();
$encodings = $textlib->get_encodings();
$mform->addElement('select', 'encoding', get_string('encoding'), $encodings);
$mform->addElement('select', 'encoding', get_string('encoding', 'grades'), $encodings);

$options = array('10'=>10, '20'=>20, '100'=>100, '1000'=>1000, '100000'=>100000);
$mform->addElement('select', 'previewrows', 'Preview rows', $options); // TODO: localize
$this->add_action_buttons(false, get_string('uploadgrades'));
$this->add_action_buttons(false, get_string('uploadgrades', 'grades'));
}

function get_userfile_name(){
Expand All @@ -44,22 +44,22 @@ function definition () {
// course id
$id = $this->_customdata['id'];

$mform->addElement('header', 'general', get_string('identifier'));
$mform->addElement('header', 'general', get_string('identifier', 'grades'));
$mapfromoptions = array();

if ($header) {
foreach ($header as $h) {
$mapfromoptions[$h] = $h;
}
}
$mform->addElement('select', 'mapfrom', get_string('mapfrom'), $mapfromoptions);
$mform->addElement('select', 'mapfrom', get_string('mapfrom', 'grades'), $mapfromoptions);
//choose_from_menu($mapfromoptions, 'mapfrom');

$maptooptions = array('userid'=>'userid', 'username'=>'username', 'useridnumber'=>'useridnumber', 'useremail'=>'useremail', '0'=>'ignore');
//choose_from_menu($maptooptions, 'mapto');
$mform->addElement('select', 'mapto', get_string('mapto'), $maptooptions);
$mform->addElement('select', 'mapto', get_string('mapto', 'grades'), $maptooptions);

$mform->addElement('header', 'general', get_string('mappings'));
$mform->addElement('header', 'general', get_string('mappings', 'grades'));

$gradeitems = array();

Expand Down Expand Up @@ -97,7 +97,7 @@ function definition () {
//echo '<input name="filename" value='.$newfilename.' type="hidden" />';
$mform->addElement('hidden', 'filename', $newfilename);

$this->add_action_buttons(false, get_string('uploadgrades'));
$this->add_action_buttons(false, get_string('uploadgrades', 'grades'));

}
}
Expand Down
2 changes: 1 addition & 1 deletion grade/import/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ function grade_import_commit($courseid, $importcode) {
}
}

notify(get_string('importsuccess'));
notify(get_string('importsuccess', 'grades'));
print_continue($CFG->wwwroot.'/course/view.php?id='.$courseid);
// clean up
import_cleanup($importcode);
Expand Down
8 changes: 4 additions & 4 deletions grade/import/xml/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,16 +85,16 @@
// no user found, abort
$status = false;
import_cleanup($importcode);
notify(get_string('baduserid', 'grade'));
notify(get_string('importfailed', 'grade'));
notify(get_string('baduserid', 'grades'));
notify(get_string('importfailed', 'grades'));
break;
}

// check grade value is a numeric grade
if (!is_numeric($newgrade->gradevalue)) {
$status = false;
import_cleanup($importcode);
notify(get_string('badgrade', 'grade'));
notify(get_string('badgrade', 'grades'));
break;
}

Expand All @@ -104,7 +104,7 @@
$status = false;
// could not insert into temp table
import_cleanup($importcode);
notify(get_string('importfailed', 'grade'));
notify(get_string('importfailed', 'grades'));
break;
}
}
Expand Down
2 changes: 1 addition & 1 deletion grade/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -1163,7 +1163,7 @@ function grade_nav($course, $action='grades') {
case 'exportxls':
case 'importcsv':
case 'importxml':
$strcurpage = get_string($action);
$strcurpage = get_string($action, 'grades');
break;
default:
unset($strcurpage);
Expand Down
20 changes: 20 additions & 0 deletions lang/en_utf8/grades.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
$string['allgrades'] = 'All grades by category';
$string['allstudents'] = 'All Students';
$string['average'] = 'Average';
$string['badgrade'] = 'Supplied grade is invalid';
$string['baduser'] = 'Supplied user is invalid';
$string['bonuspoints'] = 'Bonus Points';
$string['categories'] = 'Categories';
$string['category'] = 'Category';
Expand All @@ -25,12 +27,16 @@
$string['dropped'] = 'Dropped';
$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['encoding'] = 'Encoding';
$string['errorgradevaluenonnumeric'] = 'Received non-numeric for low or high grade for';
$string['errornocategorizedid'] = 'Could not get an uncategorized id!';
$string['errornocourse'] = 'Could not get course information';
$string['errorreprintheadersnonnumeric'] = 'Received non-numeric value for reprint-headers';
$string['exceptions'] = 'Exceptions';
$string['excluded'] = 'Excluded';
$string['exportods'] = 'Export ODS';
$string['exporttxt'] = 'Export TXT';
$string['exportxml'] = 'Export XML';
$string['extracredit'] = 'Extra Credit';
$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['forelementtypes'] = ' for the selected $a';
Expand All @@ -43,6 +49,7 @@
$string['gradehelp'] = 'Grade Help';
$string['gradeitem'] = 'Grade Item';
$string['gradeitemlocked'] = 'Grading locked';
$string['gradeitemsinc'] = 'Grade items to be included';
$string['gradeitemaddusers'] = 'Exclude from Grading';
$string['gradeitemmembersselected'] = 'Excluded from Grading';
$string['gradeitemnonmembers'] = 'Included in Grading';
Expand All @@ -59,6 +66,12 @@
$string['highgradeascending'] = 'Sort by high grade ascending';
$string['highgradedescending'] = 'Sort by high grade descending';
$string['highgradeletter'] = 'High';
$string['identifier'] = 'Identify user by';
$string['importcsv'] = 'Import CSV';
$string['importfailed'] = 'Import failed';
$string['importfile'] = 'Import file';
$string['importsuccess'] = 'Grade import success';
$string['importxml'] = 'Import XML';
$string['incorrectcourseid'] = 'Course ID was incorrect';
$string['item'] = 'Item';
$string['items'] = 'Items';
Expand All @@ -68,8 +81,11 @@
$string['lock'] = 'Lock';
$string['lowest'] = 'Lowest';
$string['lowgradeletter'] = 'Low';
$string['mapfrom'] = 'Map from';
$string['mapto'] = 'Map to';
$string['max'] = 'Highest';
$string['maxgrade'] = 'Max Grade';
$string['mappings'] = 'Grade item mappings';
$string['median'] = 'Median';
$string['min'] = 'Lowest';
$string['mode'] = 'Mode';
Expand Down Expand Up @@ -103,6 +119,9 @@
$string['savepreferences'] = 'Save Preferences';
$string['scaledpct'] = 'Scaled %%';
$string['selectdestination'] = 'Select destination of $a';
$string['septab'] = 'Tab';
$string['sepcomma'] = 'Comma';
$string['separator'] = 'Separator';
$string['setcategories'] = 'Set Categories';
$string['setcategorieserror'] = 'You must first set the categories for your course before you can give weights to them.';
$string['setgradeletters'] = 'Set Grade Letters';
Expand All @@ -126,6 +145,7 @@
$string['totalweightnot100'] = 'The total weight is not equal to 100';
$string['uncategorised'] = 'Uncategorised';
$string['unlock'] = 'Unlock';
$string['uploadgrades'] = 'Upload grades';
$string['useadvanced'] = 'Use Advanced Features';
$string['usepercent'] = 'Use Percent';
$string['useweighted'] = 'Use Weighted';
Expand Down

0 comments on commit f115f8c

Please sign in to comment.