I was running moodle 1.7+ and now I've upgraded to 1.8+ (update to today last stable)
Now I need to include all items to be graded, but students are not listed on right column to be included in grading.
Although 31 students are excluded no one is listed to be included.
I'm admin of site and only first item listed (Compito C01a) can be managed (so I suppose is not a role problem).
All include/exclude affect only first item at the top of list.
This screenshot show my problem:
Thanks in advance for any clue.
- Backup course completly (users/files/logs...).
- Restore course on a Moodle sandbox 1.7+ (a moodle installation that I use for test not yet upgraded to 1.8)
- Include all items to be graded (with moodle 1.7 work fine).
- Backup course with all items included in grade.
- Restore this course on Moodle 1.8
Thanks, C.
I have the same issue as you; I tried updating to the most recent version of the excemptions.php file...didn't work. I wonder if there are other people who performed an upgrade in mid-session who also are unable to do updates on the exemptions set pre-1.8.
I'm trying the work around suggested to your initial post.
Peace,
Chris
Another quick and dirty way to fix this is to delete all of the entries of the rows from the exemption table within the database. For me it was listed as: Table: mdl_grade_exceptions and I was able to use a web-based manager (phpMyAdmin) to find the table, browse and select of the entries and delete them. Probably don't want to mess with it if you haven't delved into the database before, but for me it seemed to work quickly because I really need to finish grades up this week.
On a side note: Even after deleting the exemption entries, the Exemption function of the gradebook doesn't work correctly. When you select any list of students for a particular assignment, the gradebook will only use the first assignment listed in the listing window for exempt status. Bug?
Peace,
Chris
I also noticed that exemption apply only to the first assingnement, I suppose that is a bug.
I've also noticed that I can't see uncetogrised stats divided by groups!
C.
-----------------------------------------------------
Problem with grade exceptions, Moodle 1.8.2 GBv2
I am using the patch uploaded around July 23, 2007 on this system (1.8.1 system)
I have a class with 5 students and 44 assignments.
First problem:
when I go to the grade exceptions screen, I
select a student who is third in the list
select the third assignment in the list
click "exclude from grading" and the third student is excluded from the first assignment in the list.
Second problem:
when I exclude a student from a single assignment (which works only when it is the FIRST assignment!), I can't get the screen to refresh so that I can exclude students from a different assignment. Even if I click on a different tab and come back, I can not start excluding for a second assignment.
This is big trouble for us!
------------------------------------------------------
atw
I did not file anything in the tracker because I have not done it myself to be sure I can explain it properly!
Anthony, do you get these in the tracker? Or someone else? Since this is for 1.8 AND a third party hack at that, I guess I did not think the tracker was appropriate. Feel free to correct my ignorance!
atw
And you can record bugs in any version of Moodle there, using the 'Affects Version' field to make your bug report clear.
I will go file an issue.
atw
I believe I may have fixed it. I'd like for other testers please. In exceptions.html, I changed the javascript code for these functions. It may not be the best way to reference the controls on the page, but it works. The page does not like the getElementById references. I have left a couple in comments so you can see what I mean:
function updategrade_item() {
// getElementById('form1').grade_itemid.value = getElementById('form2').grade_items.value;
document.forms[0].elements[1].value = document.forms[1].elements[3].value;
// getElementById('form3').grade_itemid.value = getElementById('form2').grade_items.value;
document.forms[2].elements[1].value = document.forms[1].elements[3].value;
}
function updateMembers(selectgrade_item) {
eval('grade_item=grade_item'+selectgrade_item.value);
username = grade_item.username;
userid = grade_item.userid;
document.forms[2].elements[4].length = username.length;
for (i=0;i<username.length;i++) {
document.forms[2].elements[4].options[i].value = userid[i];
document.forms[2].elements[4].options[i].text = username[i];
}
eval('grade_item_inc=grade_item_inc'+selectgrade_item.value);
username = grade_item_inc.username;
userid = grade_item_inc.userid;
document.forms[0].elements[4].length = username.length;
for (i=0;i<username.length;i++) {
document.forms[0].elements[4].options[i].value = userid[i];
document.forms[0].elements[4].options[i].text = username[i];
}
updategrade_item();
}
We are having the same problem. Can you please tell me the exact location of where this java "fix" should go?
PLEASE HELP
atw
atw
Did you change both functions? After I changed them the exceptions worked correctly.
The first larger function fixes the refresh. The smaller function creates the correct update.
We really need this fix, so that would be great if you are willing to either post it entire or forward it to my email.
atw
Here is all I have. I still have my cheap debugger in it . Save a copy of yours. Then copy this, select all in your file, paste this - do you backup first of the file exceptions.html.
<script type="text/javascript">
//<![CDATA[
<?php
// javascript objects for excluded students
foreach ($listmembers as $grade_itemid => $listmember) {
echo "grade_item$grade_itemid = new Object();\n";
$useridstring = "grade_item$grade_itemid.userid = new Array(";
$usernamestring = "grade_item$grade_itemid.username = new Array(";
$max = count($listmember);
$count = 0;
foreach ($listmember as $userid => $username) {
$count++;
$useridstring .= "\"$userid\"";
$usernamestring .= "\"$username\"";
if ($count < $max) {
$useridstring .= ', ';
$usernamestring .= ', ';
}
}
$useridstring .= ");\n";
$usernamestring .= ");\n";
echo $useridstring;
echo $usernamestring;
}
// javascript objects for included students
foreach ($nonmembers as $grade_itemid => $listmember) {
echo "grade_item_inc$grade_itemid = new Object();\n";
$useridstring = "grade_item_inc$grade_itemid.userid = new Array(";
$usernamestring = "grade_item_inc$grade_itemid.username = new Array(";
$max = count($listmember);
$count = 0;
foreach ($listmember as $userid => $username) {
$count++;
$useridstring .= "\"$userid\"";
$usernamestring .= "\"$username\"";
if ($count < $max) {
$useridstring .= ', ';
$usernamestring .= ', ';
}
}
$useridstring .= ");\n";
$usernamestring .= ");\n";
echo $useridstring;
echo $usernamestring;
}
?>
function updategrade_item() {
// getElementById('form1').grade_itemid.value = getElementById('form2').grade_items.value;
document.forms[0].elements[1].value = document.forms[1].elements[3].value;
//alert("updategrade_item " + document.forms[1].elements[3].value);
// getElementById('form3').grade_itemid.value = getElementById('form2').grade_items.value;
document.forms[2].elements[1].value = document.forms[1].elements[3].value;
}
function updateMembers(selectgrade_item) {
eval('grade_item=grade_item'+selectgrade_item.value);
//temp = document.forms[0].elements[4].options[0].text;
//alert("hi: " + temp);
username = grade_item.username;
userid = grade_item.userid;
document.forms[2].elements[4].length = username.length;
for (i=0;i<username.length;i++) {
document.forms[2].elements[4].options[i].value = userid[i];
document.forms[2].elements[4].options[i].text = username[i];
}
eval('grade_item_inc=grade_item_inc'+selectgrade_item.value);
username = grade_item_inc.username;
userid = grade_item_inc.userid;
document.forms[0].elements[4].length = username.length;
for (i=0;i<username.length;i++) {
document.forms[0].elements[4].options[i].value = userid[i];
document.forms[0].elements[4].options[i].text = username[i];
}
updategrade_item();
}
// end hiding script -->
</script>
<table border="0" cellspacing="2" cellpadding="5" align="center" class="generalbox">
<tr>
<td colspan="3" class="header">
<?php
print get_string('gradeexceptions','grades');
helpbutton('exceptions',get_string('gradeexceptionshelp','grades'), 'grade');
?>
</td>
</tr>
<tr>
<td width="33%" align="center" class="generaltableheader"><?php p($strgradeitemnonmembers) ?></td>
<td width="33%" align="center" class="generaltableheader"><?php p($strgradeitems) ?></td>
<td width="33%" align="center" class="generaltableheader"><?php p($strgradeitemmembersselected) ?></td>
</tr>
<tr align="center" valign="top">
<td class="generalboxcontent">
<form id="form1" method="post" action="exceptions.php">
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
<input type="hidden" name="grade_itemid" value="<?php p($selectedgrade_item) ?>" />
<input type="hidden" name="action" value="excepts" />
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
<select name="nonmembers[]" size="15" multiple="multiple">
<?php
if (!empty($nonmembers[$selectedgrade_item])) {
foreach ($nonmembers[$selectedgrade_item] as $id => $nonmembername) {
echo "<option value=\"$id\">$nonmembername</option>";
}
}
?>
</select>
<p>
<input type="submit" name="nonmembersadd" value="<?php p($strgradeitemaddusers) ?>"
onclick="updategrade_item()" />
</p>
</form>
</td>
<td class="generalboxcontent">
<form id="form2" method="post" action="grade_items.php">
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
<input type="hidden" name="action" value="excepts" />
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
<select name="grade_items" size="15" onchange="updateMembers(this)">
<?php
if (!empty($listgrade_items)) {
foreach ($listgrade_items as $id => $listgrade_item) {
$selected = '';
if ($id == $selectedgrade_item) {
$selected = 'selected="selected"';
}
echo "<option $selected value=\"$id\">$listgrade_item</option>";
}
}
?>
</select>
</form>
</td>
<td class="generalboxcontent">
<form id="form3" method="post" action="exceptions.php">
<input type="hidden" name="id" value="<?php p($course->id) ?>" />
<input type="hidden" name="grade_itemid" value="<?php p($selectedgrade_item) ?>" />
<input type="hidden" name="sesskey" value="<?php p($USER->sesskey) ?>"/>
<input type="hidden" name="action" value="excepts" />
<select name="members[]" size="15" multiple="multiple">
<?php
if (!empty($listmembers[$selectedgrade_item])) {
foreach ($listmembers[$selectedgrade_item] as $id => $membername) {
echo "<option value=\"$id\">$membername</option>";
}
}
?>
</select>
<p>
<input type="submit" name="membersremove" value="<?php p($strgradeitemremovemembers) ?>"
onclick="updategrade_item()" />
</p>
</form>
</td>
</tr>
</table>
<script type="text/javascript">
<!-- Begin
<?php
echo 'updateMembers('.$selectedgrade_item.');';
?>
//]]>
</script>
I hope this gets fixed! Please go vote for the issue in the tracker!
atw
I am using
moodle 1.8.2+ (2007021520)
How aggravating!atw
atw
But Thank you Anthony For working on this module.
susang
To vote for something in the tracker, you must first create an account IN the tracker site. It is not connected to your Moodle login. Once you log in there, find the issue you are interested in. You will see a small link on the left that says "vote for it!". This is how you can record your vote.
atw
So now that a "fixed" has been posted in tracker, I am not sure how to implement it. I do not have direct access to our Moodle server so I have to ask someone else to replace folders or files. I see in the GradebookPlus V2 folder that I originally downloaded that there are two files that pertain to exceptions. One is an .html file and the other .php extension. do they both get replaced or is there a better way.
Or is there a way from inside the database myphpadmin?
I keep trying to learn how to do as much of this as possible myself but my knowledge base is hit or miss on some things
Thanks for your help,
susang
They can both be at:
http://moodle.cvs.sourceforge.net/moodle/contrib/patches/gradebookplus_v2_1.7/exceptions.html?view=log&pathrev=MOODLE_18_STABLE
and
http://moodle.cvs.sourceforge.net/moodle/contrib/patches/gradebookplus_v2_1.7/lib.php?view=log&pathrev=MOODLE_18_STABLE
Peace - Anthony
I downloaded the most recent versions and still have the problem with graded_events not being correctly excluded. The regular grades exclude fine, just not the ones added through GBV2. Unfortunately, this is a favorite among most teachers. The groups dropdown also seems to not work on the exceptions tab.
So therefore, I am filing it in the Moodle Tracker as
http://tracker.moodle.org/browse/MDL-10904
atw
It actually seems to be adding a new column for a nameless assignment on the Edit Grades page. Under the nameless assignment, the exception is listed for the correct person, with no grades listed for anyone else. And the calculated grades don't change at all for anyone.
No one else has said anything like this on this thread, so I don't know what to make of it. Did the new exceptions.html file do the trick for anyone else, or is there still a GBv2 problem?
The GBPV2 graded items add needs to be changed slightly so that it is an actual module that matches up in the other table. It currently simply says it is modid 0 (which isn't in the table) instead of actually adding an activity type in the module table when it is initially created.
This is in the tracker as MDL-11491
replace line
$assgn = get_record($exception->modname, 'id', $exception->cminstance, 'course', $course->id);}
with
if ($exception->modid != 0) {
$assgn = get_record($exception->modname, 'id', $exception->cminstance, 'course', $course->id);}
else {
$assgn = get_record('grade_events', 'id', $exception->cminstance, 'course', $course->id);
}
This way the module name is manually inserted for a GBPV2 "grade_events" item and the $grades_by_students array syncs up and everythings is beautiful in the world again. BTW, I posted my changes in the mod "my moodle grades" which incorporates the fixes for GBPV2 along with the ability to have current grades displayed on the My Moodle page.