--- loncom/interface/loncreatecourse.pm 2006/11/02 21:06:06 1.98 +++ loncom/interface/loncreatecourse.pm 2008/04/30 23:23:07 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.98 2006/11/02 21:06:06 albertel Exp $ +# $Id: loncreatecourse.pm,v 1.107 2008/04/30 23:23:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,7 +35,7 @@ use Apache::lonnet; use Apache::loncommon; use Apache::londocs; use Apache::lonlocal; -use Apache::londropadd; +use Apache::lonuserutils; use Apache::lonclonecourse; use LONCAPA::batchcreatecourse; use LONCAPA; @@ -49,7 +49,7 @@ sub print_course_creation_page { $crstype = 'Course'; } my $defdom=$env{'request.role.domain'}; - my %host_servers = &Apache::loncommon::get_library_servers($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))) { $course_home .= qq{<option value="$server"}; @@ -70,13 +70,13 @@ sub print_course_creation_page { if ($crstype eq 'Course') { my $starttime = time; my $endtime = time+(6*30*24*60*60); # 6 months from now, approx - $enroll_table = &Apache::londropadd::date_setting_table($starttime, - $endtime,'create_enrolldates'); - $access_table = &Apache::londropadd::date_setting_table($starttime, - $endtime,'create_defaultdates'); + $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::londropadd::javascript_validations( + $javascript_validations=&Apache::lonuserutils::javascript_validations( 'createcourse',$krbdefdom); my %param = ( formname => 'document.ccrs', kerb_def_dom => $krbdefdom, @@ -128,6 +128,9 @@ function validate(formname) { 'cid' => "Course ID", 'dmn' => "Domain", 'asov' => "Additional settings, if specified below, will override cloned settings", + 'ncd' => "Do not clone date parameters", + 'prd' => 'Clone date parameters as-is', + 'shd' => 'Shift date parameters by number of days', 'assp' => "Assessment Parameters", 'oaas' => "Open all assessments", 'mssg' => "Messaging", @@ -300,6 +303,10 @@ $lt{'stat'} $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> @@ -486,7 +493,10 @@ ENDDOCUMENT $lt{'dmn'}: $cloneform </label> <br /> - <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> @@ -566,10 +576,8 @@ ENDDOCUMENT sub create_course { my $r=shift; - my $ccuname=$env{'form.ccuname'}; - my $ccdomain=$env{'form.ccdomain'}; - $ccuname=~s/\W//g; - $ccdomain=~s/\W//g; + my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'}); + my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'}); my $crstype = 'Group'; my ($enrollstart,$enrollend,$startaccess,$endaccess); @@ -577,7 +585,6 @@ sub create_course { $crstype='Course'; $enrollstart=&Apache::lonhtmlcommon::get_date_from_form('startenroll'); $enrollend=&Apache::lonhtmlcommon::get_date_from_form('endenroll'); - } $startaccess = &Apache::lonhtmlcommon::get_date_from_form('startaccess'); $endaccess = &Apache::lonhtmlcommon::get_date_from_form('endaccess'); @@ -619,6 +626,8 @@ sub create_course { crsquota => $env{'form.crsquota'}, clonecourse => $env{'form.clonecourse'}, clonedomain => $env{'form.clonedomain'}, + datemode => $env{'form.datemode'}, + dateshift => $env{'form.dateshift'}, crsid => $env{'form.crsid'}, curruser => $env{'user.name'}.':'.$env{'user.domain'}, crssections => $env{'form.crssections'}, @@ -664,33 +673,39 @@ sub create_course { return; } # Check the proposed home server for the course - my %host_servers = &Apache::loncommon::get_library_servers - ($env{'request.role.domain'}); + my %host_servers = + &Apache::lonnet::get_servers($env{'request.role.domain'},'library'); if (! exists($host_servers{$env{'form.course_home'}})) { $r->print(&mt('Invalid home server for course').': '. $env{'form.course_home'}.&Apache::loncommon::end_page()); return; } my ($courseid,$crsudom,$crsunum); - $r->print(&Apache::loncommon::construct_course($args,\$logmsg,\$courseid,\$crsudom,\$crsunum,$env{'user.domain'},$env{'user.name'})); - -# -# Make the requested user a course coordinator or group coordinator -# - if (($ccdomain) && ($ccuname)) { - $r->print(&mt('Assigning role of [_1] Coordinator to [_2] at [_3]:', - $crstype,$ccuname,$ccdomain). - &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid, - 'cc').'<p>'); - } - if ($env{'form.setkeys'}) { - $r->print( - '<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->print('<p>'.&mt('Roles will be active at next login').'.</p>'. - '<p><a href="/adm/createcourse">'. + my ($success,$output) = + &Apache::loncommon::construct_course($args,\$logmsg,\$courseid, + \$crsudom,\$crsunum, + $env{'user.domain'}, + $env{'user.name'}); + $r->print($output); + if ($success) { + # + # Make the requested user a course coordinator or group coordinator + # + if (($ccdomain) && ($ccuname)) { + $r->print(&mt('Assigning role of [_1] Coordinator to [_2] at [_3]: ', + $crstype,$ccuname,$ccdomain). + &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid, + 'cc','','','','','createcourse').'<p>'); + } + if ($env{'form.setkeys'}) { + $r->print( + '<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->print('<p>'.&mt('Roles will be active at next login').'.</p>'); + } + $r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'. &mt('Create Another [_1]',$crstype).'</a></p>'. &Apache::loncommon::end_page()); } @@ -796,7 +811,8 @@ sub process_batchfile { } } } - $r->print($start_page.$crumbs.$result.$end_page); + $r->print($start_page.$crumbs.$logmsg.$result.'<br /><a href="/adm/createcourse">'. + &mt('Creation options menu').'</a>'.$end_page); }