--- loncom/interface/loncreatecourse.pm 2019/07/26 17:27:44 1.158.2.5 +++ loncom/interface/loncreatecourse.pm 2021/12/31 01:31:35 1.158.2.8.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.158.2.5 2019/07/26 17:27:44 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.158.2.8.2.1 2021/12/31 01:31:35 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -80,7 +80,6 @@ use Apache::loncommon; use Apache::londocs; use Apache::lonlocal; use Apache::lonuserutils; -use Apache::lonclonecourse; use LONCAPA::batchcreatecourse; use LONCAPA qw(:DEFAULT :match); @@ -103,7 +102,7 @@ sub print_course_creation_page { foreach my $server (sort(keys(%host_servers))) { $course_home .= qq{<option value="$server"}; if ($server eq $Apache::lonnet::perlvar{'lonHostID'}) { - $course_home .= " selected "; + $course_home .= ' selected="selected"'; } $course_home .= qq{>$server $host_servers{$server}</option>}; } @@ -120,6 +119,8 @@ sub print_course_creation_page { 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'); + my $openallfrom = + &Apache::lonhtmlcommon::date_setter('ccrs','openallfrom',$starttime); if ($crstype eq 'Course') { $enroll_table = &Apache::lonuserutils::date_setting_table($starttime, $endtime,'create_enrolldates'); @@ -187,8 +188,13 @@ function validate(formname) { 'ncd' => "Do not clone date parameters", 'prd' => 'Clone date parameters as-is', 'shd' => 'Shift date parameters by number of days', + 'dpl' => 'URL shortcuts (for deep linking)', + 'nsl' => 'Do not clone URL shortcuts', + 'tsl' => 'Transfer URL shortcuts from existing course to new course', + 'csl' => 'Create new URL shortcuts in new course', 'assp' => "Assessment Parameters", 'oaas' => "Open all assessments", + 'sta' => "starting from:", 'mssg' => "Messaging", 'scpf' => "Set course policy feedback to Course Coordinator", 'scfc' => "Set resource content feedback to Course Coordinator", @@ -250,9 +256,13 @@ function validate(formname) { $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'); + $lt{'tsl'} = &mt('Transfer URL shortcuts from existing community to new community'); + $lt{'csl'} = &mt('Create new URL shortcuts in new community'); } my $js = <<END; <script type="text/javascript"> +// <![CDATA[ + var editbrowser = null; function openbrowser(formname,elementname) { var url = '/res/?'; @@ -271,6 +281,8 @@ function openbrowser(formname,elementnam editbrowser.focus(); } $javascript_validations + +// ]]> </script> $coursebrowserjs END @@ -289,7 +301,7 @@ END 'Create_Courses'); $r->print($start_page.$crumbs); - $r->print('<form action="/adm/createcourse" method="post" name="ccrs" action=""><div class="LC_createcourse">' + $r->print('<form action="/adm/createcourse" method="post" name="ccrs"><div class="LC_createcourse">' .&Apache::lonhtmlcommon::start_pick_box() .&Apache::lonhtmlcommon::row_headline() @@ -356,6 +368,7 @@ END .'<span class="LC_nobreak">' .'<input type="radio" name="uniquecode" value="1" />'.&mt('Yes').(' 'x2) .'<input type="radio" name="uniquecode" value="0" checked="checked" />'.&mt('No') + .'</span>' .&Apache::lonhtmlcommon::row_closure() ); } @@ -399,11 +412,12 @@ END .'<input type="radio" name="firstres" value="nav" />'.$lt{'navi'} .'</label>'); } + my $tinyurlhelp=&Apache::loncommon::help_open_topic('Clone_Tiny_URLs'); $r->print('<br />('.$lt{'stco'}.')' .&Apache::lonhtmlcommon::row_closure(1) .&Apache::lonhtmlcommon::end_pick_box() - .'<td> </td>' + .'</td><td> </td>' # Clone Course: .'<td>' @@ -428,7 +442,18 @@ END .'<label>' .'<input type="radio" name="datemode" value="shift" checked="checked" /> '.$lt{'shd'} .'</label>' - .' <input type="text" size="5" name="dateshift" value="365" />' + .' <input type="text" size="5" name="dateshift" value="364" />' + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title($tinyurlhelp.$lt{'dpl'}) + .'<label>' + .'<input type="radio" name="tinyurls" value="delete" /> '.$lt{'nsl'} + .'</label><br />' + .'<label>' + .'<input type="radio" name="tinyurls" value="transfer" /> '.$lt{'tsl'} + .'</label><br />' + .'<label>' + .'<input type="radio" name="tinyurls" value="create" checked="checked" /> '.$lt{'csl'} + .'</label>' .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_headline() .'<span class="LC_info">'.$lt{'asov'}.'</span>' @@ -453,7 +478,10 @@ END .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_title($lt{'oaas'}) - .'<input type="checkbox" name="openall" />' + .'<span class="LC_nobreak">' + .'<label><input type="radio" name="openall" value="0" checked="checked" />'.$lt{'no'}.'</label>'.(' 'x2) + .'<label><input type="radio" name="openall" value="1" />'.$lt{'yes'}.'</label>'.', ' + .$lt{'sta'}.' '.$openallfrom.'</span>' .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_headline() @@ -567,7 +595,8 @@ 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'}.'" /> +</p>' ); } elsif ($crstype eq 'Community') { $r->print(' @@ -589,7 +618,7 @@ sub create_course { my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'}); my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'}); my $crstype = 'Community'; - my ($enrollstart,$enrollend,$startaccess,$endaccess); + my ($enrollstart,$enrollend,$startaccess,$endaccess,$openallfrom); my %domdefaults = &Apache::lonnet::get_domain_defaults($env{'request.role.domain'}); @@ -600,6 +629,7 @@ sub create_course { } $startaccess = &Apache::lonhtmlcommon::get_date_from_form('startaccess'); $endaccess = &Apache::lonhtmlcommon::get_date_from_form('endaccess'); + $openallfrom = &Apache::lonhtmlcommon::get_date_from_form('openallfrom'); my $autharg; my $authtype; @@ -640,6 +670,7 @@ sub create_course { clonedomain => $env{'form.clonedomain'}, datemode => $env{'form.datemode'}, dateshift => $env{'form.dateshift'}, + tinyurls => $env{'form.tinyurls'}, crsid => $env{'form.crsid'}, curruser => $env{'user.name'}.':'.$env{'user.domain'}, crssections => $env{'form.crssections'}, @@ -665,6 +696,7 @@ sub create_course { disresdis => $env{'form.disresdis'}, disablechat => $env{'form.disablechat'}, openall => $env{'form.openall'}, + openallfrom => $openallfrom, firstres => $env{'form.firstres'} }; @@ -706,12 +738,20 @@ sub create_course { return; } my ($courseid,$crsudom,$crsunum,$code); - my ($success,$output) = + my ($success,$output,$clonemsgref) = &Apache::loncommon::construct_course($args,\$logmsg,\$courseid, \$crsudom,\$crsunum, $env{'user.domain'}, $env{'user.name'},'dc_create',undef,undef,\$code); $r->print($output); + if (ref($clonemsgref) eq 'ARRAY') { + my $user_lh = &Apache::loncommon::user_lang($env{'user.name'},$env{'user.domain'}); + foreach my $item (@{$clonemsgref}) { + if (ref($item) eq 'HASH') { + $r->print(&mt($item->{mt},@{$item->{args}}).'<br />'."\n"); + } + } + } if ($success) { # # Make the requested user a course coordinator or group coordinator @@ -858,7 +898,7 @@ sub process_batchfile { my $uname = $env{'user.name'}; my $udom = $env{'user.domain'}; my $dir = &LONCAPA::tempdir().'addcourse'; - my ($result,$logmsg,$keysmsg,$codesref,$instcodesref); + my ($result,$logmsg,$clonemsg,$keysmsg,$codesref,$instcodesref); if (($defdom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/) && ($udom =~/^$match_domain$/)) { my $batchfilepath=&Apache::lonnet::userfileupload('coursecreatorxml',undef, 'batchupload',undef,undef, @@ -872,7 +912,7 @@ sub process_batchfile { if ((defined($filename)) && (defined($batchdir))) { my @requests = ($filename); my %courseids = (); - ($result,$logmsg,$keysmsg,$codesref,$instcodesref) = + ($result,$logmsg,$clonemsg,$keysmsg,$codesref,$instcodesref) = &LONCAPA::batchcreatecourse::create_courses( \@requests,\%courseids,'web',$defdom, $uname,$udom); @@ -895,7 +935,9 @@ sub process_batchfile { $updatecats = 1; } ®ister_cleanups($r,$defdom,$updatecats); - + } + if ($clonemsg) { + $clonemsg = '<p class="LC_info">'.$clonemsg.'</p>'."\n"; } } } else { @@ -913,7 +955,7 @@ sub process_batchfile { } $r->print(&Apache::loncommon::start_page('Create a New Course, Community or Placement Test'). &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'). - $logmsg.$result.'<br /><a href="/adm/createcourse">'. + $logmsg.$clonemsg.$result.'<br /><a href="/adm/createcourse">'. &mt('Creation options menu').'</a>'. &Apache::loncommon::end_page()); } @@ -1492,7 +1534,9 @@ sub handler { my $start_page=&Apache::loncommon::start_page('Requests Validation Result',$js); my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Validation Attempted','Course_Requests',undef,'Course_Requests'); $r->print($start_page.$crumbs."\n".'<div>'. - &Apache::loncoursequeueadmin::process_official_reqs('domain',$env{'request.role.domain'}).'</div>'. + &Apache::loncoursequeueadmin::process_official_reqs('domain',$env{'request.role.domain'}, + $env{'user.name'},$env{'user.domain'}). + '</div>'. &Apache::loncommon::end_page()); } elsif (($env{'form.phase'} eq 'creationlog') && ($show_all_choices)) { &Apache::lonhtmlcommon::add_breadcrumb