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

raeburn raeburn@source.lon-capa.org
Mon, 27 Jul 2009 14:09:14 -0000


This is a MIME encoded message

--raeburn1248703754
Content-Type: text/plain

raeburn		Mon Jul 27 14:09:14 2009 EDT

  Modified files:              
    /loncom/interface	loncreateuser.pm 
  Log:
  - Domain Coordinators can permit course requests to be made by users in other domains, on a user-by-user basis.
  
  
--raeburn1248703754
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090727140914.txt"

Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.299 loncom/interface/loncreateuser.pm:1.300
--- loncom/interface/loncreateuser.pm:1.299	Sat Jul 25 14:44:50 2009
+++ loncom/interface/loncreateuser.pm	Mon Jul 27 14:09:14 2009
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.299 2009/07/25 14:44:50 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.300 2009/07/27 14:09:14 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -284,6 +284,40 @@
     return $output;
 }
 
+sub coursereq_externaluser {
+    my ($ccuname,$ccdomain,$cdom) = @_;
+    my (@usertools,%userenv,$output);
+    my %lt = &Apache::lonlocal::texthash (
+                   'official'   => 'Can request creation of official courses',
+                   'unofficial' => 'Can request creation of unofficial courses',
+                   'community'  => 'Can request creation of communities',
+    );
+
+    %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
+                      'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+                      'reqcrsotherdom.community');
+    @usertools = ('official','unofficial','community');
+    foreach my $item (@usertools) {
+        my ($tool_on,$tool_off);
+        $tool_off = 'checked="checked" ';
+        if ($userenv{'reqcrsotherdom.'.$item} ne '') {
+            my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
+            if (grep(/^\Q$cdom\E$/,@curr)) {
+                $tool_on = 'checked="checked" ';
+                $tool_off = '';
+            }
+        }
+        $output .= &Apache::loncommon::start_data_table_row()."\n".
+                   '  <td><span class="LC_nobreak">'.$lt{$item}.': <label>'.
+                   '<input type="radio" name="reqcrsotherdom_'.$item.'" value="1" '.
+                   $tool_on.'/>'.&mt('Yes').'</label>&nbsp;<label>'.
+                   '<input type="radio" name="reqcrsotherdom_'.$item.'" value="0" '.
+                   $tool_off.'/>'.&mt('No').'</label></span></td>'."\n".
+                   &Apache::loncommon::end_data_table_row()."\n";
+    }
+    return $output;
+}
+
 # =================================================================== Phase one
 
 sub print_username_entry_form {
@@ -875,10 +909,15 @@
             $r->print(&Apache::lonuserutils::forceid_change($context));
         }
         if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
-            $r->print('<h3>'.&mt('User Can Request Creation of Courses?').'</h3>'.
-                      &Apache::loncommon::start_data_table().
-                      &build_tools_display($ccuname,$ccdomain,'requestcourses').
-                      &Apache::loncommon::end_data_table());
+            $r->print('<h3>'.&mt('User Can Request Creation of Courses in this Domain?').'</h3>'.
+                      &Apache::loncommon::start_data_table());
+            if ($env{'request.role.domain'} eq $ccdomain) { 
+                $r->print(&build_tools_display($ccuname,$ccdomain,'requestcourses'));
+            } else {
+                $r->print(&coursereq_externaluser($ccuname,$ccdomain,
+                                                  $env{'request.role.domain'}));
+            }
+            $r->print(&Apache::loncommon::end_data_table());
         }
         $r->print('</div>');
         my $user_auth_text =  &user_authentication($ccuname,$ccdomain,$formname);
@@ -2000,7 +2039,9 @@
             ('environment',['firstname','middlename','lastname','generation',
              'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
              'tools.blog','tools.portfolio','requestcourses.official',
-             'requestcourses.unofficial','requestcourses.community'],
+             'requestcourses.unofficial','requestcourses.community',
+             'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+             'reqcrsotherdom.community'],
               $env{'form.ccdomain'},$env{'form.ccuname'});
         my ($tmp) = keys(%userenv);
         if ($tmp =~ /^(con_lost|error)/i) { 
@@ -2129,7 +2170,7 @@
             $oldinststatuses,$newinststatuses);
         my ($defquota,$settingstatus) = 
             &Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
-        my ($showquota,$showtools,$showrequestcourses,$showinststatus);
+        my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom);
         if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
             $showquota = 1;
         }
@@ -2138,6 +2179,8 @@
         }
         if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
             $showrequestcourses = 1;
+        } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+            $showreqotherdom = 1;
         }
         if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
             $showinststatus = 1;
@@ -2221,8 +2264,14 @@
         }
         &tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv,
                       \%changeHash,\%changed,\%newaccess,\%newaccesstext);
-        &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
-                      \%userenv, \%changeHash,\%changed,\%newaccess,\%newaccesstext);
+        if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) {
+            &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
+                          \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+        } else {
+            &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
+                          \%userenv,
+                                  \%changeHash,\%changed,\%newaccess,\%newaccesstext);
+        }
         if ($env{'form.cfirstname'}  ne $userenv{'firstname'}  ||
             $env{'form.cmiddlename'} ne $userenv{'middlename'} ||
             $env{'form.clastname'}   ne $userenv{'lastname'}   ||
@@ -2337,6 +2386,11 @@
                         $r->print("
     <th>$lt{$item}</th>\n");
                     }
+                } elsif ($showreqotherdom) {
+                    foreach my $item (@requestcourses) {
+                        $r->print("
+    <th>$lt{$item}</th>\n");
+                    }
                 }
                 if ($showquota) {
                     $r->print("
@@ -2368,6 +2422,11 @@
                         $r->print("
     <td>$oldaccess{$item} $oldaccesstext{$item}</td>\n");
                     }
+                } elsif ($showreqotherdom) {
+                    foreach my $item (@requestcourses) {
+                        $r->print("
+    <td>$oldaccess{$item} $oldaccesstext{$item}</td>\n");
+                    }
                 }
                 if ($showquota) {
                     $r->print("
@@ -2399,6 +2458,11 @@
                         $r->print("
     <td>$newaccess{$item} $newaccesstext{$item} </td>\n");
                     }
+                } elsif ($showreqotherdom) {
+                    foreach my $item (@requestcourses) {
+                        $r->print("
+    <td>$newaccess{$item} $newaccesstext{$item} </td>\n");
+                    }
                 }
                 if ($showquota) {
                     $r->print("
@@ -2468,6 +2532,11 @@
                     $r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '.
                               $newaccesstext{$item}.']'."\n");
                 }
+            } elsif ($showreqotherdom) {
+                foreach my $item (@requestcourses) {
+                    $r->print('<br />['.$lt{$item}.': '.$newaccess{$item}.' '.
+                              $newaccesstext{$item}.']'."\n");
+                }
             }
             if ($showtools) {
                 foreach my $item (@usertools) {
@@ -2559,6 +2628,59 @@
           (ref($newaccess) eq 'HASH') && (ref($newaccesstext) eq 'HASH'))) {
         return;
     }
+    if ($context eq 'reqcrsotherdom') {
+        my $cdom = $env{'request.role.domain'};
+        foreach my $tool (@{$usertools}) {
+            $oldaccesstext->{$tool} = &mt('no');
+            $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};
+            if ($userenv->{$context.'.'.$tool} eq '') {
+                if ($env{'form.'.$context.'_'.$tool}) {
+                    $changed->{$tool}=&tool_admin($tool,$cdom,
+                                                  $changeHash,$context);
+                    if ($changed->{$tool}) {
+                        $newaccesstext->{$tool} = &mt('yes');
+                    } else {
+                        $newaccesstext->{$tool} = $oldaccesstext->{$tool};
+                    }
+                }
+            } else {
+                my @curr = split(',',$userenv->{$context.'.'.$tool});
+                my @new;
+                my $changedoms;
+                if (grep(/^\Q$cdom\E$/,@curr)) {
+                    $oldaccesstext->{$tool} = &mt('yes');
+                    unless ($env{'form.'.$context.'_'.$tool}) {
+                        $changedoms = 1;
+                        foreach my $dom (@curr) {
+                            unless ($dom eq $cdom) {
+                                push(@new,$dom);
+                            }
+                        }
+                    }
+                } elsif ($env{'form.'.$context.'_'.$tool}) {
+                    $changedoms = 1;
+                    @new = sort(@curr,$cdom);
+                }
+                $newaccesstext->{$tool} = $oldaccesstext->{$tool};
+                if ($changedoms) {
+                    my $newdomstr; 
+                    if (@new) {
+                        $newdomstr = join(',',@new);
+                    }
+                    $changed->{$tool}=&tool_admin($tool,$newdomstr,$changeHash,
+                                                  $context);
+                    if ($changed->{$tool}) {
+                        if ($env{'form.'.$context.'_'.$tool}) {
+                            $newaccesstext->{$tool} = &mt('yes'); 
+                        } else {
+                            $newaccesstext->{$tool} = &mt('no');
+                        }
+                    }
+                }
+            }
+        }
+        return;
+    }
     foreach my $tool (@{$usertools}) {
         if ($userenv->{$context.'.'.$tool} ne '') {
             $oldaccess->{$tool} = &mt('custom');
@@ -2598,9 +2720,9 @@
                 } else {
                     $newaccess->{$tool} = $oldaccess->{$tool};
                     if ($userenv->{$context.'.'.$tool}) {
-                         $newaccesstext->{$tool} = &mt("availability set to 'on'");
+                        $newaccesstext->{$tool} = &mt("availability set to 'on'");
                     } else {
-                         $newaccesstext->{$tool} = &mt("availability set to 'off'");
+                        $newaccesstext->{$tool} = &mt("availability set to 'off'");
                     }
                 }
             }
@@ -2997,6 +3119,10 @@
         if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
             $canchange = 1;
         }
+    } elsif ($context eq 'reqcrsotherdom') {
+        if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+            $canchange = 1;
+        }
     } elsif (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
         # Current user has quota modification privileges
         $canchange = 1;

--raeburn1248703754--