[LON-CAPA-cvs] cvs: loncom /interface lonfeedback.pm /localize/localize de.pm
goltermann
goltermann at source.lon-capa.org
Thu Mar 15 08:45:28 EDT 2012
goltermann Thu Mar 15 12:45:28 2012 EDT
Modified files:
/loncom/interface lonfeedback.pm
/loncom/localize/localize de.pm
Log:
added pickboxes to unify the ui.
tidied up text and buttons to be more clear.
changed a headline to fit to context.
-------------- next part --------------
Index: loncom/interface/lonfeedback.pm
diff -u loncom/interface/lonfeedback.pm:1.339 loncom/interface/lonfeedback.pm:1.340
--- loncom/interface/lonfeedback.pm:1.339 Tue Mar 13 05:37:49 2012
+++ loncom/interface/lonfeedback.pm Thu Mar 15 12:45:21 2012
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.339 2012/03/13 05:37:49 raeburn Exp $
+# $Id: lonfeedback.pm,v 1.340 2012/03/15 12:45:21 goltermann Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -82,26 +82,6 @@
return 1;
}
-sub discussion_vote_available {
- my ($status,$symb)=@_;
- my $canvote=&Apache::lonnet::EXT('resource.0.discussvote',$symb);
- if ((lc($canvote) eq 'yes') ||
- ((lc($canvote) eq 'notended') && (&discussion_open($status,$symb)))) {
- return 1;
- }
-}
-
-sub get_realsymb {
- my ($symb) = @_;
- my $realsymb = $symb;
- if ($symb=~/^bulletin___/) {
- my $filename=(&Apache::lonnet::decode_symb($symb))[2];
- $filename=~s{^adm/wrapper/}{};
- $realsymb=&Apache::lonnet::symbread($filename);
- }
- return $realsymb;
-}
-
sub list_discussion {
my ($mode,$status,$ressymb,$imsextras,$group)=@_;
unless ($ressymb) { $ressymb=&Apache::lonnet::symbread(); }
@@ -285,11 +265,6 @@
} else {
$seeid=&Apache::lonnet::allowed('rin',$crs);
}
-
-# Is voting on discussions available
- my $realsymb = &get_realsymb($ressymb);
- my $canvote = &discussion_vote_available($status,$realsymb);
-
my @discussionitems=();
my %shown = ();
my @posteridentity=();
@@ -311,7 +286,7 @@
$discinfo{$visitkey} = $visit;
&Apache::lonnet::put('nohist_'.$cid.'_discuss',\%discinfo,$env{'user.domain'},$env{'user.name'});
- &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$canvote,$prevread,$sortposts,$encsymb,$readkey,$showunmark,$showonlyunread,$totposters,\@rolefilter,\@sectionpick,\@grouppick,$classgroups,$statusfilter,$toggkey,$outputtarget,\%anonhash,$anoncnt,$group);
+ &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$encsymb,$readkey,$showunmark,$showonlyunread,$totposters,\@rolefilter,\@sectionpick,\@grouppick,$classgroups,$statusfilter,$toggkey,$outputtarget,\%anonhash,$anoncnt,$group);
my $discussion='';
my $manifestfile;
@@ -769,15 +744,9 @@
$discussion.= &send_feedback_link($ressymb);
if ($env{'request.role.adv'}) {
my $close = &Apache::lonnet::EXT('resource.0.discussend',$ressymb);
- my $canvote = &Apache::lonnet::EXT('resource.0.discussvote',$ressymb);
if (defined($close) && $close ne '' && $close < time) {
- if ($canvote eq 'notended') {
- $discussion .= ' '.&mt('(Posting and voting closed for [_1] roles)',
- &Apache::lonnet::plaintext('st',$crstype));
- } else {
- $discussion .= ' '.&mt('(Closed for [_1] roles)',
- &Apache::lonnet::plaintext('st',$crstype));
- }
+ $discussion .= ' '.&mt('(Closed for [_1] roles)',
+ &Apache::lonnet::plaintext('st',$crstype));
}
}
} else {
@@ -968,7 +937,7 @@
}
sub build_posting_display {
- my ($usernamesort,$subjectsort,$namesort,$notshown,$newitem,$dischash,$shown,$alldiscussion,$imsitems,$imsfiles,$roleinfo,$discussionitems,$replies,$depth,$posters,$maxdepth,$visible,$newpostsflag,$current,$status,$viewgrades,$seeid,$canvote,$prevread,$sortposts,$ressymb,$readkey,$showunmark,$showonlyunread,$totposters,$rolefilter,$sectionpick,$grouppick,$classgroups,$statusfilter,$toggkey,$outputtarget,$anonhash,$anoncnt,$group) = @_;
+ my ($usernamesort,$subjectsort,$namesort,$notshown,$newitem,$dischash,$shown,$alldiscussion,$imsitems,$imsfiles,$roleinfo,$discussionitems,$replies,$depth,$posters,$maxdepth,$visible,$newpostsflag,$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$ressymb,$readkey,$showunmark,$showonlyunread,$totposters,$rolefilter,$sectionpick,$grouppick,$classgroups,$statusfilter,$toggkey,$outputtarget,$anonhash,$anoncnt,$group) = @_;
my @original=();
my @index=();
my $skip_group_check = 0;
@@ -978,20 +947,14 @@
my %contrib=&Apache::lonnet::restore($symb,$env{'request.course.id'},
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'});
- my (%likes,%userlikes,%userunlikes, at theselikes,$oneplus,$twoplus,$oneminus,$twominus);
- my $thisuser=$env{'user.name'}.':'.$env{'user.domain'};
- if ($seeid || $canvote) {
# And these are the likes/unlikes
- %likes=&Apache::lonnet::dump('disclikes',
+ my %likes=&Apache::lonnet::dump('disclikes',
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'},
'^'.$symb.':');
+ my $thisuser=$env{'user.name'}.':'.$env{'user.domain'};
# Array with likes to figure out averages, etc.
- @theselikes=();
-# Hashes containing likes and unlikes for this user.
- %userlikes=();
- %userunlikes=();
- }
+ my @theselikes=();
# Is the user allowed to see the real name behind anonymous postings?
my $see_anonymous =
&Apache::lonnet::allowed('rin',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
@@ -1025,55 +988,40 @@
&filter_regexp($rolefilter,$sectionpick,$statusfilter);
$rolematch = $roleregexp.':'.$secregexp.':'.$statusregexp;
}
- if ($seeid || $canvote) {
# We need to go through this twice, first to get the likes/dislikes, then to actually build the display
- for (my $id=1;$id<=$contrib{'version'};$id++) {
- my $idx=$id;
- next if ($contrib{$idx.':deleted'});
- next if ($contrib{$idx.':hidden'});
- unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx}) || (!$contrib{$idx.':message'})) {
- if ($likes{$symb.':'.$idx.':likes'} ne '') {
- push(@theselikes,$likes{$symb.':'.$idx.':likes'});
- if (ref($likes{$symb.':'.$idx.':likers'}) eq 'HASH') {
- if (exists($likes{$symb.':'.$idx.':likers'}{$thisuser})) {
- $userlikes{$idx} = 1;
- }
- }
- if (ref($likes{$symb.':'.$idx.':unlikers'}) eq 'HASH') {
- if (exists($likes{$symb.':'.$idx.':unlikers'}{$thisuser})) {
- $userunlikes{$idx} = 1;
- }
- }
- }
- }
+ for (my $id=1;$id<=$contrib{'version'};$id++) {
+ my $idx=$id;
+ next if ($contrib{$idx.':deleted'});
+ next if ($contrib{$idx.':hidden'});
+ unless ((($hiddens{$idx}) && (!$seeid)) || ($deletions{$idx}) || (!$contrib{$idx.':message'})) {
+ push(@theselikes,$likes{$symb.':'.$idx.':likes'});
}
-# Figure out average likes and standard deviation if there are enough
-# discussions to warrant that
- my $ave=0;
- my $stddev=10000;
- if ($#theselikes>1) {
- my $sum=0;
- my $num=$#theselikes+1;
- foreach my $thislike (@theselikes) {
- $sum+=$thislike;
- }
- $ave=$sum/$num;
- my $sumsq=0;
- foreach my $thislike (@theselikes) {
- $sumsq+=($thislike-$ave)*($thislike-$ave);
- }
- $stddev=sqrt($sumsq/$num);
+ }
+# Figure out average likes and standard deviation if there are enough discussions to warrant that
+ my $ave=0;
+ my $stddev=10000;
+ if ($#theselikes>1) {
+ my $sum=0;
+ my $num=$#theselikes+1;
+ foreach my $thislike (@theselikes) {
+ $sum+=$thislike;
+ }
+ $ave=$sum/$num;
+ my $sumsq=0;
+ foreach my $thislike (@theselikes) {
+ $sumsq+=($thislike-$ave)*($thislike-$ave);
}
+ $stddev=sqrt($sumsq/$num);
+ }
# Now we know the average likes $ave and the standard deviation $stddev
# Get the boundaries for markup
- $oneplus=$ave+$stddev;
- $twoplus=$ave+2.*$stddev;
- $oneminus=$ave-$stddev;
- $twominus=$ave-2.*$stddev;
- }
+ my $oneplus=$ave+$stddev;
+ my $twoplus=$ave+2.*$stddev;
+ my $oneminus=$ave-$stddev;
+ my $twominus=$ave-2.*$stddev;
#
# This is now the real loop. Go through all entries, pick up what we need
-#
+#
for (my $id=1;$id<=$contrib{'version'};$id++) {
my $idx=$id;
next if ($contrib{$idx.':deleted'});
@@ -1123,7 +1071,7 @@
my %subjects = ();
my %attachtxt = ();
my %allattachments = ();
- my ($screenname,$plainname,$showaboutme);
+ my ($screenname,$plainname);
my $sender = &mt('Anonymous');
# Anonymous users getting number within a discussion
# Since idx is in static order, this should give the same sequence every time.
@@ -1133,7 +1081,7 @@
$$anonhash{$key}=&mt('Anonymous').' '.$anoncnt;
}
my ($message,$subject,$vgrlink,$ctlink);
- &get_post_contents(\%contrib,$idx,$seeid,$outputtarget,\%messages,\%subjects,\%allattachments,\%attachtxt,$imsfiles,\$screenname,\$plainname,\$showaboutme,$numoldver);
+ &get_post_contents(\%contrib,$idx,$seeid,$outputtarget,\%messages,\%subjects,\%allattachments,\%attachtxt,$imsfiles,\$screenname,\$plainname,$numoldver);
# Set up for sorting by subject
@@ -1163,18 +1111,12 @@
}
}
if (!$contrib{$idx.':anonymous'} || $see_anonymous) {
- if ($showaboutme) {
- $sender = &Apache::loncommon::aboutmewrapper(
- $plainname,
- $contrib{$idx.':sendername'},
- $contrib{$idx.':senderdomain'});
- } else {
- $sender = $plainname;
- }
- if ($see_anonymous) {
- $sender .= ' ('.$contrib{$idx.':sendername'}.':'.
- $contrib{$idx.':senderdomain'}.')';
- }
+ $sender=&Apache::loncommon::aboutmewrapper(
+ $plainname,
+ $contrib{$idx.':sendername'},
+ $contrib{$idx.':senderdomain'}).' ('.
+ $contrib{$idx.':sendername'}.':'.
+ $contrib{$idx.':senderdomain'}.')';
$sender = '<b>'.$sender.'</b>';
if ($contrib{$idx.':anonymous'}) {
$sender.=' <font color="red"><b>['.$$anonhash{$key}.']</b></font> '.
@@ -1401,47 +1343,40 @@
if ($$dischash{$toggkey}) {
$$discussionitems[$idx].=' '.$ctlink;
}
+# Figure out size based on likes
my $thislikes=$likes{$symb.':'.$idx.':likes'};
my $likesize="100";
- if ($seeid || $canvote) {
-# Figure out size based on likes
- my $thislikes=$likes{$symb.':'.$idx.':likes'};
- if ($thislikes>$twoplus) {
- $likesize="200";
- } elsif ($thislikes>$oneplus) {
- $likesize="150";
- }
- if ($thislikes<$twominus) {
- $likesize="50";
- } elsif ($thislikes<$oneminus) {
- $likesize="75";
- }
+ if ($thislikes>$twoplus) {
+ $likesize="200";
+ } elsif ($thislikes>$oneplus) {
+ $likesize="150";
+ }
+ if ($thislikes<$twominus) {
+ $likesize="50";
+ } elsif ($thislikes<$oneminus) {
+ $likesize="75";
}
# Actually glue in the message itself
$$discussionitems[$idx].= '<br /><blockquote>'.
"<div style='font-size:$likesize%'>".
$message.
'</div></blockquote>';
- if ($canvote) {
# Put in the like and unlike buttons
- if ($userlikes{$idx}) {
- $$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />';
- } else {
- $$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting"));
- }
- if ($userunlikes{$idx}) {
- $$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />';
- } else {
- $$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />','unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike this posting"));
- }
+ unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) {
+ $$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsup.png" alt="'.&mt('Like').'" />','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting"));
+ } else {
+ $$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsup_gray.png" alt="'.&mt('You like this posting').'" />';
}
- if ($seeid || $canvote) {
- my $thislikes=$likes{$symb.':'.$idx.':likes'};
- if ($thislikes>0) {
- $$discussionitems[$idx].=' ('.&mt("[_1] likes",$thislikes).')';
- } elsif ($thislikes<0) {
- $$discussionitems[$idx].=' ('.&mt("[_1] unlikes",abs($thislikes)).')';
- }
+ unless ($likes{$symb.':'.$idx.':unlikers'}=~/\,\Q$thisuser\E\,/) {
+ $$discussionitems[$idx].=' '.&discussion_link($symb,'<img border="0" src="/res/adm/pages/thumbsdown.png" alt="'.&mt('Unlike').'" />',,'unlike',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Unlike this posting"));
+ } else {
+ $$discussionitems[$idx].='<img border="0" src="/res/adm/pages/thumbsdown_gray.png" alt="'.&mt('You unlike this posting').'" />';
+ }
+ my $thislikes=$likes{$symb.':'.$idx.':likes'};
+ if ($thislikes>0) {
+ $$discussionitems[$idx].=' ('.&mt("[_1] likes",$thislikes).')';
+ } elsif ($thislikes<0) {
+ $$discussionitems[$idx].=' ('.&mt("[_1] unlikes",abs($thislikes)).')';
}
# If there is any history to this post, inform the reader
if ($contrib{$idx.':history'}) {
@@ -1533,7 +1468,7 @@
sub get_post_contents {
- my ($contrib,$idx,$seeid,$type,$messages,$subjects,$allattachments,$attachtxt,$imsfiles,$screenname,$plainname,$showaboutme,$numver) = @_;
+ my ($contrib,$idx,$seeid,$type,$messages,$subjects,$allattachments,$attachtxt,$imsfiles,$screenname,$plainname,$numver) = @_;
my $discussion = '';
my $start=$numver;
my $end=$numver + 1;
@@ -1551,20 +1486,13 @@
$$contrib{$idx.':sendername'},
$$contrib{$idx.':senderdomain'});
$$screenname=$$contrib{$idx.':screenname'};
- $$showaboutme = &Apache::lonnet::usertools_access($$contrib{$idx.':sendername'},
- $$contrib{$idx.':senderdomain'},
- 'aboutme');
- my $sender = $$plainname;
- if ($$showaboutme) {
- $sender = &Apache::loncommon::aboutmewrapper(
+
+ my $sender=&Apache::loncommon::aboutmewrapper(
$$plainname,
$$contrib{$idx.':sendername'},
- $$contrib{$idx.':senderdomain'});
- }
- if ($seeid) {
- $sender .= ' ('.$$contrib{$idx.':sendername'}.':'.
- $$contrib{$idx.':senderdomain'}.')';
- }
+ $$contrib{$idx.':senderdomain'}).' ('.
+ $$contrib{$idx.':sendername'}.':'.
+ $$contrib{$idx.':senderdomain'}.')';
my $attachmenturls = $$contrib{$idx.':attachmenturl'};
my @postversions = ();
if ($type eq 'allversions' || $type eq 'export') {
@@ -1680,11 +1608,16 @@
}
my %lt = &Apache::lonlocal::texthash(
- 'myqu' => 'My question/comment/feedback:',
+ 'myqu' => 'Question/comment/feedback:',
'title' => 'Title',
'reta' => 'Retained attachments',
'atta' => 'Attachment',
);
+ if($env{'form.editdisc'} || $env{'form.replydisc'}){
+ %lt = &Apache::lonlocal::texthash(
+ 'myqu' => 'Post Discussion',
+ );
+ }
my $restitle = &get_resource_title($caller_symb,$feedurl);
my $quote='';
my $subject = '';
@@ -1895,6 +1828,7 @@
}
$r->print(<<END);
$start_page
+<h1>$lt{'myqu'}</h1>
$header
<form action="/adm/feedback" method="post" name="mailform"
enctype="multipart/form-data">
@@ -1915,18 +1849,26 @@
$r->print(<<END);
$options
$quote
-<p>$lt{'myqu'}
+<p>
$textareaheader
</p>
+<br>
<p>
$latexHelp
</p>
<p>
-$lt{'title'}: <input type="text" name="subject" size="30" value="$subject" /></p>
-<p>
-<textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>$comment
-</textarea></p>
END
+
+$r->print(&Apache::lonhtmlcommon::start_pick_box());
+$r->print(&Apache::lonhtmlcommon::row_title(&mt('Subject')));
+$r->print('<input type="text" name="subject" size="30" value="'."$subject".'" /></p>');
+$r->print(&Apache::lonhtmlcommon::row_closure());
+$r->print(&Apache::lonhtmlcommon::row_title(&mt('Message')));
+$r->print('<textarea name="comment" id="comment" cols="60" rows="10" $textareaclass>'."$comment".
+'</textarea>');
+$r->print(&Apache::lonhtmlcommon::row_closure(1));
+$r->print(&Apache::lonhtmlcommon::end_pick_box());
+
if ( ($env{'form.editdisc'}) || ($env{'form.replydisc'}) ) {
if ($env{'form.origpage'}) {
foreach my $attach (@currnewattach) {
@@ -2838,7 +2780,12 @@
my ($blocked,$blocktext) = &Apache::loncommon::blocking_status('boards');
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
- my $realsymb = &get_realsymb($symb);
+ my $realsymb = $symb;
+ if ($symb=~/^bulletin___/) {
+ my $filename=(&Apache::lonnet::decode_symb($symb))[2];
+ $filename=~s|^adm/wrapper/||;
+ $realsymb=&Apache::lonnet::symbread($filename);
+ }
if (!$blocked && &discussion_open(undef,$realsymb) &&
(&Apache::lonnet::allowed('pch',
$env{'request.course.id'}.
@@ -3041,7 +2988,12 @@
sub adddiscuss {
my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_;
my $status='';
- my $realsymb = &get_realsymb($symb);
+ my $realsymb;
+ if ($symb=~/^bulletin___/) {
+ my $filename=(&Apache::lonnet::decode_symb($symb))[2];
+ $filename=~s|^adm/wrapper/||;
+ $realsymb=&Apache::lonnet::symbread($filename);
+ }
my ($cnum,$cdom);
if ($env{'request.course.id'}) {
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -3396,11 +3348,11 @@
my %lt = &Apache::lonlocal::texthash(
'subj' => 'Subject',
- 'thfo' => 'The following attachments were part of the most recent saved version of this posting.',
'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.',
+ 'adda' => 'Add a new attachment to this post',
'stch' => 'Save Changes',
+ 'clic' => 'Add/remove attachments',
);
my $js = <<END;
<script type="text/javascript">
@@ -3414,7 +3366,7 @@
# Breadcrumbs
my $brcrum = [{'href' => '',
'text' => 'Discussion Post Attachments'}];
- my %parms=();
+ my %parms=('only_body' => 1);
if ($env{'form.modal'} ne 'yes') { 'bread_crumbs' => $brcrum }
my $start_page =
@@ -3443,44 +3395,43 @@
$toolarge
<form name="modattachments" method="post" enctype="multipart/form-data" action="/adm/feedback?attach=$symb">
<br />
- <table class="LC_data_table">
- <tr>
- <td colspan="2">
- <b>Subject:</b> <b>$subject</b><br /><br />
+ <h1>$lt{'clic'}</h1>
END
- if ($idx) {
- if ($attachmenturls) {
- my @currold = keys(%currattach);
- if (@currold > 0) {
- $r->print($lt{'thfo'}.'<br />'.$lt{'chth'}.'<br />'."\n");
- foreach my $id (@currold) {
- my $attachurl = &HTML::Entities::decode($attachments{$id}{'filename'});
- $attachurl =~ m#/([^/]+)$#;
- $r->print('<label><input type="checkbox" name="deloldattach" value="'.$id.'" /> '.$1.'</label><br />'."\n");
+ $r->print(&Apache::lonhtmlcommon::start_pick_box());
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Subject')));
+ $r->print('<b>'.$subject.'</b>');
+ $r->print(&Apache::lonhtmlcommon::row_closure());
+ $r->print(&Apache::lonhtmlcommon::row_title($lt{'adda'}));
+ $r->print('<input type="file" name="addnewattach" /><input type="button" name="upload" value="Upload" onclick="this.form.submit()" /> '.$attachmaxtext);
+
+ if(($idx)||(ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)){
+ $r->print(&Apache::lonhtmlcommon::row_closure());
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Attachments')));
+ if ($idx) {
+ if ($attachmenturls) {
+ my @currold = keys(%currattach);
+ if (@currold > 0) {
+ $r->print($lt{'thfo'}.'<br />'.$lt{'chth'}.'<br />'."\n");
+ foreach my $id (@currold) {
+ my $attachurl = &HTML::Entities::decode($attachments{$id}{'filename'});
+ $attachurl =~ m#/([^/]+)$#;
+ $r->print('<label><input type="checkbox" name="deloldattach" value="'.$id.'" /> '.$1.'</label><br />'."\n");
+ }
+ $r->print("<br />");
}
- $r->print("<br />");
}
}
- }
- if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {
- $r->print($lt{'thef'}.'<br />'.$lt{'chth'}.'<br />'."\n");
- foreach my $attach (@{$currnewattach}) {
- $attach =~ m#/([^/]+)$#;
- $r->print('<label><input type="checkbox" name="delnewattach" value="'.$attach.'" /> '.$1.'</label><br />'."\n");
+ if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) {
+ $r->print($lt{'chth'}.'<br />'."\n");
+ foreach my $attach (@{$currnewattach}) {
+ $attach =~ m#/([^/]+)$#;
+ $r->print('<label><input type="checkbox" name="delnewattach" value="'.$attach.'" /> '.$1.'</label><br />'."\n");
+ }
}
- $r->print("<br />");
}
+ $r->print(&Apache::lonhtmlcommon::row_closure(1));
+ $r->print(&Apache::lonhtmlcommon::end_pick_box());
$r->print(<<END);
- </td></tr>
- <tr>
- <td>
- $lt{'adda'}</td><td><input type="file" name="addnewattach" /><input type="button" name="upload" value="Upload" onclick="this.form.submit()" />
- </td>
- </tr>
- <tr>
- <td colspan="2">$attachmaxtext</td>
- </tr>
- </table>
<input type="hidden" name="subject" value="$env{'form.subject'}" />
<input type="hidden" name="comment" value="$env{'form.comment'}" />
<input type="hidden" name="timestamp" value="$env{'form.timestamp'}" />
@@ -3536,6 +3487,7 @@
my ($idx,$attachnum,$ressymb,$now,$currnewattach,$deloldattach,
$numoldver,$mode,$blockblog) = @_;
my $origpage = $ENV{'REQUEST_URI'};
+ my $att=$attachnum.' '.&mt("attachments");
my %lt = &Apache::lonlocal::texthash(
'clic' => 'Add/remove attachments',
);
@@ -3860,11 +3812,11 @@
my %attachmsgs = ();
my %allattachments = ();
my %imsfiles = ();
- my ($screenname,$plainname,$showaboutme);
+ my ($screenname,$plainname);
my %contrib=&Apache::lonnet::restore($symb,$env{'request.course.id'},
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'});
- $r->print(&get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname,\$showaboutme));
+ $r->print(&get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname));
}
$r->print(&Apache::loncommon::end_page());
return OK;
@@ -4058,99 +4010,71 @@
my $entry=$env{'form.like'}?$env{'form.like'}:$env{'form.unlike'};
my ($symb,$idx)=split(/\:\:\:/,$entry);
($symb,my $feedurl)=&get_feedurl_and_clean_symb($symb);
- my $status='OPEN';
- if ($Apache::lonhomework::parsing_a_problem ||
- $Apache::lonhomework::parsing_a_task) {
- $status=$Apache::inputtags::status[-1];
- }
- my $result;
- my $realsymb = &get_realsymb($symb);
- if (&discussion_vote_available($status,$realsymb)) {
#
# Likes and unlikes are in db-file "disclikes" of the course
# The prefix is the $symb to identify the resource discussion,
# and the $idx to identify the entry
#
- my $prefix=$symb.':'.$idx.':';
- my %contrib=&Apache::lonnet::dump('disclikes',
+ my $prefix=$symb.':'.$idx.':';
+ my %contrib=&Apache::lonnet::dump('disclikes',
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'},
'^'.$prefix);
-
-# Get current like or unlike status for the $idx for this user.
- my $thisuser=$env{'user.name'}.':'.$env{'user.domain'};
- my ($userlikes,$userunlikes);
- if (ref($contrib{$prefix.'likers'}) eq 'HASH') {
- if (exists($contrib{$prefix.'likers'}{$thisuser})) {
- $userlikes = 1;
- }
- }
- if (ref($contrib{$prefix.'unlikers'}) eq 'HASH') {
- if (exists($contrib{$prefix.'unlikers'}{$thisuser})) {
- $userunlikes = 1;
- }
- }
+# Get all who like or unlike this
+ my $currentlikers=$contrib{$prefix.'likers'};
+ my $currentunlikers=$contrib{$prefix.'unlikers'};
# Get the current "likes" count
- my $likes=$contrib{$prefix.'likes'};
+ my $likes=$contrib{$prefix.'likes'};
# Find out if they already voted
-# Users cannot like a post twice, or unlike it twice.
-# They can change their mind, though.
- my $alreadyflag=0;
- my $thisuser=$env{'user.name'}.':'.$env{'user.domain'};
- if ($env{'form.like'}) {
- if ($userlikes) {
- $alreadyflag=1;
- } elsif ($userunlikes) {
- delete($contrib{$prefix.'unlikers'}{$thisuser});
- $likes++;
+# Users cannot like a post twice, or unlike it twice. They can change their mind, though
+ my $alreadyflag=0;
+ my $thisuser=$env{'user.name'}.':'.$env{'user.domain'};
+ if ($env{'form.like'}) {
+ if ($currentlikers=~/\,\Q$thisuser\E\,/) {
+ $alreadyflag=1;
+ } else {
+ if ($currentunlikers=~/\,\Q$thisuser\E\,/) {
+ $currentunlikers=~s/\,\Q$thisuser\E\,//g;
} else {
- if (ref($contrib{$prefix.'likers'}) eq 'HASH') {
- $contrib{$prefix.'likers'}{$thisuser} = 1;
- } else {
- $contrib{$prefix.'likers'} = {$thisuser => 1};
- }
- $likes++;
+ $currentlikers.=','.$thisuser.',';
}
+ $likes++;
+ }
+ } else {
+ if ($currentunlikers=~/\,\Q$thisuser\E\,/) {
+ $alreadyflag=1;
} else {
- if ($userunlikes) {
- $alreadyflag=1;
- } elsif ($userlikes) {
- delete($contrib{$prefix.'likers'}{$thisuser});
- $likes--;
+ if ($currentlikers=~/\,\Q$thisuser\E\,/) {
+ $currentlikers=~s/\,\Q$thisuser\E\,//g;
} else {
- if (ref($contrib{$prefix.'unlikers'}) eq 'HASH') {
- $contrib{$prefix.'unlikers'}{$thisuser} = 1;
- } else {
- $contrib{$prefix.'unlikers'} = {$thisuser => 1};
- }
- $likes--;
+ $currentunlikers.=','.$thisuser.',';
}
- }
+ $likes--;
+ }
+ }
+ my $result;
# $alreadyflag would be 1 if they tried to double-like or double-unlike
- unless ($alreadyflag) {
- my %newhash=($prefix.'likes' => $likes,
- $prefix.'likers' => $contrib{$prefix.'likers'},
- $prefix.'unlikers' => $contrib{$prefix.'unlikers'});
+ unless ($alreadyflag) {
+ my %newhash=($prefix.'likes' => $likes,
+ $prefix.'likers' => $currentlikers,
+ $prefix.'unlikers' => $currentunlikers);
# Store data in db-file "disclikes"
- if (&Apache::lonnet::put('disclikes',
- \%newhash,
- $env{'course.'.$env{'request.course.id'}.'.domain'},
- $env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') {
+ if (&Apache::lonnet::put('disclikes',
+ \%newhash,
+ $env{'course.'.$env{'request.course.id'}.'.domain'},
+ $env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') {
# Also store with the person who posted the liked/unliked entry
- if ($env{'form.like'}) {
- &storediscussionlikes(1,$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
- $result=&mt("Registered 'Like'");
- } else {
- &storediscussionlikes(-1,$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
- $result=&mt("Registered 'Unlike'");
- }
+ if ($env{'form.like'}) {
+ &storediscussionlikes(1,$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
+ $result=&mt("Registered 'Like'");
} else {
-# Oops, something went wrong
- $result=&mt("Failed to register vote");
+ &storediscussionlikes(-1,$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'});
+ $result=&mt("Registered 'Unlike'");
}
+ } else {
+# Oops, something went wrong
+ $result=&mt("Failed to register vote");
}
- } else {
- $result=&mt('Voting unavailable for this discussion');
}
&redirect_back($r,$feedurl,$result.'<br />',
'0','0','','',$env{'form.previous'},undef,undef,undef,
@@ -4605,10 +4529,6 @@
=item discussion_visible()
-=item discussion_vote_available()
-
-=item get_realsymb()
-
=item list_discussion()
=item send_feedback_link()
Index: loncom/localize/localize/de.pm
diff -u loncom/localize/localize/de.pm:1.446 loncom/localize/localize/de.pm:1.447
--- loncom/localize/localize/de.pm:1.446 Fri Feb 17 17:58:01 2012
+++ loncom/localize/localize/de.pm Thu Mar 15 12:45:27 2012
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# German Localization Lexicon
#
-# $Id: de.pm,v 1.446 2012/02/17 17:58:01 bisitz Exp $
+# $Id: de.pm,v 1.447 2012/03/15 12:45:27 goltermann Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -5538,8 +5538,8 @@
'Mark all posts read'
=> 'Alle Diskussionsbeiträge als gelesen kennzeichnen',
- 'My question/comment/feedback:'
-=> 'Meine Frage/Anmerkung/Feedback:',
+ 'Question/comment/feedback:'
+=> 'Frage/Anmerkung/Feedback:',
'Other Symbols'
=> 'Weitere Symbole',
@@ -7091,8 +7091,8 @@
'Feedback to resource author'
=> 'Feedback an den Autor der Ressource',
- 'Click to add/remove attachments'
-=> 'Hier klicken, um Anhänge anzufügen/zu entfernen',
+ 'Add/remove attachments'
+=> 'Anhänge hinzufügen/entfernen',
'New attachments'
=> 'Neue Anhänge',
@@ -7100,8 +7100,8 @@
'Retained attachments'
=> 'Zurückbehaltene Anhänge',
- 'Add a new attachment to this post.'
-=> 'Neuen Anhang für diese Nachricht erstellen:',
+ 'Add a new attachment to this post'
+=> 'Neuen Anhang für diese Nachricht erstellen',
'Discussion Post Attachments'
=> 'Anhänge für Diskussionsbeiträge',
@@ -21502,6 +21502,9 @@
'CODEs with [_1] matching letters'
=> 'CODEs mit [_1] übereinstimmenden Zeichen.',
+ 'Check the checkboxes for any you wish to remove.'
+=> 'Markieren Sie die zu löschenden Einträge.',
+
# The way how the helper deals with formats needs to be overhauled before the following phrases should be added:
# 'Specify CODEd Assignments'
#=> 'Optionen zu mit CODE versehenen Ãbungen',
More information about the LON-CAPA-cvs
mailing list