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

raeburn raeburn at source.lon-capa.org
Sun Apr 2 08:40:19 EDT 2017


raeburn		Sun Apr  2 12:40:19 2017 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/interface	loncreateuser.pm 
  Log:
  - For 2.11
    - Backport 1.438, 1.439, 1.440 
  
  
-------------- next part --------------
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.406.2.13 loncom/interface/loncreateuser.pm:1.406.2.14
--- loncom/interface/loncreateuser.pm:1.406.2.13	Sun Mar 26 23:33:46 2017
+++ loncom/interface/loncreateuser.pm	Sun Apr  2 12:40:18 2017
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.406.2.13 2017/03/26 23:33:46 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.406.2.14 2017/04/02 12:40:18 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -641,7 +641,8 @@
 # =================================================================== Phase one
 
 sub print_username_entry_form {
-    my ($r,$context,$response,$srch,$forcenewuser,$crstype,$brcrum) = @_;
+    my ($r,$context,$response,$srch,$forcenewuser,$crstype,$brcrum,
+        $permission) = @_;
     my $defdom=$env{'request.role.domain'};
     my $formtoset = 'crtuser';
     if (exists($env{'form.startrolename'})) {
@@ -667,11 +668,25 @@
     }
     my $helpitem = 'Course_Change_Privileges';
     if ($env{'form.action'} eq 'custom') {
-        $helpitem = 'Course_Editing_Custom_Roles';
+        if ($context eq 'course') {
+            $helpitem = 'Course_Editing_Custom_Roles';
+        } elsif ($context eq 'domain') {
+            $helpitem = 'Domain_Editing_Custom_Roles';
+        }
     } elsif ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
     } elsif ($env{'form.action'} eq 'accesslogs') {
         $helpitem = 'Domain_User_Access_Logs';
+    } elsif ($context eq 'author') {
+        $helpitem = 'Author_Change_Privileges';
+    } elsif ($context eq 'domain') {
+        if ($permission->{'cusr'}) {
+            $helpitem = 'Domain_Change_Privileges';
+        } elsif ($permission->{'view'}) {
+            $helpitem = 'Domain_View_Privileges';
+        } else {
+            undef($helpitem);
+        }
     }
     my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$defdom);
     if ($env{'form.action'} eq 'custom') {
@@ -762,6 +777,7 @@
         } elsif (($env{'form.action'} eq 'singleuser') &&
                  ($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$defdom))) {
             $actiontext = $lt{'srvu'};
+            $fixeddom = 1;
         }
         $r->print("<h3>$actiontext</h3>");
         if ($env{'form.origform'} ne 'crtusername') {
@@ -829,11 +845,16 @@
             $inexact = 1;
         }
     }
-    my $cancreate =
-        &Apache::lonuserutils::can_create_user($dom,$context,$usertype);
+    my ($cancreate,$noinstd);
+    if ($env{'form.action'} eq 'accesslogs') {
+        $noinstd = 1;
+    } else {
+        $cancreate =
+            &Apache::lonuserutils::can_create_user($dom,$context,$usertype);
+    }
     my ($userpicker,$cansearch) = 
        &Apache::loncommon::user_picker($dom,$srch,$forcenewuser,
-                                       'document.crtuser',$cancreate,$usertype,$context,$fixeddom);
+                                       'document.crtuser',$cancreate,$usertype,$context,$fixeddom,$noinstd);
     my $srchbutton = &mt('Search');
     if ($env{'form.action'} eq 'singlestudent') {
         $srchbutton = &mt('Search and Enroll');
@@ -995,6 +1016,10 @@
             $helpitem = 'Course_Change_Privileges';
         } elsif ($env{'form.action'} eq 'singlestudent') {
             $helpitem = 'Course_Add_Student';
+        } elsif ($context eq 'author') {
+            $helpitem = 'Author_Change_Privileges';
+        } elsif ($context eq 'domain') {
+            $helpitem = 'Domain_Change_Privileges';
         }
         push (@{$brcrum},
                   {href => "javascript:backPage(document.usersrchform,'','')",
@@ -1040,7 +1065,7 @@
             $r->print('</h3>');
         } elsif ($env{'form.action'} eq 'accesslogs') {
             $r->print("<b>$lt{'srcva'}</b><br />");
-            $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,'accesslogs',undef,undef,1));
+            $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,undef,1));
             $r->print('<h3>'.$lt{'vacsel'}.'</h3>');
         }
     }
@@ -1121,7 +1146,8 @@
     if (($ccuname eq '') || ($ccdomain eq '')) {
         my $usermsg = &mt('No username and/or domain provided.');
         $env{'form.phase'} = '';
-	&print_username_entry_form($r,$context,$usermsg,'','',$crstype,$brcrum);
+	&print_username_entry_form($r,$context,$usermsg,'','',$crstype,$brcrum,
+                                   $permission);
         return;
     }
     my ($form,$formname);
@@ -1170,7 +1196,8 @@
             }
             $response .= '</p><br />';
             $env{'form.phase'} = '';
-            &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum);
+            &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum,
+                                       $permission);
             return;
         }
         $newuser = 1;
@@ -1194,7 +1221,8 @@
                             'username');
                     }
                     $env{'form.phase'} = '';
-                    &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype,$brcrum);
+                    &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype,$brcrum,
+                                               $permission);
                     return;
                 }
             }
@@ -1219,6 +1247,10 @@
     my $helpitem = 'Course_Change_Privileges';
     if ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
+    } elsif ($context eq 'author') {
+        $helpitem = 'Author_Change_Privileges';
+    } elsif ($context eq 'domain') {
+        $helpitem = 'Domain_Change_Privileges';
     }
     push (@{$brcrum},
         {href => "javascript:backPage($form)",
@@ -2636,6 +2668,10 @@
     my $helpitem = 'Course_Change_Privileges';
     if ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
+    } elsif ($context eq 'author') {
+        $helpitem = 'Author_Change_Privileges';
+    } elsif ($context eq 'domain') {
+        $helpitem = 'Domain_Change_Privileges';
     }
     push(@{$brcrum}, 
             {href => "javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
@@ -4298,9 +4334,9 @@
 # ========================================================== Custom Role Editor
 
 sub custom_role_editor {
-    my ($r,$brcrum,$prefix) = @_;
+    my ($r,$context,$brcrum,$prefix,$permission) = @_;
     my $action = $env{'form.customroleaction'};
-    my $rolename; 
+    my ($rolename,$helpitem);
     if ($action eq 'new') {
         $rolename=$env{'form.newrolename'};
     } else {
@@ -4311,14 +4347,17 @@
     if ($env{'request.course.id'}) {
         $crstype = &Apache::loncommon::course_type();
         $context = 'course';
+        $helpitem = 'Course_Editing_Custom_Roles';
     } else {
         $context = 'domain';
         $crstype = 'course';
+        $helpitem = 'Domain_Editing_Custom_Roles';
     }
 
     $rolename=~s/[^A-Za-z0-9]//gs;
     if (!$rolename || $env{'form.phase'} eq 'pickrole') {
-	&print_username_entry_form($r,undef,undef,undef,undef,$crstype,$brcrum);
+	&print_username_entry_form($r,$context,undef,undef,undef,$crstype,$brcrum,
+                                   $permission);
         return;
     }
 
@@ -4373,7 +4412,7 @@
                text => "Edit custom role",
                faq  => 282,
                bug  => 'Instructor Interface',
-               help => 'Course_Editing_Custom_Roles'}
+               help => $helpitem}
               );
     my $args = { bread_crumbs          => $brcrum,
                  bread_crumbs_component => 'User Management'};
@@ -4400,11 +4439,11 @@
 
 # ---------------------------------------------------------- Call to definerole
 sub set_custom_role {
-    my ($r,$context,$brcrum,$prefix) = @_;
+    my ($r,$context,$brcrum,$prefix,$permission) = @_;
     my $rolename=$env{'form.rolename'};
     $rolename=~s/[^A-Za-z0-9]//gs;
     if (!$rolename) {
-	&custom_role_editor($r,$brcrum,$prefix);
+	&custom_role_editor($r,$context,$brcrum,$prefix,$permission);
         return;
     }
     my ($jsback,$elements) = &crumb_utilities();
@@ -4413,6 +4452,10 @@
                  .$jsback."\n"
                  .'// ]]>'."\n"
                  .'</script>'."\n";
+    my $helpitem = 'Course_Editing_Custom_Roles';
+    if ($context eq 'domain') {
+        $helpitem = 'Domain_Editing_Custom_Roles';
+    }
     push(@{$brcrum},
         {href => "javascript:backPage(document.customresult,'pickrole','')",
          text => "Pick custom role",
@@ -4426,7 +4469,7 @@
          text => "Result",
          faq  => 282,
          bug  => 'Instructor Interface',
-         help => 'Course_Editing_Custom_Roles'},
+         help => $helpitem,}
         );
     my $args = { bread_crumbs           => $brcrum,
                  bread_crumbs_component => 'User Management'};
@@ -4497,7 +4540,8 @@
        $r->send_http_header;
        return OK;
     }
-    my ($context,$crstype);
+    my ($context,$crstype,$cid,$cnum,$cdom,$allhelpitems);
+
     if ($env{'request.course.id'}) {
         $context = 'course';
         $crstype = &Apache::loncommon::course_type();
@@ -4507,6 +4551,69 @@
         $context = 'domain';
     }
 
+    my ($permission,$allowed) =
+        &Apache::lonuserutils::get_permission($context,$crstype);
+
+    if ($allowed) {
+        my @allhelp;
+        if ($context eq 'course') {
+            $cid = $env{'request.course.id'};
+            $cdom = $env{'course.'.$cid.'.domain'};
+            $cnum = $env{'course.'.$cid.'.num'};
+
+            if ($permission->{'cusr'}) {
+                push(@allhelp,'Course_Create_Class_List');
+            }
+            if ($permission->{'view'} || $permission->{'cusr'}) {
+                push(@allhelp,('Course_Change_Privileges','Course_View_Class_List'));
+            }
+            if ($permission->{'custom'}) {
+                push(@allhelp,'Course_Editing_Custom_Roles');
+            }
+            if ($permission->{'cusr'}) {
+                push(@allhelp,('Course_Add_Student','Course_Drop_Student'));
+            }
+            unless ($permission->{'cusr_section'}) {
+                if (&Apache::lonnet::auto_run($cnum,$cdom) && (($permission->{'cusr'}) || ($permission->{'view'}))) {
+                    push(@allhelp,'Course_Automated_Enrollment');
+                }
+                if ($permission->{'selfenrolladmin'}) {
+                    push(@allhelp,'Course_Approve_Selfenroll');
+                }
+            }
+            if ($permission->{'grp_manage'}) {
+                push(@allhelp,'Course_Manage_Group');
+            }
+            if ($permission->{'view'} || $permission->{'cusr'}) {
+                push(@allhelp,'Course_User_Logs');
+            }
+        } elsif ($context eq 'author') {
+            push(@allhelp,('Author_Change_Privileges','Author_Create_Coauthor_List',
+                           'Author_View_Coauthor_List','Author_User_Logs'));
+        } else {
+            if ($permission->{'cusr'}) {
+                push(@allhelp,'Domain_Change_Privileges');
+                if ($permission->{'activity'}) {
+                    push(@allhelp,'Domain_User_Access_Logs');
+                }
+                push(@allhelp,('Domain_Create_Users','Domain_View_Users_List'));
+                if ($permission->{'custom'}) {
+                    push(@allhelp,'Domain_Editing_Custom_Roles');
+                }
+                push(@allhelp,('Domain_Role_Approvals','Domain_Username_Approvals','Domain_Change_Logs'));
+            } elsif ($permission->{'view'}) {
+                push(@allhelp,'Domain_View_Privileges');
+                if ($permission->{'activity'}) {
+                    push(@allhelp,'Domain_User_Access_Logs');
+                }
+                push(@allhelp,('Domain_View_Users_List','Domain_Change_Logs'));
+            }
+        }
+        if (@allhelp) {
+            $allhelpitems = join(',', at allhelp);
+        }
+    }
+
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['action','state','callingform','roletype','showrole','bulkaction','popup','phase',
          'username','domain','srchterm','srchdomain','srchin','srchby','srchtype','queue']);
@@ -4517,13 +4624,9 @@
     if (($env{'form.action'} ne 'dateselect') && ($env{'form.action'} ne 'displayuserreq')) {
         $brcrum = [{href=>"/adm/createuser",
                     text=>"User Management",
-                    help=>'Course_Create_Class_List,Course_Change_Privileges,Course_View_Class_List,Course_Editing_Custom_Roles,Course_Add_Student,Course_Drop_Student,Course_Automated_Enrollment,Course_Self_Enrollment,Course_Manage_Group'}
+                    help=>$allhelpitems}
                   ];
     }
-    #SD Following files not added to help, because the corresponding .tex-files seem to
-    #be missing: Course_Approve_Selfenroll,Course_User_Logs,
-    my ($permission,$allowed) = 
-        &Apache::lonuserutils::get_permission($context,$crstype);
     if (!$allowed) {
         if ($context eq 'course') {
             $r->internal_redirect('/adm/viewclasslist');
@@ -4555,10 +4658,16 @@
         $r->print(&header(undef,$args));
         $r->print(&print_main_menu($permission,$context,$crstype));
     } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {
+        my $helpitem = 'Course_Create_Class_List';
+        if ($context eq 'author') {
+            $helpitem = 'Author_Create_Coauthor_List';
+        } elsif ($context eq 'domain') {
+            $helpitem = 'Domain_Create_Users';
+        }
         push(@{$brcrum},
               { href => '/adm/createuser?action=upload&state=',
                 text => 'Upload Users List',
-                help => 'Course_Create_Class_List',
+                help => $helpitem,
               });
         $bread_crumbs_component = 'Upload Users List';
         $args = {bread_crumbs           => $brcrum,
@@ -4603,7 +4712,7 @@
                        .'</span>';
                     $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch,undef,
-                                               $crstype,$brcrum,$showcredits);
+                                               $crstype,$brcrum,$permission);
                 } else {
                     my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});
                     my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});
@@ -4648,7 +4757,8 @@
                             #    }
                             #}
                             &print_username_entry_form($r,$context,$response,$srch,
-                                                       $forcenewuser,$crstype,$brcrum);
+                                                       $forcenewuser,$crstype,$brcrum,
+                                                       $permission);
                         } else {
                             &print_useraccesslogs_display($r,$ccuname,$ccdomain,$permission,$brcrum);
                         }
@@ -4665,7 +4775,8 @@
                 } else {
                     $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch,
-                                               $forcenewuser,$crstype,$brcrum);
+                                               $forcenewuser,$crstype,$brcrum,
+                                               $permission);
                 }
             } elsif ($env{'form.phase'} eq 'userpicked') {
                 my $ccuname = &LONCAPA::clean_username($env{'form.seluname'});
@@ -4686,14 +4797,14 @@
             &update_user_data($r,$context,$crstype,$brcrum,$showcredits);
         } else {
             &print_username_entry_form($r,$context,undef,$srch,undef,$crstype,
-                                       $brcrum);
+                                       $brcrum,$permission);
         }
     } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {
         my $prefix;
         if ($env{'form.phase'} eq 'set_custom_roles') {
-            &set_custom_role($r,$context,$brcrum,$prefix);
+            &set_custom_role($r,$context,$brcrum,$prefix,$permission);
         } else {
-            &custom_role_editor($r,$brcrum,$prefix);
+            &custom_role_editor($r,$context,$brcrum,$prefix,$permission);
         }
     } elsif (($env{'form.action'} eq 'processauthorreq') &&
              ($permission->{'cusr'}) && 
@@ -4842,13 +4953,19 @@
         }
     } elsif (($env{'form.action'} eq 'listusers') && 
              ($permission->{'view'} || $permission->{'cusr'})) {
+        my $helpitem = 'Course_View_Class_List';
+        if ($context eq 'author') {
+            $helpitem = 'Author_View_Coauthor_List';
+        } elsif ($context eq 'domain') {
+            $helpitem = 'Domain_View_Users_List';
+        }
         if ($env{'form.phase'} eq 'bulkchange') {
             push(@{$brcrum},
                     {href => '/adm/createuser?action=listusers',
                      text => "List Users"},
                     {href => "/adm/createuser",
                      text => "Result",
-                     help => 'Course_View_Class_List'});
+                     help => $helpitem});
             $bread_crumbs_component = 'Update Users';
             $args = {bread_crumbs           => $brcrum,
                      bread_crumbs_component => $bread_crumbs_component};
@@ -4865,7 +4982,7 @@
             push(@{$brcrum},
                     {href => '/adm/createuser?action=listusers',
                      text => "List Users",
-                     help => 'Course_View_Class_List'});
+                     help => $helpitem});
             $bread_crumbs_component = 'List Users';
             $args = {bread_crumbs           => $brcrum,
                      bread_crumbs_component => $bread_crumbs_component};
@@ -4946,9 +5063,6 @@
         }
     } elsif ($env{'form.action'} eq 'selfenroll') {
         if ($permission->{selfenrolladmin}) {
-            my $cid = $env{'request.course.id'};
-            my $cdom = $env{'course.'.$cid.'.domain'};
-            my $cnum = $env{'course.'.$cid.'.num'};
             my %currsettings = (
                 selfenroll_types              => $env{'course.'.$cid.'.internal.selfenroll_types'},
                 selfenroll_registered         => $env{'course.'.$cid.'.internal.selfenroll_registered'},
@@ -4994,21 +5108,18 @@
             push(@{$brcrum},
                      {href => '/adm/createuser?action=selfenrollqueue',
                       text => 'Enrollment requests',
-                      help => 'Course_Self_Enrollment'});
+                      help => 'Course_Approve_Selfenroll'});
             $bread_crumbs_component = 'Enrollment requests';
             if ($env{'form.state'} eq 'done') {
                 push(@{$brcrum},
                          {href => '/adm/createuser?action=selfenrollqueue',
                           text => 'Result',
-                          help => 'Course_Self_Enrollment'});
+                          help => 'Course_Approve_Selfenroll'});
                 $bread_crumbs_component = 'Enrollment result';
             }
             $args = { bread_crumbs           => $brcrum,
                       bread_crumbs_component => $bread_crumbs_component};
             $r->print(&header(undef,$args));
-            my $cid = $env{'request.course.id'};
-            my $cdom = $env{'course.'.$cid.'.domain'};
-            my $cnum = $env{'course.'.$cid.'.num'};
             my $coursedesc = $env{'course.'.$cid.'.description'};
             if (!exists($env{'form.state'})) {
                 $r->print('<h3>'.&mt('Pending enrollment requests').'</h3>'."\n");
@@ -6474,6 +6585,10 @@
     my $helpitem;
     if ($context eq 'course') {
         $helpitem = 'Course_User_Logs';
+    } elsif ($context eq 'domain') {
+        $helpitem = 'Domain_Role_Logs';
+    } elsif ($context eq 'author') {
+        $helpitem = 'Author_User_Logs';
     }
     push (@{$brcrum},
              {href => '/adm/createuser?action=changelogs',
@@ -8248,7 +8363,7 @@
     } else {
         unless (($context eq 'requestcrs') && ($srch->{'srchtype'} eq 'exact')) {
             my $domd_chk = &domdirectorysrch_check($srch);
-            if ($domd_chk ne 'ok') {
+            if (($domd_chk ne 'ok') && ($env{'form.action'} ne 'accesslogs')) {
                 my $instd_chk = &instdirectorysrch_check($srch);
                 $response .= '<span class="LC_warning">'.$domd_chk.'</span><br />';
                 if ($instd_chk eq 'ok') {
@@ -8599,7 +8714,7 @@
             if ($srch->{'srchin'} ne 'alc') {
                 $forcenewuser = 1;
                 my $cansrchinst = 0; 
-                if ($srch->{'srchdomain'}) {
+                if (($srch->{'srchdomain'}) && ($env{'form.action'} ne 'accesslogs')) {
                     my %domconfig = &Apache::lonnet::get_dom('configuration',['directorysrch'],$srch->{'srchdomain'});
                     if (ref($domconfig{'directorysrch'}) eq 'HASH') {
                         if ($domconfig{'directorysrch'}{'available'}) {


More information about the LON-CAPA-cvs mailing list