[LON-CAPA-cvs] cvs: loncom /interface lonsimplepage.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Tue, 15 Nov 2005 22:05:05 -0000


This is a MIME encoded message

--raeburn1132092305
Content-Type: text/plain

raeburn		Tue Nov 15 17:05:05 2005 EDT

  Modified files:              
    /loncom/interface	lonsimplepage.pm 
  Log:
  Extension to allow simple page to be used to create/edit group homepages for course groups.
  
  
--raeburn1132092305
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20051115170505.txt"

Index: loncom/interface/lonsimplepage.pm
diff -u loncom/interface/lonsimplepage.pm:1.27 loncom/interface/lonsimplepage.pm:1.28
--- loncom/interface/lonsimplepage.pm:1.27	Sat Oct 29 22:39:09 2005
+++ loncom/interface/lonsimplepage.pm	Tue Nov 15 17:05:04 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Simple Page Editor
 #
-# $Id: lonsimplepage.pm,v 1.27 2005/10/30 02:39:09 www Exp $
+# $Id: lonsimplepage.pm,v 1.28 2005/11/15 22:05:04 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -55,7 +55,7 @@
     } else {
 	$r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
     } 
-    my (undef,undef,undef,undef,$marker)=split(/\//,$r->uri);
+    my (undef,undef,undef,undef,$marker,$caller)=split(/\//,$r->uri);
 # Is this even in a course?
     unless ($env{'request.course.id'}) {
 	if ($target ne 'tex') {
@@ -66,21 +66,37 @@
 	}
     }
 
-    $marker=~s/\D//g;
+    my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+    my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+    my $grp_view_permission = &Apache::lonnet::allowed('vcg',
+                                                   $env{'request.course.id'});
+
+    my %curr_group = ();
+    my %groupinfo = ();
+    if ($caller eq 'grppg') {
+        $marker =~ s/\W//g;
+        unless(&Apache::lonnet::get_coursegroups($dom,$crs,\%curr_group,
+                                                                    $marker)) {
+            $r->print('<body>Invalid group name</body>');
+            return OK;
+        }
+    } else {  
+        $marker=~s/\D//g;
+    }
 
     unless ($marker) {
 	$r->print('<body>Invalid call</body>');
         return OK;
     }
 
-    my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
-    my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
-
 # --------------------------------------------------------- The syllabus fields
     my %syllabusfields=&Apache::lonlocal::texthash(
        'aaa_title'         => 'Page Title',
        'bbb_content'       => 'Content',
        'ccc_webreferences' => 'Web References');
+    if ($caller eq 'grppg') {
+        $syllabusfields{'abb_links'} = &mt('Functionality');
+    }
 
 
 # ------------------------------------------------------------ Get query string
@@ -100,17 +116,50 @@
      if ($env{'form.forceedit'}) { $forceedit='edit'; }
 
 
-    my %syllabus=&Apache::lonnet::dump('smppage_'.$marker,$dom,$crs);
+    my %syllabus=&Apache::lonnet::dump($caller.'_'.$marker,$dom,$crs);
        
 # --------------------------------------- There is such a user, get environment
 
     if ($target ne 'tex') {
+        my $title = 'Course Page';
+        if ($caller eq 'grppg') {
+            $title = 'Group Page';
+        }
 	$r->print(&Apache::lonhtmlcommon::htmlareaheaders().
 		  '</head>'.&Apache::loncommon::bodytag
-		  ("Course Page",$forcestudent,$addentries,'',$dom,$env{'form.register'}));
+		  ($title,$forcestudent,$addentries,'',$dom,$env{'form.register'}));
+    }
+
+    if ($caller eq 'grppg') {
+        if (($grp_view_permission) || 
+                           (&Apache::loncommon::check_group_access($caller))) {
+            unless(&Apache::lonnet::allowed('vgh',
+                                      $env{'request.course.id'}.'/'.$marker)) {
+                &display_group_links($r,$target,$marker,%groupinfo);
+                return OK;
+            }
+        } else {
+            if ($target ne 'tex') {
+                $r->print('</head><body>You do not currently have rights to
+                                        view this group.
+                           </body></html>');
+                return OK;
+            } else {
+                $r->print('\textbf{You do not currently have rights to view this group}\end{document}');
+            }
+        }
     }
 
-    my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
+    my $allowed;
+    if ($caller eq 'grppg') {
+        $allowed  = $grp_view_permission;
+        unless ($allowed) {
+            $allowed = &Apache::lonnet::allowed('mgh',$env{'request.course.id'}.
+                                                                  '/'.$marker);
+        }
+    } else { 
+        $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
+    }
     my $privileged=$allowed;
     if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
 	$forcestudent='student';
@@ -131,11 +180,16 @@
 	    if ($syllabus{'uploaded.photourl'}) {
 		&Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
 	    }
-	    $syllabus{'uploaded.photourl'}=
-		&Apache::lonnet::userfileupload('uploaddoc',1,'simplepage');
+            if ($caller eq 'grppage') {
+                $syllabus{'uploaded.photourl'}=&Apache::lonnet::userfileupload(
+                                              'uploaddoc',1,"grouppage/$marker");
+            } else {
+	        $syllabus{'uploaded.photourl'}=
+		     &Apache::lonnet::userfileupload('uploaddoc',1,'simplepage');
+            }
 	}
 	$syllabus{'uploaded.lastmodified'}=time;
-	&Apache::lonnet::put('smppage_'.$marker,\%syllabus,$dom,$crs);
+	&Apache::lonnet::put($caller.'_'.$marker,\%syllabus,$dom,$crs);
     }
     if (($allowed) && ($env{'form.storesyl'})) {
 	foreach (keys %syllabusfields) {
@@ -148,13 +202,13 @@
 	    $syllabus{$_}=$field;
 	}
 	$syllabus{'uploaded.lastmodified'}=time;
-	&Apache::lonnet::put('smppage_'.$marker,\%syllabus,$dom,$crs);
+	&Apache::lonnet::put($caller.'_'.$marker,\%syllabus,$dom,$crs);
     }
 
 # ---------------------------------------------------------------- Get syllabus
     if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
 	if ($syllabus{'uploaded.photourl'}) {
-	    &Apache::lonnet::allowuploaded('/adm/smppg',
+	    &Apache::lonnet::allowuploaded('/adm/'.$caller,
 					   $syllabus{'uploaded.photourl'});
 	    
 	    my $image='<img src="'.$syllabus{'uploaded.photourl'}.'"
@@ -183,7 +237,30 @@
 		    $message=&Apache::lonspeller::markeduptext($message);
 		}
 		$message=&Apache::lontexconvert::msgtexconverted($message);
-		unless ($_ eq 'aaa_title') {
+                if ($_ eq 'abb_links' && $caller eq 'grppg') {
+                    $r->print('<br /><input type="hidden" name="'.$_.
+                                          '" value="'.$syllabus{$_}.'" />');
+                    &display_group_links($r,$target,$marker,%groupinfo);
+                    $r->print('<br />');
+                } elsif ($_ eq 'aaa_title') {
+                    if ($target ne 'tex') {
+                        $r->print('<h1>'.$message.'</h1>');
+                    } else {
+                        my $safeinit;
+                        $r->print(&Apache::lonxml::xmlparse($r,'tex','<h1>'.$message.'</h1>'));
+                    }
+                    if ($allowed) {
+                        if ($env{'form.grade_target'} ne 'tex') {
+                            $r->print(
+                                      '<br />Title<br /><textarea cols="80" rows="2" name="'.$_.'">'.
+                                      $syllabus{$_}.
+                                      '</textarea><input type="submit" name="storesyl" value="Store" />');
+                        } else {
+                            my $safeinit;
+                            $r->print(&Apache::lonxml::xmlparse($r,'tex',$syllabus{$_},$safeinit));
+                        }
+                    }
+                } else {
 		    if (($_ ne 'bbb_content') || ($allowed)) {
 			if ($target ne 'tex') {
 			    $r->print('<h3>'.$syllabusfields{$_}.'</h3>');
@@ -209,24 +286,6 @@
 			    $r->print(&Apache::lonxml::xmlparse($r,'tex',$syllabus{$_},$safeinit));
 			}
 		    }
-		} else {
-		    if ($target ne 'tex') {
-			$r->print('<h1>'.$message.'</h1>');
-		    } else {
-			my $safeinit;
-			$r->print(&Apache::lonxml::xmlparse($r,'tex','<h1>'.$message.'</h1>'));
-		    }
-		    if ($allowed) {
-			if ($env{'form.grade_target'} ne 'tex') {
-			    $r->print(
-				      '<br />Title<br /><textarea cols="80" rows="2" name="'.$_.'">'.
-				      $syllabus{$_}.
-				      '</textarea><input type="submit" name="storesyl" value="Store" />');
-			} else {
-			    my $safeinit;
-			    $r->print(&Apache::lonxml::xmlparse($r,'tex',$syllabus{$_},$safeinit));
-			}
-		    }
 		}
 	    }
 	}
@@ -244,7 +303,64 @@
 	$r->print('\end{document}');
     }
     return OK;
-} 
+}
+
+sub display_group_links {
+    my ($r,$target,$marker,%groupinfo) = @_;
+    my @available = ();
+                                                                                   
+    my %menu = ();
+    %{$menu{'email'}} = (
+                        text => 'Group e-mail',
+                        href => '/adm/email?group='.$marker,
+                      );
+    %{$menu{'discussion'}} = (
+                        text => 'Discussion Boards',
+                        href => '/adm/groupboards?group='.$marker,
+                      );
+    %{$menu{'chat'}} = (
+                        text => 'Group chat',
+                        href => "javascript:group_chat('$marker')",
+                      );
+    %{$menu{'files'}} = (
+                        text => 'File repository',
+                        href => '/adm/portfolio?group='.$marker,
+                      );
+    %{$menu{'roster'}} = (
+                        text => 'Membership roster',
+                        href => '/adm/grouproster?group='.$marker,
+                      );
+    foreach my $tool (sort(keys(%menu))) {
+        if ($groupinfo{functions}{$tool} eq 'on') {
+            push(@available,$tool);
+        }
+    }
+    if (@available > 0) {
+        my $output = '<table cellspacing="4" cellpadding="4"><tr>';
+        foreach my $tool (@available) {
+            if ($target eq 'tex') {
+                $output .= '<td>'.$menu{$tool}{text}.'</td>';
+            } else {
+                $output .= '<td><a href="'.$menu{$tool}{href}.'">'.
+                           $menu{$tool}{text}.'</a></td>';
+            }
+        }
+        $output .= '</tr></table>';
+        if ($target eq 'tex') {
+            $r->print(&Apache::lonxml::xmlparse($r,'tex','Available functions<br /><br />'.$output));
+        } else {
+            $r->print('<h3>Functions</h3>'.$output);
+        }
+    } else {
+        my $output = 'No group functionality (e.g., e-mail, discussion,chat or file upload) is currently available to you in this group: '.$marker;
+        if ($target eq 'tex') {
+            $r->print(&Apache::lonxml::xmlparse($r,'tex',$output));
+        } else {
+            $r->print($output);
+        }
+    }
+}
+ 
 
 1;
 __END__

--raeburn1132092305--