');
@@ -1018,16 +1020,16 @@ sub print_row {
&print_td($r,14,$defbgone,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
- &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);
- &print_td($r,8,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
- &print_td($r,7,$defbgtwo,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
- }
+ &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);
+ &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);
@@ -1035,14 +1037,14 @@ sub print_row {
&print_td($r,4,$defbgthree,$result,\@outpar,$mprefix,$_,\@typeoutpar,$display);
}
- if ($uname) {
+ if ($uname) {
if ($othergrp) {
$r->print($othergrp);
}
- &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);
- }
+ &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
$r->print('
'.$effective_parm.'
');
@@ -1159,81 +1161,80 @@ sub extractResourceInformation {
my $navmap = Apache::lonnavmaps::navmap->new();
my @allres=$navmap->retrieveResources(undef,undef,1,undef,1);
foreach my $resource (@allres) {
- my $id=$resource->id();
+ my $id=$resource->id();
my ($mapid,$resid)=split(/\./,$id);
- if ($mapid eq '0') { next; }
- $$ids[$#$ids+1]=$id;
- my $srcf=$resource->src();
- $srcf=~/\.(\w+)$/;
- $$typep{$id}=$1;
- $$keyp{$id}='';
+ if ($mapid eq '0') { next; }
+ $$ids[$#$ids+1]=$id;
+ my $srcf=$resource->src();
+ $srcf=~/\.(\w+)$/;
+ $$typep{$id}=$1;
+ $$keyp{$id}='';
$$uris{$id}=$srcf;
- foreach my $key (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) {
- next if ($key!~/^parameter_/);
+ foreach my $key (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) {
+ next if ($key!~/^parameter_/);
# Hidden parameters
- next if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq 'parm');
+ next if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq 'parm');
#
# allparms is a hash of parameter names
#
- my $name=&Apache::lonnet::metadata($srcf,$key.'.name');
- if (!exists($$allparms{$name}) || $$allparms{$name} =~ m/^\s*$/ ) {
- my ($display,$parmdis);
- $display = &standard_parameter_names($name);
- if ($display eq '') {
- $display= &Apache::lonnet::metadata($srcf,$key.'.display');
- $parmdis = $display;
- $parmdis =~ s/\s*\[Part.*$//g;
- } else {
- $parmdis = $display;
- }
- $$allparms{$name}=$parmdis;
- if (ref($defkeytype)) {
- $$defkeytype{$name}=
- &Apache::lonnet::metadata($srcf,$key.'.type');
- }
- }
+ my $name=&Apache::lonnet::metadata($srcf,$key.'.name');
+ if (!exists($$allparms{$name}) || $$allparms{$name} =~ m/^\s*$/ ) {
+ my ($display,$parmdis);
+ $display = &standard_parameter_names($name);
+ if ($display eq '') {
+ $display= &Apache::lonnet::metadata($srcf,$key.'.display');
+ $parmdis = $display;
+ $parmdis =~ s/\s*\[Part.*$//g;
+ } else {
+ $parmdis = &mt($display);
+ }
+ $$allparms{$name}=$parmdis;
+ if (ref($defkeytype)) {
+ $$defkeytype{$name}=
+ &Apache::lonnet::metadata($srcf,$key.'.type');
+ }
+ }
#
# allparts is a hash of all parts
#
- my $part= &Apache::lonnet::metadata($srcf,$key.'.part');
- $$allparts{$part} = &mt('Part: [_1]',$part);
+ my $part= &Apache::lonnet::metadata($srcf,$key.'.part');
+ $$allparts{$part} = &mt('Part: [_1]',$part);
#
# Remember all keys going with this resource
#
- if ($$keyp{$id}) {
- $$keyp{$id}.=','.$key;
- } else {
- $$keyp{$id}=$key;
- }
+ if ($$keyp{$id}) {
+ $$keyp{$id}.=','.$key;
+ } else {
+ $$keyp{$id}=$key;
+ }
#
# Put in order
#
- unless ($$keyorder{$key}) {
- $$keyorder{$key}=$keyordercnt;
- $keyordercnt++;
- }
- }
-
-
- if (!exists($$mapp{$mapid})) {
- $$mapp{$id}=
- &Apache::lonnet::declutter($resource->enclosing_map_src());
- $$mapp{$mapid}=$$mapp{$id};
- $$allmaps{$mapid}=$$mapp{$id};
- if ($mapid eq '1') {
- $$maptitles{$mapid}=&mt('Main Course Documents');
- } else {
- $$maptitles{$mapid}=
- &Apache::lonnet::gettitle($$mapp{$id});
- }
- $$maptitles{$$mapp{$id}}=$$maptitles{$mapid};
- $$symbp{$mapid}=$$mapp{$id}.'___(all)';
- } else {
- $$mapp{$id} = $$mapp{$mapid};
- }
- $$symbp{$id}=&Apache::lonnet::encode_symb($$mapp{$id},$resid,$srcf);
+ unless ($$keyorder{$key}) {
+ $$keyorder{$key}=$keyordercnt;
+ $keyordercnt++;
+ }
+ }
+
+
+ if (!exists($$mapp{$mapid})) {
+ $$mapp{$id}=
+ &Apache::lonnet::declutter($resource->enclosing_map_src());
+ $$mapp{$mapid}=$$mapp{$id};
+ $$allmaps{$mapid}=$$mapp{$id};
+ if ($mapid eq '1') {
+ $$maptitles{$mapid}=&mt('Main Course Documents');
+ } else {
+ $$maptitles{$mapid}=&Apache::lonnet::gettitle($$mapp{$id});
+ }
+ $$maptitles{$$mapp{$id}}=$$maptitles{$mapid};
+ $$symbp{$mapid}=$$mapp{$id}.'___(all)';
+ } else {
+ $$mapp{$id} = $$mapp{$mapid};
+ }
+ $$symbp{$id}=&Apache::lonnet::encode_symb($$mapp{$id},$resid,$srcf);
}
}
@@ -1244,6 +1245,10 @@ sub isdateparm {
return (($type=~/^date/) && (!($type eq 'date_interval')));
}
+#
+# This function prints a list of parameters, which were selected. It also display a link from which you can
+# hide or show the complete parameter list, from which you can choose your parameters.
+#
sub parmmenu {
my ($r,$allparms,$pscat,$keyorder)=@_;
my $tempkey;
@@ -1259,7 +1264,7 @@ sub parmmenu {
displayOverview = "none"
}
- for (i=0; iprint(&Apache::lonhtmlcommon::row_closure(1));
}
+# return a hash
+sub categories {
+ return ('time_settings' => 'Time Settings',
+ 'grading' => 'Grading',
+ 'tries' => 'Tries',
+ 'problem_appearance' => 'Problem Appearance',
+ 'behaviour_of_input_fields' => 'Behaviour of Input Fields',
+ 'hiding' => 'Hiding',
+ 'high_level_randomization' => 'High Level Randomization',
+ 'slots' => 'Slots',
+ 'file_submission' => 'File Submission',
+ 'misc' => 'Miscellaneous' );
+}
+
+# return a hash. Like a look-up table
+sub lookUpTableParameter {
+
+ return (
+ 'opendate' => 'time_settings',
+ 'duedate' => 'time_settings',
+ 'answerdate' => 'time_settings',
+ 'interval' => 'time_settings',
+ 'contentopen' => 'time_settings',
+ 'contentclose' => 'time_settings',
+ 'discussend' => 'time_settings',
+ 'weight' => 'grading',
+ 'handgrade' => 'grading',
+ 'maxtries' => 'tries',
+ 'hinttries' => 'tries',
+ 'type' => 'problem_appearance',
+ 'problemstatus' => 'problem_appearance',
+ 'display' => 'problem_appearance',
+ 'ordered' => 'problem_appearance',
+ 'numbubbles' => 'problem_appearance',
+ 'tol' => 'behaviour_of_input_fields',
+ 'sig' => 'behaviour_of_input_fields',
+ 'turnoffunit' => 'behaviour_of_input_fields',
+ 'hiddenresource' => 'hiding',
+ 'hiddenparts' => 'hiding',
+ 'discusshide' => 'hiding',
+ 'buttonshide' => 'hiding',
+ 'turnoffeditor' => 'hiding',
+ 'encrypturl' => 'hiding',
+ 'randomorder' => 'high_level_randomization',
+ 'randompick' => 'high_level_randomization',
+ 'available' => 'slots',
+ 'useslots' => 'slots',
+ 'availablestudent' => 'slots',
+ 'uploadedfiletypes' => 'file_submission',
+ 'maxfilesize' => 'file_submission',
+ 'cssfile' => 'misc',
+ 'mapalias' => 'misc',
+ 'acc' => 'misc',
+ 'maxcollaborators' => 'misc',
+ 'scoreformat' => 'misc',
+
+ );
+}
+
+sub whatIsMyCategory {
+ my $name = shift;
+ my $catList = shift;
+ my @list;
+ my %lookUpList = &lookUpTableParameter; #Initilize the lookupList
+ my $cat = $lookUpList{$name};
+ if (defined($cat)) {
+ if (!defined($$catList{$cat})){
+ push @list, ($name);
+ $$catList{$cat} = \@list;
+ } else {
+ push @{${$catList}{$cat}}, ($name);
+ }
+ } else {
+ if (!defined($$catList{'misc'})){
+ push @list, ($name);
+ $$catList{'misc'} = \@list;
+ } else {
+ push @{${$catList}{'misc'}}, ($name);
+ }
+ }
+}
+
+sub keysindisplayorderCategory {
+ my ($name,$keyorder)=@_;
+ return sort {
+ $$keyorder{'parameter_0_'.$a} <=> $$keyorder{'parameter_0_'.$b};
+ } ( @{$name});
+}
+
+sub category_order {
+ return (
+ 'time_settings' => 1,
+ 'grading' => 2,
+ 'tries' => 3,
+ 'problem_appearance' => 4,
+ 'hiding' => 5,
+ 'behaviour_of_input_fields' => 6,
+ 'high_level_randomization' => 7,
+ 'slots' => 8,
+ 'file_submission' => 9,
+ 'misc' => 10
+ );
+
+}
sub parmboxes {
my ($r,$allparms,$pscat,$keyorder)=@_;
my $tempkey;
-
+ my $tempparameter;
+ my %categories = &categories;
+ my %category_order = &category_order();
+ my %categoryList = (
+ 'time_settings' => [],
+ 'grading' => [],
+ 'tries' => [],
+ 'problem_appearance' => [],
+ 'behaviour_of_input_fields' => [],
+ 'hiding' => [],
+ 'high_level_randomization' => [],
+ 'slots' => [],
+ 'file_submission' => [],
+ 'misc' => [],
+ );
+ foreach $tempparameter (keys %$allparms) {
+ &whatIsMyCategory($tempparameter, \%categoryList);
+ }
#part to print the parm-list
$r->print('');
}
+#
+# This function offers some links on the parameter section to get with one click a group a parameters
+#
sub shortCuts {
my ($r,$allparms,$pscat,$keyorder)=@_;
@@ -1463,15 +1593,15 @@ sub partmenu {
my %temphash=();
foreach (@{$psprt}) { $temphash{$_}=1; }
foreach my $tempkey (sort {
- if ($a==$b) { return ($a cmp $b) } else { return ($a <=> $b); }
+ if ($a==$b) { return ($a cmp $b) } else { return ($a <=> $b); }
} keys(%{$allparts})) {
- unless ($tempkey =~ /\./) {
- $r->print('');
- }
+ unless ($tempkey =~ /\./) {
+ $r->print('');
+ }
}
$r->print('');
}
@@ -1497,9 +1627,9 @@ sub usermenu {
$sections .= qq| onchange="group_or_section('csec')" |;
}
$sections .= '>';
- foreach my $section ('',sort keys %sectionhash) {
- $sections.='';
}
$sections.='';
@@ -1573,9 +1703,11 @@ function group_or_section(caller) {
,$chooseopt));
}
+#
+# This function shows on table Mode the available Parameters for the selected Resources
+#
sub displaymenu {
my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_;
- $r->print(&Apache::lonhtmlcommon::topic_bar (2,&mt('Select Parameters')));
$r->print(&Apache::lonhtmlcommon::start_pick_box());
&parmmenu($r,$allparms,$pscat,$keyorder);
$r->print(&Apache::lonhtmlcommon::end_pick_box());
@@ -1588,7 +1720,8 @@ sub displaymenu {
}
sub mapmenu {
- my ($r,$allmaps,$pschp,$maptitles)=@_;
+ my ($r,$allmaps,$pschp,$maptitles, $symbp)=@_;
+ my %allmaps_inverted = reverse %$allmaps;
my $navmap = Apache::lonnavmaps::navmap->new();
my $tree=[];
my $treeinfo={};
@@ -1596,67 +1729,125 @@ sub mapmenu {
my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);
my $curRes;
my $depth = 0;
-
+ my %parent = ();
+ my $startcount = 5;
+ my $lastcontainer = $startcount;
+# preparing what is to show ...
while ($curRes = $it->next()) {
if ($curRes == $it->BEGIN_MAP()) {
$depth++;
+ $parent{$depth}= $lastcontainer;
}
if ($curRes == $it->END_MAP()) {
$depth--;
+ $lastcontainer = $parent{$depth};
}
if (ref($curRes)) {
+ my $symb = $curRes->symb();
+ my $ressymb = $symb;
if (($curRes->is_sequence()) || ($curRes->is_page())) {
my $type = 'sequence';
if ($curRes->is_page()) {
$type = 'page';
}
my $id= $curRes->id();
- my ($mapid,$resid)=split(/\./,$id);
- if(!exists($treeinfo->{$mapid})) {
- push(@$tree,$mapid);
- $treeinfo->{$mapid} = {
+ my $srcf = $curRes->src();
+ my $resource_name = &Apache::lonnet::gettitle($srcf);
+ if(!exists($treeinfo->{$id})) {
+ push(@$tree,$id);
+ my $enclosing_map_folder = &Apache::lonnet::declutter($curRes->enclosing_map_src());
+ $treeinfo->{$id} = {
depth => $depth,
type => $type,
+ name => $resource_name,
+ enclosing_map_folder => $enclosing_map_folder,
};
}
}
}
}
}
-
+# Show it ...
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder')));
if ((ref($tree) eq 'ARRAY') && (ref($treeinfo) eq 'HASH')) {
my $icon = '';
- $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row());
- $r->print('
'.$icon.'
'.&Apache::loncommon::end_data_table_header_row());
- foreach my $mapid (@{$tree}) {
- my $depth = $treeinfo->{$mapid}->{'depth'};
- my $indent = (' 'x$depth);
+ $r->print(&Apache::loncommon::start_data_table()
+ .&Apache::loncommon::start_data_table_row()
+ .'
'.$icon
+ .'
'
+ .&Apache::loncommon::end_data_table_row()
+ );
+ my $whitespace = '';
+ if (exists($$allmaps{1})) {
+ $r->print(&Apache::loncommon::start_data_table_row()
+ .'
'.$icon
+ .''
+ .'
'
+ .&Apache::loncommon::end_data_table_row()
+ );
+ }
+ foreach my $id (@{$tree}) {
+ my ($mapid,$resid)=split(/\./,$id);
+ # Indentation
+ my $depth = $treeinfo->{$id}->{'depth'};
+ my $indent;
+ for (my $i = 0; $i < $depth; $i++) {
+ $indent.= $whitespace;
+ }
$icon = '';
- if ($treeinfo->{$mapid}->{'type'} eq 'page') {
+ if ($treeinfo->{$id}->{'type'} eq 'page') {
$icon = '';
}
- $r->print(&Apache::loncommon::start_data_table_header_row().'
'.$indent.$icon.''
+ .'
'
+ .&Apache::loncommon::end_data_table_row()
+ );
}
$r->print(&Apache::loncommon::end_data_table());
}
}
+# Build up the select Box to choose if your parameter specification should work for the resource, map/folder or the course level
+# The value of default selection in the select box is set by the value that is given by the argument in $parmlev.
sub levelmenu {
my ($r,$alllevs,$parmlev)=@_;
$r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parameter Level').&Apache::loncommon::help_open_topic('Course_Parameter_Levels')));
- $r->print('