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

raeburn raeburn@source.lon-capa.org
Tue, 03 Nov 2009 03:18:21 -0000


raeburn		Tue Nov  3 03:18:21 2009 EDT

  Modified files:              
    /loncom/interface	loncommon.pm 
  Log:
  - Accommodate Communities.
   - Check for active "co" role when testing for rights to clone a community.
   - Communities can only be cloned from other communities.
   - (C)course -> (C)community
  
  
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.907 loncom/interface/loncommon.pm:1.908
--- loncom/interface/loncommon.pm:1.907	Sat Oct 31 16:17:07 2009
+++ loncom/interface/loncommon.pm	Tue Nov  3 03:18:21 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.907 2009/10/31 16:17:07 raeburn Exp $
+# $Id: loncommon.pm,v 1.908 2009/11/03 03:18:21 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -6971,7 +6971,7 @@
     my $active_chk = 'none';
     my $now = time;
     if (@uroles > 0) {
-        if (($role eq 'cc') || ($sec eq '') || (!defined($sec))) {
+        if (($role eq 'cc') || ($role eq 'co') || ($sec eq '') || (!defined($sec))) {
             $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;
         } else {
             $srchstr = '/'.$cdom.'/'.$crs.'/'.$sec.'_'.$role;
@@ -9923,11 +9923,24 @@
     my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);
     my $clonemsg;
     my $can_clone = 0;
-
+    my $lctype = lc($args->{'type'});
+    if ($lctype ne 'community') {
+        $lctype = 'course';
+    }
     if ($clonehome eq 'no_host') {
-        $clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});     
+        if ($args->{'type'} eq 'Community') {
+            $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
+        } else {
+            $clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
+        }     
     } else {
 	my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});
+        if ($args->{'type'} eq 'Community') {
+            if ($clonedesc{'type'} ne 'Community') {
+                 $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
+                return ($can_clone, $clonemsg, $cloneid, $clonehome);
+            }
+        }
 	if (($env{'request.role.domain'} eq $args->{'clonedomain'}) && 
             (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {
 	    $can_clone = 1;
@@ -9940,15 +9953,23 @@
             } elsif (grep(/^\*\:\Q$args->{'ccdomain'}\E$/,@cloners)) {
                 $can_clone = 1;
             } else {
+                my $ccrole = 'cc';
+                if ($args->{'type'} eq 'Community') {
+                    $ccrole = 'co';
+                }
 	        my %roleshash =
 		    &Apache::lonnet::get_my_roles($args->{'ccuname'},
 					 $args->{'ccdomain'},
-                                         'userroles',['active'],['cc'],
+                                         'userroles',['active'],[$ccrole],
 					 [$args->{'clonedomain'}]);
-	        if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
+	        if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
 		    $can_clone = 1;
 	        } else {
-                    $clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
+                    if ($args->{'type'} eq 'Community') {
+                        $clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
+                    } else {
+                        $clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
+                    }
 	        }
 	    }
         }