--- loncom/interface/lonfeedback.pm 2006/12/27 02:45:41 1.238
+++ loncom/interface/lonfeedback.pm 2008/02/25 13:16:34 1.252
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.238 2006/12/27 02:45:41 raeburn Exp $
+# $Id: lonfeedback.pm,v 1.252 2008/02/25 13:16:34 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -91,7 +91,7 @@ sub list_discussion {
if (not &discussion_visible($status)) {
if ($mode ne 'board') {
&Apache::lonenc::check_encrypt(\$ressymb);
- return &send_message_link($ressymb);
+ return '
'.&send_message_link($ressymb);
}
}
if ($group ne '' && $mode eq 'board') {
@@ -637,7 +637,7 @@ END
}
}
if ($dischash{$toggkey}) {
- my $storebutton = &mt('Store read/unread changes');
+ my $storebutton = &mt('Save read/unread changes');
$discussion.='
'.
''."\n".
' | ';
+ $discussion.=' ';
if (&discussion_open($status) &&
&Apache::lonnet::allowed('pch',
$env{'request.course.id'}.
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
if ($outputtarget ne 'tex') {
- $discussion.= &send_feedback_link($ressymb,$target).
- ' ';
+ $discussion.= &send_feedback_link($ressymb,$target);
}
}
if ($outputtarget ne 'tex') {
$discussion.= &send_message_link($ressymb);
}
- $discussion.=' |
';
+ $discussion.='';
}
return $discussion;
}
@@ -763,7 +762,7 @@ sub send_feedback_link {
sub send_message_link {
my ($ressymb) = @_;
- my $output = ''.
+ my $output = ''.
' ['.$$anonhash{$key}.'] '.
$screenname;
}
-
+ if ($see_anonymous) {
+ $sender.=&Apache::loncommon::student_image_tag($contrib{$idx.':senderdomain'},$contrib{$idx.':sendername'});
+ }
# Set up for sorting by domain, then username
unless (defined($$usernamesort{$contrib{$idx.':senderdomain'}})) {
%{$$usernamesort{$contrib{$idx.':senderdomain'}}} = ();
@@ -1468,7 +1472,7 @@ sub replicate_attachments {
}
sub mail_screen {
- my ($r,$feedurl,$options,$symb) = @_;
+ my ($r,$feedurl,$options,$caller_symb) = @_;
if (exists($env{'form.origpage'})) {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['subject','comment','currnewattach','addnewattach','deloldattach','delnewattach','timestamp','idx','anondiscuss','discuss','blog','group','ref']);
}
@@ -1480,7 +1484,7 @@ sub mail_screen {
'reta' => 'Retained attachments',
'atta' => 'Attachment (128 KB max size)',
);
- my $restitle = &get_resource_title($symb,$feedurl);
+ my $restitle = &get_resource_title($caller_symb,$feedurl);
my $quote='';
my $subject = '';
my $comment = '';
@@ -1967,7 +1971,7 @@ END
-
+
END
if (exists($env{'form.group'})) {
$r->print('');
@@ -2055,7 +2059,7 @@ sub print_sortfilter_options {
'spgr' => 'Specific groups',
'psub' => 'Pick specific users (by name)',
'shal' => 'Show a list of current posters',
- 'stor' => 'Store changes',
+ 'stor' => 'Save changes',
);
my %sort_types = ();
@@ -2559,26 +2563,31 @@ sub screen_header {
'';
}
+ my %optionhash=();
+ foreach my $type ('question','comment','policy') {
+ $optionhash{$type}=$env{'course.'.$env{'request.course.id'}.'.'.$type.'.email.text'};
+ }
if (&feedback_available(1)) {
$msgoptions.=
'';
+ ($optionhash{'question'}?$optionhash{'question'}:&mt('Question about resource content')).'';
}
if (&feedback_available(0,1)) {
$msgoptions.=
'';
}
if (&feedback_available(0,0,1)) {
$msgoptions.=
'';
}
}
if (($env{'request.course.id'}) && (!$env{'form.sendmessageonly'})) {
- if (&discussion_open(undef,$symb) &&
+ my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards');
+ if (!$blocked && &discussion_open(undef,$symb) &&
&Apache::lonnet::allowed('pch',
$env{'request.course.id'}.
($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
@@ -2588,10 +2597,10 @@ sub screen_header {
&mt('Anonymous contribution to course discussion of resource').
' ('.&mt('name only visible to course faculty').') '.
''.&mt('Change Screenname').'';
- }
- my $blockblog = &Apache::loncommon::blocking_status('blogs');
- if (!$blockblog) {
- $discussoptions.= &add_blog_checkbox();
+ my $blockblog = &Apache::loncommon::blocking_status('blogs');
+ if (!$blockblog) {
+ $discussoptions.= &add_blog_checkbox();
+ }
}
}
if ($msgoptions) { $msgoptions=''.&mt('Sending Messages').'
'.$msgoptions; }
@@ -2661,142 +2670,53 @@ ENDCITE
return ($email,$citations);
}
-sub secapply {
- my $rec=shift;
- my $defaultflag=shift;
- $rec=~s/\s+//g;
- $rec=~s/\@/\:/g;
- my ($adr,$sections_or_groups)=($rec=~/^([^\(]+)\(([^\)]+)\)/);
- if ($sections_or_groups) {
- foreach my $item (split(/\;/,$sections_or_groups)) {
- if (($item eq $env{'request.course.sec'}) ||
- ($defaultflag && ($item eq '*'))) {
- return $adr;
- } elsif ($env{'request.course.groups'}) {
- my @usersgroups = split(/:/,$env{'request.course.groups'});
- if (grep(/^\Q$item\E$/,@usersgroups)) {
- return $adr;
- }
- }
- }
- } else {
- return $rec;
- }
- return '';
-}
-
-=pod
-
-=over 4
-
-=item *
-
-decide_receiver($feedurl,$author,$question,$course,$policy,$defaultflag);
-
-Arguments
- $feedurl - /res/ url of resource (only need if $author is true)
- $author,$question,$course,$policy - all true/false parameters
- if true will attempt to find the addresses of user that should receive
- this type of feedback (author - feedback to author of resource $feedurl,
- $question 'Resource Content Questions', $course 'Course Content Question',
- $policy 'Course Policy')
- (Additionally it also checks $env for whether the corresponding form.
- element exists, for ease of use in a html response context)
-
- $defaultflag - (internal should be left blank) if true gather addresses
- that aren't for a section even if I have a section
- (used for reccursion internally, first we look for
- addresses for our specific section then we recurse
- and look for non section addresses)
-
-Returns
- $typestyle - string of html text, describing what addresses were found
- %to - a hash, which keys are addresses of users to send messages to
- the keys will look like name:domain
-
-=cut
-
-sub decide_receiver {
- my ($feedurl,$author,$question,$course,$policy,$defaultflag) = @_;
- &Apache::lonenc::check_decrypt(\$feedurl);
- my $typestyle='';
- my %to=();
- if ($env{'form.discuss'} eq 'author' ||$author) {
- $typestyle.='Submitting as Author Feedback
';
- $feedurl=~ m{^/res/($LONCAPA::domain_re)/($LONCAPA::username_re)/};
- $to{$2.':'.$1}=1;
- }
- if ($env{'form.discuss'} eq 'question' ||$question) {
- $typestyle.=&mt('Submitting as Question').'
';
- foreach my $item (split(/\,/,
- $env{'course.'.$env{'request.course.id'}.'.question.email'})
- ) {
- my $rec=&secapply($item,$defaultflag);
- if ($rec) { $to{$rec}=1; }
- }
- }
- if ($env{'form.discuss'} eq 'course' ||$course) {
- $typestyle.=&mt('Submitting as Comment').'
';
- foreach my $item (split(/\,/,
- $env{'course.'.$env{'request.course.id'}.'.comment.email'})
- ) {
- my $rec=&secapply($item,$defaultflag);
- if ($rec) { $to{$rec}=1; }
- }
- }
- if ($env{'form.discuss'} eq 'policy' ||$policy) {
- $typestyle.=&mt('Submitting as Policy Feedback').'
';
- foreach my $item (split(/\,/,
- $env{'course.'.$env{'request.course.id'}.'.policy.email'})
- ) {
- my $rec=&secapply($item,$defaultflag);
- if ($rec) { $to{$rec}=1; }
- }
- }
- if ((scalar(%to) eq '0') && (!$defaultflag)) {
- ($typestyle,%to)=
- &decide_receiver($feedurl,$author,$question,$course,$policy,1);
- }
- return ($typestyle,%to);
-}
sub feedback_available {
my ($question,$course,$policy)=@_;
- my ($typestyle,%to)=&decide_receiver('',0,$question,$course,$policy);
+ my ($typestyle,%to)=&Apache::lonmsg::decide_receiver('',0,$question,
+ $course,$policy);
return scalar(%to);
}
sub send_msg {
- my ($title,$feedurl,$email,$citations,$attachmenturl,$symb,%to)=@_;
- my $status='';
- my $sendsomething=0;
- my $restitle = &get_resource_title($symb,$feedurl);
- if ($title=~/^Error/) { $title=&mt('Feedback').': '.$title; }
- unless ($title=~/\w/) { $title=&mt('Feedback'); }
- foreach my $key (keys(%to)) {
- if ($key) {
- unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$key),
- $title.' ['.$restitle.']',$email,$citations,$feedurl,
- $attachmenturl,undef,undef,$symb,$restitle)=~/ok/) {
- $status.='
'.&mt('Error sending message to').' '.$key.'
';
- } else {
- $sendsomething++;
- }
+ my ($title,$feedurl,$email,$citations,$attachmenturl,$symb,%to)=@_;
+ my $status='';
+ my $sendsomething=0;
+ my $restitle = &get_resource_title($symb,$feedurl);
+ if ($title=~/^Error/) { $title=&mt('Feedback').': '.$title; }
+ unless ($title=~/\w/) { $title=&mt('Feedback'); }
+ foreach my $key (keys(%to)) {
+ if ($key) {
+ my ($user,$domain) = split(/\:/,$key,2);
+ if (!defined($user)) {
+ $status.='
'.&mt('Error sending message to [_1], no user specified.',$key);
+ } elsif (!defined($domain)) {
+ $status.='
'.&mt('Error sending message to [_1], no domain specified.',$key);
+ } else {
+ unless (&Apache::lonmsg::user_normal_msg($user,$domain,
+ $title.' ['.$restitle.']',$email,$citations,$feedurl,
+ $attachmenturl,undef,undef,$symb,$restitle)=~/ok/) {
+ $status.='
'.&mt('Error sending message to').' '.$key.'
';
+ } else {
+ $sendsomething++;
+ }
+ }
+ }
}
- }
+
my %record=&Apache::lonnet::restore('_feedback');
my ($temp)=keys(%record);
unless ($temp=~/^error\:/) {
- my %newrecord=();
- $newrecord{'resource'}=$feedurl;
- $newrecord{'subnumber'}=$record{'subnumber'}+1;
- unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {
- $status.='
'.&mt('Not registered').'
';
- }
+ my %newrecord=();
+ $newrecord{'resource'}=$feedurl;
+ $newrecord{'subnumber'}=$record{'subnumber'}+1;
+ unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {
+ $status.='
'.&mt('Not registered').'
';
+ }
}
-
- return ($status,$sendsomething);
+
+ return ($status,$sendsomething);
}
sub adddiscuss {
@@ -3019,7 +2939,7 @@ sub modify_attachments {
'chth' => 'Check the checkboxes for any you wish to remove.',
'thef' => 'The following attachments have been uploaded for inclusion with this posting.',
'adda' => 'Add a new attachment to this post.',
- 'stch' => 'Store Changes',
+ 'stch' => 'Save Changes',
);
my $js = <
@@ -3839,13 +3759,13 @@ ENDREDIR
$usersaw,$useranswer);
# Who gets this?
- my ($typestyle,%to) = &decide_receiver($feedurl);
+ my ($typestyle,%to) = &Apache::lonmsg::decide_receiver($feedurl);
# Actually send mail
my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'},
undef,1),
$feedurl,$email,$citations,
- $attachmenturl,$symb,%to);
+ $attachmenturl,$usersymb,%to);
# Discussion? Store that.
my $numpost=0;