+ENDHEAD3
+
+ if (!$have_assesments) {
+ $r->print(''.&mt('There are no assesment parameters in this course to set.').' ');
+ } else {
+ $r->print(<
-Section/Group:
-
-
-For User
-
-or ID
-
-at Domain
-
+$lt{'sg'}:
+
+
+$lt{'fu'}
+
+$lt{'oi'}
+
+$lt{'ad'}
+$chooseopt
ENDHEAD
-
+ }
}
sub print_row {
- my ($r,$which,$part,$name,$rid,$default,$type,$display,$defbgone,
- $defbgtwo)=@_;
+ my ($r,$which,$part,$name,$rid,$default,$defaulttype,$display,$defbgone,
+ $defbgtwo,$parmlev,$uname,$udom,$csec)=@_;
+# get the values for the parameter in cascading order
+# empty levels will remain empty
my ($result,@outpar)=&parmval($$part{$which}.'.'.$$name{$which},
- $rid,$$default{$which});
- $r->print("
');
+
+ if ($parmlev eq 'full' || $parmlev eq 'brief') {
+ my $sessionval=&Apache::lonnet::EXT('resource.'.$$part{$which}.
+ '.'.$$name{$which},$symbp{$rid});
+
+# this doesn't seem to work, and I don't think is correct
+# my $sessionvaltype=&Apache::lonnet::EXT('resource.'.$$part{$which}.
+# '.'.$$name{$which}.'.type',$symbp{$rid});
+# this seems to work
+ my $sessionvaltype=$typeoutpar[$result];
+ if (!defined($sessionvaltype)) { $sessionvaltype=$$defaulttype{$which}; }
+ $r->print('
'."\n");
+}
+
+=pod
+
+=item B: Given the course data hash, extractResourceInformation extracts lots of information about the course's resources into a variety of hashes.
+
+Input: See list below:
+
+=over 4
+
+=item B: An array that will contain all of the ids in the course.
+
+=item B: hash, id->type, where "type" contains the extension of the file, thus, I.
+
+=item B: hash, id->key list, will contain a comma separated list of the meta-data keys available for the given id
+
+=item B: hash, name of parameter->display value (what is the display value?)
+
+=item B: hash, part identification->text representation of part, where the text representation is "[Part $part]"
+
+=item B: hash, full key to part->display value (what's display value?)
+
+=item B: hash, ???
+
+=item B: ???
+
+=item B: hash, ???
+
+=item B: ??
+
+=item B: hash, id->full sym?
+
+=back
+
+=cut
+
+sub extractResourceInformation {
+ my $bighash = shift;
+ my $ids = shift;
+ my $typep = shift;
+ my $keyp = shift;
+ my $allparms = shift;
+ my $allparts = shift;
+ my $allkeys = shift;
+ my $allmaps = shift;
+ my $fcat = shift;
+ my $defp = shift;
+ my $mapp = shift;
+ my $symbp = shift;
+ my $maptitles=shift;
+
+ foreach (keys %$bighash) {
+ if ($_=~/^src\_(\d+)\.(\d+)$/) {
+ # there are no resources in the 0 level
+ if ($1 eq '0') { next; }
+ my $mapid=$1;
+ my $resid=$2;
+ my $id=$mapid.'.'.$resid;
+ my $srcf=$$bighash{$_};
+ if (1) {
+ $srcf=~/\.(\w+)$/;
+ $$ids[$#$ids+1]=$id;
+ $$typep{$id}=$1;
+ $$keyp{$id}='';
+ foreach (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) {
+ if ($_=~/^parameter\_(.*)/) {
+ my $key=$_;
+ my $allkey=$1;
+ $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 $name=&Apache::lonnet::metadata($srcf,$key.'.name');
+ my $part= &Apache::lonnet::metadata($srcf,$key.'.part');
+ my $parmdis = $display;
+ $parmdis =~ s|(\[Part.*$)||g;
+ my $partkey = $part;
+ $partkey =~ tr|_|.|;
+ $$allparms{$name} = $parmdis;
+ $$allparts{$part} = "[Part $part]";
+ $$allkeys{$allkey}=$display;
+ if ($allkey eq $fcat) {
+ $$defp{$id}= &Apache::lonnet::metadata($srcf,$key);
+ }
+ if ($$keyp{$id}) {
+ $$keyp{$id}.=','.$key;
+ } else {
+ $$keyp{$id}=$key;
+ }
+ }
+ }
+ $$mapp{$id}=
+ &Apache::lonnet::declutter($$bighash{'map_id_'.$mapid});
+ $$mapp{$mapid}=$$mapp{$id};
+ $$allmaps{$mapid}=$$mapp{$id};
+ if ($mapid eq '1') {
+ $$maptitles{$mapid}='Main Course Documents';
+ } else {
+ $$maptitles{$mapid}=&Apache::lonnet::gettitle(&Apache::lonnet::clutter($$mapp{$id}));
+ }
+ $$maptitles{$$mapp{$id}}=$$maptitles{$mapid};
+ $$symbp{$id}=&Apache::lonnet::encode_symb($$mapp{$id},$resid,$srcf);
+ $$symbp{$mapid}=$$mapp{$id}.'___(all)';
+ }
+ }
+ }
}
+##################################################
+##################################################
+
+=pod
+
+=item assessparms
+
+Show assessment data and parameters. This is a large routine that should
+be simplified and shortened... someday.
+
+Inputs: $r
+
+Returns: nothing
+
+Variables used (guessed by Jeremy):
+
+=over 4
+
+=item B: ParameterS CATegories? ends up a list of the types of parameters that exist, e.g., tol, weight, acc, opendate, duedate, answerdate, sig, maxtries, type.
+
+=item B: ParameterS PaRTs? a list of the parts of a problem that we are displaying? Used to display only selected parts?
+
+=item B:
+
+=back
+
+=cut
+
+##################################################
+##################################################
sub assessparms {
my $r=shift;
# -------------------------------------------------------- Variable declaration
- my %allkeys;
- my %allmaps;
+ my %allkeys=();
+ my %allmaps=();
+ my %alllevs=();
+
+ my $uname;
+ my $udom;
+ my $uhome;
+ my $csec;
+
+ my $coursename=$ENV{'course.'.$ENV{'request.course.id'}.'.description'};
+
+ $alllevs{'Resource Level'}='full';
+ $alllevs{'Map Level'}='map';
+ $alllevs{'Course Level'}='general';
+
+ my %allparms;
+ my %allparts;
+
my %defp;
%courseopt=();
%useropt=();
@@ -317,12 +797,30 @@ sub assessparms {
my $message='';
$csec=$ENV{'form.csec'};
- $udom=$ENV{'form.udom'};
- unless ($udom) { $udom=$r->dir_config('lonDefDomain'); }
- my $pscat=$ENV{'form.pscat'};
+ if ($udom=$ENV{'form.udom'}) {
+ } elsif ($udom=$ENV{'request.role.domain'}) {
+ } elsif ($udom=$ENV{'user.domain'}) {
+ } else {
+ $udom=$r->dir_config('lonDefDomain');
+ }
+
+ my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');
my $pschp=$ENV{'form.pschp'};
+ my @psprt=&Apache::loncommon::get_env_multiple('form.psprt');
+ if (!@psprt) { $psprt[0]='0'; }
+ my $showoptions=$ENV{'form.showoptions'};
+
my $pssymb='';
+ my $parmlev='';
+ my $trimheader='';
+ my $prevvisit=$ENV{'form.prevvisit'};
+
+ unless ($ENV{'form.parmlev'}) {
+ $parmlev = 'map';
+ } else {
+ $parmlev = $ENV{'form.parmlev'};
+ }
# ----------------------------------------------- Was this started from grades?
@@ -331,12 +829,16 @@ sub assessparms {
my $url=$ENV{'form.url'};
$url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
$pssymb=&Apache::lonnet::symbread($url);
- $pscat='all';
+ if (!@pscat) { @pscat=('all'); }
$pschp='';
+ $parmlev = 'full';
+ $trimheader='yes';
} elsif ($ENV{'form.symb'}) {
$pssymb=$ENV{'form.symb'};
- $pscat='all';
+ if (!@pscat) { @pscat=('all'); }
$pschp='';
+ $parmlev = 'full';
+ $trimheader='yes';
} else {
$ENV{'form.url'}='';
}
@@ -348,7 +850,8 @@ sub assessparms {
$id='';
} else {
$message=
- "Unknown ID '$id' at domain '$udom'";
+ "".&mt("Unknown ID")." '$id' ".
+ &mt('at domain')." '$udom'";
}
} else {
$uname=$ENV{'form.uname'};
@@ -359,24 +862,25 @@ sub assessparms {
$uhome=&Apache::lonnet::homeserver($uname,$udom);
if ($uhome eq 'no_host') {
$message=
- "Unknown user '$uname' at domain '$udom'";
+ "".&mt("Unknown user")." '$uname' ".
+ &mt("at domain")." '$udom'";
$uname='';
} else {
- $csec=&Apache::lonnet::usection($udom,$uname,
- $ENV{'request.course.id'});
+ $csec=&Apache::lonnet::getsection($udom,$uname,
+ $ENV{'request.course.id'});
if ($csec eq '-1') {
$message="".
- "User '$uname' at domain '$udom' not ".
- "in this course";
+ &mt("User")." '$uname' ".&mt("at domain")." '$udom' ".
+ &mt("not in this course")."";
$uname='';
$csec=$ENV{'form.csec'};
} else {
my %name=&Apache::lonnet::userenvironment($udom,$uname,
('firstname','middlename','lastname','generation','id'));
- $message="\n