--- loncom/interface/lonaboutme.pm 2002/08/27 20:29:54 1.2
+++ loncom/interface/lonaboutme.pm 2008/12/09 22:16:23 1.80
@@ -1,7 +1,7 @@
# The LearningOnline Network
# "About Me" Personal Information
#
-# $Id: lonaboutme.pm,v 1.2 2002/08/27 20:29:54 www Exp $
+# $Id: lonaboutme.pm,v 1.80 2008/12/09 22:16:23 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,6 +26,53 @@
# http://www.lon-capa.org/
#
+=pod
+
+=head1 NAME
+
+pache::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;
@@ -33,111 +80,705 @@ use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonnet;
use Apache::lontexconvert;
+use Apache::lonfeedback;
+use Apache::lonrss();
+use Apache::lonlocal;
+use Apache::lonmsgdisplay();
+use Apache::lontemplate;
+use HTML::Entities();
sub handler {
my $r = shift;
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
return OK if $r->header_only;
-
+ my $target=$env{'form.grade_target'};
# ------------------------------------------------------------ Print the screen
- $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.').
+ ''.&mt('No user home page available') .'
'.
+ &mt('This is a result of one of the following:').''.
+ '
');
+ $r->print(&Apache::loncommon::end_page());
+ }
+ return OK;
+ }
+ }
+ }
+
# --------------------------------------------------------- The syllabus fields
- my %syllabusfields=(
- 'aaa_instructorinfo' => 'Instructor Information',
- 'bbb_description' => 'Course Description',
- 'ccc_prereq' => 'Prerequisites',
- 'ddd_officehours' => 'Office Hours',
- 'eee_helproom' => 'Helproom Hours',
- 'fff_examinfo' => 'Exam Information',
- 'ggg_grading' => 'Grading Information',
- 'hhh_readings' => 'Readings');
+ my %syllabusfields=&Apache::lonlocal::texthash(
+ 'aaa_contactinfo' => 'Contact Information',
+ 'bbb_aboutme' => 'About Me',
+ 'ccc_webreferences' => 'Web References');
+
+# ------------------------------------------------------------ Get Query String
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['forceedit','forcestudent',
+ 'register','popup']);
+
+# ----------------------------------------------- Available Portfolio file display
+ if (($target ne 'tex') && ($action eq 'portfolio')) {
+ &display_portfolio_header($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:').''.
+ '
');
+ } else {
+ 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;
+ }
+
+ if ($is_course) {
+ if ($target ne 'tex') {
+ my $start_page =
+ &Apache::loncommon::start_page(
+ "Course Information",
+ undef,
+ {'function' => $env{'forcestudent'},
+ 'domain' => $cdom,
+ 'force_register' => $env{'forceregister'},});
+ $r->print($start_page);
+ $r->print(''.&mt('Group files').'
');
+ &print_portfiles_link($r,$is_course);
+ $r->print(&Apache::loncommon::end_page());
+ }
+ return OK;
+ }
# --------------------------------------------------------------- Force Student
- &Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['forcestudent']);
my $forcestudent='';
- if ($ENV{'form.forcestudent'}) { $forcestudent='student'; };
+ if ($env{'form.forcestudent'}) { $forcestudent='student'; };
+
+ my $forceregister = '';
+ if ($forcestudent eq '') {
+ $forceregister = $env{'form.register'};
+ }
# --------------------------------------- There is such a user, get environment
my %courseenv=&Apache::lonnet::dump('environment',$cdom,$cnum);
- $r->print(&Apache::loncommon::bodytag
- ("Personal Information",$forcestudent,'','',$cdom));
- $r->print(''.&Apache::loncommon::plainname($cnum,$cdom).'
'.
- $Apache::lonnet::domaindescription{$cdom}.'
');
+ if ($target ne 'tex') {
+ my $rss_link = &Apache::lonrss::rss_link($cnum,$cdom);
+ my $args = {'function' => $forcestudent,
+ 'domain' => $cdom,
+ 'force_register' => $forceregister};
+ if ($env{'form.popup'}) {
+ $args->{'no_nav_bar'} = 1;
+ }
+ my $start_page =
+ &Apache::loncommon::start_page("Personal Information",$rss_link,$args);
+ $r->print($start_page);
+ $r->print(''.&Apache::loncommon::plainname($cnum,$cdom).'
');
+ } else {
+ $r->print('\noindent{\large\textbf{'.&Apache::loncommon::plainname($cnum,$cdom).'}}\\\\\\\\');
+ }
+ if ($courseenv{'nickname'}) {
+ $r->print(
+ '"'.$courseenv{'nickname'}.
+ '"
');
+ }
+ if ($target ne 'tex') {
+ $r->print(''.&Apache::lonnet::domain($cdom,'description').'
');#OLD SendMessage POS
+ } else {
+ $r->print('\textbf{'.&Apache::lonnet::domain($cdom,'description').'}\\\\');
+ }
my %syllabus=&Apache::lonnet::dump('aboutme',$cdom,$cnum);
my $allowed=0;
# does this user have privileges to post, etc?
- $allowed=(($ENV{'user.name'} eq $cnum) &&
- ($ENV{'user.domain'} eq $cdom));
- if ($forcestudent) { $allowed=0; }
+ my $privleged=$allowed=(($env{'user.name'} eq $cnum) &&
+ ($env{'user.domain'} eq $cdom));
+ if ($forcestudent or $target eq 'tex') { $allowed=0; }
if ($allowed) {
- $r->print(
- '');
- }
- if (($allowed) && ($ENV{'form.storesyl'})) {
- foreach (keys %syllabusfields) {
- my $field=$ENV{'form.'.$_};
+ my $query_string = &build_query_string({'forcestudent' => '1','popup' => $env{'form.popup'}});
+ $r->print('
'.&mt('Show Public View').''. + &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'
'); + } elsif ($privleged && $target ne 'tex') { + my $query_string = &build_query_string({'forceedit' => '1','popup' => $env{'form.popup'}}); + $r->print(''); + } + if (($env{'form.uploaddoc.filename'}) && + ($env{'form.storeupl'}) && ($allowed)) { + if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) { + if ($syllabus{'uploaded.photourl'}) { + &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'}); + } + $syllabus{'uploaded.photourl'}= + &Apache::lonnet::userphotoupload('uploaddoc','aboutme'); + } + $syllabus{'uploaded.lastmodified'}=time; + &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum); + } + if ($allowed && $env{'form.delupl'}) { + if ($syllabus{'uploaded.photourl'}) { + &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'}); + delete($syllabus{'uploaded.photourl'}); + &Apache::lonnet::del('aboutme',['uploaded.photourl'],$cdom,$cnum); + } + } + if (($allowed) && ($env{'form.storesyl'})) { + foreach my $syl_field (keys(%syllabusfields)) { + my $field=$env{'form.'.$syl_field}; $field=~s/\s+$//s; - $field=~s/\\<\;/g; - $field=~s/\>/\>\;/g; - if ($field) { - $syllabus{$_}=$field; - } else { - delete $syllabus{$_}; - } + $field=&Apache::lonfeedback::clear_out_html($field, + $env{'user.adv'}); + $syllabus{$syl_field}=$field; } $syllabus{'uploaded.lastmodified'}=time; &Apache::lonnet::put('aboutme',\%syllabus,$cdom,$cnum); } +my $lastmod; +my $image; # ---------------------------------------------------------------- Get syllabus if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) { - $r->print('Last updated:'. - localtime($syllabus{'uploaded.lastmodified'})); + $lastmod=$syllabus{'uploaded.lastmodified'}; + $lastmod=($lastmod?&Apache::lonlocal::locallocaltime($lastmod):&mt('never')); + # $r->print(&mt('Last updated').': '.$lastmod); #Old Last Modifi Pos + if ($syllabus{'uploaded.photourl'}) { + &Apache::lonnet::allowuploaded('/adm/aboutme', + $syllabus{'uploaded.photourl'}); + $image=qq{}; + + if ($target eq 'tex') { + $image=&Apache::lonxml::xmlparse($r,'tex',$image); + } + # $r->print($image); #Print old Image + } if ($allowed) { - $r->print(''. + ''); } - $r->print(''); + if ($target ne 'tex') {$r->print(''.&mt('No personal information provided').'.
'); + } + + if ($target ne 'tex') { + # &print_portfiles_link($r,$is_course); #old Print files + + } + + 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('Close window').'');
+ }
+ $r->print('
'.&mt('Last updated').': '.$lastmod);
+ &Apache::lontemplate::end_columnSection($r);
+ $r->print(&Apache::loncommon::end_page());
} else {
- $r->print('
No syllabus information provided.
'); + $r->print('\end{document}'); } - $r->print('