[LON-CAPA-cvs] cvs: loncom /interface londropadd.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 25 Sep 2002 16:16:19 -0000
This is a MIME encoded message
--matthew1032970579
Content-Type: text/plain
matthew Wed Sep 25 12:16:19 2002 EDT
Modified files:
/loncom/interface londropadd.pm
Log:
Sorting of classlist (case insensitive) implemented for all but drop classlist.
--matthew1032970579
Content-Type: text/plain
Content-Disposition: attachment; filename="matthew-20020925121619.txt"
Index: loncom/interface/londropadd.pm
diff -u loncom/interface/londropadd.pm:1.52 loncom/interface/londropadd.pm:1.53
--- loncom/interface/londropadd.pm:1.52 Tue Sep 24 14:24:43 2002
+++ loncom/interface/londropadd.pm Wed Sep 25 12:16:19 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to drop and add students in courses
#
-# $Id: londropadd.pm,v 1.52 2002/09/24 18:24:43 matthew Exp $
+# $Id: londropadd.pm,v 1.53 2002/09/25 16:16:19 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -773,9 +773,11 @@
} else {
# Print out the available choices
if ($ENV{'form.action'} eq 'modifystudent') {
- &show_class_list($r,'view','modify','any',$student_array,$student_data);
+ &show_class_list($r,'view','modify','modifystudent',
+ 'any',$student_array,$student_data);
} else {
- &show_class_list($r,'view','aboutme','any',$student_array,$student_data);
+ &show_class_list($r,'view','aboutme','classlist',
+ 'any',$student_array,$student_data);
}
}
}
@@ -794,8 +796,14 @@
# =================================================== Show student list to drop
sub show_class_list {
- my ($r,$mode,$linkto,$statusmode,$students,$student_data)=@_;
+ my ($r,$mode,$linkto,$action,$statusmode,$students,$s_data)=@_;
my $cid=$ENV{'request.course.id'};
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['sortby']);
+ my $sortby = $ENV{'form.sortby'};
+ if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
+ $sortby = 'username';
+ }
# Print out header
if ($mode eq 'view') {
if ($linkto eq 'aboutme') {
@@ -804,19 +812,37 @@
$r->print('Select a user name to modify the students information');
}
$r->print(<<END);
+<input type="hidden" name="sortby" value="$sortby" />
<p>
<table border=2>
-<tr><th>username</th><th>domain</th><th>ID</th>
- <th>student name</th><th>section</th></tr>
+<tr><th>
+ <a href="/adm/dropadd?action=$action&sortby=username">username</a>
+ </th><th>
+ <a href="/adm/dropadd?action=$action&sortby=domain">domain</a>
+ </th><th>
+ <a href="/adm/dropadd?action=$action&sortby=id">ID</a>
+ </th><th>
+ <a href="/adm/dropadd?action=$action&sortby=fullname">student name</a>
+ </th><th>
+ <a href="/adm/dropadd?action=$action&sortby=section">section</a>
+ </th>
+</tr>
END
} elsif ($mode eq 'csv') {
$r->print('"'.join('","',("username","domain","ID","student name",
"section")).'"'."\n");
}
- foreach my $student (@$students) {
+ my @Sorted_Students = sort {
+ lc($s_data->{$a.':'.$sortby}) cmp lc($s_data->{$b.':'.$sortby})
+ ||
+ lc($s_data->{$a.':username'}) cmp lc($s_data->{$b.':username'})
+ ||
+ lc($s_data->{$a.':domain'}) cmp lc($s_data->{$b.':domain'})
+ } @$students;
+ foreach my $student (@Sorted_Students) {
my $error;
- if (exists($student_data->{$student.':error'})) {
- $error = $student_data->{$student.':error'};
+ if (exists($s_data->{$student.':error'})) {
+ $error = $s_data->{$student.':error'};
}
if ($error) {
$r->print('<tr><td colspan="6">'.
@@ -826,12 +852,12 @@
', '.$error.'</td></tr>'."\n");
next;
}
- my $username = $student_data->{$student.':username'};
- my $domain = $student_data->{$student.':domain'};
- my $section = $student_data->{$student.':section'};
- my $name = $student_data->{$student.':fullname'};
- my $status = $student_data->{$student.':Status'};
- my $id = $student_data->{$student.':id'};
+ my $username = $s_data->{$student.':username'};
+ my $domain = $s_data->{$student.':domain'};
+ my $section = $s_data->{$student.':section'};
+ my $name = $s_data->{$student.':fullname'};
+ my $status = $s_data->{$student.':Status'};
+ my $id = $s_data->{$student.':id'};
next if (($statusmode ne 'any') && ($status ne $statusmode));
if ($mode eq 'view') {
$r->print("<tr>\n <td>\n ");
@@ -844,7 +870,8 @@
} elsif ($linkto eq 'modify') {
$r->print('<a href="/adm/dropadd?action=modifystudent'.
'&state=selected'.'&sname='.$username.
- '&sdom='.$domain.'">'.$username."</a>\n");
+ '&sdom='.$domain.'&sortby='.$sortby.'">'.
+ $username."</a>\n");
}
$r->print(<<"END");
</td>
@@ -876,10 +903,10 @@
sub print_modify_student_form {
my $r = shift();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['sdom','sname']);
-
- my $sname = $ENV{'form.sname'};
- my $sdom = $ENV{'form.sdom'};
+ ['sdom','sname','sortby']);
+ my $sname = $ENV{'form.sname'};
+ my $sdom = $ENV{'form.sdom'};
+ my $sortby = $ENV{'form.sortby'};
# determine the students name information
my %info=&Apache::lonnet::get('environment',
['firstname','middlename',
@@ -914,7 +941,8 @@
<input type="hidden" name="slogin" value="$sname" />
<input type="hidden" name="sdomain" value="$sdom" />
<input type="hidden" name="action" value="modifystudent" />
-<input type="hidden" name="state" value="done" />
+<input type="hidden" name="state" value="done" />
+<input type="hidden" name="sortby" value="$sortby" />
<h2>Modify Enrollment for $info{'firstname'} $info{'middlename'}
$info{'lastname'} $info{'generation'}, $sname\@$sdom</h2>
<p>
@@ -930,6 +958,10 @@
</p><p>
<b>Student ID</b>: <input type="text" name="id" value="$info{'id'}" size="12"/>
</p><p>
+<input type="checkbox" name="forceid" >
+Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
+(only do if you know what you are doing)
+</p><p>
<b>Section</b>: <input type="text" name="section" value="$section" size="4"/>
</p><p>
<table>
@@ -948,15 +980,33 @@
#
sub modify_single_student {
my $r = shift;
- # make sure user can modify student data?
+ # Get the 'sortby' variable so the user does not need to re-sort
+ my $sortby = $ENV{'form.sortby'};
+ #
+ # We always need this information
+ my $slogin = $ENV{'form.slogin'};
+ my $sdom = $ENV{'form.sdomain'};
+ #
+ # Get the old data
+ my %old=&Apache::lonnet::get('environment',
+ ['firstname','middlename',
+ 'lastname','generation','id'],
+ $sdom, $slogin);
+ my ($tmp) = keys(%old);
+ if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
+ $r->print("There was an error determining the environment values ".
+ " for $slogin \@ $sdom.");
+ return;
+ }
+ undef $tmp;
+ #
+ # Get the new data
my $firstname = $ENV{'form.firstname'};
my $middlename = $ENV{'form.middlename'};
my $lastname = $ENV{'form.lastname'};
my $generation = $ENV{'form.generation'};
my $section = $ENV{'form.section'};
my $courseid = $ENV{'request.course.id'};
- my $sname = $ENV{'form.slogin'};
- my $sdom = $ENV{'form.sdomain'};
my $sid = $ENV{'form.id'};
my $starttime = &Apache::lonhtmlcommon::get_date_from_form('startdate',
time);
@@ -964,15 +1014,46 @@
time);
my $displayable_starttime = localtime($starttime);
my $displayable_endtime = localtime($endtime);
+ #
+ # check for forceid override
+ if (($sid ne $old{'id'}) && (! exists($ENV{'form.forceid'}))) {
+ $r->print("<font color=\"ff0000\">You changed the students id ".
+ " but did not disable the ID change safeguard.".
+ " The students id will not be changed.</font>");
+ $sid = $old{'id'};
+ }
+ #
# talk to the user about what we are going to do
$r->print(<<END);
-<h2>Modifying data for user $sname \@ $sdom </h2>
+ <h2>Modifying data for user $slogin \@ $sdom </h2>
<h3>Student Information</h3>
-<table>
-<tr><td>First name </td><td> $firstname </td></tr>
-<tr><td>Middle name </td><td> $middlename </td></tr>
-<tr><td>Last name </td><td> $lastname </td></tr>
-<tr><td>Generation </td><td> $generation </td></tr>
+<table rules="rows" border="1" cellpadding="3" >
+<tr>
+ <th> Field </th>
+ <th> Old Value </th>
+ <th> New Value </th>
+</tr>
+<tr>
+ <td> <b>First name</b> </td>
+ <td> $old{'firstname'} </td>
+ <td> $firstname </td>
+</tr><tr>
+ <td> <b>Middle name</b> </td>
+ <td> $old{'middlename'} </td>
+ <td> $middlename </td>
+</tr><tr>
+ <td> <b>Last name</b> </td>
+ <td> $old{'lastname'} </td>
+ <td> $lastname </td>
+</tr><tr>
+ <td> <b>Generation</b> </td>
+ <td> $old{'generation'} </td>
+ <td> $generation </td>
+</tr><tr>
+ <td> <b>ID</b> </td>
+ <td> $old{'id'} </td>
+ <td> $sid </td>
+</tr>
</table>
<h3>Role Information</h3>
<table>
@@ -982,20 +1063,24 @@
</table>
<p>
END
+ #
# Send request(s) to modify data
- # The '1' in the call to modifystudent is to force the students
- # id to be changed.
my $roleresults = &Apache::lonnet::modifystudent
- ($sdom,$sname,$sid,undef,undef,$firstname,$middlename,$lastname,
- $generation,$section,$endtime,$starttime,1);
- if ($roleresults =~/refused/) {
+ ($sdom,$slogin,$sid,undef,undef,$firstname,$middlename,$lastname,
+ $generation,$section,$endtime,$starttime,$ENV{'form.forceid'});
+ if ($roleresults eq 'refused' ) {
$r->print("Your request to change the role information for this ".
- "student was refused.");
+ "student was refused. You do not appear to have ".
+ "sufficient authority to change student information.");
} elsif ($roleresults !~ /ok/) {
$r->print("An error occurred during the attempt to change the role".
" information for this student. <br />".
"The error reported was ".
$roleresults);
+ &Apache::lonnet::logthis("londropadd:failed attempt to modify student".
+ " data for ".$slogin." \@ ".$sdom." by ".
+ $ENV{'user.name'}." \@ ".$ENV{'user.domain'}.
+ ":".$roleresults);
} else { # everything is okay!
$r->print("Student information updated successfully. <br />".
"The student must log out and log in again to see ".
@@ -1003,7 +1088,7 @@
}
$r->print(<<END);
</p><p>
-<a href="/adm/dropadd?action=modifystudent">Modify another students data</a>
+<a href="/adm/dropadd?action=modifystudent&sortby=$sortby">Modify another students data</a>
</body></html>
END
return;
@@ -1044,7 +1129,7 @@
# =================================================== Show student list to drop
sub show_drop_list {
- my ($students,$student_data,$r)=@_;
+ my ($students,$s_data,$r)=@_;
my $cid=$ENV{'request.course.id'};
$r->print(<<'END');
<input type="hidden" name="action" value="drop" />
@@ -1068,8 +1153,8 @@
END
foreach my $student (@$students) {
my $error;
- if (exists($student_data->{$student.':error'})) {
- $error = $student_data->{$student.':error'};
+ if (exists($s_data->{$student.':error'})) {
+ $error = $s_data->{$student.':error'};
}
if ($error) {
$r->print('<tr><td colspan="6">'.
@@ -1079,12 +1164,12 @@
', '.$error.'</td></tr>'."\n");
next;
}
- my $username = $student_data->{$student.':username'};
- my $domain = $student_data->{$student.':domain'};
- my $section = $student_data->{$student.':section'};
- my $name = $student_data->{$student.':fullname'};
- my $status = $student_data->{$student.':Status'};
- my $id = $student_data->{$student.':id'};
+ my $username = $s_data->{$student.':username'};
+ my $domain = $s_data->{$student.':domain'};
+ my $section = $s_data->{$student.':section'};
+ my $name = $s_data->{$student.':fullname'};
+ my $status = $s_data->{$student.':Status'};
+ my $id = $s_data->{$student.':id'};
next if ($status ne 'Active');
#
$r->print(<<"END");
--matthew1032970579--