--- loncom/interface/lonmsgdisplay.pm 2008/08/25 14:29:12 1.91
+++ loncom/interface/lonmsgdisplay.pm 2010/01/25 21:08:48 1.124.4.7
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.91 2008/08/25 14:29:12 bisitz Exp $
+# $Id: lonmsgdisplay.pm,v 1.124.4.7 2010/01/25 21:08:48 raeburn 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',
@@ -143,7 +146,7 @@ sub folderlist {
);
$actions{'select_form_order'} = ['view','rename','delete'];
- my %statushash = &get_msgstatus_types();
+ my %statushash = &Apache::lonlocal::texthash(&get_msgstatus_types());
$statushash{'select_form_order'} = ['','new','read','replied','forwarded'];
@@ -170,6 +173,7 @@ sub folderlist {
$formhash{'select_form_order'} = ['','critical',@userorder,'sent','trash'];
my $output = qq||;
my %show = ('select_form_order' => [10,20,50,100,200],
map {$_=>$_} (10,20,50,100,200));
-
-
+
$output .= '
';
}
# =============================================================== Status Change
@@ -353,7 +358,7 @@ sub makefolder {
}
} else {
$outcome =
- &mt('Error - could not obtain lock on email folders record.');
+ &mt('Error - could not obtain lock on message folders record.');
}
return ($outcome,$warning);
}
@@ -502,7 +507,9 @@ sub movemsg {
# ======================================================= Display a course list
sub discourse {
- my $result;
+ my ($statushash) = @_;
+ my ($result,$active,$previous,$future);
+ my $crstype = &Apache::loncommon::course_type();
my ($course_personnel,
$current_members,
$expired_members,
@@ -511,63 +518,105 @@ sub discourse {
unshift @$current_members, (@$course_personnel);
my %defaultUsers;
- $result .= ''."\n";
-
my $tmptext;
if ($tmptext = &Apache::lonselstudent::render_student_list($current_members,
- "compemail",
+ "activeusers",
"current",
\%defaultUsers,
- 1,"selectedusers",1)
+ 1,"selectedusers",1,'email')
) {
- $result .= '
'.&mt('Course members with current access').'
';
- $result .= $tmptext;
+ my $bcc_curr_hdr;
+ if ($crstype eq 'Community') {
+ $bcc_curr_hdr = &mt('Bcc: community participants with current access');
+ } else {
+ $bcc_curr_hdr = &mt('Bcc: course members with current access');
+ }
+ $result .= ' ';
+ if (ref($statushash) eq 'HASH') {
+ $statushash->{'active'} = 1;
+ }
}
if ($tmptext = &Apache::lonselstudent::render_student_list($expired_members,
- "compemail",
+ "previoususers",
"expired",
\%defaultUsers,
- 1, "selectedusers",0)
+ 1, "selectedusers",0,'email')
) {
- $result .= '
'.&mt('Course members with expired access').'
';
- $result .= $tmptext;
+ my $bcc_prev_hdr;
+ if ($crstype eq 'Community') {
+ $bcc_prev_hdr = &mt('Bcc: community participants with expired access');
+ } else {
+ $bcc_prev_hdr = &mt('Bcc: course members with expired access');
+ }
+ $result .= ' ';
+ if (ref($statushash) eq 'HASH') {
+ $statushash->{'previous'} = 1;
+ }
}
if ($tmptext = &Apache::lonselstudent::render_student_list($future_members,
- "compemail",
+ "futureusers",
"future",
\%defaultUsers,
- 1, "selectedusers", 0)
+ 1, "selectedusers",0,'email')
) {
- $result .= '
'.&mt('Course members with future access').'
';
- $result .= $tmptext;
+ my $bcc_future_hdr;
+ if ($crstype eq 'Community') {
+ $bcc_future_hdr = &mt('Bcc: community participants with future access');
+ } else {
+ $bcc_future_hdr = &mt('Bcc: course members with future access');
+ }
+ $result .= '';
+ if (ref($statushash) eq 'HASH') {
+ $statushash->{'future'} = 1;
+ }
}
return $result;
}
sub disgroup {
- my ($cdom,$cnum,$group,$viewgrps,$editgrps) = @_;
- my $result;
+ my ($r,$cdom,$cnum,$group,$access_status) = @_;
+ my $hasfloat;
# Needs to be in a course
if (!($env{'request.course.fn'})) {
- $result = &mt('Error: you must have a course role selected to be able to send a broadcast message to a group in the course.');
- return $result;
+ $r->print(''.&mt('Error: you must have a course role selected to be able to send a broadcast message to a group in the course.').'');
+ return;
}
if ($cdom eq '' || $cnum eq '') {
- $result = &mt('Error: could not determine domain or number of course');
- return $result;
+ $r->print(''.&mt('Error: could not determine domain or number of course').'');
+ return;
}
my ($memberinfo,$numitems) =
&Apache::longroup::group_memberlist($cdom,$cnum,$group,{},[]);
my @statustypes = ('active');
+ my $viewgrps = &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
+ my $editgrps = &Apache::lonnet::allowed('mdg',$env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
if ($viewgrps || $editgrps) {
push(@statustypes,('future','previous'));
}
if (keys(%{$memberinfo}) == 0) {
- $result = &mt('As this group has no members, there are no '.
- 'recipients to select.');
- return $result;
+ $r->print(''.
+ &mt('As this group has no members, there are no recipients to select').
+ '');
+ return;
} else {
- $result = &mt('Select message recipients from the group members listed below.').' ';
+ $hasfloat = 1;
+ unless($env{'environment.wysiwygeditor'} eq 'on') {
+ $r->print('
');
+ }
my %Sortby = (
active => {},
previous => {},
@@ -577,9 +626,9 @@ sub disgroup {
'name' => 'Name',
'usnm' => 'Username',
'doma' => 'Domain',
- 'active' => 'Active Members',
- 'previous' => 'Former Members',
- 'future' => 'Future Members',
+ 'active' => 'Broadcast to Active Members',
+ 'previous' => 'Broadcast (Bcc) to Former Members',
+ 'future' => 'Broadcast (Bcc) to Future Members',
);
foreach my $user (sort(keys(%{$memberinfo}))) {
my $status = $$memberinfo{$user}{status};
@@ -593,75 +642,81 @@ sub disgroup {
push(@{$Sortby{$status}{$$memberinfo{$user}{fullname}}},$user);
}
}
- $result .= &group_check_uncheck();
- $result .= '
'.
- '
';
+ $r->print(&group_check_uncheck());
foreach my $status (@statustypes) {
if (ref($numitems) eq 'HASH') {
if ((defined($$numitems{$status})) && ($$numitems{$status})) {
- $result.='
'
.&mt('Access to other pages will be prevented until you have moved all critical messages to your inbox.')
.'
'
- .'');
if ($numblocked > 0) {
$r->print(&blocked_in_folder($numblocked,$startblock,$endblock,
\%setters));
@@ -1222,8 +1292,8 @@ sub compout {
&printheader($r,'/adm/email?compose=multiforward',
'Forwarding Multiple Messages');
if ($multiforward > 1) {
- $r->print(&mt('Each of the [quant,_1,message] you checked'
- .' will be forwarded to the recipient(s) you select below.',$multiforward)
+ $r->print(&mt('Each of the[_1] [quant,_2,message] [_3]you checked'
+ .' will be forwarded to the recipient(s) you select below.','',$multiforward,'')
.' ');
} else {
$r->print(&mt('The message you checked will be forwarded to the recipient(s) you select below.').' ');
@@ -1239,7 +1309,11 @@ sub compout {
my $dismsg='';
my $disbase='';
my $attachrow;
- my $func=&mt('Send New');
+ my $func1='Send'; # do not translate here!
+ my %func2=( # do not translate here!
+ 'ma' => 'Message',
+ 'msg' => 'Messages',
+ );
my %lt=&Apache::lonlocal::texthash('us' => 'Username',
'do' => 'Domain',
'ad' => 'Additional Recipients',
@@ -1247,56 +1321,125 @@ sub compout {
'ar' => 'Allow replies',
'sb' => 'Subject',
'ca' => 'Cancel',
- 'ma' => 'Mail',
- 'msg' => 'Messages',
'gen' => 'Generate messages from a file',
'gmt' => 'General message text',
'tff' => 'The file format for the uploaded portion of the message is',
'uas' => 'Upload and Send',
'atta' => 'Attachment',
+ 'to' => 'To:',
);
my %attachmax = (
- text => '(128 KB max size)',
+ text => &mt('(128 KB max size)'),
num => 131072,
);
if (!$forwarding && !$multiforward) {
- $attachrow = ' '.$lt{'atta'}.' '.$attachmax{'text'}.': ';
+ $attachrow = '
'.$lt{'atta'}.' '.$attachmax{'text'}.':
';
}
if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
'/'.$env{'request.course.sec'})) {
+ my $crstype = &Apache::loncommon::course_type();
my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
+ my $rsstxt;
+ if (&Apache::loncommon::course_type() eq 'Community') {
+ $rsstxt = &mt('Include in community RSS newsfeed');
+ } else {
+ $rsstxt = &mt('Include in course RSS newsfeed');
+ }
$dispcrit=
- '
' . $crithelp .
- '
'.
- '' . $crithelp .
- '
'.
-'';
+ ''.$crithelp.' '.&mt('Require return receipt?').' '.
+ ' '.
+' ';
}
if ($broadcast ne 'group') {
if (&Apache::lonnet::allowed('dff',$env{'request.course.id'}) ||
&Apache::lonnet::allowed('dff',$env{'request.course.id'}.
'/'.$env{'request.course.sec'})) {
-
- $dispcrit.='';
+ $rectxt.
+ ' ';
}
}
my %message;
my %content;
+ my ($hasfloat,$broadcast_js,$sendmode,$can_grp_broadcast);
my $defdom=$env{'user.domain'};
+ if ($broadcast eq 'group') {
+ my %access_status = (
+ active => 0,
+ previous => 0,
+ future => 0,
+ );
+
+ if ($group eq '') {
+ my $studentsel = &discourse(\%access_status);
+ if ($studentsel) {
+ if ($env{'environment.wysiwygeditor'} eq 'on') {
+ $r->print($studentsel);
+ } else {
+ $r->print('
'.$studentsel.'
');
+ }
+ $hasfloat = 1;
+ }
+ } else {
+ $can_grp_broadcast = &check_group_priv($group);
+ if ($can_grp_broadcast) {
+ $hasfloat = &disgroup($r,$cdom,$cnum,$group,\%access_status);
+ }
+ }
+ if ($hasfloat) {
+ $sendmode = ''."\n";
+ $broadcast_js = qq|
+
+
+|;
+ }
+ }
if ($forwarding) {
%message=&Apache::lonnet::get('nohist_email'.$suffix,[$forwarding]);
%content=&Apache::lonmsg::unpackagemsg($message{$forwarding},$folder);
$dispcrit.='';
- $func=&mt('Forward');
+ $func1='Forward'; # do not translate here!
$dissub=&mt('Forwarding').': '.$content{'subject'};
$dismsg=&mt('Forwarded message from').' '.
@@ -1310,7 +1453,7 @@ sub compout {
%content=&Apache::lonmsg::unpackagemsg($message{$replying},$folder);
$dispcrit.='';
- $func=&mt('Send Reply to');
+ $func1='Send Reply to'; # do not translate here!
$dissub=&mt('Reply').': '.$content{'subject'};
$dismsg='> '.$content{'message'};
@@ -1329,45 +1472,40 @@ sub compout {
my $jscript = &Apache::loncommon::check_uncheck_jscript();
$r->print(<<"ENDREPSCRIPT");
ENDREPSCRIPT
}
my $citation=&displayresource(%content);
- my ($can_grp_broadcast,$viewgrps,$editgrps);
+ my $onsubmit;
if ($env{'form.recdom'}) { $defdom=$env{'form.recdom'}; }
if ($env{'form.text'}) { $dismsg=$env{'form.text'}; }
if ($env{'form.subject'}) { $dissub=$env{'form.subject'}; }
+ if ($hasfloat) {
+ if ($env{'environment.wysiwygeditor'} eq 'on') {
+ $r->print($broadcast_js);
+ } else {
+ $r->print($broadcast_js.'
');
+ if (($broadcast eq 'group') && ($group ne '') && (!$can_grp_broadcast)) {
$r->print(&recipient_input_row($cdom,%lt));
- }
+ }
if (($broadcast ne 'group') && ($broadcast ne 'upload')) {
if ($replying) {
if ($content{'noreplies'}) {
$r->print('
'.&mt('This message was designated by the sender not to allow replies.').'
');
return;
}
- $r->print('
'.&mt('Replying to').' ');
+ $r->print('
'.&mt('Replying to').' ');
if ($content{'replytoaddr'}) {
my ($replytoname,$replytodom) = split(/:/,$content{'replytoaddr'});
if ($replytoname ne '' && $replytodom ne '') {
@@ -1394,9 +1532,31 @@ ENDREPSCRIPT
$content{'senderdomain'}.'" />
');
}
if ($content{'recipid'}) {
- my @ccs = &retrieve_cc_recips('replying',%content);
- if (@ccs > 0) {
- my $replyall = qq|
+ my %recips;
+ &retrieve_recips('replying',\%content,\%recips);
+ if (ref($recips{'to'}) eq 'ARRAY') {
+ if (@{$recips{'to'}} > 0) {
+ my $replyall;
+ if (@{$recips{'to'}} > 1) {
+ $replyall = qq|
+
+
+
+
+
+|;
+ }
+ my $tolist = join(' ',@{$recips{'to'}});
+ $r->print('
'.&mt('[_1]Send reply[_2] to other recipients','','').': '.$replyall.'
'.$tolist.'
');
+ }
+ }
+ if (ref($recips{'cc'}) eq 'ARRAY') {
+ if (@{$recips{'cc'}} > 0) {
+ my $replyall;
+ if (@{$recips{'cc'}} > 1) {
+ $replyall = qq|
@@ -1405,15 +1565,40 @@ ENDREPSCRIPT
onclick="javascript:uncheckAll(document.compemail.replying_cc)" />
|;
- my $cclist = join(' ',@ccs);
- $r->print('
'.&mt('Reply to other recipients').': '.$replyall.'
'.&mt('[_1]Cc[_2] to other copied recipients','','').': '.$replyall.'
'.$cclist.'
');
+ }
+ }
+ if ($content{'group'} ne '') {
+ if (&check_group_priv($content{'group'})) {
+ if (ref($recips{'group_cc_broadcast'}) eq 'ARRAY') {
+ if (@{$recips{'group_cc_broadcast'}} > 0) {
+ my $replyall;
+ if (@{$recips{'group_cc_broadcast'}} > 1) {
+ $replyall = qq|
+
+
+
+
+
+|;
+ }
+ my $groupcclist = join(' ',@{$recips{'group_cc_broadcast'}});
+ $r->print('
'.&mt('[_1]Cc[_2] to other copied group members','','').': '.$replyall.'
'.$groupcclist.'
');
+ }
+ }
+ }
}
}
} else {
$r->print(&recipient_input_row($defdom,%lt));
}
}
- my $latexHelp = Apache::loncommon::helpLatexCheatsheet();
+ my $latexHelp = &Apache::loncommon::helpLatexCheatsheet(undef,undef,1);
+ my $wysiwyglink=&Apache::lonhtmlcommon::htmlareaselectactive('message').' ';
my $subj_size;
if ($multiforward) {
$r->print(&additional_rec_row(\%lt));
@@ -1421,7 +1606,7 @@ ENDREPSCRIPT
&mt('Unless you choose otherwise:').'
'.
&mt("The subject in each forwarded message will be 'Forwarding:' followed by the original subject.").'
'.
&mt("The message itself will begin with a first line: 'Forwarded message from' followed by the original sender's name.").'
');
- $func=&mt('Forward');
+ $func1='Forward'; # do not translate here!
$dissub = &mt('Forwarding').': ';
$subj_size = '10';
my $extra = '<'.&mt('original subject').'> '.
@@ -1431,16 +1616,17 @@ ENDREPSCRIPT
$r->print(&msg_subject_row($dissub,\%lt,$subj_size,$extra));
$r->print('
'.&mt('Message begins with:').'
'.$sender.' '.&mt('Yes').' '.&mt('No').'
- '.
-$latexHelp.
-&mt("Any new text to display before the text of the original messages:").'
- ');
+
+
'."\n".
+$latexHelp." \n".
+&mt("Any new text to display before the text of the original messages:").' '."\n".
+''.
+$wysiwyglink);
my @to_forward = &Apache::loncommon::get_env_multiple('form.delmark');
foreach my $msg (@to_forward) {
$r->print('');
}
- $r->print(&submit_button_row($folder,$dismode,$func.' '.$lt{'msg'},
+ $r->print(&submit_button_row($folder,$dismode,&mt($func1.' '.$func2{'msg'}),
\%lt));
} elsif ($broadcast ne 'upload') {
$subj_size = '50';
@@ -1452,18 +1638,17 @@ $latexHelp.
}
$r->print(&msg_subject_row($dissub,\%lt,$subj_size));
$r->print(<<"ENDCOMP");
-
ENDREC
return $output;
}
@@ -1537,7 +1732,7 @@ sub reply_to_row {
my $radioyes = &mt('Yes');
my $radiono = &mt('No');
my $output = <<"ENDREP";
-
$lt->{'ar'}:$radioyes$radiono$lt->{'rt'}:
+
$lt->{'ar'}:$radioyes$radiono$lt->{'rt'}:
ENDREP
return $output;
}
@@ -1548,33 +1743,56 @@ sub additional_rec_row {
my $bcc = &mt('Bcc:');
my $exmpl = &mt('username:domain,username:domain,...');
my $output = <<"ENDADD";
-
$lt->{'ad'} : ($exmpl)
-
$cc
-
-$bcc
+
ENDADD
return $output;
}
sub submit_button_row {
- my ($folder,$dismode,$sendtext,$lt) = @_;
- my $output = qq|
+ my ($folder,$dismode,$sendtext,$lt,$is_crsform,$group) = @_;
+ my $pre=&mt("Show Preview and Check Spelling");
+ my $value=&mt('Send');
+ my $prevbutton = '';
+ my $output = qq|
-
-
-
+|;
+ if ($is_crsform) {
+ $output .= ''."\n";
+ if ($group ne '') {
+ $output .= ''."\n";
+ }
+ }
+ $output .= qq|
+
+
+
+
$prevbutton
|;
return $output;
}
sub msg_subject_row {
my ($dissub,$lt,$subj_size,$extra) = @_;
- my $output = '
'.$lt->{'sb'}.': '.$lt->{'sb'}.': '.$extra.
'
';
return $output;
}
+sub generate_preview_form {
+ my $prevbutton = (<
+
+
+
+ENDPREVIEW
+}
+
+# ---------------------------------------------------- Display all face to face
+
sub retrieve_instructor_comments {
my ($user,$domain)=@_;
my $target=$env{'form.grade_target'};
@@ -1674,7 +1892,7 @@ $content{'sendername'}.':'.
}
# Check to see if there were any messages.
if ($result eq '') {
- my $lctype = lc(&Apache::loncommon::course_type());
+ my $lctype = &mt(lc(&Apache::loncommon::course_type()));
if ($target ne 'tex') {
$r->print("
".&mt('No notes, face-to-face discussion records, critical messages, or broadcast messages in this [_1].',$lctype)."
");
} else {
@@ -1708,7 +1926,7 @@ sub facetoface {
return;
}
my $crstype = &Apache::loncommon::course_type();
- my $leaders = ($crstype eq 'Group') ? 'coordinators and leaders'
+ my $leaders = ($crstype eq 'Community') ? 'coordinators and leaders'
: 'faculty and staff';
&printheader($r,
'/adm/email?recordftf=query',
@@ -1731,21 +1949,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");
-
'
+ .&mt('Discussion and message records for [_1] ([_2])'
+ ,$aboutmelink
+ ,$env{'form.recuname'}.':'.$env{'form.recdomain'})
+ .'
'
+ );
&disfacetoface($r,$env{'form.recuname'},$env{'form.recdomain'});
$r->print(<
@@ -1784,12 +2013,18 @@ sub examblock {
$r->print('Not allowed');
return;
}
- my $usertype = (&Apache::loncommon::course_type() eq 'Group') ? 'members'
- : 'students';
+ my $usertype;
+ my $crstype = &Apache::loncommon::course_type();
+ if ($crstype eq 'Community') {
+ $usertype = 'members';
+ } else {
+ $usertype = 'students';
+ }
+ my $lctype = lc($crstype);
my %lt=&Apache::lonlocal::texthash(
'comb' => 'Communication Blocking',
'cbds' => 'Communication blocking during scheduled exams',
- 'desc' => "You can use communication blocking to prevent $usertype enrolled in this course from displaying LON-CAPA messages sent by other $usertype during an online exam. As blocking of communication could potentially interrupt legitimate communication between $usertype who are also both enrolled in a different LON-CAPA course, please be careful that you select the correct start and end times for your scheduled exam when setting or modifying these parameters.",
+ 'desc' => "You can use communication blocking to prevent $usertype enrolled in this $lctype from displaying LON-CAPA messages sent by other $usertype during an online exam. As blocking of communication could potentially interrupt legitimate communication between $usertype who are also both enrolled in a different LON-CAPA course or community, please be careful that you select the correct start and end times for your scheduled exam when setting or modifying these parameters.",
'mecb' => 'Modify existing communication blocking periods',
'ncbc' => 'No communication blocks currently saved',
'stor' => 'Save',
@@ -1966,7 +2201,7 @@ sub display_blocker_status {
$ltext->{'setb'}
$ltext->{'even'}
$ltext->{'blck'}
-
$ltext->{'actn'}?
+
$ltext->{'actn'}
END
foreach my $record (sort(keys(%{$records}))) {
@@ -1986,7 +2221,7 @@ END
$setuname,$setudom);
$r->print(&Apache::loncommon::start_data_table_row());
$r->print(<<"END");
-
@@ -1994,13 +2229,18 @@ END
foreach my $block (@{$typeorder}) {
my $blockstatus = '';
if ($blocks->{$block} eq 'on') {
- $blockstatus = 'checked="true"';
+ $blockstatus = 'checked="checked"';
}
- $r->print(''.$types->{$block}.' ');
+ $r->print(''.$types->{$block}.' ');
}
$r->print(<<"END");
-
-
$lt{'modi'}? $lt{'canc'}?
+
+
+ $lt{'modi'}
+
+
+ $lt{'canc'}
+
END
$r->print(&Apache::loncommon::end_data_table_row());
$parmcount++;
@@ -2037,7 +2277,7 @@ END
$ltext->{'dura'}
$ltext->{'even'} $lt{'exam'}
$ltext->{'blck'}
-
$ltext->{'actn'}?
+
$ltext->{'actn'}
END
$r->print(&Apache::loncommon::start_data_table_row());
@@ -2047,11 +2287,13 @@ END
END
foreach my $block (@{$typeorder}) {
- $r->print(''.$types->{$block}.' ');
+ $r->print(''.$types->{$block}.' ');
}
$r->print(<<"END");
-
-
$lt{'addb'}?
+
+
+ $lt{'addb'}
+
END
$r->print(&Apache::loncommon::end_data_table_row());
$r->print(&Apache::loncommon::end_data_table());
@@ -2061,7 +2303,7 @@ END
sub blocktype_text {
my %types = &Apache::lonlocal::texthash(
'com' => 'Messaging',
- 'chat' => 'Chat',
+ 'chat' => 'Chat Room',
'boards' => 'Discussion',
'port' => 'Portfolio',
'groups' => 'Groups',
@@ -2096,7 +2338,6 @@ sub displaymessage {
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
my %content=&Apache::lonmsg::unpackagemsg($message{$msgid});
my $counter=0;
- $r->print('
');
my $escmsgid=&escape($msgid);
foreach (@messages) {
if ($_->[5] eq $escmsgid){
@@ -2104,7 +2345,6 @@ sub displaymessage {
}
$counter++;
}
- $r->print('
');
my $see_anonymous;
my $from_student = 0;
@@ -2125,29 +2365,56 @@ sub displaymessage {
# start output
&printheader($r,'/adm/email?display='.&escape($msgid),'Display a Message','',$content{'baseurl'});
my %courseinfo=&Apache::lonnet::coursedescription($content{'courseid'});
-# Functions
- $r->print('
'.&mt('Functions').':
');
+
+# Functions and Actions
+ my $li_start='• ';
+ my $li_end=' ';
+
+# Prepare available functions
+ my @functionlist;
if (!$content{'noreplies'}) {
- $r->print('
'
+ );
+
+# Prepare available actions
my $symb;
if (defined($content{'symb'})) {
$symb = $content{'symb'};
@@ -2155,49 +2422,81 @@ sub displaymessage {
$symb=&Apache::lonnet::symbread($content{'baseurl'});
}
if ($env{'user.adv'}) {
- my $actionlist='';
+ my @actionlist;
+
if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) {
- $actionlist.='
'.
- &mt('Could not forward [quant,_1,message].',$count).
- ' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Could not forward [quant,_1,message].',$count),1);
foreach my $key (keys(%forwardfail)) {
- $r->print(&mt('Could not deliver forwarded message.').' '.
- &mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.').
');
+ $message .= ' '.&mt('Could not deliver forwarded message.').' '.
+ &mt('The recipient addresses may need to be corrected').' ('.$forwardfail{$key}.')';
}
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
}
&Apache::loncommunicate::menu($r);
} else {
@@ -3058,10 +3579,13 @@ 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).' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Folder "[_1]" created.',$showfolder));
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
} else {
- $r->print(&mt('Creation failed.').' '.$makeresult.' '.
- $warning);
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Creation failed.').' '.$makeresult.' '.$warning,1);
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
$showfolder = $folder;
}
&Apache::loncommunicate::menu($r);
@@ -3073,10 +3597,14 @@ sub handler {
my $showfolder = '';
my $delresult = &deletefolder($folder);
if ($delresult eq 'ok') {
- $r->print(&mt('Mail folder "[_1]" deleted.',$folder).' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Folder "[_1]" deleted.',$folder));
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
$env{'form.folder'} = '';
} else {
- $r->print(&mt('Deletion failed.').' '.$delresult.' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Deletion failed.').' '.$delresult,1);
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
$showfolder = $folder;
}
&Apache::loncommunicate::menu($r);
@@ -3086,9 +3614,13 @@ 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).' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Folder "[_1]" renamed to "[_2]".',$folder,$showfolder));
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
} else {
- $r->print(&mt('Renaming failed.').' '.$renresult.' ');
+ my $message = &Apache::lonhtmlcommon::confirm_success(&mt('Renaming failed.').' '.$renresult,1);
+ $message = &Apache::loncommon::confirmwrapper($message);
+ $r->print($message);
$showfolder = $folder;
}
&Apache::loncommunicate::menu($r);