--- 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'}.' '.$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'}.' '.$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>' - .' ' - .'<label>' + .' '); + 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>' .' ' .'<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'} $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> - -<label> - <input type="radio" name="firstres" value="syl" checked="checked" />$lt{'sllb'} -</label> - -<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 /> <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".' '.(' '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> </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> </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'}=