|
@@ -521,7 +537,9 @@ ENDTABLEHEAD
$r->print("User $uname at Domain $udom | ");
}
$r->print(<Parameter in Effect
---|
|
+Parameter in Effect |
+Current Session Value ($csuname at $csudom) |
+
---|
|
Resource Level |
in Course |
ENDTABLETWO
@@ -540,12 +558,15 @@ ENDTABLEHEADFOUR
if ($uname) {
$r->print('general | for Enclosing Map | for Resource | ');
}
- $r->print('
---|
');
+ $r->print('
');
my $defbgone='';
my $defbgtwo='';
map {
my $rid=$_;
- if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid})) {
+ my ($inmapid)=($rid=~/\.(\d+)$/);
+ if (($pschp eq 'all') || ($allmaps{$pschp} eq $mapp{$rid}) ||
+ ($pssymb eq $mapp{$rid}.'___'.$inmapid.'___'.
+ &Apache::lonnet::declutter($bighash{'src_'.$rid}))) {
# ------------------------------------------------------ Entry for one resource
if ($defbgone eq '"E0E099"') {
$defbgone='"E0E0DD"';
@@ -560,6 +581,7 @@ ENDTABLEHEADFOUR
@outpar=();
my $thistitle='';
my %name= ();
+ undef %name;
my %part= ();
my %display=();
my %type= ();
@@ -567,6 +589,7 @@ ENDTABLEHEADFOUR
my $uri=&Apache::lonnet::declutter($bighash{'src_'.$rid});
map {
+ if (($_ eq $catmarker) || ($pscat eq 'all')) {
$part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
$name{$_}=&Apache::lonnet::metadata($uri,$_.'.name');
$display{$_}=&Apache::lonnet::metadata($uri,$_.'.display');
@@ -575,13 +598,13 @@ ENDTABLEHEADFOUR
$default{$_}=&Apache::lonnet::metadata($uri,$_);
$type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
$thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
+ }
} split(/\,/,$keyp{$rid});
my $totalparms=scalar keys %name;
- my $isdef=1;
- unless ($totalparms) { $totalparms=1; $isdef=0; }
- if ($pscat ne 'all') { $totalparms=1; }
- $r->print(' | '.
join(' / ',split(/\//,$uri)).
' '.
@@ -595,11 +618,13 @@ ENDTABLEHEADFOUR
$r->print(' | '.
join(' / ',split(/\//,$mapp{$rid})).' | ');
- if ($isdef) {
map {
- if (($_ eq $catmarker) || ($pscat eq 'all')) {
my $result=&parmval($part{$_}.'.'.$name{$_},$rid,$default{$_});
-
+ unless ($firstrow) {
+ $r->print('');
+ } else {
+ $firstrow=0;
+ }
$r->print("$part{$_} | $display{$_} | ");
@@ -657,13 +682,17 @@ ENDTABLEHEADFOUR
'parmform.pres','psub').'');
}
$r->print(
- ''.&valout($outpar[$result],$type{$_}).' | ');
- $r->print("
\n");
- }
+ ''.&valout($outpar[$result],$type{$_}).' | ');
+ my $sessionval=&Apache::lonnet::EXT('resource.'.$part{$_}.
+ '.'.$name{$_},$mapp{$rid}.'___'.$inmapid.'___'.$uri);
+ if (($type{$_}=~/^date/) && ($sessionval))
+ { $sessionval=localtime($sessionval); }
+ $r->print(
+ ''.$sessionval.' '.
+ ' | ');
+ $r->print("
");
} sort keys %name;
- } else {
- $r->print("\n");
- }
+ }
# -------------------------------------------------- End entry for one resource
}
} @ids;
@@ -673,6 +702,139 @@ ENDTABLEHEADFOUR
untie(%bighash);
untie(%parmhash);
}
+}
+
+sub crsenv {
+ my $r=shift;
+ my $setoutput='';
+# -------------------------------------------------- Go through list of changes
+ map {
+ if ($_=~/^form\.(.+)\_setparmval$/) {
+ my $name=$1;
+ my $value=$ENV{'form.'.$name.'_value'};
+ if ($name eq 'newp') {
+ $name=$ENV{'form.newp_name'};
+ }
+ if ($name eq 'url') {
+ $value=~s/^\/res\///;
+ $setoutput.='Backing up previous URL: '.
+ &Apache::lonnet::reply('put:'.
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
+ ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
+ ':environment:'.
+ &Apache::lonnet::escape('top level map backup '.
+ time).'='.
+ &Apache::lonnet::reply('get:'.
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
+ ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
+ ':environment:url',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.home'}),
+ $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
+ '
';
+
+ }
+ if ($name) {
+ $setoutput.='Setting '.$name.' to '.
+ $value.': '.
+ &Apache::lonnet::reply('put:'.
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
+ ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
+ ':environment:'.
+ &Apache::lonnet::escape($name).'='.
+ &Apache::lonnet::escape($value),
+ $ENV{'course.'.$ENV{'request.course.id'}.'.home'}).
+ '
';
+ }
+ }
+ } keys %ENV;
+# -------------------------------------------------------- Get parameters again
+ my $rep=&Apache::lonnet::reply
+ ('dump:'.$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.
+ ':'.$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.
+ ':environment',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.home'});
+ my $output='';
+ if ($rep ne 'con_lost') {
+ my %values;
+ my %descriptions=
+ ('url' => 'Top Level Map
'.
+ 'Modification may make assessment data inaccessible',
+ 'description' => 'Course Description',
+ 'courseid' => 'Course ID or number
(internal, optional)',
+ 'question.email' => 'Feedback Addresses for Content Questions
'.
+ '(user:domain,user:domain,...)',
+ 'comment.email' => 'Feedback Addresses for Comments
'.
+ '(user:domain,user:domain,...)',
+ 'policy.email' => 'Feedback Addresses for Course Policy
'.
+ '(user:domain,user:domain,...)'
+ );
+
+ map {
+ my ($name,$value)=split(/\=/,$_);
+ $name=&Apache::lonnet::unescape($name);
+ $values{$name}=&Apache::lonnet::unescape($value);
+ unless ($descriptions{$name}) {
+ $descriptions{$name}=$name;
+ }
+ } split(/\&/,$rep);
+ map {
+ $output.='
'.$descriptions{$_}.' | | |
';
+ } keys %descriptions;
+ $output.='Create New Environment Variable '.
+ ' | '.
+ ' | '.
+ ' |
';
+ }
+ $r->print(<
+
+LON-CAPA Course Environment
+
+
+Set Course Parameters
+
+
+
+ENDENV
+}
+
+# ================================================================ Main Handler
+
+sub handler {
+ my $r=shift;
+
+ if ($r->header_only) {
+ $r->content_type('text/html');
+ $r->send_http_header;
+ return OK;
+ }
+
+# ----------------------------------------------------- Needs to be in a course
+
+ if (($ENV{'request.course.id'}) &&
+ (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'}))) {
+
+ unless (($ENV{'form.crsenv'}) || (!$ENV{'request.course.fn'})) {
+# --------------------------------------------------------- Bring up assessment
+ &assessparms($r);
+# ---------------------------------------------- This is for course environment
+ } else {
+ &crsenv($r);
+ }
} else {
# ----------------------------- Not in a course, or not allowed to modify parms
$ENV{'user.error.msg'}=