'.''.
+ &mt('Return to DOCS').'');
}
# -------------------------------------------------------------- Check Versions
@@ -576,8 +602,6 @@ sub checkversions {
my $r=shift;
$r->print('Check Versions'.
&Apache::loncommon::bodytag('Check Course Document Versions'));
- $hashtied=0;
- &tiehash();
my $header='';
my $startsel='';
my $monthsel='';
@@ -586,9 +610,57 @@ sub checkversions {
my $allsel='';
my %changes=();
my $starttime=0;
+ my $haschanged=0;
+ my %setversions=&Apache::lonnet::dump('resourceversions',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+
+ $hashtied=0;
+ &tiehash();
+ my %newsetversions=();
+ if ($ENV{'form.setmostrecent'}) {
+ $haschanged=1;
+ foreach (keys %hash) {
+ if ($_=~/^ids\_(\/res\/.+)$/) {
+ $newsetversions{$1}='mostrecent';
+ }
+ }
+ } elsif ($ENV{'form.setcurrent'}) {
+ $haschanged=1;
+ foreach (keys %hash) {
+ if ($_=~/^ids\_(\/res\/.+)$/) {
+ my $getvers=&Apache::lonnet::getversion($1);
+ if ($getvers>0) {
+ $newsetversions{$1}=$getvers;
+ }
+ }
+ }
+ } elsif ($ENV{'form.setversions'}) {
+ $haschanged=1;
+ foreach (keys %ENV) {
+ if ($_=~/^form\.set_version_(.+)$/) {
+ my $src=$1;
+ &Apache::lonnet::logthis('Found: '.$1.' '.$ENV{$_});
+ if (($ENV{$_}) && ($ENV{$_} ne $setversions{$src})) {
+ $newsetversions{$src}=$ENV{$_};
+ }
+ }
+ }
+ }
+ if ($haschanged) {
+ if (&Apache::lonnet::put('resourceversions',\%newsetversions,
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'}) eq 'ok') {
+ $r->print('
'.&mt('Your Version Settings have been Stored').'
');
+ } else {
+ $r->print('
'.&mt('An Error Occured while Attempting to Store your Version Settings').'
');
+ }
+ &changewarning($r,'');
+ }
if ($ENV{'form.timerange'} eq 'all') {
# show all documents
$header=&mt('All Documents in Course');
+ $allsel=1;
foreach (keys %hash) {
if ($_=~/^ids\_(\/res\/.+)$/) {
my $src=$1;
@@ -628,21 +700,30 @@ sub checkversions {
$header=&mt('No content modifications yet.');
}
}
+ %setversions=&Apache::lonnet::dump('resourceversions',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
my %lt=&Apache::lonlocal::texthash
('st' => 'Version changes since start of Course',
'lm' => 'Version changes since last Month',
'lw' => 'Version changes since last Week',
'sy' => 'Version changes since Yesterday',
- 'al' => 'All Resources',
+ 'al' => 'All Resources (possibly large output)',
'sd' => 'Display',
'fi' => 'File',
'md' => 'Modification Date',
'mr' => 'Most recently published Version',
've' => 'Version used in Course',
- 'vu' => 'Set Version to be used in Course',
+ 'vu' => 'Set Version to be used in Course',
+'sv' => 'Set Versions to be used in Course according to Selections below',
+'sm' => 'Keep all Resources up-to-date with most recent Versions (default)',
+'sc' => 'Set all Resource Versions to current Version (Fix Versions)',
'di' => 'Differences');
$r->print(<
+
+
+
-
-
+
$header
-
-
-
$lt{'fi'}
$lt{'md'}
$lt{'mr'}
-
$lt{'ve'}
$lt{'vu'}
$lt{'di'}
+
+
ENDHEADERS
- foreach (keys %changes) {
+ foreach (sort keys %changes) {
if ($changes{$_}>$starttime) {
my ($root,$extension)=($_=~/^(.*)\.(\w+)$/);
my $currentversion=&Apache::lonnet::getversion($_);
+ if ($currentversion<0) {
+ $currentversion=&mt('Could not be determined.');
+ }
my $linkurl=&Apache::lonnet::clutter($_);
$r->print(
- '
In Course: '.
+ '');
# Used in course
my $usedversion=$hash{'version_'.$linkurl};
- if ($usedversion) {
+ if (($usedversion) && ($usedversion ne 'mostrecent')) {
$r->print($usedversion);
} else {
$r->print($currentversion);
}
- $r->print('
');
my $lastold=1;
for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) {
my $url=$root.'.'.$prevvers.'.'.$extension;
@@ -692,29 +788,68 @@ ENDHEADERS
$lastold=$prevvers;
}
}
+ #
+ # Code to figure out how many version entries should go in
+ # each of the four columns
+ my $entries_per_col = 0;
+ my $num_entries = ($currentversion-$lastold);
+ if ($num_entries % 4 == 0) {
+ $entries_per_col = $num_entries/4;
+ } else {
+ $entries_per_col = $num_entries/4 + 1;
+ }
+ my $entries_count = 0;
+ $r->print('