--- loncom/interface/loncreatecourse.pm	2010/04/13 21:19:15	1.137
+++ loncom/interface/loncreatecourse.pm	2013/07/15 16:13:21	1.149
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.137 2010/04/13 21:19:15 raeburn Exp $
+# $Id: loncreatecourse.pm,v 1.149 2013/07/15 16:13:21 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -93,6 +93,7 @@ sub print_course_creation_page {
         $crstype = 'Course';
     }
     my $defdom=$env{'request.role.domain'};
+    my %domdefaults = &Apache::lonnet::get_domain_defaults($defdom);
     my %host_servers = &Apache::lonnet::get_servers($defdom,'library');
     my $course_home = '<select name="course_home" size="1">'."\n";
     foreach my $server (sort(keys(%host_servers))) {
@@ -159,6 +160,8 @@ function validate(formname) {
                     'csli' => "a comma separated list of institutional section numbers, each separated by a colon from the (optional) corresponding section ID to be used in LON-CAPA e.g., 001:1,002:2",
                     'crcs' => "Crosslisted courses",
                     'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) sectionID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:zol2",
+                    'ccre' => "Course credits",
+                    'cred' => "the number of institutional credits students will earn by completing this course",
                     'crco' => "Course Content",
                     'cncr' => "Completely new course",
                     'cecr' => "Clone an existing course", 
@@ -277,7 +280,7 @@ END
 					    'Create_Courses');
     $r->print($start_page.$crumbs);
 
-    $r->print('<form action="/adm/createcourse" method="post" name="ccrs"><div class="LC_createcourse">'
+    $r->print('<form action="/adm/createcourse" method="post" name="ccrs" action=""><div class="LC_createcourse">'
              .&Apache::lonhtmlcommon::start_pick_box()
 
              .&Apache::lonhtmlcommon::row_headline()
@@ -299,7 +302,7 @@ END
              .&Apache::lonhtmlcommon::row_closure()
 
              .&Apache::lonhtmlcommon::row_title($lt{'ctit'})
-             .'<input type="text" size="50" name="title" />'
+             .'<input type="text" size="80" name="title" />'
              .&Apache::lonhtmlcommon::row_closure()
 
              .&Apache::lonhtmlcommon::row_title($lt{'chsr'})
@@ -313,7 +316,9 @@ END
     if ($crstype eq 'Course') {
         $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'iinf'}.'</h3>'
-                 .$lt{'stat'}
+                 .$lt{'stat'}.' '
+                 .&mt('Default credits can also be specified, if different from the domain defaults (official courses: [_1]; unofficial courses: [_2]).',
+                      $domdefaults{'officialcredits'},$domdefaults{'unofficialcredits'})
                  .&Apache::lonhtmlcommon::row_closure()
 
                  .&Apache::lonhtmlcommon::row_title($lt{'ccod'})
@@ -331,8 +336,14 @@ END
                  .'<br />('.$lt{'cscs'}.')'
                  .&Apache::lonhtmlcommon::row_closure()
         );
+        if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) {
+            $r->print(&Apache::lonhtmlcommon::row_title($lt{'ccre'})
+                     .'<input type="text" size="3" name="defaultcredits" />'
+                     .'<br />('.$lt{'cred'}.')'
+                     .&Apache::lonhtmlcommon::row_closure()
+            );
+        }
     }
-
     # Table: New Course / Clone Course
     $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'crco'}.'</h3>'
@@ -359,15 +370,21 @@ END
                  .'<label>'
                  .'<input type="radio" name="firstres" value="blank" />'.$lt{'blnk'}
                  .'</label>'
-                 .'&nbsp;'
-                 .'<label>'
+                 .'&nbsp;');
+    if ($crstype eq 'Community') {
+        $r->print('<label>'
+                 .'<input type="radio" name="firstres" value="nav" checked="checked" />'.$lt{'navi'}
+                 .'</label>');
+    } else {
+        $r->print('<label>'
                  .'<input type="radio" name="firstres" value="syl" checked="checked" />'.$lt{'sllb'}
                  .'</label>'
                  .'&nbsp;'
                  .'<label>'
                  .'<input type="radio" name="firstres" value="nav" />'.$lt{'navi'}
-                 .'</label>'
-                 .'<br />('.$lt{'stco'}.')'
+                 .'</label>');
+    }
+    $r->print('<br />('.$lt{'stco'}.')'
                  .&Apache::lonhtmlcommon::row_closure(1)
                  .&Apache::lonhtmlcommon::end_pick_box()
 
@@ -399,7 +416,7 @@ END
                  .' <input type="text" size="5" name="dateshift" value="365" />'
                  .&Apache::lonhtmlcommon::row_closure()
                  .&Apache::lonhtmlcommon::row_headline()
-                 .$lt{'asov'}
+                 .'<span class="LC_info">'.$lt{'asov'}.'</span>'
                  .&Apache::lonhtmlcommon::row_closure(1)
                  .&Apache::lonhtmlcommon::end_pick_box()
                  .'</td>'
@@ -531,7 +548,7 @@ END
 <p>
 <input type="hidden" name="prevphase" value="courseone" />
 <input type="hidden" name="phase" value="coursetwo" />
-<input type="button" onClick="verify_message(this.form)" value="'.$lt{'opco'}.'" />'
+<input type="button" onclick="verify_message(this.form)" value="'.$lt{'opco'}.'" />'
         );
     } elsif ($crstype eq 'Community') {
         $r->print('
@@ -554,6 +571,8 @@ sub create_course {
     my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'});
     my $crstype = 'Community';
     my ($enrollstart,$enrollend,$startaccess,$endaccess);
+    my %domdefaults = 
+        &Apache::lonnet::get_domain_defaults($env{'request.role.domain'});
 
     if ($env{'form.phase'} eq 'coursetwo') {
         $crstype='Course';
@@ -629,6 +648,11 @@ sub create_course {
                firstres => $env{'form.firstres'}
                };
 
+    if (($crstype eq 'Course') && 
+        ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'})) {
+        $args->{'defaultcredits'} = $env{'form.defaultcredits'};
+    }
+
     #
     # Verify data
     #
@@ -683,7 +707,7 @@ sub create_course {
 		      '<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">'.&mt('Manage Access Keys').'</a></p>');
 	}
         # Flush the course logs so reverse user roles immediately updated
-	&Apache::lonnet::flushcourselogs();
+	$r->register_cleanup(\&Apache::lonnet::flushcourselogs);
 	$r->print('<p>'.&mt('Roles will be active at next login').'.</p>');
     }
     $r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'.
@@ -699,62 +723,79 @@ sub print_intro_page {
     my $end_page =
         &Apache::loncommon::end_page();
     my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities'));
-    my @choices = ({ internal_name     => 'courseone',
-                     name              => &mt('Create a single course'),
-                     short_description => &mt('Create a new course by completing an online form.'),
-                   });
-    if ($show_all_choices) {
-        push(@choices,{ internal_name     => 'groupone',
-                        name              => &mt('Create a single community'),
-                        short_description =>
-    &mt('Create a new collaborative community by completing an online form.'),
-                      },
-                      { internal_name     => 'batchone',
-                        name              => &mt('Create courses/communities by uploading an attributes file'),
-                        short_description =>
-    &mt('Upload an attributes file containing specifications for one or more courses or communities in XML format.'),
-                        help => 'Batch_Creation',
-                      },
-                      { internal_name     => 'requestdisplay',
-                        name              => &mt('Approve or reject requests'),
-                        short_description =>
-    &mt('Display course and community creation requests submitted by authorized users, held pending approval by a Domain Coordinator.'),
-                      },
-                      { internal_name     => 'pendingdisplay',
-                        name              => &mt('Display official course requests'),
-                        short_description =>
-    &mt('Display official course requests submitted by authorized users, held pending validation of instructor status.'),
-                      },
-                      { internal_name     => 'creationlog',
-                        name              => &mt('View creation log'),
-                        short_description =>
-    &mt('Display information about when, how and by whom courses and communities were created in this domain.'),
-                      });
-    } else {
-        push(@choices,{ internal_name     => 'batchone',
-                        name              => &mt('Create courses by uploading an attributes file'),
-                        short_description =>
-    &mt('Upload an attributes file containing specifications for one or more courses in XML format.'),
-                        help => 'Batch_Creation',
-                      });
-    }
-    my $options;
-    foreach my $choice (@choices) {
-        $options .='    <h3><a href="/adm/createcourse?phase='.
-            $choice->{'internal_name'}.'" >'.
-            $choice->{'name'}.'</a>';
-        if (exists($choice->{'help'})) {
-            $options .= &Apache::loncommon::help_open_topic($choice->{'help'});
-        }
-        $options .= "</h3>\n".'    '.('&nbsp;'x8).$choice->{'short_description'}.
-            "\n";
-    }
-    $r->print(<<ENDDOCUMENT);
-$start_page
-$crumbs
-$options
-$end_page
-ENDDOCUMENT
+
+    # Create menu
+    my @menu;
+    @menu =
+       ({ categorytitle => 'Course/Community Creation',
+       items => [
+          {
+               linktext => 'Create a single course',
+               url => '/adm/createcourse?phase=courseone',
+               permission => 1,
+               #help => '',
+               icon => 'crsnew.png',
+               linktitle => 'Create a new course by completing an online form.'
+          },
+          {
+               linktext => 'Create a single community',
+               url => '/adm/createcourse?phase=groupone',
+               permission => $show_all_choices,
+               #help => '',
+               icon => 'crsnew.png',
+               linktitle => 'Create a new collaborative community by completing an online form.'
+          },
+          {
+               linktext => 'Create courses/communities by uploading an attributes file',
+               url => '/adm/createcourse?phase=batchone',
+               permission => 1,
+               help => 'Batch_Creation',
+               icon => 'uplcrs.png',
+               linktitle => 'Upload an attributes file containing specifications for one or more courses or communities in XML format.'
+          },
+       ]
+       },
+       { categorytitle => 'Course/Community Requests',
+       items => [
+           {
+               linktext => 'Approve or reject requests',
+               url => '/adm/createcourse?phase=requestdisplay',
+               permission => $show_all_choices,
+               #help => '',
+               icon => 'rcrs.png',
+               linktitle => 'Display course and community creation requests submitted by authorized users, held pending approval by a Domain Coordinator.'
+           },
+           {
+               linktext => 'View pending official course requests',
+               url => '/adm/createcourse?phase=pendingdisplay',
+               permission => $show_all_choices,
+               #help => '',
+               icon => 'edit-find.png',
+               alttext => '',
+               linktitle => 'Display official course requests submitted by authorized users, held pending validation of instructor status.'
+           },
+       ]
+       },
+       { categorytitle => 'Administration',
+       items => [
+           {
+               linktext => 'View creation log',
+               url => '/adm/createcourse?phase=creationlog',
+               permission => $show_all_choices,
+               #help => '',
+               icon => 'document-properties.png',
+               linktitle => 'Display information about when, how and by whom courses and communities were created in this domain.'
+           },
+       ]
+       },
+       );
+
+    $r->print(
+        $start_page
+       .$crumbs
+       .&Apache::lonhtmlcommon::generate_menu(@menu)
+       .$end_page
+    );
 }
 
 sub upload_batchfile {
@@ -771,7 +812,7 @@ sub upload_batchfile {
               '<input type="file" name="coursecreatorxml" />'.
               '<input type="hidden" name="phase" value="batchtwo" /><br /><br />'.
               '<input type="submit" name="batchsubmit" '.
-              'value="Create Courses/Communities" /></form>');
+              'value="'.&mt('Create Courses/Communities').'" /></form>');
     $r->print($end_page);
     return;
 }
@@ -909,7 +950,7 @@ sub print_creation_logs {
     if ($numtitles) {
         if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'unofficial')) {
             $instcodefilter = &instcode_srchstr($dom,$numtitles);
-                &Apache::courseclassifier::instcode_search_str($dom,$numtitles);
+                &Apache::courseclassifier::instcode_search_str($dom,$numtitles,\@codetitles);
             if ($curr{'type'} eq 'official') {
                 $regexpok = 1;
             } else {