--- loncom/interface/loncreatecourse.pm 2008/07/01 05:22:59 1.108.2.1 +++ loncom/interface/loncreatecourse.pm 2008/11/18 19:14:22 1.112 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.108.2.1 2008/07/01 05:22:59 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.112 2008/11/18 19:14:22 jms Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,6 +27,38 @@ # ### +=head1 NAME + +Apache::loncreatecourse.pm + +=head1 SYNOPSIS + +Allows domain coordinators to create new +courses and assign course coordinators. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over + +=item handler() + +=item print_course_creation_page() + +=item create_course() + +=item print_intro_page() + +=item upload_batchfile() + +=item process_batchfile() + +=back + +=cut + package Apache::loncreatecourse; use strict; @@ -44,11 +76,10 @@ use LONCAPA; sub print_course_creation_page { my $r=shift; - my $crstype = 'Course'; -# my $crstype = 'Group'; -# if ($env{'form.phase'} eq 'courseone') { -# $crstype = 'Course'; -# } + my $crstype = 'Group'; + if ($env{'form.phase'} eq 'courseone') { + $crstype = 'Course'; + } my $defdom=$env{'request.role.domain'}; my %host_servers = &Apache::lonnet::get_servers($defdom,'library'); my $course_home = '<select name="course_home" size="1">'."\n"; @@ -128,6 +159,7 @@ function validate(formname) { 'navi' => "Navigate", 'cid' => "Course ID", 'dmn' => "Domain", + 'dsh' => "Date Shift", 'asov' => "Additional settings, if specified below, will override cloned settings", 'ncd' => "Do not clone date parameters", 'prd' => 'Clone date parameters as-is', @@ -154,7 +186,7 @@ function validate(formname) { 'audr' => "Automated drops", 'dacu' => "Duration of automated classlist updates", 'dacc' => "Default start and end dates for student access", - 'psam' => "Please select the authentication mechanism", + '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", 'nech' => "Notification of enrollment changes", 'nccl' => "Notification to course coordinator via LON-CAPA message when enrollment changes occur during the automated update?", @@ -224,214 +256,247 @@ END 'Create_Course',undef, 'Create_Courses'); $r->print($start_page.$crumbs); + if ($crstype eq 'Course') { + $r->print('<form action="/adm/createcourse" method="post" name="ccrs">' + .&Apache::lonhtmlcommon::start_pick_box() + + .&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() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'iinf'}.'</h3>' + .$lt{'stat'} + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'ccod'}) + .'<input type="text" size="30" name="crscode" />' + .'<br />('.$lt{'toin'}.')' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'snid'}) + .'<input type="text" size="30" name="crssections" />' + .'<br />('.$lt{'csli'}.')' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'crcs'}) + .'<input type="text" size="30" name="crsxlist" />' + .'<br />('.$lt{'cscs'}.')' + .&Apache::lonhtmlcommon::row_closure() + ); + + # 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() + .'<th>'.$lt{'cncr'}.'</th>' + .'<th> '.&mt('or').' </th>' + .'<th>'.$lt{'cecr'}.'</th>' + .&Apache::loncommon::end_data_table_header_row() + .&Apache::loncommon::start_data_table_row() + + # New Course: + .'<td>' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title($lt{'map'}) + .'<input type="text" size="50" name="topmap" />' + .'<a href="javascript:openbrowser(\'ccrs\',\'topmap\')">'.$lt{'smap'}.'</a>' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title('<label for="nonstd">'.$lt{'sacr'}.'</label>') + .'<input id="nonstd" type="checkbox" name="nonstandard" />' + .'<br />('.$lt{'ocik'}.')' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title($lt{'fres'}) + .'<label>' + .'<input type="radio" name="firstres" value="blank" />'.$lt{'blnk'} + .'</label>' + .' ' + .'<label>' + .'<input type="radio" name="firstres" value="syl" checked="checked" />'.$lt{'sllb'} + .'</label>' + .' ' + .'<label>' + .'<input type="radio" name="firstres" value="nav" />'.$lt{'navi'} + .'</label>' + .'<br />('.$lt{'stco'}.')' + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + + .'<td> </td>' + + # Clone Course: + .'<td>' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title($lt{'cid'}) + .'<label>' + .'<input type="text" size="25" name="clonecourse" value="" />' + .'</label>' + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::row_title($lt{'dmn'}) + .'<label>' + .$cloneform + .'</label>' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title($lt{'dsh'}) + .'<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" />' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_headline() + .$lt{'asov'} + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + .'</td>' + .&Apache::loncommon::end_data_table_row() + .&Apache::loncommon::end_data_table() + .&Apache::lonhtmlcommon::row_closure() + ); + + $r->print(&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'assp'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'oaas'}) + .'<input type="checkbox" name="openall" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'mssg'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'scpf'}) + .'<input type="checkbox" name="setpolicy" checked="checked" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'scfc'}) + .'<input type="checkbox" name="setcontent" checked="checked" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'cmmn'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'dsrd'}) + .'<input type="checkbox" name="disresdis" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'dsuc'}) + .'<input type="checkbox" name="disablechat" /' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'acco'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'snak'}) + .'<input type="checkbox" name="setkeys" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'kaut'}) + .'<input type="text" size="30" name="keyauth" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'rshm'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'rshm'}) + .'<input type="text" name="reshome" size="30" value="/res/'.$defdom.'/" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'aens'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'aadd'}) + .'<label><input type="radio" name="autoadds" value="1" />'.$lt{'yes'}.'</label>' + .'<label><input type="radio" name="autoadds" value="0" checked="checked" />'.$lt{'no'}.'</label>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'audr'}) + .'<label><input type="radio" name="autodrops" value="1" />'.$lt{'yes'}.'</label>' + .'<label><input type="radio" name="autodrops" value="0" checked="checked" />'.$lt{'no'}.'</label>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'dacu'}) + .$enroll_table + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'dacc'}) + .$access_table + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'psam'}) + .$lt{'pcda'}.'<br />' + .$krbform.'<br />' + .$intform.'<br />' + .$locform + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'nech'}) + .$lt{'nccl'}.'<br/>' + .'<label><input type="radio" name="notify_owner" value="1" />'.$lt{'yes'}.'</label>' + .'<label><input type="radio" name="notify_owner" value="0" checked="checked" />'.$lt{'no'}.'</label>' + .'<br />' + .$lt{'ndcl'}.'<br/>' + .'<label><input type="radio" name="notify_dc" value="1" />'.$lt{'yes'}.'</label>' + .'<label><input type="radio" name="notify_dc" value="0" checked="checked" />'.$lt{'no'}.'</label>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'irsp'}) + .'<label>' + .'<input type="radio" name="showphotos" value="1" />'.$lt{'yes'} + .'</label> ' + .'<label>' + .'<input type="radio" name="showphotos" value="0" checked="checked" />'.$lt{'no'} + .'</label> ' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'cgrs'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'cgrq'}) + .'<input type="text" name="crsquota" value="20" size="6" />Mb' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_headline() + .'<h3>'.$lt{'cc'}.'</h3>' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'user'}) + .'<input type="text" size="15" name="ccuname" />' + .&Apache::lonhtmlcommon::row_closure() + + .&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value") + .$domform + .&Apache::lonhtmlcommon::row_closure(1) + + .&Apache::lonhtmlcommon::end_pick_box() + ); + $r->print(<<ENDDOCUMENT); -<form action="/adm/createcourse" method="post" name="ccrs"> -<h2>$lt{'cinf'}</h2> -<p> -<label><b>$lt{'ctit'}:</b> -<input type="text" size="50" name="title" /></label> -</p><p> -<label> - <b>$lt{'chsr'}:</b>$course_home -</label> -</p><p> -<label> - <b>$lt{'cidn'} ($lt{'opt'})</b> - <input type="text" size="30" name="crsid" /> -</label> -</p><p> -<h2>$lt{'iinf'}</h2> -<p> -$lt{'stat'} -</p><p> -<label> - <b>$lt{'ccod'}</b> - <input type="text" size="30" name="crscode" /> -</label> -<br/> -($lt{'toin'}) -</p><p> -<label> - <b>$lt{'snid'}</b> - <input type="text" size="30" name="crssections" /> -</label> -<br/> -($lt{'csli'}) -</p><p> -<label> - <b>$lt{'crcs'}</b> - <input type="text" size="30" name="crsxlist" /> -</label> -<br/> -($lt{'cscs'}) -</p> -<h2>$lt{'crco'}</h2> -<table border="2"> -<tr><th>$lt{'cncr'}</th><th>$lt{'cecr'}</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{'sacr'}</b></label> -<br /> -($lt{'ocik'}): -<input id="nonstd" type="checkbox" name="nonstandard" /> -</p><p> -<b>$lt{'fres'}</b><br />($lt{'stco'}): -<label> - <input type="radio" name="firstres" value="blank" />$lt{'blnk'} -</label> - -<label> - <input type="radio" name="firstres" value="syl" checked />$lt{'sllb'} -</label> - -<label> - <input type="radio" name="firstres" value="nav" />$lt{'navi'} -</label> -</p> -</td><td> -<label> - $lt{'cid'}: <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 /> - <br /> -$lt{'asov'}. -</td></tr> -</table> -<h2>$lt{'assp'}</h2> -<p> -<label> - <b>$lt{'oaas'}: </b> - <input type="checkbox" name="openall" /> -</label> -</p> -<h2>$lt{'mssg'}</h2> -<p> -<label> - <b>$lt{'scpf'}: </b> - <input type="checkbox" name="setpolicy" checked /> -</label> -<br /> -<label> - <b>$lt{'scfc'}: </b> - <input type="checkbox" name="setcontent" checked /> -</label> -</p> -<h2>$lt{'cmmn'}</h2> -<p> -<label> - <b>$lt{'dsrd'}: </b> - <input type="checkbox" name="disresdis" /> -</label> -<br /> -<label> - <b>$lt{'dsuc'}: </b> - <input type="checkbox" name="disablechat" /> -</label> -</p> -<h2>$lt{'acco'}</h2> -<p> -<label> - <b>$lt{'snak'}: </b> - <input type="checkbox" name="setkeys" /> -</label> -<br /> -<label> - <b>$lt{'kaut'}: </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> -<p> -<h2>$lt{'aens'}</h2> -$lt{'aesc'} -</p> -<p> -<b>$lt{'aadd'}</b> -<label><input type="radio" name="autoadds" value="1" />$lt{'yes'}</label> -<label><input type="radio" name="autoadds" value="0" checked="true" />$lt{'no'} -</label> -</p><p> -<b>$lt{'audr'}</b> -<label><input type="radio" name="autodrops" value="1" />$lt{'yes'}</label> -<label><input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}</label> -</p><p> -<b>$lt{'dacu'}</b> -$enroll_table -</p><p> -<b>$lt{'dacc'}</b> -$access_table -<p></p> -<b>$lt{'psam'}.</b><br /> -$lt{'pcda'}. -</p><p> -$krbform -<br /> -$intform -<br /> -$locform -</p><p> -<b>$lt{'nech'}</b><br /> -$lt{'nccl'}<br/> -<label> - <input type="radio" name="notify_owner" value="1" />$lt{'yes'} -</label> -<label> - <input type="radio" name="notify_owner" value="0" checked="true" />$lt{'no'} -</label> -<br /> -$lt{'ndcl'}<br/> -<label> - <input type="radio" name="notify_dc" value="1" />$lt{'yes'} -</label> -<label> - <input type="radio" name="notify_dc" value="0" checked="true" />$lt{'no'} -</label> -</p><p> -<b>$lt{'irsp'}</b> -<label> - <input type="radio" name="showphotos" value="1" />$lt{'yes'} -</label> -<label> - <input type="radio" name="showphotos" value="0" checked="true" />$lt{'no'} -</label> -</p> -<p> -<h2>$lt{'cgrs'}</h2> -$lt{'cgrq'} -<input type="text" name="crsquota" value="20" size="6" />Mb -</p> -<hr /> -<h2>$lt{'cc'}</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> <p> <input type="hidden" name="prevphase" value="courseone" /> <input type="hidden" name="phase" value="coursetwo" /> @@ -439,6 +504,7 @@ $lt{'cgrq'} </p> </form> ENDDOCUMENT + } elsif ($crstype eq 'Group') { $r->print(<<ENDDOCUMENT); <form action="/adm/createcourse" method="post" name="ccrs"> @@ -478,7 +544,7 @@ ENDDOCUMENT </label> <label> - <input type="radio" name="firstres" value="syl" checked />$lt{'sllb'} + <input type="radio" name="firstres" value="syl" checked="checked" />$lt{'sllb'} </label> <label> @@ -507,12 +573,12 @@ $lt{'asov'}. <p> <label> <b>$lt{'sgpf'}: </b> - <input type="checkbox" name="setpolicy" checked /> + <input type="checkbox" name="setpolicy" checked="checked" /> </label> <br /> <label> <b>$lt{'scfg'}: </b> - <input type="checkbox" name="setcontent" checked /> + <input type="checkbox" name="setcontent" checked="checked" /> </label> </p> <h2>$lt{'cmmn'}</h2> @@ -717,27 +783,24 @@ sub create_course { sub print_intro_page { my $r = shift; my $start_page = -# &Apache::loncommon::start_page('Create a New Course or Group Space'); - &Apache::loncommon::start_page('Create a New Course'); + &Apache::loncommon::start_page('Create a New Course or Group Space'); my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); my $end_page = &Apache::loncommon::end_page(); -# my $helplink=&Apache::loncommon::help_open_topic('Create_Course_GroupSpace',&mt('Help on Creating Courses and Groups')); - my $helplink=&Apache::loncommon::help_open_topic('Create_Course_GroupSpace',&mt('Help on Creating Courses')); + my $helplink=&Apache::loncommon::help_open_topic('Create_Course_GroupSpace',&mt('Help on Creating Courses and Groups')); 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 collaborative group space'), -# short_description => -# &mt('Create a new group space for non-course use by completing an online form.'), -# }, + { internal_name => 'groupone', + name => &mt('Create a single collaborative group space'), + short_description => + &mt('Create a new group space for non-course use by completing an online form.'), + }, { internal_name => 'batchone', -# name => &mt('Create courses/groups by uploading an attributes file'), - name => &mt('Create courses by uploading an attributes file'), + name => &mt('Create courses/groups by uploading an attributes file'), short_description => &mt('Upload an attributes file containing specifications for one or more courses or groups in XML format.'), help => 'Batch_Creation', @@ -766,22 +829,18 @@ ENDDOCUMENT sub upload_batchfile { my $r = shift; my $start_page = -# &Apache::loncommon::start_page('Create a New Course or Group Space'); - &Apache::loncommon::start_page('Create a New Course'); -# my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Group Attributes File','Create_Course',undef,'Create_Courses'); - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course Attributes File','Create_Course',undef,'Create_Courses'); + &Apache::loncommon::start_page('Create a New Course or Group Space'); + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Group Attributes File','Create_Course',undef,'Create_Courses'); my $end_page = &Apache::loncommon::end_page(); $r->print($start_page.$crumbs); -# $r->print('<h3>'.&mt('Upload a courses or groups attributes file').'</h3>'); - $r->print('<h3>'.&mt('Upload a courses attributes file').'</h3>'); + $r->print('<h3>'.&mt('Upload a courses or groups attributes file').'</h3>'); $r->print('<form name="batchcreate" method="post" '. 'enctype="multipart/form-data" action="/adm/createcourse">'. '<input type="file" name="coursecreatorxml" />'. '<input type="hidden" name="phase" value="batchtwo"><br /><br />'. '<input type="submit" name="batchsubmit" '. -# 'value="Create Courses/Groups" /></form>'); - 'value="'.&mt('Create Courses').'" /></form>'); + 'value="Create Courses/Groups" /></form>'); $r->print($end_page); return; } @@ -789,8 +848,7 @@ sub upload_batchfile { sub process_batchfile { my $r = shift; my $start_page = -# &Apache::loncommon::start_page('Create a New Course or Group Space'); - &Apache::loncommon::start_page('Create a New Course'); + &Apache::loncommon::start_page('Create a New Course or Group Space'); my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'); my $end_page = &Apache::loncommon::end_page();