--- loncom/interface/lonparmset.pm 2009/06/18 19:43:14 1.462
+++ loncom/interface/lonparmset.pm 2011/03/11 02:39:53 1.511
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.462 2009/06/18 19:43:14 neumanie Exp $
+# $Id: lonparmset.pm,v 1.511 2011/03/11 02:39:53 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -248,37 +248,6 @@ Variables used (guessed by Jeremy):
=item parse_key()
-=item check_cloners() :
-
-Checks if new users included in list of allowed cloners
-are valid users. Replaces supplied list with
-cleaned list containing only users with valid usernames
-and domains.
-
-Inputs: $clonelist, $oldcloner
-where $clonelist is ref to array of requested cloners,
-and $oldcloner is ref to array of currently allowed
-cloners.
-
-Returns: string - comma separated list of requested
-cloners (username:domain) who do not exist in system.
-
-=item change_clone() :
-
-Modifies the list of courses a user can clone (stored
-in the user's environment.db file), called when a
-change is made to the list of users allowed to clone
-a course.
-
-Inputs: $action,$cloner
-where $action is add or drop, and $cloner is identity of
-user for whom cloning ability is to be changed in course.
-
-
-=item check_cloners()
-
-=item change_clone()
-
=item header()
Output html header for page
@@ -333,9 +302,31 @@ use Apache::lonlocal;
use Apache::lonnavmaps;
use Apache::longroup;
use Apache::lonrss;
+use HTML::Entities;
use LONCAPA qw(:DEFAULT :match);
+sub startSettingsScreen {
+ my ($r,$mode)=@_;
+
+ $r->print("\n".'
'
- );
+ } else {
+ if (!defined($$catList{'misc'})){
+ push @list, ($name);
+ $$catList{'misc'} = \@list;
+ } else {
+ push @{${$catList}{'misc'}}, ($name);
+ }
+ }
+}
- &shortCuts($r,$allparms,$pscat,$keyorder);
+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
+ );
- $r->print(&Apache::lonhtmlcommon::row_closure(1));
}
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('');
+ $r->print("\n");
}
+#
+# 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)=@_;
- #part to print out the shortcuts for parmselection
- $r->print('
'
- .'
'
- .''
- .'
'
- .'
'
- .''
- .'
'
- .'
');
+ # Parameter Selection
+ $r->print(
+ &Apache::lonhtmlcommon::start_funclist(&mt('Parameter Selection'))
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Select All').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Select Common Only').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Unselect All').'')
+ .&Apache::lonhtmlcommon::end_funclist()
+ );
+
+ # Add Selection for...
+ $r->print(
+ &Apache::lonhtmlcommon::start_funclist(&mt('Add Selection for...'))
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Problem Dates').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Content Dates').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Discussion Settings').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Visibilities').'')
+ .&Apache::lonhtmlcommon::add_item_funclist(
+ ''.&mt('Part Parameters').'')
+ .&Apache::lonhtmlcommon::end_funclist()
+ );
}
sub partmenu {
@@ -1463,15 +1530,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 +1564,9 @@ sub usermenu {
$sections .= qq| onchange="group_or_section('csec')" |;
}
$sections .= '>';
- foreach my $section ('',sort keys %sectionhash) {
- $sections.='';
}
$sections.='';
@@ -1573,90 +1640,188 @@ 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')));
+ my ($r,$allparms,$pscat,$psprt,$keyorder)=@_;
+
$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::lonhtmlcommon::end_pick_box());
+ $r->print(&Apache::loncommon::start_scrollbox());
&parmboxes($r,$allparms,$pscat,$keyorder);
- $r->print(&Apache::lonhtmlcommon::start_pick_box());
- $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Parts to View')));
- &partmenu($r,$allparts,$psprt);
+ $r->print(&Apache::loncommon::end_scrollbox());
+
$r->print(&Apache::lonhtmlcommon::row_closure(1));
$r->print(&Apache::lonhtmlcommon::end_pick_box());
+
}
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={};
if (defined($navmap)) {
- my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef);
+ my $it=$navmap->getIterator(undef,undef,undef,1,1,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,
};
}
}
}
}
}
-
- $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder')));
+# Show it ...
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Select Enclosing Map or Folder'),'','',' id="mapmenu"'));
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);
+ my $whitespace =
+ '';
+
+ # Info about selectable folders/maps
+ $r->print(
+ '
'
+ .&mt('You can only select maps and folders which have modifiable settings.')
+ .' '.&Apache::loncommon::help_open_topic('Parameter_Set_Folder')
+ .'
'
+ .&Apache::loncommon::end_data_table_row()
+ );
+ }
+
+ # Display rows for all course maps and folders
+ 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());
+ $r->print(&Apache::loncommon::end_scrollbox());
}
}
+# 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('