--- loncom/interface/lonparmset.pm 2011/05/18 11:26:44 1.512
+++ loncom/interface/lonparmset.pm 2013/08/08 05:52:14 1.522.2.8
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.512 2011/05/18 11:26:44 foxr Exp $
+# $Id: lonparmset.pm,v 1.522.2.8 2013/08/08 05:52:14 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -204,8 +204,8 @@ Outputs: See list below:
Show assessment data and parameters. This is a large routine that should
be simplified and shortened... someday.
-Inputs: $r
-
+Inputs: $r - the Apache request object.
+
Returns: nothing
Variables used (guessed by Jeremy):
@@ -314,27 +314,6 @@ use HTML::Entities;
use LONCAPA qw(:DEFAULT :match);
-sub startSettingsScreen {
- my ($r,$mode)=@_;
-
- $r->print("\n".'
');
+ $r->print(&Apache::loncommon::start_data_table());
#
# This produces the headers
#
@@ -2514,7 +2526,7 @@ ENDTABLEHEADFOUR
}
} # end foreach ids
# -------------------------------------------------- End entry for one resource
- $r->print('
');
+ $r->print(&Apache::loncommon::end_data_table);
} # end of full
#--------------------------------------------------- Entry for parm level map
if ($parmlev eq 'map') {
@@ -2731,7 +2743,6 @@ ENDMAPONE
} # end of $parmlev eq general
}
$r->print('');
- &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
} # end sub assessparms
@@ -2805,25 +2816,40 @@ sub storedata {
$tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./;
}
if ($cmd eq 'set' || $cmd eq 'datepointer' || $cmd eq 'dateinterval') {
- my ($data, $typeof, $text);
+ my ($data, $typeof, $text, $name);
if ($cmd eq 'set') {
$data=$env{$key};
$typeof=$env{'form.typeof_'.$thiskey};
$text = &mt('Saved modified parameter for');
if ($typeof eq 'string_questiontype') {
+ $name = 'type';
+ } elsif ($typeof eq 'string_lenient') {
+ $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';
+ }
+ }
+ if ($name ne '') {
my ($needsrelease,$needsnewer);
- $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$data};
+ $needsrelease = $Apache::lonnet::needsrelease{"parameter:$name:$data"};
if ($needsrelease) {
unless ($got_chostname) {
- ($chostname,$cmajor,$cminor)=&questiontype_release_vars();
+ ($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- $needsnewer = &questiontype_releasecheck($data,$needsrelease,
- $chostname,$cmajor,
- $cminor);
+ $needsnewer = ¶meter_releasecheck($name,$data,
+ $needsrelease,
+ $chostname,$cmajor,
+ $cminor);
}
if ($needsnewer) {
- $r->print(' '.&oldversion_warning($data,$chostname,$cmajor,
+ $r->print(' '.&oldversion_warning($name,$data,
+ $chostname,$cmajor,
$cminor,$needsrelease));
next;
}
@@ -2879,7 +2905,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').'
');
@@ -3058,7 +3084,7 @@ sub listdata {
$$resourcedata{$thiskey}));
} elsif ($thistype =~ m/^string/) {
$r->print(&string_selector($thistype,$thiskey,
- $$resourcedata{$thiskey}));
+ $$resourcedata{$thiskey},$name));
} else {
$r->print(&default_selector($thiskey,$$resourcedata{$thiskey}));
}
@@ -3132,6 +3158,14 @@ my %strings =
[ 'randomizetry', 'New Randomization Each N Tries (default N=1)'],
[ 'practice', 'Practice'],
[ 'surveycred', 'Survey (credit for submission)']],
+ 'string_lenient'
+ => [['yes', 'Yes' ],
+ [ 'no', 'No' ],
+ [ 'default', 'Default - only bubblesheet grading is lenient' ]],
+ 'string_discussvote'
+ => [['yes','Yes'],
+ ['notended','Yes, unless discussion ended'],
+ ['no','No']],
);
sub standard_string_options {
@@ -3143,33 +3177,37 @@ sub standard_string_options {
}
sub string_selector {
- my ($thistype, $thiskey, $showval) = @_;
+ my ($thistype, $thiskey, $showval, $name) = @_;
if (!exists($strings{$thistype})) {
return &default_selector($thiskey,$showval);
}
my %skiptype;
- if ($thistype eq 'string_questiontype') {
+ if (($thistype eq 'string_questiontype') ||
+ ($thistype eq 'string_lenient') ||
+ ($thistype eq 'string_discussvote') ||
+ ($name eq 'retrypartial')) {
my ($got_chostname,$chostname,$cmajor,$cminor);
foreach my $possibilities (@{ $strings{$thistype} }) {
next unless (ref($possibilities) eq 'ARRAY');
- my ($name, $description) = @{ $possibilities };
- my $needsrelease=$Apache::lonnet::needsrelease{'parameter:type:'.$name};
+ my ($parmval, $description) = @{ $possibilities };
+ my $needsrelease=$Apache::lonnet::needsrelease{"parameter:$name:$parmval"};
if ($needsrelease) {
unless ($got_chostname) {
- ($chostname,$cmajor,$cminor)=&questiontype_release_vars();
+ ($chostname,$cmajor,$cminor)=¶meter_release_vars();
$got_chostname = 1;
}
- my $needsnewer=&questiontype_releasecheck($name,$needsrelease,
- $chostname,$cmajor,
- $cminor);
+ my $needsnewer=¶meter_releasecheck($name,$parmval,$needsrelease,
+ $chostname,$cmajor,
+ $cminor);
if ($needsnewer) {
- $skiptype{$name} = 1;
+ $skiptype{$parmval} = 1;
}
}
}
}
+
my $result;
my $numinrow = 3;
@@ -3262,10 +3300,23 @@ sub newoverview {
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
text=>"Overview Mode"});
- my $start_page = &Apache::loncommon::start_page('Set Parameters');
+
+ my %loaditems = (
+ 'onload' => "showHide_courseContent(); resize_scrollbox('mapmenuscroll','1','1');",
+ );
+ my $js = '
+
+';
+ my $start_page = &Apache::loncommon::start_page('Set Parameters',$js,
+ {'add_entries' => \%loaditems,});
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
- &startSettingsScreen($r,'parmset');
$r->print(<
ENDOVER
@@ -3328,7 +3379,7 @@ ENDOVER
$r->print('
');
#$r->print('
Step 1
');
$r->print('
');
- $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::lonhtmlcommon::start_pick_box(undef,'parmlevel'));
&levelmenu($r,\%alllevs,$parmlev);
if ($parmlev ne 'general') {
$r->print(&Apache::lonhtmlcommon::row_closure());
@@ -3391,7 +3442,6 @@ ENDOVER
$r->print(&tableend().
((($env{'form.store'}) || ($env{'form.dis'}))?'':'').
'');
- &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -3440,7 +3490,6 @@ sub overview {
my $start_page=&Apache::loncommon::start_page('Modify Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
- &startSettingsScreen($r,'parmset');
$r->print(''.
+ ($foundkeys?'':''.&mt('There are no parameters.').'').''.
&Apache::loncommon::end_page());
}
@@ -3537,8 +3586,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('
'."\n");
- &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
return;
}
@@ -4306,16 +4352,22 @@ sub parm_change_log {
my ($r)=@_;
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable',
text=>"Parameter Change Log"});
- $r->print(&Apache::loncommon::start_page('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'});
if ((keys(%parmlog))[0]=~/^error\:/) { undef(%parmlog); }
- $r->print('
print('
'.
+ '
');
my $courseopt=&Apache::lonnet::get_courseresdata($env{'course.'.$env{'request.course.id'}.'.num'},
$env{'course.'.$env{'request.course.id'}.'.domain'});
@@ -4476,7 +4527,6 @@ sub parm_change_log {
|| $shown<=$env{'form.show'})) { last; }
}
$r->print(&Apache::loncommon::end_data_table());
- &endSettingsScreen($r);
$r->print(&Apache::loncommon::end_page());
}
@@ -4524,10 +4574,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;
@@ -4558,9 +4608,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);
}
}
@@ -4574,7 +4624,7 @@ sub check_for_course_info {
return 0;
}
-sub questiontype_release_vars {
+sub parameter_release_vars {
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $chome = $env{'course.'.$env{'request.course.id'}.'.home'};
my $chostname = &Apache::lonnet::hostname($chome);
@@ -4583,35 +4633,47 @@ sub questiontype_release_vars {
return ($chostname,$cmajor,$cminor);
}
-sub questiontype_releasecheck {
- my ($questiontype,$needsrelease,$chostname,$cmajor,$cminor) = @_;
+sub parameter_releasecheck {
+ my ($name,$value,$needsrelease,$chostname,$cmajor,$cminor) = @_;
my $needsnewer;
my ($needsmajor,$needsminor) = split(/\./,$needsrelease);
if (($cmajor < $needsmajor) ||
($cmajor == $needsmajor && $cminor < $needsminor)) {
$needsnewer = 1;
} else {
- &Apache::lonnet::update_released_required($Apache::lonnet::needsrelease{'parameter:type:'.$questiontype});
+ &Apache::lonnet::update_released_required($Apache::lonnet::needsrelease{'parameter:'.$name.':'.$value});
}
return $needsnewer;
}
sub oldversion_warning {
- my ($questiontype,$chostname,$cmajor,$cminor,$needsrelease) = @_;
+ my ($name,$value,$chostname,$cmajor,$cminor,$needsrelease) = @_;
my $desc;
- if (ref($strings{'string_questiontype'}) eq 'ARRAY') {
- foreach my $possibilities (@{ $strings{'string_questiontype'} }) {
- next unless (ref($possibilities) eq 'ARRAY');
- my ($name, $description) = @{ $possibilities };
- if ($name eq $questiontype) {
- $desc = $description;
- last;
+ 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;
+ }
}
}
}
+ my $standard_name = &standard_parameter_names($name);
return '
'.
- &mt('Question Type was [_1]not[_2] set to [_3].',
- '','','"'.$desc.'"').' '.
+ &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).