--- loncom/interface/lonparmset.pm 2012/05/10 17:50:07 1.522.2.2 +++ loncom/interface/lonparmset.pm 2014/06/09 20:56:37 1.522.2.14 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.522.2.2 2012/05/10 17:50:07 raeburn Exp $ +# $Id: lonparmset.pm,v 1.522.2.14 2014/06/09 20:56:37 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,8 +46,6 @@ This module sets coursewide and assessme =over -=pod - =item parmval() Figure out a cascading parameter. @@ -139,15 +137,21 @@ 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: +Input: See list below + +=over 4 =item * B : Current username =item * B : Domain of current user. -=item * b : Course -Outputs: See list below: +=back + +Outputs: See list below + +=over 4 =item * B (out) : An array that will contain all of the ids in the course. @@ -173,6 +177,8 @@ Outputs: See list below: =item * B +=back + =item isdateparm() =item parmmenu() @@ -210,6 +216,8 @@ 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? @@ -222,6 +230,8 @@ Variables used (guessed by Jeremy): When storing information, store as part 0 When requesting information, request from full part +=back + =item tablestart() =item tableend() @@ -288,7 +298,6 @@ Set portfolio metadata Main handler. Calls &assessparms subroutine. - =back =cut @@ -640,7 +649,7 @@ sub storeparm_by_symb { } sub log_parmset { - return &Apache::lonnet::instructor_log('parameterlog',@_); + return &Apache::lonnet::write_log('course','parameterlog',@_); } sub storeparm_by_symb_inner { @@ -747,11 +756,14 @@ sub valout { my $result = ''; # Values of zero are valid. if (! $value && $value ne '0') { - if ($editable) { - $result = '*'; - } else { - $result=' '; - } + if ($editable) { + $result = + ''.&mt('Change').''; + } else { + $result=' '; + } } else { if ($type eq 'date_interval') { my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value); @@ -1079,6 +1091,10 @@ sub print_td { if ($which > 3) { $nolink = 1; } + } elsif ($mprefix =~ /examcode\&$/) { + unless ($which == 2) { + $nolink = 1; + } } if ($nolink) { $r->print(&valout($$outpar[$which],$$typeoutpar[$which])); @@ -1232,7 +1248,7 @@ sub extractResourceInformation { $$mapp{$mapid}=$$mapp{$id}; $$allmaps{$mapid}=$$mapp{$id}; if ($mapid eq '1') { - $$maptitles{$mapid}=&mt('Main Course Documents'); + $$maptitles{$mapid}=&mt('Main Content'); } else { $$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id}); } @@ -1402,7 +1418,7 @@ sub lookUpTableParameter { 'lenient' => 'grading', 'retrypartial' => 'tries', 'discussvote' => 'misc', - + 'examcode' => 'high_level_randomization', ); } @@ -1479,26 +1495,23 @@ sub parmboxes { #Print parameters for my $key (sort { $category_order{$a} <=> $category_order{$b} } keys %categoryList) { - if(@{$categoryList{$key}} == 0) { - next; - } else { - $r->print('
' - .'

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

'."\n"); - foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) { - $r->print('' - .'
'."\n"); + next if(@{$categoryList{$key}} == 0); + $r->print('
' + .'

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

'."\n"); + foreach $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) { + $r->print('' + .'
\n"); + $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey} + : $tempkey) + .'
'."\n"); } + $r->print("
\n"); } $r->print("\n"); @@ -1666,13 +1679,13 @@ function group_or_section(caller) { # This function shows on table Mode the available Parameters for the selected Resources # sub displaymenu { - my ($r,$allparms,$pscat,$psprt,$keyorder)=@_; + my ($r,$allparms,$pscat,$psprt,$keyorder,$divid)=@_; $r->print(&Apache::lonhtmlcommon::start_pick_box()); $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameters to View'))); &parmmenu($r,$allparms,$pscat,$keyorder); - $r->print(&Apache::loncommon::start_scrollbox()); + $r->print(&Apache::loncommon::start_scrollbox('480px','440px','200px',$divid)); &parmboxes($r,$allparms,$pscat,$keyorder); $r->print(&Apache::loncommon::end_scrollbox()); @@ -1746,7 +1759,7 @@ sub mapmenu { .'' ); - $r->print(&Apache::loncommon::start_scrollbox(undef,undef,undef,'mapmenuscroll')); + $r->print(&Apache::loncommon::start_scrollbox('700px','680px','400px','mapmenuscroll')); $r->print(&Apache::loncommon::start_data_table(undef,'mapmenuinner')); # Display row: "All Maps or Folders" @@ -1765,7 +1778,7 @@ sub mapmenu { .&Apache::loncommon::end_data_table_row() ); - # Display row: "Main Course Documents" + # Display row: "Main Content" if (exists($$allmaps{1})) { $r->print( &Apache::loncommon::start_data_table_row() @@ -2159,18 +2172,23 @@ sub assessparms { } } } - } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote)\&\d+$/) { + } elsif ($markers[$i] =~ /_(type|lenient|retrypartial|discussvote|examcode)\&\d+$/) { $name = $1; + my $val = $values[$i]; + if ($name eq 'examcode') { + if (&Apache::lonnet::validCODE($values[$i])) { + $val = 'valid'; + } + } $needsrelease = - $Apache::lonnet::needsrelease{"parameter:$name:$values[$i]"}; + $Apache::lonnet::needsrelease{"parameter:$name:$val"}; if ($needsrelease) { unless ($got_chostname) { ($chostname,$cmajor,$cminor) = ¶meter_release_vars(); $got_chostname = 1; } - $needsnewer = ¶meter_releasecheck($name,$values[$i], + $needsnewer = ¶meter_releasecheck($name,$val, $needsrelease, - $chostname, $cmajor,$cminor); } } @@ -2251,7 +2269,7 @@ ENDPARMSELSCRIPT # Step 2 $r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification'),'parmstep2')); - &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder); + &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder,'parmmenuscroll'); # Step 3 $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)'),'parmstep3')); @@ -2816,6 +2834,8 @@ sub storedata { $name = 'lenient'; } elsif ($typeof eq 'string_discussvote') { $name = 'discussvote'; + } elsif ($typeof eq 'string_examcode') { + $name = 'examcode'; } elsif ($typeof eq 'string_yesno') { if ($thiskey =~ /\.retrypartial$/) { $name = 'retrypartial'; @@ -2831,8 +2851,7 @@ sub storedata { } $needsnewer = ¶meter_releasecheck($name,$data, $needsrelease, - $chostname,$cmajor, - $cminor); + $cmajor,$cminor); } if ($needsnewer) { $r->print('
'.&oldversion_warning($name,$data, @@ -2892,7 +2911,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 [_1] parameter(s)

',$delentries)); + $r->print('

'.&mt('Deleted [_1] parameter(s)',$delentries).'

'); } else { $r->print('
'. &mt('Error deleting parameters').'
'); @@ -3186,8 +3205,7 @@ sub string_selector { $got_chostname = 1; } my $needsnewer=¶meter_releasecheck($name,$parmval,$needsrelease, - $chostname,$cmajor, - $cminor); + $cmajor,$cminor); if ($needsnewer) { $skiptype{$parmval} = 1; } @@ -3497,7 +3515,7 @@ sub overview { my $foundkeys=&listdata($r,$resourcedata,$resourcedata,$sortorder); $r->print(&tableend().'

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

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

'. &Apache::loncommon::end_page()); } @@ -3573,8 +3591,9 @@ 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(''); @@ -3597,12 +3616,11 @@ sub date_shift_one { my $start_page=&Apache::loncommon::start_page('Shift Dates'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift'); $r->print($start_page.$breadcrumbs); - $r->print('
'. + $r->print(''. ''. '
'.&mt('Currently set date:').''. &Apache::lonlocal::locallocaltime($env{'form.timebase'}).'
'.&mt('Shifted date:').''. - &Apache::lonhtmlcommon::dshowerfuck.net -ate_setter('shiftform', + &Apache::lonhtmlcommon::date_setter('shiftform', 'timeshifted', $env{'form.timebase'},, ''). @@ -3623,11 +3641,17 @@ sub date_shift_two { my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Shift'); $r->print($start_page.$breadcrumbs); my $timeshifted=&Apache::lonhtmlcommon::get_date_from_form('timeshifted'); - $r->print(&mt('Shifting all dates such that [_1] becomes [_2]', + $r->print('

'.&mt('Shift Dates').'

'. + '

'.&mt('Shifting all dates such that [_1] becomes [_2]', &Apache::lonlocal::locallocaltime($env{'form.timebase'}), - &Apache::lonlocal::locallocaltime($timeshifted))); + &Apache::lonlocal::locallocaltime($timeshifted)).'

'); my $delta=$timeshifted-$env{'form.timebase'}; &dateshift($delta); + $r->print( + &Apache::lonhtmlcommon::confirm_success(&mt('Done')). + '

'. + &Apache::lonhtmlcommon::actionbox( + [''.&mt('Content and Problem Settings').''])); $r->print(&Apache::loncommon::end_page()); } @@ -3672,7 +3696,7 @@ sub parse_key { sub header { - return &Apache::loncommon::start_page('Parameter Manager'); + return &Apache::loncommon::start_page('Content and Problem Settings'); } @@ -3681,7 +3705,7 @@ sub print_main_menu { my ($r,$parm_permission)=@_; # $r->print(&header()); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('Parameter Manager')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Content and Problem Settings')); $r->print(< @@ -3767,6 +3791,7 @@ ENDMAINFORMHEAD }]} ); $r->print(&Apache::lonhtmlcommon::generate_menu(@menu)); + $r->print(''.&Apache::loncommon::end_page()); return; } @@ -3895,7 +3920,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(''); @@ -4559,10 +4584,10 @@ sub update_slots { action => 'reserve', context => 'parameter', ); - &Apache::lonnet::instructor_log('slotreservationslog',\%storehash, + &Apache::lonnet::write_log('course','slotreservationslog',\%storehash, '',$uname,$udom,$cnum,$cdom); - &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash, + &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash, '',$uname,$udom,$uname,$udom); } return $success; @@ -4593,9 +4618,9 @@ sub delete_slots { action => 'release', context => 'parameter', ); - &Apache::lonnet::instructor_log('slotreservationslog',\%storehash, + &Apache::lonnet::write_log('course','slotreservationslog',\%storehash, 1,$uname,$udom,$cnum,$cdom); - &Apache::lonnet::instructor_log($cdom.'_'.$cnum.'_slotlog',\%storehash, + &Apache::lonnet::write_log('course',$cdom.'_'.$cnum.'_slotlog',\%storehash, 1,$uname,$udom,$uname,$udom); } } @@ -4619,7 +4644,7 @@ sub parameter_release_vars { } sub parameter_releasecheck { - my ($name,$value,$needsrelease,$chostname,$cmajor,$cminor) = @_; + my ($name,$value,$needsrelease,$cmajor,$cminor) = @_; my $needsnewer; my ($needsmajor,$needsminor) = split(/\./,$needsrelease); if (($cmajor < $needsmajor) || @@ -4639,9 +4664,12 @@ sub oldversion_warning { lenient => 'string_lenient', retrypartial => 'string_yesno', discussvote => 'string_discussvote', + examcode => 'string_examcode', ); if (exists($stringtypes{$name})) { - if (ref($strings{$stringtypes{$name}}) eq 'ARRAY') { + 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 }; @@ -4682,7 +4710,7 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({href=>"/adm/parmset", - text=>"Parameter Manager", + text=>"Content and Problem Settings", faq=>10, bug=>'Instructor Interface', help =>