--- loncom/publisher/lonpubdir.pm 2014/05/31 13:55:17 1.154 +++ loncom/publisher/lonpubdir.pm 2014/06/29 03:33:23 1.158 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Authoring Space Directory Lister # -# $Id: lonpubdir.pm,v 1.154 2014/05/31 13:55:17 raeburn Exp $ +# $Id: lonpubdir.pm,v 1.158 2014/06/29 03:33:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -60,6 +60,25 @@ sub handler { my $thisdisfn=$fn; my $docroot=$r->dir_config('lonDocRoot'); # Apache londocument root. + if ($thisdisfn eq "$docroot/priv/$udom") { + if ((-d "/home/$uname/public_html/") && (!-e "$docroot/priv/$udom/$uname")) { + my ($version) = ($r->dir_config('lonVersion') =~ /^\'?(\d+\.\d+)\./); + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + + &Apache::lonhtmlcommon::clear_breadcrumbs(); + $r->print(&Apache::loncommon::start_page('Authoring Space'). + '
'. + '

'. + &mt('Your Authoring Space is currently in the location used by LON-CAPA version 2.10 and older, but your domain is using a newer LON-CAPA version ([_1]).',$version).'

'. + '

'. + &mt('Please ask your Domain Coordinator to move your Authoring Space to the new location.'). + '

'. + '
'. + &Apache::loncommon::end_page()); + return OK; + } + } $thisdisfn=~s/^\Q$docroot\E\/priv//; my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory @@ -69,6 +88,26 @@ sub handler { my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom); &startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page. + + if (!-d $fn) { + if (-e $fn) { + $r->print('

'.&mt('Requested item is a file not a directory.').'

'); + } else { + $r->print('

'.&mt('The requested subdirectory does not exist.').'

'); + } + $r->print(&Apache::loncommon::end_page()); + return OK; + } + my @files; + if (opendir(DIR,$fn)) { + @files = grep(!/^\.+$/,readdir(DIR)); + closedir(DIR); + } else { + $r->print('

'.&mt('Could not open directory.').'

'); + $r->print(&Apache::loncommon::end_page()); + return OK; + } + &dircontrols($r,$uname,$udom,$thisdisfn); # Put out actions for directory, # browse/upload + new file page. &resourceactions($r,$uname,$udom,$thisdisfn); # Put out form used for printing/deletion etc. @@ -87,12 +126,12 @@ sub handler { my $sortby = $env{'form.sortby'}; my $sortorder = $env{'form.sortorder'}; - opendir(DIR,$fn); - my @files = readdir(DIR); - closedir(DIR); - if ((@files == 0) && ($thisdisfn =~ m{^/$match_domain/$match_username})) { - $r->print('

'.&mt('This Authoring Space is currently empty.').'

'); + if ($thisdisfn =~ m{^/$match_domain/$match_username$}) { + $r->print('

'.&mt('This Authoring Space is currently empty.').'

'); + } else { + $r->print('

'.&mt('This subdirectory is currently empty.').'

'); + } $r->print(&Apache::loncommon::end_page()); return OK; } @@ -133,8 +172,9 @@ sub handler { foreach my $filename (@files) { # Skip .DS_Store and hidden files my ($extension) = ($filename=~/\.(\w+)$/); - next if (($filename eq '.DS_Store') - || &Apache::loncommon::fileembstyle($extension) eq 'hdn'); + next if (($filename eq '.DS_Store') + || (&Apache::loncommon::fileembstyle($extension) eq 'hdn') + || ($filename =~ /^\._/)); my ($cmode,$csize,$cmtime)=(stat($fn.'/'.$filename))[2,7,9]; my $linkfilename = &HTML::Entities::encode('/priv'.$thisdisfn.'/'.$filename,'<>&"');