--- loncom/interface/lonmsgdisplay.pm 2008/02/22 13:32:49 1.84
+++ loncom/interface/lonmsgdisplay.pm 2009/02/10 09:30:16 1.113
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.84 2008/02/22 13:32:49 bisitz Exp $
+# $Id: lonmsgdisplay.pm,v 1.113 2009/02/10 09:30:16 schafran Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -243,9 +243,9 @@ function folder_choice(targetform,caller
-
'.
- '
'.&mt('New Folder').' '.
+ '
'.&mt('Name').' '.
'
@@ -353,7 +353,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 +502,8 @@ sub movemsg {
# ======================================================= Display a course list
sub discourse {
- my $result;
+ my ($statushash) = @_;
+ my ($result,$active,$previous,$future);
my ($course_personnel,
$current_members,
$expired_members,
@@ -511,51 +512,80 @@ sub discourse {
unshift @$current_members, (@$course_personnel);
my %defaultUsers;
- $result .= ''."\n";
+ my $tmptext;
+ if ($tmptext = &Apache::lonselstudent::render_student_list($current_members,
+ "activeusers",
+ "current",
+ \%defaultUsers,
+ 1,"selectedusers",1,'email')
+ ) {
+ $result .= ' ';
+ if (ref($statushash) eq 'HASH') {
+ $statushash->{'active'} = 1;
+ }
+ }
+ if ($tmptext = &Apache::lonselstudent::render_student_list($expired_members,
+ "previoususers",
+ "expired",
+ \%defaultUsers,
+ 1, "selectedusers",0,'email')
+ ) {
+ $result .= ' ';
+ if (ref($statushash) eq 'HASH') {
+ $statushash->{'previous'} = 1;
+ }
- $result .= &Apache::lonselstudent::render_student_list($current_members,
- "compemail",
- "current",
- \%defaultUsers,
- 1,"selectedusers",1);
-
- $result .= &Apache::lonselstudent::render_student_list($expired_members,
- "compemail",
- "expired",
- \%defaultUsers,
- 1, "selectedusers",0);
- $result .= &Apache::lonselstudent::render_student_list($future_members,
- "compemail",
- "future",
- \%defaultUsers,
- 1, "selectedusers", 0);
+ }
+ if ($tmptext = &Apache::lonselstudent::render_student_list($future_members,
+ "futureusers",
+ "future",
+ \%defaultUsers,
+ 1, "selectedusers",0,'email')
+ ) {
+ $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 => {},
@@ -565,9 +595,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};
@@ -581,71 +611,75 @@ 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.='
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'};
@@ -1632,7 +1828,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 {
@@ -2054,7 +2250,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){
@@ -2062,7 +2257,6 @@ sub displaymessage {
}
$counter++;
}
- $r->print('
');
my $see_anonymous;
my $from_student = 0;
@@ -2083,29 +2277,66 @@ 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('
';
+ }
+ $body .= &Apache::loncommon::end_data_table_row().
+ &Apache::loncommon::end_data_table();
+ $body =~ s{}{<\\/}g;
+ $body =~ s{\n}{}g;
+ $r->print(<
+function showBroadcastList() {
+ var caller = this;
+ var newWindow = null;
+ try {
+ newWindow = window.open($nothing,"broadcast","HEIGHT=$height,WIDTH=$width,resizable=yes,scrollbars=yes" );
+ }
+ catch(error) {
+ writeWin(caller);
+ return;
+ }
+ if (newWindow) {
+ caller = newWindow;
+ }
+ writeWin(caller);
+ return;
+}
+
+function writeWin(caller) {
+ caller.document.writeln('$start_page $body $end_page');
+ caller.document.close();
+ caller.focus();
+}
+
+
+
+ENDJS
+ $broadcast_link = 1;
+ }
+ }
+ return $broadcast_link;
}
# =========================================================== Show the citation
@@ -2390,6 +2865,8 @@ sub sendoffmail {
my %msg_status;
my $numsent = 0;
my $nosentstore = 1;
+ my $attachmenturl;
+ my $now = time;
my ($cdom,$cnum,$group);
if (exists($env{'form.group'})) {
$group = $env{'form.group'};
@@ -2412,10 +2889,13 @@ sub sendoffmail {
if ($env{'form.forwid'}) {
my $msgid=$env{'form.forwid'};
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
- %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1);
+ %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1,1);
&statuschange($msgid,'forwarded',$folder);
- $env{'form.message'}.="\n\n-- Forwarded message --\n\n".
- $content{'message'};
+ if ($content{'attachmenturl'} ne '') {
+ $attachmenturl = $content{'attachmenturl'};
+ }
+ $env{'form.message'} .= "\n\n-- Forwarded message --\n\n".
+ $content{'message'};
}
if ($env{'form.replyid'}) {
my $msgid=$env{'form.replyid'};
@@ -2424,28 +2904,24 @@ sub sendoffmail {
&statuschange($msgid,'replied',$folder);
}
- my @to =
- &Apache::loncommon::get_env_multiple('form.selectedusers_forminput');
my $mode = $env{'form.sendmode'};
+ my (%toaddr,$tos,$cc,$bcc,$broadcast);
- my (%toaddr,$cc,$bcc);
- if (@to) {
- foreach my $dest (@to) {
- my ($user,$domain) = split(/:/, $dest);
- if (($user ne '') && ($domain ne '')) {
- my $address = $user.":".$domain; # How the code below expects it.
- $toaddr{$address} = '';
- }
- }
- }
-
- if ($env{'form.sendmode'} eq 'group') {
- foreach my $address (keys(%env)) {
- if ($address=~/^form\.send\_to\_\&\&\&[^\&]*\&\&\&\_(.+)$/) {
- $toaddr{$1}='';
- }
- }
- } elsif ($env{'form.sendmode'} eq 'upload') {
+ if ($mode eq 'group') {
+ if (defined($env{'form.courserecips'})) {
+ my $courseusers = $env{'form.courserecips'};
+ $courseusers =~ s/^_\&\&\&_//;
+ my @to = split('_&&&_',$courseusers);
+ foreach my $dest (@to) {
+ my ($user,$domain) = split(/:/, $dest);
+ if (($user ne '') && ($domain ne '')) {
+ my $rec = $user.":".$domain;
+ $toaddr{$rec} = '';
+ $broadcast->{$rec} = '';
+ }
+ }
+ }
+ } elsif ($mode eq 'upload') {
$nosentstore = 0;
foreach my $line (split(/[\n\r\f]+/,$env{'form.upfile'})) {
my ($rec,$txt) = ($line =~ /^([^:]+:[^:]+):(.*)$/);
@@ -2453,40 +2929,81 @@ sub sendoffmail {
$rec =~ s/^\s+//;
$rec =~ s/\s+$//;
$toaddr{$rec}.=$txt."\n";
+ $broadcast->{$rec} = '';
}
}
} else {
if (($env{'form.recuname'} ne '') && ($env{'form.recdomain'} ne '')) {
$toaddr{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
- $cc->{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
+ $tos->{$env{'form.recuname'}.':'.$env{'form.recdomain'}}='';
}
}
+ if ($env{'form.additionalrec_to'}) {
+ foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_to'})) {
+ my ($auname,$audom)=split(/:/,$rec);
+ if (($auname ne "") && ($audom ne "")) {
+ $toaddr{$auname.':'.$audom}='';
+ $tos->{$auname.':'.$audom}='';
+ }
+ }
+ }
+ if ($env{'form.replying_to'}) {
+ my @toreplies =
+ &Apache::loncommon::get_env_multiple('form.replying_to');
+ foreach my $rec (@toreplies) {
+ my ($auname,$audom)=split(/:/,$rec);
+ if (($auname ne "") && ($audom ne "")) {
+ $toaddr{$auname.':'.$audom}='';
+ $tos->{$auname.':'.$audom}='';
+ }
+ }
+ }
if ($env{'form.additionalrec_cc'}) {
foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_cc'})) {
my ($auname,$audom)=split(/:/,$rec);
if (($auname ne "") && ($audom ne "")) {
$toaddr{$auname.':'.$audom}='';
- $cc->{$auname.':'.$audom}='';
+ if (!defined($tos->{$auname.':'.$audom})) {
+ $cc->{$auname.':'.$audom}='';
+ }
}
}
}
- if ($env{'form.additionalrec_bcc'}) {
- foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_bcc'})) {
+ if ($env{'form.replying_cc'}) {
+ my @ccreplies =
+ &Apache::loncommon::get_env_multiple('form.replying_cc');
+ foreach my $rec (@ccreplies) {
my ($auname,$audom)=split(/:/,$rec);
if (($auname ne "") && ($audom ne "")) {
$toaddr{$auname.':'.$audom}='';
- $bcc->{$auname.':'.$audom}='';
+ if (!defined($tos->{$auname.':'.$audom})) {
+ $cc->{$auname.':'.$audom}='';
+ }
}
}
}
- if ($env{'form.replying_cc'}) {
- my @ccreplies =
- &Apache::loncommon::get_env_multiple('form.replying_cc');
- foreach my $rec (@ccreplies) {
+ if ($env{'form.replying_groupcc'}) {
+ my @groupreplies =
+ &Apache::loncommon::get_env_multiple('form.replying_groupcc');
+ foreach my $rec (@groupreplies) {
my ($auname,$audom)=split(/:/,$rec);
if (($auname ne "") && ($audom ne "")) {
$toaddr{$auname.':'.$audom}='';
- $cc->{$auname.':'.$audom}='';
+ if (!defined($tos->{$auname.':'.$audom})) {
+ $broadcast->{$auname.':'.$audom}='';
+ }
+ }
+ }
+ }
+ if ($env{'form.additionalrec_bcc'}) {
+ foreach my $rec (split(/\s*,\s*/,$env{'form.additionalrec_bcc'})) {
+ my ($auname,$audom)=split(/:/,$rec);
+ if (($auname ne "") && ($audom ne "")) {
+ $toaddr{$auname.':'.$audom}='';
+ if ((!defined($tos->{$auname.':'.$audom})) &&
+ (!defined($cc->{$auname.':'.$audom}))) {
+ $bcc->{$auname.':'.$audom}='';
+ }
}
}
}
@@ -2506,15 +3023,38 @@ sub sendoffmail {
$savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'});
}
my %reciphash = (
+ to => $tos,
cc => $cc,
bcc => $bcc,
- );
+ );
+ if ($mode eq 'group') {
+ if ($group eq '') {
+ $reciphash{'course_broadcast'} = $broadcast;
+ } else {
+ if ($env{'form.groupmail'} eq 'cc') {
+ $reciphash{'group_cc_broadcast'} = $broadcast;
+ } else {
+ $reciphash{'group_bcc_broadcast'} = $broadcast;
+ }
+ }
+ }
my ($recipid,$recipstatus) =
&Apache::lonmsg::store_recipients($msgsubj,$env{'user.name'},
$env{'user.domain'},\%reciphash);
if ($recipstatus ne 'ok') {
- &Apache::lonnet::logthis('Failed to store Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});
- }
+ &Apache::lonnet::logthis('Failed to store To, Bcc and Cc recipients for '.$env{'user.name'}.':'.$env{'user.domain'});
+ }
+ if ($env{'form.attachment'}) {
+ if (length($env{'form.attachment'})<131072) {
+ $attachmenturl=&Apache::lonnet::userfileupload('attachment',undef,'feedback/'.$now);
+ } else {
+ $r->print('
'.&mt('Attachment not included - exceeded permitted length').'
');
+ }
+ } elsif ($env{'form.multiforward'}) {
+ if ($env{'form.attachmenturl'} ne '') {
+ $attachmenturl = $env{'form.attachmenturl'};
+ }
+ }
my @recusers;
my @recudoms;
foreach my $address (sort(keys(%toaddr))) {
@@ -2540,7 +3080,7 @@ sub sendoffmail {
&Apache::lonmsg::user_normal_msg($recuname,$recdomain,
$msgsubj,$msgtxt,
$content{'citation'},
- undef,undef,
+ undef,$attachmenturl,
$env{'form.permanent'},
\$sentmessage{$address},
undef,undef,undef,
@@ -2557,23 +3097,35 @@ sub sendoffmail {
my $subj_prefix;
if ($numsent > 0) {
if (($env{'request.course.id'}) &&
- (($env{'form.sendmode'} eq 'group') ||
+ (($mode eq 'group') ||
($env{'form.courserecord'}) ||
- ($msgtype eq 'critical'))) {
+ ($msgtype eq 'critical')) ||
+ ($env{'form.replyid'} &&
+ (($content{'courseid'} ne '') &&
+ ($mode eq 'group')))) {
if ($msgtype eq 'critical') {
$subj_prefix = 'Critical.';
- } elsif ($env{'form.sendmode'} eq 'group') {
+ } elsif ($mode eq 'group') {
$subj_prefix = 'Broadcast.';
} else {
$subj_prefix = 'Archive';
}
my ($specialmsgid,$specialresult);
- my $course_str = &escape('['.$cnum.':'.$cdom.']');
-
+ my $course_str;
+ if ($env{'form.replyid'}) {
+ if ($content{'courseid'} ne '') {
+ my %crsdesc =
+ &Apache::lonnet::coursedescription($content{'courseid'},
+ {'one_time' => 1});
+ $course_str = &escape('['.$crsdesc{'num'}.':'.$crsdesc{'domain'}.']');
+ }
+ } elsif ($env{'request.course.id'}) {
+ $course_str = &escape('['.$cnum.':'.$cdom.']');
+ }
$specialresult =
&Apache::lonmsg::user_normal_msg_raw($cnum,$cdom,
$subj_prefix.' '.$course_str,$savemsg,undef,undef,
- undef,undef,undef,\$specialmsgid,undef,undef,undef,
+ $attachmenturl,undef,undef,\$specialmsgid,undef,undef,undef,
undef,undef,1);
$specialmsgid = &unescape($specialmsgid);
if ($specialresult eq 'ok') {
@@ -2590,15 +3142,15 @@ sub sendoffmail {
$pid);
&Apache::lonmsg::user_normal_msg_raw($cnum,$cdom,
$subj_prefix.' ['.$recipient.']',$msgsubj,
- undef,undef,undef,undef,$usermsgid,undef,
+ undef,undef,$attachmenturl,undef,$usermsgid,undef,
undef,$specialmsgid,undef,undef,undef,1);
}
}
- if (($env{'form.sendmode'} ne 'upload') && (@recusers > 0)) {
+ if (($mode ne 'upload') && (@recusers > 0)) {
&Apache::lonmsg::process_sent_mail($msgsubj,
$subj_prefix,$numsent,$stamp,$msgname,$msgdom,
$msgcount,$context,$pid,$savemsg,\@recusers,
- \@recudoms);
+ \@recudoms,undef,$attachmenturl,'','','','',$recipid);
}
} else {
&Apache::lonnet::logthis('Failed to create record of critical, broadcast or archived message in '.$env{'course.'.$env{'request.course.id'}.'.num'}.' '&mt('at').' '.$env{'course.'.$env{'request.course.id'}.'.domain'}.' - no msgid generated');
@@ -2610,7 +3162,8 @@ sub sendoffmail {
&Apache::lonmsg::process_sent_mail($msgsubj,$subj_prefix,
$numsent,$stamp,$env{'user.name'},
$env{'user.domain'},$msgcount,$context,
- $$,$savemsg,\@recusers,\@recudoms);
+ $$,$savemsg,\@recusers,\@recudoms,undef,$attachmenturl,
+ '','','','',$recipid);
}
}
if (!$env{'form.multiforward'}) {
@@ -2627,7 +3180,7 @@ sub sendoffmail {
}
} else {
$r->print('
'.&mt('Could not deliver message').' '.
- &mt('Please use the browser "Back" button and correct the recipient addresses '."($sendstatus)").'
');
+ &mt('Please use the browser "Back" button and correct the recipient addresses ([_1]).',$sendstatus).'');
}
}
}
@@ -2862,7 +3415,7 @@ sub handler {
foreach my $item (@to_forward) {
my $msgid=&unescape($item);
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
- my %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1);
+ my %content=&Apache::lonmsg::unpackagemsg($message{$msgid},1,1);
if ($env{'form.showorigsubj'}) {
$env{'form.subject'} = $fixed_subj.$content{'subject'};
} else {
@@ -2876,8 +3429,10 @@ sub handler {
&Apache::loncommon::plainname($uname,$udom).' ('.
$uname.':'.$udom.')';
}
- $env{'form.message'} .= "\n\n-- Forwarded message --\n\n".
- $content{'message'};
+ $env{'form.message'}.="\n\n-- Forwarded message --\n\n".
+ $content{'message'};
+ $env{'form.attachmenturl'} = $content{'attachmenturl'};
+ $env{'form.multiforwid'} = $item;
$fwdcount ++;
$r->print($fwdcount.': ');
$sendresult{$msgid} = &sendoffmail($r,$folder);
@@ -2928,7 +3483,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).' ');
+ $r->print(&mt('Folder "[_1]" created.',$showfolder).' ');
} else {
$r->print(&mt('Creation failed.').' '.$makeresult.' '.
$warning);
@@ -2943,7 +3498,7 @@ sub handler {
my $showfolder = '';
my $delresult = &deletefolder($folder);
if ($delresult eq 'ok') {
- $r->print(&mt('Mail folder "[_1]" deleted.',$folder).' ');
+ $r->print(&mt('Folder "[_1]" deleted.',$folder).' ');
$env{'form.folder'} = '';
} else {
$r->print(&mt('Deletion failed.').' '.$delresult.' ');
@@ -2956,7 +3511,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).' ');
+ $r->print(&mt('Folder "[_1]" renamed to "[_2]".',$folder,$showfolder).' ');
} else {
$r->print(&mt('Renaming failed.').' '.$renresult.' ');
$showfolder = $folder;
500 Internal Server Error
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete
your request.
Please contact the server administrator at
root@localhost to inform them of the time this error occurred,
and the actions you performed just before this error.
More information about this error may be available
in the server error log.