--- loncom/interface/loncreatecourse.pm	2002/08/31 00:43:12	1.12
+++ loncom/interface/loncreatecourse.pm	2003/08/07 14:28:49	1.27
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.12 2002/08/31 00:43:12 www Exp $
+# $Id: loncreatecourse.pm,v 1.27 2003/08/07 14:28:49 bowersj2 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -45,6 +45,9 @@ use strict;
 use Apache::Constants qw(:common :http);
 use Apache::lonnet;
 use Apache::loncommon;
+use Apache::lonratedt;
+use Apache::londocs;
+
 # ===================================================== Phase one: fill-in form
 
 sub print_course_creation_page {
@@ -53,13 +56,16 @@ sub print_course_creation_page {
     my %host_servers = &Apache::loncommon::get_library_servers($defdom);
     my $course_home = '<select name="course_home" size="1">'."\n";
     foreach my $server (sort(keys(%host_servers))) {
-        $course_home .= 
-          qq{<option value="$server">$server $host_servers{$server}</option>};
+        $course_home .= qq{<option value="$server"};
+        if ($server eq $Apache::lonnet::perlvar{'lonHostID'}) {
+            $course_home .= " selected ";
+        }
+        $course_home .= qq{>$server $host_servers{$server}</option>};
     }
     $course_home .= "\n</select>\n";
     my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain');
     my $bodytag=&Apache::loncommon::bodytag('Create a New Course');
-
+    my $helplink=&Apache::loncommon::help_open_topic('Create_Course','Help on Creating Courses');
     $r->print(<<ENDDOCUMENT);
 <html>
 <script language="JavaScript" type="text/javascript">
@@ -85,35 +91,62 @@ function openbrowser(formname,elementnam
 <title>The LearningOnline Network with CAPA</title>
 </head>
 $bodytag
+$helplink
 <form action="/adm/createcourse" method="post" name="ccrs">
 <h2>Course Information</h2>
 <p>
 <b>Course Title:</b>
 <input type="text" size="50" name="title">
 </p><p>
+<b>Course Home Server:</b>$course_home
+</p><p>
+<b>Course ID/Number (optional)</b>
+<input type="text" size="30" name="crsid">
+</p>
+<h2>Course Content</h2>
+<p>
 <b>Map:</b>
 <input type="text" size="50" name="topmap">
-<a href="javascript:openbrowser('ccrs','topmap')">Browse</a>
+<a href="javascript:openbrowser('ccrs','topmap')">Select Map</a>
 </p><p>
 <b>Do NOT generate as standard course</b> 
 (only check if you know what you are doing):
 <input type="checkbox" name="nonstandard">
-</p><p>
-<b>Course Home Server:</b>$course_home
-</p><p>
-<b>Course ID/Number (optional)</b>
-<input type="text" size="30" name="crsid">
-</p><p>
+</p>
+<p>
+<b>First Resource</b> (standard courses only):
+<input type="radio" name="firstres" value="blank">Blank
+&nbsp;
+<input type="radio" name="firstres" value="syl" checked>Syllabus
+&nbsp;
+<input type="radio" name="firstres" value="nav">Navigate
+</p>
+
+<h2>Assessment Parameters</h2>
+<p>
 <b>Open all assessments: </b>
 <input type="checkbox" name="openall" checked>
-</p><p>
+</p>
+<h2>Messaging</h2>
+<p>
 <b>Set course policy feedback to Course Coordinator: </b>
 <input type="checkbox" name="setpolicy" checked>
 </p><p>
 <b>Set content feedback to Course Coordinator: </b>
 <input type="checkbox" name="setcontent" checked>
 </p>
-
+<h2>Communication</h2>
+<p>
+<b>Disable student resource discussion: </b>
+<input type="checkbox" name="disresdis" /> <br />
+<b>Disable student use of chatrooms: </b>
+<input type="checkbox" name="disablechat" />
+</p>
+<h2>Access Control</h2>
+<p>
+<b>Students need access key to enter course: </b>
+<input type="checkbox" name="setkeys" />
+</p>
 <h2>Course Coordinator</h2>
 <p>
 <b>Username:</b> <input type="text" size="15" name="ccuname" />
@@ -175,6 +208,10 @@ ENDENHEAD
                                                $ENV{'form.course_home'},
                                                $ENV{'form.nonstandard'});
 
+    # Note: The testing routines depend on this being output; see 
+    # Utils::Course. This needs to at least be output as a comment
+    # if anyone ever decides to not show this, and Utils::Course::new
+    # will need to be suitably modified.
     $r->print('New LON-CAPA Course ID: '.$courseid.'<br>');
 #
 # Check if created correctly
@@ -201,6 +238,30 @@ ENDENHEAD
            $cenv{'question.email'}=$ccuname.':'.$ccdomain;
        }
     }
+    if ($ENV{'form.setkeys'}) {
+       $envflag=1;
+       $cenv{'keyaccess'}='yes';
+    }
+    if ($ENV{'form.disresdis'}) {
+	$envflag=1;
+        $cenv{'pch.roles.denied'}='st';
+    }
+    if ($ENV{'form.disablechat'}) {
+	$envflag=1;
+        $cenv{'plc.roles.denied'}='st';
+    }
+
+    # Record we've not yet viewed the Course Initialization Helper for this course
+    $cenv{'course.helper.not.run'} = 1;
+    #
+    # Use new Randomseed
+    #
+    $envflag=1;
+    $cenv{'rndseed'}=&Apache::lonnet::latest_rnd_algorithm_id();;
+    #
+    # By default, use standard grading
+    $cenv{'grading'} = 'standard';
+
     if ($envflag) {
        $r->print('Setting environment: '.                 
           &Apache::lonnet::put('environment',\%cenv,$crsudom,$crsunum).'<br>');
@@ -216,7 +277,27 @@ ENDENHEAD
        $r->print('Opening all assignments: '.&Apache::lonnet::cput
                  ('resourcedata',\%storecontent,$crsudom,$crsunum).'<br>');
    }
-
+#
+# Set first page
+#
+    unless (($ENV{'form.nonstandard'}) || ($ENV{'form.firstres'} eq 'blank')) {
+	$r->print('Setting first resource: ');
+        my ($errtext,$fatal)=
+           &Apache::londocs::mapread($crsunum,$crsudom,'default.sequence');
+        $r->print(($fatal?$errtext:'read ok').' - ');
+        my $title; my $url;
+        if ($ENV{'form.firstres'} eq 'syl') {
+	    $title='Syllabus';
+            $url='/public/'.$crsudom.'/'.$crsunum.'/syllabus';
+        } else {
+            $title='Navigate Contents';
+            $url='/adm/navmaps';
+        }
+        $Apache::lonratedt::resources[1]=$title.':'.$url.':false:start:res';
+        ($errtext,$fatal)=
+           &Apache::londocs::storemap($crsunum,$crsudom,'default.sequence');
+        $r->print(($fatal?$errtext:'write ok').'<br>');
+  }
 #
 # Make current user course adminstrator
 #
@@ -234,7 +315,11 @@ ENDENHEAD
                $ccuname.' at '.$ccdomain.': '.
     &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,'cc').'<p>');
    }
-    $r->print('Roles will be active at next login.</body></html>');
+    if ($ENV{'form.setkeys'}) {
+	$r->print(
+ '<p><a href="/adm/managekeys?cid='.$crsudom.'_'.$crsunum.'">Manage Access Keys</a></p>');
+    }
+    $r->print('<p>Roles will be active at next login.</p></body></html>');
 }
 
 # ===================================================================== Handler