--- loncom/interface/lonparmset.pm 2009/07/14 13:53:03 1.467
+++ loncom/interface/lonparmset.pm 2009/08/29 03:06:09 1.469
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.467 2009/07/14 13:53:03 amueller Exp $
+# $Id: lonparmset.pm,v 1.469 2009/08/29 03:06:09 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1244,6 +1244,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;
@@ -1330,7 +1334,6 @@ sub parmmenu {
function checkboxChecked(id) {
var li = "_li";
var id_li = id.concat(li);
-
if (document.getElementById(id_li).style.display == "none") {
document.getElementById(id_li).style.display = "";
}
@@ -1532,6 +1535,9 @@ sub parmboxes {
#&shortCuts($r,$allparms,$pscat,$keyorder);
$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)=@_;
@@ -1696,6 +1702,9 @@ 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')));
@@ -1711,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={};
@@ -1719,34 +1729,45 @@ 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 = '';
@@ -1762,27 +1783,48 @@ sub mapmenu {
my $whitespace = '';
- foreach my $mapid (@{$tree}) {
+ 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->{$mapid}->{'depth'};
+ 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 = '';
}
+ my $symb_name = $$symbp{$id};
+ my ($front, $tail) = split (/___${resid}___/, $symb_name);
+ $symb_name = $tail;
$r->print(&Apache::loncommon::start_data_table_row()
.'
'.$indent.$icon
.''
.'
'
@@ -1970,6 +2012,7 @@ sub assessparms {
} else {
$udom=$r->dir_config('lonDefDomain');
}
+
my @pscat=&Apache::loncommon::get_env_multiple('form.pscat');
my $pschp=$env{'form.pschp'};
@@ -2151,7 +2194,7 @@ ENDPARMSELSCRIPT
$r->print('
');
}
- # Display parameter selection boxes
+ # Display Unit 1 "General Parameters"
if (!$pssymb) {
$r->print(&Apache::lonhtmlcommon::topic_bar (1,&mt('General Parameters')));
$r->print(&Apache::lonhtmlcommon::start_pick_box());
@@ -2160,12 +2203,12 @@ ENDPARMSELSCRIPT
if ($parmlev ne 'general') {
$r->print(&Apache::lonhtmlcommon::row_closure());
- &mapmenu($r,\%allmaps,$pschp,\%maptitles);
+ &mapmenu($r,\%allmaps,$pschp,\%maptitles, \%symbp);
}
$r->print(&Apache::lonhtmlcommon::row_closure(1));
$r->print(&Apache::lonhtmlcommon::end_pick_box());
-
+ #Display Unit 2 "Select Parameter"
&displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder);
} else {
my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb);
@@ -4175,7 +4218,7 @@ sub components {
}
my %standard_parms;
-
+my %standard_parms_types;
sub load_parameter_names {
open(my $config,"<$Apache::lonnet::perlvar{'lonTabDir'}/packages.tab");
@@ -4186,7 +4229,9 @@ sub load_parameter_names {
my (undef,$name,$type)=split(/\&/,$short,3);
if ($type eq 'display') {
$standard_parms{$name} = $plain;
- }
+ } elsif ($type eq 'type') {
+ $standard_parms_types{$name} = $plain;
+ }
}
close($config);
$standard_parms{'int_pos'} = 'Positive Integer';
@@ -4206,7 +4251,16 @@ sub standard_parameter_names {
}
}
-
+sub standard_parameter_types {
+ my ($name)=@_;
+ if (!%standard_parms_types) {
+ &load_parameter_names();
+ }
+ if ($standard_parms_types{$name}) {
+ return $standard_parms_types{$name};
+ }
+ return;
+}
sub parm_change_log {
my ($r)=@_;
@@ -4316,11 +4370,22 @@ sub parm_change_log {
} else {
my ($level,@all)=&parmval_by_symb($what,$middle,&Apache::lonnet::metadata($middle,$what),
$uname,$udom,$issection,$issection,$courseopt);
- if (&isdateparm($istype{$parmname})) {
- $output .= &Apache::lonlocal::locallocaltime($value);
- } else {
- $output .= $value;
- }
+ my $showvalue = $value;
+ if ($istype{$parmname} eq '') {
+ my $type = &standard_parameter_types($parmname);
+ if ($type ne '') {
+ if (&isdateparm($type)) {
+ $showvalue =
+ &Apache::lonlocal::locallocaltime($value);
+ }
+ }
+ } else {
+ if (&isdateparm($istype{$parmname})) {
+ $showvalue =
+ &Apache::lonlocal::locallocaltime($value);
+ }
+ }
+ $output .= $showvalue;
if ($value ne $all[$level]) {
$output .= ' '.&mt('Not active anymore').'';
} else {