version 1.73, 2002/10/04 05:51:28
|
version 1.177, 2004/11/23 20:36:46
|
Line 56 package Apache::lonparmset;
|
Line 56 package Apache::lonparmset;
|
use strict; |
use strict; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::Constants qw(:common :http REDIRECT); |
use Apache::Constants qw(:common :http REDIRECT); |
|
use Apache::lonhtmlcommon(); |
use Apache::loncommon; |
use Apache::loncommon; |
use GDBM_File; |
use GDBM_File; |
use Apache::lonhomework; |
use Apache::lonhomework; |
use Apache::lonxml; |
use Apache::lonxml; |
|
use Apache::lonlocal; |
|
|
my %courseopt; |
my %courseopt; |
my %useropt; |
my %useropt; |
Line 72 my %mapp;
|
Line 73 my %mapp;
|
my %typep; |
my %typep; |
my %keyp; |
my %keyp; |
|
|
|
my %maptitles; |
|
|
my $uname; |
my $uname; |
my $udom; |
my $udom; |
my $uhome; |
my $uhome; |
Line 96 Returns: A list, the first item is the
|
Line 99 Returns: A list, the first item is the
|
11- resource default |
11- resource default |
10- map default |
10- map default |
9 - General Course |
9 - General Course |
8 - Map level in course |
8 - Map or Folder level in course |
7 - resource level in course |
7 - resource level in course |
6 - General for section |
6 - General for section |
5 - Map level for section |
5 - Map or Folder level for section |
4 - resource level in section |
4 - resource level in section |
3 - General for specific student |
3 - General for specific student |
2 - Map level for specific student |
2 - Map or Folder level for specific student |
1 - resource level for specific student |
1 - resource level for specific student |
|
|
=cut |
=cut |
Line 128 sub parmval {
|
Line 131 sub parmval {
|
|
|
# -------------------------------------------------------- first, check default |
# -------------------------------------------------------- first, check default |
|
|
if ($def) { $outpar[11]=$def; $result=11; } |
if (defined($def)) { $outpar[11]=$def; $result=11; } |
|
|
# ----------------------------------------------------- second, check map parms |
# ----------------------------------------------------- second, check map parms |
|
|
my $thisparm=$parmhash{$symbparm}; |
my $thisparm=$parmhash{$symbparm}; |
if ($thisparm) { $outpar[10]=$thisparm; $result=10; } |
if (defined($thisparm)) { $outpar[10]=$thisparm; $result=10; } |
|
|
# --------------------------------------------------------- third, check course |
# --------------------------------------------------------- third, check course |
|
|
Line 282 sub plink {
|
Line 285 sub plink {
|
|
|
|
|
sub startpage { |
sub startpage { |
my ($r,$id,$udom,$csec,$uname)=@_; |
my ($r,$id,$udom,$csec,$uname,$have_assesments,$trimheader)=@_; |
$r->content_type('text/html'); |
|
$r->send_http_header; |
my $bodytag=&Apache::loncommon::bodytag('Set/Modify Course Parameters','', |
|
|
my $bodytag=&Apache::loncommon::bodytag('Set Course Parameters','', |
|
'onUnload="pclose()"'); |
'onUnload="pclose()"'); |
|
my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. |
|
&Apache::loncommon::selectstudent_link('parmform','uname','udom'); |
|
my $selscript=&Apache::loncommon::studentbrowser_javascript(); |
|
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
|
my %lt=&Apache::lonlocal::texthash( |
|
'cep' => "Course Environment Parameters", |
|
'scep' => "Set Course Environment Parameters", |
|
'smcap' => "Set/Modify Course Assessment Parameter", |
|
'mcap' => "Modify Course Assessment Parameters", |
|
'caphm' => "Course Assessment Parameter - Helper Mode", |
|
'capom' => "Course Assessment Parameters - Overview Mode", |
|
'captm' => "Course Assessments Parameters - Table Mode", |
|
'sg' => "Section/Group", |
|
'fu' => "For User", |
|
'oi' => "or ID", |
|
'ad' => "at Domain" |
|
); |
|
my $overallhelp= |
|
&Apache::loncommon::help_open_menu('','Setting Parameters','Course_Setting_Parameters','',10,'Instructor Interface'); |
|
my $assessparmhelp=&Apache::loncommon::help_open_topic("Cascading_Parameters","Assessment Parameters"); |
$r->print(<<ENDHEAD); |
$r->print(<<ENDHEAD); |
<html> |
<html> |
<head> |
<head> |
Line 300 sub startpage {
|
Line 321 sub startpage {
|
parmwin.close(); |
parmwin.close(); |
} |
} |
|
|
function pjump(type,dis,value,marker,ret,call) { |
$pjump_def |
document.parmform.pres_marker.value=''; |
|
parmwin=window.open("/adm/rat/parameter.html?type="+escape(type) |
|
+"&value="+escape(value)+"&marker="+escape(marker) |
|
+"&return="+escape(ret) |
|
+"&call="+escape(call)+"&name="+escape(dis),"LONCAPAparms", |
|
"height=350,width=350,scrollbars=no,menubar=no"); |
|
|
|
} |
|
|
|
function psub() { |
function psub() { |
pclose(); |
pclose(); |
Line 341 sub startpage {
|
Line 354 sub startpage {
|
newWin.focus(); |
newWin.focus(); |
} |
} |
</script> |
</script> |
|
$selscript |
</head> |
</head> |
$bodytag |
$bodytag |
|
$overallhelp |
|
ENDHEAD |
|
|
|
unless ($trimheader) {$r->print(<<ENDHEAD2); |
<form method="post" action="/adm/parmset" name="envform"> |
<form method="post" action="/adm/parmset" name="envform"> |
<h3>Course Environment</h3> |
<h4>$lt{'cep'}</h4> |
<input type="submit" name="crsenv" value="Set Course Environment"> |
<input type="submit" name="crsenv" value="$lt{'scep'}" /> |
|
</form> |
|
<hr /> |
|
$assessparmhelp |
|
<form method="post" action="/adm/helper/parameter.helper" name="helpform"> |
|
<h4>$lt{'caphm'}</h4> |
|
<input type="submit" value="$lt{'smcap'}" /> |
</form> |
</form> |
|
<hr /> |
|
<form method="post" action="/adm/parmset" name="overview"> |
|
<h4>$lt{'capom'}</h4> |
|
<input type="submit" name="overview" value="$lt{'mcap'}" /> |
|
</form> |
|
<hr /> |
|
ENDHEAD2 |
|
} |
|
$r->print(<<ENDHEAD3); |
<form method="post" action="/adm/parmset" name="parmform"> |
<form method="post" action="/adm/parmset" name="parmform"> |
<h3>Course Assessments</h3> |
<h4>$lt{'captm'}</h4> |
|
ENDHEAD3 |
|
|
|
if (!$have_assesments) { |
|
$r->print('<font color="red">'.&mt('There are no assesment parameters in this course to set.').'</font><br />'); |
|
} else { |
|
$r->print(<<ENDHEAD); |
<b> |
<b> |
Section/Group: |
$lt{'sg'}: |
<input type="text" value="$csec" size="6" name="csec"> |
<input type="text" value="$csec" size="6" name="csec"> |
<br> |
<br> |
For User |
$lt{'fu'} |
<input type="text" value="$uname" size="12" name="uname"> |
<input type="text" value="$uname" size="12" name="uname"> |
or ID |
$lt{'oi'} |
<input type="text" value="$id" size="12" name="id"> |
<input type="text" value="$id" size="12" name="id"> |
at Domain |
$lt{'ad'} |
<input type="text" value="$udom" size="6" name="udom"> |
$chooseopt |
</b> |
</b> |
<input type="hidden" value='' name="pres_value"> |
<input type="hidden" value='' name="pres_value"> |
<input type="hidden" value='' name="pres_type"> |
<input type="hidden" value='' name="pres_type"> |
<input type="hidden" value='' name="pres_marker"> |
<input type="hidden" value='' name="pres_marker"> |
ENDHEAD |
ENDHEAD |
|
} |
} |
} |
|
|
sub print_row { |
sub print_row { |
Line 456 sub print_row {
|
Line 495 sub print_row {
|
} # end of $brief if/else |
} # end of $brief if/else |
} # end of $parmlev if/else |
} # end of $parmlev if/else |
|
|
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
$r->print('<td bgcolor=#CCCCFF align="center">'. |
$r->print('<td bgcolor=#CCCCFF align="center">'. |
|
&valout($outpar[$result],$typeoutpar[$result]).'</td>'); |
&valout($outpar[$result],$typeoutpar[$result]).'</td>'); |
} |
|
my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
|
my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
'.'.$$name{$which},$symbp{$rid}); |
'.'.$$name{$which},$symbp{$rid}); |
|
|
# this doesn't seem to work, and I don't think is correct |
# this doesn't seem to work, and I don't think is correct |
# my $sessionvaltype=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
# my $sessionvaltype=&Apache::lonnet::EXT('resource.'.$$part{$which}. |
# '.'.$$name{$which}.'.type',$symbp{$rid}); |
# '.'.$$name{$which}.'.type',$symbp{$rid}); |
# this seems to work |
# this seems to work |
my $sessionvaltype=$typeoutpar[$result]; |
my $sessionvaltype=$typeoutpar[$result]; |
if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; } |
if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; } |
$r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'. |
$r->print('<td bgcolor=#999999 align="center"><font color=#FFFFFF>'. |
&valout($sessionval,$sessionvaltype).' '. |
&valout($sessionval,$sessionvaltype).' '. |
'</font></td>'); |
'</font></td>'); |
|
} |
$r->print('</tr>'); |
$r->print('</tr>'); |
$r->print("\n"); |
$r->print("\n"); |
} |
} |
Line 478 sub print_row {
|
Line 519 sub print_row {
|
sub print_td { |
sub print_td { |
my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display)=@_; |
my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display)=@_; |
$r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg). |
$r->print('<td bgcolor='.(($result==$which)?'"#AAFFAA"':$defbg). |
' align="center">'. |
' align="center">'); |
&plink($$typeoutpar[$which],$$display{$value},$$outpar[$which], |
if ($which<10) { |
$mprefix."$which",'parmform.pres','psub').'</td>'."\n"); |
$r->print(&plink($$typeoutpar[$which], |
} |
$$display{$value},$$outpar[$which], |
|
$mprefix."$which",'parmform.pres','psub')); |
sub get_env_multiple { |
} else { |
my ($name) = @_; |
$r->print(&valout($$outpar[$which],$$typeoutpar[$which])); |
my @values; |
|
if (defined($ENV{$name})) { |
|
# exists is it an array |
|
if (ref($ENV{$name})) { |
|
@values=@{ $ENV{$name} }; |
|
} else { |
|
$values[0]=$ENV{$name}; |
|
} |
|
} |
} |
return(@values); |
$r->print('</td>'."\n"); |
} |
} |
|
|
=pod |
=pod |
Line 509 Input: See list below:
|
Line 542 Input: See list below:
|
|
|
=item B<typep>: hash, id->type, where "type" contains the extension of the file, thus, I<problem exam quiz assess survey form>. |
=item B<typep>: hash, id->type, where "type" contains the extension of the file, thus, I<problem exam quiz assess survey form>. |
|
|
=item B<keyp>: hash, id->key list, will contain a comma seperated list of the meta-data keys available for the given id |
=item B<keyp>: hash, id->key list, will contain a comma separated list of the meta-data keys available for the given id |
|
|
=item B<allparms>: hash, name of parameter->display value (what is the display value?) |
=item B<allparms>: hash, name of parameter->display value (what is the display value?) |
|
|
Line 544 sub extractResourceInformation {
|
Line 577 sub extractResourceInformation {
|
my $defp = shift; |
my $defp = shift; |
my $mapp = shift; |
my $mapp = shift; |
my $symbp = shift; |
my $symbp = shift; |
|
my $maptitles=shift; |
|
|
foreach (keys %$bighash) { |
foreach (keys %$bighash) { |
if ($_=~/^src\_(\d+)\.(\d+)$/) { |
if ($_=~/^src\_(\d+)\.(\d+)$/) { |
|
# there are no resources in the 0 level |
|
if ($1 eq '0') { next; } |
my $mapid=$1; |
my $mapid=$1; |
my $resid=$2; |
my $resid=$2; |
my $id=$mapid.'.'.$resid; |
my $id=$mapid.'.'.$resid; |
my $srcf=$$bighash{$_}; |
my $srcf=$$bighash{$_}; |
if ($srcf=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
if (1) { |
|
$srcf=~/\.(\w+)$/; |
$$ids[$#$ids+1]=$id; |
$$ids[$#$ids+1]=$id; |
$$typep{$id}=$1; |
$$typep{$id}=$1; |
$$keyp{$id}=''; |
$$keyp{$id}=''; |
Line 560 sub extractResourceInformation {
|
Line 597 sub extractResourceInformation {
|
my $key=$_; |
my $key=$_; |
my $allkey=$1; |
my $allkey=$1; |
$allkey=~s/\_/\./g; |
$allkey=~s/\_/\./g; |
|
if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq |
|
'parm') { |
|
next; #hide hidden things |
|
} |
my $display= &Apache::lonnet::metadata($srcf,$key.'.display'); |
my $display= &Apache::lonnet::metadata($srcf,$key.'.display'); |
my $name=&Apache::lonnet::metadata($srcf,$key.'.name'); |
my $name=&Apache::lonnet::metadata($srcf,$key.'.name'); |
my $part= &Apache::lonnet::metadata($srcf,$key.'.part'); |
my $part= &Apache::lonnet::metadata($srcf,$key.'.part'); |
Line 584 sub extractResourceInformation {
|
Line 625 sub extractResourceInformation {
|
&Apache::lonnet::declutter($$bighash{'map_id_'.$mapid}); |
&Apache::lonnet::declutter($$bighash{'map_id_'.$mapid}); |
$$mapp{$mapid}=$$mapp{$id}; |
$$mapp{$mapid}=$$mapp{$id}; |
$$allmaps{$mapid}=$$mapp{$id}; |
$$allmaps{$mapid}=$$mapp{$id}; |
|
if ($mapid eq '1') { |
|
$$maptitles{$mapid}='Main Course Documents'; |
|
} else { |
|
$$maptitles{$mapid}= |
|
$$bighash{'title_'.$$bighash{'ids_'.&Apache::lonnet::clutter($$mapp{$id})}}; |
|
} |
|
$$maptitles{$$mapp{$id}}=$$maptitles{$mapid}; |
$$symbp{$id}=$$mapp{$id}. |
$$symbp{$id}=$$mapp{$id}. |
'___'.$resid.'___'. |
'___'.$resid.'___'. |
&Apache::lonnet::declutter($srcf); |
&Apache::lonnet::declutter($srcf); |
Line 627 sub assessparms {
|
Line 675 sub assessparms {
|
|
|
my $r=shift; |
my $r=shift; |
# -------------------------------------------------------- Variable declaration |
# -------------------------------------------------------- Variable declaration |
my %allkeys; |
my %allkeys=(); |
my %allmaps; |
my %allmaps=(); |
my %alllevs; |
my %alllevs=(); |
|
|
$alllevs{'Resource Level'}='full'; |
$alllevs{'Resource Level'}='full'; |
# $alllevs{'Resource Level [BRIEF]'}='brief'; |
# $alllevs{'Resource Level [BRIEF]'}='brief'; |
Line 651 sub assessparms {
|
Line 699 sub assessparms {
|
my $message=''; |
my $message=''; |
|
|
$csec=$ENV{'form.csec'}; |
$csec=$ENV{'form.csec'}; |
$udom=$ENV{'form.udom'}; |
if ($udom=$ENV{'form.udom'}) { |
unless ($udom) { $udom=$r->dir_config('lonDefDomain'); } |
} elsif ($udom=$ENV{'request.role.domain'}) { |
|
} elsif ($udom=$ENV{'user.domain'}) { |
|
} else { |
|
$udom=$r->dir_config('lonDefDomain'); |
|
} |
|
|
my @pscat=&get_env_multiple('form.pscat'); |
my @pscat=&Apache::loncommon::get_env_multiple('form.pscat'); |
my $pschp=$ENV{'form.pschp'}; |
my $pschp=$ENV{'form.pschp'}; |
my @psprt=&get_env_multiple('form.psprt'); |
my @psprt=&Apache::loncommon::get_env_multiple('form.psprt'); |
|
if (!@psprt) { $psprt[0]='0'; } |
my $showoptions=$ENV{'form.showoptions'}; |
my $showoptions=$ENV{'form.showoptions'}; |
|
|
my $pssymb=''; |
my $pssymb=''; |
my $parmlev=''; |
my $parmlev=''; |
|
my $trimheader=''; |
my $prevvisit=$ENV{'form.prevvisit'}; |
my $prevvisit=$ENV{'form.prevvisit'}; |
|
|
# unless ($parmlev==$ENV{'form.parmlev'}) { |
# unless ($parmlev==$ENV{'form.parmlev'}) { |
Line 680 sub assessparms {
|
Line 734 sub assessparms {
|
my $url=$ENV{'form.url'}; |
my $url=$ENV{'form.url'}; |
$url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
$url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
$pssymb=&Apache::lonnet::symbread($url); |
$pssymb=&Apache::lonnet::symbread($url); |
@pscat='all'; |
if (!@pscat) { @pscat=('all'); } |
$pschp=''; |
$pschp=''; |
$parmlev = 'full'; |
$parmlev = 'full'; |
|
$trimheader='yes'; |
} elsif ($ENV{'form.symb'}) { |
} elsif ($ENV{'form.symb'}) { |
$pssymb=$ENV{'form.symb'}; |
$pssymb=$ENV{'form.symb'}; |
@pscat='all'; |
if (!@pscat) { @pscat=('all'); } |
$pschp=''; |
$pschp=''; |
$parmlev = 'full'; |
$parmlev = 'full'; |
|
$trimheader='yes'; |
} else { |
} else { |
$ENV{'form.url'}=''; |
$ENV{'form.url'}=''; |
} |
} |
Line 699 sub assessparms {
|
Line 755 sub assessparms {
|
$id=''; |
$id=''; |
} else { |
} else { |
$message= |
$message= |
"<font color=red>Unknown ID '$id' at domain '$udom'</font>"; |
"<font color=red>".&mt("Unknown ID")." '$id' ". |
|
&mt('at domain')." '$udom'</font>"; |
} |
} |
} else { |
} else { |
$uname=$ENV{'form.uname'}; |
$uname=$ENV{'form.uname'}; |
Line 710 sub assessparms {
|
Line 767 sub assessparms {
|
$uhome=&Apache::lonnet::homeserver($uname,$udom); |
$uhome=&Apache::lonnet::homeserver($uname,$udom); |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
$message= |
$message= |
"<font color=red>Unknown user '$uname' at domain '$udom'</font>"; |
"<font color=red>".&mt("Unknown user")." '$uname' ". |
|
&mt("at domain")." '$udom'</font>"; |
$uname=''; |
$uname=''; |
} else { |
} else { |
$csec=&Apache::lonnet::usection($udom,$uname, |
$csec=&Apache::lonnet::getsection($udom,$uname, |
$ENV{'request.course.id'}); |
$ENV{'request.course.id'}); |
if ($csec eq '-1') { |
if ($csec eq '-1') { |
$message="<font color=red>". |
$message="<font color=red>". |
"User '$uname' at domain '$udom' not ". |
&mt("User")." '$uname' ".&mt("at domain")." '$udom' ". |
"in this course</font>"; |
&mt("not in this course")."</font>"; |
$uname=''; |
$uname=''; |
$csec=$ENV{'form.csec'}; |
$csec=$ENV{'form.csec'}; |
} else { |
} else { |
my %name=&Apache::lonnet::userenvironment($udom,$uname, |
my %name=&Apache::lonnet::userenvironment($udom,$uname, |
('firstname','middlename','lastname','generation','id')); |
('firstname','middlename','lastname','generation','id')); |
$message="\n<p>\nFull Name: ". |
$message="\n<p>\n".&mt("Full Name").": ". |
$name{'firstname'}.' '.$name{'middlename'}.' ' |
$name{'firstname'}.' '.$name{'middlename'}.' ' |
.$name{'lastname'}.' '.$name{'generation'}. |
.$name{'lastname'}.' '.$name{'generation'}. |
"<br>\nID: ".$name{'id'}.'<p>'; |
"<br>\n".&mt('ID').": ".$name{'id'}.'<p>'; |
} |
} |
} |
} |
} |
} |
Line 750 sub assessparms {
|
Line 808 sub assessparms {
|
} |
} |
|
|
# --------------------------------------------------------- Get all assessments |
# --------------------------------------------------------- Get all assessments |
extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp); |
extractResourceInformation(\%bighash, \@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp,\%maptitles); |
|
|
$mapp{'0.0'} = ''; |
$mapp{'0.0'} = ''; |
$symbp{'0.0'} = ''; |
$symbp{'0.0'} = ''; |
|
|
# ---------------------------------------------------------- Anything to store? |
# ---------------------------------------------------------- Anything to store? |
if ($ENV{'form.pres_marker'}) { |
if ($ENV{'form.pres_marker'}) { |
my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'}); |
my ($sresid,$spnam,$snum)=split(/\&/,$ENV{'form.pres_marker'}); |
Line 779 sub assessparms {
|
Line 838 sub assessparms {
|
if ($snum==5) { $storeunder=$seclevelm; } |
if ($snum==5) { $storeunder=$seclevelm; } |
if ($snum==4) { $storeunder=$seclevelr; } |
if ($snum==4) { $storeunder=$seclevelr; } |
|
|
|
my $delete; |
|
if ($ENV{'form.pres_value'} eq '') { $delete=1;} |
my %storecontent = ($storeunder => $ENV{'form.pres_value'}, |
my %storecontent = ($storeunder => $ENV{'form.pres_value'}, |
$storeunder.'.type' => $ENV{'form.pres_type'}); |
$storeunder.'.type' => $ENV{'form.pres_type'}); |
my $reply=''; |
my $reply=''; |
Line 795 sub assessparms {
|
Line 856 sub assessparms {
|
&Apache::lonnet::expirespread('','','assesscalc'); |
&Apache::lonnet::expirespread('','','assesscalc'); |
} |
} |
# Store parameter |
# Store parameter |
$reply=&Apache::lonnet::cput |
if ($delete) { |
('resourcedata',\%storecontent, |
$reply=&Apache::lonnet::del |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
('resourcedata',[keys(%storecontent)], |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
|
} else { |
|
$reply=&Apache::lonnet::cput |
|
('resourcedata',\%storecontent, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
|
} |
} else { |
} else { |
# ------------------------------------------------------------------ Store User |
# ------------------------------------------------------------------ Store User |
# |
# |
Line 814 sub assessparms {
|
Line 882 sub assessparms {
|
&Apache::lonnet::expirespread($uname,$udom,'assesscalc'); |
&Apache::lonnet::expirespread($uname,$udom,'assesscalc'); |
} |
} |
# Store parameter |
# Store parameter |
$reply=&Apache::lonnet::cput |
if ($delete) { |
('resourcedata',\%storecontent,$udom,$uname); |
$reply=&Apache::lonnet::del |
|
('resourcedata',[keys(%storecontent)],$udom,$uname); |
|
} else { |
|
$reply=&Apache::lonnet::cput |
|
('resourcedata',\%storecontent,$udom,$uname); |
|
} |
} |
} |
|
|
if ($reply=~/^error\:(.*)/) { |
if ($reply=~/^error\:(.*)/) { |
$message.="<font color=red>Write Error: $1</font>"; |
$message.="<font color=red>Write Error: $1</font>"; |
} |
} |
# ---------------------------------------------------------------- Done storing |
# ---------------------------------------------------------------- Done storing |
|
$message.='<h3>'.&mt('Changes can take up to 10 minutes before being active for all students.').&Apache::loncommon::help_open_topic('Caching').'</h3>'; |
} |
} |
# --------------------------------------------- Devalidate cache for this child |
# --------------------------------------------- Devalidate cache for this child |
&Apache::lonnet::devalidatecourseresdata( |
&Apache::lonnet::devalidatecourseresdata( |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}); |
|
&Apache::lonnet::clear_EXT_cache_status(); |
# -------------------------------------------------------------- Get coursedata |
# -------------------------------------------------------------- Get coursedata |
%courseopt = &Apache::lonnet::dump |
%courseopt = &Apache::lonnet::dump |
('resourcedata', |
('resourcedata', |
Line 855 sub assessparms {
|
Line 930 sub assessparms {
|
if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);} |
if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);} |
# ------------------------------------------------------------------ Start page |
# ------------------------------------------------------------------ Start page |
|
|
&startpage($r,$id,$udom,$csec,$uname); |
my $have_assesments=1; |
|
if (scalar(keys(%allkeys)) eq 0) { $have_assesments=0; } |
|
|
|
&startpage($r,$id,$udom,$csec,$uname,$have_assesments,$trimheader); |
|
|
|
if (!$have_assesments) { |
|
untie(%bighash); |
|
untie(%parmhash); |
|
return ''; |
|
} |
# if ($ENV{'form.url'}) { |
# if ($ENV{'form.url'}) { |
# $r->print('<input type="hidden" value="'.$ENV{'form.url'}. |
# $r->print('<input type="hidden" value="'.$ENV{'form.url'}. |
# '" name="url"><input type="hidden" name="command" value="set">'); |
# '" name="url"><input type="hidden" name="command" value="set">'); |
Line 870 sub assessparms {
|
Line 954 sub assessparms {
|
|
|
$r->print('<h2>'.$message.'</h2><table>'); |
$r->print('<h2>'.$message.'</h2><table>'); |
|
|
$r->print('<tr><td><hr /></td></tr>'); |
my $submitmessage = &mt('Update Section or Specific User'); |
|
|
my $submitmessage; |
|
if (($prevvisit) || ($pschp) || ($pssymb)) { |
|
$submitmessage = "Update Display"; |
|
} else { |
|
$submitmessage = "Display"; |
|
} |
|
if (!$pssymb) { |
if (!$pssymb) { |
$r->print('<tr><td>Select Parameter Level</td><td>'); |
$r->print('<tr><td>'.&mt('Select Parameter Level'). |
|
&Apache::loncommon::help_open_topic('Course_Parameter_Levels'). |
|
'</td><td colspan="2">'); |
$r->print('<select name="parmlev">'); |
$r->print('<select name="parmlev">'); |
foreach (reverse sort keys %alllevs) { |
foreach (reverse sort keys %alllevs) { |
$r->print('<option value="'.$alllevs{$_}.'"'); |
$r->print('<option value="'.$alllevs{$_}.'"'); |
Line 889 sub assessparms {
|
Line 968 sub assessparms {
|
$r->print('>'.$_.'</option>'); |
$r->print('>'.$_.'</option>'); |
} |
} |
$r->print("</select></td>\n"); |
$r->print("</select></td>\n"); |
|
|
$r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>'); |
|
|
|
$r->print('</tr><tr><td><hr /></td>'); |
$r->print('</tr>'); |
|
if ($parmlev ne 'general') { |
$r->print('<tr><td>Select Enclosing Map</td>'); |
$r->print('<tr><td>'.&mt('Select Enclosing Map or Folder').'</td>'); |
$r->print('<td colspan="2"><select name="pschp">'); |
$r->print('<td colspan="2"><select name="pschp">'); |
$r->print('<option value="all">All Maps</option>'); |
$r->print('<option value="all">'.&mt('All Maps or Folders').'</option>'); |
foreach (sort {$allmaps{$a} cmp $allmaps{$b}} keys %allmaps) { |
foreach (sort {$allmaps{$a} cmp $allmaps{$b}} keys %allmaps) { |
$r->print('<option value="'.$_.'"'); |
$r->print('<option value="'.$_.'"'); |
if (($pschp eq $_)) { $r->print(' selected'); } |
if (($pschp eq $_)) { $r->print(' selected'); } |
$r->print('>/res/'.$allmaps{$_}.'</option>'); |
$r->print('>'.$maptitles{$_}.($allmaps{$_}!~/^uploaded/?' ['.$allmaps{$_}.']':'').'</option>'); |
} |
} |
$r->print("</select></td></tr>\n"); |
$r->print("</select></td></tr>\n"); |
|
} |
} else { |
} else { |
my ($map,$id,$resource)=split(/___/,$pssymb); |
my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb); |
$r->print("<tr><td>Specific Resource</td><td>$resource</td>"); |
$r->print("<tr><td>".&mt('Specific Resource')."</td><td>$resource</td>"); |
$r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>'); |
$r->print('<td><input type="submit" name="dis" value="'.$submitmessage.'"></td>'); |
$r->print('</tr>'); |
$r->print('</tr>'); |
$r->print('<input type="hidden" value="'.$pssymb.'" name="symb">'); |
$r->print('<input type="hidden" value="'.$pssymb.'" name="symb">'); |
Line 913 sub assessparms {
|
Line 991 sub assessparms {
|
|
|
$r->print('<tr><td colspan="3"><hr /><input type="checkbox"'); |
$r->print('<tr><td colspan="3"><hr /><input type="checkbox"'); |
if ($showoptions eq 'show') {$r->print(" checked ");} |
if ($showoptions eq 'show') {$r->print(" checked ");} |
$r->print(' name="showoptions" value="show" onclick="form.submit();">Show More Options<hr /></td></tr>'); |
$r->print(' name="showoptions" value="show">'.&mt('Show More Options').'<hr /></td></tr>'); |
# $r->print("<tr><td>Show: $showoptions</td></tr>"); |
# $r->print("<tr><td>Show: $showoptions</td></tr>"); |
# $r->print("<tr><td>pscat: @pscat</td></tr>"); |
# $r->print("<tr><td>pscat: @pscat</td></tr>"); |
# $r->print("<tr><td>psprt: @psprt</td></tr>"); |
# $r->print("<tr><td>psprt: @psprt</td></tr>"); |
Line 922 sub assessparms {
|
Line 1000 sub assessparms {
|
if ($showoptions eq 'show') { |
if ($showoptions eq 'show') { |
my $tempkey; |
my $tempkey; |
|
|
$r->print('<tr><td colspan="3" align="center">Select Parameters to View</td></tr>'); |
$r->print('<tr><td colspan="3" align="center">'.&mt('Select Parameters to View').'</td></tr>'); |
|
|
$r->print('<tr><td colspan="2"><table>'); |
|
$r->print('<tr><td><input type="checkbox" name="pscat" value="all"'); |
|
$r->print(' checked') unless (@pscat); |
|
$r->print('>All Parameters</td>'); |
|
|
|
|
$r->print('<tr><td colspan="2"><table><tr>'); |
my $cnt=0; |
my $cnt=0; |
|
|
foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} } |
foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} } |
keys %allparms ) { |
keys %allparms ) { |
++$cnt; |
++$cnt; |
$r->print('</tr><tr>') unless ($cnt%2); |
$r->print('</tr><tr>') if ($cnt%2); |
$r->print('<td><input type="checkbox" name="pscat" '); |
$r->print('<td><input type="checkbox" name="pscat" '); |
$r->print('value="'.$tempkey.'"'); |
$r->print('value="'.$tempkey.'"'); |
if ($pscat[0] eq "all" || grep $_ eq $tempkey, @pscat) { |
if ($pscat[0] eq "all" || grep $_ eq $tempkey, @pscat) { |
$r->print(' checked'); |
$r->print(' checked'); |
} |
} |
$r->print('>'.$allparms{$tempkey}.'</td>'); |
$r->print('>'.$allparms{$tempkey}.'</td>'); |
|
} |
|
$r->print(' |
|
</tr><tr><td> |
|
<script type="text/javascript"> |
|
function checkall(value, checkName) { |
|
for (i=0; i<document.forms.parmform.elements.length; i++) { |
|
ele = document.forms.parmform.elements[i]; |
|
if (ele.name == checkName) { |
|
document.forms.parmform.elements[i].checked=value; |
|
} |
} |
} |
|
} |
|
</script> |
|
<input type="button" onclick="checkall(true, \'pscat\')" value="Select All" /> |
|
</td><td> |
|
<input type="button" onclick="checkall(false, \'pscat\')" value="Unselect All" /> |
|
</td> |
|
'); |
$r->print('</tr></table>'); |
$r->print('</tr></table>'); |
|
|
# $r->print('<tr><td>Select Parts</td><td>'); |
# $r->print('<tr><td>Select Parts</td><td>'); |
$r->print('<td><select multiple name="psprt" size="5">'); |
$r->print('<td><select multiple name="psprt" size="5">'); |
$r->print('<option value="all"'); |
$r->print('<option value="all"'); |
$r->print(' selected') unless (@psprt); |
$r->print(' selected') unless (@psprt); |
$r->print('>All Parts</option>'); |
$r->print('>'.&mt('All Parts').'</option>'); |
|
my %temphash=(); |
|
foreach (@psprt) { $temphash{$_}=1; } |
foreach $tempkey (sort keys %allparts) { |
foreach $tempkey (sort keys %allparts) { |
unless ($tempkey =~ /\./) { |
unless ($tempkey =~ /\./) { |
$r->print('<option value="'.$tempkey.'"'); |
$r->print('<option value="'.$tempkey.'"'); |
if ($psprt[0] eq "all" || grep $_ == $tempkey, @psprt) { |
if ($psprt[0] eq "all" || $temphash{$tempkey}) { |
$r->print(' selected'); |
$r->print(' selected'); |
} |
} |
$r->print('>'.$allparts{$tempkey}.'</option>'); |
$r->print('>'.$allparts{$tempkey}.'</option>'); |
Line 960 sub assessparms {
|
Line 1052 sub assessparms {
|
} |
} |
$r->print('</select></td></tr><tr><td colspan="3"><hr /></td></tr>'); |
$r->print('</select></td></tr><tr><td colspan="3"><hr /></td></tr>'); |
|
|
$r->print('<tr><td>Sort list by</td><td>'); |
$r->print('<tr><td>'.&mt('Sort list by').'</td><td>'); |
$r->print('<select name="fcat">'); |
$r->print('<select name="fcat">'); |
$r->print('<option value="">Enclosing Map</option>'); |
$r->print('<option value="">'.&mt('Enclosing Map or Folder').'</option>'); |
foreach (sort keys %allkeys) { |
foreach (sort keys %allkeys) { |
$r->print('<option value="'.$_.'"'); |
$r->print('<option value="'.$_.'"'); |
if ($fcat eq $_) { $r->print(' selected'); } |
if ($fcat eq $_) { $r->print(' selected'); } |
Line 997 sub assessparms {
|
Line 1089 sub assessparms {
|
} |
} |
|
|
} |
} |
$r->print('</table>'); |
$r->print('</table><br />'); |
|
if (($prevvisit) || ($pschp) || ($pssymb)) { |
my @temp_psprt; |
$submitmessage = &mt("Update Course Assessment Parameter Display"); |
foreach my $t (@psprt) { |
} else { |
push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts)); |
$submitmessage = &mt("Set/Modify Course Assessment Parameters"); |
} |
} |
|
$r->print('<input type="submit" name="dis" value="'.$submitmessage.'">'); |
|
|
@psprt = @temp_psprt; |
# my @temp_psprt; |
|
# foreach my $t (@psprt) { |
|
# push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts)); |
|
# } |
|
|
|
# @psprt = @temp_psprt; |
|
|
my @temp_pscat; |
my @temp_pscat; |
map { |
map { |
Line 1020 sub assessparms {
|
Line 1118 sub assessparms {
|
my $csuname=$ENV{'user.name'}; |
my $csuname=$ENV{'user.name'}; |
my $csudom=$ENV{'user.domain'}; |
my $csudom=$ENV{'user.domain'}; |
|
|
|
|
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
if ($parmlev eq 'full' || $parmlev eq 'brief') { |
|
|
my $coursespan=$csec?8:5; |
my $coursespan=$csec?8:5; |
$r->print('<p><table border=2>'); |
$r->print('<p><table border=2>'); |
$r->print('<tr><td colspan=5></td>'); |
$r->print('<tr><td colspan=5></td>'); |
$r->print('<th colspan='.($coursespan).'>Any User</th>'); |
$r->print('<th colspan='.($coursespan).'>'.&mt('Any User').'</th>'); |
if ($uname) { |
if ($uname) { |
$r->print("<th colspan=3 rowspan=2>"); |
$r->print("<th colspan=3 rowspan=2>"); |
$r->print("User $uname at Domain $udom</th>"); |
$r->print(&mt("User")." $uname ".&mt('at Domain')." $udom</th>"); |
} |
} |
|
my %lt=&Apache::lonlocal::texthash( |
|
'pie' => "Parameter in Effect", |
|
'csv' => "Current Session Value", |
|
'at' => 'at', |
|
'rl' => "Resource Level", |
|
'ic' => 'in Course', |
|
'aut' => "Assessment URL and Title", |
|
'type' => 'Type', |
|
'emof' => "Enclosing Map or Folder", |
|
'part' => 'Part', |
|
'pn' => 'Parameter Name', |
|
'def' => 'default', |
|
'femof' => 'from Enclosing Map or Folder', |
|
'gen' => 'general', |
|
'foremf' => 'for Enclosing Map or Folder', |
|
'fr' => 'for Resource' |
|
); |
$r->print(<<ENDTABLETWO); |
$r->print(<<ENDTABLETWO); |
<th rowspan=3>Parameter in Effect</th> |
<th rowspan=3>$lt{'pie'}</th> |
<th rowspan=3>Current Session Value<br>($csuname at $csudom)</th> |
<th rowspan=3>$lt{'csv'}<br>($csuname $lt{'at'} $csudom)</th> |
</tr><tr><td colspan=5></td><th colspan=2>Resource Level</th> |
</tr><tr><td colspan=5></td><th colspan=2>$lt{'rl'}</th> |
<th colspan=3>in Course</th> |
<th colspan=3>$lt{'ic'}</th> |
ENDTABLETWO |
ENDTABLETWO |
if ($csec) { |
if ($csec) { |
$r->print("<th colspan=3>in Section/Group $csec</th>"); |
$r->print("<th colspan=3>". |
|
&mt("in Section/Group")." $csec</th>"); |
} |
} |
$r->print(<<ENDTABLEHEADFOUR); |
$r->print(<<ENDTABLEHEADFOUR); |
</tr><tr><th>Assessment URL and Title</th><th>Type</th> |
</tr><tr><th>$lt{'aut'}</th><th>$lt{'type'}</th> |
<th>Enclosing Map</th><th>Part No.</th><th>Parameter Name</th> |
<th>$lt{'emof'}</th><th>$lt{'part'}</th><th>$lt{'pn'}</th> |
<th>default</th><th>from Enclosing Map</th> |
<th>$lt{'def'}</th><th>$lt{'femof'}</th> |
<th>general</th><th>for Enclosing Map</th><th>for Resource</th> |
<th>$lt{'gen'}</th><th>$lt{'foremf'}</th><th>$lt{'fr'}</th> |
ENDTABLEHEADFOUR |
ENDTABLEHEADFOUR |
|
|
if ($csec) { |
if ($csec) { |
$r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>'); |
$r->print('<th>'.&mt('general').'</th><th>'.&mt('for Enclosing Map or Folder').'</th><th>'.&mt('for Resource').'</th>'); |
} |
} |
|
|
if ($uname) { |
if ($uname) { |
$r->print('<th>general</th><th>for Enclosing Map</th><th>for Resource</th>'); |
$r->print('<th>'.&mt('general').'</th><th>'.&mt('for Enclosing Map or Folder').'</th><th>'.&mt('for Resource').'</th>'); |
} |
} |
|
|
$r->print('</tr>'); |
$r->print('</tr>'); |
Line 1065 ENDTABLEHEADFOUR
|
Line 1179 ENDTABLEHEADFOUR
|
my $rid=$_; |
my $rid=$_; |
my ($inmapid)=($rid=~/\.(\d+)$/); |
my ($inmapid)=($rid=~/\.(\d+)$/); |
|
|
if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) || |
if ((!$pssymb && |
($pssymb eq $symbp{$rid})) { |
(($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}))) |
|
|| |
|
($pssymb && $pssymb eq $symbp{$rid})) { |
# ------------------------------------------------------ Entry for one resource |
# ------------------------------------------------------ Entry for one resource |
if ($defbgone eq '"E0E099"') { |
if ($defbgone eq '"E0E099"') { |
$defbgone='"E0E0DD"'; |
$defbgone='"E0E0DD"'; |
Line 1103 ENDTABLEHEADFOUR
|
Line 1219 ENDTABLEHEADFOUR
|
my $totalparms=scalar keys %name; |
my $totalparms=scalar keys %name; |
if ($totalparms>0) { |
if ($totalparms>0) { |
my $firstrow=1; |
my $firstrow=1; |
|
my $title=$bighash{'title_'.$rid}; |
|
$title=~s/\:/:/g; |
$r->print('<tr><td bgcolor='.$defbgone. |
$r->print('<tr><td bgcolor='.$defbgone. |
' rowspan='.$totalparms. |
' rowspan='.$totalparms. |
'><tt><font size=-1>'. |
'><tt><font size=-1>'. |
join(' / ',split(/\//,$uri)). |
join(' / ',split(/\//,$uri)). |
'</font></tt><p><b>'. |
'</font></tt><p><b>'. |
"<a href=\"javascript:openWindow('/res/".$uri. |
"<a href=\"javascript:openWindow('". |
|
&Apache::lonnet::clutter($uri). |
"', 'metadatafile', '450', '500', 'no', 'yes')\";". |
"', 'metadatafile', '450', '500', 'no', 'yes')\";". |
" TARGET=_self>$bighash{'title_'.$rid}"); |
" TARGET=_self>$title"); |
|
|
if ($thistitle) { |
if ($thistitle) { |
$r->print(' ('.$thistitle.')'); |
$r->print(' ('.$thistitle.')'); |
Line 1213 ENDTABLEHEADFOUR
|
Line 1331 ENDTABLEHEADFOUR
|
} # end loop through ids |
} # end loop through ids |
|
|
#---------------------------------------------------- print header information |
#---------------------------------------------------- print header information |
|
my $foldermap=&mt($maptitle=~/^uploaded/?'Folder':'Map'); |
|
my $showtitle=$maptitles{$maptitle}.($maptitle!~/^uploaded/?' ['.$maptitle.']':''); |
$r->print(<<ENDMAPONE); |
$r->print(<<ENDMAPONE); |
<center><h4> |
<center><h4> |
<font color="red">Set Defaults for All Resources in map |
Set Defaults for All Resources in $foldermap<br /> |
<i>$maptitle</i><br /> |
<font color="red"><i>$showtitle</i></font><br /> |
Specifically for |
Specifically for |
ENDMAPONE |
ENDMAPONE |
if ($uname) { |
if ($uname) { |
Line 1224 ENDMAPONE
|
Line 1344 ENDMAPONE
|
('firstname','middlename','lastname','generation', 'id')); |
('firstname','middlename','lastname','generation', 'id')); |
my $person=$name{'firstname'}.' '.$name{'middlename'}.' ' |
my $person=$name{'firstname'}.' '.$name{'middlename'}.' ' |
.$name{'lastname'}.' '.$name{'generation'}; |
.$name{'lastname'}.' '.$name{'generation'}; |
$r->print("User <i>$uname \($person\) </i> in \n"); |
$r->print(&mt("User")." <font color=\"red\"><i>$uname \($person\) </i></font> ". |
|
&mt('in')." \n"); |
} else { |
} else { |
$r->print("<i>all</i> users in \n"); |
$r->print("<font color=\"red\"><i>".&mt('all').'</i></font> '.&mt('users in')." \n"); |
} |
} |
|
|
if ($csec) {$r->print("Section <i>$csec</i> of \n")}; |
if ($csec) {$r->print(&mt("Section")." <font color=\"red\"><i>$csec</i></font> ". |
|
&mt('of')." \n")}; |
|
|
$r->print("<i>$coursename</i><br />"); |
$r->print("<font color=\"red\"><i>$coursename</i></font><br />"); |
$r->print("</font></h4>\n"); |
$r->print("</h4>\n"); |
#---------------------------------------------------------------- print table |
#---------------------------------------------------------------- print table |
$r->print('<p><table border="2">'); |
$r->print('<p><table border="2">'); |
$r->print('<tr><th>Parameter Name</th>'); |
$r->print('<tr><th>'.&mt('Parameter Name').'</th>'); |
$r->print('<th>Default Value</th>'); |
$r->print('<th>'.&mt('Default Value').'</th>'); |
$r->print('<th>Parameter in Effect</th></tr>'); |
$r->print('<th>'.&mt('Parameter in Effect').'</th></tr>'); |
|
|
foreach (sort keys %name) { |
foreach (sort keys %name) { |
|
$r->print('<tr>'); |
&print_row($r,$_,\%part,\%name,$mapid,\%default, |
&print_row($r,$_,\%part,\%name,$mapid,\%default, |
\%type,\%display,$defbgone,$defbgtwo, |
\%type,\%display,$defbgone,$defbgtwo, |
$parmlev); |
$parmlev); |
Line 1293 ENDMAPONE
|
Line 1416 ENDMAPONE
|
} # end loop through ids |
} # end loop through ids |
|
|
#---------------------------------------------------- print header information |
#---------------------------------------------------- print header information |
|
my $setdef=&mt("Set Defaults for All Resources in Course"); |
$r->print(<<ENDMAPONE); |
$r->print(<<ENDMAPONE); |
<center><h4> |
<center><h4>$setdef |
<font color="red">Set Defaults for All Resources in Course |
<font color="red"><i>$coursename</i></font><br /> |
<i>$coursename</i><br /> |
|
ENDMAPONE |
ENDMAPONE |
if ($uname) { |
if ($uname) { |
my %name=&Apache::lonnet::userenvironment($udom,$uname, |
my %name=&Apache::lonnet::userenvironment($udom,$uname, |
('firstname','middlename','lastname','generation', 'id')); |
('firstname','middlename','lastname','generation', 'id')); |
my $person=$name{'firstname'}.' '.$name{'middlename'}.' ' |
my $person=$name{'firstname'}.' '.$name{'middlename'}.' ' |
.$name{'lastname'}.' '.$name{'generation'}; |
.$name{'lastname'}.' '.$name{'generation'}; |
$r->print(" User <i>$uname \($person\) </i> \n"); |
$r->print(" ".&mt("User")."<font color=\"red\"> <i>$uname \($person\) </i></font> \n"); |
} else { |
} else { |
$r->print("<i>ALL</i> USERS \n"); |
$r->print("<i><font color=\"red\"> ".&mt("ALL")."</i> ".&mt("USERS")."</font> \n"); |
} |
} |
|
|
if ($csec) {$r->print("Section <i>$csec</i>\n")}; |
if ($csec) {$r->print(&mt("Section")."<font color=\"red\"> <i>$csec</i></font>\n")}; |
$r->print("</font></h4>\n"); |
$r->print("</h4>\n"); |
#---------------------------------------------------------------- print table |
#---------------------------------------------------------------- print table |
$r->print('<p><table border="2">'); |
$r->print('<p><table border="2">'); |
$r->print('<tr><th>Parameter Name</th>'); |
$r->print('<tr><th>'.&mt('Parameter Name').'</th>'); |
$r->print('<th>Default Value</th>'); |
$r->print('<th>'.&mt('Default Value').'</th>'); |
$r->print('<th>Parameter in Effect</th></tr>'); |
$r->print('<th>'.&mt('Parameter in Effect').'</th></tr>'); |
|
|
foreach (sort keys %name) { |
foreach (sort keys %name) { |
|
$r->print('<tr>'); |
&print_row($r,$_,\%part,\%name,$mapid,\%default, |
&print_row($r,$_,\%part,\%name,$mapid,\%default, |
\%type,\%display,$defbgone,$defbgtwo,$parmlev); |
\%type,\%display,$defbgone,$defbgtwo,$parmlev); |
# $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n"); |
# $r->print("<tr><td>resource.$part{$_}.$name{$_},$symbp{$mapid}</td></tr>\n"); |
Line 1337 ENDMAPONE
|
Line 1461 ENDMAPONE
|
|
|
=item crsenv |
=item crsenv |
|
|
Show course data and parameters. This is a large routine that should |
Show and set course data and parameters. This is a large routine that should |
be simplified and shortened... someday. |
be simplified and shortened... someday. |
|
|
Inputs: $r |
Inputs: $r |
Line 1355 sub crsenv {
|
Line 1479 sub crsenv {
|
'Set Course Environment Parameters'); |
'Set Course Environment Parameters'); |
my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
# -------------------------------------------------- Go through list of changes |
|
|
# |
|
# Go through list of changes |
foreach (keys %ENV) { |
foreach (keys %ENV) { |
if ($_=~/^form\.(.+)\_setparmval$/) { |
next if ($_!~/^form\.(.+)\_setparmval$/); |
my $name=$1; |
my $name = $1; |
my $value=$ENV{'form.'.$name.'_value'}; |
my $value = $ENV{'form.'.$name.'_value'}; |
if ($name eq 'newp') { |
if ($name eq 'newp') { |
$name=$ENV{'form.newp_name'}; |
$name = $ENV{'form.newp_name'}; |
|
} |
|
if ($name eq 'url') { |
|
$value=~s/^\/res\///; |
|
my $bkuptime=time; |
|
my @tmp = &Apache::lonnet::get |
|
('environment',['url'],$dom,$crs); |
|
$setoutput.=&mt('Backing up previous URL').': '. |
|
&Apache::lonnet::put |
|
('environment', |
|
{'top level map backup '.$bkuptime => $tmp[1] }, |
|
$dom,$crs). |
|
'<br>'; |
|
} |
|
# |
|
# Deal with modified default spreadsheets |
|
if ($name =~ /^spreadsheet_default_(classcalc| |
|
studentcalc| |
|
assesscalc)$/x) { |
|
my $sheettype = $1; |
|
if ($sheettype eq 'classcalc') { |
|
# no need to do anything since viewing the sheet will |
|
# cause it to be updated. |
|
} elsif ($sheettype eq 'studentcalc') { |
|
# expire all the student spreadsheets |
|
&Apache::lonnet::expirespread('','','studentcalc'); |
|
} else { |
|
# expire all the assessment spreadsheets |
|
# this includes non-default spreadsheets, but better to |
|
# be safe than sorry. |
|
&Apache::lonnet::expirespread('','','assesscalc'); |
|
# expire all the student spreadsheets |
|
&Apache::lonnet::expirespread('','','studentcalc'); |
} |
} |
if ($name eq 'url') { |
} |
$value=~s/^\/res\///; |
# |
my $bkuptime=time; |
# Deal with the enrollment dates |
my @tmp = &Apache::lonnet::get |
if ($name =~ /^default_enrollment_(start|end)_date$/) { |
('environment',['url'],$dom,$crs); |
$value=&Apache::lonhtmlcommon::get_date_from_form($name.'_value'); |
$setoutput.='Backing up previous URL: '. |
} |
&Apache::lonnet::put |
# |
('environment', |
# Let the user know we made the changes |
{'top level map backup '.$bkuptime => $tmp[1] }, |
if ($name && defined($value)) { |
$dom,$crs). |
my $put_result = &Apache::lonnet::put('environment', |
'<br>'; |
{$name=>$value},$dom,$crs); |
|
if ($put_result eq 'ok') { |
|
$setoutput.=&mt('Set').' <b>'.$name.'</b> '.&mt('to').' <b>'.$value.'</b>.<br />'; |
|
} else { |
|
$setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to'). |
|
' <b>'.$value.'</b> '.&mt('due to').' '.$put_result.'.<br />'; |
} |
} |
if ($name) { |
|
$setoutput.='Setting <tt>'.$name.'</tt> to <tt>'. |
|
$value.'</tt>: '. |
|
&Apache::lonnet::put |
|
('environment',{$name=>$value},$dom,$crs). |
|
'<br>'; |
|
} |
|
} |
} |
} |
} |
|
# ------------------------- Re-init course environment entries for this session |
|
|
|
&Apache::lonnet::coursedescription($ENV{'request.course.id'}); |
|
|
# -------------------------------------------------------- Get parameters again |
# -------------------------------------------------------- Get parameters again |
|
|
my %values=&Apache::lonnet::dump('environment',$dom,$crs); |
my %values=&Apache::lonnet::dump('environment',$dom,$crs); |
|
my $SelectStyleFile=&mt('Select Style File'); |
|
my $SelectSpreadsheetFile=&mt('Select Spreadsheet File'); |
my $output=''; |
my $output=''; |
if (! exists($values{'con_lost'})) { |
if (! exists($values{'con_lost'})) { |
my %descriptions= |
my %descriptions= |
('url' => '<b>Top Level Map</b> '. |
('url' => '<b>'.&mt('Top Level Map').'</b> '. |
'<a href="javascript:openbrowser'. |
'<a href="javascript:openbrowser'. |
"('envform','url','sequence')\">". |
"('envform','url','sequence')\">". |
'Browse</a><br><font color=red> '. |
&mt('Select Map').'</a><br /><font color=red> '. |
'Modification may make assessment data '. |
&mt('Modification may make assessment data inaccessible'). |
'inaccessible</font>', |
'</font>', |
'description' => '<b>Course Description</b>', |
'description' => '<b>'.&mt('Course Description').'</b>', |
'courseid' => '<b>Course ID or number</b><br>'. |
'courseid' => '<b>'.&mt('Course ID or number'). |
'(internal, optional)', |
'</b><br />'. |
'default_xml_style' => '<b>Default XML Style File</b> '. |
'('.&mt('internal').', '.&mt('optional').')', |
|
'cloners' => '<b>'.&mt('Users allowed to clone course').'</b><br /><tt>(user:domain,user:domain)</tt><br />'.&mt('Users with active Course Coordinator role in the course automatically have the right to clone it, and can be omitted from list.'), |
|
'grading' => '<b>'.&mt('Grading').'</b><br />'. |
|
'<tt>"standard", "external", or "spreadsheet"</tt> '.&Apache::loncommon::help_open_topic('GradingOptions'), |
|
'default_xml_style' => '<b>'.&mt('Default XML Style File').'</b> '. |
'<a href="javascript:openbrowser'. |
'<a href="javascript:openbrowser'. |
"('envform','default_xml_style'". |
"('envform','default_xml_style'". |
",'sty')\">Browse</a><br>", |
",'sty')\">$SelectStyleFile</a><br>", |
'question.email' => '<b>Feedback Addresses for Content '. |
'question.email' => '<b>'.&mt('Feedback Addresses for Resource Content Question'). |
'Questions</b><br>(<tt>user:domain,'. |
'</b><br />(<tt>user:domain,'. |
'user:domain,...</tt>)', |
'user:domain(section;section;...;*;...),...</tt>)', |
'comment.email' => '<b>Feedback Addresses for Comments</b><br>'. |
'comment.email' => '<b>'.&mt('Feedback Addresses for Course Content Comments').'</b><br />'. |
|
'(<tt>user:domain,user:domain(section;section;...;*;...),...</tt>)', |
|
'policy.email' => '<b>'.&mt('Feedback Addresses for Course Policy').'</b>'. |
|
'<br />(<tt>user:domain,user:domain(section;section;...;*;...),...</tt>)', |
|
'hideemptyrows' => '<b>'.&mt('Hide Empty Rows in Spreadsheets').'</b><br />'. |
|
'('.&mt('"[_1]" for default hiding','<tt>yes</tt>').')', |
|
'pageseparators' => '<b>'.&mt('Visibly Separate Items on Pages').'</b><br />'. |
|
'('.&mt('"[_1]" for visible separation','<tt>yes</tt>').', '. |
|
&mt('changes will not show until next login').')', |
|
'student_classlist_view' => '<b>'.&mt('Allow students to view classlist.').'</b>'.&mt('("all":students can view all sections,"section":students can only view their own section.blank or "disabled" prevents student view.'), |
|
|
|
'plc.roles.denied'=> '<b>'.&mt('Disallow live chatroom use for Roles'). |
|
'</b><br />"<tt>st</tt>": '. |
|
&mt('student').', "<tt>ta</tt>": '. |
|
'TA, "<tt>in</tt>": '. |
|
&mt('instructor').';<br /><tt>'.&mt('role,role,...').'</tt>) '. |
|
Apache::loncommon::help_open_topic("Course_Disable_Discussion"), |
|
'plc.users.denied' => |
|
'<b>'.&mt('Disallow live chatroom use for Users').'</b><br />'. |
'(<tt>user:domain,user:domain,...</tt>)', |
'(<tt>user:domain,user:domain,...</tt>)', |
'policy.email' => '<b>Feedback Addresses for Course Policy</b>'. |
|
'<br>(<tt>user:domain,user:domain,...</tt>)', |
'pch.roles.denied'=> '<b>'.&mt('Disallow Resource Discussion for Roles'). |
'hideemptyrows' => '<b>Hide Empty Rows in Spreadsheets</b><br>'. |
'</b><br />"<tt>st</tt>": '. |
'("<tt>yes</tt>" for default hiding)', |
|
'pageseparators' => '<b>Visibly Separate Items on Pages</b><br>'. |
|
'("<tt>yes</tt>" for visible separation)', |
|
'pch.roles.denied'=> '<b>Disallow Resource Discussion for '. |
|
'Roles</b><br>"<tt>st</tt>": '. |
|
'student, "<tt>ta</tt>": '. |
'student, "<tt>ta</tt>": '. |
'TA, "<tt>in</tt>": '. |
'TA, "<tt>in</tt>": '. |
'instructor;<br><tt>role,role,...</tt>) '. |
'instructor;<br /><tt>role,role,...</tt>) '. |
Apache::loncommon::help_open_topic("Course_Disable_Discussion"), |
Apache::loncommon::help_open_topic("Course_Disable_Discussion"), |
'pch.users.denied' => |
'pch.users.denied' => |
'<b>Disallow Resource Discussion for Users</b><br>'. |
'<b>'.&mt('Disallow Resource Discussion for Users').'</b><br />'. |
'(<tt>user:domain,user:domain,...</tt>)', |
'(<tt>user:domain,user:domain,...</tt>)', |
'spreadsheet_default_classcalc' |
'spreadsheet_default_classcalc' |
=> '<b>Default Course Spreadsheet</b> '. |
=> '<b>'.&mt('Default Course Spreadsheet').'</b> '. |
'<a href="javascript:openbrowser'. |
'<a href="javascript:openbrowser'. |
"('envform','spreadsheet_default_classcalc'". |
"('envform','spreadsheet_default_classcalc'". |
",'spreadsheet')\">Browse</a><br>", |
",'spreadsheet')\">$SelectSpreadsheetFile</a><br />", |
'spreadsheet_default_studentcalc' |
'spreadsheet_default_studentcalc' |
=> '<b>Default Student Spreadsheet</b> '. |
=> '<b>'.&mt('Default Student Spreadsheet').'</b> '. |
'<a href="javascript:openbrowser'. |
'<a href="javascript:openbrowser'. |
"('envform','spreadsheet_default_calc'". |
"('envform','spreadsheet_default_calc'". |
",'spreadsheet')\">Browse</a><br>", |
",'spreadsheet')\">$SelectSpreadsheetFile</a><br />", |
'spreadsheet_default_assesscalc' |
'spreadsheet_default_assesscalc' |
=> '<b>Default Assessment Spreadsheet</b> '. |
=> '<b>'.&mt('Default Assessment Spreadsheet').'</b> '. |
'<a href="javascript:openbrowser'. |
'<a href="javascript:openbrowser'. |
"('envform','spreadsheet_default_assesscalc'". |
"('envform','spreadsheet_default_assesscalc'". |
",'spreadsheet')\">Browse</a><br>", |
",'spreadsheet')\">$SelectSpreadsheetFile</a><br />", |
); |
'allow_limited_html_in_feedback' |
foreach (keys(%values)) { |
=> '<b>'.&mt('Allow limited HTML in discussion posts').'</b><br />'. |
unless ($descriptions{$_}) { |
'('.&mt('Set value to "[_1]" to allow',"<tt>yes</tt>").')', |
$descriptions{$_}=$_; |
'allow_discussion_post_editing' |
} |
=> '<b>'.&mt('Allow users to edit/delete their own discussion posts').'</b><br />'. |
|
'('.&mt('Set value to "[_1]" to allow',"<tt>yes</tt>").')', |
|
'rndseed' |
|
=> '<b>'.&mt('Randomization algorithm used').'</b> <br />'. |
|
'<font color="red">'.&mt('Modifying this will make problems').' '. |
|
&mt('have different numbers and answers').'</font>', |
|
'receiptalg' |
|
=> '<b>'.&mt('Receipt algorithm used').'</b> <br />'. |
|
&mt('This controls how receipt numbers are generated.'), |
|
'suppress_tries' |
|
=> '<b>'.&mt('Suppress number of tries in printing').'</b>('. |
|
&mt('yes if supress').')', |
|
'problem_stream_switch' |
|
=> '<b>'.&mt('Allow problems to be split over pages').'</b><br />'. |
|
' ('.&mt('"[_1]" if allowed, anything else if not','<tt>yes</tt>').')', |
|
'default_paper_size' |
|
=> '<b>'.&mt('Default paper type').'</b><br />'. |
|
' ('.&mt('supported types').': Letter [8 1/2x11 in], Legal [8 1/2x14 in],'. |
|
' Tabloid [11x17 in], Executive [7 1/2x10 in], A2 [420x594 mm],'. |
|
' A3 [297x420 mm], A4 [210x297 mm], A5 [148x210 mm], A6 [105x148 mm])', |
|
'anonymous_quiz' |
|
=> '<b>'.&mt('Anonymous quiz/exam').'</b><br />'. |
|
' (<tt><b>'.&mt('yes').'</b> '.&mt('to avoid print students names').' </tt>)', |
|
'default_enrollment_start_date' => '<b>'.&mt('Default beginning date when enrolling students').'</b>', |
|
'default_enrollment_end_date' => '<b>'.&mt('Default ending date when enrolling students').'</b>', |
|
'nothideprivileged' => '<b>'.&mt('Privileged users that should not be hidden on staff listings').'</b>'. |
|
'<br />(<tt>user:domain,user:domain,...</tt>)', |
|
'languages' => '<b>'.&mt('Languages used').'</b>', |
|
'disable_receipt_display' |
|
=> '<b>'.&mt('Disable display of problem receipts').'</b><br />'. |
|
' ('.&mt('"[_1]" to disable, anything else if not','<tt>yes</tt>').')', |
|
'disablesigfigs' |
|
=> '<b>'.&mt('Disable checking of Significant Figures').'</b><br />'. |
|
' ('.&mt('"[_1]" to disable, anything else if not','<tt>yes</tt>').')', |
|
'tthoptions' |
|
=> '<b>'.&mt('Default set of options to pass to tth/m when converting tex').'</b>' |
|
); |
|
my @Display_Order = ('url','description','courseid','cloners','grading', |
|
'default_xml_style','pageseparators', |
|
'question.email','comment.email','policy.email', |
|
'student_classlist_view', |
|
'plc.roles.denied','plc.users.denied', |
|
'pch.roles.denied','pch.users.denied', |
|
'allow_limited_html_in_feedback', |
|
'allow_discussion_post_editing', |
|
'languages', |
|
'nothideprivileged', |
|
'rndseed', |
|
'receiptalg', |
|
'problem_stream_switch', |
|
'suppress_tries', |
|
'default_paper_size', |
|
'disable_receipt_display', |
|
'spreadsheet_default_classcalc', |
|
'spreadsheet_default_studentcalc', |
|
'spreadsheet_default_assesscalc', |
|
'hideemptyrows', |
|
'default_enrollment_start_date', |
|
'default_enrollment_end_date', |
|
'tthoptions', |
|
'disablesigfigs' |
|
); |
|
foreach my $parameter (sort(keys(%values))) { |
|
unless ($parameter =~ m/^internal\./) { |
|
if (! $descriptions{$parameter}) { |
|
$descriptions{$parameter}=$parameter; |
|
push(@Display_Order,$parameter); |
|
} |
|
} |
} |
} |
foreach (sort keys %descriptions) { |
foreach my $parameter (@Display_Order) { |
|
my $description = $descriptions{$parameter}; |
# onchange is javascript to automatically check the 'Set' button. |
# onchange is javascript to automatically check the 'Set' button. |
my $onchange = 'onFocus="javascript:window.document.forms'. |
my $onchange = 'onFocus="javascript:window.document.forms'. |
'[\'envform\'].elements[\''.$_.'_setparmval\']'. |
"['envform'].elements['".$parameter."_setparmval']". |
'.checked=true;"'; |
'.checked=true;"'; |
$output.='<tr><td>'.$descriptions{$_}.'</td>'. |
$output .= '<tr><td>'.$description.'</td>'; |
'<td><input name="'.$_.'_value" size=40 '. |
if ($parameter =~ /^default_enrollment_(start|end)_date$/) { |
'value="'.$values{$_}.'" '.$onchange.' /></td>'. |
$output .= '<td>'. |
'<td><input type=checkbox name="'.$_.'_setparmval"></td>'. |
&Apache::lonhtmlcommon::date_setter('envform', |
'</tr>'."\n"; |
$parameter.'_value', |
|
$values{$parameter}, |
|
$onchange). |
|
'</td>'; |
|
} else { |
|
$output .= '<td>'. |
|
&Apache::lonhtmlcommon::textbox($parameter.'_value', |
|
$values{$parameter}, |
|
40,$onchange).'</td>'; |
|
} |
|
$output .= '<td>'. |
|
&Apache::lonhtmlcommon::checkbox($parameter.'_setparmval'). |
|
'</td>'; |
|
$output .= "</tr>\n"; |
} |
} |
my $onchange = 'onFocus="javascript:window.document.forms'. |
my $onchange = 'onFocus="javascript:window.document.forms'. |
'[\'envform\'].elements[\'newp_setparmval\']'. |
'[\'envform\'].elements[\'newp_setparmval\']'. |
'.checked=true;"'; |
'.checked=true;"'; |
$output.='<tr><td><i>Create New Environment Variable</i><br />'. |
$output.='<tr><td><i>'.&mt('Create New Environment Variable').'</i><br />'. |
'<input type="text" size=40 name="newp_name" '. |
'<input type="text" size=40 name="newp_name" '. |
$onchange.' /></td><td>'. |
$onchange.' /></td><td>'. |
'<input type="text" size=40 name="newp_value" '. |
'<input type="text" size=40 name="newp_value" '. |
$onchange.' /></td><td>'. |
$onchange.' /></td><td>'. |
'<input type="checkbox" name="newp_setparmval" /></td></tr>'; |
'<input type="checkbox" name="newp_setparmval" /></td></tr>'; |
} |
} |
|
my %lt=&Apache::lonlocal::texthash( |
|
'par' => 'Parameter', |
|
'val' => 'Value', |
|
'set' => 'Set', |
|
'sce' => 'Set Course Environment' |
|
); |
|
|
|
my $Parameter=&mt('Parameter'); |
|
my $Value=&mt('Value'); |
|
my $Set=&mt('Set'); |
|
my $browse_js=&Apache::loncommon::browser_and_searcher_javascript('parmset'); |
$r->print(<<ENDENV); |
$r->print(<<ENDENV); |
<html> |
<html> |
<script type="text/javascript" language="Javascript" > |
<script type="text/javascript" language="Javascript" > |
var editbrowser; |
$browse_js |
function openbrowser(formname,elementname,only,omit) { |
|
var url = '/res/?'; |
|
if (editbrowser == null) { |
|
url += 'launch=1&'; |
|
} |
|
url += 'catalogmode=interactive&'; |
|
url += 'mode=parmset&'; |
|
url += 'form=' + formname + '&'; |
|
if (only != null) { |
|
url += 'only=' + only + '&'; |
|
} |
|
if (omit != null) { |
|
url += 'omit=' + omit + '&'; |
|
} |
|
url += 'element=' + elementname + ''; |
|
var title = 'Browser'; |
|
var options = 'scrollbars=1,resizable=1,menubar=0'; |
|
options += ',width=700,height=600'; |
|
editbrowser = open(url,title,options,'1'); |
|
editbrowser.focus(); |
|
} |
|
</script> |
</script> |
<head> |
<head> |
<title>LON-CAPA Course Environment</title> |
<title>LON-CAPA Course Environment</title> |
Line 1499 $bodytag
|
Line 1750 $bodytag
|
$setoutput |
$setoutput |
<p> |
<p> |
<table border=2> |
<table border=2> |
<tr><th>Parameter</th><th>Value</th><th>Set?</th></tr> |
<tr><th>$lt{'par'}</th><th>$lt{'val'}</th><th>$lt{'set'}?</th></tr> |
$output |
$output |
</table> |
</table> |
<input type="submit" name="crsenv" value="Set Course Environment"> |
<input type="submit" name="crsenv" value="$lt{'sce'}"> |
</form> |
</form> |
</body> |
</body> |
</html> |
</html> |
ENDENV |
ENDENV |
} |
} |
|
################################################## |
|
|
|
my $tableopen; |
|
|
|
sub tablestart { |
|
if ($tableopen) { |
|
return ''; |
|
} else { |
|
$tableopen=1; |
|
return '<table border="2"><tr><th>'.&mt('Parameter').'</th><th>'. |
|
&mt('Delete').'</th><th>'.&mt('Set to ...').'</th></tr>'; |
|
} |
|
} |
|
|
|
sub tableend { |
|
if ($tableopen) { |
|
$tableopen=0; |
|
return '</table>'; |
|
} else { |
|
return''; |
|
} |
|
} |
|
|
|
sub overview { |
|
my $r=shift; |
|
my $bodytag=&Apache::loncommon::bodytag( |
|
'Set/Modify Course Assessment Parameters'); |
|
my $dom = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}; |
|
my $crs = $ENV{'course.'.$ENV{'request.course.id'}.'.num'}; |
|
$r->print(<<ENDOVER); |
|
<html> |
|
<head> |
|
<title>LON-CAPA Course Environment</title> |
|
</head> |
|
$bodytag |
|
<form method="post" action="/adm/parmset" name="overviewform"> |
|
<input type="hidden" name="overview" value="1" /> |
|
ENDOVER |
|
# Setting |
|
my %olddata=&Apache::lonnet::dump('resourcedata',$dom,$crs); |
|
my %newdata=(); |
|
undef %newdata; |
|
my @deldata=(); |
|
undef @deldata; |
|
foreach (keys %ENV) { |
|
if ($_=~/^form\.([a-z]+)\_(.+)$/) { |
|
my $cmd=$1; |
|
my $thiskey=$2; |
|
if ($cmd eq 'set') { |
|
my $data=$ENV{$_}; |
|
if ($olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; } |
|
} elsif ($cmd eq 'del') { |
|
push (@deldata,$thiskey); |
|
} elsif ($cmd eq 'datepointer') { |
|
my $data=&Apache::lonhtmlcommon::get_date_from_form($ENV{$_}); |
|
if (defined($data) and $olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; } |
|
} |
|
} |
|
} |
|
# Store |
|
my $delentries=$#deldata+1; |
|
my @newdatakeys=keys %newdata; |
|
my $putentries=$#newdatakeys+1; |
|
if ($delentries) { |
|
if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') { |
|
$r->print('<h2>'.&mt('Deleted [_1] parameter(s)</h2>',$delentries)); |
|
} else { |
|
$r->print('<h2><font color="red">'. |
|
&mt('Error deleting parameters').'</font></h2>'); |
|
} |
|
} |
|
if ($putentries) { |
|
if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') { |
|
$r->print('<h2>'.&mt('Stored [_1] parameter(s)</h2>',$putentries)); |
|
} else { |
|
$r->print('<h2><font color="red">'. |
|
&mt('Error storing parameters').'</font></h2>'); |
|
} |
|
} |
|
# Read and display |
|
my %resourcedata=&Apache::lonnet::dump('resourcedata',$dom,$crs); |
|
my $oldsection=''; |
|
my $oldrealm=''; |
|
my $oldpart=''; |
|
my $pointer=0; |
|
$tableopen=0; |
|
my $foundkeys=0; |
|
foreach my $thiskey (sort keys %resourcedata) { |
|
if ($resourcedata{$thiskey.'.type'}) { |
|
my ($course,$middle,$part,$name)= |
|
($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); |
|
my $section=&mt('All Students'); |
|
if ($middle=~/^\[(.*)\]\./) { |
|
$section=&mt('Group/Section').': '.$1; |
|
$middle=~s/^\[(.*)\]\.//; |
|
} |
|
$middle=~s/\.$//; |
|
my $realm='<font color="red">'.&mt('All Resources').'</font>'; |
|
if ($middle=~/^(.+)\_\_\_\(all\)$/) { |
|
$realm='<font color="green">'.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' <br /><font color="#aaaaaa" size="-2">('.$1.')</font></font>'; |
|
} elsif ($middle) { |
|
my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle); |
|
$realm='<font color="orange">'.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' <br /><font color="#aaaaaa" size="-2">('.$url.' in '.$map.' id: '.$id.')</font></font>'; |
|
} |
|
if ($section ne $oldsection) { |
|
$r->print(&tableend()."\n<hr /><h1>$section</h1>"); |
|
$oldsection=$section; |
|
$oldrealm=''; |
|
} |
|
if ($realm ne $oldrealm) { |
|
$r->print(&tableend()."\n<h2>$realm</h2>"); |
|
$oldrealm=$realm; |
|
$oldpart=''; |
|
} |
|
if ($part ne $oldpart) { |
|
$r->print(&tableend(). |
|
"\n<h3><font color='blue'>".&mt('Part').": $part</font></h3>"); |
|
$oldpart=$part; |
|
} |
|
# |
|
# Ready to print |
|
# |
|
$r->print(&tablestart().'<tr><td><b>'.$name. |
|
':</b></td><td><input type="checkbox" name="del_'. |
|
$thiskey.'" /></td><td>'); |
|
$foundkeys++; |
|
if ($resourcedata{$thiskey.'.type'}=~/^date/) { |
|
my $jskey='key_'.$pointer; |
|
$pointer++; |
|
$r->print( |
|
&Apache::lonhtmlcommon::date_setter('overviewform', |
|
$jskey, |
|
$resourcedata{$thiskey}). |
|
'<input type="hidden" name="datepointer_'.$thiskey.'" value="'.$jskey.'" />' |
|
); |
|
} else { |
|
$r->print( |
|
'<input type="text" name="set_'.$thiskey.'" value="'. |
|
$resourcedata{$thiskey}.'">'); |
|
} |
|
$r->print('</td></tr>'); |
|
} |
|
} |
|
|
|
$r->print(&tableend().'<p>'. |
|
($foundkeys?'<input type="submit" value="'.&mt('Modify Parameters').'" />':&mt('There are no course or section parameters.')).'</p></form></body></html>'); |
|
} |
|
|
################################################## |
################################################## |
################################################## |
################################################## |
|
|
=pod |
=pod |
|
|
=item handler |
=item * handler |
|
|
Main handler. Calls &assessparms and &crsenv subroutines. |
Main handler. Calls &assessparms and &crsenv subroutines. |
|
|
Line 1522 Main handler. Calls &assessparms and &c
|
Line 1920 Main handler. Calls &assessparms and &c
|
|
|
################################################## |
################################################## |
################################################## |
################################################## |
|
use Data::Dumper; |
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
|
|
if ($r->header_only) { |
if ($r->header_only) { |
$r->content_type('text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
return OK; |
return OK; |
} |
} |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
|
|
|
# ----------------------------------------------------------- Clear out garbage |
|
|
|
%courseopt=(); |
|
%useropt=(); |
|
%parmhash=(); |
|
|
|
@ids=(); |
|
%symbp=(); |
|
%mapp=(); |
|
%typep=(); |
|
%keyp=(); |
|
|
|
%maptitles=(); |
|
|
# ----------------------------------------------------- Needs to be in a course |
# ----------------------------------------------------- Needs to be in a course |
|
|
if (($ENV{'request.course.id'}) && |
if (($ENV{'request.course.id'}) && |
(&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) { |
(&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}) || |
|
&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}.'/'. |
|
$ENV{'request.course.sec'}) |
|
)) { |
|
|
|
&Apache::loncommon::content_type($r,'text/html'); |
|
$r->send_http_header; |
|
|
$coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
$coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
|
|
unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) { |
if (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) { |
# --------------------------------------------------------- Bring up assessment |
|
&assessparms($r); |
|
# ---------------------------------------------- This is for course environment |
# ---------------------------------------------- This is for course environment |
} else { |
# -------------------------- also call if toplevel map coudl not be initialized |
&crsenv($r); |
&crsenv($r); |
|
} elsif ($ENV{'form.overview'}) { |
|
# --------------------------------------------------------------- Overview mode |
|
&overview($r); |
|
} else { |
|
# --------------------------------------------------------- Bring up assessment |
|
&assessparms($r); |
} |
} |
} else { |
} else { |
# ----------------------------- Not in a course, or not allowed to modify parms |
# ----------------------------- Not in a course, or not allowed to modify parms |