Diff for /loncom/publisher/lonpubdir.pm between versions 1.153 and 1.160.2.1

version 1.153, 2014/05/20 19:53:59 version 1.160.2.1, 2016/08/07 20:23:42
Line 40  use Apache::lonlocal; Line 40  use Apache::lonlocal;
 use Apache::lonmsg;  use Apache::lonmsg;
 use Apache::lonmenu;  use Apache::lonmenu;
 use Apache::lonnet;  use Apache::lonnet;
 use LONCAPA;  use LONCAPA qw(:DEFAULT :match);
   
 sub handler {  sub handler {
   
Line 60  sub handler { Line 60  sub handler {
     my $thisdisfn=$fn;      my $thisdisfn=$fn;
   
     my $docroot=$r->dir_config('lonDocRoot');     # Apache  londocument root.      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').
                         '<div class="LC_error">'.
                         '<br /><p>'.
                         &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).'</p>'.
                         '<p>'.
                         &mt('Please ask your Domain Coordinator to move your Authoring Space to the new location.').
                         '</p>'.
                         '</div>'.
                         &Apache::loncommon::end_page());
               return OK;
           }
       }
     $thisdisfn=~s/^\Q$docroot\E\/priv//;      $thisdisfn=~s/^\Q$docroot\E\/priv//;
           
     my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory      my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory
Line 69  sub handler { Line 88  sub handler {
     my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);      my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);
   
     &startpage($r, $uname, $udom, $thisdisfn);  # Put out the start of page.      &startpage($r, $uname, $udom, $thisdisfn);  # Put out the start of page.
   
       if (!-d $fn) {
           if (-e $fn) {
               $r->print('<p class="LC_info">'.&mt('Requested item is a file not a directory.').'</p>');
           } else {
               $r->print('<p class="LC_info">'.&mt('The requested subdirectory does not exist.').'</p>');
           }
           $r->print(&Apache::loncommon::end_page());
           return OK;
       }
       my @files;
       if (opendir(DIR,$fn)) {
           @files = grep(!/^\.+$/,readdir(DIR));
           closedir(DIR);
       } else {
           $r->print('<p class="LC_error">'.&mt('Could not open directory.').'</p>');
           $r->print(&Apache::loncommon::end_page());
           return OK;
       }
   
     &dircontrols($r,$uname,$udom,$thisdisfn);   # Put out actions for directory,       &dircontrols($r,$uname,$udom,$thisdisfn);   # Put out actions for directory, 
                                                 # browse/upload + new file page.                                                  # browse/upload + new file page.
     &resourceactions($r,$uname,$udom,$thisdisfn); # Put out form used for printing/deletion etc.      &resourceactions($r,$uname,$udom,$thisdisfn); # Put out form used for printing/deletion etc.
Line 76  sub handler { Line 115  sub handler {
     my $numdir = 0;      my $numdir = 0;
     my $numres = 0;      my $numres = 0;
       
       if ((@files == 0) && ($thisdisfn =~ m{^/$match_domain/$match_username})) {
           if ($thisdisfn =~ m{^/$match_domain/$match_username$}) {
               $r->print('<p class="LC_info">'.&mt('This Authoring Space is currently empty.').'</p>');
           } else {
               $r->print('<p class="LC_info">'.&mt('This subdirectory is currently empty.').'</p>');
           }
           $r->print(&Apache::loncommon::end_page());
           return OK;
       }
   
     # Retrieving value for "sortby" and "sortorder" from QUERY_STRING      # Retrieving value for "sortby" and "sortorder" from QUERY_STRING
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['sortby','sortorder']);          ['sortby','sortorder']);
Line 83  sub handler { Line 132  sub handler {
     # Sort by name as default, not reversed      # Sort by name as default, not reversed
     if (! exists($env{'form.sortby'})) { $env{'form.sortby'} = 'filename' }      if (! exists($env{'form.sortby'})) { $env{'form.sortby'} = 'filename' }
     if (! exists($env{'form.sortorder'})) { $env{'form.sortorder'} = '' }      if (! exists($env{'form.sortorder'})) { $env{'form.sortorder'} = '' }
   
     my $sortby = $env{'form.sortby'};      my $sortby = $env{'form.sortby'};
     my $sortorder = $env{'form.sortorder'};      my $sortorder = $env{'form.sortorder'};
   
     # Start off the directory table.      # Order in which columns are displayed from left to right
       my @order = ('filetype','actions','filename','title',
                       'pubstatus','cmtime','size');
   
       # Up and down arrows to indicate sort order
       my @arrows = ('&nbsp;&#9650;','&nbsp;&#9660;','');
   
       # Default sort order and column title
       my %columns = (
           filetype =>     {
                               order => 'ascending',
                               text  => &mt('Type'),
                           },
           actions =>      {
                               # Not sortable
                               text  => &mt('Actions'),
                           },
           filename =>     {
                               order => 'ascending',
                               text  => &mt('Name'),
                           },
           title =>        {
                               order => 'ascending',
                               text  => &mt('Title'),
                           },
           pubstatus =>    {
                               order => 'ascending',
                               text  => &mt('Status'),
                               colspan => '2',
                           },
           cmtime =>       {
                               order => 'descending',
                               text  => &mt('Last Modified'),
                           },
           size =>         {
                               order => 'ascending',
                               text  => &mt('Size').' (kB)',
                           },
       ); 
   
       # Print column headers
       my $output = '';
       foreach my $key (@order) {
           my $idx;
           # Append an up or down arrow to sorted column
           if ($sortby eq $key) {
               $idx = ($columns{$key}{order} eq 'ascending') ? 0:1;
               if ($sortorder eq 'rev') { $idx ++; }
               $idx = $idx%2;
           } else { $idx = 2; } # No arrow if column is not sorted
           $output .= (($columns{$key}{order}) ?
               '<th'.($columns{$key}{colspan} ? ' colspan="'.$columns{$key}{colspan}.'"' : '')
               .'><a href="'.$linkdir.'/?sortby='.$key.'&sortorder='
               .((($sortby eq $key) && ($sortorder ne 'rev')) ? 'rev' : '').'">'
               .$columns{$key}{text}.$arrows[$idx].'</a></th>' :
               '<th>'.$columns{$key}{text}.'</th>');
       }
     $r->print(&Apache::loncommon::start_data_table()      $r->print(&Apache::loncommon::start_data_table()
         .&Apache::loncommon::start_data_table_header_row()          .&Apache::loncommon::start_data_table_header_row() . $output
         .'<th><a href="'.$linkdir.'/?sortby=filetype&sortorder='  
             .((($sortby eq "filetype") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Type')  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .'<th>'.&mt('Actions').'</th>'  
         .'<th><a href="'.$linkdir.'/?sortby=filename&sortorder='  
             .((($sortby eq "filename") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Name')  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .'<th><a href="'.$linkdir.'/?sortby=title&sortorder='  
             .((($sortby eq "title") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Title')  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .'<th colspan="2"><a href="'.$linkdir.'/?sortby=pubstatus&sortorder='  
             .((($sortby eq "pubstatus") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Status')  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .'<th><a href="'.$linkdir.'/?sortby=cmtime&sortorder='  
             .((($sortby eq "cmtime") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Last Modified')  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .'<th><a href="'.$linkdir.'/?sortby=size&sortorder='  
             .((($sortby eq "size") && ($sortorder ne 'rev')) ? 'rev' : '')   
             .'">'.&mt('Size').' (kB)'  
             .'<span class="LC_fontsize_small"> &#9660;</span></a></th>'  
         .&Apache::loncommon::end_data_table_header_row()          .&Apache::loncommon::end_data_table_header_row()
     );      );
   
     my $dirptr=16384; # Mask indicating a directory in stat.cmode.      my $dirptr=16384; # Mask indicating a directory in stat.cmode.
   
     opendir(DIR,$fn);  
     my $filehash = {};      my $filehash = {};
     my @files= readdir(DIR);  
     foreach my $filename (@files) {      foreach my $filename (@files) {
         # Skip .DS_Store and hidden files          # Skip .DS_Store, .DAV and hidden files
         my ($extension) = ($filename=~/\.(\w+)$/);          my ($extension) = ($filename=~/\.(\w+)$/);
         next if (($filename eq '.DS_Store')           next if (($filename eq '.DS_Store')
                 || &Apache::loncommon::fileembstyle($extension) eq 'hdn');                  || ($filename eq '.DAV')
                   || (&Apache::loncommon::fileembstyle($extension) eq 'hdn')
                   || ($filename =~ /^\._/));
   
         my ($cmode,$csize,$cmtime)=(stat($fn.'/'.$filename))[2,7,9];          my ($cmode,$csize,$cmtime)=(stat($fn.'/'.$filename))[2,7,9];
         my $linkfilename = &HTML::Entities::encode('/priv'.$thisdisfn.'/'.$filename,'<>&"');          my $linkfilename = &HTML::Entities::encode('/priv'.$thisdisfn.'/'.$filename,'<>&"');
Line 221  sub handler { Line 299  sub handler {
         }          }
     }      }
   
     closedir(DIR);  
   
     $r->print( &Apache::loncommon::end_data_table()      $r->print( &Apache::loncommon::end_data_table()
         .&Apache::loncommon::end_page() );          .&Apache::loncommon::end_page() );
   
     return OK;        return OK;
 }  }
   
   
Line 268  sub startpage { Line 344  sub startpage {
   
     $r->print(&Apache::loncommon::head_subbox(      $r->print(&Apache::loncommon::head_subbox(
                      '<div style="float:right;padding-top:0;margin-top;0">'                       '<div style="float:right;padding-top:0;margin-top;0">'
                     .&Apache::lonhtmlcommon::display_usage($current_disk_usage,$disk_quota)                      .&Apache::lonhtmlcommon::display_usage($current_disk_usage,
                                                              $disk_quota,'authoring')
                     .'</div>'                      .'</div>'
                     .&Apache::loncommon::CSTR_pageheader()));                      .&Apache::loncommon::CSTR_pageheader()));
   
Line 627  sub putdirectory { Line 704  sub putdirectory {
           '<td></td>'.            '<td></td>'.
   "</tr>\n");    "</tr>\n");
     }      }
     return OK;      return;
 }  }
   
 sub getTitle {  sub getTitle {
Line 776  sub putresource { Line 853  sub putresource {
       '<td>'.sprintf("%.1f",$size).'</td>'.        '<td>'.sprintf("%.1f",$size).'</td>'.
       &Apache::loncommon::end_data_table_row()        &Apache::loncommon::end_data_table_row()
     );      );
     return OK;      return;
 }  }
   
 sub create_pubselect {  sub create_pubselect {
Line 829  sub check_for_versions { Line 906  sub check_for_versions {
             $versions ++;                      $versions ++;        
         }          }
     }      }
       closedir(DIR);
     return $versions;      return $versions;
 }  }
   

Removed from v.1.153  
changed lines
  Added in v.1.160.2.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>