--- loncom/interface/lonrequestcourse.pm 2009/09/08 13:05:00 1.31 +++ loncom/interface/lonrequestcourse.pm 2009/09/23 15:58:26 1.36.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.31 2009/09/08 13:05:00 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.36.2.1 2009/09/23 15:58:26 gci Exp $ # # Copyright Michigan State University Board of Trustees # @@ -178,7 +178,7 @@ sub handler { $trail{'enrollment'} = 'Enrollment'; } - my ($page,$crumb,$newinstcode,$codechk,$checkedcode) = + my ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description) = &get_breadcrumbs($dom,$action,\$state,\%states,\%trail); if ($action eq 'display') { if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) { @@ -238,8 +238,8 @@ sub handler { foreach my $item (@code_order) { $crosslistcode .= $env{'form.crosslist_'.$i.'_'.$item}; } - if ($crosslistcode ne '') { - $codechk{$i} = + if ($crosslistcode ne '') { + ($codechk{$i}, my $rest) = &Apache::lonnet::auto_validate_instcode('',$dom,$crosslistcode); } unless ($codechk{$i} eq 'valid') { @@ -286,7 +286,8 @@ sub handler { } else { &request_administration($r,$action,$state,$page,\%states,$dom, $jscript,$loaditems,$crumb,$newinstcode, - $codechk,$checkedcode,\@invalidcrosslist); + $codechk,$checkedcode,$description, + \@invalidcrosslist); } } else { $r->print(&header('Course Requests').$crumb. @@ -310,7 +311,7 @@ sub handler { &close_popup_form()); } else { &request_administration($r,$action,$state,$page,\%states,$dom,$jscript, - $loaditems,$crumb,'','','','',$uname,$udom); + $loaditems,$crumb,'','','','','',$uname,$udom); } } elsif ($action eq 'log') { &print_request_logs($jscript,$loaditems,$crumb); @@ -346,7 +347,7 @@ END sub get_breadcrumbs { my ($dom,$action,$state,$states,$trail) = @_; - my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles); + my ($crumb,$newinstcode,$codechk,$checkedcode,$numtitles,$description); my $page = 0; if ((ref($states) eq 'HASH') && (ref($trail) eq 'HASH') && (ref($state))) { if (defined($action)) { @@ -371,7 +372,7 @@ sub get_breadcrumbs { $$state = 'codepick'; $page --; } else { - $codechk = + ($codechk,$description) = &Apache::lonnet::auto_validate_instcode('', $dom,$newinstcode); if ($codechk ne 'valid') { @@ -416,7 +417,7 @@ sub get_breadcrumbs { {text=>'Pick Action'}); $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'); } - return ($page,$crumb,$newinstcode,$codechk,$checkedcode); + return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description); } sub header { @@ -626,12 +627,12 @@ sub check_can_request { } sub course_types { - my @types = ('official','unofficial','community'); + my @types = ('unofficial'); my %typename = ( official => 'Official course', unofficial => 'Unofficial course', community => 'Community', - ); + ); return (\@types,\%typename); } @@ -724,15 +725,14 @@ END END - $r->print(&header('Course Requests',$js.$jscript,$loaditems).$crumb.'
'. + $r->print(&header('Course Requests',$js.$jscript,$loaditems).$crumb. + '

'.&mt('Request creation of a new course, or review your pending course requests.').'

'. + '
'. &Apache::lonhtmlcommon::start_pick_box(). &Apache::lonhtmlcommon::row_title(&mt('Course Domain')). - '
'. - &Apache::loncommon::select_dom_form($dom,'showdom','',1,$onchange)); - if (!$onchange) { - $r->print(' '); - } + ''); + $r->print('GCI Web Center Concept Test Delivery (gcitest)'."\n". + ''); $r->print('
'.&Apache::lonhtmlcommon::row_closure()); my $formname = 'requestcrs'; @@ -742,24 +742,12 @@ END '. &Apache::lonhtmlcommon::row_closure(1). - &Apache::lonhtmlcommon::row_title(&mt('Course Type')).' -
-
'."\n". + &Apache::lonhtmlcommon::row_title(&mt('Course Type')). + &mt($typename->{'unofficial'})."\n". + '
'."\n". + '
'."\n". &Apache::lonhtmlcommon::row_closure(1)."\n". &Apache::lonhtmlcommon::end_pick_box().'
'."\n". '
'."\n". @@ -776,7 +764,8 @@ END sub request_administration { my ($r,$action,$state,$page,$states,$dom,$jscript,$loaditems,$crumb, - $newinstcode,$codechk,$checkedcode,$invalidcrosslist,$uname,$udom) = @_; + $newinstcode,$codechk,$checkedcode,$description,$invalidcrosslist, + $uname,$udom) = @_; my $js; if (($action eq 'new') || (($action eq 'view') && ($state eq 'pick_request'))) { $js = <print(&header('Request a course',$js.$jscript,$loaditems,$jsextra).$crumb); &print_request_form($r,$action,$state,$page,$states,$dom,$newinstcode, - $codechk,$checkedcode,$invalidcrosslist); + $codechk,$checkedcode,$description,$invalidcrosslist); } elsif ($action eq 'view') { my $jsextra; my $formname = 'requestcrs'; @@ -1124,7 +1113,7 @@ sub get_instcode { sub print_request_form { my ($r,$action,$state,$page,$states,$dom,$newinstcode,$codechk,$checkedcode, - $invalidcrosslist) = @_; + $description,$invalidcrosslist) = @_; my $formname = 'requestcrs'; my ($next,$prev,$message,$output,$codepicker,$crstype); $prev = $states->{$action}[$page-1]; @@ -1134,7 +1123,7 @@ sub print_request_form { next => 'Next', ); $crstype = $env{'form.crstype'}; - $r->print(''); + $r->print('
'); my (@codetitles,%cat_titles,%cat_order,@code_order,$instcode,$code_chk, @disallowed); if ($crstype eq 'official') { @@ -1171,7 +1160,9 @@ sub print_request_form { $codepicker = &coursecode_form($dom,'instcode',\@codetitles, \%cat_titles,\%cat_order); if ($codepicker) { - $r->print('
'.&Apache::lonhtmlcommon::start_pick_box().$codepicker. + $r->print(&mt('Specify the course to be created.'). + '
'.&Apache::lonhtmlcommon::start_pick_box(). + $codepicker. &Apache::lonhtmlcommon::end_pick_box().'
'); } else { $next = $states->{$action}[$page+2]; @@ -1187,7 +1178,7 @@ sub print_request_form { if ($instcode eq '') { $prev = $states->{$action}[$page-2]; } - $r->print(&courseinfo_form($dom,$formname,$crstype,$next)); + $r->print(&courseinfo_form($dom,$formname,$crstype,$next,$description)); } elsif ($state eq 'enrollment') { if ($crstype eq 'official') { &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, @@ -1411,7 +1402,7 @@ sub get_excluded_elements { sub print_enrollment_menu { my ($formname,$instcode,$dom,$codetitles,$cat_titles,$cat_order,$code_order, $invalidcrosslist) =@_; - my ($sections,$autoenroll,$access_dates,$output); + my ($sections,$autoenroll,$access_dates,$output,$hasauto); my $starttime = time; my $endtime = time+(6*30*24*60*60); # 6 months from now, approx @@ -1430,7 +1421,8 @@ sub print_enrollment_menu { $section_form = &inst_section_selector($dom,$instcode); if ($section_form) { $sections = &Apache::lonhtmlcommon::row_headline(). - '

'.&mt('Sections for auto-enrollment').'

'. + '

'.&Apache::loncommon::help_open_topic('Course_Request_Sections'). + ' '.&mt('Sections for auto-enrollment').'

'. &Apache::lonhtmlcommon::row_closure(1). $section_form; } @@ -1457,26 +1449,29 @@ sub print_enrollment_menu { &Apache::lonhtmlcommon::row_closure(1). $crosslist_form; } + $hasauto = 1; $autoenroll = - &Apache::lonhtmlcommon::row_title(&mt('Add registered students automatically')). + &Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic('Course_Request_Autoadd').' '.&mt('Add registered students automatically')). ''.(' 'x3).''. &Apache::lonhtmlcommon::row_closure(1). - &Apache::lonhtmlcommon::row_title(&mt('Drop unregistered students automatically')). + &Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic('Course_Request_Autodrop').' '.&mt('Drop unregistered students automatically')). ''.(' 'x3).''. &Apache::lonhtmlcommon::row_closure(1). - &date_setting_table($starttime,$endtime,$formname,'enroll',%enrolltitles); + &date_setting_table($starttime,$endtime,$formname,'enroll', + $hasauto,%enrolltitles); } } my $access_dates = - &date_setting_table($starttime,$endtime,$formname,'access',%accesstitles); + &date_setting_table($starttime,$endtime,$formname,'access',$hasauto, + %accesstitles); $output .= &Apache::lonhtmlcommon::start_pick_box(); if ($sections) { $output .= $sections; @@ -1530,7 +1525,8 @@ sub inst_section_selector { ''.&mt('Include?').''. ''.&mt('Institutional Section').''. - ''.&mt('LON-CAPA section').''. + ''.&Apache::loncommon::help_open_topic('Course_Request_LCSection'). + ' '.&mt('LON-CAPA section').''. &Apache::loncommon::end_data_table_row(); for (my $i=0; $i<@sections; $i++) { my $colflag = $i%2; @@ -1559,7 +1555,7 @@ sub inst_section_selector { } sub date_setting_table { - my ($starttime,$endtime,$formname,$prefix,%datetitles) = @_; + my ($starttime,$endtime,$formname,$prefix,$hasauto,%datetitles) = @_; my ($perpetual,$table); my $startform = &Apache::lonhtmlcommon::date_setter($formname,$prefix.'start', $starttime,'','','',1,'','','',1); @@ -1572,11 +1568,27 @@ sub date_setting_table { &mt('No end date').''; $closure = '1'; } - $table = &Apache::lonhtmlcommon::row_title($datetitles{'start'}). - $startform. + + my %help_item = ( + access => { + start => 'Course_Request_Access_Start', + end => 'Course_Request_Access_End', + }, + enroll => { + start => 'Course_Request_Enroll_Start', + end => 'Course_Request_Enroll_End', + }, + ); + if ($hasauto) { + $help_item{'access'}{'start'} = 'Course_Request_RegAccess_Start'; + $help_item{'access'}{'end'} = 'Course_Request_RegAccess_End'; + } + + $table = &Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic($help_item{$prefix}{'start'}). + ' '.$datetitles{'start'}).$startform. &Apache::lonhtmlcommon::row_closure(1). - &Apache::lonhtmlcommon::row_title($datetitles{'end'}). - $endform.$perpetual. + &Apache::lonhtmlcommon::row_title(&Apache::loncommon::help_open_topic($help_item{$prefix}{'end'}). + ' '.$datetitles{'end'}).$endform.$perpetual. &Apache::lonhtmlcommon::row_closure($closure); return $table; } @@ -1639,8 +1651,13 @@ sub print_personnel_menu { } if ($persontotal) { + my %lt = &Apache::lonlocal::texthash( + community => 'Requestor is automatically assigned Coordinator role.', + official => 'Requestor is automatically assigned Course Coordinator role.', + ); + $lt{'unofficial'} = $lt{'official'}; $output .= &Apache::lonhtmlcommon::row_headline(). - '

'.&mt('Requestor is automatically assigned Course Coordinator role.').' '.&mt('Include other personnel?').'

'; + '

'.&Apache::loncommon::help_open_topic('Course_Request_Personnel').' '.$lt{$crstype}.' '.&mt('Include other personnel?').'

'; } for (my $i=0; $i<$persontotal; $i++) { my @linkargs = map { 'person_'.$i.'_'.$_ } (@items); @@ -1682,8 +1699,9 @@ sub print_personnel_menu { ''.&mt('First Name').'
'.$form_elems{'firstname'}.''."\n". ''.&mt('Last Name').'
'.$form_elems{'lastname'}.''."\n". ''.&mt('E-mail').'
'.$form_elems{'emailaddr'}.''."\n". - ''.&mt('Role').'
'.$roleselector.''."\n". - ''.&mt('Section(s)').'
'.$sectionselector.''."\n". + ''.&Apache::loncommon::help_open_topic('Course_Roles').' '.&mt('Role').'
'.$roleselector.''."\n". + ''. + &Apache::loncommon::help_open_topic('Course_Request_Rolesection').' '.&mt('LON-CAPA Section(s)').'
'.$sectionselector.''."\n". ''.&Apache::lonhtmlcommon::row_closure(); } $output .= &Apache::lonhtmlcommon::row_title(&mt('Add another?')). @@ -1691,7 +1709,8 @@ sub print_personnel_menu { ''.&mt('Add?').&Apache::lonhtmlcommon::row_closure(1). - &Apache::lonhtmlcommon::end_pick_box().'
'; + &Apache::lonhtmlcommon::end_pick_box().'
'. + '

'.&mt('You may also add users later, once the course has been created, by using the "Manage course users" link, accessible from the "Main Menu".').'

'; return $output; } @@ -1716,14 +1735,8 @@ sub print_request_status { my ($dom) = @_; my %statusinfo = &Apache::lonnet::dump('courserequests',$env{'user.domain'}, $env{'user.name'},'^status:'.$dom); - my ($output,$formname,%queue_by_date,%typenames); - if ($env{'form.crstype'} eq 'any') { - %typenames = &Apache::lonlocal::texthash ( - official => 'Official course', - unofficial => 'Unofficial course', - community => 'Community', - ); - } + my ($output,$formname,%queue_by_date); + my ($types,$typenames) = &course_types(); foreach my $key (keys(%statusinfo)) { if (($statusinfo{$key} eq 'approval') || ($statusinfo{$key} eq 'pending')) { (undef,my($cdom,$cnum)) = split(':',$key); @@ -1794,7 +1807,10 @@ sub print_request_status { ''.&unescape($desc).''. ''.$cdom.''; if ($env{'form.crstype'} eq 'any') { - my $typename = $typenames{$type}; + my $typename; + if (ref($typenames) eq 'HASH') { + $typename = &mt($typenames->{$type}); + } if ($typename eq '') { $typename = &mt('Unknown type'); } @@ -1947,7 +1963,7 @@ sub print_review { $crstypename = $env{'form.crstype'}; if (ref($typename) eq 'HASH') { unless ($typename->{$env{'form.crstype'}} eq '') { - $crstypename = $typename->{$env{'form.crstype'}}; + $crstypename = &mt($typename->{$env{'form.crstype'}}); } } my $category = 'Course'; @@ -2209,15 +2225,19 @@ sub dates_from_form { } sub courseinfo_form { - my ($dom,$formname,$crstype,$next) = @_; - my $nodescr = &mt('You must provide a (brief) course description.'); + my ($dom,$formname,$crstype,$next,$description) = @_; + my %lt = &Apache::lonlocal::texthash( + official => 'You must provide a (brief) course description.', + community => 'You must provide a (brief) community description.' + ); + $lt{'unofficial'} = $lt{'official'}; my $js_validate = <<"ENDJS";