--- loncom/interface/loncreatecourse.pm	2009/10/02 18:31:36	1.128
+++ loncom/interface/loncreatecourse.pm	2010/08/28 20:18:17	1.142
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.128 2009/10/02 18:31:36 raeburn Exp $
+# $Id: loncreatecourse.pm,v 1.142 2010/08/28 20:18:17 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -61,8 +61,6 @@ described at http://www.lon-capa.org.
 
 =item creation_display_filter()
 
-=item course_types()
-
 =item context_names()
 
 =item instcode_srchstr()
@@ -111,15 +109,15 @@ sub print_course_creation_page {
 		     &Apache::loncommon::selectcourse_link
 	     ('ccrs','clonecourse','clonedomain',undef,undef,undef,$crstype);
     my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'});
-    my ($enroll_table,$access_table,$krbdef,$krbdefdom,$krbform,$intform,$locform,
+    my ($enroll_table,$krbdef,$krbdefdom,$krbform,$intform,$locform,
         $javascript_validations);
+    my $starttime = time;
+    my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
+    my $access_table = &Apache::lonuserutils::date_setting_table($starttime,
+                                             $endtime,'create_defaultdates');
     if ($crstype eq 'Course') {
-        my $starttime = time;
-        my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
         $enroll_table = &Apache::lonuserutils::date_setting_table($starttime,
                                               $endtime,'create_enrolldates');
-        $access_table = &Apache::lonuserutils::date_setting_table($starttime,
-                                             $endtime,'create_defaultdates');
         ($krbdef,$krbdefdom) =
         &Apache::loncommon::get_kerberos_defaults($defdom);
         $javascript_validations=&Apache::lonuserutils::javascript_validations(
@@ -172,7 +170,7 @@ function validate(formname) {
                     'stco' => "standard courses only",
                     'blnk' => "Blank",
                     'sllb' => "Syllabus",
-                    'navi' => "Navigate Contents",
+                    'navi' => "Course Contents",
                     'cid'  => "Course ID",
                     'dmn'  => "Domain",
                     'dsh'  => "Date Shift",
@@ -190,8 +188,6 @@ function validate(formname) {
                     'dsuc' => "Disable student use of chat rooms",
                     'acco' => "Access Control",
                     'snak' => "Students need access key to enter course",
-		    'kaut' => 
-		    'Key authority (<tt>id@domain</tt>) if other than course',
                     'ow'   => "Course Owner",
                     'cc'   => "(will be assigned Course Coordinator role)",
                     'user' => "Username",
@@ -204,8 +200,8 @@ function validate(formname) {
                     'dacu' => "Duration of automated classlist updates",
                     'dads' => 'Default Access Dates for Students',
                     'dacc' => "Default start and end dates for student access",
-                    'psam' => "Please select the Authentication mechanism",
-                    'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process",
+                    'psam' => "Authentication mechanism",
+                    'pcda' => "Default authentication method for new users added to this domain by the automated enrollment process",
                     'nech' => "Notification of enrollment changes",
                     'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?",
                     'ndcl' => "Notification to domain coordinator via LON-CAPA message when enrollment changes occur during the automated update?",
@@ -213,31 +209,36 @@ function validate(formname) {
 		    'rshm' => 'Resource Space Home',
                     'cgrs' => "Course Group Settings",
                     'cgrq' => 'Set a quota for the total disk space available for storage of course group portfolio files',
-                    'opco' => "Open Course",
-                    'ginf' => "Community Information",
-                    'gtit' => "Community Title",
-                    'ghsr' => "Community Home Server",
-                    'gidn' => "Community ID/Number",
-                    'grco' => "Community Content",
-                    'cngr' => "Completely new community",
-                    'cegr' => "Clone an existing community",
-                    'sagr' => "Do NOT generate as standard community",
-                    'stgo' => "standard communities only",
-                    'sgpf' => "Set community policy feedback to Coordinator",
-                    'scfg' => "Set content feedback to Coordinator",
-                    'dmrd' => "Disable member resource discussion",
-                    'dmuc' => "Disable member use of chat rooms",
-                    'mnak' => "Members need access key to enter community",
-                    'kaug' =>
-                    'Key authority (<tt>id@domain</tt>) if other than community',
-                    'co'   => "Community Owner", 
-                    'gc'   => "(will be assigned Coordinator role)",
-                    'gid'  => "Community ID",
-                    'crgr' => "Create Community",
-                    'grts' => "Community Group Settings",
-                    'grtq' => "Set a quota for the total disk space available for storage of community group portfolio files.",
-
-				       );
+                    'opco' => 'Open Course',
+                    'opcm' => 'Open Community',
+	       );
+    $lt{'kaut'} = &mt('Key authority ([_1]id:domain[_2]) if other than course','<tt>','</tt>');
+
+    if ($crstype eq 'Community') {
+        $lt{'cinf'} = &mt('Community Information');
+        $lt{'ctit'} = &mt('Community Title');
+        $lt{'chsr'} = &mt('Community Home Server');
+        $lt{'cidn'} = &mt('Community ID/Number');
+        $lt{'crco'} = &mt('Community Content');
+        $lt{'cncr'} = &mt('Completely new community');
+        $lt{'cecr'} = &mt('Clone an existing community');
+        $lt{'sacr'} = &mt('Do NOT generate as standard community');
+        $lt{'stco'} = &mt('standard communities only');
+        $lt{'navi'} = &mt('Community Contents');
+        $lt{'cid'}  = &mt('Community ID');
+        $lt{'scpf'} = &mt('Set community policy feedback to Coordinator');
+        $lt{'scfc'} = &mt('Set content feedback to Coordinator');
+        $lt{'dsrd'} = &mt('Disable member resource discussion');
+        $lt{'dsuc'} = &mt('Disable member use of chat rooms');
+        $lt{'dads'} = &mt('Default Access Dates for Members');
+        $lt{'dacc'} = &mt('Default start and end dates for member access');
+        $lt{'snak'} = &mt('Members need access key to enter course');
+        $lt{'kaut'} = &mt('Key authority ([_1]id:domain[_2]) if other than community','<tt>','</tt>');
+        $lt{'ow'}  = &mt('Community Owner');
+        $lt{'cc'}  = &mt('(will be assigned Coordinator role)');
+        $lt{'cgrs'} = &mt('Community Group Settings');
+        $lt{'cgrq'} = &mt('Set a quota for the total disk space available for storage of community group portfolio files');
+    }
     my $js = <<END;
 <script type="text/javascript">
 var editbrowser = null;
@@ -276,41 +277,41 @@ END
 					    'Create_Courses');
     $r->print($start_page.$crumbs);
 
-    if ($crstype eq 'Course') {
-        $r->print('<form action="/adm/createcourse" method="post" name="ccrs"><div class="LC_createcourse">'
-                 .&Apache::lonhtmlcommon::start_pick_box()
-
-                 .&Apache::lonhtmlcommon::row_headline()
-                 .'<h3>'.$lt{'ow'}.'&nbsp;'.$lt{'cc'}.'</h3>'
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_title($lt{'user'})
-                 .'<input type="text" size="15" name="ccuname" />'
-                 .&Apache::loncommon::studentbrowser_javascript()
-                 .&Apache::loncommon::selectstudent_link('ccrs','ccuname','ccdomain')
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value")
-                 .$domform
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_headline()
-                 .'<h3>'.$lt{'cinf'}.'</h3>'
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_title($lt{'ctit'})
-                 .'<input type="text" size="50" name="title" />'
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_title($lt{'chsr'})
-                 .$course_home
-                 .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_title($lt{'cidn'}.' ('.$lt{'opt'}.')')
-                 .'<input type="text" size="30" name="crsid" />'
-                 .&Apache::lonhtmlcommon::row_closure()
+    $r->print('<form action="/adm/createcourse" method="post" name="ccrs"><div class="LC_createcourse">'
+             .&Apache::lonhtmlcommon::start_pick_box()
 
-                 .&Apache::lonhtmlcommon::row_headline()
+             .&Apache::lonhtmlcommon::row_headline()
+             .'<h3>'.$lt{'ow'}.'&nbsp;'.$lt{'cc'}.'</h3>'
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_title($lt{'user'})
+             .'<input type="text" size="15" name="ccuname" />'
+             .&Apache::loncommon::studentbrowser_javascript()
+             .&Apache::loncommon::selectstudent_link('ccrs','ccuname','ccdomain')
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value")
+             .$domform
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_headline()
+             .'<h3>'.$lt{'cinf'}.'</h3>'
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_title($lt{'ctit'})
+             .'<input type="text" size="50" name="title" />'
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_title($lt{'chsr'})
+             .$course_home
+             .&Apache::lonhtmlcommon::row_closure()
+
+             .&Apache::lonhtmlcommon::row_title($lt{'cidn'}.' ('.$lt{'opt'}.')')
+             .'<input type="text" size="30" name="crsid" />'
+             .&Apache::lonhtmlcommon::row_closure()
+    );
+    if ($crstype eq 'Course') {
+        $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'iinf'}.'</h3>'
                  .$lt{'stat'}
                  .&Apache::lonhtmlcommon::row_closure()
@@ -330,9 +331,10 @@ END
                  .'<br />('.$lt{'cscs'}.')'
                  .&Apache::lonhtmlcommon::row_closure()
         );
+    }
 
-        # Table: New Course / Clone Course
-        $r->print(&Apache::lonhtmlcommon::row_headline()
+    # Table: New Course / Clone Course
+    $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'crco'}.'</h3>'
                  .&Apache::loncommon::start_data_table()
                  .&Apache::loncommon::start_data_table_header_row()
@@ -357,15 +359,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()
 
@@ -404,17 +412,17 @@ END
                  .&Apache::loncommon::end_data_table_row()
                  .&Apache::loncommon::end_data_table()
                  .&Apache::lonhtmlcommon::row_closure()
-        );
+    );
 
-        $r->print(&Apache::lonhtmlcommon::row_headline()
+    $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'dads'}.'</h3>'
                  .&Apache::lonhtmlcommon::row_closure()
                  .&Apache::lonhtmlcommon::row_title($lt{'dacc'})
                  .$access_table
                  .&Apache::lonhtmlcommon::row_closure()
-        );
+    );
 
-        $r->print(&Apache::lonhtmlcommon::row_headline()
+    $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'assp'}.'</h3>'
                  .&Apache::lonhtmlcommon::row_closure()
 
@@ -465,8 +473,9 @@ END
                  .&Apache::lonhtmlcommon::row_title($lt{'rshm'})
                  .'<input type="text" name="reshome" size="30" value="/res/'.$defdom.'/" />'
                  .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_headline()
+    );
+    if ($crstype eq 'Course') {
+        $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'aens'}.'</h3>'
                  .&Apache::lonhtmlcommon::row_closure()
 
@@ -509,8 +518,10 @@ END
                  .'<input type="radio" name="showphotos" value="0" checked="checked" />'.$lt{'no'}
                  .'</label> '
                  .&Apache::lonhtmlcommon::row_closure()
-
-                 .&Apache::lonhtmlcommon::row_headline()
+        );
+    }
+ 
+    $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'cgrs'}.'</h3>'
                  .&Apache::lonhtmlcommon::row_closure()
 
@@ -519,149 +530,26 @@ END
                  .&Apache::lonhtmlcommon::row_closure(1)
 
                  .&Apache::lonhtmlcommon::end_pick_box()
-        );
-        $r->print(<<ENDDOCUMENT);
-</div>
+                 .'</div>'
+    );
+    if ($crstype eq 'Course') {
+        $r->print('
 <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'}" />
-</p>
-</form>
-ENDDOCUMENT
-
+<input type="button" onClick="verify_message(this.form)" value="'.$lt{'opco'}.'" />'
+        );
     } elsif ($crstype eq 'Community') {
-        $r->print(<<ENDDOCUMENT);
-<form action="/adm/createcourse" method="post" name="ccrs">
-<h2>$lt{'co'}&nbsp;$lt{'gc'}</h2>
-<p>
-<label>
-    <b>$lt{'user'}:</b> <input type="text" size="15" name="ccuname" />
-</label>
-</p><p>
-<label>
-    <b>$lt{'dmn'}:</b> $domform
-</label>
-</p>
-<h2>$lt{'ginf'}</h2>
-<p>
-<label><b>$lt{'gtit'}:</b>
-<input type="text" size="50" name="title" /></label>
-</p><p>
-<label>
-    <b>$lt{'ghsr'}:</b>$course_home
-</label>
-</p><p>
-<label>
-    <b>$lt{'gidn'} ($lt{'opt'})</b>
-    <input type="text" size="30" name="crsid" />
-</label>
-</p>
-<h2>$lt{'grco'}</h2>
-<table border="2">
-<tr><th>$lt{'cngr'}</th><th>$lt{'cegr'}</th></tr>
-<tr><td>
-<p>
-<label>
-    <b>$lt{'map'}:</b>
-    <input type="text" size="50" name="topmap" />
-</label>
-<a href="javascript:openbrowser('ccrs','topmap')">$lt{'smap'}</a>
-</p><p>
-<label for="nonstd"><b>$lt{'sagr'}</b></label>
-<br />
-($lt{'ocik'}):
-<input id="nonstd" type="checkbox" name="nonstandard" />
-</p><p>
-<b>$lt{'fres'}</b><br />($lt{'stgo'}):
-<label>
-    <input type="radio" name="firstres" value="blank" />$lt{'blnk'}
-</label>
-&nbsp;
-<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>
-</p>
-</td><td>
-<label>
-    $lt{'gid'}: <input type="text" size="25" name="clonecourse" value="" />
-</label>
-<br />
-<label>
-    $lt{'dmn'}: $cloneform
-</label>
-<br />
- <label><input type="radio" name="datemode" value="delete" /> $lt{'ncd'}</label><br />
- <label><input type="radio" name="datemode" value="preserve" /> $lt{'prd'}</label><br />
- <label><input type="radio" name="datemode" value="shift" checked="checked" /> $lt{'shd'}</label>
- <input type="text" size="5" name="dateshift" value="365" /><br />&nbsp;<br />
-$lt{'asov'}.
-</td></tr>
-</table>
-</p>
-<p>
-<h2>$lt{'mssg'}</h2>
-<p>
-<label>
-    <b>$lt{'sgpf'}: </b>
-    <input type="checkbox" name="setpolicy" checked="checked" />
-</label>
-<br />
-<label>
-    <b>$lt{'scfg'}: </b>
-    <input type="checkbox" name="setcontent" checked="checked" />
-</label>
-</p>
-<h2>$lt{'cmmn'}</h2>
-<p>
-<label>
-    <b>$lt{'dmrd'}: </b>
-    <input type="checkbox" name="disresdis" />
-</label>
-<br />
-<label>
-    <b>$lt{'dmuc'}: </b>
-    <input type="checkbox" name="disablechat" />
-</label>
-</p>
-<h2>$lt{'acco'}</h2>
-<p>
-<label>
-    <b>$lt{'mnak'}: </b>
-    <input type="checkbox" name="setkeys" />
-</label>
-<br />
-<label>
-    <b>$lt{'kaug'}: </b>
-    <input type="text" size="30" name="keyauth" />
-</label>
-</p>
-<h2>$lt{'rshm'}</h2>
-<p>
-<label>
-    <b>$lt{'rshm'}: </b>
-    <input type="text" name="reshome" size="30" value="/res/$defdom/" />
-</label>
-</p>
-<h2>$lt{'grts'}</h2>
-<p>
-$lt{'grtq'}
-<input type="text" name="crsquota" value="20" />Mb
-</p>
-<hr />
+        $r->print('
 <p>
 <input type="hidden" name="prevphase" value="groupone" />
 <input type="hidden" name="phase" value="grouptwo" />
-<input type="button" onClick="validate(this.form)" value="$lt{'crgr'}" />
-</p>
-</form>
-ENDDOCUMENT
+<input type="submit" value="'.$lt{'opcm'}.'" />
+</p>'
+        );
     }
-    $r->print($end_page);
+    $r->print('</form>'.
+              $end_page);
 }
 
 # ====================================================== Phase two: make course
@@ -787,10 +675,14 @@ sub create_course {
 	# Make the requested user a course coordinator or group coordinator
         #
 	if (($ccdomain) && ($ccuname)) {
+            my $ccrole = 'cc';
+            if ($crstype eq 'Community') {
+                $ccrole = 'co';
+            }    
 	    $r->print(&mt('Assigning role of '.$crstype.' Coordinator to [_1]:',
 			 ,'<i>'.$ccuname.':'.$ccdomain.'</i>')
 		      .&Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,
-						  'cc','','','','','createcourse').'<p>');
+						  $ccrole,'','','','','createcourse').'<p>');
 	}
 	if ($env{'form.setkeys'}) {
 	    $r->print(
@@ -806,7 +698,7 @@ sub create_course {
 }
 
 sub print_intro_page {
-    my $r = shift;
+    my ($r,$show_all_choices) = @_;
     my $start_page =
         &Apache::loncommon::start_page('Create a New Course or Community');
     my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses');
@@ -814,51 +706,78 @@ sub print_intro_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.'),
-                 },
-                   { 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 course requests'),
-                     short_description =>
-    &mt('Display course creation requests submitted by authorized users, held pending approval by a Domain Coordinator.'),
-                   },
-                   { internal_name => 'creationlog',
-                     name => &mt('View course creation log'),
-                     short_description =>
-    &mt('Display information about when, how and by whom courses were created in this domain.'),
-                   },
+    # 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
     );
-    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
 }
 
 sub upload_batchfile {
@@ -875,7 +794,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;
 }
@@ -926,15 +845,16 @@ sub courserequestbrowser_javascript {
 <script type="text/javascript">
 // <![CDATA[
 var steditbrowser;
-function opencoursereqdisplay(cdom,cnum) {
+function opencoursereqdisplay(cdom,cnum,queue) {
     var url = '/adm/requestcourse?action=display';
-    url += '&showdom='+cdom+'&cnum='+cnum;
+    url += '&showdom='+cdom+'&cnum='+cnum+'&queue='+queue;
     var title = 'Course_Request_Browser';
     var options = 'scrollbars=1,resizable=1,menubar=0';
     options += ',width=700,height=600';
     var stdeditbrowser = open(url,title,options,'1');
     stdeditbrowser.focus();
 }
+
 // ]]>
 </script>
 ENDREQBRW
@@ -962,8 +882,6 @@ sub print_creation_logs {
     foreach my $item ('show','page','type','context') {
         $curr{$item} = $env{'form.'.$item};
     }
-    my $createdafter = &Apache::lonhtmlcommon::get_date_from_form('created_after_date');
-    my $createdbefore = &Apache::lonhtmlcommon::get_date_from_form('created_before_date');
     $curr{'created_after_date'} = &Apache::lonhtmlcommon::get_date_from_form('created_after_date');
     $curr{'created_before_date'} = &Apache::lonhtmlcommon::get_date_from_form('created_before_date');
     foreach my $key (keys(%defaults)) {
@@ -971,22 +889,21 @@ sub print_creation_logs {
             $curr{$key} = $defaults{$key};
         }
     }
-    my (%whodunit,$version);
-    ($version) = ($r->dir_config('lonVersion') =~ /^([\d\.]+)\-/);
-    $r->print(&creation_display_filter($formname,\%curr,$version));
+    my %whodunit;
+    $r->print(&creation_display_filter($formname,\%curr));
     my $showntablehdr = 0;
     my $tablehdr = &Apache::loncommon::start_data_table().
                    &Apache::loncommon::start_data_table_header_row().
                    '<th>&nbsp;</th><th>'.&mt('Creation Date').'</th>'.
                    '<th>'.&mt('Creator').'</th><th>'.&mt('Description').'</th>'.
-                   '<th>'.&mt('Course Owner(s)').'</th>';
+                   '<th>'.&mt('Owner(s)').'</th>';
     if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'any')) {
        $tablehdr .= '<th>'.&mt('Institutional Code').'</th>';
     }
     if ($curr{'type'} eq 'any') { 
         $tablehdr .= '<th>'.&mt('Course Type').'</th>';
     }
-    if ($curr{'context'} eq 'any')
+    if ($curr{'context'} eq 'any') {
         $tablehdr .= '<th>'.&mt('Creation Context').'</th>';
     }
     $tablehdr .= &Apache::loncommon::end_data_table_header_row();
@@ -1015,7 +932,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 {
@@ -1038,6 +955,12 @@ sub print_creation_logs {
                                       undef,undef,undef,$curr{'created_before_date'},
                                       $curr{'created_after_date'},$creationcontext);
     foreach my $cid (sort { $courses{$b}{'created'}<=>$courses{$a}{'created'} } (keys(%courses))) {
+        if ($curr{'show'} ne &mt('all')) {
+            if ($count >= $curr{'page'} * $curr{'show'}) {
+                $more_records = 1;
+                last;
+            }
+        }
         $count ++;
         next if ($count < $minshown);
         if (!$showntablehdr) {
@@ -1157,7 +1080,7 @@ ENDSCRIPT
 }
 
 sub creation_display_filter {
-    my ($formname,$curr,$version) = @_;
+    my ($formname,$curr) = @_;
     my $nolink = 1;
     my ($contexts,$contextnames) = &context_names();
     my $output = '<table><tr><td valign="top">'.
@@ -1173,14 +1096,14 @@ sub creation_display_filter {
         &Apache::lonhtmlcommon::date_setter($formname,'created_before_date',
                                             $curr->{'created_before_date'},undef,
                                             undef,undef,undef,undef,undef,undef,$nolink);
-    $output .= '<td valign="top"><b>'.&mt('Window during which course was created:').'</b><br />'.
+    $output .= '<td valign="top"><b>'.&mt('Window during which course/community was created:').'</b><br />'.
                '<table><tr><td>'.&mt('After:').
                '</td><td>'.$startform.'</td></tr>'.
                '<tr><td>'.&mt('Before:').'</td>'.
                '<td>'.$endform.'</td></tr></table>'.
                '</td>'.
                '<td>&nbsp;&nbsp;</td>';
-    my ($types,$typenames) = &course_types();
+    my ($types,$typenames) = &Apache::loncommon::course_types();
     if (ref($types) eq 'ARRAY') {
         if (@{$types} > 1) {
             $output .= '<td valign="top"><b>'.
@@ -1228,35 +1151,17 @@ sub creation_display_filter {
     # Update Display button
     $output .= '<p>'.
                '<input type="submit" value="'.&mt('Update Display').'" />'.
-               '</p>';
-
-    # Server version info
-    $output .= '<p class="LC_info">'.
-               &mt('Only courses created from servers running LON-CAPA [_1] or later are displayed.','2.9.0');
-    if ($version) {
-        $output .= ' '.&mt('This LON-CAPA server is version [_1]',$version);
-    }
-    $output .= '</p><hr />';
+               '</p><hr />';
     return $output;
 }
 
-sub course_types {
-    my @types = qw(official unofficial community);
-    my %typename = (
-                         official   => 'Official course',
-                         unofficial => 'Unofficial course',
-                         community  => 'Community',
-                   );
-    return (\@types,\%typename);
-}
-
 sub context_names {
     my @contexts = qw(auto web dc_create requestcourses);
     my %contextnames = 
         &Apache::lonlocal::texthash (
                         auto           => 'Automated creation from batch file',
                         web            => 'Batch creation from uploaded file',
-                        dc_create      => 'Single course created by Domain Coordinator', 
+                        dc_create      => 'Course or community created by Dom. Coord.', 
                         requestcourses => 'Processing of submitted course request',
         );
     return (\@contexts,\%contextnames);
@@ -1316,6 +1221,13 @@ sub handler {
        return OK;
     }
 
+    my $show_all_choices = 0;
+    my $primary_rev = &Apache::lonnet::get_server_loncaparev($env{'request.role.domain'});
+    if (($primary_rev ne 'refused') && ($primary_rev ne 'error') &&
+        ($primary_rev ne 'unknown_cmd') && ($primary_rev ne 'no_such_host')) {
+        $show_all_choices = 1;
+    }
+
     if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
        &Apache::loncommon::content_type($r,'text/html');
        $r->send_http_header;
@@ -1328,7 +1240,8 @@ sub handler {
             text=>"Creation Options",
             faq=>79,bug=>'Dom Coord Interface',});
        if (($env{'form.phase'} eq 'coursetwo') ||
-           ($env{'form.phase'} eq 'grouptwo')) {
+           (($env{'form.phase'} eq 'grouptwo') && 
+            ($show_all_choices))) { 
            &Apache::lonhtmlcommon::add_breadcrumb
                  ({href=>"/adm/createcourse?phase=$env{'form.prevphase'}",
                    text=>&mt('[_1] Creation Settings',),
@@ -1339,7 +1252,8 @@ sub handler {
                    faq=>9,bug=>'Dom Coord Interface',});
            &create_course($r);
        } elsif (($env{'form.phase'} eq 'courseone') || 
-                ($env{'form.phase'} eq 'groupone')) {
+                (($env{'form.phase'} eq 'groupone') && 
+                ($show_all_choices))) {
            &Apache::lonhtmlcommon::add_breadcrumb
                  ({href=>"/adm/createcourse?phase=$env{'form.phase'}",
                    text=>&mt('[_1] Creation Settings',),
@@ -1361,7 +1275,7 @@ sub handler {
                    text=>"Creation Outcome",
                    faq=>9,bug=>'Dom Coord Interface',});
            &process_batchfile($r);
-       } elsif ($env{'form.phase'} eq 'requestdisplay') {
+       } elsif (($env{'form.phase'} eq 'requestdisplay') && ($show_all_choices)) {
            &Apache::lonhtmlcommon::add_breadcrumb
                  ({href=>"/adm/createcourse?phase=$env{'form.phase'}",
                    text=>&mt('[_1] Display Request Queue',),
@@ -1373,21 +1287,53 @@ sub handler {
                      &Apache::loncoursequeueadmin::display_queued_requests(
                          'domain',$env{'request.role.domain'}).'</div>'.
                      &Apache::loncommon::end_page());
-       } elsif ($env{'form.phase'} eq 'requestchange') {
+       } elsif (($env{'form.phase'} eq 'requestchange') && ($show_all_choices)) {
+           if ($env{'form.queue'} eq 'pending') {
+               &Apache::lonhtmlcommon::add_breadcrumb
+                   ({href=>"/adm/createcourse?phase=pendingdisplay",
+                     text=>&mt('Display Pending Queue',),
+                     faq=>9,bug=>'Dom Coord Interface',});
+           } else {
+               &Apache::lonhtmlcommon::add_breadcrumb
+                     ({href=>"/adm/createcourse?phase=requestdisplay",
+                       text=>&mt('[_1] Display Request Queue',),
+                       faq=>9,bug=>'Dom Coord Interface',});
+           }
            &Apache::lonhtmlcommon::add_breadcrumb
-                 ({href=>"/adm/createcourse?phase=requestdisplay",
-                   text=>&mt('[_1] Display Request Queue',),
-                   faq=>9,bug=>'Dom Coord Interface',},
-                 {href=>"/adm/createcourse?phase=requestchange",
-                   text=>&mt('[_1] Requests Updated',),
-                   faq=>9,bug=>'Dom Coord Interface',},);
+               ({href=>"/adm/createcourse?phase=requestchange",
+                 text=>&mt('[_1] Requests Updated',),
+                 faq=>9,bug=>'Dom Coord Interface',},);
            my $start_page=&Apache::loncommon::start_page('Update Requests Result');
            my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Requests Updated','Course_Request',undef,'Course_Request');
            $r->print($start_page.$crumbs."\n".'<div>'.
                      &Apache::loncoursequeueadmin::update_request_queue(
                      'domain',$env{'request.role.domain'}).'</div>'.
                      &Apache::loncommon::end_page());
-       } elsif ($env{'form.phase'} eq 'creationlog') {
+       } elsif (($env{'form.phase'} eq 'pendingdisplay') && ($show_all_choices)) {
+           &Apache::lonhtmlcommon::add_breadcrumb
+                 ({href=>"/adm/createcourse?phase=$env{'form.phase'}",
+                   text=>&mt('Display Pending Queue',),
+                   faq=>9,bug=>'Dom Coord Interface',});
+           my $js = &courserequestbrowser_javascript();
+           my $start_page=&Apache::loncommon::start_page('Display Pending Queue',$js);
+           my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Pending Queue','Course_Request',undef,'Course_Request');
+           $r->print($start_page.$crumbs."\n".'<div>'.
+                     &Apache::loncoursequeueadmin::display_queued_requests(
+                         'pending',$env{'request.role.domain'}).'</div>'.
+                     &Apache::loncommon::end_page());
+       } elsif (($env{'form.phase'} eq 'requestvalidation') && ($show_all_choices)) {
+           my $js = &courserequestbrowser_javascript();
+           &Apache::lonhtmlcommon::add_breadcrumb
+                 ({href=>"/adm/createcourse?phase=pendingdisplay",
+                   text=>&mt('Display Pending Queue'),},
+                 {href=>"/adm/createcourse?phase=requestvalidation",
+                   text=>&mt('Validation Attempted'),},);
+           my $start_page=&Apache::loncommon::start_page('Requests Validation Result',$js);
+           my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Validation Attempted','Course_Request',undef,'Course_Request');
+           $r->print($start_page.$crumbs."\n".'<div>'.
+                     &Apache::loncoursequeueadmin::process_official_reqs('domain',$env{'request.role.domain'}).'</div>'.
+                     &Apache::loncommon::end_page());
+       } elsif (($env{'form.phase'} eq 'creationlog') && ($show_all_choices)) {
            &Apache::lonhtmlcommon::add_breadcrumb
                  ({href=>"/adm/createcourse?phase=creationlog",
                    text=>&mt('[_1] Display Creation History',),});
@@ -1396,13 +1342,13 @@ sub handler {
                     &syllabuslink_javascript()."\n".
                     '// ]]>'."\n".
                     '</script>';
-           my $start_page=&Apache::loncommon::start_page('Course Creation Logs',$js);
-           my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Created Courses','Creation_Log',undef,'Creation_Log');
+           my $start_page=&Apache::loncommon::start_page('Course/Community Creation Logs',$js);
+           my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Created Courses/Communities','Creation_Log',undef,'Creation_Log');
            $r->print($start_page.$crumbs."\n".'<div>');
            &print_creation_logs($r);
            $r->print('</div>'.&Apache::loncommon::end_page());
        } else {
-           &print_intro_page($r);
+           &print_intro_page($r,$show_all_choices);
        }
    } else {
       $env{'user.error.msg'}=