--- loncom/interface/lonaboutme.pm 2008/09/11 02:07:27 1.70
+++ loncom/interface/lonaboutme.pm 2010/11/01 13:35:42 1.70.4.4
@@ -1,7 +1,7 @@
# The LearningOnline Network
# "About Me" Personal Information
#
-# $Id: lonaboutme.pm,v 1.70 2008/09/11 02:07:27 raeburn Exp $
+# $Id: lonaboutme.pm,v 1.70.4.4 2010/11/01 13:35:42 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,6 +26,52 @@
# http://www.lon-capa.org/
#
+=pod
+
+=head1 NAME
+
+Apache::lonaboutme
+
+=head1 SYNOPSIS
+
+(empty)
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 OVERVIEW
+
+(empty)
+
+
+=head1 SUBROUTINES
+
+=over
+
+=item handler()
+
+=item in_course()
+
+=item aboutme_info()
+
+=item print_portfiles_link()
+
+=item build_query_string()
+
+=item display_portfolio_header()
+
+=item display_portfolio_files()
+
+=item portfolio_files()
+
+=item build_hierarchy()
+
+=item parse_directory()
+
+=back
+
+=cut
+
package Apache::lonaboutme;
use strict;
@@ -60,10 +106,34 @@ sub handler {
$is_course = &Apache::lonnet::is_course($cdom,$cnum);
}
+ my $candisplay = 1;
+ if (!$is_course) {
+ if ($action ne 'portfolio') {
+ $candisplay = &Apache::lonnet::usertools_access($cnum,$cdom,'aboutme');
+ if ((!$candisplay) && ($env{'request.course.id'})) {
+ $candisplay = &aboutme_access($cnum,$cdom);
+ }
+ if (!$candisplay) {
+ if ($target eq 'tex') {
+ $r->print('\noindent{\large\textbf{'.&mt('No user home page available').'}}\\\\\\\\');
+ } else {
+ $r->print(&Apache::loncommon::start_page("Personal Information Page"));
+ $r->print('
'.&mt('No personal information page available') .'
'.
+ &mt('This is a result of one of the following:').''.
+ '- '.&mt('The administrator of this domain has disabled personal information page functionality for this specific user.').'
'.
+ '- '.&mt('The domain has been configured to disable, by default, personal information page functionality for all users in the domain.').'
'.
+ '
');
+ $r->print(&Apache::loncommon::end_page());
+ }
+ return OK;
+ }
+ }
+ }
+
# --------------------------------------------------------- The syllabus fields
my %syllabusfields=&Apache::lonlocal::texthash(
'aaa_contactinfo' => 'Contact Information',
- 'bbb_aboutme' => 'About Me',
+ 'bbb_aboutme' => 'Personal Information',
'ccc_webreferences' => 'Web References');
# ------------------------------------------------------------ Get Query String
@@ -74,28 +144,39 @@ sub handler {
# ----------------------------------------------- Available Portfolio file display
if (($target ne 'tex') && ($action eq 'portfolio')) {
&display_portfolio_header($r,$is_course);
- my ($blocked,$blocktext) =
- &Apache::loncommon::blocking_status('port',$cnum,$cdom);
- if (!$blocked) {
- &display_portfolio_files($r,$is_course);
+ if ((!$is_course) && (!&Apache::lonnet::usertools_access($cnum,$cdom,'portfolio'))) {
+ $r->print(''.&mt('No user portfolio available') .'
'.
+ &mt('This is a result of one of the following:').''.
+ '- '.&mt('The administrator of this domain has disabled portfolio functionality for this specific user.').'
'.
+ '- '.&mt('The domain has been configured to disable, by default, portfolio functionality for all users in the domain.').'
'.
+ '
');
} else {
- $r->print($blocktext);
+ my ($blocked,$blocktext) =
+ &Apache::loncommon::blocking_status('port',$cnum,$cdom);
+ if (!$blocked) {
+ &display_portfolio_files($r,$is_course);
+ } else {
+ $r->print($blocktext);
+ }
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
}
- $r->print(&Apache::loncommon::end_page());
- return OK;
}
if ($is_course) {
if ($target ne 'tex') {
+ my $brcrum = [{href=>"/adm/navmaps",text=>"Navigate Course Contents"},
+ {href=>"/adm/aboutme",text=>"Course Information"}];
my $start_page =
&Apache::loncommon::start_page(
"Course Information",
undef,
{'function' => $env{'forcestudent'},
'domain' => $cdom,
- 'force_register' => $env{'forceregister'},});
+ 'force_register' => $env{'forceregister'},
+ 'bread_crumbs' => $brcrum});
$r->print($start_page);
- $r->print(''.&mt('Group files').'
');
+ $r->print(''.&mt('Group Portfolio').'
');
&print_portfiles_link($r,$is_course);
$r->print(&Apache::loncommon::end_page());
}
@@ -120,9 +201,11 @@ sub handler {
'force_register' => $forceregister};
if ($env{'form.popup'}) {
$args->{'no_nav_bar'} = 1;
+ } else {
+ $args->{'bread_crumbs'} = [{href=>"/adm/$cdom/$cnum/aboutme",text=>"Personal Information Page"}];
}
my $start_page =
- &Apache::loncommon::start_page("Personal Information",$rss_link,$args);
+ &Apache::loncommon::start_page("Personal Information Page",$rss_link,$args);
$r->print($start_page);
$r->print(''.&Apache::loncommon::plainname($cnum,$cdom).'
');
} else {
@@ -150,7 +233,7 @@ sub handler {
if ($allowed) {
my $query_string = &build_query_string({'forcestudent' => '1','popup' => $env{'form.popup'}});
- $r->print(''.&mt('Privacy Note').': '.
+ $r->print('
'.&mt('Privacy Note:').' '.
&mt('The information you submit can be viewed by anybody who is logged into LON-CAPA. Do not provide information that you are not ready to share publicly.').
'
'.
&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')).''.&mt('Show Public View').''.
@@ -266,10 +349,10 @@ sub handler {
if ($target ne 'tex') {
$r->print('');
$r->print('
'.
- &mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'
'.
+ &mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').''.
&mt('Shared by course faculty and staff').
&Apache::loncommon::help_open_topic("Course_Face_To_Face_Records,Course_Critical_Message").
- '
');
+ '
');
&Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);
$r->print('
');
if (&Apache::lonnet::allowed('vsa',
@@ -281,13 +364,20 @@ sub handler {
('View recent activity by this student',
$cnum,$cdom).(' 'x2));
}
- $r->print(&Apache::loncommon::noteswrapper('Add Records',$cnum,$cdom));
+ $r->print(&Apache::loncommon::noteswrapper(&mt('Add Records'),$cnum,$cdom));
} else {
$r->print('\\\\\textbf{'.&mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'}\\\\'.&mt('Shared by course faculty and staff').'\\\\\\\\');
&Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);
}
}
if ($target ne 'tex') {
+ if ($env{'request.course.id'}) {
+ if (&Apache::lonnet::allowed('vgr', $env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('vgr', $env{'request.course.id'}.'/'.
+ $env{'request.course.sec'})) {
+ $r->print('
'.&Apache::loncommon::slot_reservations_link('Slot reservation history',$cnum,$cdom));
+ }
+ }
if ($env{'form.popup'}) {
$r->print(''.&mt('Close window').'');
}
@@ -306,21 +396,19 @@ sub in_course {
$cdom = $env{'course.'.$cid.'.domain'};
$cnum = $env{'course.'.$cid.'.num'};
}
- my %roles = &Apache::lonnet::dump('roles',$udom,$uname);
- my @course_roles = grep(m{^/\Q$cdom\E/\Q$cnum\E[/_]}, keys(%roles));
- return 0 if (!@course_roles);
- return 1 if ($type eq 'any');
- my $now = time();
- foreach my $role (@course_roles) {
- my (undef,$role_end,$role_start)=split(/\_/,$roles{$role});
- my $status = 'active';
- if ($role_start > 0 && $now < $role_start) {
- $status = 'future';
- }
- if ($role_end > 0 && $now > $role_end) {
- $status = 'previous';
- }
- return 1 if ($status eq $type);
+ my $typesref;
+ if ($type eq 'all') {
+ $typesref = ['active','previous','future'];
+ } elsif ($type eq 'previous' || $type eq 'future') {
+ $typesref = [$type];
+ }
+ my %roles = &Apache::lonnet::get_my_roles($uname,$udom,'userroles',
+ $typesref,undef,[$cdom]);
+ my ($tmp) = keys(%roles);
+ return 0 if ($tmp =~ /^(con_lost|error|no_such_host)/i);
+ my @course_roles = grep(/^\Q$cnum\E:\Q$cdom\E:/, keys(%roles));
+ if (@course_roles > 0) {
+ return 1;
}
return 0;
}
@@ -343,10 +431,10 @@ sub print_portfiles_link {
my $query_string = &build_query_string();
my $output;
my %lt = &Apache::lonlocal::texthash(
- vpfi => 'Viewable portfolio files',
- vgpf => 'Viewable group portfolio files',
- difl => 'Display file listing',
- );
+ vpfi => 'Viewable portfolio files',
+ vgpf => 'Viewable group portfolio files',
+ difl => 'Display file listing',
+ );
if ($filecounts->{'both'} > 0) {
$output = '
'.($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'
';
$output .= '"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"}
+ ({href => "/adm/$cdom/$cnum/aboutme".$query_string,
+ text => &mt('Personal information Page - [_1]',$name),
+ title => &mt('Go to personal information page for [_1]',$name)}, {href=>"/adm/$cdom/$cnum/aboutme/portfolio",
+ text => &mt('Viewable files - [_1]',$name),
+ title => &mt('Viewable portfolio files for [_1]',$name)}
);
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Viewable portfolio files.'));
}
@@ -446,10 +534,11 @@ sub display_portfolio_header {
sub display_portfolio_files {
my ($r,$is_course) = @_;
my ($cdom,$cnum,$name) = &aboutme_info($r,$is_course);
- my %lt = ( withoutpass => 'passphrase not required',
- withpass => 'passphrase protected',
- both => 'all access types ',);
- %lt = &Apache::lonlocal::texthash(%lt);
+ my %lt = &Apache::lonlocal::texthash(
+ withoutpass => 'passphrase not required',
+ withpass => 'passphrase protected',
+ both => 'all access types ',
+ );
my $portaccess = 'withoutpass';
if (exists($env{'form.portaccess'})) {
@@ -665,7 +754,7 @@ sub parse_directory {
' '.$showname.'';
$output.='';
if ($have_meta) {
- $output.= '';
}
@@ -675,5 +764,29 @@ sub parse_directory {
return $output;
}
+sub aboutme_access {
+ my ($uname,$udom) = @_;
+ my $privcheck = $env{'request.course.id'};
+ my $sec;
+ if ($env{'request.course.sec'} ne '') {
+ $sec = $env{'request.course.sec'};
+ $privcheck .= '/'.$sec;
+ }
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ if (($cdom eq '') || ($cnum eq '')) {
+ my %coursehash = &Apache::lonnet::coursedescription($env{'request.course.id'});
+ $cdom = $coursehash{'domain'};
+ $cnum = $coursehash{'cnum'};
+ }
+ if ((&Apache::lonnet::allowed('srm',$privcheck)) ||
+ (&Apache::lonnet::allowed('dff',$privcheck))) {
+ if (&in_course($uname,$udom,$cnum,$cdom)) {
+ return 1;
+ }
+ }
+ return;
+}
+
1;
__END__
|