--- loncom/interface/lonrequestcourse.pm 2009/11/04 17:42:17 1.39 +++ loncom/interface/lonrequestcourse.pm 2009/11/18 19:15:44 1.40 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.39 2009/11/04 17:42:17 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.40 2009/11/18 19:15:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -157,7 +157,7 @@ sub handler { my @invalidcrosslist; my %trail = ( - crstype => 'Course Request Action', + crstype => 'Request Action', codepick => 'Category', courseinfo => 'Description', enrollment => 'Access Dates', @@ -192,16 +192,30 @@ sub handler { if (($udom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/)) { $result = &retrieve_settings($dom,$cnum,$udom,$uname); } else { - $warning = &mt('Invalid username or domain for course requestor'); + if ($env{'form.crstype'} eq 'community') { + $warning = &mt('Invalid username or domain for community requestor'); + } else { + $warning = &mt('Invalid username or domain for course requestor'); + } } } else { - $warning = &mt('No information was found for this course request.'); + if ($env{'form.crstype'} eq 'community') { + $warning = &mt('No information was found for this community request.'); + } else { + $warning = &mt('No information was found for this course request.'); + } } } else { $warning = &mt('No course request ID provided.'); } } else { - $warning = &mt('You do not have rights to view course request information.'); + if ($env{'form.crstype'} eq 'any') { + $warning = &mt('You do not have rights to view course or community request information.'); + } elsif ($env{'form.crstype'} eq 'community') { + $warning = &mt('You do not have rights to view community request information.'); + } else { + $warning = &mt('You do not have rights to view course request information.'); + } } } elsif ((defined($state)) && (defined($action))) { if (($action eq 'view') && ($state eq 'details')) { @@ -287,9 +301,9 @@ sub handler { \@invalidcrosslist); } } else { - $r->print(&header('Course Requests').$crumb. + $r->print(&header('Course/Community Requests').$crumb. '<div class="LC_warning">'. - &mt('You do not have privileges to request creation of courses.'). + &mt('You do not have privileges to request creation of courses or communities.'). '</div>'.&Apache::loncommon::end_page()); } } elsif ($action eq 'view') { @@ -302,8 +316,8 @@ sub handler { } elsif ($action eq 'display') { if ($warning ne '') { my $args = { only_body => 1 }; - $r->print(&header('Course Requests','','',$args).$crumb. - '<h3>'.&mt('Course Request Details').'</h3>'. + $r->print(&header('Course/Community Requests','','',$args).$crumb. + '<h3>'.&mt('Course/Community Request Details').'</h3>'. '<div class="LC_warning">'.$warning.'</div>'. &close_popup_form()); } else { @@ -387,7 +401,7 @@ sub get_breadcrumbs { if ($$state eq $states->{$action}[$i]) { &Apache::lonhtmlcommon::add_breadcrumb( {text=>"$trail->{$$state}"}); - $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'); + $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests'); last; } else { if (($$state eq 'process') || ($$state eq 'removal')) { @@ -407,12 +421,12 @@ sub get_breadcrumbs { } else { &Apache::lonhtmlcommon::add_breadcrumb( {text=>'Pick Action'}); - $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'); + $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests'); } } else { &Apache::lonhtmlcommon::add_breadcrumb( {text=>'Pick Action'}); - $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course Requests','Course_Requests'); + $crumb = &Apache::lonhtmlcommon::breadcrumbs('Course/Community Requests','Course_Requests'); } return ($page,$crumb,$newinstcode,$codechk,$checkedcode,$description); } @@ -691,8 +705,8 @@ END $domaintitle = &mt('Course Domain'); } } elsif ($can_request->{'community'}) { - $pagetitle = 'Course/Community Requests'; - $pageinfo = &mt('Request creation of a new course or community, or review your pending requests.'); + $pagetitle = 'Community Requests'; + $pageinfo = &mt('Request creation of a new course, or review your pending requests.'); $domaintitle = &mt('Community Domain'); } else { $pagetitle = 'Course/Community Requests'; @@ -817,7 +831,13 @@ END } elsif ($state eq 'personnel') { $js .= "\n".§ion_check_javascript()."\n".&personnel_lcsec_js(); } - $r->print(&header('Request a course',$js.$jscript,$loaditems,$jsextra).$crumb); + my $title; + if ($env{'form.crstype'} eq 'community') { + $title = 'Request a community'; + } else { + $title = 'Request a course'; + } + $r->print(&header($title,$js.$jscript,$loaditems,$jsextra).$crumb); &print_request_form($r,$action,$state,$page,$states,$dom,$newinstcode, $codechk,$checkedcode,$description,$invalidcrosslist); } elsif ($action eq 'view') { @@ -834,11 +854,26 @@ END } elsif ($state eq 'cancel') { $jsextra = &viewcancel_javascript($formname); } - $r->print(&header('Manage course requests',$js.$jscript.$jsextra,$loaditems). - $crumb); + my $title; + if ($env{'form.crstype'} eq 'community') { + $title = 'Manage community requests'; + } else { + $title = 'Manage course requests'; + } + $r->print(&header($title,$js.$jscript.$jsextra,$loaditems).$crumb); my $form = '<form method="post" name="'.$formname.'" action="/adm/requestcourse" />'; if ($state eq 'pick_request') { - $r->print('<h3>'.&mt('Pending course requests').'</h3><div>'."\n".$form."\n". + my $title; + if ($env{'form.crstype'} eq 'community') { + $title = &mt('Pending community requests'); + } elsif ($env{'form.crstype'} eq 'official') { + $title = &mt('Pending requests for official courses'); + } elsif ($env{'form.crstype'} eq 'unofficial') { + $title = &mt('Pending requests for unofficial courses'); + } else { + $title = &mt('Pending course/community requests'); + } + $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n". &print_request_status($dom).'</form></div>'); } elsif ($state eq 'details') { my (@codetitles,%cat_titles,%cat_order,@code_order,$instcode,$code_chk); @@ -850,7 +885,13 @@ END &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, \%cat_order,\@code_order); } - $r->print('<h3>'.&mt('Course Request Details').'</h3><div>'."\n".$form."\n". + my $title; + if ($env{'form.crstype'} eq 'community') { + $title = &mt('Community Request Details'); + } else { + $title = &mt('Course Request Details'); + } + $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n". &print_review($dom,\@codetitles,\%cat_titles,\%cat_order, \@code_order)."\n". '<input name="origcnum" value="'.$origcnum.'" type="hidden" />'."\n"); @@ -867,8 +908,14 @@ END $navtxt{'next'},$state,$other,$navtxt{'other'}); $r->print('</form>'); } elsif ($state eq 'cancel') { + my $title; + if ($env{'form.crstype'} eq 'community') { + $title = &mt('Cancel community request'); + } else { + $title = &mt('Cancel course request'); + } my ($result,$output) = &print_cancel_request($dom,$env{'form.origcnum'}); - $r->print('<h3>'.&mt('Cancel course request').'</h3><div>'."\n".$form."\n". + $r->print('<h3>'.$title.'</h3><div>'."\n".$form."\n". $output); my @excluded = &get_excluded_elements($dom,$states,'view','cancel'); $r->print(&Apache::lonhtmlcommon::echo_form_input(\@excluded).'</div>'); @@ -917,7 +964,11 @@ END '<input type="hidden" name="showdom" value="'.$dom.'" />'."\n". '<input type="hidden" name="orignum" value="'.$cnum.'" />'."\n"); if ($result eq 'ok') { - $r->print(&mt('Your course request has been cancelled.')); + if ($env{'form.crstype'} eq 'community') { + $r->print(&mt('Your community request has been cancelled.')); + } else { + $r->print(&mt('Your course request has been cancelled.')); + } } else { $r->print('<div class="LC_error">'. &mt('The request cancellation process was not complete.'). @@ -932,8 +983,16 @@ END &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, \%cat_order,\@code_order); } - $r->print(&header('Course Request','','','',{ 'only_body' => 1}). - $crumb."\n".'<h3>'.&mt('Course Request Details').'</h3>'. + my ($title,$header); + if ($env{'form.crstype'} eq 'community') { + $title = 'Community Request'; + $header = &mt('Community Request'); + } else { + $title = 'Course Request'; + $header = &mt('Course Request'); + } + $r->print(&header($title,'','','',{ 'only_body' => 1}). + $crumb."\n".'<h3>'.$header.'</h3>'. &print_review($dom,\@codetitles,\%cat_titles,\%cat_order, \@code_order,$uname,$udom)."\n".'</div>'. &close_popup_form()); @@ -1289,10 +1348,18 @@ sub print_request_form { } &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, \%cat_order,\@code_order); - $r->print('<h3>'.&mt('Review course request details before submission').'</h3>'. - &print_review($dom,\@codetitles,\%cat_titles,\%cat_order,\@code_order,'','',\@disallowed,\%disallowmsg). + if ($crstype eq 'community') { + $r->print('<h3>'.&mt('Review community request details before submission').'</h3>'); + } else { + $r->print('<h3>'.&mt('Review course request details before submission').'</h3>'); + } + $r->print(&print_review($dom,\@codetitles,\%cat_titles,\%cat_order,\@code_order,'','',\@disallowed,\%disallowmsg). '<input type="hidden" name="cnum" value="'.$cnum.'" />'); - $navtxt{'next'} = &mt('Submit course request'); + if ($crstype eq 'community') { + $navtxt{'next'} = &mt('Submit community request'); + } else { + $navtxt{'next'} = &mt('Submit course request'); + } } elsif ($state eq 'process') { if ($crstype eq 'official') { &Apache::lonnet::auto_possible_instcodes($dom,\@codetitles,\%cat_titles, @@ -1457,7 +1524,7 @@ sub print_enrollment_menu { } if ($crosslist_form) { $crosslist_form .= - &Apache::lonhtmlcommon::row_title(&mt('Add another?')). + &Apache::lonhtmlcommon::row_title(&mt('Add another')). '<input name="crosslisttotal" type="hidden" value="'.$crosslisttotal.'" />'. '<input name="addcrosslist" type="checkbox" value="'.$crosslisttotal.'"'. ' onclick="javascript:nextPage(document.'.$formname.",'".$env{'form.state'}. @@ -1722,13 +1789,17 @@ sub print_personnel_menu { &Apache::loncommon::help_open_topic('Course_Request_Rolesection').' '.&mt('LON-CAPA Section(s)').'<br />'.$sectionselector.'</td>'."\n". '</tr></table>'.&Apache::lonhtmlcommon::row_closure(); } - $output .= &Apache::lonhtmlcommon::row_title(&mt('Add another?')). + $output .= &Apache::lonhtmlcommon::row_title(&mt('Add another')). '<input name="persontotal" type="hidden" value="'.$persontotal.'" />'. '<input name="addperson" type="checkbox" value="'.$persontotal.'"'. ' onclick="javascript:nextPage(document.'.$formname.",'".$env{'form.state'}. "'".');" />'.&mt('Add?').&Apache::lonhtmlcommon::row_closure(1). - &Apache::lonhtmlcommon::end_pick_box().'</div>'. - '<p>'.&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".').'</p>'; + &Apache::lonhtmlcommon::end_pick_box().'</div>'; + if ($crstype eq 'community') { + $output .= '<p>'.&mt('You may also add users later, once the community has been created, by using the "Manage community users" link, accessible from the "Main Menu".').'</p>'; + } else { + $output .= '<p>'.&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".').'</p>'; + } return $output; } @@ -1800,10 +1871,18 @@ sub print_request_status { '<input type="hidden" name="showdom" value="" />'."\n". '<input type="hidden" name="cnum" value="" />'."\n"; if (@sortedtimes > 0) { + my $desctitle; + if ($env{'form.crstype'} eq 'any') { + $desctitle = &mt('Course/Community Description') + } elsif ($env{'form.crstype'} eq 'community') { + $desctitle = &mt('Community Description') + } else { + $desctitle = &mt('Course Description'); + } $output .= &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(). '<th>'.&mt('Action').'</th>'. - '<th>'.&mt('Course Description').'</th>'. + '<th>'.$desctitle.'</th>'. '<th>'.&mt('Domain').'</th>'; if ($env{'form.crstype'} eq 'any') { $output .= '<th>'.&mt('Type').'</th>'; @@ -1851,7 +1930,13 @@ sub print_request_status { } $output .= &Apache::loncommon::end_data_table(); } else { - $output .= '<div>'.&mt('You have no matching course requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>'; + if ($env{'form.crstype'} eq 'any') { +$output .= '<div>'.&mt('You have no matching course or community requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>'; + } elsif ($env{'form.crstype'} eq 'community') { + $output .= '<div>'.&mt('You have no matching community requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>'; + } else { + $output .= '<div>'.&mt('You have no matching course requests awaiting approval by a Domain Coordinator or held in a queue pending administrative action at your institution.').'</div>'; + } } $output .= ' <br /><input type="button" name="prev" value="'.&mt('Back').'" onclick="javascript:backPage(document.'.$formname.",'crstype'".')" />'; @@ -1892,8 +1977,12 @@ sub print_cancel_request { '<td>'.$showtype.'</td>'. &Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(). - '<br /><div class="LC_warning">'. - &mt('Cancelling the request will remove it from the queue of pending course requests').'</div>'; + '<br /><div class="LC_warning">'; + if ($crstype eq 'community') { + $output .= &mt('Cancelling the request will remove it from the queue of pending community requests').'</div>'; + } else { + $output .= &mt('Cancelling the request will remove it from the queue of pending course requests').'</div>'; + } $result = 'ok'; } else { $output = '<div class="LC_error">'.&mt('No record exists for the course ID').'</div>'; @@ -2266,8 +2355,10 @@ function validateForm() { ENDJS my $title = &mt('Brief Course Description'); + my $clonetitle = &mt('Clone content and settings from an existing course?'); if ($crstype eq 'community') { $title = &mt('Brief Community Description'); + $clonetitle = &mt('Clone content and settings from an existing community?'); } my $output .= $js_validate."\n".'<div>'.&Apache::lonhtmlcommon::start_pick_box(). &Apache::lonhtmlcommon::row_headline(). @@ -2285,7 +2376,7 @@ ENDJS $output .= $home_server_pick. &Apache::lonhtmlcommon::row_closure(). &Apache::lonhtmlcommon::row_headline(). - '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').' '.&mt('Clone content and settings from an existing course?').'</h3>'. + '<h3>'.&Apache::loncommon::help_open_topic('Course_Request_Clone').' '.$clonetitle.'</h3>'. &Apache::lonhtmlcommon::row_closure(1). &clone_form($dom,$formname,$crstype). &Apache::lonhtmlcommon::end_pick_box().'</div>'."\n"; @@ -2744,7 +2835,11 @@ sub print_request_outcome { $reqstatus = $disposition; my ($modified,$queued); if ($disposition eq 'rejected') { - $output = &mt('Your course request was rejected.'); + if ($crstype eq 'community') { + $output = &mt('Your community request was rejected.'); + } else { + $output = &mt('Your course request was rejected.'); + } if ($message) { $output .= '<div class="LC_warning">'.$message.'</div>'; } @@ -2768,14 +2863,22 @@ sub print_request_outcome { $reqstatus = 'created'; my $role_result = &update_requestors_roles($dom,$cnum,$crstype,$details, \%longroles); - $output = '<p>'.&mt('Your course request has been processed and the course has been created.'). - '<br />'.$role_result.'</p>'; + if ($crstype eq 'community') { + $output = '<p>'.&mt('Your community request has been processed and the community has been created.'); + } else { + $output = '<p>'.&mt('Your course request has been processed and the course has been created.'); + } + $output .= '<br />'.$role_result.'</p>'; $creationresult = 'created'; } else { - $output = '<span class="LC_error">'. - &mt('An error occurred when processing your course request.'). - '<br />'. - &mt('You may want to review the request details and submit the request again.'). + $output = '<span class="LC_error">'; + if ($crstype eq 'community') { + $output .= &mt('An error occurred when processing your community request.'); + } else { + $output .= &mt('An error occurred when processing your course request.'); + } + $output .= '<br />'. + &mt('You may want to review the request details and submit the request again.'). '</span>'; $creationresult = 'error'; } @@ -2808,7 +2911,12 @@ sub print_request_outcome { my $putresult = &Apache::lonnet::newput_dom('courserequestqueue',$request, $dom); if ($putresult eq 'ok') { - $output = &mt('Your course request has been recorded.').'<br />'. + if ($crstype eq 'community') { + $output .= &mt('Your community request has been recorded.'); + } else { + $output .= &mt('Your course request has been recorded.') + } + $output .= '<br />'. ¬ification_information($disposition,$req_notifylist, $cnum,$now); } else { @@ -2840,8 +2948,12 @@ sub print_request_outcome { &Apache::lonnet::logthis("Error saving course request status for $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult"); } if ($modified && $queued && $storeresult eq 'ok') { - $output .= '<p>'.&mt('Your course request has been updated').'</p>'. - ¬ification_information($disposition,$req_notifylist,$cnum,$now); + if ($crstype eq 'community') { + $output .= '<p>'.&mt('Your community request has been updated').'</p>'; + } else { + $output .= '<p>'.&mt('Your course request has been updated').'</p>'; + } + $output .= ¬ification_information($disposition,$req_notifylist,$cnum,$now); } if ($validationerror ne '') { $output .= '<span class="LC_warning">'.&mt('An error occurred validating your request with institutional data sources: [_1].',$validationerror).'</p>';