--- loncom/interface/lonparmset.pm 2022/07/26 03:04:14 1.522.2.28.2.2 +++ loncom/interface/lonparmset.pm 2012/05/09 19:46:30 1.523 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.522.2.28.2.2 2022/07/26 03:04:14 raeburn Exp $ +# $Id: lonparmset.pm,v 1.523 2012/05/09 19:46:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,8 +36,7 @@ lonparmset - Handler to set parameters f =head1 SYNOPSIS -lonparmset provides an interface to setting content parameters in a -course. +lonparmset provides an interface to setting course parameters. =head1 DESCRIPTION @@ -47,6 +46,8 @@ This module sets coursewide and assessme =over +=pod + =item parmval() Figure out a cascading parameter. @@ -130,7 +131,7 @@ javascript function 'pjump'. =item print_td() -=item check_other_groups() +=item print_usergroups() =item parm_control_group() @@ -138,21 +139,15 @@ javascript function 'pjump'. extractResourceInformation extracts lots of information about all of the the course's resources into a variety of hashes. -Input: See list below - -=over 4 +Input: See list below: =item * B : Current username =item * B : Domain of current user. -=item * B : Course - -=back - -Outputs: See list below +=item * b (out) : An array that will contain all of the ids in the course. @@ -178,8 +173,6 @@ Outputs: See list below =item * B -=back - =item isdateparm() =item parmmenu() @@ -217,8 +210,6 @@ Returns: nothing Variables used (guessed by Jeremy): -=over - =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? @@ -231,8 +222,6 @@ Variables used (guessed by Jeremy): When storing information, store as part 0 When requesting information, request from full part -=back - =item tablestart() =item tableend() @@ -299,6 +288,7 @@ Set portfolio metadata Main handler. Calls &assessparms subroutine. + =back =cut @@ -324,6 +314,27 @@ use HTML::Entities; use LONCAPA qw(:DEFAULT :match); +sub startSettingsScreen { + my ($r,$mode)=@_; + + $r->print("\n".''."\n"); + $r->print('
'); +} + +sub endSettingsScreen { + my ($r)=@_; + $r->print('
'); +} + + + sub parmval { my ($what,$id,$def,$uname,$udom,$csec,$cgroup,$courseopt)=@_; return &parmval_by_symb($what,&symbcache($id),$def,$uname,$udom,$csec, @@ -650,7 +661,7 @@ sub storeparm_by_symb { } sub log_parmset { - return &Apache::lonnet::write_log('course','parameterlog',@_); + return &Apache::lonnet::instructor_log('parameterlog',@_); } sub storeparm_by_symb_inner { @@ -757,27 +768,14 @@ sub valout { my $result = ''; # Values of zero are valid. if (! $value && $value ne '0') { - if ($editable) { - $result = - ''.&mt('Change').''; - } else { - $result=' '; - } + if ($editable) { + $result = '*'; + } else { + $result=' '; + } } else { if ($type eq 'date_interval') { - my ($totalsecs,$donesuffix) = split(/_/,$value,2); - my ($usesdone,$donebuttontext,$proctor,$secretkey); - if ($donesuffix =~ /^done\:([^\:]+)\:(.*)$/) { - $donebuttontext = $1; - (undef,$proctor,$secretkey) = split(/_/,$2); - $usesdone = 'done'; - } elsif ($donesuffix =~ /^done(|_.+)$/) { - $donebuttontext = &mt('Done'); - ($usesdone,$proctor,$secretkey) = split(/_/,$donesuffix); - } - my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($totalsecs); + my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value); my @timer; $year=$year-70; $mday--; @@ -810,13 +808,6 @@ sub valout { push(@timer,&mt('[quant,_1,sec]',0)); } $result.=join(", ",@timer); - if ($usesdone eq 'done') { - if ($secretkey) { - $result .= ' '.&mt('+ "[_1]" with proctor key: [_2]',$donebuttontext,$secretkey); - } else { - $result .= ' + "'.$donebuttontext.'"'; - } - } } elsif (&isdateparm($type)) { $result = &Apache::lonlocal::locallocaltime($value). &date_sanity_info($value); @@ -834,12 +825,8 @@ sub plink { my ($type,$dis,$value,$marker,$return,$call)=@_; my $winvalue=$value; unless ($winvalue) { - if ((&isdateparm($type)) || (&is_specialstring($type))) { + if (&isdateparm($type)) { $winvalue=$env{'form.recent_'.$type}; - } elsif ($type eq 'string_yesno') { - if ($env{'form.recent_string'} =~ /^(yes|no)$/i) { - $winvalue=$env{'form.recent_string'}; - } } else { $winvalue=$env{'form.recent_'.(split(/\_/,$type))[0]}; } @@ -872,22 +859,20 @@ sub page_js { $pjump_def function psub() { - var specstring = /^string_!(yesno|any)/i; if (document.parmform.pres_marker.value!='') { document.parmform.action+='#'+document.parmform.pres_marker.value; var typedef=new Array(); typedef=document.parmform.pres_type.value.split('_'); - if (document.parmform.pres_type.value!='') { - if ((typedef[0]=='date') || - (specstring.test(document.parmform.pres_type.value))) { - eval('document.parmform.recent_'+ - document.parmform.pres_type.value+ - '.value=document.parmform.pres_value.value;'); - } else { - eval('document.parmform.recent_'+typedef[0]+ - '.value=document.parmform.pres_value.value;'); - } + if (document.parmform.pres_type.value!='') { + if (typedef[0]=='date') { + eval('document.parmform.recent_'+ + document.parmform.pres_type.value+ + '.value=document.parmform.pres_value.value;'); + } else { + eval('document.parmform.recent_'+typedef[0]+ + '.value=document.parmform.pres_value.value;'); } + } document.parmform.submit(); } else { document.parmform.pres_value.value=''; @@ -902,7 +887,9 @@ sub page_js { var newWin = window.open(url, wdwName, options); newWin.focus(); } + // ]]> + $selscript ENDJS @@ -929,98 +916,6 @@ function showHide_courseContent() { COURSECONTENTSCRIPT } -sub validateparms_js { - return <<'ENDSCRIPT'; - -function validateParms() { - var ipallowRegExp = /^setipallow_/; - var ipdenyRegExp = /^setipdeny_/; - var patternIP = /[\[\]\*\.a-zA-Z\d\-]+/; - if ((document.parmform.elements.length != 'undefined') && (document.parmform.elements.length) != 'null') { - if (document.parmform.elements.length) { - for (i=0; i$remove'); - }); - - \$(wrapper).delegate(".LC_remove_ipacc","click", function(e){ - e.preventDefault(); \$(this).closest("div").remove(); - }) -}); - - -END -} - -sub done_proctor_js { - return <<"END"; -function toggleSecret(form,radio,key) { - var radios = form[radio+key]; - if (radios.length) { - for (var i=0; i '; my $start_page = - &Apache::loncommon::start_page('Set/Modify Course Parameters',$js, - {'add_entries' => \%loaditems,}); + &Apache::loncommon::start_page('Set/Modify Course Parameters',$js, + {'add_entries' => \%loaditems,}); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Table Mode Parameter Setting','Table_Mode'); my $escfilter=&Apache::lonhtmlcommon::entity_encode($env{'form.filter'}); my $escpart=&Apache::lonhtmlcommon::entity_encode($env{'form.part'}); $r->print($start_page.$breadcrumbs); + &startSettingsScreen($r,'parmset'); $r->print(< @@ -1070,8 +966,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); @@ -1116,31 +1011,31 @@ sub print_row { if ($parmlev eq 'general') { if ($uname) { - &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &print_td($r,3,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } elsif ($cgroup) { - &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly); + &print_td($r,6,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } elsif ($csec) { - &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &print_td($r,9,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } else { - &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &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); + &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } elsif ($cgroup) { - &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly); + &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } elsif ($csec) { - &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); } else { - &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &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)) { @@ -1153,32 +1048,32 @@ sub print_row { } } - &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display); - &print_td($r,13,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); - &print_td($r,12,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); - &print_td($r,11,'#FFDDDD',$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); - &print_td($r,10,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &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); - &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); - &print_td($r,7,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &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); - &print_td($r,5,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly); - &print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,$noeditgrp,$readonly); + &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); - &print_td($r,2,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); - &print_td($r,1,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display,'',$readonly); + &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 @@ -1198,27 +1093,15 @@ sub print_row { } sub print_td { - my ($r,$which,$defbg,$result,$outpar,$mprefix,$value,$typeoutpar,$display,$noeditgrp,$readonly)=@_; + 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\&$/) { - $nolink = 1; - } elsif ($mprefix =~ /examcode\&$/) { - unless ($which == 2) { - $nolink = 1; - } } } if ($nolink) { @@ -1231,8 +1114,8 @@ sub print_td { $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); @@ -1247,6 +1130,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 = ''; @@ -1372,7 +1256,7 @@ sub extractResourceInformation { $$mapp{$mapid}=$$mapp{$id}; $$allmaps{$mapid}=$$mapp{$id}; if ($mapid eq '1') { - $$maptitles{$mapid}=&mt('Main Content'); + $$maptitles{$mapid}=&mt('Main Course Documents'); } else { $$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id}); } @@ -1392,21 +1276,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 @@ -1513,8 +1390,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', @@ -1549,8 +1426,8 @@ sub lookUpTableParameter { 'lenient' => 'grading', 'retrypartial' => 'tries', 'discussvote' => 'misc', - 'examcode' => 'high_level_randomization', - ); + + ); } sub whatIsMyCategory { @@ -1626,24 +1503,26 @@ sub parmboxes { #Print parameters for my $key (sort { $category_order{$a} <=> $category_order{$b} } keys %categoryList) { - next if(@{$categoryList{$key}} == 0); - $r->print('
' - .'

' - .&mt($categories{$key}) - .'

'."\n"); - foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) { - next if ($tempkey eq ''); - $r->print('' - .'
\n"); } $r->print("\n"); @@ -1652,7 +1531,7 @@ sub parmboxes { # 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( @@ -1711,60 +1590,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.'  '. - ''; 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:').'

':'')); + &listdata($r,$resourcedata,$listdata,$sortorder); } - $r->print(''); + $r->print(&tableend(). + ((($env{'form.store'}) || ($env{'form.dis'}))?'

':''). + ''); + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); } @@ -4104,62 +3489,38 @@ 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('
'); + &startSettingsScreen($r,'parmset'); + $r->print(''); # Store modified - unless ($readonly) { - &storedata($r,$crs,$dom); - } + + &storedata($r,$crs,$dom); # Read modified data - my ($resourcedata,$classlist)=&readdata($crs,$dom); + my $resourcedata=&readdata($crs,$dom); my $sortorder=$env{'form.sortorder'}; unless ($sortorder) { $sortorder='realmstudent'; } &sortmenu($r,$sortorder); - my $submitbutton = ''; - - if ($readonly) { - $r->print('

'.$submitbutton.'

'); - } - - # List data - my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder,'overview',$classlist,$readonly); + my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder); - $r->print(&tableend().'

'); - if ($foundkeys) { - unless ($readonly) { - $r->print('

'.$submitbutton.'

'); - } - } else { - $r->print('

'.&mt('There are no parameters.').'

'); - } - $r->print('
'.&Apache::loncommon::end_page()); + $r->print(&tableend().'

'. + ($foundkeys?'':&mt('There are no parameters.')).'

'. + &Apache::loncommon::end_page()); } sub clean_parameters { @@ -4221,8 +3582,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') { @@ -4232,9 +3595,8 @@ ENDOVER } elsif ($data{'realm_type'} eq 'symb') { my ($map,$resid,$url) = &Apache::lonnet::decode_symb($data{'realm'}); - $r->print(&mt('Resource: [_1]with ID: [_2]in folder [_3]', - $url.'
   ', - $resid.'
   ',$map)); + $r->print(&mt('Resource: [_1]
   with ID: [_2]
   in folder [_3]', + $url,$resid,$map)); } $r->print('
   '.&mt('Part: [_1]',$data{'parameter_part'})); $r->print(''); @@ -4244,6 +3606,7 @@ ENDOVER $r->print(&Apache::loncommon::end_data_table().'

'. ''. '

'); + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); } @@ -4251,36 +3614,27 @@ 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'}; + &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); - $r->print('
'. + &startSettingsScreen($r,'parmset'); + $r->print(''. ''. '
'.&mt('Currently set date:').''. &Apache::lonlocal::locallocaltime($env{'form.timebase'}).'
'.&mt('Shifted date:').''. - &Apache::lonhtmlcommon::date_setter('shiftform', + &Apache::lonhtmlcommon::dshowerfuck.net +ate_setter('shiftform', 'timeshifted', $env{'form.timebase'},, ''). '
'. ''. ''. - '
'); + ''); + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); } @@ -4288,57 +3642,19 @@ 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'}; &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'); 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('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)); - } - $r->print( - '

'. - &Apache::lonhtmlcommon::actionbox( - [''.&mt('Content and Problem Settings').''])); + &dateshift($delta); + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); } @@ -4354,7 +3670,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/^\[(.*)\]//; } @@ -4382,7 +3699,7 @@ sub parse_key { sub header { - return &Apache::loncommon::start_page('Content and Problem Settings'); + return &Apache::loncommon::start_page('Settings'); } @@ -4392,9 +3709,7 @@ sub print_main_menu { # $r->print(&header()); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Content and Problem Settings')); - my $crstype = &Apache::loncommon::course_type(); - my $lc_crstype = lc($crstype); - + &startSettingsScreen($r,'parmset'); $r->print(< @@ -4405,73 +3720,38 @@ 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 $crstype = &Apache::loncommon::course_type(); + my $lc_crstype = lc($crstype); + 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' , }]}, @@ -4479,43 +3759,43 @@ 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()); + &endSettingsScreen($r); return; } @@ -4591,6 +3871,7 @@ sub order_meta_fields { text=>"Restrict Metadata"}, {text=>"Order Metadata"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata')); + &startSettingsScreen($r,'parmset'); if ($env{'form.storeorder'}) { my $newpos = $env{'form.newpos'} - 1; my $currentpos = $env{'form.currentpos'} - 1; @@ -4644,7 +3925,7 @@ sub order_meta_fields { foreach my $key (@fields_in_order) { $r->print(''); $r->print('
'); - $r->print(''); for (my $i = 1;$i le $num_fields;$i ++) { if ($i eq $idx) { $r->print(''); @@ -4660,6 +3941,7 @@ sub order_meta_fields { $idx ++; } $r->print(''); + &endSettingsScreen($r); return 'ok'; } @@ -4668,7 +3950,7 @@ sub continue { my $output; $output .= ''; $output .= ''; - $output .= ''; + $output .= ''; return ($output); } @@ -4679,6 +3961,7 @@ sub addmetafield { text=>"Add Metadata Field"}); $r->print(&Apache::loncommon::start_page('Add Metadata Field')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field')); + &startSettingsScreen($r,'parmset'); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; if (exists($env{'form.undelete'})) { @@ -4690,10 +3973,7 @@ sub addmetafield { my $put_result = &Apache::lonnet::put('environment', {'metadata.'.$meta_field.'.options'=>$options},$dom,$crs); - $r->print(&mt('Undeleted Metadata Field [_1] with result [_2]', - ''.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}. - '',$put_result). - '
'); + $r->print('Undeleted Metadata Field '.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}." with result ".$put_result.'
'); } $r->print(&continue()); } elsif (exists($env{'form.fieldname'})) { @@ -4705,17 +3985,12 @@ sub addmetafield { {'metadata.'.$meta_field.'.values'=>"", 'metadata.'.$meta_field.'.added'=>"$display_field", 'metadata.'.$meta_field.'.options'=>""},$dom,$crs); - $r->print(&mt('Added new Metadata Field [_1] with result [_2]', - ''.$env{'form.fieldname'}.'',$put_result). - '
'); + $r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result.'
'); $r->print(&continue()); } else { my $fields = &get_deleted_meta_fieldnames($env{'request.course.id'}); if ($fields) { - $r->print(&mt('You may undelete previously deleted fields.'). - '
'. - &mt('Check those you wish to undelete and click Undelete.'). - '
'); + $r->print('You may undelete previously deleted fields.
Check those you wish to undelete and click Undelete.
'); $r->print(''); foreach my $key(keys(%$fields)) { $r->print(''.$$fields{$key}.'
print(''); $r->print('
'); } - $r->print('
'. - &mt('[_1]Or[_2] you may enter a new metadata field name.', - '',''). - '
'); + $r->print('
Or you may enter a new metadata field name.print('
'); - $r->print(''); + $r->print(''); } $r->print('
'); + &endSettingsScreen($r); } @@ -4745,15 +4018,11 @@ sub setrestrictmeta { text=>"Restrict Metadata"}); $r->print(&Apache::loncommon::start_page('Restrict Metadata')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata')); + &startSettingsScreen($r,'parmset'); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; 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.(.+)_(.+)$/) { @@ -4792,25 +4061,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 = (< +
- +

- + ENDButtons my $added_flag = 1; foreach my $field (sort(keys(%$added_metadata_fields))) { - $output.= &output_row($r,$field,$$added_metadata_fields{$field},$added_flag); + $row_alt = $row_alt ? 0 : 1; + $output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag, $row_alt); } $output .= &Apache::loncommon::end_data_table(); $r->print(< ENDenv + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); return 'ok'; } @@ -4863,6 +4136,7 @@ sub defaultsetter { &Apache::loncommon::start_page('Parameter Setting Default Actions'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Defaults'); $r->print($start_page.$breadcrumbs); + &startSettingsScreen($r,'parmset'); $r->print(''); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; @@ -5009,6 +4283,7 @@ ENDYESNO $r->print(&Apache::loncommon::end_data_table(). "\n".''."\n"); + &endSettingsScreen($r); $r->print(&Apache::loncommon::end_page()); return; } @@ -5055,7 +4330,7 @@ my %standard_parms; my %standard_parms_types; sub load_parameter_names { - open(my $config,"<","$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab"); + open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab"); while (my $configline=<$config>) { if ($configline !~ /\S/ || $configline=~/^\#/) { next; } chomp($configline); @@ -5070,7 +4345,6 @@ sub load_parameter_names { close($config); $standard_parms{'int_pos'} = 'Positive Integer'; $standard_parms{'int_zero_pos'} = 'Positive Integer or Zero'; - $standard_parms{'scoreformat'} = 'Format for display of score'; } sub standard_parameter_names { @@ -5097,7 +4371,7 @@ sub standard_parameter_types { } sub parm_change_log { - my ($r,$parm_permission)=@_; + my ($r)=@_; &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', text=>"Parameter Change Log"}); my $js = ''."\n"; $r->print(&Apache::loncommon::start_page('Parameter Change Log',$js)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Change Log')); + &startSettingsScreen($r,'parmset'); my %parmlog=&Apache::lonnet::dump('nohist_parameterlog', $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); @@ -5126,19 +4401,13 @@ sub parm_change_log { $r->print(&Apache::loncommon::display_filter('parmslog').' '."\n". ''. '
'); - 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'}); $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') { @@ -5150,12 +4419,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'}) { @@ -5177,8 +4440,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'), @@ -5195,14 +4457,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; } @@ -5256,31 +4510,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.':'. @@ -5300,6 +4550,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()); } @@ -5347,10 +4598,10 @@ sub update_slots { action => 'reserve', context => 'parameter', ); - &Apache::lonnet::write_log('course','slotreservationslog',\%storehash, + &Apache::lonnet::instructor_log('slotreservationslog',\%storehash, '',$uname,$udom,$cnum,$cdom); - &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash, + &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash, '',$uname,$udom,$uname,$udom); } return $success; @@ -5381,9 +4632,9 @@ sub delete_slots { action => 'release', context => 'parameter', ); - &Apache::lonnet::write_log('course','slotreservationslog',\%storehash, + &Apache::lonnet::instructor_log('slotreservationslog',\%storehash, 1,$uname,$udom,$cnum,$cdom); - &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash, + &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash, 1,$uname,$udom,$uname,$udom); } } @@ -5407,7 +4658,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) || @@ -5419,44 +4670,35 @@ 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', ); + if (exists($stringtypes{$name})) { + if (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 { @@ -5486,41 +4728,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') {