--- loncom/interface/lonmsgdisplay.pm 2009/02/04 20:14:45 1.111 +++ loncom/interface/lonmsgdisplay.pm 2009/06/11 16:48:33 1.126 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging display # -# $Id: lonmsgdisplay.pm,v 1.111 2009/02/04 20:14:45 weissno Exp $ +# $Id: lonmsgdisplay.pm,v 1.126 2009/06/11 16:48:33 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -136,6 +136,9 @@ sub folderlist { ); + # set se lastvisit for the new mail check in the toplevel menu + &Apache::lonnet::appenv({'user.mailcheck.lastvisit'=>time}); + my %actions = &Apache::lonlocal::texthash( view => 'View Folder', rename => 'Rename Folder', @@ -519,7 +522,10 @@ sub discourse { \%defaultUsers, 1,"selectedusers",1,'email') ) { - $result .= '<fieldset id="LC_activeusers"><legend><b>'.&mt('Bcc: course members with current access').'</b></legend><form name="activeusers">'; + $result .= '<fieldset id="LC_activeusers"><legend>' + .&mt('Bcc: course members with current access') + .'</legend>' + .'<form name="activeusers">'; $result .= $tmptext.'</form></fieldset><br />'; if (ref($statushash) eq 'HASH') { $statushash->{'active'} = 1; @@ -531,7 +537,10 @@ sub discourse { \%defaultUsers, 1, "selectedusers",0,'email') ) { - $result .= '<fieldset id="LC_previoususers"><legend><b>'.&mt('Bcc: course members with expired access').'</b></legend><form name="previoususers">'; + $result .= '<fieldset id="LC_previoususers"><legend>' + .&mt('Bcc: course members with expired access') + .'</legend>' + .'<form name="previoususers">'; $result .= $tmptext.'</form></fieldset><br />'; if (ref($statushash) eq 'HASH') { $statushash->{'previous'} = 1; @@ -544,7 +553,10 @@ sub discourse { \%defaultUsers, 1, "selectedusers",0,'email') ) { - $result .= '<fieldset id="LC_futureusers"><legend><b>'.&mt('Bcc: course members with future access').'</b></legend><form name="previoususers">'; + $result .= '<fieldset id="LC_futureusers"><legend>' + .&mt('Bcc: course members with future access') + .'</legend>' + .'<form name="previoususers">'; $result .= $tmptext.'</form></fieldset>'; if (ref($statushash) eq 'HASH') { $statushash->{'future'} = 1; @@ -619,8 +631,9 @@ sub disgroup { if (ref($access_status) eq 'HASH') { $access_status->{$status} = $$numitems{$status}; } - $r->print('<fieldset><legend><b>'.$lt{$status}. - '</b></legend><form name="'.$formname.'">'. + $r->print('<fieldset>'. + '<legend>'.$lt{$status}.'</legend>'. + '<form name="'.$formname.'">'. '<span class="LC_nobreak">'. '<input type="button" value="'.&mt('Check All').'" '. 'onclick="javascript:toggleAll('."this.form,'check'".')" />'. @@ -759,7 +772,7 @@ sub discrit { .'<div class="LC_warning">' .&mt('Access to other pages will be prevented until you have moved all critical messages to your inbox.') .'</div><br />' - .'<form action="/adm/email" method="POST">' + .'<form action="/adm/email" method="post">' .'<input type="hidden" name="confirm" value="true" />'; my %what=&Apache::lonnet::dump('critical'); my $result = ''; @@ -838,6 +851,7 @@ sub sortedmessages { } foreach my $msgid (@messages) { + next if ($msgid eq ''); my $esc_msgid=&escape($msgid); my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid,$processid,$symb,$error) = &Apache::lonmsg::unpackmsgid($esc_msgid,$folder,undef, @@ -1078,11 +1092,13 @@ ENDDISHEADER $r->print("</tr>\n"); my $suffix = &Apache::lonmsg::foldersuffix($folder); + my $count = 0; for (my $n=$firstdis;$n<=$lastdis;$n++) { my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID, $description,$recv_name,$recv_domain)= @{$temp[$n]}; if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) { + $count ++; if ($status eq 'new') { $r->print('<tr class="LC_mail_new">'); } elsif ($status eq 'read') { @@ -1114,7 +1130,6 @@ ENDDISHEADER } } my $localsenttime = &Apache::lonlocal::locallocaltime($sendtime); - my $count = $n +1; $r->print('<td align="right"><span class="LC_nobreak">'.(($status eq 'new')?'<b>':''). $count.'.'.(($status eq 'new')?'</b>':'').' '. '<input type="checkbox" name="delmark"'. @@ -1185,7 +1200,7 @@ ENDDISHEADER '" onclick="javascript:validate_checkedaction()"/></td>'."\n". '</tr></table>'); my $postedstartdis=$startdis+1; - $r->print('<input type="hidden" name="folder" value="'.$folder.'" /><input type="hidden" name="startdis" value="'.$postedstartdis.'" /><input type="hidden" name="interdis" value="'.$env{'form.interdis'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" ><input type="hidden" name="markedaction" value="" /></form>'); + $r->print('<input type="hidden" name="folder" value="'.$folder.'" /><input type="hidden" name="startdis" value="'.$postedstartdis.'" /><input type="hidden" name="interdis" value="'.$env{'form.interdis'}.'" /><input type="hidden" name="msgstatus" value="'.$msgstatus.'" /><input type="hidden" name="markedaction" value="" /></form>'); if ($numblocked > 0) { $r->print(&blocked_in_folder($numblocked,$startblock,$endblock, \%setters)); @@ -1240,7 +1255,7 @@ sub compout { } elsif ($multiforward) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>"/adm/email?folder=".&escape($folder), - text=>"Display all Messages"}); + text=>"Display All Messages"}); &printheader($r,'/adm/email?compose=multiforward', 'Forwarding Multiple Messages'); if ($multiforward > 1) { @@ -1576,7 +1591,7 @@ $wysiwyglink); $r->print(<<"ENDCOMP"); $attachrow </table><br /> -$latexHelp +$latexHelp<br /> <textarea name="message" id="message" cols="80" rows="15" wrap="hard">$dismsg </textarea>$wysiwyglink $sendmode @@ -1679,7 +1694,7 @@ sub additional_rec_row { my $bcc = &mt('Bcc:'); my $exmpl = &mt('username:domain,username:domain,...'); my $output = <<"ENDADD"; -<tr><td colspan="3"><fieldset id="LC_additionalrecips"><legend><b>$lt->{'ad'}</b> <tt>($exmpl)</tt>:</legend><table> +<tr><td colspan="3"><fieldset id="LC_additionalrecips"><legend>$lt->{'ad'} <tt>($exmpl)</tt></legend><table> <tr><td> </td><td>$lt->{'to'}</td><td><input type="text" size="50" name="additionalrec_to" /></td></tr> <tr><td> </td><td>$cc</td><td><input type="text" size="50" name="additionalrec_cc" /></td></tr> <tr><td> </td><td>$bcc</td><td><input type="text" size="50" name="additionalrec_bcc" /></td></tr></table></fieldset></td></tr> @@ -1885,21 +1900,23 @@ sub facetoface { 'subm' => 'Retrieve discussion and message records', 'newr' => 'New Record (record is visible to '.lc($crstype).' '.$leaders.')', 'post' => 'Post this Record'); - $r->print(<<"ENDTREC"); -<h3>$lt{'head'}</h3> -<form method="post" action="/adm/email" name="stdselect"> -<input type="hidden" name="recordftf" value="retrieve" /> -<table> -<tr><td>$lt{'user'}:</td><td><input type="text" size="12" name="recuname" value="$env{'form.recuname'}" /></td> -<td rowspan="2"> -$stdbrws -<input type="submit" value="$lt{'subm'}" /></td> -</tr> -<tr><td>$lt{'dom'}:</td> -<td>$domform</td></tr> -</table> -</form> -ENDTREC + + $r->print('<h2>'.$lt{'head'}.'</h2>' + .'<form method="post" action="/adm/email" name="stdselect">' + .'<input type="hidden" name="recordftf" value="retrieve" />' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title($lt{'user'}) + .'<input type="text" size="12" name="recuname" value="'.$env{'form.recuname'}.'" />' + .' '.$stdbrws + .&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title($lt{'dom'}) + .$domform + .&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + .'<br />' + .'<input type="submit" value="'.$lt{'subm'}.'" />' + ); + if (($stage ne 'query') && ($env{'form.recdomain'}) && ($env{'form.recuname'})) { chomp($env{'form.newrecord'}); @@ -1908,8 +1925,17 @@ ENDTREC $env{'form.recuname'}, $env{'form.recdomain'}); } - $r->print('<h3>'.&Apache::loncommon::plainname($env{'form.recuname'}, - $env{'form.recdomain'}).'</h3>'); + my $aboutmelink=&Apache::loncommon::aboutmewrapper( + &Apache::loncommon::plainname($env{'form.recuname'} + ,$env{'form.recdomain'}) + ,$env{'form.recuname'},$env{'form.recdomain'}); + $r->print('<hr />' + .'<h2>' + .&mt('Discussion and message records for [_1] ([_2])' + ,$aboutmelink + ,$env{'form.recuname'}.':'.$env{'form.recdomain'}) + .'<h2>' + ); &disfacetoface($r,$env{'form.recuname'},$env{'form.recdomain'}); $r->print(<<ENDRHEAD); <form method="post" action="/adm/email"> @@ -2148,7 +2174,7 @@ END foreach my $block (@{$typeorder}) { my $blockstatus = ''; if ($blocks->{$block} eq 'on') { - $blockstatus = 'checked="true"'; + $blockstatus = 'checked="checked"'; } $r->print('<label><input type="checkbox" name="'.$block.'_'.$parmcount.'" '.$blockstatus.' value="1" />'.$types->{$block}.'</label><br />'); } @@ -2215,7 +2241,7 @@ END sub blocktype_text { my %types = &Apache::lonlocal::texthash( 'com' => 'Messaging', - 'chat' => 'Chat', + 'chat' => 'Chat Room', 'boards' => 'Discussion', 'port' => 'Portfolio', 'groups' => 'Groups', @@ -2278,63 +2304,35 @@ sub displaymessage { &printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'}); my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'}); -# Functions and Actions - my $li_start='<span class="LC_nobreak">• '; - my $li_end='</span> '; - # Prepare available functions - my $functionlist=''; + my @functionlist; if (!$content{'noreplies'}) { - $functionlist.=$li_start - .'<a href="/adm/email?replyto='.&escape($msgid).$sqs.'">' + push(@functionlist,'<a href="/adm/email?replyto='.&escape($msgid).$sqs.'">' .&mt('Reply') - .'</a>' - .$li_end; + .'</a>'); } - $functionlist.=$li_start - .'<a href="/adm/email?forward='.&escape($msgid).$sqs.'">' + push(@functionlist,'<a href="/adm/email?forward='.&escape($msgid).$sqs.'">' .&mt('Forward') - .'</a>' - .$li_end; - $functionlist.=$li_start - .'<a href="/adm/email?markunread='.&escape($msgid).$sqs.'">' + .'</a>'); + push(@functionlist,'<a href="/adm/email?markunread='.&escape($msgid).$sqs.'">' .&mt('Mark Unread') - .'</a>' - .$li_end; - $functionlist.=$li_start - .'<a href="/adm/email?markdel='.&escape($msgid).$sqs.'">' + .'</a>'); + push(@functionlist,'<a href="/adm/email?markdel='.&escape($msgid).$sqs.'">' .&mt('Delete') - .'</a>' - .$li_end; - $functionlist.=$li_start - .'<a href="/adm/email?'.$sqs.'">' + .'</a>'); + push(@functionlist,'<a href="/adm/email?'.$sqs.'">' .&mt('Back to Folder Display') - .'</a>' - .$li_end; + .'</a>'); if ($counter > 0){ - $functionlist.=$li_start - .'<a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs.'">' - .&mt('Previous') - .'</a>' - .$li_end; + push(@functionlist,'<a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs.'">' + .&mt('Previous') + .'</a>'); } if ($counter < $number_of_messages - 1){ - $functionlist.=$li_start - .'<a href="/adm/email?display='.$messages[$counter+1]->[5].$sqs.'">' - .&mt('Next') - .'</a>' - .$li_end; - } -# Print functions - $r->print('<div class="LC_left_float">' - .'<fieldset>' - .'<legend><span class="LC_mail_functions">' - .&mt('Functions') - .'</span></legend>' - .$functionlist - .'</fieldset>' - .'</div>' - ); + push(@functionlist,'<a href="/adm/email?display='.$messages[$counter+1]->[5].$sqs.'">' + .&mt('Next') + .'</a>'); + } # Prepare available actions my $symb; @@ -2343,42 +2341,58 @@ sub displaymessage { } elsif (defined($content{'baseurl'})) { $symb=&Apache::lonnet::symbread($content{'baseurl'}); } + my @actionlist; if ($env{'user.adv'}) { - my $actionlist=''; if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) { - $actionlist.=$li_start - .&Apache::loncommon::track_student_link( - &mt('View recent activity'),$content{'sendername'},$content{'senderdomain'},'check') - .$li_end; + push(@actionlist,&Apache::loncommon::track_student_link( + &mt('View recent activity') + ,$content{'sendername'} + ,$content{'senderdomain'} + ,'check')); } if (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) && $symb) { - $actionlist.=$li_start - .&Apache::loncommon::pprmlink( - &mt('Set/Change parameters'),$content{'sendername'},$content{'senderdomain'},$symb,'check') - .$li_end; + push(@actionlist,&Apache::loncommon::pprmlink( + &mt('Set/Change parameters') + ,$content{'sendername'} + ,$content{'senderdomain'} + ,$symb + ,'check')); } if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'}) && $symb) { - $actionlist.=$li_start - .&Apache::loncommon::pgrdlink( - &mt('Set/Change grades'),$content{'sendername'},$content{'senderdomain'},$symb,'check') - .$li_end; - } - -# Print actions - if ($actionlist) { - $r->print('<div class="LC_left_float">' - .'<fieldset>' - .'<legend>' - .&mt('[_1]Currently available actions[_2] (will open extra window):','<span class="LC_mail_functions">','</span>') - .'</legend>' - .$actionlist - .'</fieldset>' - .'</div>' - ); - } + push(@actionlist,&Apache::loncommon::pgrdlink( + &mt('Set/Change grades') + ,$content{'sendername'} + ,$content{'senderdomain'} + ,$symb + ,'check')); + } } +# Print functionlist and actionlist in page header + my $functions='<div class="LC_columnSection">'; + + # Functionlist + $functions.=&Apache::lonhtmlcommon::start_funclist(); + foreach my $item (@functionlist) { + $functions.=&Apache::lonhtmlcommon::add_item_funclist($item); + } + $functions .= &Apache::lonhtmlcommon::end_funclist(); + + # Actionlist + if (@actionlist) { + my $legendtext=&mt('Currently available actions (will open extra window)'); + $functions.=&Apache::lonhtmlcommon::start_funclist($legendtext); + foreach my $item (@actionlist) { + $functions.=&Apache::lonhtmlcommon::add_item_funclist($item); + } + $functions.=&Apache::lonhtmlcommon::end_funclist(); + } + + $functions.='</div>'; + $r->print(&Apache::loncommon::head_subbox($functions)); + + my ($tonum,$tolist,$cclist,$bcclist,$groupcclist,%recipients); if ($content{'recipid'}) { $tonum = &retrieve_recips('display',\%content,\%recipients); @@ -2800,15 +2814,14 @@ sub displayresource { sub header { my ($r,$title,$baseurl)=@_; - my $extra = &Apache::loncommon::studentbrowser_javascript(); if ($baseurl) { $extra .= "<base href=\"".&Apache::lonnet::absolute_url()."/$baseurl\" />"; } - $r->print(&Apache::loncommon::start_page('Communication and Messages', + $r->print(&Apache::loncommon::start_page('Communication', $extra)); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (($title?$title:'Communication and Messages'))); + (($title?$title:'Send and Receive Messages'))); } # ---------------------------------------------------------------- Print header @@ -3179,7 +3192,7 @@ sub sendoffmail { &Apache::loncommunicate::menu($r); } } else { - $r->print('<p><span class="LC_error">'.&mt('Could not deliver message').'</span> '. + $r->print('<p>'.&Apache::lonhtmlcommon::confirm_success(&mt('Could not deliver message'),1).'<br /> '. &mt('Please use the browser "Back" button and correct the recipient addresses ([_1]).',$sendstatus).'</p>'); } } @@ -3483,7 +3496,7 @@ sub handler { my $showfolder = $env{'form.newfolder'}; my ($makeresult,$warning) = &makefolder($env{'form.newfolder'}); if ($makeresult eq 'ok') { - $r->print(&mt('Mail folder "[_1]" created.',$showfolder).'<br />'); + $r->print(&mt('Folder "[_1]" created.',$showfolder).'<br />'); } else { $r->print(&mt('Creation failed.').' '.$makeresult.'<br />'. $warning); @@ -3498,7 +3511,7 @@ sub handler { my $showfolder = ''; my $delresult = &deletefolder($folder); if ($delresult eq 'ok') { - $r->print(&mt('Mail folder "[_1]" deleted.',$folder).'<br />'); + $r->print(&mt('Folder "[_1]" deleted.',$folder).'<br />'); $env{'form.folder'} = ''; } else { $r->print(&mt('Deletion failed.').' '.$delresult.'<br />'); @@ -3511,7 +3524,7 @@ sub handler { my $showfolder = $env{'form.renamed'}; my $renresult = &renamefolder($folder); if ($renresult eq 'ok') { - $r->print(&mt('Mail folder "[_1]" renamed "[_2]".',$folder,$showfolder).'<br />'); + $r->print(&mt('Folder "[_1]" renamed to "[_2]".',$folder,$showfolder).'<br />'); } else { $r->print(&mt('Renaming failed.').' '.$renresult.'<br />'); $showfolder = $folder; @@ -3519,7 +3532,7 @@ sub handler { &Apache::loncommunicate::menu($r); &disall($r,$showfolder,$msgstatus); } else { - &printheader($r,'','Display all Messages'); + &printheader($r,'','Display All Messages'); &Apache::loncommunicate::menu($r); &disall($r,($folder?$folder:$dismode),$msgstatus); }