--- loncom/interface/lonmsg.pm 2001/07/28 04:16:29 1.11
+++ loncom/interface/lonmsg.pm 2002/07/22 14:23:29 1.35
@@ -1,7 +1,31 @@
# The LearningOnline Network with CAPA
-#
# Routines for messaging
#
+# $Id: lonmsg.pm,v 1.35 2002/07/22 14:23:29 bowersj2 Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
+#
# (Routines to control the menu
#
# (TeX Conversion Module
@@ -13,8 +37,11 @@
# 10/19,10/20,10/30,
# 02/06/01 Gerd Kortemeyer
# 07/27 Guy Albertelli
-# 07/27 Gerd Kortemeyer
-
+# 07/27,07/28,07/30,08/03,08/06,08/08,08/09,08/10,8/13,8/15,
+# 10/1,11/5 Gerd Kortemeyer
+# YEAR=2002
+# 1/1,3/18 Gerd Kortemeyer
+#
package Apache::lonmsg;
use strict;
@@ -22,6 +49,7 @@ use Apache::lonnet();
use vars qw($msgcount);
use HTML::TokeParser;
use Apache::Constants qw(:common);
+use Apache::loncommon;
# ===================================================================== Package
@@ -37,7 +65,6 @@ sub packagemsg {
$msgcount++;
my $partsubj=$subject;
$partsubj=&Apache::lonnet::escape($partsubj);
- $partsubj=substr($partsubj,0,50);
my $msgid=&Apache::lonnet::escape(
$now.':'.$partsubj.':'.$ENV{'user.name'}.':'.
$ENV{'user.domain'}.':'.$msgcount.':'.$$);
@@ -114,15 +141,15 @@ sub author_res_msg {
# ================================================== Critical message to a user
sub user_crit_msg {
- my ($user,$domain,$subject,$message)=@_;
+ my ($user,$domain,$subject,$message,$sendback)=@_;
# Check if allowed missing
my $status='';
my $msgid='undefined';
unless (($message)&&($user)&&($domain)) { $status='empty'; };
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
- my $msgid;
($msgid,$message)=&packagemsg($subject,$message);
+ if ($sendback) { $message.='true'; }
$status=&Apache::lonnet::critical(
'put:'.$domain.':'.$user.':critical:'.
&Apache::lonnet::escape($msgid).'='.
@@ -143,23 +170,26 @@ sub user_crit_msg {
# =================================================== Critical message received
sub user_crit_received {
- my $message=shift;
- my %contents=&unpackagemsg($message);
- my $status='rec: '.
+ my $msgid=shift;
+ my %message=&Apache::lonnet::get('critical',[$msgid]);
+ my %contents=&unpackagemsg($message{$msgid});
+ my $status='rec: '.($contents{'sendback'}?
&user_normal_msg($contents{'sendername'},$contents{'senderdomain'},
'Receipt: '.$ENV{'user.name'}.' at '.$ENV{'user.domain'},
'User '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}.
' acknowledged receipt of message "'.
$contents{'subject'}.'" dated '.$contents{'time'}.".\n\n"
- .'Message ID: '.$contents{'msgid'});
+ .'Message ID: '.$contents{'msgid'}):'no msg req');
$status.=' trans: '.
- &Apache::lonnet::put('nohist_email',{$contents{'msgid'} => $message});
+ &Apache::lonnet::put(
+ 'nohist_email',{$contents{'msgid'} => $message{$msgid}});
$status.=' del: '.
&Apache::lonnet::del('critical',[$contents{'msgid'}]);
&Apache::lonnet::log($ENV{'user.domain'},$ENV{'user.name'},
$ENV{'user.home'},'Received critical message '.
$contents{'msgid'}.
', '.$status);
+ return $status;
}
# ======================================================== Normal communication
@@ -172,7 +202,6 @@ sub user_normal_msg {
unless (($message)&&($user)&&($domain)) { $status='empty'; };
my $homeserver=&Apache::lonnet::homeserver($user,$domain);
if ($homeserver ne 'no_host') {
- my $msgid;
($msgid,$message)=&packagemsg($subject,$message,$citation);
$status=&Apache::lonnet::critical(
'put:'.$domain.':'.$user.':nohist_email:'.
@@ -198,54 +227,114 @@ sub statuschange {
($status{$msgid} eq 'forwarded')) {
&Apache::lonnet::put('email_status',{$msgid => $newstatus});
}
+ if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {
+ &Apache::lonnet::put('email_status',{$msgid => $newstatus});
+ }
}
-# ===================================================================== Handler
-sub handler {
+# ======================================================= Display a course list
+
+sub discourse {
my $r=shift;
+ my %courselist=&Apache::lonnet::dump(
+ 'classlist',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ my $now=time;
+ $r->print(<
+
+
+
+
+
+
+ENDDISHEADER
+ foreach (sort keys %courselist) {
+ my ($end,$start)=split(/\:/,$courselist{$_});
+ my $active=1;
+ if (($end) && ($now>$end)) { $active=0; }
+ if ($active) {
+ my ($sname,$sdom)=split(/\:/,$_);
+ my %reply=&Apache::lonnet::get('environment',
+ ['firstname','middlename','lastname','generation'],
+ $sdom,$sname);
+ my $section=&Apache::lonnet::usection
+ ($sdom,$sname,$ENV{'request.course.id'});
+ $r->print(
+ ' '.
+ $reply{'firstname'}.' '.
+ $reply{'middlename'}.' '.
+ $reply{'lastname'}.' '.
+ $reply{'generation'}.
+ ' ('.$_.') '.$section);
+ }
+ }
+}
- return OK if $r->header_only;
+# ==================================================== Display Critical Message
-# --------------------------- Get query string for limited number of parameters
+sub discrit {
+ my $r=shift;
+ my $header = '
');
- if ($ENV{'form.display'}) {
- my $msgid=$ENV{'form.display'};
- &statuschange($msgid,'read');
- my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
- my %content=&unpackagemsg($message{$msgid});
- $r->print('Subject: '.$content{'subject'}.
- ' From: '.$content{'sendername'}.' at '.
- $content{'senderdomain'}.
- ' Time: '.$content{'time'}.'Functions: '.
- 'Reply
'.
- $content{'message'}.'
'.$content{'citation'});
- } elsif ($ENV{'form.replyto'}) {
- my $msgid=$ENV{'form.replyto'};
+sub comprep {
+ my ($r,$msgid)=@_;
my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
my %content=&unpackagemsg($message{$msgid});
my $quotemsg='> '.$content{'message'};
@@ -255,54 +344,63 @@ sub handler {
my $subject='Re: '.$content{'subject'};
my $dispcrit='';
if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
+ my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
$dispcrit=
- ' Send as critical message