');
+ $r->print($image);
+
+ $r->print('Kontakt');
+ $r->print(&Apache::loncommon::messagewrapper(&mt('Send me a message'),$cnum,$cdom).''.&Apache::lonrss::advertisefeeds($cnum,$cdom));
+
+
+ }
+
if ($allowed) {
+ if ($env{'form.popup'}) {
+ $r->print('
');
+ }
$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').'.
');
}
if ($target ne 'tex') {
- &print_portfiles_link($r);
+ # &print_portfiles_link($r,$is_course); #old Print files
+
}
- if ($env{'request.course.id'}) {
- if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) {
- if ($target ne 'tex') {
- $r->print('
');
- $r->print('
'.
- &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',
- $env{'request.course.id'}) ||
- &Apache::lonnet::allowed('vsa',
- $env{'request.course.id'}.'/'.
- $env{'request.course.sec'})) {
- $r->print(&Apache::loncommon::track_student_link
- ('View recent activity by this student',
- $cnum,$cdom).(' 'x2));
- }
- $r->print(&Apache::loncommon::noteswrapper('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 ($env{'request.course.id'}
+ && &Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ && &in_course($cdom,$cnum)) {
+ if ($target ne 'tex') {
+ $r->print('
');
+ $r->print('
'.
+ &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',
+ $env{'request.course.id'}) ||
+ &Apache::lonnet::allowed('vsa',
+ $env{'request.course.id'}.'/'.
+ $env{'request.course.sec'})) {
+ $r->print(&Apache::loncommon::track_student_link
+ ('View recent activity by this student',
+ $cnum,$cdom).(' 'x2));
}
- }
+ $r->print(&Apache::loncommon::noteswrapper('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{'form.popup'}) {
+ $r->print('
'.&mt('Close window').' ');
+ }
+ $r->print(' '.&mt('Last updated').': '.$lastmod);
+
$r->print(&Apache::loncommon::end_page());
} else {
$r->print('\end{document}');
}
+
+
+
return OK;
}
+sub in_course {
+ my ($udom,$uname,$cdom,$cnum,$type) = @_;
+ $type ||= 'any';
+ if (!defined($cdom) || !defined($cnum)) {
+ my $cid = $env{'request.course.id'};
+ $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);
+ }
+ return 0;
+}
+
sub aboutme_info {
- my ($r) = @_;
+ my ($r,$is_course) = @_;
my (undef,undef,$cdom,$cnum)=split(/\//,$r->uri);
- my $name = &Apache::loncommon::plainname($cnum,$cdom);
+ my $name;
+ if (!$is_course) {
+ $name = &Apache::loncommon::plainname($cnum,$cdom);
+ }
return ($cdom,$cnum,$name);
}
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 ($r,$is_course) = @_;
+ my ($cdom,$cnum,$name) = &aboutme_info($r,$is_course);
+ my $filecounts = &portfolio_files($r,'showlink',undef,$is_course,
+ $cdom,$cnum,$name);
+ 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',
+ );
if ($filecounts->{'both'} > 0) {
- $output = &mt('
Viewable portfolio files ');
- $output .= '
'.&mt('Display file listing').
+ $output = ' ';
+ $output .= ($is_course?$lt{'vgpf'}:$lt{'vpfi'}).' ';
+
+ #$output = ''.($is_course?$lt{'vgpf'}:$lt{'vpfi'}).' ';
+ $output .= ''.$lt{'difl'}.
' ';
- $output .= &mt('A total of [_1] portfolio files owned by [_2] are available for viewing.',$filecounts->{'both'},$name).'';
+ if ($filecounts->{'both'} == 1) {
+ if ($is_course) {
+ $output .= &mt('One group portfolio file is available.').'';
+ } else {
+ $output .= &mt('One portfolio file owned by [_1] is available.',$name).'';
+ }
+ } else {
+ if ($is_course) {
+ $output .= &mt('A total of [_1] group portfolio files are available.',$filecounts->{'both'}).'';
+ } else {
+ $output .= &mt('A total of [_1] portfolio files owned by [_2] are available.',$filecounts->{'both'},$name).'';
+ }
+ }
if ($filecounts->{'withoutpass'}) {
- $output .= ''.&mt('[_1] files are either publicly accessible, or directly available to you because of your current role, domain and/or username.',$filecounts->{'withoutpass'}).' ';
+ $output .= ''.&mt('[quant,_1,file is,files are] publicly accessible.',$filecounts->{'withoutpass'}).' ';
}
if ($filecounts->{'withpass'}) {
- $output .= ''.&mt('[_1] files will be available after you have entered a passphrase set for each specific file.',$filecounts->{'withpass'}).' ';
+ $output .= ''.&mt('[quant,_1,file requires,files require] a passphrase for access.',$filecounts->{'withpass'}).' ';
}
$output .= ' ';
+ $output .=' ';
}
$r->print($output);
return;
@@ -298,9 +411,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 +423,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};
}
@@ -325,64 +438,87 @@ sub build_query_string {
}
sub display_portfolio_header {
- my ($r) = @_;
- my ($cdom,$cnum,$name) = &aboutme_info($r);
+ my ($r,$is_course) = @_;
+ my ($cdom,$cnum,$name) = &aboutme_info($r,$is_course);
my $query_string = &build_query_string();
&Apache::lonhtmlcommon::clear_breadcrumbs();
my $forcestudent='';
if ($env{'form.forcestudent'}) { $forcestudent='student'; };
- my $output =
- &Apache::loncommon::start_page('Viewable portfolio files',undef,
- {'function' => $forcestudent,
+
+ my $output;
+ if ($is_course) {
+ $output =
+ &Apache::loncommon::start_page('Viewable group 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.'));
- $output .= '
'.&mt('Portfolio files for [_1]',$name).' ';
+ $output .= '
'.&mt('Group Portfolio files').' ';
+ } else {
+ $output =
+ &Apache::loncommon::start_page('Viewable portfolio files',undef,
+ {'function' => $forcestudent,
+ 'domain' => $cdom,});
+ 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 ($cdom,$cnum,$name) = aboutme_info($r);
+ 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 $portaccess = 'withoutpass';
if (exists($env{'form.portaccess'})) {
$portaccess = $env{'form.portaccess'};
}
- my $output = '