--- loncom/interface/londocs.pm 2013/03/11 22:16:11 1.534
+++ loncom/interface/londocs.pm 2013/03/17 14:27:34 1.537
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.534 2013/03/11 22:16:11 raeburn Exp $
+# $Id: londocs.pm,v 1.537 2013/03/17 14:27:34 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1889,23 +1889,93 @@ my %parameter_type = ( 'randompick'
my $valid_parameters_re = join('|',keys(%parameter_type));
# set parameters
sub update_parameter {
-
- return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/);
-
- my $which = $env{'form.changeparms'};
- my $idx = $env{'form.setparms'};
- if ($env{'form.'.$which.'_'.$idx}) {
- my $value = ($which eq 'randompick') ? $env{'form.'.$which.'_'.$idx}
- : 'yes';
- &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value,
- $parameter_type{$which});
- &remember_parms($idx,$which,'set',$value);
+ if ($env{'form.changeparms'} eq 'all') {
+ my (@allidx,@allmapidx,%allchecked,%currchecked);
+ %allchecked = (
+ 'hiddenresource' => {},
+ 'encrypturl' => {},
+ 'randompick' => {},
+ 'randomorder' => {},
+ );
+ foreach my $which (keys(%allchecked)) {
+ $env{'form.all'.$which} =~ s/,$//;
+ if ($which eq 'randompick') {
+ foreach my $item (split(/,/,$env{'form.all'.$which})) {
+ my ($res,$value) = split(/:/,$item);
+ if ($value =~ /^\d+$/) {
+ $allchecked{$which}{$res} = $value;
+ }
+ }
+ } else {
+ map { $allchecked{$which}{$_} = 1; } split(/,/,$env{'form.all'.$which});
+ }
+ }
+ my $haschanges = 0;
+ foreach my $res (@LONCAPA::map::order) {
+ my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
+ $name=&LONCAPA::map::qtescape($name);
+ $url=&LONCAPA::map::qtescape($url);
+ next unless ($name && $url);
+ my $is_map;
+ if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
+ $is_map = 1;
+ }
+ foreach my $which (keys(%allchecked)) {
+ if (($which eq 'randompick' || $which eq 'randomorder')) {
+ next if (!$is_map);
+ }
+ my $oldvalue = 0;
+ my $newvalue = 0;
+ if ($allchecked{$which}{$res}) {
+ $newvalue = $allchecked{$which}{$res};
+ }
+ my $current = (&LONCAPA::map::getparameter($res,'parameter_'.$which))[0];
+ if ($which eq 'randompick') {
+ if ($current =~ /^(\d+)$/) {
+ $oldvalue = $1;
+ }
+ } else {
+ if ($current =~ /^yes$/i) {
+ $oldvalue = 1;
+ }
+ }
+ if ($oldvalue ne $newvalue) {
+ $haschanges = 1;
+ if ($newvalue) {
+ my $storeval = 'yes';
+ if ($which eq 'randompick') {
+ $storeval = $newvalue;
+ }
+ &LONCAPA::map::storeparameter($res,'parameter_'.$which,
+ $storeval,
+ $parameter_type{$which});
+ &remember_parms($res,$which,'set',$storeval);
+ } elsif ($oldvalue) {
+ &LONCAPA::map::delparameter($res,'parameter_'.$which);
+ &remember_parms($res,$which,'del');
+ }
+ }
+ }
+ }
+ return $haschanges;
} else {
- &LONCAPA::map::delparameter($idx,'parameter_'.$which);
+ return 0 if ($env{'form.changeparms'} !~ /^($valid_parameters_re)$/);
- &remember_parms($idx,$which,'del');
+ my $which = $env{'form.changeparms'};
+ my $idx = $env{'form.setparms'};
+ if ($env{'form.'.$which.'_'.$idx}) {
+ my $value = ($which eq 'randompick') ? $env{'form.rpicknum_'.$idx}
+ : 'yes';
+ &LONCAPA::map::storeparameter($idx, 'parameter_'.$which, $value,
+ $parameter_type{$which});
+ &remember_parms($idx,$which,'set',$value);
+ } else {
+ &LONCAPA::map::delparameter($idx,'parameter_'.$which);
+
+ &remember_parms($idx,$which,'del');
+ }
+ return 1;
}
- return 1;
}
@@ -2167,7 +2237,7 @@ sub editor {
$r->print('');
}
- my ($to_show,$output);
+ my ($to_show,$output,@allidx,@allmapidx);
&Apache::loncommon::start_data_table_count(); #setup a row counter
foreach my $res (@LONCAPA::map::order) {
@@ -2176,6 +2246,10 @@ sub editor {
$url=&LONCAPA::map::qtescape($url);
unless ($name) { $name=(split(/\//,$url))[-1]; }
unless ($name) { $idx++; next; }
+ push(@allidx,$res);
+ if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
+ push(@allmapidx,$res);
+ }
$output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
$coursenum,$coursedom,$crstype,
$pathitem,$supplementalflag,$container);
@@ -2206,8 +2280,48 @@ sub editor {
if ($folder !~ /^supplemental/) {
$to_show .= '
'.&mt('Settings').' | ';
}
- $to_show .= &Apache::loncommon::end_data_table_header_row()
- .$output.' '
+ $to_show .= &Apache::loncommon::end_data_table_header_row();
+ if ($folder !~ /^supplemental/) {
+ my $idxlist = join(',',@allidx);
+ my $mapidxlist = join(',',@allmapidx);
+ if (@allidx > 0) {
+ my $path;
+ if ($env{'form.folderpath'}) {
+ $path =
+ &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
+ }
+ $to_show .=
+ &Apache::loncommon::continue_data_table_row().
+ ' | '.
+ ''.
+ ''.
+ ''.
+
+ ' | '.
+ &Apache::loncommon::end_data_table_row();
+ }
+ }
+ $to_show .= $output.' '
.&Apache::loncommon::end_data_table()
.'
'
.&Apache::loncommon::end_scrollbox();
@@ -2432,12 +2546,7 @@ sub entryline {
my $line=&Apache::loncommon::start_data_table_row();
my ($form_start,$form_end,$form_common);
# Edit commands
- my ($type, $esc_path, $path, $symb);
- if ($container eq 'page') {
- $type = 'page';
- } else {
- $type = 'folder';
- }
+ my ($esc_path, $path, $symb);
if ($env{'form.folderpath'}) {
$esc_path=&escape($env{'form.folderpath'});
$path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
@@ -2605,8 +2714,8 @@ ENDREN
';
+'