version 1.43, 2006/08/02 03:05:10
|
version 1.53, 2006/08/18 13:49:34
|
Line 37 use Apache::lonfeedback;
|
Line 37 use Apache::lonfeedback;
|
use Apache::lonrss(); |
use Apache::lonrss(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonmsgdisplay(); |
use Apache::lonmsgdisplay(); |
|
use HTML::Entities(); |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 48 sub handler {
|
Line 49 sub handler {
|
if ($target eq 'tex') { |
if ($target eq 'tex') { |
$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'})); |
$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? |
# Is this even a user? |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') { |
&Apache::loncommon::simple_error_page($r,'No info', |
&Apache::loncommon::simple_error_page($r,'No info', |
Line 62 sub handler {
|
Line 63 sub handler {
|
'ccc_webreferences' => 'Web References'); |
'ccc_webreferences' => 'Web References'); |
|
|
# ------------------------------------------------------------ Get Query String |
# ------------------------------------------------------------ Get Query String |
&Apache::loncommon::get_unprocessed_cgi |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
($ENV{'QUERY_STRING'},['forceedit','forcestudent','register','action']); |
['forceedit','forcestudent', |
|
'register']); |
|
|
# ----------------------------------------------- Available Portfolio file display |
# ----------------------------------------------- Available Portfolio file display |
if (($target ne 'tex') && ($env{'form.action'} eq 'portfolio')) { |
if (($target ne 'tex') && ($action eq 'portfolio')) { |
my %lt = &Apache::lonlocal::texthash ( |
|
withoutpass => 'passphrase not required', |
|
withpass => 'passphrase protected', |
|
both => 'all access types ', |
|
); |
|
&display_portfolio_header($r); |
&display_portfolio_header($r); |
&display_portfolio_files($r,\%lt); |
&display_portfolio_files($r); |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} |
} |
Line 93 sub handler {
|
Line 90 sub handler {
|
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page("Personal Information",undef, |
&Apache::loncommon::start_page("Personal Information",undef, |
{'function' => $forcestudent, |
{'function' => $forcestudent, |
'domain' => $cdom, |
'domain' => $cdom, |
'force_register' => |
'force_register' => |
$forceregister,}); |
$forceregister,}); |
$r->print($start_page); |
$r->print($start_page); |
Line 210 sub handler {
|
Line 207 sub handler {
|
} |
} |
if ($allowed) { |
if ($allowed) { |
$r->print('<br /><textarea cols="80" rows="6" name="'.$_.'">'. |
$r->print('<br /><textarea cols="80" rows="6" name="'.$_.'">'. |
$syllabus{$_}. |
&HTML::Entities::encode($syllabus{$_},'"&<>'). |
'</textarea><input type="submit" name="storesyl" value="'. |
'</textarea><input type="submit" name="storesyl" value="'. |
&mt('Store').'" />'); |
&mt('Store').'" />'); |
} |
} |
Line 219 sub handler {
|
Line 216 sub handler {
|
if ($allowed) { |
if ($allowed) { |
$r->print('</form>'); |
$r->print('</form>'); |
} |
} |
if ($target ne 'tex') {$r->print('</p>');} else {$r->print('\\\\');} |
if ($target ne 'tex') {$r->print('<br />');} else {$r->print('\\\\');} |
} else { |
} else { |
$r->print('<p>'.&mt('No personal information provided').'.</p>'); |
$r->print('<p>'.&mt('No personal information provided').'.</p>'); |
} |
} |
Line 274 sub print_portfiles_link {
|
Line 271 sub print_portfiles_link {
|
my ($r) = @_; |
my ($r) = @_; |
my ($cdom,$cnum,$name) = &aboutme_info($r); |
my ($cdom,$cnum,$name) = &aboutme_info($r); |
my $filecounts = &portfolio_files($r,'showlink'); |
my $filecounts = &portfolio_files($r,'showlink'); |
my $query_string = &build_query_string({'action' => 'portfolio',}); |
my $query_string = &build_query_string(); |
my $output; |
my $output; |
if ($filecounts->{'both'} > 0) { |
if ($filecounts->{'both'} > 0) { |
$output = &mt('<h3>Viewable portfolio files</h3>'); |
$output = &mt('<h3>Viewable portfolio files</h3>'); |
$output .= '<a href="/adm/'.$cdom.'/'.$cnum.'/aboutme'. |
$output .= '<a href="/adm/'.$cdom.'/'.$cnum.'/aboutme/portfolio'. |
$query_string.'">'.&mt('Display file listing'). |
$query_string.'">'.&mt('Display file listing'). |
'</a><br /><br />'; |
'</a><br /><br />'; |
$output .= &mt('A total of [_1] portfolio files owned by [_2] are available for viewing.',$filecounts->{'both'},$name).'<ul>'; |
if ($filecounts->{'both'} == 1) { |
|
$output .= &mt('One portfolio file owned by [_2] is available.',$filecounts->{'both'},$name).'<ul>'; |
|
} else { |
|
$output .= &mt('A total of [quant,_1,portfolio file] owned by [_2] are available.',$filecounts->{'both'},$name).'<ul>'; |
|
} |
if ($filecounts->{'withoutpass'}) { |
if ($filecounts->{'withoutpass'}) { |
$output .= '<li>'.&mt('[_1] files are either publicly accessible, or directly available to you because of your current role, domain and/or username.',$filecounts->{'withoutpass'}).'</li>'; |
if ($filecounts->{'withoutpass'} == 1) { |
|
$output .= '<li>'.&mt('[quant,_1,file] is publicly accessible.',$filecounts->{'withoutpass'}).'</li>'; |
|
} else { |
|
$output .= '<li>'.&mt('[quant,_1,file] are publicly accessible.',$filecounts->{'withoutpass'}).'</li>'; |
|
} |
} |
} |
if ($filecounts->{'withpass'}) { |
if ($filecounts->{'withpass'}) { |
$output .= '<li>'.&mt('[_1] files will be available after you have entered a passphrase set for each specific file.',$filecounts->{'withpass'}).'</li>'; |
if ($filecounts->{'withpass'} == 1) { |
|
$output .= '<li>'.&mt('[quant,_1,file] requires a passphrase for access.',$filecounts->{'withpass'}).'</li>'; |
|
} else { |
|
$output .= '<li>'.&mt('[quant,_1,file] require a passphrase for access.',$filecounts->{'withpass'}).'</li>'; |
|
} |
} |
} |
$output .= '</ul>'; |
$output .= '</ul>'; |
} |
} |
Line 298 sub build_query_string {
|
Line 307 sub build_query_string {
|
my ($new_items) = @_; |
my ($new_items) = @_; |
my $query_string; |
my $query_string; |
my @formelements = ('register'); |
my @formelements = ('register'); |
my $nonew = 1; |
my $new = 0; |
if (ref($new_items) eq 'HASH') { |
if (ref($new_items) eq 'HASH') { |
$nonew = 0; |
$new = 1; |
if (!defined($new_items->{'forceedit'}) && |
if (!defined($new_items->{'forceedit'}) && |
!defined($new_items->{'forcestudent'})) { |
!defined($new_items->{'forcestudent'})) { |
push(@formelements,('forceedit','forcestudent')); |
push(@formelements,('forceedit','forcestudent')); |
Line 310 sub build_query_string {
|
Line 319 sub build_query_string {
|
} |
} |
foreach my $element (@formelements) { |
foreach my $element (@formelements) { |
if (exists($env{'form.'.$element})) { |
if (exists($env{'form.'.$element})) { |
if (($nonew) || (!defined($new_items->{$element}))) { |
if ((!$new) || (!defined($new_items->{$element}))) { |
$query_string .= '&'.$element.'='.$env{'form.'.$element}; |
$query_string .= '&'.$element.'='.$env{'form.'.$element}; |
} |
} |
} |
} |
} |
} |
if (!$nonew) { |
if ($new) { |
foreach my $key (keys(%{$new_items})) { |
foreach my $key (keys(%{$new_items})) { |
$query_string .= '&'.$key.'='.$new_items->{$key}; |
$query_string .= '&'.$key.'='.$new_items->{$key}; |
} |
} |
Line 331 sub display_portfolio_header {
|
Line 340 sub display_portfolio_header {
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
my $forcestudent=''; |
my $forcestudent=''; |
if ($env{'form.forcestudent'}) { $forcestudent='student'; }; |
if ($env{'form.forcestudent'}) { $forcestudent='student'; }; |
my $output = |
my $output = |
&Apache::loncommon::start_page('Viewable portfolio files',undef, |
&Apache::loncommon::start_page('Viewable portfolio files',undef, |
{'function' => $forcestudent, |
{'function' => $forcestudent, |
'domain' => $cdom,}); |
'domain' => $cdom,}); |
&Apache::lonhtmlcommon::add_breadcrumb |
if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) { |
({href=>"/adm/$cdom/$cnum/aboutme".$query_string, |
&Apache::lonhtmlcommon::add_breadcrumb |
text=>"Personal information - $name", |
({href=>"/adm/$cdom/$cnum/aboutme".$query_string, |
title=>"Go to personal information page for $name"}, |
text=>"Personal information - $name", |
{href=>"/adm/$cdom/$cnum/aboutme?action=portfolio", |
title=>"Go to personal information page for $name"}, |
text=>"Viewable files - $name", |
{href=>"/adm/$cdom/$cnum/aboutme/portfolio", |
title=>"Viewable portfolio files for $name"} |
text=>"Viewable files - $name", |
); |
title=>"Viewable portfolio files for $name"} |
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.')); |
); |
|
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.')); |
|
} |
$output .= '<h3>'.&mt('Portfolio files for [_1]',$name).'</h3>'; |
$output .= '<h3>'.&mt('Portfolio files for [_1]',$name).'</h3>'; |
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
|
|
sub display_portfolio_files { |
sub display_portfolio_files { |
my ($r,$lt) = @_; |
my ($r) = @_; |
my ($cdom,$cnum,$name) = aboutme_info($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'; |
my $portaccess = 'withoutpass'; |
if (exists($env{'form.portaccess'})) { |
if (exists($env{'form.portaccess'})) { |
$portaccess = $env{'form.portaccess'}; |
$portaccess = $env{'form.portaccess'}; |
} |
} |
my $output = '<form name="displaystatus" method="post">'. |
|
&mt('File access type: ').'<select name="portaccess">'; |
my $output = '<form action="'.&HTML::Entities::encode($r->uri,'<>&"') |
|
.'" name="displaystatus" method="post">'. |
|
&mt('File access type: ').'<select name="portaccess">'; |
foreach my $type ('withoutpass','withpass','both') { |
foreach my $type ('withoutpass','withpass','both') { |
$output .= '<option value="'.$type.'" '; |
$output .= '<option value="'.$type.'" '; |
if ($portaccess eq $type) { |
if ($portaccess eq $type) { |
$output .= 'selected="selected"'; |
$output .= 'selected="selected"'; |
} |
} |
$output .= '>'.$lt->{$type}.'</option>'; |
$output .= '>'.$lt{$type}.'</option>'; |
} |
} |
$output .= '</select>'."\n". |
$output .= '</select>'."\n". |
'<input type="submit" name="portaccessbutton" value="'. |
'<input type="submit" name="portaccessbutton" value="'. |
&mt('Update display').'">'. |
&mt('Update display').'" />'; |
'<input type="hidden" name="action" value="'. |
|
$env{'form.action'}.'"/>'; |
|
$output .= '</form><br /><br />'; |
$output .= '</form><br /><br />'; |
$r->print($output); |
$r->print($output); |
my $filecounts = &portfolio_files($r,'listfiles',$lt); |
my $filecounts = &portfolio_files($r,'listfiles',\%lt); |
my $query_string = &build_query_string(); |
if (!($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public')) { |
$r->print('<br /><br /><a href="/adm/'.$cdom.'/'.$cnum. |
my $query_string = &build_query_string(); |
'/aboutme'.$query_string.'">'. |
$r->print('<br /><br /><a href="/adm/'.$cdom.'/'.$cnum. |
&mt('Information about [_1]',$name).'</a>'); |
'/aboutme'.$query_string.'">'. |
|
&mt('Information about [_1]',$name).'</a>'); |
|
} |
return; |
return; |
} |
} |
|
|
Line 389 sub portfolio_files {
|
Line 407 sub portfolio_files {
|
both => 0, |
both => 0, |
}; |
}; |
my $current_permissions = |
my $current_permissions = |
&Apache::lonnet::get_portfile_permissions($cdom,$cnum); |
&Apache::lonnet::get_portfile_permissions($cdom,$cnum); |
my %access_controls = |
my %access_controls = |
&Apache::lonnet::get_access_controls($current_permissions); |
&Apache::lonnet::get_access_controls($current_permissions); |
my %allfileshash; |
my %allfileshash; |
my $portaccess; |
my $portaccess; |
if ($mode eq 'showlink') { |
if ($mode eq 'showlink') { |
Line 405 sub portfolio_files {
|
Line 423 sub portfolio_files {
|
|
|
foreach my $filename (keys(%access_controls)) { |
foreach my $filename (keys(%access_controls)) { |
my $access_status = |
my $access_status = |
&Apache::lonnet::get_portfolio_access($access_controls{$filename}); |
&Apache::lonnet::get_portfolio_access($cdom,$cnum,$filename,undef, |
|
$access_controls{$filename}); |
if ($portaccess eq 'both') { |
if ($portaccess eq 'both') { |
if (($access_status ne 'ok') && |
if (($access_status ne 'ok') && |
($access_status !~ /^[^:]+:guest_/)) { |
($access_status !~ /^[^:]+:guest_/)) { |
Line 444 sub portfolio_files {
|
Line 463 sub portfolio_files {
|
if ($mode eq 'listfiles') { |
if ($mode eq 'listfiles') { |
my $output; |
my $output; |
if (keys(%allfileshash) > 0) { |
if (keys(%allfileshash) > 0) { |
my $depth = 0; |
$output = &portfolio_table_start(); |
my $count = 0; |
$output .= &parse_directory($r,0,\%allfileshash,''); |
$output = '<table border="0" cellpadding="2" cellspacing="0">'; |
|
($count,$output) = &parse_directory($r,$output,$depth, |
|
\%allfileshash,$count); |
|
$output .= '</table>'; |
$output .= '</table>'; |
} else { |
} else { |
my $access_text; |
my $access_text; |
Line 462 sub portfolio_files {
|
Line 478 sub portfolio_files {
|
return $filecounts; |
return $filecounts; |
} |
} |
|
|
|
{ |
|
my $count=0; |
|
sub portfolio_table_start { |
|
$count=0; |
|
return '<table class="LC_aboutme_port">'; |
|
} |
|
sub portfolio_row_start { |
|
$count++; |
|
my $class = ($count%2)?'LC_odd_row' |
|
:'LC_even_row'; |
|
return '<tr class="'.$class.'">'; |
|
} |
|
} |
|
|
sub parse_directory { |
sub parse_directory { |
my ($r,$output,$depth,$currhash,$count) = @_; |
my ($r,$depth,$currhash,$path) = @_; |
my ($cdom,$cnum,$name) = &aboutme_info($r); |
my ($cdom,$cnum,$name) = &aboutme_info($r); |
$depth ++; |
$depth++; |
my @backgroundColors = ("#FFFFFF", "#F6F6F6"); |
my $output; |
my $indent = '<img src="'.&Apache::loncommon::lonhttpdurl("/adm/lonIcons/whitespace1.gif").'" width="25" height="1" alt=" " border="0" />'; |
|
$output .= $indent; |
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}))) { |
foreach my $item (sort(keys(%{$currhash}))) { |
$count ++; |
$output .= &portfolio_row_start(); |
my $backgroundcolor = $backgroundColors[$count%2]; |
$output .= '<td style="padding-left: '.($depth*25).'px">'; |
$output .= '<tr bgcolor="'.$backgroundcolor.'">'; |
|
$output .= '<td>'; |
|
for (my $i=0; $i<$depth; $i++) { |
|
$output .= $indent; |
|
} |
|
if (ref($currhash->{$item}) eq 'HASH') { |
if (ref($currhash->{$item}) eq 'HASH') { |
my $title = $item; |
my $title=&HTML::Entities::encode($item,'<>&"'); |
$title=~s/\"/\"/g; |
$output .= '<img src="'.&Apache::loncommon::lonhttpdurl("/adm/lonIcons/navmap.folder.open.gif").'" alt="'.&mt('Folder').' '.$title.'" class="LC_icon" /> '.$title; |
$output .= '<img src="'.&Apache::loncommon::lonhttpdurl("/adm/lonIcons/navmap.folder.open.gif").'" alt="'.&mt('Folder').' '.$title.' border="0" /> '.$title; |
$output .= '</td><td></td></tr>'; |
($count,$output) = &parse_directory($r,$output,$depth, |
$output .= &parse_directory($r,$depth,$currhash->{$item}, |
$currhash->{$item},$count); |
$path.'/'.$item); |
} else { |
} 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; |
my $showname; |
if ($currhash->{$item} =~ m|/([^/]+)$|) { |
if ($have_meta) { |
$showname = $1; |
$showname = &Apache::lonnet::metadata($url,'title'); |
} else { |
} |
$showname = $currhash->{$item}; |
if ($showname eq '') { |
} |
$showname = $file_name; |
$output .= '<img alt="" src="'.&Apache::loncommon::icon($currhash->{$item}).'" /> <a href="/uploaded/'.$cdom.'/'.$cnum.'/portfolio/'.$currhash->{$item}.'">'.$showname.'</a>'; |
} else { |
|
$showname = $file_name.' ('.$showname.')'; |
|
} |
|
|
|
$showname=&HTML::Entities::encode($showname,'<>&"'); |
|
$output .= '<a href="'.$url.'">'. |
|
'<img alt="" src="'.&Apache::loncommon::icon($currhash->{$item}).'" class="LC_icon" />'. |
|
' '.$showname.'</a>'; |
|
$output.='</td><td>'; |
|
if ($have_meta) { |
|
$output.= '<a href="'.$url.'.meta"><img alt="'.&mt('Catalog Information').'" src="'. |
|
&Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.gif'). |
|
'" class="LC_icon" /></a>'; |
|
} |
|
$output .= '</td></tr>'; |
} |
} |
$output .= '</td></tr>'; |
|
} |
} |
return ($count,$output); |
return $output; |
} |
} |
|
|
1; |
1; |