version 1.1197, 2014/07/27 11:39:36
|
version 1.1202, 2014/12/11 01:16:33
|
Line 3761 sub user_lang {
|
Line 3761 sub user_lang {
|
=over 4 |
=over 4 |
|
|
=item * &get_previous_attempt($symb, $username, $domain, $course, |
=item * &get_previous_attempt($symb, $username, $domain, $course, |
$getattempt, $regexp, $gradesub) |
$getattempt, $regexp, $gradesub, $usec, $identifier) |
|
|
Return string with previous attempt on problem. Arguments: |
Return string with previous attempt on problem. Arguments: |
|
|
Line 3783 Return string with previous attempt on p
|
Line 3783 Return string with previous attempt on p
|
|
|
=item * $gradesub: routine that processes the string if it matches $regexp |
=item * $gradesub: routine that processes the string if it matches $regexp |
|
|
|
=item * $usec: section of the desired student |
|
|
|
=item * $identifier: counter for student (multiple students one problem) or |
|
problem (one student; whole sequence). |
|
|
=back |
=back |
|
|
The output string is a table containing all desired attempts, if any. |
The output string is a table containing all desired attempts, if any. |
Line 3790 The output string is a table containing
|
Line 3795 The output string is a table containing
|
=cut |
=cut |
|
|
sub get_previous_attempt { |
sub get_previous_attempt { |
my ($symb,$username,$domain,$course,$getattempt,$regexp,$gradesub)=@_; |
my ($symb,$username,$domain,$course,$getattempt,$regexp,$gradesub,$usec,$identifier)=@_; |
my $prevattempts=''; |
my $prevattempts=''; |
no strict 'refs'; |
no strict 'refs'; |
if ($symb) { |
if ($symb) { |
Line 3806 sub get_previous_attempt {
|
Line 3811 sub get_previous_attempt {
|
} |
} |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts.='<th>'.&mt('History').'</th>'; |
$prevattempts.='<th>'.&mt('History').'</th>'; |
my (%typeparts,%lasthidden); |
my (%typeparts,%lasthidden,%regraded,%hidestatus); |
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my ($ign,@parts) = split(/\./,$key); |
my ($ign,@parts) = split(/\./,$key); |
Line 3823 sub get_previous_attempt {
|
Line 3828 sub get_previous_attempt {
|
$lasthidden{$ign.'.'.$id} = 1; |
$lasthidden{$ign.'.'.$id} = 1; |
} |
} |
} |
} |
|
if ($identifier ne '') { |
|
my $id = join(',',@parts); |
|
if (&Apache::lonnet::EXT("resource.$id.problemstatus",$symb, |
|
$domain,$username,$usec,undef,$course) =~ /^no/) { |
|
$hidestatus{$ign.'.'.$id} = 1; |
|
} |
|
} |
|
} elsif ($data eq 'regrader') { |
|
if (($identifier ne '') && (@parts)) { |
|
my $id = join(',',@parts); |
|
$regraded{$ign.'.'.$id} = 1; |
|
} |
} |
} |
} else { |
} else { |
if ($#parts == 0) { |
if ($#parts == 0) { |
Line 3834 sub get_previous_attempt {
|
Line 3851 sub get_previous_attempt {
|
} |
} |
$prevattempts.=&end_data_table_header_row(); |
$prevattempts.=&end_data_table_header_row(); |
if ($getattempt eq '') { |
if ($getattempt eq '') { |
|
my (%solved,%resets,%probstatus); |
|
if (($identifier ne '') && (keys(%regraded) > 0)) { |
|
for ($version=1;$version<=$returnhash{'version'};$version++) { |
|
foreach my $id (keys(%regraded)) { |
|
if (($returnhash{$version.':'.$id.'.regrader'}) && |
|
($returnhash{$version.':'.$id.'.tries'} eq '') && |
|
($returnhash{$version.':'.$id.'.award'} eq '')) { |
|
push(@{$resets{$id}},$version); |
|
} |
|
} |
|
} |
|
} |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
my @hidden; |
my (@hidden,@unsolved); |
if (%typeparts) { |
if (%typeparts) { |
foreach my $id (keys(%typeparts)) { |
foreach my $id (keys(%typeparts)) { |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || |
|
($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
push(@hidden,$id); |
push(@hidden,$id); |
|
} elsif ($identifier ne '') { |
|
unless (($returnhash{$version.':'.$id.'.type'} eq 'survey') || |
|
($returnhash{$version.':'.$id.'.type'} eq 'surveycred') || |
|
($hidestatus{$id})) { |
|
next if ((ref($resets{$id}) eq 'ARRAY') && grep(/^\Q$version\E$/,@{$resets{$id}})); |
|
if ($returnhash{$version.':'.$id.'.solved'} eq 'correct_by_student') { |
|
push(@{$solved{$id}},$version); |
|
} elsif (($returnhash{$version.':'.$id.'.solved'} ne '') && |
|
(ref($solved{$id}) eq 'ARRAY')) { |
|
my $skip; |
|
if (ref($resets{$id}) eq 'ARRAY') { |
|
foreach my $reset (@{$resets{$id}}) { |
|
if ($reset > $solved{$id}[-1]) { |
|
$skip=1; |
|
last; |
|
} |
|
} |
|
} |
|
unless ($skip) { |
|
my ($ign,$partslist) = split(/\./,$id,2); |
|
push(@unsolved,$partslist); |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
$prevattempts.=&start_data_table_row(). |
$prevattempts.=&start_data_table_row(). |
'<td>'.&mt('Transaction [_1]',$version).'</td>'; |
'<td>'.&mt('Transaction [_1]',$version); |
|
if (@unsolved) { |
|
$prevattempts .= '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="HIDE'.$identifier.'" value="'.$version.':'.join('_',@unsolved).'" />'. |
|
&mt('Hide').'</label></span>'; |
|
} |
|
$prevattempts .= '</td>'; |
if (@hidden) { |
if (@hidden) { |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
next if ($key =~ /\.foilorder$/); |
next if ($key =~ /\.foilorder$/); |
Line 4679 END_BLOCK
|
Line 4739 END_BLOCK
|
############################################### |
############################################### |
|
|
sub check_ip_acc { |
sub check_ip_acc { |
my ($acc)=@_; |
my ($acc,$clientip)=@_; |
&Apache::lonxml::debug("acc is $acc"); |
&Apache::lonxml::debug("acc is $acc"); |
if (!defined($acc) || $acc =~ /^\s*$/ || $acc =~/^\s*no\s*$/i) { |
if (!defined($acc) || $acc =~ /^\s*$/ || $acc =~/^\s*no\s*$/i) { |
return 1; |
return 1; |
} |
} |
my $allowed=0; |
my $allowed=0; |
my $ip=$env{'request.host'} || $ENV{'REMOTE_ADDR'}; |
my $ip=$env{'request.host'} || $ENV{'REMOTE_ADDR'} || $clientip; |
|
|
my $name; |
my $name; |
foreach my $pattern (split(',',$acc)) { |
foreach my $pattern (split(',',$acc)) { |
Line 8326 role status: active, previous or future.
|
Line 8386 role status: active, previous or future.
|
sub check_user_status { |
sub check_user_status { |
my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; |
my ($udom,$uname,$cdom,$crs,$role,$sec) = @_; |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
my @uroles = keys %userinfo; |
my @uroles = keys(%userinfo); |
my $srchstr; |
my $srchstr; |
my $active_chk = 'none'; |
my $active_chk = 'none'; |
my $now = time; |
my $now = time; |
Line 14968 sub build_filters {
|
Line 15028 sub build_filters {
|
$output .= '<input type="hidden" name="phase" value="courselist" />'."\n". |
$output .= '<input type="hidden" name="phase" value="courselist" />'."\n". |
'<input type="hidden" name="prevphase" value="'. |
'<input type="hidden" name="prevphase" value="'. |
$prevphase.'" />'."\n"; |
$prevphase.'" />'."\n"; |
} elsif ($formname ne 'quotacheck') { |
} elsif ($formname eq 'quotacheck') { |
|
$output .= qq| |
|
<input type="hidden" name="sortby" value="" /> |
|
<input type="hidden" name="sortorder" value="" /> |
|
|; |
|
} else { |
my $name_input; |
my $name_input; |
if ($cnameelement ne '') { |
if ($cnameelement ne '') { |
$name_input = '<input type="hidden" name="cnameelement" value="'. |
$name_input = '<input type="hidden" name="cnameelement" value="'. |
Line 15261 sub search_courses {
|
Line 15326 sub search_courses {
|
return %courses; |
return %courses; |
} |
} |
|
|
|
|
=pod |
=pod |
|
|
=back |
=back |