--- loncom/interface/lonmsg.pm 2002/10/11 20:09:36 1.41
+++ loncom/interface/lonmsg.pm 2003/02/17 17:39:53 1.48
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.41 2002/10/11 20:09:36 www Exp $
+# $Id: lonmsg.pm,v 1.48 2003/02/17 17:39:53 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,21 +47,19 @@ package Apache::lonmsg;
use strict;
use Apache::lonnet();
use vars qw($msgcount);
-use HTML::TokeParser;
+use HTML::TokeParser();
use Apache::Constants qw(:common);
-use Apache::loncommon;
-use Apache::lontexconvert;
+use Apache::loncommon();
+use Apache::lontexconvert();
+use HTML::Entities();
# ===================================================================== Package
sub packagemsg {
my ($subject,$message,$citation)=@_;
- $message=~s/\\<\;/g;
- $message=~s/\>/\>\;/g;
- $citation=~s/\\<\;/g;
- $citation=~s/\>/\>\;/g;
- $subject=~s/\\<\;/g;
- $subject=~s/\>/\>\;/g;
+ $message =&HTML::Entities::encode($message);
+ $citation=&HTML::Entities::encode($citation);
+ $subject =&HTML::Entities::encode($subject);
my $now=time;
$msgcount++;
my $partsubj=$subject;
@@ -166,6 +164,13 @@ sub user_crit_msg_raw {
'put:'.$domain.':'.$user.':critical:'.
&Apache::lonnet::escape($msgid).'='.
&Apache::lonnet::escape($message),$homeserver);
+ if ($ENV{'request.course.id'}) {
+ &user_normal_msg_raw(
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ 'Critical ['.$user.':'.$domain.']',
+ $message);
+ }
} else {
$status='no_host';
}
@@ -210,9 +215,10 @@ sub user_crit_received {
&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'}):'no msg req');
+ ' acknowledged receipt of message'."\n".' "'.
+ $contents{'subject'}.'"'."\n".'dated '.
+ $contents{'time'}.".\n"
+ ):'no msg req');
$status.=' trans: '.
&Apache::lonnet::put(
'nohist_email',{$contents{'msgid'} => $message{$msgid}});
@@ -525,10 +531,11 @@ sub compout {
'
');
unless (($broadcast eq 'group') || ($broadcast eq 'upload')) {
my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain');
-
+ my $selectlink=&Apache::loncommon::selectstudent_link
+ ('compemail','recuname','recdomain');
$r->print(<<"ENDREC");
-Username: | |
+Username: | | $selectlink |
Domain: |
$domform |
ENDREC
@@ -578,6 +585,111 @@ ENDUPLOAD
$r->print('');
}
+# ---------------------------------------------------- Display all face to face
+
+sub disfacetoface {
+ my ($r,$user,$domain)=@_;
+ unless ($ENV{'request.course.id'}) { return; }
+ unless (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
+ return;
+ }
+ my %records=&Apache::lonnet::dump('nohist_email',
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
+ '%255b'.$user.'%253a'.$domain.'%255d');
+ my $result='';
+ foreach (sort keys %records) {
+ my %content=&unpackagemsg($records{$_});
+ next if ($content{'senderdomain'} eq '');
+ $content{'message'}=~s/\n/\
/g;
+ if ($content{'subject'}=~/^Record/) {
+ $result.='Record
';
+ } else {
+ $result.='Sent Message
';
+ %content=&unpackagemsg($content{'message'});
+ $content{'message'}=
+ 'Subject: '.$content{'subject'}.'
'.
+ $content{'message'};
+ }
+ $result.='By: '.
+&Apache::loncommon::aboutmewrapper(
+ &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).' ('.
+$content{'sendername'}.'@'.
+ $content{'senderdomain'}.') '.$content{'time'}.
+ '
'.
+ &Apache::lontexconvert::msgtexconverted($content{'message'}).
+ '
';
+ }
+ # Check to see if there were any messages.
+ if ($result eq '') {
+ $r->print("No notes, face-to-face discussion records, or critical messages in this course.
");
+ } else {
+ $r->print($result);
+ }
+}
+
+# ---------------------------------------------------------------- Face to face
+
+sub facetoface {
+ my ($r,$stage)=@_;
+ unless (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
+ return;
+ }
+# from query string
+ if ($ENV{'form.recname'}) { $ENV{'form.recuname'}=$ENV{'form.recname'}; }
+ if ($ENV{'form.recdom'}) { $ENV{'form.recdomain'}=$ENV{'form.recdom'}; }
+
+ my $defdom=$ENV{'user.domain'};
+# already filled in
+ if ($ENV{'form.recdomain'}) { $defdom=$ENV{'form.recdomain'}; }
+# generate output
+ my $domform = &Apache::loncommon::select_dom_form($defdom,'recdomain');
+ my $stdbrws = &Apache::loncommon::selectstudent_link
+ ('stdselect','recuname','recdomain');
+ $r->print(<<"ENDTREC");
+User Notes, Records of Face-To-Face Discussions, and Critical Messages in Course
+
+ENDTREC
+ if (($stage ne 'query') &&
+ ($ENV{'form.recdomain'}) && ($ENV{'form.recuname'})) {
+ chomp($ENV{'form.newrecord'});
+ if ($ENV{'form.newrecord'}) {
+ &user_normal_msg_raw(
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ 'Record ['.$ENV{'form.recuname'}.':'.$ENV{'form.recdomain'}.']',
+ $ENV{'form.newrecord'});
+ }
+ $r->print(''.&Apache::loncommon::plainname($ENV{'form.recuname'},
+ $ENV{'form.recdomain'}).'
');
+ &disfacetoface($r,$ENV{'form.recuname'},$ENV{'form.recdomain'});
+ $r->print(<
+
+
+ENDRHEAD
+ $r->print(<New Record (record is visible to course faculty and staff)
+
+
+
+
+
+ENDBFORM
+ }
+}
+
# ===================================================================== Handler
sub handler {
@@ -593,13 +705,15 @@ sub handler {
# --------------------------- Get query string for limited number of parameters
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['display','replyto','forward','markread','markdel','markunread',
- 'sendreply','compose','sendmail','critical','recname','recdom']);
+ 'sendreply','compose','sendmail','critical','recname','recdom',
+ 'recordftf']);
# ------------------------------------------------------ They checked for email
&Apache::lonnet::put('email_status',{'recnewemail'=>0});
# --------------------------------------------------------------- Render Output
- $r->print('EMail and Messaging'.
+ $r->print('EMail and Messaging'.
+ &Apache::loncommon::studentbrowser_javascript().''.
&Apache::loncommon::bodytag('EMail and Messages'));
if ($ENV{'form.display'}) {
my $msgid=$ENV{'form.display'};
@@ -621,6 +735,8 @@ $content{'sendername'},$content{'senderd
'">Forward'.
'Mark Unread | '.
+ 'Delete | '.
'Display all Messages | '.
'
'.
&Apache::lontexconvert::msgtexconverted($content{'message'}).
@@ -688,6 +804,8 @@ $content{'sendername'},$content{'senderd
&disall($r);
} elsif ($ENV{'form.compose'}) {
&compout($r,'',$ENV{'form.compose'});
+ } elsif ($ENV{'form.recordftf'}) {
+ &facetoface($r,$ENV{'form.recordftf'});
} elsif ($ENV{'form.sendmail'}) {
my %content=();
undef %content;