[LON-CAPA-cvs] cvs: loncom(version_2_9_X) /interface lonaboutme.pm

raeburn raeburn@source.lon-capa.org
Mon, 18 May 2009 21:51:26 -0000


This is a MIME encoded message

--raeburn1242683486
Content-Type: text/plain

raeburn		Mon May 18 21:51:26 2009 EDT

  Modified files:              (Branch: version_2_9_X)
    /loncom/interface	lonaboutme.pm 
  Log:
  - Backport: 1.74, 1.77, 1.80, 1.84, 1.85, 1.90, 1.92, 1.104, 1.110, 1.111, 1.113, 1.114, 1.115 (part), 1.116, 1.117, 1.130, 1.131, 1.132.
  
  
--raeburn1242683486
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090518215126.txt"

Index: loncom/interface/lonaboutme.pm
diff -u loncom/interface/lonaboutme.pm:1.70 loncom/interface/lonaboutme.pm:1.70.4.1
--- loncom/interface/lonaboutme.pm:1.70	Thu Sep 11 02:07:27 2008
+++ loncom/interface/lonaboutme.pm	Mon May 18 21:51:26 2009
@@ -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.1 2009/05/18 21:51:26 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 @@
         $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('<h2>'.&mt('No personal information page available') .'</h2>'.
+                              &mt('This is a result of one of the following:').'<ul>'.
+                              '<li>'.&mt('The administrator of this domain has disabled personal information page functionality for this specific user.').'</li>'.
+                              '<li>'.&mt('The domain has been configured to disable, by default, personal information page functionality for all users in the domain.').'</li>'.
+                              '</ul>');
+                    $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 @@
 # ----------------------------------------------- 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('<h2>'.&mt('No user portfolio available') .'</h2>'.
+                      &mt('This is a result of one of the following:').'<ul>'.
+                      '<li>'.&mt('The administrator of this domain has disabled portfolio functionality for this specific user.').'</li>'.
+                      '<li>'.&mt('The domain has been configured to disable, by default, portfolio functionality for all users in the domain.').'</li>'.
+                      '</ul>');
         } 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('<h2>'.&mt('Group files').'</h2>');
+            $r->print('<h2>'.&mt('Group Portfolio').'</h2>');
             &print_portfiles_link($r,$is_course);
             $r->print(&Apache::loncommon::end_page());
         }
@@ -120,9 +201,11 @@
                     '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('<h1>'.&Apache::loncommon::plainname($cnum,$cdom).'</h1>');
     } else {
@@ -150,7 +233,7 @@
  
        if ($allowed) {
            my $query_string = &build_query_string({'forcestudent' => '1','popup' => $env{'form.popup'}});
-	   $r->print('<p><b>'.&mt('Privacy Note').':</b> '.
+	   $r->print('<p class="LC_info"><b>'.&mt('Privacy Note:').'</b> '.
 		     &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.').
 		     '</p>'.
 		     &Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes',&mt('Help with filling in text boxes')).'</p><p><a href="'.$r->uri.$query_string.'">'.&mt('Show Public View').'</a>'.
@@ -266,10 +349,10 @@
 	if ($target ne 'tex') {
 	    $r->print('<a name="coursecomment" />');
 	    $r->print('<hr /><h3>'.
-		      &mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'</h3>'.
+		      &mt('User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course').'</h3><span class="LC_info">'.
 		      &mt('Shared by course faculty and staff').
 		      &Apache::loncommon::help_open_topic("Course_Face_To_Face_Records,Course_Critical_Message").
-		      '<br />');
+		      '</span><br />');
 	    &Apache::lonmsgdisplay::disfacetoface($r,$cnum,$cdom);
 	    $r->print('<hr />');
 	    if (&Apache::lonnet::allowed('vsa',
@@ -281,13 +364,20 @@
 			  ('View recent activity by this student',
 			   $cnum,$cdom).('&nbsp;'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('<hr />'.&Apache::loncommon::slot_reservations_link('Slot reservation history',$cnum,$cdom));
+            }
+        }
         if ($env{'form.popup'}) {
             $r->print('<p><a href="javascript:window.close()">'.&mt('Close window').'</a>');
         }
@@ -343,10 +433,10 @@
     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 = '<h3>'.($is_course?$lt{'vgpf'}:$lt{'vpfi'}).'</h3>';
         $output .= '<a href="/adm/'.$cdom.'/'.$cnum.'/aboutme/portfolio'.
@@ -429,11 +519,11 @@
                                              '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"}
+                ({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 +536,11 @@
 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 +756,7 @@
 		'&nbsp;'.$showname.'</a>';
 	    $output.='</td><td>';
 	    if ($have_meta) {
-		$output.= '<a href="'.$url.'.meta"><img alt="'.&mt('Catalog Information').'" src="'.
+		$output.= '<a href="'.$url.'.meta"><img alt="'.&mt('Metadata').'" src="'.
 		&Apache::loncommon::lonhttpdurl('/res/adm/pages/catalog.gif').
 		'" class="LC_icon" /></a>';
 	    }
@@ -675,5 +766,29 @@
     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 = &coursedescription($env{'request.course.id'});
+        $cdom = $coursehash{'domain'};
+        $cnum = $coursehash{'cnum'};
+    }
+    if ((&Apache::lonnetallowed('srm',$privcheck)) || 
+        (&Apache::lonnet::allowed('dff',$privcheck))) {
+        if (&in_course($uname,$udom,$cnum,$cdom)) {
+            return 1;
+        }
+    }
+    return;
+}
+
 1;
 __END__

--raeburn1242683486--