--- loncom/interface/lonhelper.pm 2003/05/05 18:05:21 1.19
+++ loncom/interface/lonhelper.pm 2003/05/07 18:13:13 1.20
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.19 2003/05/05 18:05:21 bowersj2 Exp $
+# $Id: lonhelper.pm,v 1.20 2003/05/07 18:13:13 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1876,7 +1876,7 @@ BUTTONS
$result .= '
' . $self->{ERROR_MSG} . '
';
}
- $result .= '
' . + (my $status, my $color) = @{fileState($subdir, $file)}; + $result .= ' | |
" . "{'multichoice'} && $choices == 0) { $result .= ' checked'; } - $result .= "/> | " . $file . " | " . $file . + " | $status | \n"; $choices++; } } @@ -1916,6 +1918,37 @@ BUTTONS return $result; } +# Determine the state of the file: Published, unpublished, modified. +# Return the color it should be in and a label as a two-element array +# reference. +# Logic lifted from lonpubdir.pm, even though I don't know that it's still +# the most right thing to do. + +sub fileState { + my $constructionSpaceDir = shift; + my $file = shift; + + my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'}; + my $subdirpart = $constructionSpaceDir; + $subdirpart =~ s/^\/home\/$ENV{'user.name'}\/public_html//; + my $resdir = $docroot . '/res/' . $ENV{'user.domain'} . '/' . $ENV{'user.name'} . + $subdirpart; + + my @constructionSpaceFileStat = stat($constructionSpaceDir . '/' . $file); + my @resourceSpaceFileStat = stat($resdir . '/' . $file); + if (!@resourceSpaceFileStat) { + return ['Unpublished', '#FFCCCC']; + } + + my $constructionSpaceFileModified = $constructionSpaceFileStat[9]; + my $resourceSpaceFileModified = $resourceSpaceFileStat[9]; + + if ($constructionSpaceFileModified > $resourceSpaceFileModified) { + return ['Modified', '#FFFFCC']; + } + return ['Published', '#CCFFCC']; +} + sub postprocess { my $self = shift; my $result = $ENV{'form.' . $self->{'variable'} . '.forminput'};