--- loncom/interface/lonmsgdisplay.pm 2006/06/29 17:50:01 1.35.2.1 +++ loncom/interface/lonmsgdisplay.pm 2006/12/06 23:44:33 1.46 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines for messaging display # -# $Id: lonmsgdisplay.pm,v 1.35.2.1 2006/06/29 17:50:01 albertel Exp $ +# $Id: lonmsgdisplay.pm,v 1.46 2006/12/06 23:44:33 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -138,24 +138,133 @@ my $interdis; sub folderlist { my $folder=shift; - my @allfolders=&Apache::lonnet::getkeys('email_folders'); - if ($allfolders[0]=~/^error:/) { @allfolders=(); } - return '
':''); + return $output; +} + +sub get_permanent_folders { + my %permfolders = &Apache::lonlocal::texthash ( + '' => 'INBOX', + 'trash' => 'TRASH', + 'new' => 'New Messages Only', + 'critical' => 'Critical', + 'sent' => 'Sent Messages', + ); + return %permfolders; } sub scrollbuttons { @@ -195,14 +304,128 @@ sub statuschange { # ============================================================= Make new folder sub makefolder { - my ($newfolder)=@_; - if (($newfolder eq 'sent') - || ($newfolder eq 'critical') - || ($newfolder eq 'trash') - || ($newfolder eq 'new')) { return; } - &Apache::lonnet::put('email_folders',{$newfolder => time}); + my ($newfolder) = @_; + my %permfolders = &get_permanent_folders(); + my %userfolders = &Apache::lonmsg::get_user_folders(); + my ($outcome,$warning); + if (defined($userfolders{$newfolder})) { + return &mt('The folder name: "[_1]" is already in use for an existing folder.',$newfolder); + } + foreach my $perm (keys(%permfolders)) { + if ($permfolders{$perm} eq $newfolder) { + return &mt('The folder name: "[_1]" is already used for one of the folders automatically generated by the system.',$newfolder); + } + } + if (&get_msgfolder_lock() eq 'ok') { + my %counter_hash = &Apache::lonnet::get('email_folders',["\0".'idcount']); + my $lastcount = $counter_hash{"\0".'idcount'}; + my $folder_id = $lastcount + 1; + while (defined($userfolders{$folder_id})) { + $folder_id ++; + } + my %folderinfo = ( + id => $folder_id, + created => time, + ); + $outcome = + &Apache::lonnet::put('email_folders',{$newfolder => \%folderinfo, + "\0".'idcount' => $folder_id}); + my $releaseresult = &release_msgfolder_lock(); + if ($releaseresult ne 'ok') { + $warning = $releaseresult; + } + } else { + $outcome = 'Error - could not obtain lock on email folders record.'; + } + return ($outcome,$warning); } +# ============================================================= Delete folder + +sub deletefolder { + my ($folder)=@_; + my %permfolders = &get_permanent_folders(); + if (defined($permfolders{$folder})) { + return &mt('The folder [_1] may not be deleted',$folder); + } + my %userfolders = &Apache::lonmsg::get_user_folders(); + if (!defined($userfolders{$folder})) { + return &mt('The folder [_1] does not exist so deletion is not required.', + $folder); + } + # check folder is empty; + my $suffix=&Apache::lonmsg::foldersuffix($folder); + my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix); + if (@messages > 0) { + return &mt('The folder [_1] contains messages so it may not be deleted.'). + ''.
+ ' '. + &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(); + $result .= " | $lt{'name'} | ". + "$lt{'usnm'} | ". + "$lt{'doma'} | ". + &Apache::loncommon::end_data_table_header_row(); + foreach my $key (sort(keys(%{$Sortby{$status}}))) { + foreach my $user (@{$Sortby{$status}{$key}}) { + $result .= + &Apache::loncommon::start_data_table_row(). + ''. + $$memberinfo{$user}{'fullname'}.' | '. + ''.$$memberinfo{$user}{'uname'}.' | '. + ''.$$memberinfo{$user}{'udom'}.' | '. + &Apache::loncommon::end_data_table_row(); + } + } + $result .= &Apache::loncommon::end_data_table(); + } + } + $result .= ''; + } + $result .= ' |
---|
');
- my @allfolders=&Apache::lonnet::getkeys('email_folders');
- if ($allfolders[0]=~/^error:/) { @allfolders=(); }
+ my %gotfolders = &Apache::lonmsg::get_user_folders();
+ my %userfolders;
+ foreach my $key (keys(%gotfolders)) {
+ $userfolders{$key} = $key;
+ }
$r->print(
&Apache::loncommon::select_form('','movetofolder',
- ( map { $_ => $_ } @allfolders))
- );
+ %userfolders));
my $postedstartdis=$startdis+1;
$r->print('');
if ($numblocked > 0) {
my $beginblock = &Apache::lonlocal::locallocaltime($startblock);
my $finishblock = &Apache::lonlocal::locallocaltime($endblock);
$r->print('
'.
- $numblocked.' '.&mt('message(s) is/are not viewable because display of LON-CAPA messages sent to you by other students between').' '.$beginblock.' '.&mt('and').' '.$finishblock.' '.&mt('is currently being blocked because of online exams.'));
- &build_block_table($r,$startblock,$endblock,\%setters);
+ &mt('[_1,quant,message is, messages are] not viewable because display of LON-CAPA messages sent to you by other students between [_2] and [_3] is currently being blocked because of online exams.',$numblocked,$beginblock,$finishblock));
+ $r->print(&Apache::loncommon::build_block_table($startblock,$endblock,
+ \%setters));
}
}
@@ -709,8 +1113,14 @@ ENDDISHEADER
sub compout {
my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder,$dismode)=@_;
my $suffix=&Apache::lonmsg::foldersuffix($folder);
-
- if ($broadcast eq 'individual') {
+ my ($cdom,$cnum,$group,$refarg);
+ if (exists($env{'form.group'})) {
+ $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ $group = $env{'form.group'};
+ my $action = 'composing';
+ $r->print(&groupmail_header($action,$group,$cdom,$cnum));
+ } elsif ($broadcast eq 'individual') {
&printheader($r,'/adm/email?compose=individual',
'Send a Message');
} elsif ($broadcast) {
@@ -802,15 +1212,34 @@ sub compout {
}
}
my $citation=&displayresource(%content);
+ my ($can_grp_broadcast,$viewgrps,$editgrps);
if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }
if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }
if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }
$r->print(
'
'.&mt('Replying to').' '. &Apache::loncommon::aboutmewrapper( @@ -821,20 +1250,13 @@ sub compout { ''. ' | ||||||||||||||||||||||||||||||||||||||||||
$lt{'us'}: | $selectlink | |||||||||||||||||||||||||||||||||||||||||
$lt{'do'}: | -$domform | |||||||||||||||||||||||||||||||||||||||||
$lt{'ad'} username\@domain,username\@domain, ... + $lt{'ad'} | username:domain,username:domain, ...
| $lt{'sb'}: |
@@ -850,6 +1272,14 @@ $disbase
| $citation ENDCOMP + if (exists($env{'form.ref'})) { + $r->print(''); + } + if (exists($env{'form.group'})) { + $r->print(''); + } } else { # $broadcast is 'upload' $r->print(< -username1\@domain1: text -username2\@domain2: text -username3\@domain1: text +username1:domain1: text +username2:domain2: text +username3:domain1: text The messages will be assembled from all lines with the respective -username\@domain, and appended to the general message text. +username:domain, and appended to the general message text.
$dispcrit @@ -879,9 +1309,13 @@ $dispcrit ENDUPLOAD } if ($broadcast eq 'group') { - &discourse($r); - my $studentsel = &discourse(); - $r->print($studentsel); + if ($group eq '') { + my $studentsel = &discourse(); + $r->print($studentsel); + } + } + if ($env{'form.displayedcrit'}) { + $r->print(''); } $r->print(''. &Apache::lonfeedback::generate_preview_button('compemail','message'). @@ -890,6 +1324,20 @@ ENDUPLOAD # ---------------------------------------------------- Display all face to face +sub recipient_input_row { + my ($dom,%lt) = @_; + my $domform = &Apache::loncommon::select_dom_form($dom,'recdomain'); + my $selectlink= + &Apache::loncommon::selectstudent_link('compemail','recuname', + 'recdomain'); + my $output = <<"ENDREC"; + $lt{'us'}: | $selectlink | $lt{'do'}: |
+$domform | '.$lt{'head'}.''); - foreach (keys %env) { - if ($_ =~ m/^form\.modify_(\w+)$/) { + foreach my $envkey (keys(%env)) { + if ($envkey =~ m/^form\.modify_(\d+)$/) { $adds{$1} = $1; $removals{$1} = $1; $modtotal ++; - } elsif ($_ =~ m/^form\.cancel_(\d+)$/) { + } elsif ($envkey =~ m/^form\.cancel_(\d+)$/) { $cancels{$1} = $1; unless ( defined($removals{$1}) ) { $removals{$1} = $1; $canceltotal ++; } - } elsif ($_ =~ m/^form\.add_(\d+)$/) { + } elsif ($envkey =~ m/^form\.add_(\d+)$/) { $adds{$1} = $1; $addtotal ++; - } + } } - foreach (keys %removals) { - my $hashkey = $env{'form.key_'.$_}; + foreach my $key (keys(%removals)) { + my $hashkey = $env{'form.key_'.$key}; &Apache::lonnet::del('comm_block',["$hashkey"], $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'} ); } - foreach (keys %adds) { - unless ( defined($cancels{$_}) ) { - my ($newstart,$newend) = &get_dates_from_form($_); + foreach my $key (keys(%adds)) { + unless ( defined($cancels{$key}) ) { + my ($newstart,$newend) = &get_dates_from_form($key); my $newkey = $newstart.'____'.$newend; - $blocking{$newkey} = $env{'user.name'}.':'.$env{'user.domain'}.':'.$env{'form.title_'.$_}; + my $blocktypes = &get_block_choices($key); + $blocking{$newkey} = { + setter => $env{'user.name'}.':'.$env{'user.domain'}, + event => &escape($env{'form.title_'.$key}), + blocks => $blocktypes, + }; } } if ($addtotal + $modtotal > 0) { @@ -1235,6 +1689,20 @@ sub get_blockdates { } } +sub get_block_choices { + my $item = shift; + my $blocklist; + my ($typeorder,$types) = &blocktype_text(); + foreach my $type (@{$typeorder}) { + if ($env{'form.'.$type.'_'.$item}) { + $blocklist->{$type} = 'on'; + } else { + $blocklist->{$type} = 'off'; + } + } + return $blocklist; +} + sub display_blocker_status { my ($r,$records,$ltext) = @_; my $parmcount = 0; @@ -1243,13 +1711,15 @@ sub display_blocker_status { 'modi' => 'Modify', 'canc' => 'Cancel', ); + my ($typeorder,$types) = &blocktype_text(); $r->print(&Apache::loncommon::start_data_table()); $r->print(<<"END");$$ltext{'dura'} |
- $$ltext{'setb'} |
- $$ltext{'even'} |
- $$ltext{'actn'}? |
+ $ltext->{'dura'} |
+ $ltext->{'setb'} |
+ $ltext->{'even'} |
+ $ltext->{'blck'} |
+ $ltext->{'actn'}? |
$$ltext{'star'}: $startform |
+ $$ltext{'endd'}: $endform $ltext->{'star'}: $startform |
$ltext->{'endd'}: $endform $settername |
+ |
+END
+ foreach my $block (@{$typeorder}) {
+ my $blockstatus = '';
+ if ($blocks->{$block} eq 'on') {
+ $blockstatus = 'checked="true"';
+ }
+ $r->print(' |
'); + } + $r->print(<<"END"); + END $r->print(&Apache::loncommon::end_data_table_row()); @@ -1282,19 +1766,6 @@ END return $parmcount; } -sub parse_block_record { - my ($record) = @_; - my ($setuname,$setudom,$title); - my @data = split(/:/,$record,3); - if (scalar(@data) eq 2) { - $title = $data[1]; - ($setuname,$setudom) = split(/@/,$data[0]); - } else { - ($setuname,$setudom,$title) = @data; - } - return ($setuname,$setudom,$title); -} - sub display_addblocker_table { my ($r,$parmcount,$ltext) = @_; my $start = time; @@ -1309,21 +1780,30 @@ sub display_addblocker_table { 'exam' => 'e.g., Exam 1', 'addn' => 'Add new communication blocking periods' ); + my ($typeorder,$types) = &blocktype_text(); $r->print(<<"END"); $lt{'addn'}END $r->print(&Apache::loncommon::start_data_table()); $r->print(<<"END");$$ltext{'dura'} |
- $$ltext{'even'} $lt{'exam'} |
- $$ltext{'actn'}? |
+ $ltext->{'dura'} |
+ $ltext->{'even'} $lt{'exam'} |
+ $ltext->{'blck'} |
+ $ltext->{'actn'}? |
$$ltext{'star'}: $startform |
+ $$ltext{'endd'}: $endform $ltext->{'star'}: $startform |
$ltext->{'endd'}: $endform
+ |
+END
+ foreach my $block (@{$typeorder}) {
+ $r->print(' |
'); + } + $r->print(<<"END"); +
END
$r->print(&Apache::loncommon::end_data_table_row());
@@ -1331,86 +1811,17 @@ END
return;
}
-sub blockcheck {
- my ($setters,$startblock,$endblock) = @_;
- # Retrieve active student roles and active course coordinator/instructor roles
- my %live_courses =
- map { $_ => 1} &Apache::loncommon::findallcourses();
- # FIXME should really probe for apriv, but ::allowed can only probe the
- # currently active role
- my %staff_of =
- map { $_ => 1} &Apache::loncommon::findallcourses(['cc','in']);
-
- # Retrieve blocking times and identity of blocker for active courses
- # for students.
- return if (!%live_courses);
-
- foreach my $course (keys(%live_courses)) {
- my $cdom = $env{'course.'.$course.'.domain'};
- my $cnum = $env{'course.'.$course.'.num'};
-
- # if they are a staff member and are currently not playing student
- next if ( $staff_of{$course}
- && ($env{'request.role'} !~ m{^st\./$cdom/$cnum}));
-
- $setters->{$course} = {};
- $setters->{$course}{'staff'} = [];
- $setters->{$course}{'times'} = [];
- my %records = &Apache::lonnet::dump('comm_block',$cdom,$cnum);
- foreach my $record (keys %records) {
- my ($start,$end) = ($record =~ m/^(\d+)____(\d+)$/);
- if ($start <= time && $end >= time) {
- my ($staff_name,$staff_dom,$title) =
- &parse_block_record($records{$record});
- push(@{$$setters{$course}{'staff'}}, [$staff_name,$staff_dom]);
- push(@{$$setters{$course}{'times'}}, [$start,$end]);
- if ( ($$startblock == 0) || ($$startblock > $1) ) {
- $$startblock = $1;
- }
- if ( ($$endblock == 0) || ($$endblock < $2) ) {
- $$endblock = $2;
- }
- }
- }
- }
-}
-
-sub build_block_table {
- my ($r,$startblock,$endblock,$setters) = @_;
- my %lt = &Apache::lonlocal::texthash(
- 'cacb' => 'Currently active communication blocks',
- 'cour' => 'Course',
- 'dura' => 'Duration',
- 'blse' => 'Block set by'
+sub blocktype_text {
+ my %types = &Apache::lonlocal::texthash(
+ 'com' => 'Messaging',
+ 'chat' => 'Chat',
+ 'boards' => 'Discussion',
+ 'port' => 'Portfolio',
+ 'groups' => 'Groups',
+ 'blogs' => 'Blogs',
);
- $r->print(<<"END");
- | $lt{'cacb'}: -END - $r->print(&Apache::loncommon::start_data_table()); - $r->print(<<"END"); - $lt{'cour'} |
- $lt{'dura'} |
- $lt{'blse'} |
-'.$courseinfo{'description'}.' | '.
- ''.$openblock.' to '.$closeblock.' | '.
- ''.$fullname.' ('.$uname.':'.$udom.
- ') | '.
- &Apache::loncommon::end_data_table_row());
- }
- }
- $r->print(&Apache::loncommon::end_data_table());
+ my $typeorder = ['com','chat','boards','port','groups','blogs'];
+ return ($typeorder,\%types);
}
# ----------------------------------------------------------- Display a message
@@ -1420,13 +1831,11 @@ sub displaymessage {
my $suffix=&Apache::lonmsg::foldersuffix($folder);
my %blocked = ();
my %setters = ();
- my $startblock = 0;
- my $endblock = 0;
my $numblocked = 0;
my $crstype = &Apache::loncommon::course_type();
# info to generate "next" and "previous" buttons and check if message is blocked
- &blockcheck(\%setters,\$startblock,\$endblock);
+ my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'com');
my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
if ( $blocked{$msgid} eq 'ON' ) {
&printheader($r,'/adm/email',&mt('Display a Message'));
@@ -1559,13 +1968,12 @@ sub header {
my $extra = &Apache::loncommon::studentbrowser_javascript();
if ($baseurl) {
- $extra .= ""); + foreach my $key (sort(keys(%msgs))) { + $r->print("\n".$msgs{$key}." "); $found=1; } unless ($found) { @@ -1621,8 +2029,20 @@ sub sendoffmail { my $sendstatus=''; my %specialmsg_status; my $numspecial = 0; + my ($cdom,$cnum,$group); + if (exists($env{'form.group'})) { + $group = $env{'form.group'}; + } + if (exists($env{'request.course.id'})) { + $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + } if ($env{'form.send'}) { - &printheader($r,'','Messages being sent.'); + if ($group eq '') { + &printheader($r,'','Messages being sent.'); + } else { + $r->print(&groupmail_header('sending',$group)); + } $r->rflush(); my %content=(); undef %content; @@ -1642,7 +2062,7 @@ sub sendoffmail { } my @to = - &Apache::loncommon::get_env_multiple('form.selectedusers.forminput'); + &Apache::loncommon::get_env_multiple('form.selectedusers_forminput'); my $mode = $env{'form.sendmode'}; my %toaddr; @@ -1664,9 +2084,10 @@ sub sendoffmail { } } elsif ($env{'form.sendmode'} eq 'upload') { foreach my $line (split(/[\n\r\f]+/,$env{'form.upfile'})) { - my ($rec,$txt)=split(/\s*\:\s*/,$line); + my ($rec,$txt) = ($line =~ /^([^:]+:[^:]+):(.*)$/); if ($txt) { - $rec=~s/\@/\:/; + $rec =~ s/^\s+//; + $rec =~ s/\s+$//; $toaddr{$rec}.=$txt."\n"; } } @@ -1676,8 +2097,8 @@ sub sendoffmail { } } if ($env{'form.additionalrec'}) { - foreach (split(/\,/,$env{'form.additionalrec'})) { - my ($auname,$audom)=split(/\@/,$_); + foreach my $rec (split(/\,/,$env{'form.additionalrec'})) { + my ($auname,$audom)=split(/:/,$rec); if (($auname ne "") && ($audom ne "")) { $toaddr{$auname.':'.$audom}=''; } @@ -1747,8 +2168,6 @@ sub sendoffmail { $subj_prefix = 'Broadcast.'; } my ($specialmsgid,$specialresult); - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $course_str = &escape('['.$cnum.':'.$cdom.']'); if ($numspecial) { @@ -1804,6 +2223,9 @@ sub sendoffmail { $r->print(' '.&mt('Completed.').''); if ($env{'form.displayedcrit'}) { &discrit($r); + } + if ($group ne '') { + $r->print(&groupmail_sent($group,$cdom,$cnum)); } else { &Apache::loncommunicate::menu($r); } @@ -1830,7 +2252,7 @@ sub handler { ['display','replyto','forward','markread','markdel','markunread', 'sendreply','compose','sendmail','critical','recname','recdom', 'recordftf','sortedby','block','folder','startdis','interdis', - 'showcommentbaseurl','dismode','group','subject','text']); + 'showcommentbaseurl','dismode','group','subject','text','ref']); $sqs='&sortedby='.$env{'form.sortedby'}; # ------------------------------------------------------ They checked for email @@ -1896,19 +2318,23 @@ sub handler { &compout($r,'',$env{'form.replyto'},undef,undef,$folder,$dismode); } elsif ($env{'form.confirm'}) { &printheader($r,'','Confirmed Receipt'); - foreach (keys %env) { - if ($_=~/^form\.rec\_(.*)$/) { + my $replying = 0; + foreach my $envkey (keys(%env)) { + if ($envkey=~/^form\.rec\_(.*)$/) { $r->print(''.&mt('Confirming Receipt').': '. &Apache::lonmsg::user_crit_received($1).' '); } - if ($_=~/^form\.reprec\_(.*)$/) { + if ($envkey=~/^form\.reprec\_(.*)$/) { my $msgid=$1; $r->print(''.&mt('Confirming Receipt').': '. &Apache::lonmsg::user_crit_received($msgid).' '); &compout($r,'','','',$msgid); + $replying = 1; } } - &discrit($r); + if (!$replying) { + &discrit($r); + } } elsif ($env{'form.critical'}) { &printheader($r,'','Displaying Critical Messages'); &discrit($r); @@ -1994,25 +2420,59 @@ sub handler { &sendoffmail($r,$folder); if ($env{'form.storebasecomment'}) { &storecomment($r); - } + } if (($env{'form.rsspost'}) && ($env{'request.course.id'})) { - &Apache::lonrss::addentry($env{'course.'.$env{'request.course.id'}.'.num'}, + &Apache::lonrss::addentry($env{'course.'.$env{'request.course.id'}.'.num'}, $env{'course.'.$env{'request.course.id'}.'.domain'}, 'Course_Announcements', $env{'form.subject'}, $env{'form.message'},'/adm/communicate','public'); } - &disall($r,($folder?$folder:$dismode)); + if ((!exists($env{'form.group'})) && (!$env{'form.displayedcrit'})) { + &disall($r,($folder?$folder:$dismode)); + } } elsif ($env{'form.newfolder'}) { &printheader($r,'','New Folder'); - &makefolder($env{'form.newfolder'}); - &Apache::loncommunicate::menu($r); - &disall($r,$env{'form.newfolder'}); + my $showfolder = $env{'form.newfolder'}; + my ($makeresult,$warning) = &makefolder($env{'form.newfolder'}); + if ($makeresult eq 'ok') { + $r->print(&mt('Mail folder "[_1]" created.',$showfolder).' '); + } else { + $r->print(&mt('Creation failed.').' '.$makeresult.' '. + $warning); + $showfolder = $folder; + } + &Apache::loncommunicate::menu($r); + &disall($r,$showfolder); } elsif ($env{'form.showcommentbaseurl'}) { &storedcommentlisting($r); + } elsif ($env{'form.folderaction'} eq 'delete') { + &printheader($r,'','Deleted Folder'); + my $showfolder = ''; + my $delresult = &deletefolder($folder); + if ($delresult eq 'ok') { + $r->print(&mt('Mail folder "[_1]" deleted.',$folder).' '); + } else { + $r->print(&mt('Deletion failed.').' '.$delresult.' '); + $showfolder = $folder; + } + &Apache::loncommunicate::menu($r); + &disall($r,$showfolder); + } elsif ($env{'form.folderaction'} eq 'rename') { + &printheader($r,'','Renamed Folder'); + my $showfolder = $env{'form.renamed'}; + my $renresult = &renamefolder($folder); + if ($renresult eq 'ok') { + $r->print(&mt('Mail folder "[_1]" renamed "[_2]".',$folder,$showfolder).' '); + } else { + $r->print(&mt('Renaming failed.').' '.$renresult.' '); + $showfolder = $folder; + } + &Apache::loncommunicate::menu($r); + &disall($r,$showfolder); } else { &printheader($r,'','Display All Messages'); - &Apache::loncommunicate::menu($r); + &Apache::loncommunicate::menu($r); &disall($r,($folder?$folder:$dismode)); } $r->print(&Apache::loncommon::end_page()); @@ -2030,9 +2490,3 @@ sub handler { __END__ - - - - - - |