@@ -1349,8 +982,7 @@ ENDHEAD
sub print_row {
my ($r,$which,$part,$name,$symbp,$rid,$default,$defaulttype,$display,$defbgone,
- $defbgtwo,$defbgthree,$parmlev,$uname,$udom,$csec,$cgroup,$usersgroups,$noeditgrp,
- $readonly)=@_;
+ $defbgtwo,$defbgthree,$parmlev,$uname,$udom,$csec,$cgroup,$usersgroups)=@_;
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
@@ -1389,85 +1021,37 @@ sub print_row {
my $thismarker=$which;
$thismarker=~s/^parameter\_//;
my $mprefix=$rid.'&'.$thismarker.'&';
- my ($parmname)=($thismarker=~/\_([^\_]+)$/);
my $effective_parm = &valout($outpar[$result],$typeoutpar[$result]);
- my ($othergrp,$grp_parm,$controlgrp,$extra);
+ my ($othergrp,$grp_parm,$controlgrp);
- if ($parmname eq 'deeplink') {
- my ($domltistr,$crsltistr);
- my %lti =
- &Apache::lonnet::get_domain_lti($env{'course.'.$env{'request.course.id'}.'.domain'},
- 'linkprot');
- if (keys(%lti)) {
- foreach my $item (sort { $a <=> $b } (keys(%lti))) {
- if (($item =~ /^\d+$/) && (ref($lti{$item}) eq 'HASH')) {
- $domltistr .= $item.':'.&escape(&escape($lti{$item}{'name'})).',';
- }
- }
- $domltistr =~ s/,$//;
- if ($domltistr) {
- $extra = 'ltid_'.$domltistr;
- }
- }
- my %courselti = &Apache::lonnet::get_course_lti($cnum,$cdom,'provider');
- if (keys(%courselti)) {
- foreach my $item (sort { $a <=> $b } keys(%courselti)) {
- if (($item =~ /^\d+$/) && (ref($courselti{$item}) eq 'HASH')) {
- $crsltistr .= $item.':'.&escape(&escape($courselti{$item}{'name'})).',';
- }
- }
- $crsltistr =~ s/,$//;
- if ($crsltistr) {
- if ($extra) {
- $extra .= '&';
- }
- $extra .= 'ltic_'.$crsltistr;
- }
- }
- if ($env{'course.'.$env{'request.course.id'}.'.menucollections'}) {
- my @colls;
- foreach my $item (split(/;/,$env{'course.'.$env{'request.course.id'}.'.menucollections'})) {
- my ($num,$value) = split(/\%/,$item);
- if ($num =~ /^\d+$/) {
- push(@colls,$num);
- }
- }
- if (@colls) {
- if ($extra) {
- $extra .= '&';
- }
- $extra .= 'menus_'.join(',',@colls);
- }
- }
- }
if ($parmlev eq 'general') {
if ($uname) {
- &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} elsif ($cgroup) {
- &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly,$extra);
+ &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} elsif ($csec) {
- &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} else {
- &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
} elsif ($parmlev eq 'map') {
if ($uname) {
- &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} elsif ($cgroup) {
- &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly,$extra);
+ &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} elsif ($csec) {
- &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
} else {
- &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
} else {
if ($uname) {
if (@{$usersgroups} > 1) {
my ($coursereply,$grp_parm,$controlgrp);
($coursereply,$othergrp,$grp_parm,$controlgrp) =
- &check_other_groups($$part{$which}.'.'.$$name{$which},
+ &print_usergroups($r,$$part{$which}.'.'.$$name{$which},
$rid,$cgroup,$defbgone,$usersgroups,$result,$courseopt);
if ($coursereply && $result > 3) {
if (defined($controlgrp)) {
@@ -1480,32 +1064,32 @@ sub print_row {
}
}
- &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
- &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,12,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,10,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,12,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,10,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
if ($csec) {
- &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,7,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,7,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
if ($cgroup) {
- &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly,$extra);
- &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly,$extra);
- &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly,$extra);
+ &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
if ($uname) {
if ($othergrp) {
$r->print($othergrp);
}
- &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
- &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly,$extra);
+ &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
+ &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
} # end of $parmlev if/else
@@ -1525,27 +1109,19 @@ sub print_row {
}
sub print_td {
- my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display,$noeditgrp,$readonly,$extra)=@_;
+ my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display)=@_;
$r->print('');
my $nolink = 0;
- if ($readonly) {
+ if ($which == 11 || $which == 12) {
$nolink = 1;
- } else {
- if ($which == 11 || $which == 12) {
+ } elsif ($mprefix =~ /availablestudent\&$/) {
+ if ($which > 3) {
$nolink = 1;
- } elsif (($env{'request.course.sec'} ne '') && ($which > 9)) {
- $nolink = 1;
- } elsif ($which == 4 || $which == 5 || $which == 6) {
- if ($noeditgrp) {
- $nolink = 1;
- }
- } elsif ($mprefix =~ /availablestudent\&$/) {
+ }
+ } elsif ($mprefix =~ /examcode\&$/) {
+ unless ($which == 2) {
$nolink = 1;
- } elsif ($mprefix =~ /examcode\&$/) {
- unless ($which == 2) {
- $nolink = 1;
- }
}
}
if ($nolink) {
@@ -1553,13 +1129,13 @@ sub print_td {
} else {
$r->print(&plink($$typeoutpar[$which],
$$display{$value},$$outpar[$which],
- $mprefix."$which",'parmform.pres','psub',$extra));
+ $mprefix."$which",'parmform.pres','psub'));
}
$r->print(' '."\n");
}
-sub check_other_groups {
- my ($what,$rid,$cgroup,$defbg,$usersgroups,$result,$courseopt) = @_;
+sub print_usergroups {
+ my ($r,$what,$rid,$cgroup,$defbg,$usersgroups,$result,$courseopt) = @_;
my $courseid = $env{'request.course.id'};
my $output;
my $symb = &symbcache($rid);
@@ -1574,6 +1150,7 @@ sub check_other_groups {
if (($coursereply) && ($cgroup ne $resultgroup)) {
if ($result > 3) {
$bgcolor = '#AAFFAA';
+ $grp_parm = &valout($coursereply,$resulttype);
}
$grp_parm = &valout($coursereply,$resulttype);
$output = '';
@@ -1641,27 +1218,23 @@ sub extractResourceInformation {
my $srcf=$resource->src();
$srcf=~/\.(\w+)$/;
$$typep{$id}=$1;
- my $toolsymb;
- if ($srcf =~ /ext\.tool$/) {
- $toolsymb = $resource->symb();
- }
$$keyp{$id}='';
$$uris{$id}=$srcf;
- foreach my $key (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys',$toolsymb))) {
+ foreach my $key (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) {
next if ($key!~/^parameter_/);
# Hidden parameters
- next if (&Apache::lonnet::metadata($srcf,$key.'.hidden',$toolsymb) eq 'parm');
+ next if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq 'parm');
#
# allparms is a hash of parameter names
#
- my $name=&Apache::lonnet::metadata($srcf,$key.'.name',$toolsymb);
+ my $name=&Apache::lonnet::metadata($srcf,$key.'.name');
if (!exists($$allparms{$name}) || $$allparms{$name} =~ m/^\s*$/ ) {
my ($display,$parmdis);
$display = &standard_parameter_names($name);
if ($display eq '') {
- $display= &Apache::lonnet::metadata($srcf,$key.'.display',$toolsymb);
+ $display= &Apache::lonnet::metadata($srcf,$key.'.display');
$parmdis = $display;
$parmdis =~ s/\s*\[Part.*$//g;
} else {
@@ -1670,14 +1243,14 @@ sub extractResourceInformation {
$$allparms{$name}=$parmdis;
if (ref($defkeytype)) {
$$defkeytype{$name}=
- &Apache::lonnet::metadata($srcf,$key.'.type',$toolsymb);
+ &Apache::lonnet::metadata($srcf,$key.'.type');
}
}
#
# allparts is a hash of all parts
#
- my $part= &Apache::lonnet::metadata($srcf,$key.'.part',$toolsymb);
+ my $part= &Apache::lonnet::metadata($srcf,$key.'.part');
$$allparts{$part} = &mt('Part: [_1]',$part);
#
# Remember all keys going with this resource
@@ -1723,21 +1296,14 @@ sub isdateparm {
return (($type=~/^date/) && (!($type eq 'date_interval')));
}
-# Determine if parameter type is specialized string type (i.e.,
-# not just string or string_yesno.
-
-sub is_specialstring {
- my $type=shift;
- return (($type=~/^string_/) && ($type ne 'string_yesno'));
-}
-
#
# parmmenu displays a list of the selected parameters.
# It also offers a link to show/hide the complete parameter list
# from which you can select all desired parameters.
#
sub parmmenu {
- my ($r)=@_;
+ my ($r,$allparms,$pscat,$keyorder)=@_;
+ my $tempkey;
$r->print(<
// print(' ');
- &shortCuts($r);
+ &shortCuts($r,$allparms,$pscat,$keyorder);
$r->print(' ');
}
# return a hash
@@ -1844,8 +1410,8 @@ sub lookUpTableParameter {
'contentopen' => 'time_settings',
'contentclose' => 'time_settings',
'discussend' => 'time_settings',
- 'printstartdate' => 'time_settings',
- 'printenddate' => 'time_settings',
+ 'printopendate' => 'time_settings',
+ 'printclosedate' => 'time_settings',
'weight' => 'grading',
'handgrade' => 'grading',
'maxtries' => 'tries',
@@ -1865,7 +1431,6 @@ sub lookUpTableParameter {
'buttonshide' => 'hiding',
'turnoffeditor' => 'hiding',
'encrypturl' => 'hiding',
- 'deeplink' => 'hiding',
'randomorder' => 'high_level_randomization',
'randompick' => 'high_level_randomization',
'available' => 'slots',
@@ -1881,9 +1446,8 @@ sub lookUpTableParameter {
'lenient' => 'grading',
'retrypartial' => 'tries',
'discussvote' => 'misc',
- 'texdisplay' => 'misc',
- 'examcode' => 'high_level_randomization',
- );
+ 'examcode' => 'high_level_randomization',
+ );
}
sub whatIsMyCategory {
@@ -1955,40 +1519,31 @@ sub parmboxes {
&whatIsMyCategory($tempparameter, \%categoryList);
}
#part to print the parm-list
- $Text::Wrap::columns=60;
- $Text::Wrap::separator=' ';
- $r->print(''."\n");
-
- #Print parameters
- for my $key (sort { $category_order{$a} <=> $category_order{$b} } keys %categoryList) {
- next if(@{$categoryList{$key}} == 0);
+ foreach my $key (sort { $category_order{$a} <=> $category_order{$b} } keys(%categoryList)) {
+ next if (@{$categoryList{$key}} == 0);
+ next if ($key eq '');
$r->print('
'
- .'
'
- .&mt($categories{$key})
- .' '."\n");
- foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {
- next if ($tempkey eq '');
+ .''.&mt($categories{$key}).' '."\n");
+ foreach my $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {
$r->print(''
.' print(' checked="checked"');
+ $r->print( ' checked="checked"');
}
- $r->print(' />'.($$allparms{$tempkey}=~/\S/ ?
- Text::Wrap::wrap('',' 'x4,$$allparms{$tempkey})
- : $tempkey)
+ $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}
+ : $tempkey)
.' '."\n");
}
- $r->print("\n");
+ $r->print('
');
}
-
- $r->print("\n");
+ $r->print("\n");
}
#
# This function offers some links on the parameter section to get with one click a group a parameters
#
sub shortCuts {
- my ($r)=@_;
+ my ($r,$allparms,$pscat,$keyorder)=@_;
# Parameter Selection
$r->print(
@@ -2047,60 +1602,21 @@ sub partmenu {
}
sub usermenu {
- my ($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,$usersgroups,$pssymb)=@_;
+ my ($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,$usersgroups)=@_;
my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.
- &Apache::loncommon::selectstudent_link('parmform','uname','udom','condition').
- &Apache::lonhtmlcommon::scripttag(< '.
- $stuonly.' '.
- ' '.
- &mt('any role').' ';
my $sections='';
my %sectionhash = &Apache::loncommon::get_sections();
my $groups;
- my %grouphash;
- if (($pssymb) || &Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
- %grouphash = &Apache::longroup::coursegroups();
- } elsif ($env{'request.course.groups'} ne '') {
- map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
- }
+ my %grouphash = &Apache::longroup::coursegroups();
my $g_s_header='';
my $g_s_footer='';
- my $currsec = $env{'request.course.sec'};
- if ($currsec) {
- $sections=&mt('Section:').' '.$currsec;
- if (%grouphash) {
- $sections .= ';'.(' ' x2);
- }
- } elsif (%sectionhash && $currsec eq '') {
+ if (%sectionhash) {
$sections=&mt('Section:').' ';
}
- if (%sectionhash && %grouphash && $parmlev ne 'full' && $currsec eq '') {
+ if (%sectionhash && %grouphash && $parmlev ne 'full') {
$sections .= ' '.&mt('or').' ';
$sections .= qq|
|;
- } elsif ($currsec eq '') {
+ } else {
$sections .= qq|
@@ -2942,7 +2291,7 @@ ENDPARMSELSCRIPT
$r->print(&Apache::lonhtmlcommon::start_pick_box(undef,'parmlevel'));
&levelmenu($r,\%alllevs,$parmlev);
$r->print(&Apache::lonhtmlcommon::row_closure());
- &mapmenu($r,\%allmaps,$pschp,\%maptitles,\%symbp,$parmlev);
+ &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp);
$r->print(&Apache::lonhtmlcommon::row_closure());
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));
&partmenu($r,\%allparts,\@psprt);
@@ -2951,12 +2300,12 @@ ENDPARMSELSCRIPT
# Step 2
$r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification'),'parmstep2'));
- &displaymenu($r,\%allparms,\@pscat,\%keyorder,'parmmenuscroll');
+ &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder,'parmmenuscroll');
# Step 3
$r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)'),'parmstep3'));
$r->print(&Apache::lonhtmlcommon::start_pick_box());
- &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups,$pssymb);
+ &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);
$r->print(&Apache::lonhtmlcommon::row_closure(1));
$r->print(&Apache::lonhtmlcommon::end_pick_box());
@@ -2979,7 +2328,6 @@ ENDPARMSELSCRIPT
.''
.'');
} else {
- $r->print();
# parameter screen for a single resource.
my ($map,$iid,$resource)=&Apache::lonnet::decode_symb($pssymb);
my $title = &Apache::lonnet::gettitle($pssymb);
@@ -2989,13 +2337,7 @@ ENDPARMSELSCRIPT
' ');
$r->print(&Apache::lonhtmlcommon::topic_bar('',&mt('Additional Display Specification (optional)')));
$r->print(&Apache::lonhtmlcommon::start_pick_box());
- $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')).
- ''.
- ' '.
- &mt('Show all parts').
- ' ');
- &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups,$pssymb);
+ &usermenu($r,$uname,$id,$udom,$csec,$cgroup,$parmlev,\@usersgroups);
$r->print(&Apache::lonhtmlcommon::row_closure(1));
$r->print(&Apache::lonhtmlcommon::end_pick_box());
$r->print(''
@@ -3024,11 +2366,6 @@ ENDPARMSELSCRIPT
my @catmarker=map { tr|.|_|; 'parameter_'.$_; } @pscat;
my $csuname=$env{'user.name'};
my $csudom=$env{'user.domain'};
- my $readonly = 1;
- if ($parm_permission->{'edit'}) {
- undef($readonly);
- }
- $r->print('
');
if ($parmlev eq 'full') {
#
@@ -3051,7 +2388,7 @@ ENDPARMSELSCRIPT
$userspan ++;
}
$r->print('
');
- $r->print(&mt("User")." $uname ".&mt('at Domain')." $udom ");
+ $r->print(&mt('User [_1] at Domain [_2]',"'".$uname."'","'".$udom."'").'');
}
my %lt=&Apache::lonlocal::texthash(
'pie' => "Parameter in Effect",
@@ -3114,9 +2451,8 @@ ENDTABLEHEADFOUR
my $defbgtwo='';
my $defbgthree = '';
- foreach (@ids) {
+ foreach my $rid (@ids) {
- my $rid=$_;
my ($inmapid)=($rid=~/\.(\d+)$/);
if ((!$pssymb &&
@@ -3148,24 +2484,20 @@ ENDTABLEHEADFOUR
my %type= ();
my %default=();
my $uri=&Apache::lonnet::declutter($uris{$rid});
- my $toolsymb;
- if ($uri =~ /ext\.tool$/) {
- $toolsymb = $symbp{$rid};
- }
my $filter=$env{'form.filter'};
foreach (&keysplit($keyp{$rid})) {
my $tempkeyp = $_;
if (grep $_ eq $tempkeyp, @catmarker) {
- my $parmname=&Apache::lonnet::metadata($uri,$_.'.name',$toolsymb);
+ my $parmname=&Apache::lonnet::metadata($uri,$_.'.name');
# We may only want certain parameters listed
if ($filter) {
unless ($filter=~/\Q$parmname\E/) { next; }
}
$name{$_}=$parmname;
- $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part',$toolsymb);
+ $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part');
- my $parmdis=&Apache::lonnet::metadata($uri,$_.'.display',$toolsymb);
+ my $parmdis=&Apache::lonnet::metadata($uri,$_.'.display');
if ($allparms{$name{$_}} ne '') {
my $identifier;
if ($parmdis =~ /(\s*\[Part.*)$/) {
@@ -3177,9 +2509,9 @@ ENDTABLEHEADFOUR
}
unless ($display{$_}) { $display{$_}=''; }
$display{$_}.=' ('.$name{$_}.')';
- $default{$_}=&Apache::lonnet::metadata($uri,$_,$toolsymb);
- $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type',$toolsymb);
- $thistitle=&Apache::lonnet::metadata($uri,$_.'.title',$toolsymb);
+ $default{$_}=&Apache::lonnet::metadata($uri,$_);
+ $type{$_}=&Apache::lonnet::metadata($uri,$_.'.type');
+ $thistitle=&Apache::lonnet::metadata($uri,$_.'.title');
}
}
my $totalparms=scalar keys %name;
@@ -3218,7 +2550,7 @@ ENDTABLEHEADFOUR
&print_row($r,$_,\%part,\%name,\%symbp,$rid,\%default,
\%type,\%display,$defbgone,$defbgtwo,
$defbgthree,$parmlev,$uname,$udom,$csec,
- $cgroup,\@usersgroups,$noeditgrp,$readonly);
+ $cgroup,\@usersgroups);
}
}
}
@@ -3242,7 +2574,7 @@ ENDTABLEHEADFOUR
#-------------------------------------------- for each map, gather information
my $mapid;
- foreach $mapid (sort { $a <=> $b } keys(%maplist)) {
+ foreach $mapid (sort {$maplist{$a} cmp $maplist{$b}} keys %maplist) {
my $maptitle = $maplist{$mapid};
#----------------------- loop through ids and get all parameter types for map
@@ -3264,10 +2596,6 @@ ENDTABLEHEADFOUR
if ($map eq $mapid) {
my $uri=&Apache::lonnet::declutter($uris{$rid});
- my $toolsymb;
- if ($uri =~ /ext\.tool$/) {
- $toolsymb = $symbp{$rid};
- }
# $r->print("Keys: $keyp{$rid} \n");
#--------------------------------------------------------------------
@@ -3284,8 +2612,8 @@ ENDTABLEHEADFOUR
if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
$part{$tempkeyp}="0";
- $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name',$toolsymb);
- my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display',$toolsymb);
+ $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+ my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
if ($allparms{$name{$tempkeyp}} ne '') {
my $identifier;
if ($parmdis =~ /(\s*\[Part.*)$/) {
@@ -3298,8 +2626,8 @@ ENDTABLEHEADFOUR
unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
$display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
$display{$tempkeyp} =~ s/_\w+_/_0_/;
- $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp,$toolsymb);
- $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type',$toolsymb);
+ $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+ $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
}
} # end loop through keys
}
@@ -3345,8 +2673,7 @@ ENDTABLEHEADFOUR
$r->print(&Apache::loncommon::start_data_table_row());
&print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
\%type,\%display,$defbgone,$defbgtwo,$defbgthree,
- $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp,
- $readonly);
+ $parmlev,$uname,$udom,$csec,$cgroup);
}
$r->print(&Apache::loncommon::end_data_table().''
.''
@@ -3373,10 +2700,6 @@ ENDTABLEHEADFOUR
my $rid = $_;
my $uri=&Apache::lonnet::declutter($uris{$rid});
- my $toolsymb;
- if ($uri =~ /ext\.tool$/) {
- $toolsymb = $symbp{$rid};
- }
#--------------------------------------------------------------------
# @catmarker contains list of all possible parameters including part #s
@@ -3391,8 +2714,8 @@ ENDTABLEHEADFOUR
$tempkeyp =~ s/_\w+_/_0_/;
if ((grep $_ eq $fullkeyp, @catmarker) &&(!$name{$tempkeyp})) {
$part{$tempkeyp}="0";
- $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name',$toolsymb);
- my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display',$toolsymb);
+ $name{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.name');
+ my $parmdis=&Apache::lonnet::metadata($uri,$fullkeyp.'.display');
if ($allparms{$name{$tempkeyp}} ne '') {
my $identifier;
if ($parmdis =~ /(\s*\[Part.*)$/) {
@@ -3405,8 +2728,8 @@ ENDTABLEHEADFOUR
unless ($display{$tempkeyp}) { $display{$tempkeyp}=''; }
$display{$tempkeyp}.=' ('.$name{$tempkeyp}.')';
$display{$tempkeyp} =~ s/_\w+_/_0_/;
- $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp,$toolsymb);
- $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type',$toolsymb);
+ $default{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp);
+ $type{$tempkeyp}=&Apache::lonnet::metadata($uri,$fullkeyp.'.type');
}
} # end loop through keys
} # end loop through ids
@@ -3440,18 +2763,17 @@ ENDMAPONE
foreach (&keysinorder(\%name,\%keyorder)) {
$r->print(&Apache::loncommon::start_data_table_row());
&print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default,
- \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
- $parmlev,$uname,$udom,$csec,$cgroup,'',$noeditgrp,
- $readonly);
+ \%type,\%display,$defbgone,$defbgtwo,$defbgthree,
+ $parmlev,$uname,$udom,$csec,$cgroup);
}
$r->print(&Apache::loncommon::end_data_table()
.''
.''
);
} # end of $parmlev eq general
- $r->print('');
}
$r->print('');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
} # end sub assessparms
@@ -3461,19 +2783,12 @@ ENDMAPONE
my $tableopen;
sub tablestart {
- my ($readonly) = @_;
if ($tableopen) {
- return '';
+ return '';
} else {
- $tableopen=1;
- my $output = &Apache::loncommon::start_data_table().''.&mt('Parameter').' ';
- if ($readonly) {
- $output .= ''.&mt('Current value').' ';
- } else {
- $output .= ''.&mt('Delete').' '.&mt('Set to ...').' ';
- }
- $output .= ' ';
- return $output;
+ $tableopen=1;
+ return &Apache::loncommon::start_data_table().''.&mt('Parameter').' '.
+ &mt('Delete').' '.&mt('Set to ...').' ';
}
}
@@ -3506,11 +2821,7 @@ sub readdata {
}
}
}
- if (wantarray) {
- return ($resourcedata,$classlist);
- } else {
- return $resourcedata;
- }
+ return $resourcedata;
}
@@ -3526,95 +2837,47 @@ sub storedata {
my @deldata=();
undef @deldata;
my ($got_chostname,$chostname,$cmajor,$cminor);
- my $now = time;
foreach my $key (keys(%env)) {
if ($key =~ /^form\.([a-z]+)\_(.+)$/) {
my $cmd=$1;
my $thiskey=$2;
- next if ($cmd eq 'setipallow' || $cmd eq 'setipdeny' || $cmd eq 'setdeeplink');
my ($tuname,$tudom)=&extractuser($thiskey);
my $tkey=$thiskey;
if ($tuname) {
$tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
}
if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
- my ($data, $typeof, $text, $name, $valchk, $valmatch, $namematch);
+ my ($data, $typeof, $text, $name);
if ($cmd eq 'set') {
$data=$env{$key};
- $valmatch = '';
- $valchk = $data;
$typeof=$env{'form.typeof_'.$thiskey};
$text = &mt('Saved modified parameter for');
if ($typeof eq 'string_questiontype') {
$name = 'type';
- } elsif ($typeof eq 'string_deeplink') {
- ($name) = ($typeof =~ /^string_(deeplink)$/);
- my $stringmatch = &standard_string_matches($typeof);
- if (ref($stringmatch) eq 'ARRAY') {
- foreach my $item (@{$stringmatch}) {
- if (ref($item) eq 'ARRAY') {
- my ($regexpname,$pattern) = @{$item};
- if ($pattern ne '') {
- if ($data =~ /$pattern/) {
- $valmatch = $regexpname;
- $valchk = '';
- last;
- }
- }
- }
- }
- }
} elsif ($typeof eq 'string_lenient') {
$name = 'lenient';
} elsif ($typeof eq 'string_discussvote') {
$name = 'discussvote';
} elsif ($typeof eq 'string_examcode') {
- $name = 'examcode';
- if (&Apache::lonnet::validCODE($data)) {
- $valchk = 'valid';
- }
+ $name = 'examcode';
} elsif ($typeof eq 'string_yesno') {
if ($thiskey =~ /\.retrypartial$/) {
$name = 'retrypartial';
}
- } elsif ($typeof eq 'string_tex') {
- $name = 'texdisplay';
}
- } elsif ($cmd eq 'datepointer') {
- $data=&Apache::lonhtmlcommon::get_date_from_form($env{$key});
- $typeof=$env{'form.typeof_'.$thiskey};
- $text = &mt('Saved modified date for');
- if ($typeof eq 'date_start') {
- if ($thiskey =~ /\.printstartdate$/) {
- $name = 'printstartdate';
- if (($data) && ($data > $now)) {
- $valchk = 'future';
- }
- }
- } elsif ($typeof eq 'date_end') {
- if ($thiskey =~ /\.printenddate$/) {
- $name = 'printenddate';
- if (($data) && ($data < $now)) {
- $valchk = 'past';
+ if ($name ne '') {
+ my ($needsrelease,$needsnewer);
+ $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$data"};
+ if ($needsrelease) {
+ unless ($got_chostname) {
+ ($chostname,$cmajor,$cminor)=¶meter_release_vars();
+ $got_chostname = 1;
}
+ $needsnewer = ¶meter_releasecheck($name,$data,
+ $needsrelease,
+ $chostname,$cmajor,
+ $cminor);
}
- }
- } elsif ($cmd eq 'dateinterval') {
- $data=&get_date_interval_from_form($thiskey);
- $typeof=$env{'form.typeof_'.$thiskey};
- $text = &mt('Saved modified date for');
- }
- if ($name ne '') {
- my ($needsrelease,$needsnewer);
- $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$valchk"};
- if ($needsrelease) {
- unless ($got_chostname) {
- ($chostname,$cmajor,$cminor)=¶meter_release_vars();
- $got_chostname = 1;
- }
- $needsnewer = ¶meter_releasecheck($name,$valchk,
- $needsrelease,
- $cmajor,$cminor);
if ($needsnewer) {
$r->print(' '.&oldversion_warning($name,$data,
$chostname,$cmajor,
@@ -3622,6 +2885,14 @@ sub storedata {
next;
}
}
+ } elsif ($cmd eq 'datepointer') {
+ $data=&Apache::lonhtmlcommon::get_date_from_form($env{$key});
+ $typeof=$env{'form.typeof_'.$thiskey};
+ $text = &mt('Saved modified date for');
+ } elsif ($cmd eq 'dateinterval') {
+ $data=&get_date_interval_from_form($thiskey);
+ $typeof=$env{'form.typeof_'.$thiskey};
+ $text = &mt('Saved modified date for');
}
if (defined($data) and $$olddata{$thiskey} ne $data) {
if ($tuname) {
@@ -3665,7 +2936,7 @@ sub storedata {
if (&Apache::lonnet::del('resourcedata',\@deldata,$dom,$crs) eq 'ok') {
my %loghash=map { $_ => '' } @deldata;
&log_parmset(\%loghash,1);
- $r->print(''.&mt('Deleted [quant,_1,parameter]',$delentries/2).' ');
+ $r->print(''.&mt('Deleted [_1] parameter(s)',$delentries).' ');
} else {
$r->print(''.
&mt('Error deleting parameters').'
');
@@ -3675,7 +2946,7 @@ sub storedata {
if ($putentries) {
if (&Apache::lonnet::put('resourcedata',\%newdata,$dom,$crs) eq 'ok') {
&log_parmset(\%newdata,0);
- $r->print(''.&mt('Saved [quant,_1,parameter]',$putentries/2).' ');
+ $r->print(''.&mt('Saved [_1] parameter(s)',$putentries/2).' ');
} else {
$r->print(''.
&mt('Error saving parameters').'
');
@@ -3710,7 +2981,7 @@ sub parse_listdata_key {
}
sub listdata {
- my ($r,$resourcedata,$listdata,$sortorder,$caller,$classlist,$readonly,$parmlev)=@_;
+ my ($r,$resourcedata,$listdata,$sortorder)=@_;
# Start list output
my $oldsection='';
@@ -3720,17 +2991,6 @@ sub listdata {
$tableopen=0;
my $foundkeys=0;
my %keyorder=&standardkeyorder();
- my $readonlyall = $readonly;
-
- my ($secidx,%grouphash);
- if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
- $secidx = &Apache::loncoursedata::CL_SECTION();
- if (&Apache::lonnet::allowed('mdg',$env{'request.course.id'})) {
- %grouphash = &Apache::longroup::coursegroups();
- } elsif ($env{'request.course.groups'} ne '') {
- map { $grouphash{$_} = 1; } split(/:/,$env{'request.course.groups'});
- }
- }
foreach my $thiskey (sort {
my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);
@@ -3774,55 +3034,29 @@ sub listdata {
} keys %{$listdata}) {
if ($$listdata{$thiskey.'.type'}) {
- my $thistype=$$listdata{$thiskey.'.type'};
- if ($$resourcedata{$thiskey.'.type'}) {
- $thistype=$$resourcedata{$thiskey.'.type'};
+ my $thistype=$$listdata{$thiskey.'.type'};
+ if ($$resourcedata{$thiskey.'.type'}) {
+ $thistype=$$resourcedata{$thiskey.'.type'};
}
my ($middle,$part,$name)=
($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
my $section=&mt('All Students');
- $readonly = $readonlyall;
- my $userscope;
- my $showval = $$resourcedata{$thiskey};
if ($middle=~/^\[(.*)\]/) {
- my $issection=$1;
- if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
- my ($stuname,$studom) = ($1,$2);
- if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
- if (ref($classlist) eq 'HASH') {
- if (ref($classlist->{$stuname.':'.$studom}) eq 'ARRAY') {
- next unless ($classlist->{$stuname.':'.$studom}->[$secidx] eq $env{'request.course.sec'});
- }
- }
- }
- $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
- $userscope = 1;
- } else {
- if (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
- if (exists($grouphash{$issection})) {
- $section=&mt('Group').': '.$issection;
- } elsif ($issection eq $env{'request.course.sec'}) {
- $section = &mt('Section').': '.$issection;
- } else {
- next;
- }
- } else {
- $section=&mt('Group/Section').': '.$issection;
- }
- }
- $middle=~s/^\[(.*)\]//;
- } elsif (($env{'request.course.sec'} ne '') && ($caller eq 'overview')) {
- $readonly = 1;
+ my $issection=$1;
+ if ($issection=~/^useropt\:($match_username)\:($match_domain)/) {
+ $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2);
+ } else {
+ $section=&mt('Group/Section').': '.$issection;
+ }
+ $middle=~s/^\[(.*)\]//;
}
$middle=~s/\.+$//;
$middle=~s/^\.+//;
my $realm=''.&mt('All Resources').' ';
-
if ($middle=~/^(.+)\_\_\_\(all\)$/) {
$realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).' ('.$1.') ';
} elsif ($middle) {
my ($map,$id,$url)=&Apache::lonnet::decode_symb($middle);
- next if (($url =~ /\.(page|sequence)$/) && ($parmlev eq 'full') && ($caller eq 'newoverview'));
$realm=''.&mt('Resource').': '.&Apache::lonnet::gettitle($middle).' ('.$url.' in '.$map.' id: '.$id.') ';
}
if ($sortorder eq 'realmstudent') {
@@ -3857,57 +3091,36 @@ sub listdata {
# Ready to print
#
my $parmitem = &standard_parameter_names($name);
- $r->print(&tablestart($readonly).
+ $r->print(&tablestart().
&Apache::loncommon::start_data_table_row().
''.&mt($parmitem).
- ' ');
- unless ($readonly) {
- my $disabled;
- if (($name eq 'availablestudent') &&
- (($showval eq '') || ($userscope))) {
- $disabled = ' disabled="disabled"';
- }
- $r->print(' ');
- }
- $r->print('');
+ ' ');
$foundkeys++;
if (&isdateparm($thistype)) {
- my $jskey='key_'.$pointer;
- my $state;
- $pointer++;
- if ($readonly) {
- $state = 'disabled';
- }
- $r->print(
- &Apache::lonhtmlcommon::date_setter('parmform',
- $jskey,
- $$resourcedata{$thiskey},
- '',1,$state));
- unless ($readonly) {
- $r->print(
+ my $jskey='key_'.$pointer;
+ $pointer++;
+ $r->print(
+ &Apache::lonhtmlcommon::date_setter('parmform',
+ $jskey,
+ $$resourcedata{$thiskey},
+ '',1,'','').
' '.
(($$resourcedata{$thiskey}!=0)?''.
&mt('Shift all dates based on this date').' ':'').
&date_sanity_info($$resourcedata{$thiskey})
);
- }
} elsif ($thistype eq 'date_interval') {
- $r->print(&date_interval_selector($thiskey,$name,
- $$resourcedata{$thiskey},$readonly));
+ $r->print(&date_interval_selector($thiskey,
+ $$resourcedata{$thiskey}));
} elsif ($thistype =~ m/^string/) {
- if ($name eq 'availablestudent') {
- $readonly = 1;
- }
- $r->print(&string_selector($thistype,$thiskey,
- $$resourcedata{$thiskey},$name,$readonly));
+ $r->print(&string_selector($thistype,$thiskey,
+ $$resourcedata{$thiskey},$name));
} else {
- $r->print(&default_selector($thiskey,$$resourcedata{$thiskey},$readonly));
- }
- unless ($readonly) {
- $r->print(' ');
+ $r->print(&default_selector($thiskey,$$resourcedata{$thiskey}));
}
+ $r->print(' ');
$r->print(' '.&Apache::loncommon::end_data_table_row());
}
}
@@ -3916,9 +3129,8 @@ sub listdata {
sub date_interval_selector {
- my ($thiskey, $pname, $showval, $readonly) = @_;
- my ($result,%skipval);
- my $currval = $showval;
+ my ($thiskey, $showval) = @_;
+ my $result;
foreach my $which (['days', 86400, 31],
['hours', 3600, 23],
['minutes', 60, 59],
@@ -3928,65 +3140,11 @@ sub date_interval_selector {
$showval %= $factor;
my %select = ((map {$_ => $_} (0..$max)),
'select_form_order' => [0..$max]);
- if ($currval eq '') {
- unshift(@{$select{'select_form_order'}},'');
- $select{''} = '';
- $amount = '';
- }
$result .= &Apache::loncommon::select_form($amount,$name.'_'.$thiskey,
- \%select,'',$readonly);
+ \%select);
$result .= ' '.&mt($name);
}
- if ($pname eq 'interval') {
- unless ($skipval{'done'}) {
- my $checkedon = '';
- my $checkedoff = '';
- my $checkedproc = '';
- my $currproctorkey = '';
- my $currprocdisplay = 'hidden';
- my $currdonetext = &mt('Done');
- my $checkedoff = ' checked="checked"';
- if ($currval =~ /^(?:\d+)_done$/) {
- $checkedon = ' checked="checked"';
- } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:$/) {
- $currdonetext = $1;
- $checkedon = ' checked="checked"';
- } elsif ($currval =~ /^(?:\d+)_done_proctor_(.+)$/) {
- $currproctorkey = $1;
- $checkedproc = ' checked="checked"';
- $currprocdisplay = 'text';
- } elsif ($currval =~ /^(?:\d+)_done\:([^\:]+)\:_proctor_(.+)$/) {
- $currdonetext = $1;
- $currproctorkey = $2;
- $checkedproc = ' checked="checked"';
- $currprocdisplay = 'text';
- } elsif ($currval ne '') {
- $checkedoff = ' checked="checked"';
- } else {
- $currdonetext = '';
- }
- my $onclick = ' onclick="toggleSecret(this.form,'."'done_','$thiskey'".');"';
- my $disabled;
- if ($readonly) {
- $disabled = ' disabled="disabled"';
- }
- $result .= ''.&mt('Include "done" button').
- ' '.
- &mt('No').' '.(' 'x2).
- ' '.
- &mt('Yes').' '.(' 'x2).
- ' '.
- &mt('Yes, with proctor key').' '.
- ' &').'"'.$disabled.' /> '.
- ''.&mt('Button text').': '.
- ' &').'"'.$disabled.' /> ';
- }
- }
- unless ($readonly) {
- $result .= ' ';
- }
+ $result .= ' ';
return $result;
}
@@ -3994,363 +3152,24 @@ sub date_interval_selector {
sub get_date_interval_from_form {
my ($key) = @_;
my $seconds = 0;
- my $numnotnull = 0;
foreach my $which (['days', 86400],
['hours', 3600],
['minutes', 60],
['seconds', 1]) {
my ($name, $factor) = @{ $which };
if (defined($env{'form.'.$name.'_'.$key})) {
- unless ($env{'form.'.$name.'_'.$key} eq '') {
- $numnotnull ++;
- $seconds += $env{'form.'.$name.'_'.$key} * $factor;
- }
+ $seconds += $env{'form.'.$name.'_'.$key} * $factor;
}
}
- if (($key =~ /\.interval$/) &&
- (($env{'form.done_'.$key} eq '_done') || ($env{'form.done_'.$key} eq '_done_proctor'))) {
- if ($env{'form.done_'.$key.'_buttontext'}) {
- $env{'form.done_'.$key.'_buttontext'} =~ s/\://g;
- $seconds .= '_done:'.$env{'form.done_'.$key.'_buttontext'}.':';
- if ($env{'form.done_'.$key} eq '_done_proctor') {
- $seconds .= '_proctor';
- }
- } else {
- $seconds .= $env{'form.done_'.$key};
- }
- if (($env{'form.done_'.$key} eq '_done_proctor') &&
- ($env{'form.done_'.$key.'_proctorkey'})) {
- $seconds .= '_'.$env{'form.done_'.$key.'_proctorkey'};
- }
- }
- return if (!$numnotnull);
return $seconds;
}
sub default_selector {
- my ($thiskey, $showval, $readonly) = @_;
- my $disabled;
- if ($readonly) {
- $disabled = ' disabled="disabled"';
- }
- return ' ';
-}
-
-sub string_ip_selector {
- my ($thiskey, $showval, $readonly) = @_;
- my %access = (
- allow => [],
- deny => [],
- );
- if ($showval ne '') {
- my @current;
- if ($showval =~ /,/) {
- @current = split(/,/,$showval);
- } else {
- @current = ($showval);
- }
- foreach my $item (@current) {
- if ($item =~ /^\!([\[\]a-zA-Z\.\d\*\-]+)$/) {
- push(@{$access{'deny'}},$1);
- } elsif ($item =~ /^([\[\]a-zA-Z\.\d\*\-]+)$/) {
- push(@{$access{'allow'}},$item);
- }
- }
- }
- if (!@{$access{'allow'}}) {
- @{$access{'allow'}} = ('');
- }
- if (!@{$access{'deny'}}) {
- @{$access{'deny'}} = ('');
- }
- my ($disabled,$addmore);
- if ($readonly) {
- $disabled=' disabled="disabled"';
- } else {
- $addmore = "\n".''.&mt('Add more').' ';
- }
- my $output = '
-'.&mt('Allow from').' '.&mt('Deny from').' ';
- foreach my $acctype ('allow','deny') {
- $output .= '
-
-
-
'."\n";
- my $num = 0;
- foreach my $curr (@{$access{$acctype}}) {
- $output .= '
'."\n";
- $num ++;
- }
- $output .= '
-
'.$addmore.'
-
- ';
- }
- $output .= '
-
-
'."\n";
- return $output;
-}
-
-sub string_deeplink_selector {
- my ($thiskey, $showval, $readonly) = @_;
- my (@tables,%values,@current,%titles,%options,%optiontext,%defaults,
- %selectnull,%domlti,%crslti,@possmenus,%components);
- @tables = ('upper','lower');
- %components = (
- upper => ['state','others','listing','scope'],
- lower => ['protect','menus','target','exit'],
- );
- %titles = &Apache::lonlocal::texthash (
- state => 'Access status',
- others => 'Hide other resources',
- listing => 'In Contents and/or Gradebook',
- scope => 'Access scope for link',
- protect => 'Link protection',
- menus => 'Menu Items Displayed',
- target => 'Embedded?',
- exit => 'Exit Tool Button?',
- );
- %options = (
- state => ['only','off','both'],
- others => ['hide','unhide'],
- listing => ['full','absent','grades','details','datestatus'],
- scope => ['res','map','rec'],
- protect => ['none','key','ltid','ltic'],
- menus => ['std','colls'],
- target => ['_self','_top'],
- exit => ['no','yes','url'],
- );
- %optiontext = &Apache::lonlocal::texthash (
- only => 'deep only',
- off => 'deeplink off',
- both => 'regular + deep',
- hide => 'Hidden',
- unhide => 'Unhidden',
- full => 'Listed (linked) in both',
- absent => 'Not listed',
- grades => 'Listed in grades only',
- details => 'Listed (unlinked) in both',
- datestatus => 'Listed (unlinked) inc. status in both',
- res => 'resource only',
- map => 'enclosing map/folder',
- rec => 'recursive map/folder',
- none => 'not in use',
- key => 'key access',
- ltic => 'LTI access (course)',
- ltid => 'LTI access (domain)' ,
- std => 'Standard (all menus)',
- colls => 'Numbered collection',
- _self => 'Embedded',
- _top => 'Not embedded',
- no => 'Not in use',
- yes => 'In use, no URL redirect',
- url => 'In use, redirect to URL',
- );
- %selectnull = &Apache::lonlocal::texthash (
- ltic => 'Select Launcher',
- ltid => 'Select Launcher',
- colls => 'Select',
- );
- if ($showval =~ /,/) {
- %values=();
- @current = split(/,/,$showval);
- ($values{'state'}) = ($current[0] =~ /^(only|off|both)$/);
- ($values{'others'}) = ($current[1] =~ /^(hide|unhide)$/);
- ($values{'listing'}) = ($current[2] =~ /^(full|absent|grades|details|datestatus)$/);
- ($values{'scope'}) = ($current[3] =~ /^(res|map|rec)$/);
- ($values{'protect'}) = ($current[4] =~ /^(key:[a-zA-Z\d_.!\@#\$%^&*()+=-]+|ltic:\d+|ltid:\d+)$/);
- ($values{'menus'}) = ($current[5] =~ /^(\d+)$/);
- ($values{'target'}) = ($current[6] =~ /^(_self|_top)$/);
- ($values{'exit'}) = ($current[7] =~ /^((?:(?:yes|url)(?:|\:[^:;"',]+))|no)$/);
- } else {
- $defaults{'state'} = 'off',
- $defaults{'others'} = 'unhide',
- $defaults{'listing'} = 'full';
- $defaults{'scope'} = 'res';
- $defaults{'protect'} = 'none';
- $defaults{'menus'} = '0';
- $defaults{'target'} = '_top';
- $defaults{'exit'} = 'yes';
- }
- my $disabled;
- if ($readonly) {
- $disabled=' disabled="disabled"';
- }
- my %courselti =
- &Apache::lonnet::get_course_lti($env{'course.'.$env{'request.course.id'}.'.num'},
- $env{'course.'.$env{'request.course.id'}.'.domain'},
- 'provider');
- foreach my $item (keys(%courselti)) {
- if (ref($courselti{$item}) eq 'HASH') {
- $crslti{$item} = $courselti{$item}{'name'};
- }
- }
- my %lti =
- &Apache::lonnet::get_domain_lti($env{'course.'.$env{'request.course.id'}.'.domain'},
- 'linkprot');
- foreach my $item (keys(%lti)) {
- if (($item =~ /^\d+$/) && (ref($lti{$item}) eq 'HASH')) {
- $domlti{$item} = $lti{$item}{'name'};
- }
- }
- if ($env{'course.'.$env{'request.course.id'}.'.menucollections'}) {
- foreach my $item (split(/;/,$env{'course.'.$env{'request.course.id'}.'.menucollections'})) {
- my ($num,$value) = split(/\%/,$item);
- if ($num =~ /^\d+$/) {
- push(@possmenus,$num);
- }
- }
- }
-
- my $output = ' ';
- foreach my $table ('upper','lower') {
- next unless (ref($components{$table}) eq 'ARRAY');
- $output .= ''."\n";
- if ($table eq 'upper') {
- $output .= ' ';
- }
- }
- return $output;
+ my ($thiskey, $showval) = @_;
+ return ' ';
}
-{
-
my %strings =
(
'string_yesno'
@@ -4365,7 +3184,7 @@ my %strings =
=> [[ 'problem', 'Standard Problem'],
[ 'survey', 'Survey'],
[ 'anonsurveycred', 'Anonymous Survey (credit for submission)'],
- [ 'exam', 'Exam'],
+ [ 'exam', 'Bubblesheet Exam'],
[ 'anonsurvey', 'Anonymous Survey'],
[ 'randomizetry', 'New Randomization Each N Tries (default N=1)'],
[ 'practice', 'Practice'],
@@ -4378,35 +3197,8 @@ my %strings =
=> [['yes','Yes'],
['notended','Yes, unless discussion ended'],
['no','No']],
- 'string_ip'
- => [['_allowfrom_','Hostname(s), or IP(s) from which access is allowed'],
- ['_denyfrom_','Hostname(s) or IP(s) from which access is disallowed']],
- 'string_deeplink'
- => [['on','Set choices for link protection, resource listing, access scope, shown menu items, embedding, and exit link']],
- 'string_tex'
- => [['tth', 'tth (TeX to HTML)'],
- ['mathjax', 'MathJax']],
);
-my %stringmatches = (
- 'string_ip'
- => [['_allowfrom_','[^\!]+'],
- ['_denyfrom_','\!']],
- 'string_deeplink'
- => [['on','^(only|off|both)\,(hide|unhide)\,(full|absent|grades|details|datestatus)\,(res|map|rec)\,(none|key\:\w+|ltic\:\d+|ltid\:\d+)\,(\d+|)\,_(self|top),(yes|url|no)(|:[^:;\'",]+)$']],
- );
-
-my %stringtypes = (
- type => 'string_questiontype',
- lenient => 'string_lenient',
- retrypartial => 'string_yesno',
- discussvote => 'string_discussvote',
- examcode => 'string_examcode',
- acc => 'string_ip',
- deeplink => 'string_deeplink',
- texdisplay => 'string_tex',
- );
-
sub standard_string_options {
my ($string_type) = @_;
if (ref($strings{$string_type}) eq 'ARRAY') {
@@ -4415,19 +3207,11 @@ sub standard_string_options {
return;
}
-sub standard_string_matches {
- my ($string_type) = @_;
- if (ref($stringmatches{$string_type}) eq 'ARRAY') {
- return $stringmatches{$string_type};
- }
- return;
-}
-
sub string_selector {
- my ($thistype, $thiskey, $showval, $name, $readonly) = @_;
+ my ($thistype, $thiskey, $showval, $name) = @_;
if (!exists($strings{$thistype})) {
- return &default_selector($thiskey,$showval,$readonly);
+ return &default_selector($thiskey,$showval);
}
my %skiptype;
@@ -4446,25 +3230,17 @@ sub string_selector {
$got_chostname = 1;
}
my $needsnewer=¶meter_releasecheck($name,$parmval,$needsrelease,
- $cmajor,$cminor);
+ $chostname,$cmajor,
+ $cminor);
if ($needsnewer) {
$skiptype{$parmval} = 1;
}
}
}
}
+
- if ($thistype eq 'string_ip') {
- return &string_ip_selector($thiskey,$showval,$readonly);
- } elsif ($thistype eq 'string_deeplink') {
- return &string_deeplink_selector($thiskey,$showval,$readonly);
- }
-
- my ($result,$disabled);
-
- if ($readonly) {
- $disabled = ' disabled="disabled"';
- }
+ my $result;
my $numinrow = 3;
if ($thistype eq 'string_problemstatus') {
$numinrow = 2;
@@ -4490,7 +3266,7 @@ sub string_selector {
$result .= ''.
''.
' 'string_questiontype',
- lenient => 'string_lenient',
- retrypartial => 'string_yesno',
- discussvote => 'string_discussvote',
- examcode => 'string_examcode',
- );
- if (exists($stringtypes{$name})) {
- if ($name eq 'examcode') {
- $desc = $value;
- } elsif (ref($strings{$stringtypes{$name}}) eq 'ARRAY') {
- foreach my $possibilities (@{ $strings{$stringtypes{$name}} }) {
- next unless (ref($possibilities) eq 'ARRAY');
- my ($parmval, $description) = @{ $possibilities };
- if ($parmval eq $value) {
- $desc = $description;
- last;
- }
- }
- }
- } elsif (($name eq 'printstartdate') || ($name eq 'printenddate')) {
- my $now = time;
- if ($value =~ /^\d+$/) {
- if ($name eq 'printstartdate') {
- if ($value > $now) {
- $desc = &Apache::lonlocal::locallocaltime($value);
- }
- } elsif ($name eq 'printenddate') {
- if ($value < $now) {
- $desc = &Apache::lonlocal::locallocaltime($value);
- }
- }
- }
- }
- my $standard_name = &standard_parameter_names($name);
- return ''.
- &mt('[_1] was [_2]not[_3] set to [_4].',
- $standard_name,'',' ','"'.$desc.'"').' '.
- &mt('LON-CAPA version ([_1]) installed on home server ([_2]) does not meet version requirements ([_3] or newer).',
- $cmajor.'.'.$cminor,$chostname,
- $needsrelease).
- '
';
-}
-
-}
-
#
# Shift all start and end dates by $shift
#
sub dateshift {
- my ($shift,$numchanges)=@_;
+ my ($shift)=@_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
- my $secgrpregex;
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $secgrpregex = '(?:'.join('|',($sec,@groups)).')';
- } else {
- $secgrpregex = $sec;
- }
- }
my %data=&Apache::lonnet::dump('resourcedata',$dom,$crs);
# ugly retro fix for broken version of types
foreach my $key (keys %data) {
@@ -4597,11 +3311,7 @@ sub dateshift {
# go through all parameters and look for dates
foreach my $key (keys %data) {
if ($data{$key.'.type'}=~/^date_(start|end)$/) {
- if ($sec ne '') {
- next unless ($key =~ /^$env{'request.course.id'}\.\[$secgrpregex\]\./);
- }
my $newdate=$data{$key}+$shift;
- $$numchanges ++;
$storecontent{$key}=$newdate;
}
}
@@ -4615,14 +3325,11 @@ sub dateshift {
}
sub newoverview {
- my ($r,$parm_permission) = @_;
+ my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $readonly = 1;
- if ($parm_permission->{'edit'}) {
- undef($readonly);
- }
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
text=>"Overview Mode"});
@@ -4635,10 +3342,6 @@ sub newoverview {
'.
&Apache::lonhtmlcommon::resize_scrollbox_js('params')."\n".
&showhide_js()."\n".
- &validateparms_js()."\n".
- &ipacc_boxes_js()."\n".
- &done_proctor_js()."\n".
- &deeplink_js()."\n".
'// ]]>
';
@@ -4646,8 +3349,9 @@ sub newoverview {
{'add_entries' => \%loaditems,});
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
+ ');
+ §ionmenu($r,\@selected_sections);
+ $r->print(' ');
+ &groupmenu($r,\@selected_groups);
+ $r->print(' ');
+ #$r->print('');
$r->print(&Apache::lonhtmlcommon::row_closure(1));
$r->print(&Apache::lonhtmlcommon::end_pick_box());
$r->print('');
@@ -4777,13 +3470,12 @@ ENDOVER
# List data
- &listdata($r,$resourcedata,$listdata,$sortorder,'newoverview',undef,$readonly,$parmlev);
+ &listdata($r,$resourcedata,$listdata,$sortorder);
}
- $r->print(&tableend());
- unless ($readonly) {
- $r->print(((($env{'form.store'}) || ($env{'form.dis'}))?'
':''));
- }
- $r->print('');
+ $r->print(&tableend().
+ ((($env{'form.store'}) || ($env{'form.dis'}))?'
':'').
+ '');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4823,63 +3515,39 @@ sub secgroup_lister {
}
sub overview {
- my ($r,$parm_permission) = @_;
+ my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
- my $js = ''."\n";
- my $readonly = 1;
- if ($parm_permission->{'edit'}) {
- undef($readonly);
- }
+
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
text=>"Overview Mode"});
- my $start_page=&Apache::loncommon::start_page('Modify Parameters',$js);
+ my $start_page=&Apache::loncommon::start_page('Modify Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
- $r->print(''.&Apache::loncommon::end_page());
+ $r->print(&tableend().''.
+ ($foundkeys?' ':''.&mt('There are no parameters.').' ').'
'.
+ &Apache::loncommon::end_page());
}
sub clean_parameters {
@@ -4941,8 +3609,10 @@ ENDOVER
$r->print(&mt('All users'));
} elsif ($data{'scope_type'} eq 'user') {
$r->print(&mt('User: [_1]',join(':',@{$data{'scope'}})));
- } elsif ($data{'scope_type'} eq 'secgroup') {
- $r->print(&mt('Group/Section: [_1]',$data{'scope'}));
+ } elsif ($data{'scope_type'} eq 'section') {
+ $r->print(&mt('Section: [_1]',$data{'scope'}));
+ } elsif ($data{'scope_type'} eq 'group') {
+ $r->print(&mt('Group: [_1]',$data{'scope'}));
}
$r->print(' ');
if ($data{'realm_type'} eq 'all') {
@@ -4953,8 +3623,8 @@ ENDOVER
my ($map,$resid,$url) =
&Apache::lonnet::decode_symb($data{'realm'});
$r->print(&mt('Resource: [_1]with ID: [_2]in folder [_3]',
- $url.' ',
- $resid.' ',$map));
+ $url.' ',
+ $resid.' ',$map));
}
$r->print(' '.&mt('Part: [_1]',$data{'parameter_part'}));
$r->print('');
@@ -4964,6 +3634,7 @@ ENDOVER
$r->print(&Apache::loncommon::end_data_table().''.
' '.
'
');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4971,24 +3642,14 @@ sub date_shift_one {
my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
text=>"Shifting Dates"});
- my $submit_text = &mt('Shift all dates accordingly');
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $submit_text = &mt("Shift dates set just for your section/group(s), accordingly");
- } else {
- $submit_text = &mt("Shift dates set just for your section, accordingly");
- }
- }
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print('');
+ ' ');
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -5008,57 +3670,26 @@ sub date_shift_two {
my ($r) = @_;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $sec = $env{'request.course.sec'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=dateshift1&timebase='.$env{'form.timebase'},
text=>"Shifting Dates"});
my $start_page=&Apache::loncommon::start_page('Shift Dates');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift');
$r->print($start_page.$breadcrumbs);
+ &startSettingsScreen($r,'parmset',$crstype);
my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted');
- $r->print(''.&mt('Shift Dates').' ');
- if ($sec ne '') {
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- }
- if (@groups) {
- $r->print(''.
- &mt("Shift dates set just for your section/group(s), such that [_1] becomes [_2]",
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- } else {
- $r->print(''.
- &mt("Shift dates set just for your section, such that [_1] becomes [_2]",
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- }
- } else {
- $r->print(''.&mt('Shifting all dates such that [_1] becomes [_2]',
- &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
- &Apache::lonlocal::locallocaltime($timeshifted)).
- '
');
- }
+ $r->print(''.&mt('Shift Dates').' '.
+ ''.&mt('Shifting all dates such that [_1] becomes [_2]',
+ &Apache::lonlocal::locallocaltime($env{'form.timebase'}),
+ &Apache::lonlocal::locallocaltime($timeshifted)).'
');
my $delta=$timeshifted-$env{'form.timebase'};
- my $numchanges = 0;
- my $result = &dateshift($delta,\$numchanges);
- if ($result eq 'ok') {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('Completed shifting of [quant,_1,date setting]',
- $numchanges)));
- } elsif ($result eq 'con_delayed') {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('Queued shifting of [quant,_1,date setting]',
- $numchanges)));
- } else {
- $r->print(
- &Apache::lonhtmlcommon::confirm_success(&mt('An error occurred attempting to shift dates'),1));
- }
+ &dateshift($delta);
$r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Done')).
' '.
&Apache::lonhtmlcommon::actionbox(
[''.&mt('Content and Problem Settings').' ']));
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -5074,7 +3705,8 @@ sub parse_key {
$data{'scope_type'} = 'user';
$data{'scope'} = [$1,$2];
} else {
- $data{'scope_type'} = 'secgroup';
+ #FIXME check for group scope
+ $data{'scope_type'} = 'section';
}
$middle=~s/^\[(.*)\]//;
}
@@ -5102,7 +3734,7 @@ sub parse_key {
sub header {
- return &Apache::loncommon::start_page('Content and Problem Settings');
+ return &Apache::loncommon::start_page('Settings');
}
@@ -5115,6 +3747,7 @@ sub print_main_menu {
my $crstype = &Apache::loncommon::course_type();
my $lc_crstype = lc($crstype);
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
@@ -5125,73 +3758,35 @@ ENDMAINFORMHEAD
my $vgr = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});
my $mgr = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});
my $dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'});
- my $vcb = &Apache::lonnet::allowed('vcb',$env{'request.course.id'});
- my $vpa = &Apache::lonnet::allowed('vpa',$env{'request.course.id'});
if ((!$dcm) && ($env{'request.course.sec'} ne '')) {
$dcm = &Apache::lonnet::allowed('dcm',$env{'request.course.id'}.
'/'.$env{'request.course.sec'});
}
- if ((!$vcb) && ($env{'request.course.sec'} ne '')) {
- $vcb = &Apache::lonnet::allowed('vcb',$env{'request.course.id'}.
- '/'.$env{'request.course.sec'});
- }
- my (%linktext,%linktitle,%url);
- if ($parm_permission->{'edit'}) {
- %linktext = (
- newoverview => 'Edit Resource Parameters - Overview Mode',
- settable => 'Edit Resource Parameters - Table Mode',
- setoverview => 'Modify Resource Parameters - Overview Mode',
- );
- %linktitle = (
- newoverview => 'Set/Modify resource parameters in overview mode.',
- settable => 'Set/Modify resource parameters in table mode.',
- setoverview => 'Set/Modify existing resource parameters in overview mode.',
- );
- } else {
- %linktext = (
- newoverview => 'View Resource Parameters - Overview Mode',
- settable => 'View Resource Parameters - Table Mode',
- setoverview => 'View Resource Parameters - Overview Mode',
- );
- %linktitle = (
- newoverview => 'Display resource parameters in overview mode.',
- settable => 'Display resource parameters in table mode.',
- setoverview => 'Display existing resource parameters in overview mode.',
- );
- }
- if ($mgr) {
- $linktext{'resettimes'} = 'Reset Student Access Times';
- $linktitle{'resettimes'} = "Reset access times for folders/maps, resources or the $lc_crstype.";
- $url{'resettimes'} = '/adm/helper/resettimes.helper';
- } elsif ($vgr) {
- $linktext{'resettimes'} = 'Display Student Access Times',
- $linktitle{'resettimes'} = "Display access times for folders/maps, resources or the $lc_crstype.",
- $url{'resettimes'} = '/adm/accesstimes';
- }
+
my @menu =
( { categorytitle=>"Content Settings for this $crstype",
items => [
{ linktext => 'Portfolio Metadata',
url => '/adm/parmset?action=setrestrictmeta',
- permission => $parm_permission->{'setrestrictmeta'},
+ permission => $parm_permission,
linktitle => "Restrict metadata for this $lc_crstype." ,
icon =>'contact-new.png' ,
},
- { linktext => $linktext{'resettimes'},
- url => $url{'resettimes'},
- permission => ($vgr || $mgr),
- linktitle => $linktitle{'resettimes'},
- icon => 'start-here.png',
+ { linktext => 'Reset Student Access Times',
+ url => '/adm/helper/resettimes.helper',
+ permission => $mgr,
+ linktitle => "Reset access times for folders/maps, resources or the $lc_crstype." ,
+ icon => 'start-here.png' ,
},
{ linktext => 'Blocking Communication/Resource Access',
url => '/adm/setblock',
- permission => ($vcb || $dcm),
+ permission => $dcm,
linktitle => 'Configure blocking of communication/collaboration and access to resources during an exam',
icon => 'comblock.png',
},
{ linktext => 'Set Parameter Setting Default Actions',
url => '/adm/parmset?action=setdefaults',
- permission => $parm_permission->{'setdefaults'},
+ permission => $parm_permission,
linktitle =>'Set default actions for parameters.' ,
icon => 'folder-new.png' ,
}]},
@@ -5199,43 +3794,45 @@ ENDMAINFORMHEAD
items => [
{ linktext => 'Edit Resource Parameters - Helper Mode',
url => '/adm/helper/parameter.helper',
- permission => $parm_permission->{'helper'},
+ permission => $parm_permission,
linktitle =>'Set/Modify resource parameters in helper mode.' ,
icon => 'dialog-information.png' ,
#help => 'Parameter_Helper',
},
- { linktext => $linktext{'newoverview'},
+ { linktext => 'Edit Resource Parameters - Overview Mode',
url => '/adm/parmset?action=newoverview',
- permission => $parm_permission->{'newoverview'},
- linktitle => $linktitle{'newoverview'},
- icon => 'edit-find.png',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in overview mode.' ,
+ icon => 'edit-find.png' ,
#help => 'Parameter_Overview',
},
- { linktext => $linktext{'settable'},
+ { linktext => 'Edit Resource Parameters - Table Mode',
url => '/adm/parmset?action=settable',
- permission => $parm_permission->{'settable'},
- linktitle => $linktitle{'settable'},
- icon => 'edit-copy.png',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify resource parameters in table mode.' ,
+ icon => 'edit-copy.png' ,
#help => 'Table_Mode',
}]},
{ categorytitle => 'Existing Parameter Settings for Resources',
items => [
- { linktext => $linktext{'setoverview'},
+ { linktext => 'Modify Resource Parameters - Overview Mode',
url => '/adm/parmset?action=setoverview',
- permission => $parm_permission->{'setoverview'},
- linktitle => $linktitle{'setoverview'},
- icon => 'preferences-desktop-wallpaper.png',
+ permission => $parm_permission,
+ linktitle =>'Set/Modify existing resource parameters in overview mode.' ,
+ icon => 'preferences-desktop-wallpaper.png' ,
#help => 'Parameter_Overview',
},
{ linktext => 'Change Log',
url => '/adm/parmset?action=parameterchangelog',
- permission => $parm_permission->{'parameterchangelog'},
+ permission => $parm_permission,
linktitle =>"View parameter and $lc_crstype blog posting/user notification change log." ,
icon => 'document-properties.png',
}]}
);
$r->print(&Apache::lonhtmlcommon::generate_menu(@menu));
- $r->print(''.&Apache::loncommon::end_page());
+ $r->print('');
+ &endSettingsScreen($r);
+ $r->print(&Apache::loncommon::end_page());
return;
}
@@ -5303,6 +3900,7 @@ sub order_meta_fields {
my $idx = 1;
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};;
$r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
text=>"Add Metadata Field"});
@@ -5311,6 +3909,7 @@ sub order_meta_fields {
text=>"Restrict Metadata"},
{text=>"Order Metadata"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata'));
+ &startSettingsScreen($r,'parmset',$crstype);
if ($env{'form.storeorder'}) {
my $newpos = $env{'form.newpos'} - 1;
my $currentpos = $env{'form.currentpos'} - 1;
@@ -5380,6 +3979,7 @@ sub order_meta_fields {
$idx ++;
}
$r->print('');
+ &endSettingsScreen($r);
return 'ok';
}
@@ -5388,7 +3988,7 @@ sub continue {
my $output;
$output .= '');
}
- $r->print(' '.
- &mt('[_1]Or[_2] you may enter a new metadata field name.',
- '',' ').
- '');
+ &endSettingsScreen($r);
}
@@ -5467,13 +4059,10 @@ sub setrestrictmeta {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata'));
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};
+ &startSettingsScreen($r,'parmset',$crstype);
my $key_base = $env{'course.'.$env{'request.course.id'}.'.'};
my $save_field = '';
- my %lt = &Apache::lonlocal::texthash(
- addm => 'Add Metadata Field',
- ordm => 'Order Metadata Fields',
- save => 'Save',
- );
if ($env{'form.restrictmeta'}) {
foreach my $field (sort(keys(%env))) {
if ($field=~m/^form.(.+)_(.+)$/) {
@@ -5512,25 +4101,28 @@ sub setrestrictmeta {
my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio');
# Now get possible added metadata fields
my $added_metadata_fields = &get_added_meta_fieldnames($env{'request.course.id'});
+ my $row_alt = 1;
$output .= &Apache::loncommon::start_data_table();
foreach my $field (sort(keys(%metadata_fields))) {
if ($field ne 'courserestricted') {
+ $row_alt = $row_alt ? 0 : 1;
$output.= &output_row($r, $field, $metadata_fields{$field});
}
}
my $buttons = (<
+
');
- my $readonly = 1;
- if ($parm_permission->{'edit'}) {
- undef($readonly);
- }
- my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'},
- $env{'course.'.$env{'request.course.id'}.'.domain'});
+
+ my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
$r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row().
''.&mt('Time').' '.&mt('User').' '.&mt('Extent').' '.&mt('Users').' '.
- &mt('Parameter').' '.&mt('Part').' '.&mt('New Value').' ');
- unless ($readonly) {
- $r->print(''.&mt('Announce').' ');
- }
- $r->print(&Apache::loncommon::end_data_table_header_row());
+ &mt('Parameter').''.&mt('Part').' '.&mt('New Value').' '.&mt('Announce').' '.
+ &Apache::loncommon::end_data_table_header_row());
my $shown=0;
my $folder='';
if ($env{'form.displayfilter'} eq 'currentfolder') {
@@ -5870,12 +4460,6 @@ sub parm_change_log {
}
if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); }
}
- my $numgroups = 0;
- my @groups;
- if ($env{'request.course.groups'} ne '') {
- @groups = split(/:/,$env{'request.course.groups'});
- $numgroups = scalar(@groups);
- }
foreach my $id (sort
{
if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) {
@@ -5897,8 +4481,7 @@ sub parm_change_log {
$parmlog{$id}{'exe_uname'},
$parmlog{$id}{'exe_udom'});
my $send_msg_link='';
- if ((!$readonly) &&
- (($parmlog{$id}{'exe_uname'} ne $env{'user.name'})
+ if ((($parmlog{$id}{'exe_uname'} ne $env{'user.name'})
|| ($parmlog{$id}{'exe_udom'} ne $env{'user.domain'}))) {
$send_msg_link =' '.
&Apache::loncommon::messagewrapper(&mt('Send message'),
@@ -5915,14 +4498,6 @@ sub parm_change_log {
!exists($parmlog{$id}{'logentry'}{$changed.'.type'}));
my ($realm,$section,$parmname,$part,$what,$middle,$uname,$udom,$issection,$realmdescription)=
&components($changed,$parmlog{$id}{'uname'},$parmlog{$id}{'udom'},undef,undef,$typeflag);
- if ($env{'request.course.sec'} ne '') {
- next if (($issection ne '') && (!(($issection eq $env{'request.course.sec'}) ||
- ($numgroups && (grep(/^\Q$issection\E$/,@groups))))));
- if ($uname ne '') {
- my $stusection = &Apache::lonnet::getsection($uname,$udom,$env{'request.course.id'});
- next if (($stusection ne '-1') && ($stusection ne $env{'request.course.sec'}));
- }
- }
if ($env{'form.displayfilter'} eq 'currentfolder') {
if ($folder) {
if ($middle!~/^\Q$folder\E/) { next; }
@@ -5951,11 +4526,7 @@ sub parm_change_log {
$parmitem = &mt($parmitem);
$output .= &mt('Type: [_1]',$parmitem);
} else {
- my $toolsymb;
- if ($middle =~ /ext\.tool$/) {
- $toolsymb = $middle;
- }
- my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what,$toolsymb),
+ my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
$uname,$udom,$issection,$issection,$courseopt);
my $showvalue = $value;
if ($istype{$parmname} eq '') {
@@ -5980,31 +4551,27 @@ sub parm_change_log {
}
}
}
- $output .= '';
-
- unless ($readonly) {
- $output .= '';
- if ($stillactive) {
- my $parmitem = &standard_parameter_names($parmname);
- $parmitem = &mt($parmitem);
- my $title=&mt('Changed [_1]',$parmitem);
- my $description=&mt('Changed [_1] for [_2] to [_3]',
- $parmitem,$realmdescription,
- (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
- if (($uname) && ($udom)) {
- $output .=
- &Apache::loncommon::messagewrapper('Notify User',
- $uname,$udom,$title,
- $description);
- } else {
- $output .=
- &Apache::lonrss::course_blog_link($id,$title,
- $description);
- }
- }
- $output .= ' ';
- }
- $output .= &Apache::loncommon::end_data_table_row();
+ $output .= '';
+
+ if ($stillactive) {
+ my $parmitem = &standard_parameter_names($parmname);
+ $parmitem = &mt($parmitem);
+ my $title=&mt('Changed [_1]',$parmitem);
+ my $description=&mt('Changed [_1] for [_2] to [_3]',
+ $parmitem,$realmdescription,
+ (&isdateparm($istype{$parmname})?&Apache::lonlocal::locallocaltime($value):$value));
+ if (($uname) && ($udom)) {
+ $output .=
+ &Apache::loncommon::messagewrapper('Notify User',
+ $uname,$udom,$title,
+ $description);
+ } else {
+ $output .=
+ &Apache::lonrss::course_blog_link($id,$title,
+ $description);
+ }
+ }
+ $output .= ' '.&Apache::loncommon::end_data_table_row();
}
if ($env{'form.displayfilter'} eq 'containing') {
my $wholeentry=$about_me_link.':'.
@@ -6024,6 +4591,7 @@ sub parm_change_log {
|| $shown<=$env{'form.show'})) { last; }
}
$r->print(&Apache::loncommon::end_data_table());
+ &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -6072,10 +4640,10 @@ sub update_slots {
context => 'parameter',
);
&Apache::lonnet::write_log('course','slotreservationslog',\%storehash,
- '',$uname,$udom,$cnum,$cdom);
+ '',$uname,$udom,$cnum,$cdom);
&Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash,
- '',$uname,$udom,$uname,$udom);
+ '',$uname,$udom,$uname,$udom);
}
return $success;
}
@@ -6106,9 +4674,9 @@ sub delete_slots {
context => 'parameter',
);
&Apache::lonnet::write_log('course','slotreservationslog',\%storehash,
- 1,$uname,$udom,$cnum,$cdom);
+ 1,$uname,$udom,$cnum,$cdom);
&Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash,
- 1,$uname,$udom,$uname,$udom);
+ 1,$uname,$udom,$uname,$udom);
}
}
}
@@ -6131,7 +4699,7 @@ sub parameter_release_vars {
}
sub parameter_releasecheck {
- my ($name,$value,$needsrelease,$cmajor,$cminor) = @_;
+ my ($name,$value,$needsrelease,$chostname,$cmajor,$cminor) = @_;
my $needsnewer;
my ($needsmajor,$needsminor) = split(/\./,$needsrelease);
if (($cmajor < $needsmajor) ||
@@ -6143,44 +4711,38 @@ sub parameter_releasecheck {
return $needsnewer;
}
-sub get_permission {
- my %permission;
- my $allowed = 0;
- return (\%permission,$allowed) unless ($env{'request.course.id'});
- if ((&Apache::lonnet::allowed('opa',$env{'request.course.id'})) ||
- (&Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'.
- $env{'request.course.sec'}))) {
- %permission= (
- 'edit' => 1,
- 'set' => 1,
- 'setoverview' => 1,
- 'addmetadata' => 1,
- 'ordermetadata' => 1,
- 'setrestrictmeta' => 1,
- 'newoverview' => 1,
- 'setdefaults' => 1,
- 'settable' => 1,
- 'parameterchangelog' => 1,
- 'cleanparameters' => 1,
- 'dateshift1' => 1,
- 'dateshift2' => 1,
- 'helper' => 1,
- );
- } elsif ((&Apache::lonnet::allowed('vpa',$env{'request.course.id'})) ||
- (&Apache::lonnet::allowed('vpa',$env{'request.course.id'}.'/'.
- $env{'request.course.sec'}))) {
- %permission = (
- 'set' => 1,
- 'settable' => 1,
- 'newoverview' => 1,
- 'setoverview' => 1,
- 'parameterchangelog' => 1,
+sub oldversion_warning {
+ my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
+ my $desc;
+ my %stringtypes = (
+ type => 'string_questiontype',
+ lenient => 'string_lenient',
+ retrypartial => 'string_yesno',
+ discussvote => 'string_discussvote',
+ examcode => 'string_examcode',
);
+ if (exists($stringtypes{$name})) {
+ if ($name eq 'examcode') {
+ $desc = $value;
+ } elsif (ref($strings{$stringtypes{$name}}) eq 'ARRAY') {
+ foreach my $possibilities (@{ $strings{$stringtypes{$name}} }) {
+ next unless (ref($possibilities) eq 'ARRAY');
+ my ($parmval, $description) = @{ $possibilities };
+ if ($parmval eq $value) {
+ $desc = $description;
+ last;
+ }
+ }
+ }
}
- foreach my $perm (values(%permission)) {
- if ($perm) { $allowed=1; last; }
- }
- return (\%permission,$allowed);
+ my $standard_name = &standard_parameter_names($name);
+ return ''.
+ &mt('[_1] was [_2]not[_3] set to [_4].',
+ $standard_name,'',' ','"'.$desc.'"').' '.
+ &mt('LON-CAPA version ([_1]) installed on home server ([_2]) does not meet version requirements ([_3] or newer).',
+ $cmajor.'.'.$cminor,$chostname,
+ $needsrelease).
+ '
';
}
sub handler {
@@ -6210,41 +4772,41 @@ sub handler {
'Parameter_Manager,Course_Environment,Parameter_Helper,Parameter_Overview,Table_Mode'});
# ----------------------------------------------------- Needs to be in a course
- my ($parm_permission,$allowed) = &get_permission();
+ my $parm_permission =
+ (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'.
+ $env{'request.course.sec'}));
my $exists = &check_for_course_info();
- if ($env{'request.course.id'} && $allowed && $exists) {
+ if ($env{'request.course.id'} && $parm_permission && $exists) {
#
# Main switch on form.action and form.state, as appropriate
#
# Check first if coming from someone else headed directly for
# the table mode
- if (($parm_permission->{'set'}) &&
- ((($env{'form.command'} eq 'set') && ($env{'form.url'})
- && (!$env{'form.dis'})) || ($env{'form.symb'}))) {
- &assessparms($r,$parm_permission);
+ if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
+ && (!$env{'form.dis'})) || ($env{'form.symb'})) {
+ &assessparms($r);
} elsif (! exists($env{'form.action'})) {
&print_main_menu($r,$parm_permission);
- } elsif (!$parm_permission->{$env{'form.action'}}) {
- &print_main_menu($r,$parm_permission);
} elsif ($env{'form.action'} eq 'setoverview') {
- &overview($r,$parm_permission);
- } elsif ($env{'form.action'} eq 'addmetadata') {
- &addmetafield($r);
- } elsif ($env{'form.action'} eq 'ordermetadata') {
- &order_meta_fields($r);
+ &overview($r);
+ } elsif ($env{'form.action'} eq 'addmetadata') {
+ &addmetafield($r);
+ } elsif ($env{'form.action'} eq 'ordermetadata') {
+ &order_meta_fields($r);
} elsif ($env{'form.action'} eq 'setrestrictmeta') {
- &setrestrictmeta($r);
+ &setrestrictmeta($r);
} elsif ($env{'form.action'} eq 'newoverview') {
- &newoverview($r,$parm_permission);
+ &newoverview($r);
} elsif ($env{'form.action'} eq 'setdefaults') {
- &defaultsetter($r);
- } elsif ($env{'form.action'} eq 'settable') {
- &assessparms($r,$parm_permission);
+ &defaultsetter($r);
+ } elsif ($env{'form.action'} eq 'settable') {
+ &assessparms($r);
} elsif ($env{'form.action'} eq 'parameterchangelog') {
- &parm_change_log($r,$parm_permission);
+ &parm_change_log($r);
} elsif ($env{'form.action'} eq 'cleanparameters') {
- &clean_parameters($r);
+ &clean_parameters($r);
} elsif ($env{'form.action'} eq 'dateshift1') {
&date_shift_one($r);
} elsif ($env{'form.action'} eq 'dateshift2') {