'.
- ''.
+ my $discussion = ' '.
+ ''.
'';
my $escsymb=&escape($ressymb);
if ($visible) {
@@ -820,26 +806,28 @@ sub action_links_bar {
$discussion .= '&previous='.$prevread;
}
$discussion .= &group_args($group);
- $discussion .='">'.&mt('Chronological View').'
- '.&mt('Chronological View').' ';
+
+ my $otherviewurl='/adm/feedback?cmd=sortfilter&symb='.$escsymb.'&inhibitmenu=yes&modal=yes';
if ($newpostsflag) {
- $discussion .= '&previous='.$prevread;
+ $otherviewurl .= '&previous='.$prevread;
}
- $discussion .= &group_args($group);
- $discussion .='">'.&mt('Sorting/Filtering options').''.(' ' x2);
+ $otherviewurl .= &group_args($group);
+ $discussion .= &Apache::loncommon::modal_link($otherviewurl,&mt('Other Views ...'),800,340);
+ $discussion .= ' ';
}
$discussion .=''.&mt('Export').'? | ';
+ $discussion .= '">'.&mt('Export').'';
if ($newpostsflag) {
if (!$markondisp) {
$discussion .=''.
- &mt('Preferences on what is marked as NEW').
+ &mt('My general preferences on what is marked as NEW').
' '.&mt('Mark NEW posts no longer new').' | ';
@@ -1104,14 +1092,8 @@ sub build_posting_display {
if ($outputtarget ne 'tex') {
if (&editing_allowed($escsymb.':::'.$idx,$group)) {
if (($env{'user.domain'} eq $contrib{$idx.':senderdomain'}) && ($env{'user.name'} eq $contrib{$idx.':sendername'})) {
- $sender.=' '.&mt('Edit').'';
-
+ $sender.=' '.
+ &discussion_link($symb,&mt('Edit'),'editdisc',$idx,$$newpostsflag,$prevread,&group_args($group));
unless ($seeid) {
my $grpargs = &group_args($group);
$sender.=" '.&mt('Make Visible').'';
+ $sender.=' '.
+ &discussion_link($symb,&mt('Make Visible'),'unhide',$idx,$$newpostsflag,$prevread,&group_args($group));
}
} else {
- $sender.=' '.&mt('Hide').'';
+ $sender.=' '.
+ &discussion_link($symb,&mt('Hide'),'hide',$idx,$$newpostsflag,$prevread,&group_args($group));
}
my $grpargs = &group_args($group);
$sender.=
@@ -1289,32 +1262,24 @@ sub build_posting_display {
unless ($$notshown{$idx} == 1) {
if ($prevread > 0 && $prevread <= $posttime) {
$$newitem{$idx} = 1;
- $$discussionitems[$idx] .= '
-
- '.&mt('NEW').' | ';
+ $$discussionitems[$idx] .= ''.&mt('NEW').' ';
} else {
$$newitem{$idx} = 0;
- $$discussionitems[$idx] .= '
-
- | ';
}
- $$discussionitems[$idx] .= ' '.
- ''.$subject.' '.
+ $$discussionitems[$idx] .= ''.$subject.' '.
$sender.' '.$vgrlink.' ('.
- &Apache::lonlocal::locallocaltime($posttime).') | ';
+ &Apache::lonlocal::locallocaltime($posttime).')';
if ($$dischash{$toggkey}) {
- $$discussionitems[$idx].=' '.
- $ctlink.' | ';
+ $$discussionitems[$idx].=' '.$ctlink;
}
- $$discussionitems[$idx].= ' '.
+ $$discussionitems[$idx].= '
'.
$message.' ';
if ($contrib{$idx.':history'}) {
my @postversions = ();
$$discussionitems[$idx] .= &mt('This post has been edited by the author.');
if ($seeid) {
- $$discussionitems[$idx] .= ' '.&mt('Display all versions').'';
+ $$discussionitems[$idx] .= ' '.
+ &discussion_link($symb,&mt('Display all versions'),'allversions',$idx,$$newpostsflag,$prevread,&group_args($group));
}
$$discussionitems[$idx].=' '.&mt('Earlier version(s) were posted on: ');
if ($contrib{$idx.':history'} =~ m/:/) {
@@ -1670,7 +1635,7 @@ END
$comment = &unescape($env{'form.comment'});
&process_attachments(\@currnewattach,\@currdelold,\@keepold);
}
- my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(undef,undef,1);
+ my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(undef,undef,1,($env{'form.modal'}?'popup':0));
my $send=&mt('Send');
my $alert = &mt('Please select a feedback type.');
my $js= <'.&Apache::lontexconvert::msgtexconverted($quote).' ';
}
-
+ my $header='';
+ unless ($env{'form.modal'}) {
+ $header="$restitle";
+ }
$r->print(<$restitle
+$header
@@ -2708,16 +2678,16 @@ sub screen_header {
}
}
if ($msgoptions) {
- $msgoptions=''
- .' '.&mt('Send Feedback').''.&Apache::lonhtmlcommon::coursepreflink(&mt('Feedback Settings'),'feedback').' '
- .$msgoptions;
+ $msgoptions=''
+ .' '.&mt('Send Feedback').' '.&Apache::lonhtmlcommon::coursepreflink(&mt('Feedback Settings'),'feedback').' | '.
+ ''.$msgoptions.' | ';
}
if ($discussoptions) {
- $discussoptions=''
- .' '.&mt('Discussion Contributions').''.&Apache::lonhtmlcommon::coursepreflink(&mt('Discussion Settings'),'discussion').' '
- .$discussoptions;
+ $discussoptions=''
+ .' '.&mt('Discussion Contributions').' '.&Apache::lonhtmlcommon::coursepreflink(&mt('Discussion Settings'),'discussion').' | '.
+ ''.$discussoptions.' | ';
}
- return $msgoptions.$discussoptions;
+ return &Apache::loncommon::start_data_table().$msgoptions.$discussoptions.&Apache::loncommon::end_data_table();
}
sub resource_output {
@@ -2817,8 +2787,11 @@ sub send_msg {
}
}
-
- my %record=&Apache::lonnet::restore('_feedback');
+# Records of number of postings, etc, are kept under the "symb" called "_feedback"
+# There are two entries within the framework of a course:
+# - the URLs for which feedback was provided
+# - the total number of contributions
+ my %record=&getdiscrecords();
my ($temp)=keys(%record);
unless ($temp=~/^error\:/) {
my %newrecord=();
@@ -2832,6 +2805,66 @@ sub send_msg {
return ($status,$sendsomething);
}
+# Routine to get the complete discussion records
+
+sub getdiscrecords {
+ my ($uname,$udom,$course)=@_;
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=&Apache::lonnet::restore('_feedback',$course,$udom,$uname);
+ return %record;
+}
+
+# Routine to get discussion statistics
+
+sub getdiscstats {
+ my %record=&getdiscrecords(@_);
+ my $subnumber=$record{'subnumber'};
+ my $points=0;
+ my $likes=0;
+ foreach my $key (keys(%record)) {
+ if ($key=~/^\d+\:points$/) {
+ $points+=$record{$key};
+ }
+ if ($key=~/^\d+\:likes$/) {
+ $likes+=$record{$key};
+ }
+ }
+ return ($subnumber,$points,$likes);
+}
+
+# Store discussion credit
+
+sub storediscpoints {
+ my ($points,$uname,$udom,$course)=@_;
+ unless ($points) { $points=0; }
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=('grader_user' => $env{'user.name'},
+ 'grader_domain' => $env{'user.domain'},
+ 'points' => $points);
+ return &Apache::lonnet::cstore(\%record,'_feedback');
+}
+
+# Store discussion "likes"
+
+sub storedisclikes {
+ my ($likes,$uname,$udom,$course)=@_;
+ unless ($likes) { $likes=0; }
+ if ($likes>0) { $likes=1; }
+ if ($likes<0) { $likes=-1; }
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=('likes_user' => $env{'user.name'},
+ 'likes_domain' => $env{'user.domain'},
+ 'likes' => $likes);
+ return &Apache::lonnet::cstore(\%record,'_feedback');
+}
+
+
sub adddiscuss {
my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_;
my $status='';
|
|