[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lon-capa-cvs
Subject:    [LON-CAPA-cvs] cvs: loncom / lond  /interface lonpickcourse.pm  /lonnet/perl lonnet.pm
From:       raeburn <raeburn () source ! lon-capa ! org>
Date:       2010-06-25 4:37:55
Message-ID: cvsraeburn1277440675 () cvsserver
[Download RAW message or body]

This is a MIME encoded message


raeburn		Fri Jun 25 04:37:55 2010 EDT

  Modified files:              
    /loncom	lond 
    /loncom/interface	lonpickcourse.pm 
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - DC can override course-specific cloning rights: 
    (a) when DC creates a single course in a domain:
      (All courses in that domain are cloneable for all course owners).
    (b) when DC creates a single community in a domain:
      (All communities in that domain are cloneable for all community owners).
  
  
["raeburn-20100625043755.txt" (text/plain)]

Index: loncom/lond
diff -u loncom/lond:1.444 loncom/lond:1.445
--- loncom/lond:1.444	Fri Jun 18 19:19:33 2010
+++ loncom/lond	Fri Jun 25 04:37:44 2010
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.444 2010/06/18 19:19:33 raeburn Exp $
+# $Id: lond,v 1.445 2010/06/25 04:37:44 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -58,7 +58,7 @@
 my $status='';
 my $lastlog='';
 
-my $VERSION='$Revision: 1.444 $'; #' stupid emacs
+my $VERSION='$Revision: 1.445 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid="default";
 my $currentdomainid;
@@ -3728,6 +3728,9 @@
 #                 createdafter - include courses for which creation date followed \
this date.  #                 creationcontext - include courses created in specified \
context   #
+#                 domcloner - flag to indicate if user can create CCs in course's \
domain. +#                             If so, ability to clone course is automatic. 
+#
 #     $client  - The socket open on the client.
 # Returns:
 #    1     - Continue processing.
@@ -3740,7 +3743,7 @@
     my ($udom,$since,$description,$instcodefilter,$ownerfilter,$coursefilter,
         $typefilter,$regexp_ok,$rtn_as_hash,$selfenrollonly,$catfilter,$showhidden,
         $caller,$cloner,$cc_clone_list,$cloneonly,$createdbefore,$createdafter,
-        $creationcontext) =split(/:/,$tail);
+        $creationcontext,$domcloner) =split(/:/,$tail);
     my $now = time;
     my ($cloneruname,$clonerudom,%cc_clone);
     if (defined($description)) {
@@ -3813,7 +3816,6 @@
     } else {
         $creationcontext = '.';
     }
-    
     my $unpack = 1;
     if ($description eq '.' && $instcodefilter eq '.' && $coursefilter eq '.' && 
         $typefilter eq '.') {
@@ -3844,7 +3846,9 @@
                     next if ($since > 1);
                 }
                 $is_hash =  1;
-                if (defined($clonerudom)) {
+                if ($domcloner) {
+                    $canclone = 1;
+                } elsif (defined($clonerudom)) {
                     if ($items->{'cloners'}) {
                         my @cloneable = split(',',$items->{'cloners'});
                         if (@cloneable) {
Index: loncom/interface/lonpickcourse.pm
diff -u loncom/interface/lonpickcourse.pm:1.97 loncom/interface/lonpickcourse.pm:1.98
--- loncom/interface/lonpickcourse.pm:1.97	Sat Jun 19 01:28:35 2010
+++ loncom/interface/lonpickcourse.pm	Fri Jun 25 04:37:49 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Pick a course
 #
-# $Id: lonpickcourse.pm,v 1.97 2010/06/19 01:28:35 raeburn Exp $
+# $Id: lonpickcourse.pm,v 1.98 2010/06/25 04:37:49 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -183,8 +183,15 @@
 # ---------------------------------------------------------------- Get the data
     if ((($env{'form.gosearch'}) && ($env{'form.updater'} eq '')) || 
          $onlyown) {
+        my $domcloner;
+        if ($env{'form.form'} eq 'ccrs') {
+            if (($env{'request.role.domain'} eq $env{'form.domainfilter'}) &&
+                (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {
+                $domcloner = 1;
+            }
+        }
         my %courses = &search_courses($r,$type,$onlyown,$filter,$numtitles,
-                                      $cloneruname,$clonerudom);
+                                      $cloneruname,$clonerudom,$domcloner);
         if ($nohost) {
             $r->print ('<span class="LC_warning">'.
                        &mt('User does not exist - username: [_1], domain: [_2].',
@@ -405,8 +412,16 @@
                 $instcode = $courses{$course}{'inst_code'};
                 $ttype = $courses{$course}{'type'};
                 if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq \
                'requestcrs')) {
-                    if \
                ($cc_cloneable{$courses{$course}{'cnum'}.':'.$courses{$course}{'domain'}}) \
                {
-                        $canclone = 1;
+                    if ($env{'form.form'} eq 'ccrs') {
+                        if (($env{'request.role.domain'} eq $cdom) &&
+                            \
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { +                    \
$canclone = 1; +                        }
+                    }
+                    unless ($canclone) { 
+                        if ($cc_cloneable{$cnum.':'.$cdom}) {
+                            $canclone = 1;
+                        }
                     }
                     unless ($canclone) {
                         my $cloners = $courses{$course}{'cloners'};
@@ -865,7 +880,7 @@
 }
 
 sub search_courses {
-    my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom) = @_;
+    my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,$domcloner) = \
@_;  my (%courses,%showcourses,$cloner,$ccrole);
     if ($type eq 'Community') {
         $ccrole = 'co';
@@ -924,7 +939,8 @@
                                           undef,undef,$type,$regexpok,undef,undef,
                                           undef,undef,$cloner,$env{'form.cc_clone'},
                                           $filter->{'cloneableonly'},
-                                          $createdbefore,$createdafter);
+                                          $createdbefore,$createdafter,undef,
+                                          $domcloner);
         if (($filter->{'personfilter'} ne '') && ($filter->{'persondomfilter'} ne \
                '')) {
             my %rolehash = &Apache::lonnet::get_my_roles($filter->{'personfilter'},
                                                          \
$filter->{'persondomfilter'}, @@ -1204,10 +1220,12 @@
 
 =item *
 X<search_courses()>
-B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom)>:
+B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,
+                 $domcloner)>:
 
 
-Input: 7 -  request object, course type, search scope: only courses in which user \
has active role (1), or any course (0); anonymous hash of criteria and their values; \
for institutional codes - number of categories; optional username of new course \
owner, optional domain of new course owner). Last two needed when search is for \
courses to clone from course request form, or course creation form (DC).    +Input: 8 \
-  request object, course type, search scope: only courses in which user has active \
role (1), or any course (0); anonymous hash of criteria and their values; for \
institutional codes - number of categories; optional username of new course owner, \
optional domain of new course owner). Last two needed when search is for courses to \
clone from course request form, or course creation form (DC). Optional "domcloner" \
flag (has value=1 if user has ccc priv in   +domain being filtered by (used when DC \
is using course creation form).  
 Output: 1 - %courses - hash of courses satisfying search criteria, keys = course \
IDs, values are corresponding colon-separated escaped description, institutional \
code, owner and type.  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1070 loncom/lonnet/perl/lonnet.pm:1.1071
--- loncom/lonnet/perl/lonnet.pm:1.1070	Fri Jun  4 00:14:15 2010
+++ loncom/lonnet/perl/lonnet.pm	Fri Jun 25 04:37:54 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.1070 2010/06/04 00:14:15 www Exp $
+# $Id: lonnet.pm,v 1.1071 2010/06/25 04:37:54 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -3035,7 +3035,7 @@
     my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,
         $coursefilter,$hostidflag,$hostidref,$typefilter,$regexp_ok,
         $selfenrollonly,$catfilter,$showhidden,$caller,$cloner,$cc_clone,
-        $cloneonly,$createdbefore,$createdafter,$creationcontext)=@_;
+        $cloneonly,$createdbefore,$createdafter,$creationcontext,$domcloner)=@_;
     my $as_hash = 1;
     my %returnhash;
     if (!$domfilter) { $domfilter=''; }
@@ -3057,7 +3057,8 @@
                          $showhidden.':'.$caller.':'.&escape($cloner).':'.
                          &escape($cc_clone).':'.$cloneonly.':'.
                          &escape($createdbefore).':'.&escape($createdafter).':'.
-                         &escape($creationcontext),$tryserver);
+                         &escape($creationcontext).':'.$domcloner,
+                         $tryserver);
                 my @pairs=split(/\&/,$rep);
                 foreach my $item (@pairs) {
                     my ($key,$value)=split(/\=/,$item,2);


_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic