--- loncom/interface/lonparmset.pm 2020/01/15 00:38:38 1.522.2.26.2.1
+++ loncom/interface/lonparmset.pm 2016/03/15 14:25:26 1.558
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.522.2.26.2.1 2020/01/15 00:38:38 raeburn Exp $
+# $Id: lonparmset.pm,v 1.558 2016/03/15 14:25:26 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
@@ -55,21 +54,25 @@ Inputs: $what - a parameter spec (inclu
$id - a bighash Id number
$def - the resource's default value 'stupid emacs
-Returns: A list, the first item is the index into the remaining list of items of parm valuse that is the active one, the list consists of parm values at the 14 possible levels
+Returns: A list, the first item is the index into the remaining list of items of parm values that is the active one, the list consists of parm values at the 18 possible levels
-14- General Course
-13- Map or Folder level in course
-12- resource default
-11- map default
-10- resource level in course
-9 - General for section
-8 - Map or Folder level for section
-7 - resource level in section
-6 - General for group
-5 - Map or Folder level for group
-4 - resource level in group
-3 - General for specific student
-2 - Map or Folder level for specific student
+18 - General Course
+17 - Map or Folder level in course (recursive)
+16 - Map or Folder level in course (non-recursive)
+15 - resource default
+14 - map default
+13 - resource level in course
+12 - General for section
+11 - Map or Folder level for section (recursive)
+10 - Map or Folder level for section (non-recursive)
+9 - resource level in section
+8 - General for group
+7 - Map or Folder level for group (recursive)
+6 - Map or Folder level for group (non-recursive)
+5 - resource level in group
+4 - General for specific student
+3 - Map or Folder level for specific student (recursive)
+2 - Map or Folder level for specific student (non-recursive)
1 - resource level for specific student
=item parmval_by_symb()
@@ -130,7 +133,7 @@ javascript function 'pjump'.
=item print_td()
-=item check_other_groups()
+=item print_usergroups()
=item parm_control_group()
@@ -150,7 +153,7 @@ Input: See list below
=back
-Outputs: See list below
+Outputs: See list below:
=over 4
@@ -324,6 +327,31 @@ use HTML::Entities;
use LONCAPA qw(:DEFAULT :match);
+sub startSettingsScreen {
+ my ($r,$mode,$crstype)=@_;
+
+ my $tabtext = &mt('Course Settings');
+ if ($crstype eq 'Community') {
+ $tabtext = &mt('Community Settings');
+ }
+ $r->print("\n".'
'."\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);
my $symbparm=$symb.'.'.$what;
my $map=(&Apache::lonnet::decode_symb($symb))[0];
+ my $recurseparm=$map.'___(rec).'.$what;
my $mapparm=$map.'___(all).'.$what;
my ($coursereply,$resultitem,$resultgroup,$resultlevel,$resulttype) =
- &parm_control_group($courseid,$usersgroups,$symbparm,$mapparm,$what,
- $courseopt);
+ &parm_control_group($courseid,$usersgroups,$symbparm,$mapparm,
+ $recurseparm,$what,$courseopt);
my $bgcolor = $defbg;
my $grp_parm;
if (($coursereply) && ($cgroup ne $resultgroup)) {
if ($result > 3) {
$bgcolor = '#AAFFAA';
+ $grp_parm = &valout($coursereply,$resulttype,$what);
}
- $grp_parm = &valout($coursereply,$resulttype);
+ $grp_parm = &valout($coursereply,$resulttype,$what);
$output = '
';
if ($resultgroup && $resultlevel) {
$output .= ''.$resultgroup.' ('.$resultlevel.'): '.$grp_parm;
@@ -1264,11 +1402,11 @@ sub check_other_groups {
}
sub parm_control_group {
- my ($courseid,$usersgroups,$symbparm,$mapparm,$what,$courseopt) = @_;
+ my ($courseid,$usersgroups,$symbparm,$mapparm,$recurseparm,$what,$courseopt) = @_;
my ($coursereply,$resultitem,$resultgroup,$resultlevel,$resulttype);
my $grpfound = 0;
- my @levels = ($symbparm,$mapparm,$what);
- my @levelnames = ('resource','map/folder','general');
+ my @levels = ($symbparm,$mapparm,$recurseparm,$what);
+ my @levelnames = ('resource','map/folder','recursive','general');
foreach my $group (@{$usersgroups}) {
if ($grpfound) { last; }
for (my $i=0; $i<@levels; $i++) {
@@ -1378,7 +1516,9 @@ sub extractResourceInformation {
$$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id});
}
$$maptitles{$$mapp{$id}}=$$maptitles{$mapid};
- $$symbp{$mapid}=$$mapp{$id}.'___(all)';
+ $$symbp{$mapid}=$$mapp{$id}.'___(all)'; # Added in rev. 1.57, but seems not to be used.
+ # Lines 1038 and 1114 which use $symbp{$mapid}
+ # are commented out in rev. 1.57
} else {
$$mapp{$id} = $$mapp{$mapid};
}
@@ -1393,21 +1533,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
@@ -1550,8 +1683,8 @@ sub lookUpTableParameter {
'lenient' => 'grading',
'retrypartial' => 'tries',
'discussvote' => 'misc',
- 'examcode' => 'high_level_randomization',
- );
+ 'examcode' => 'high_level_randomization',
+ );
}
sub whatIsMyCategory {
@@ -1602,9 +1735,7 @@ sub category_order {
sub parmboxes {
my ($r,$allparms,$pscat,$keyorder)=@_;
- my $tempkey;
- my $tempparameter;
- my %categories = &categories;
+ my %categories = &categories();
my %category_order = &category_order();
my %categoryList = (
'time_settings' => [],
@@ -1619,41 +1750,35 @@ sub parmboxes {
'misc' => [],
);
- foreach $tempparameter (keys %$allparms) {
+ foreach my $tempparameter (keys(%$allparms)) {
&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) {
- 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 '');
+ .'
');
+ &endSettingsScreen($r);
return 'ok';
}
@@ -4462,7 +4865,7 @@ sub continue {
my $output;
$output .= '
';
$output .= '';
- $output .= '';
+ $output .= '';
return ($output);
}
@@ -4475,6 +4878,8 @@ sub addmetafield {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field'));
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);
if (exists($env{'form.undelete'})) {
my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield');
foreach my $meta_field(@meta_fields) {
@@ -4484,10 +4889,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'})) {
@@ -4499,17 +4901,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.
'.
+ &Apache::loncommon::end_data_table_header_row());
my $shown=0;
my $folder='';
if ($env{'form.displayfilter'} eq 'currentfolder') {
@@ -4965,8 +5378,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'),
@@ -4987,7 +5399,7 @@ sub parm_change_log {
next if (($issection ne '') && ($issection ne $env{'request.course.sec'}));
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'}));
+ next if (($stusection ne '-1') && ($stusection ne $env{'request.course.sec'}));
}
}
if ($env{'form.displayfilter'} eq 'currentfolder') {
@@ -5043,31 +5455,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 .= '