');
}
sub endSettingsScreen {
@@ -661,7 +665,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 {
@@ -768,11 +772,14 @@ sub valout {
my $result = '';
# Values of zero are valid.
if (! $value && $value ne '0') {
- if ($editable) {
- $result = '
* ';
- } else {
- $result=' ';
- }
+ if ($editable) {
+ $result =
+ '
';
+ } else {
+ $result=' ';
+ }
} else {
if ($type eq 'date_interval') {
my ($sec,$min,$hour,$mday,$mon,$year)=gmtime($value);
@@ -855,16 +862,10 @@ sub page_js {
return(<
//
+
$selscript
ENDJS
}
+sub showhide_js {
+ return <<"COURSECONTENTSCRIPT";
+
+function showHide_courseContent() {
+ var parmlevValue=document.getElementById("parmlev").value;
+ if (parmlevValue == 'general') {
+ document.getElementById('mapmenu').style.display="none";
+ } else {
+ if ((parmlevValue == "full") || (parmlevValue == "map")) {
+ document.getElementById('mapmenu').style.display ="";
+ } else {
+ document.getElementById('mapmenu').style.display="none";
+ }
+ }
+ return;
+}
+
+COURSECONTENTSCRIPT
+}
+
sub startpage {
- my ($r,$psymb) = @_;
+ my ($r,$psymb,$crstype) = @_;
my %loaditems = (
- 'onunload' => "pclose()",
'onload' => "group_or_section('cgroup')",
);
if (!$psymb) {
- $loaditems{'onload'} = "showHide_courseContent(); group_or_section('cgroup')";
+ $loaditems{'onload'} = "showHide_courseContent(); group_or_section('cgroup'); resize_scrollbox('mapmenuscroll','1','1');";
}
if ((($env{'form.command'} eq 'set') && ($env{'form.url'})
@@ -920,16 +942,23 @@ sub startpage {
text=>"Table Mode",
help => 'Course_Setting_Parameters'});
}
+ my $js = &page_js().'
+
+';
my $start_page =
- &Apache::loncommon::start_page('Set/Modify Course Parameters',
- &page_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');
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
@@ -1081,6 +1110,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]));
@@ -1234,7 +1267,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});
}
@@ -1302,8 +1335,9 @@ sub parmmenu {
}
function checkdisset() {
- checkthis('discussend','pscat');
+ checkthis('discussend','pscat');
checkthis('discusshide','pscat');
+ checkthis('discussvote','pscat');
}
function checkcontdates() {
@@ -1401,7 +1435,9 @@ sub lookUpTableParameter {
'maxcollaborators' => 'misc',
'scoreformat' => 'misc',
'lenient' => 'grading',
-
+ 'retrypartial' => 'tries',
+ 'discussvote' => 'misc',
+ 'examcode' => 'high_level_randomization',
);
}
@@ -1474,33 +1510,25 @@ sub parmboxes {
&whatIsMyCategory($tempparameter, \%categoryList);
}
#part to print the parm-list
- $r->print(''."\n");
-
- #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('
'
- .' print('value="'.$tempkey.'" ');
- if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) {
- $r->print(' checked="checked"');
- }
- $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}
- : $tempkey)
- .' '."\n");
+ 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 my $tempkey (&keysindisplayorderCategory($categoryList{$key},$keyorder)) {
+ $r->print(''
+ .' print( ' checked="checked"');
}
- $r->print(" \n");
+ $r->print(' />'.($$allparms{$tempkey}=~/\S/ ? $$allparms{$tempkey}
+ : $tempkey)
+ .'
'."\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
@@ -1539,8 +1567,12 @@ sub shortCuts {
sub partmenu {
my ($r,$allparts,$psprt)=@_;
+ my $selsize = 1+scalar(keys(%{$allparts}));
+ if ($selsize > 8) {
+ $selsize = 8;
+ }
- $r->print('');
+ $r->print('');
$r->print('print(' selected="selected"') unless (@{$psprt});
$r->print('>'.&mt('All Parts').' ');
@@ -1661,13 +1693,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());
@@ -1741,12 +1773,12 @@ sub mapmenu {
.' '
);
- $r->print(&Apache::loncommon::start_scrollbox());
- $r->print(&Apache::loncommon::start_data_table());
+ $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"
$r->print(
- &Apache::loncommon::start_data_table_row()
+ &Apache::loncommon::start_data_table_row(undef,'picklevel')
.'
'
.''
.' print(
&Apache::loncommon::start_data_table_row()
@@ -1821,8 +1853,9 @@ sub mapmenu {
);
}
- $r->print(&Apache::loncommon::end_data_table());
- $r->print(&Apache::loncommon::end_scrollbox());
+ $r->print(&Apache::loncommon::end_data_table().
+ ' '.
+ &Apache::loncommon::end_scrollbox());
}
}
@@ -1948,10 +1981,11 @@ sub standardkeyorder {
'parameter_0_tol' => 16,
'parameter_0_sig' => 17,
'parameter_0_turnoffunit' => 18,
- 'parameter_0_discussend' => 19,
- 'parameter_0_discusshide' => 20,
- 'parameter_0_printopendate' => 21,
- 'parameter_0_printclosedate' => 22);
+ 'parameter_0_discussend' => 19,
+ 'parameter_0_discusshide' => 20,
+ 'parameter_0_discussvote' => 21,
+ 'parameter_0_printopendate' => 22,
+ 'parameter_0_printclosedate' => 23);
}
@@ -2054,8 +2088,10 @@ sub assessparms {
$id='';
} else {
$message=
- ''.&mt("Unknown ID")." '$id' ".
- &mt('at domain')." '$udom' ";
+ ''.
+ &mt('Unknown ID [_1] at domain [_2]',
+ "'".$id."'","'".$udom."'").
+ '
';
}
} else {
$uname=$env{'form.uname'};
@@ -2066,16 +2102,20 @@ sub assessparms {
$uhome=&Apache::lonnet::homeserver($uname,$udom);
if ($uhome eq 'no_host') {
$message=
- ''.&mt("Unknown user")." '$uname' ".
- &mt("at domain")." '$udom' ";
+ ''.
+ &mt('Unknown user [_1] at domain [_2]',
+ "'".$uname."'","'".$udom."'").
+ '
';
$uname='';
} else {
$csec=&Apache::lonnet::getsection($udom,$uname,
$env{'request.course.id'});
if ($csec eq '-1') {
- $message=''.
- &mt("User")." '$uname' ".&mt("at domain")." '$udom' ".
- &mt("not in this course")." ";
+ $message=
+ ''.
+ &mt('User [_1] at domain [_2] not in this course',
+ "'".$uname."'","'".$udom."'").
+ '
';
$uname='';
$csec=$env{'form.csec'};
$cgroup=$env{'form.cgroup'};
@@ -2152,16 +2192,22 @@ sub assessparms {
}
}
}
- } elsif ($markers[$i] =~ /_(type|lenient)\&\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);
@@ -2192,7 +2238,8 @@ sub assessparms {
if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);}
# ------------------------------------------------------------------ Start page
- &startpage($r,$pssymb);
+ my $crstype = &Apache::loncommon::course_type();
+ &startpage($r,$pssymb,$crstype);
foreach ('tolerance','date_default','date_start','date_end',
'date_interval','int','float','string') {
@@ -2224,27 +2271,15 @@ ENDPARMSELSCRIPT
}
# Step 1
- $r->print(&Apache::lonhtmlcommon::topic_bar(1,&mt('Resource Specification')));
- $r->print(<print(&Apache::lonhtmlcommon::topic_bar(1,&mt('Resource Specification'),'parmstep1'));
+ $r->print('
-COURSECONTENTSCRIPT
-
- $r->print(&Apache::lonhtmlcommon::start_pick_box());
+');
+ $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);
@@ -2255,11 +2290,11 @@ COURSECONTENTSCRIPT
$r->print(&Apache::lonhtmlcommon::end_pick_box());
# Step 2
- $r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification')));
- &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder);
+ $r->print(&Apache::lonhtmlcommon::topic_bar(2,&mt('Parameter Specification'),'parmstep2'));
+ &displaymenu($r,\%allparms,\@pscat,\@psprt,\%keyorder,'parmmenuscroll');
# Step 3
- $r->print(&Apache::lonhtmlcommon::topic_bar(3,&mt('User Specification (optional)')));
+ $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);
$r->print(&Apache::lonhtmlcommon::row_closure(1));
@@ -2284,7 +2319,6 @@ COURSECONTENTSCRIPT
.''
.'');
} else {
- $r->print();
# parameter screen for a single resource.
my ($map,$iid,$resource)=&Apache::lonnet::decode_symb($pssymb);
my $title = &Apache::lonnet::gettitle($pssymb);
@@ -2345,7 +2379,7 @@ COURSECONTENTSCRIPT
$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",
@@ -2408,9 +2442,8 @@ ENDTABLEHEADFOUR
my $defbgtwo='';
my $defbgthree = '';
- foreach (@ids) {
+ foreach my $rid (@ids) {
- my $rid=$_;
my ($inmapid)=($rid=~/\.(\d+)$/);
if ((!$pssymb &&
@@ -2814,6 +2847,14 @@ sub storedata {
$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);
@@ -2886,7 +2927,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').'
');
@@ -3134,7 +3175,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'],
@@ -3142,7 +3183,11 @@ my %strings =
'string_lenient'
=> [['yes', 'Yes' ],
[ 'no', 'No' ],
- [ 'default', 'Default - only bubblesheet grading is lenient' ]]
+ [ 'default', 'Default - only bubblesheet grading is lenient' ]],
+ 'string_discussvote'
+ => [['yes','Yes'],
+ ['notended','Yes, unless discussion ended'],
+ ['no','No']],
);
sub standard_string_options {
@@ -3162,7 +3207,9 @@ sub string_selector {
my %skiptype;
if (($thistype eq 'string_questiontype') ||
- ($thistype eq 'string_lenient')) {
+ ($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');
@@ -3273,12 +3320,27 @@ sub newoverview {
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'};
&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');
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print(<
ENDOVER
@@ -3341,7 +3403,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());
@@ -3447,13 +3509,14 @@ sub overview {
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'};
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview',
text=>"Overview Mode"});
my $start_page=&Apache::loncommon::start_page('Modify Parameters');
my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Overview');
$r->print($start_page.$breadcrumbs);
- &startSettingsScreen($r,'parmset');
+ &startSettingsScreen($r,'parmset',$crstype);
$r->print('
'.
+ ($foundkeys?'
':'
'.&mt('There are no parameters.').' ').''.
&Apache::loncommon::end_page());
}
@@ -3550,8 +3613,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('
');
@@ -3569,19 +3633,19 @@ 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 $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');
- $r->print('