--- loncom/interface/lonaboutme.pm 2006/08/02 20:18:10 1.45
+++ loncom/interface/lonaboutme.pm 2006/09/13 21:37:29 1.54
@@ -1,7 +1,7 @@
# The LearningOnline Network
# "About Me" Personal Information
#
-# $Id: lonaboutme.pm,v 1.45 2006/08/02 20:18:10 albertel Exp $
+# $Id: lonaboutme.pm,v 1.54 2006/09/13 21:37:29 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,6 +37,7 @@ use Apache::lonfeedback;
use Apache::lonrss();
use Apache::lonlocal;
use Apache::lonmsgdisplay();
+use HTML::Entities();
sub handler {
my $r = shift;
@@ -48,7 +49,7 @@ sub handler {
if ($target eq 'tex') {
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
}
- my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
+ my (undef,undef,$cdom,$cnum,undef,$action)=split(/\//,$r->uri);
# Is this even a user?
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') {
&Apache::loncommon::simple_error_page($r,'No info',
@@ -62,18 +63,14 @@ sub handler {
'ccc_webreferences' => 'Web References');
# ------------------------------------------------------------ Get Query String
- &Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['forceedit','forcestudent','register','action']);
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['forceedit','forcestudent',
+ 'register']);
# ----------------------------------------------- Available Portfolio file display
- if (($target ne 'tex') && ($env{'form.action'} eq 'portfolio')) {
- my %lt = &Apache::lonlocal::texthash (
- withoutpass => 'passphrase not required',
- withpass => 'passphrase protected',
- both => 'all access types ',
- );
+ if (($target ne 'tex') && ($action eq 'portfolio')) {
&display_portfolio_header($r);
- &display_portfolio_files($r,\%lt);
+ &display_portfolio_files($r);
$r->print(&Apache::loncommon::end_page());
return OK;
}
@@ -93,7 +90,7 @@ sub handler {
my $start_page =
&Apache::loncommon::start_page("Personal Information",undef,
{'function' => $forcestudent,
- 'domain' => $cdom,
+ 'domain' => $cdom,
'force_register' =>
$forceregister,});
$r->print($start_page);
@@ -210,7 +207,7 @@ sub handler {
}
if ($allowed) {
$r->print('
');
}
@@ -219,7 +216,7 @@ sub handler {
if ($allowed) {
$r->print('');
}
- if ($target ne 'tex') {$r->print('
');} else {$r->print('\\\\');}
+ if ($target ne 'tex') {$r->print('
');} else {$r->print('\\\\');}
} else {
$r->print(''.&mt('No personal information provided').'.
');
}
@@ -274,19 +271,23 @@ sub print_portfiles_link {
my ($r) = @_;
my ($cdom,$cnum,$name) = &aboutme_info($r);
my $filecounts = &portfolio_files($r,'showlink');
- my $query_string = &build_query_string({'action' => 'portfolio',});
+ my $query_string = &build_query_string();
my $output;
if ($filecounts->{'both'} > 0) {
$output = &mt('Viewable portfolio files
');
- $output .= ''.&mt('Display file listing').
'
';
- $output .= &mt('A total of [quant,_1,portfolio file] owned by [_2] are available.',$filecounts->{'both'},$name).'';
+ if ($filecounts->{'both'} == 1) {
+ $output .= &mt('One portfolio file owned by [_2] is available.',$filecounts->{'both'},$name).'';
+ } else {
+ $output .= &mt('A total of [_1] portfolio files owned by [_2] are available.',$filecounts->{'both'},$name).'';
+ }
if ($filecounts->{'withoutpass'}) {
- $output .= '- '.&mt('[quant,_1,file] are publicly accessible.',$filecounts->{'withoutpass'}).'
';
+ $output .= '- '.&mt('[quant,_1,file is,files are] publicly accessible.',$filecounts->{'withoutpass'}).'
';
}
if ($filecounts->{'withpass'}) {
- $output .= '- '.&mt('[quant,_1,file] require a passphrase for access.',$filecounts->{'withpass'}).'
';
+ $output .= '- '.&mt('[quant,_1,file requires,files require] a passphrase for access.',$filecounts->{'withpass'}).'
';
}
$output .= '
';
}
@@ -298,9 +299,9 @@ sub build_query_string {
my ($new_items) = @_;
my $query_string;
my @formelements = ('register');
- my $nonew = 1;
+ my $new = 0;
if (ref($new_items) eq 'HASH') {
- $nonew = 0;
+ $new = 1;
if (!defined($new_items->{'forceedit'}) &&
!defined($new_items->{'forcestudent'})) {
push(@formelements,('forceedit','forcestudent'));
@@ -310,12 +311,12 @@ sub build_query_string {
}
foreach my $element (@formelements) {
if (exists($env{'form.'.$element})) {
- if (($nonew) || (!defined($new_items->{$element}))) {
+ if ((!$new) || (!defined($new_items->{$element}))) {
$query_string .= '&'.$element.'='.$env{'form.'.$element};
}
}
}
- if (!$nonew) {
+ if ($new) {
foreach my $key (keys(%{$new_items})) {
$query_string .= '&'.$key.'='.$new_items->{$key};
}
@@ -331,31 +332,39 @@ sub display_portfolio_header {
&Apache::lonhtmlcommon::clear_breadcrumbs();
my $forcestudent='';
if ($env{'form.forcestudent'}) { $forcestudent='student'; };
- my $output =
+ my $output =
&Apache::loncommon::start_page('Viewable portfolio files',undef,
{'function' => $forcestudent,
'domain' => $cdom,});
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/$cdom/$cnum/aboutme".$query_string,
- text=>"Personal information - $name",
- title=>"Go to personal information page for $name"},
- {href=>"/adm/$cdom/$cnum/aboutme?action=portfolio",
- text=>"Viewable files - $name",
- title=>"Viewable portfolio files for $name"}
-);
- $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.'));
+ if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/$cdom/$cnum/aboutme".$query_string,
+ text=>"Personal information - $name",
+ title=>"Go to personal information page for $name"},
+ {href=>"/adm/$cdom/$cnum/aboutme/portfolio",
+ text=>"Viewable files - $name",
+ title=>"Viewable portfolio files for $name"}
+ );
+ $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.'));
+ }
$output .= ''.&mt('Portfolio files for [_1]',$name).'
';
$r->print($output);
return;
}
sub display_portfolio_files {
- my ($r,$lt) = @_;
+ my ($r) = @_;
my ($cdom,$cnum,$name) = &aboutme_info($r);
+ my %lt = ( withoutpass => 'passphrase not required',
+ withpass => 'passphrase protected',
+ both => 'all access types ',);
+ %lt = &Apache::lonlocal::texthash(%lt);
+
my $portaccess = 'withoutpass';
if (exists($env{'form.portaccess'})) {
$portaccess = $env{'form.portaccess'};
}
+
my $output = '
';
$r->print($output);
- my $filecounts = &portfolio_files($r,'listfiles',$lt);
- my $query_string = &build_query_string();
- $r->print('
'.
- &mt('Information about [_1]',$name).'');
+ my $filecounts = &portfolio_files($r,'listfiles',\%lt);
+ if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) {
+ my $query_string = &build_query_string();
+ $r->print('
'.
+ &mt('Information about [_1]',$name).'');
+ }
return;
}
@@ -447,7 +456,7 @@ sub portfolio_files {
my $output;
if (keys(%allfileshash) > 0) {
$output = &portfolio_table_start();
- $output .= &parse_directory($r,0,\%allfileshash);
+ $output .= &parse_directory($r,0,\%allfileshash,'');
$output .= '';
} else {
my $access_text;
@@ -476,27 +485,57 @@ sub portfolio_files {
}
sub parse_directory {
- my ($r,$depth,$currhash) = @_;
+ my ($r,$depth,$currhash,$path) = @_;
my ($cdom,$cnum,$name) = &aboutme_info($r);
$depth++;
my $output;
+
+ my $portfolio_root = &Apache::portfolio::get_portfolio_root($cdom,$cnum);
+ my %dirlist = map {
+ ((split('&',$_,2))[0],1)
+ } &Apache::lonnet::dirlist($path,$cdom,$cnum,$portfolio_root);
foreach my $item (sort(keys(%{$currhash}))) {
$output .= &portfolio_row_start();
$output .= '';
if (ref($currhash->{$item}) eq 'HASH') {
my $title=&HTML::Entities::encode($item,'<>&"');
$output .= ' '.$title;
- $output .= ' | ';
- $output .= &parse_directory($r,$depth,$currhash->{$item});
+ $output .= ' | ';
+ $output .= &parse_directory($r,$depth,$currhash->{$item},
+ $path.'/'.$item);
} else {
+
+
+ my $file_name;
+ if ($currhash->{$item} =~ m|/([^/]+)$|) {
+ $file_name = $1;
+ } else {
+ $file_name = $currhash->{$item};
+ }
+ my $have_meta = exists($dirlist{$file_name.'.meta'});
+ my $url = '/uploaded/'.$cdom.'/'.$cnum.'/portfolio/'.
+ $currhash->{$item};
+
my $showname;
- if ($currhash->{$item} =~ m|/([^/]+)$|) {
- $showname = $1;
- } else {
- $showname = $currhash->{$item};
- }
+ if ($have_meta) {
+ $showname = &Apache::lonnet::metadata($url,'title');
+ }
+ if ($showname eq '') {
+ $showname = $file_name;
+ } else {
+ $showname = $file_name.' ('.$showname.')';
+ }
+
$showname=&HTML::Entities::encode($showname,'<>&"');
- $output .= '
'.$showname.'';
+ $output .= ''.
+ '
'.
+ ' '.$showname.'';
+ $output.='';
+ if ($have_meta) {
+ $output.= ' ';
+ }
$output .= ' | ';
}
}