--- loncom/publisher/lonpubdir.pm 2014/07/31 19:25:39 1.159 +++ loncom/publisher/lonpubdir.pm 2014/08/05 19:32:23 1.160 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Authoring Space Directory Lister # -# $Id: lonpubdir.pm,v 1.159 2014/07/31 19:25:39 musolffc Exp $ +# $Id: lonpubdir.pm,v 1.160 2014/08/05 19:32:23 musolffc Exp $ # # Copyright Michigan State University Board of Trustees # @@ -115,6 +115,16 @@ sub handler { my $numdir = 0; my $numres = 0; + if ((@files == 0) && ($thisdisfn =~ m{^/$match_domain/$match_username})) { + 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; + } + # Retrieving value for "sortby" and "sortorder" from QUERY_STRING &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['sortby','sortorder']); @@ -122,48 +132,68 @@ sub handler { # Sort by name as default, not reversed if (! exists($env{'form.sortby'})) { $env{'form.sortby'} = 'filename' } if (! exists($env{'form.sortorder'})) { $env{'form.sortorder'} = '' } - my $sortby = $env{'form.sortby'}; my $sortorder = $env{'form.sortorder'}; - if ((@files == 0) && ($thisdisfn =~ m{^/$match_domain/$match_username})) { - 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; + # 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 = (' ▲',' ▼',''); + + # 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}) ? + '' + .$columns{$key}{text}.$arrows[$idx].'' : + ''.$columns{$key}{text}.''); } - - # Start off the directory table. $r->print(&Apache::loncommon::start_data_table() - .&Apache::loncommon::start_data_table_header_row() - .''.&mt('Type') - .'' - .''.&mt('Actions').'' - .''.&mt('Name') - .'' - .''.&mt('Title') - .'' - .''.&mt('Status') - .'' - .''.&mt('Last Modified') - .'' - .''.&mt('Size').' (kB)' - .'' + .&Apache::loncommon::start_data_table_header_row() . $output .&Apache::loncommon::end_data_table_header_row() );