--- loncom/interface/slotrequest.pm 2009/04/23 17:33:54 1.95 +++ loncom/interface/slotrequest.pm 2010/05/27 04:44:33 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler for requesting to have slots added to a students record # -# $Id: slotrequest.pm,v 1.95 2009/04/23 17:33:54 bisitz Exp $ +# $Id: slotrequest.pm,v 1.107 2010/05/27 04:44:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -707,7 +707,8 @@ $lt{'or'} STUFF if (!$inhibit_return_link) { - $r->print(&mt('or').'</p>').&return_link($r); + $r->print(&mt('or').'</p>'); + &return_link($r); } else { $r->print('</p>'); } @@ -846,7 +847,7 @@ sub show_choices { (keys(%slots))) { &Apache::lonxml::debug("Checking Slot $slot"); - next if (!&allowed_slot($slot,$slots{$slot},undef,\%slots, + next if (!&allowed_slot($slot,$slots{$slot},$symb,\%slots, $consumed_uniqueperiods)); push(@available,$slot); @@ -1025,6 +1026,7 @@ sub show_table { my ($r,$mgr)=@_; my ($cnum,$cdom)=&get_course(); + my $crstype=&Apache::loncommon::course_type($cdom.'_'.$cnum); my %slots=&Apache::lonnet::dump('slots',$cdom,$cnum); if ( (keys(%slots))[0] =~ /^error: 2 /) { undef(%slots); @@ -1048,7 +1050,11 @@ sub show_table { } if (!keys(%slots)) { - $r->print('<div>'.&mt('No slots have been created in this course.').'</div>'); + if ($crstype eq 'Community') { + $r->print('<div>'.&mt('No slots have been created in this community.').'</div>'); + } else { + $r->print('<div>'.&mt('No slots have been created in this course.').'</div>'); + } return; } @@ -1084,6 +1090,10 @@ sub show_table { 'uniqueperiod' => 'Period of time slot is unique', 'scheduled' => 'Scheduled Students', 'proctor' => 'List of proctors'); + if ($crstype eq 'Community') { + $show_fields{'startreserve'} = &mt('Time members can start reserving'); + $show_fields{'scheduled'} = &mt('Scheduled Members'); + } my @show_order=('name','description','type','starttime','endtime', 'startreserve','secret','space','ip','symb', 'allowedsections','allowedusers','uniqueperiod', @@ -1428,21 +1438,23 @@ STUFF } sub manage_reservations { - my ($r,$type) = @_; + my ($r,$crstype) = @_; my $navmap = Apache::lonnavmaps::navmap->new(); $r->print('<p>' .&mt('Instructors may use a reservation system to place restrictions on when and where assignments can be worked on.') .'<br />' .&mt('One example is for management of laboratory space, which is only available at certain times, and has a limited number of seats.') - .'</p><p>' - .&mt('Your reservation status for any such assignments is listed below:') .'</p>' ); if (!defined($navmap)) { - $r->print('<div class="LC_error">'. - &mt('Unable to retrieve information about course contents'). - '</div>'); - &Apache::lonnet::logthis('Manage Reservations - could not create navmap object in '.lc($type).':'.$env{'request.course.id'}); + $r->print('<div class="LC_error">'); + if ($crstype eq 'Community') { + $r->print(&mt('Unable to retrieve information about community contents')); + } else { + $r->print(&mt('Unable to retrieve information about course contents')); + } + $r->print('</div>'); + &Apache::lonnet::logthis('Manage Reservations - could not create navmap object in '.lc($crstype).':'.$env{'request.course.id'}); return; } my (%parent,%shownparent,%container,%container_title,%contents); @@ -1450,7 +1462,11 @@ sub manage_reservations { my @backgrounds = ("LC_odd_row","LC_even_row"); my $numcolors = scalar(@backgrounds); my $location=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/whitespace_21.gif"); - $r->print('<table class="LC_data_table LC_tableOfContent">'."\n"); + my $slotheader = '<p>'. + &mt('Your reservation status for any such assignments is listed below:'). + '</p>'. + '<table class="LC_data_table LC_tableOfContent">'."\n"; + my $shownheader = 0; my $it=$navmap->getIterator(undef,undef,undef,1,undef,undef); while (my $resource = $it->next()) { if ($resource == $it->BEGIN_MAP()) { @@ -1545,11 +1561,19 @@ sub manage_reservations { foreach my $item (@maprows) { $rownum ++; my $bgcolor = $backgrounds[$rownum % $numcolors]; + if (!$shownheader) { + $r->print($slotheader); + $shownheader = 1; + } $r->print('<tr class="'.$bgcolor.'">'.$item.'</tr>'."\n"); } } $rownum ++; my $bgcolor = $backgrounds[$rownum % $numcolors]; + if (!$shownheader) { + $r->print($slotheader); + $shownheader = 1; + } $r->print('<tr class="'.$bgcolor.'"><td>'."\n"); for (my $i=0; $i<$depth; $i++) { $r->print('<img src="'.$location.'" alt="" />'); @@ -1584,11 +1608,19 @@ sub manage_reservations { } } } + if ($shownheader) { + $r->print('</table>'); + } if (!$reservable) { - $r->print('<span class="LC_info">'.&mt('No course items currently require a reservation to gain access.').'</span>'); + $r->print('<span class="LC_info">'); + if ($crstype eq 'Community') { + $r->print(&mt('No community items currently require a reservation to gain access.')); + } else { + $r->print(&mt('No course items currently require a reservation to gain access.')); + } + $r->print('</span>'); } - $r->print('</table>'. - '<p><a href="/adm/slotrequest?command=showresv">'. + $r->print('<p><a href="/adm/slotrequest?command=showresv">'. &mt('Reservation History').'</a></p>'); } @@ -1599,9 +1631,9 @@ sub show_map_row { $output .= '<img src="'.$location.'" alt="" />'; } if ($type eq 'page') { - $output .= '<img src="/adm/lonIcons/navmap.page.open.gif"> '."\n"; + $output .= '<img src="/adm/lonIcons/navmap.page.open.gif" alt="" /> '."\n"; } else { - $output .= '<img src="/adm/lonIcons/navmap.folder.open.gif"> '."\n"; + $output .= '<img src="/adm/lonIcons/navmap.folder.open.gif" alt="" /> '."\n"; } $output .= $title.'</td><td colspan="2"> </td>'."\n"; unshift (@{$maprows},$output); @@ -1619,12 +1651,21 @@ sub show_reservations { my $formname = 'slotlog'; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $crstype = &Apache::loncommon::course_type(); my %log=&Apache::lonnet::dump('nohist_'.$cdom.'_'.$cnum.'_slotlog',$udom,$uname); if ($env{'form.origin'} eq 'aboutme') { - $r->print('<div class="LC_fontsize_large">'. - &mt('History of student-reservable slots for: [_1]', - &Apache::loncommon::plainname($env{'form.uname'},$env{'form.udom'}, - 'firstname')).'</div>'); + $r->print('<div class="LC_fontsize_large">'); + my $name = &Apache::loncommon::plainname($env{'form.uname'},$env{'form.udom'}, + 'firstname'); + if ($crstype eq 'Community') { + $r->print(&mt('History of member-reservable slots for: [_1]', + $name)); + } else { + $r->print(&mt('History of student-reservable slots for: [_1]', + $name)); + + } + $r->print('</div>'); } $r->print('<form action="/adm/slotrequest" method="post" name="'.$formname.'">'); # set defaults @@ -1673,7 +1714,7 @@ sub show_reservations { } } my (%titles,%maptitles); - my %lt = &reservationlog_contexts(); + my %lt = &reservationlog_contexts($crstype); foreach my $id (sort { $log{$b}{'exe_time'}<=>$log{$a}{'exe_time'} } (keys(%log))) { next if (($log{$id}{'exe_time'} < $curr{'log_start_date'}) || ($log{$id}{'exe_time'} > $curr{'log_end_date'})); @@ -1735,7 +1776,7 @@ ENDSCRIPT } } else { $r->print('<span class="LC_info">' - .&mt('There are no transactions to display') + .&mt('There are no transactions to display.') .'</span>' ); } @@ -1753,6 +1794,7 @@ ENDSCRIPT sub show_reservations_log { my ($r) = @_; my $badslot; + my $crstype = &Apache::loncommon::course_type(); if ($env{'form.slotname'} eq '') { $r->print('<div class="LC_warning">'.&mt('No slot name provided').'</div>'); $badslot = 1; @@ -1763,7 +1805,13 @@ sub show_reservations_log { $badslot = 1; } elsif ($slot{type} ne 'schedulable_student') { my $description = &get_description($env{'form.slotname'},\%slot); - $r->print('<div class="LC_warning">'.&mt('Reservation history unavailable for non-student-reservable slot: [_1].',$description).'</div>'); + $r->print('<div class="LC_warning">'); + if ($crstype eq 'Community') { + $r->print(&mt('Reservation history unavailable for non-member-reservable slot: [_1].',$description)); + } else { + $r->print(&mt('Reservation history unavailable for non-student-reservable slot: [_1].',$description)); + } + $r->print('</div>'); $badslot = 1; } } @@ -1834,9 +1882,13 @@ sub show_reservations_log { my %slot=&Apache::lonnet::get_slot($env{'form.slotname'}); my $description = $slot{'description'}; - $r->print('<span class="LC_fontsize_large">'. - &mt('Reservation changes for student-reservable slot: [_1]',$description).'</span><br />'); - + $r->print('<span class="LC_fontsize_large">'); + if ($crstype eq 'Community') { + $r->print(&mt('Reservation changes for member-reservable slot: [_1]',$description)); + } else { + $r->print(&mt('Reservation changes for student-reservable slot: [_1]',$description)); + } + $r->print('</span><br />'); $r->print(&display_filter($formname,$cdom,$cnum,\%curr,$version,\@allsymbs)); my $showntablehdr = 0; my $tablehdr = &Apache::loncommon::start_data_table(). @@ -1854,7 +1906,7 @@ sub show_reservations_log { $minshown = 1 + ($curr{'page'} - 1) * $curr{'show'}; } } - my %lt = &reservationlog_contexts(); + my %lt = &reservationlog_contexts($crstype); my (%titles,%maptitles); foreach my $id (sort { $log{$b}{'exe_time'}<=>$log{$a}{'exe_time'} } (keys(%log))) { next if (($log{$id}{'exe_time'} < $curr{'log_start_date'}) || @@ -1932,7 +1984,7 @@ function chgPage(caller) { ENDSCRIPT } } else { - $r->print(&mt('There are no records to display')); + $r->print(&mt('There are no records to display.')); } $r->print('<input type="hidden" name="page" value="'.$curr{'page'}.'" />'. '<input type="hidden" name="slotname" value="'.$env{'form.slotname'}.'" />'. @@ -1974,6 +2026,7 @@ sub get_resource_title { } sub reservationlog_contexts { + my ($crstype) = @_; my %lt = &Apache::lonlocal::texthash ( any => 'Any', user => 'By student', @@ -1983,6 +2036,10 @@ sub reservationlog_contexts { release => 'Dropped reservation', usermanage => 'By student', ); + if ($crstype eq 'Community') { + $lt{'user'} = &mt('By member'); + $lt{'usermanage'} = $lt{'user'}; + } return %lt; } @@ -2003,7 +2060,8 @@ sub display_filter { &Apache::lonhtmlcommon::date_setter($formname,'log_end_date', $curr->{'log_end_date'},undef, undef,undef,undef,undef,undef,undef,$nolink); - my %lt = &reservationlog_contexts(); + my $crstype = &Apache::loncommon::course_type(); + my %lt = &reservationlog_contexts($crstype); $output .= '<td valign="top"><b>'.&mt('Window during which changes occurred:'). '</b><br /><table><tr><td>'.&mt('After:'). '</td><td>'.$startform.'</td></tr><tr><td>'.&mt('Before:').'</td><td>'. @@ -2051,36 +2109,41 @@ sub display_filter { } $output .= '<td> </td><td valign="middle"><input type="submit" value="'. &mt('Update Display').'" /></tr></table>'. - '<span class="LC_roleslog_note">'. - &mt('[_1]Note:[_2] Only changes made from servers running LON-CAPA 2.8.99.0 or later are displayed.'); + '<p class="LC_info">'. + &mt('Only changes made from servers running LON-CAPA [_1] or later are displayed.' + ,'2.9.0'); if ($version) { - $output .= ' '.&mt('This server is version [_3].','<b>','</b>',$version); + $output .= ' '.&mt('This LON-CAPA server is version [_1]',$version); } - $output .= '</span><hr noshade><br />'; + $output .= '</p><hr /><br />'; return $output; } sub upload_start { my ($r)=@_; - $r->print(&Apache::grades::checkforfile_js()); - my $result.='<table width="100%" border="0"><tr bgcolor="#E6FFFF"><td>'."\n"; - $result.=' <b>'. - &mt('Specify a file containing the slot definitions.'). - '</b></td></tr>'."\n"; - $result.='<tr bgcolor="#ffffe6"><td>'."\n"; - my $upfile_select=&Apache::loncommon::upfile_select_html(); - my $ignore=&mt('Ignore First Line'); - $result.=<<ENDUPFORM; -<form method="post" enctype="multipart/form-data" action="/adm/slotrequest" name="slotupload"> -<input type="hidden" name="command" value="csvuploadmap" /> -$upfile_select -<br /><input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Data" /> -<label><input type="checkbox" name="noFirstLine" />$ignore</label> -</form> -ENDUPFORM - $result.='</td></tr></table>'."\n"; - $result.='</td></tr></table>'."\n"; - $r->print($result); + $r->print( + &Apache::grades::checkforfile_js() + .'<h3>'.&mt('Specify a file containing the slot definitions.').'</h3>' + .'<form method="post" enctype="multipart/form-data"' + .' action="/adm/slotrequest" name="slotupload">' + .'<input type="hidden" name="command" value="csvuploadmap" />' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title(&mt('File')) + .&Apache::loncommon::upfile_select_html() + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title( + '<label for="noFirstLine">' + .&mt('Ignore First Line') + .'</label>') + .'<input type="checkbox" name="noFirstLine" id="noFirstLine" />' + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + .'<p>' + .'<input type="button" onclick="javascript:checkUpload(this.form);"' + .' value="'.&mt('Next').'" />' + .'</p>' + .'</form>' + ); } sub csvuploadmap_header { @@ -2102,8 +2165,8 @@ sub csvuploadmap_header { Total number of records found in file: $distotal <hr /> Enter as many fields as you can. The system will inform you and bring you back to this page if the data selected is insufficient to create the slots.<hr /> -<input type="button" value="Reverse Association" onClick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" /> -<label><input type="checkbox" name="noFirstLine" $checked />$ignore</label> +<input type="button" value="Reverse Association" onclick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" /> +<label><input type="checkbox" name="noFirstLine"$checked />$ignore</label> <input type="hidden" name="associate" value="" /> <input type="hidden" name="datatoken" value="$datatoken" /> <input type="hidden" name="fileupload" value="$env{'form.fileupload'}" /> @@ -2127,7 +2190,7 @@ sub csvuploadmap_footer { </table> <input type="hidden" name="nfields" value="$i" /> <input type="hidden" name="keyfields" value="$keyfields" /> -<input type="button" onClick="javascript:verify(this.form)" value="$buttontext" /><br /> +<input type="button" onclick="javascript:verify(this.form)" value="$buttontext" /><br /> </form> ENDPICK }