[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