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

raeburn lon-capa-cvs-allow@mail.lon-capa.org
Wed, 16 Jul 2008 12:32:14 -0000


This is a MIME encoded message

--raeburn1216211534
Content-Type: text/plain

raeburn		Wed Jul 16 08:32:14 2008 EDT

  Modified files:              (Branch: version_2_7_X)
    /loncom/interface	loncreateuser.pm 
  Log:
  - backport 1.256.
  
  
--raeburn1216211534
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20080716083214.txt"

Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.249.2.3 loncom/interface/loncreateuser.pm:1.249.2.4
--- loncom/interface/loncreateuser.pm:1.249.2.3	Mon Jul 14 06:36:24 2008
+++ loncom/interface/loncreateuser.pm	Wed Jul 16 08:32:11 2008
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.249.2.3 2008/07/14 10:36:24 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.249.2.4 2008/07/16 12:32:11 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -3400,14 +3400,32 @@
     return -1;
 }
 ENDSCRIPT
+    my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+    my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+
     my $output = '<script type="text/javascript">'."\n".
                  $setsec_js."\n".$selfenroll_js."\n".
                  '</script>'."\n".
-                 '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n".
-                 '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n".
-                 &Apache::lonhtmlcommon::start_pick_box();
-    my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
-    my $cnum = $env{'course.'.$env{'request.course.id'},'.num'};
+                 '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n";
+    my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
+    if (ref($visactions) eq 'HASH') {
+        if ($visible) {
+            $output .= '<p>'.$visactions->{'vis'}.'</p>';
+        } else {
+            $output .= $visactions->{'miss'}.'<br />'.$visactions->{'yous'}.
+                       '<p>'.$visactions->{'gen'}.'<br />'.$visactions->{'coca'};
+            if (ref($vismsgs) eq 'ARRAY') {
+                $output .= '<br />'.$visactions->{'make'}.'<ul>';
+                foreach my $item (@{$vismsgs}) {
+                    $output .= '<li>'.$visactions->{$item}.'</li>';
+                }
+                $output .= '</ul>';
+            }
+            $output .= '</p>';
+        }
+    }
+    $output .= '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n".
+               &Apache::lonhtmlcommon::start_pick_box();
     if (ref($row) eq 'ARRAY') {
         foreach my $item (@{$row}) {
             my $title = $item; 
@@ -3559,6 +3577,128 @@
     return;
 }
 
+sub visible_in_cat {
+    my ($cdom,$cnum) = @_;
+    my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
+    my ($cathash,%settable,@vismsgs,$cansetvis);
+    my %visactions = &Apache::lonlocal::texthash(
+                   vis => 'Your course currently appears in the Course Catalog for this domain.',
+                   gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.',
+                   miss => 'Your course does not currently appear in the Course Catalog for this domain.',
+                   yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your course.',
+                   coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.',
+                   make => 'Make any changes to self-enrollment settings below, click "Save changes", then take action to include the course in the Catalog:',
+                   take => 'Take the following action to ensure the course appears in the Catalog:',
+                   dc_unhide  => 'Ask a domain coordinator to change the "Exclude from course catalog" setting.',
+                   dc_addinst => 'Ask a domain coordinator to enable display the catalog of "Official courses (with institutional codes)".',
+                   dc_instcode => 'Ask a domain coordinator to assign an institutional code (if this is an official course).',
+                   dc_catalog  => 'Ask a domain coordinator to enable or create at least one course category in the domain.',
+                   dc_categories => 'Ask a domain coordinator to create a hierarchy of categories and sub categories for courses in the domain.',
+                   dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',
+                   dc_addcat => 'Ask a domain coordinator to assign a category to the course.',
+    );
+    $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','<a href="/adm/parmset?action=crsenv">','</a>');
+    $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','<a href="/adm/parmset?action=crsenv">','</a>');
+    $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','<a href="/adm/parmset?action=crsenv">','</a>');
+    if (ref($domconf{'coursecategories'}) eq 'HASH') {
+        if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
+            $settable{'togglecats'} = 1;
+        }
+        if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
+            $settable{'categorize'} = 1;
+        }
+        $cathash = $domconf{'coursecategories'}{'cats'};
+    }
+    if ($settable{'togglecats'} && $settable{'categories'}) {
+        $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.');
+    } elsif ($settable{'togglecats'}) {
+        $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.');
+    } elsif ($settable{'categories'}) {
+        $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.');
+    } else {
+        $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.');
+    }
+
+    my %currsettings =
+        &Apache::lonnet::get('environment',['hidefromcat','categories','internal.coursecode'],
+                             $cdom,$cnum);
+    my $visible = 0;
+    if ($currsettings{'internal.coursecode'} ne '') {
+        if (ref($domconf{'coursecategories'}) eq 'HASH') {
+            $cathash = $domconf{'coursecategories'}{'cats'};
+            if (ref($cathash) eq 'HASH') {
+                if ($cathash->{'instcode::0'} eq '') {
+                    push(@vismsgs,'dc_addinst');
+                } else {
+                    $visible = 1;
+                }
+            } else {
+                $visible = 1;
+            }
+        } else {
+            $visible = 1;
+        }
+    } else {
+        if (ref($cathash) eq 'HASH') {
+            if ($cathash->{'instcode::0'} ne '') {
+                push(@vismsgs,'dc_instcode');
+            }
+        } else {
+            push(@vismsgs,'dc_instcode');
+        }
+    }
+    if ($currsettings{'categories'} ne '') {
+        my $cathash;
+        if (ref($domconf{'coursecategories'}) eq 'HASH') {
+            $cathash = $domconf{'coursecategories'}{'cats'};
+            if (ref($cathash) eq 'HASH') {
+                if (keys(%{$cathash}) == 0) {
+                    push(@vismsgs,'dc_catalog');
+                } elsif ((keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} ne '')) {
+                    push(@vismsgs,'dc_categories');
+                } else {
+                    my @currcategories = split('&',$currsettings{'categories'});
+                    my $matched = 0;
+                    foreach my $cat (@currcategories) {
+                        if ($cathash->{$cat} ne '') {
+                            $visible = 1;
+                            $matched = 1;
+                            last;
+                        }
+                    }
+                    if (!$matched) {
+                        if ($settable{'categories'}) {
+                            push(@vismsgs,'chgcat');
+                        } else {
+                            push(@vismsgs,'dc_chgcat');
+                        }
+                    }
+                }
+            }
+        }
+    } else {
+        if (ref($cathash) eq 'HASH') {
+            if ((keys(%{$cathash}) > 1) ||
+                (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) {
+                if ($settable{'categories'}) {
+                    push(@vismsgs,'addcat');
+                } else {
+                    push(@vismsgs,'dc_addcat');
+                }
+            }
+        }
+    }
+    if ($currsettings{'hidefromcat'} eq 'yes') {
+        $visible = 0;
+        if ($settable{'togglecats'}) {
+            unshift(@vismsgs,'unhide');
+        } else {
+            unshift(@vismsgs,'dc_unhide')
+        }
+    }
+    return ($visible,$cansetvis,\@vismsgs,\%visactions);
+}
+
 sub new_selfenroll_dom_row {
     my ($newdom,$num) = @_;
     my $domdesc = &Apache::lonnet::domain($newdom);
@@ -4717,6 +4857,21 @@
     } else {
         $r->print(&mt('No changes were made to the existing self-enrollment settings in this course.'));
     }
+    my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
+    if (ref($visactions) eq 'HASH') {
+        if (!$visible) {
+            $r->print('<br />'.$visactions->{'miss'}.'<br />'.$visactions->{'yous'}.
+                      '<br />');
+            if (ref($vismsgs) eq 'ARRAY') {
+                $r->print('<br />'.$visactions->{'take'}.'<ul>');
+                foreach my $item (@{$vismsgs}) {
+                    $r->print('<li>'.$visactions->{$item}.'</li>');
+                }
+                $r->print('</ul>');
+            }
+            $r->print($cansetvis);
+        }
+    }
     return;
 }
 
@@ -4726,8 +4881,8 @@
                 types        => 'Users allowed to self-enroll in this course',
                 registered   => 'Restrict self-enrollment to students officially registered for the course',
                 enroll_dates => 'Dates self-enrollment available',
-                access_dates => 'Course access dates for self-enrolled users',
-                section      => 'Section assigned to self-enrolled users',
+                access_dates => 'Course access dates assigned to self-enrolling users',
+                section      => 'Section assigned to self-enrolling users',
              );
     return (\@row,\%lt);
 }

--raeburn1216211534--