--- loncom/interface/lonfeedback.pm 2006/11/29 03:23:02 1.220 +++ loncom/interface/lonfeedback.pm 2006/11/30 08:51:20 1.225 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.220 2006/11/29 03:23:02 raeburn Exp $ +# $Id: lonfeedback.pm,v 1.225 2006/11/30 08:51:20 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -93,6 +93,11 @@ sub list_discussion { } } + my ($blocked,$blocktext) = &blocking_posts('boards',1); + if ($blocked) { + return $blocktext; + } + my @bgcols = ("#cccccc","#eeeeee"); my $discussiononly=0; if ($mode eq 'board') { $discussiononly=1; } @@ -133,7 +138,7 @@ sub list_discussion { my $previous = 0; my $visit = 0; my $newpostsflag = 0; - my @posters = split/\&/,$dischash{$userpickkey}; + my @posters = split(/\&/,$dischash{$userpickkey}); # Retain identification of "NEW" posts identified in last display, if continuing 'previous' browsing of posts. &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['previous','sortposts','rolefilter','statusfilter','sectionpick','grouppick','totposters']); @@ -162,19 +167,19 @@ sub list_discussion { my ($classgroups,$studentgroups); if ($env{'form.rolefilter'}) { %roleshash = &Apache::lonnet::dump('nohist_userroles',$cdom,$cnum); - foreach (keys %roleshash) { - my ($role,$uname,$udom,$sec) = split/:/,$_; + foreach my $rolekey (keys(%roleshash)) { + my ($role,$uname,$udom,$sec) = split(/:/,$rolekey); if ($role =~ /^cr/) { $role = 'cr'; } - my ($end,$start) = split/:/,$roleshash{$_}; + my ($end,$start) = split(/:/,$roleshash{$rolekey}); my $now = time; my $status = 'Active'; if (($now < $start) || ($end > 0 && $now > $end)) { $status = 'Expired'; } if ($uname && $udom) { - push @{$roleinfo{$uname.':'.$udom}}, $role.':'.$sec.':'.$status; + push(@{$roleinfo{$uname.':'.$udom}}, $role.':'.$sec.':'.$status); } } my ($classlist,$keylist) = @@ -184,7 +189,7 @@ sub list_discussion { while (my ($student,$data) = each %$classlist) { my ($section,$status) = ($data->[$sec_index], $data->[$status_index]); - push @{$roleinfo{$student}}, 'st:'.$section.':'.$status; + push(@{$roleinfo{$student}}, 'st:'.$section.':'.$status); } ($classgroups,$studentgroups) = &Apache::loncoursedata::get_group_memberships($classlist,$keylist, @@ -421,55 +426,10 @@ imscp_v1p1.xsd http://www.imsglobal.org/ |; $discussion.='
'; - $discussion .=''; - + $discussion .= &action_links_bar($colspan,$ressymb,$visible, + $newpostsflag,$group, + $prevread,$markondisp); + my $escsymb=&escape($ressymb); my $numhidden = keys(%notshown); if ($numhidden > 0) { my $colspan = $maxdepth+1; @@ -493,39 +453,39 @@ imscp_v1p1.xsd http://www.imsglobal.org/ # Choose sort mechanism my @showposts = (); if ($sortposts eq 'descdate') { - @showposts = (sort { $b <=> $a } keys %alldiscussion); + @showposts = (sort { $b <=> $a } keys(%alldiscussion)); } elsif ($sortposts eq 'thread') { - @showposts = (sort { $a <=> $b } keys %alldiscussion); + @showposts = (sort { $a <=> $b } keys(%alldiscussion)); } elsif ($sortposts eq 'subject') { - foreach (sort keys %subjectsort) { - push @showposts, @{$subjectsort{$_}}; + foreach my $key (sort(keys(%subjectsort))) { + push(@showposts, @{$subjectsort{$key}}); } } elsif ($sortposts eq 'username') { - foreach my $domain (sort keys %usernamesort) { - foreach (sort keys %{$usernamesort{$domain}}) { - push @showposts, @{$usernamesort{$domain}{$_}}; + foreach my $domain (sort(keys(%usernamesort))) { + foreach my $key (sort(keys(%{$usernamesort{$domain}}))) { + push(@showposts, @{$usernamesort{$domain}{$key}}); } } } elsif ($sortposts eq 'lastfirst') { - foreach my $last (sort keys %namesort) { - foreach (sort keys %{$namesort{$last}}) { - push @showposts, @{$namesort{$last}{$_}}; + foreach my $last (sort(keys(%namesort))) { + foreach my $key (sort(keys(%{$namesort{$last}}))) { + push(@showposts, @{$namesort{$last}{$key}}); } } } else { - @showposts = (sort { $a <=> $b } keys %alldiscussion); + @showposts = (sort { $a <=> $b } keys(%alldiscussion)); } my $currdepth = 0; my $firstidx = $alldiscussion{$showposts[0]}; - foreach (@showposts) { + foreach my $post (@showposts) { unless (($sortposts eq 'thread') || (($sortposts eq '') && ($env{'environment.threadeddiscussion'})) || ($outputtarget eq 'export')) { - $alldiscussion{$_} = $_; + $alldiscussion{$post} = $post; } - unless ( ($notshown{$alldiscussion{$_}} eq '1') || ($shown{$alldiscussion{$_}} == 0) ) { + unless ( ($notshown{$alldiscussion{$post}} eq '1') || ($shown{$alldiscussion{$post}} == 0) ) { if ($outputtarget ne 'tex' && $outputtarget ne 'export') { $discussion.="\n"; } - my $thisdepth=$depth[$alldiscussion{$_}]; + my $thisdepth=$depth[$alldiscussion{$post}]; if ($outputtarget ne 'tex' && $outputtarget ne 'export') { for (1..$thisdepth) { $discussion.=''; @@ -534,52 +494,52 @@ imscp_v1p1.xsd http://www.imsglobal.org/ my $colspan=$maxdepth-$thisdepth+1; if ($outputtarget eq 'tex') { #cleanup block - $discussionitems[$alldiscussion{$_}]=~s/]*)>/
'. - ''; - my $escsymb=&escape($ressymb); - if ($visible>2) { - $discussion.=''; - if ($newpostsflag) { - if (!$markondisp) { - $discussion .=''; - } - } else { - $discussion .= ''; - } - $discussion .= '
'. - ''.&mt('Threaded View').'  '. - ''.&mt('Chronological View').'   - '.&mt('Sorting/Filtering options').'  '; - } else { - $discussion .= ''; - } - $discussion .=''.&mt('Export').'?  '. - &mt('Preferences on what is marked as NEW'). - '
'.&mt('Mark NEW posts no longer new').''; - } else { - $discussion .= '
  
   
/; - $discussionitems[$alldiscussion{$_}]=~s/]*)>]*)>/ -
/; + $discussionitems[$alldiscussion{$post}]=~s/]*)>//; + $discussionitems[$alldiscussion{$post}]=~s/]*)>]*)>/'; } } @@ -652,8 +612,8 @@ END } if (@rolefilter > 0) { $filterchoice .= ''.&mt('roles').'-'; - foreach (@rolefilter) { - $filterchoice .= ' '.$role_types{$_}.','; + foreach my $role (@rolefilter) { + $filterchoice .= ' '.$role_types{$role}.','; } $filterchoice =~ s/,$//; $filterchoice .= '
        '; @@ -680,9 +640,13 @@ END
/; my $threadinsert=''; if ($thisdepth > 0) { $threadinsert='
Reply: '.$thisdepth.''; } - $discussionitems[$alldiscussion{$_}]=~s/<\/td>]*)>/$threadinsert<\/td>
/; - $discussionitems[$alldiscussion{$_}]=~s/]+)>(Edit|Hide|Delete|Reply|Submissions)<\/a>//g; - $discussionitems[$alldiscussion{$_}]=~s/(|<\/b>|<\/a>|]+)>)//g; + $discussionitems[$alldiscussion{$post}]=~s/<\/td>]*)>/$threadinsert<\/td>/; + $discussionitems[$alldiscussion{$post}]=~s/]+)>(Edit|Hide|Delete|Reply|Submissions)<\/a>//g; + $discussionitems[$alldiscussion{$post}]=~s/(|<\/b>|<\/a>|]+)>)//g; - $discussionitems[$alldiscussion{$_}]='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'.$discussionitems[$alldiscussion{$_}]; - $discussion.=$discussionitems[$alldiscussion{$_}]; + $discussionitems[$alldiscussion{$post}]='\vskip 0 mm\noindent\makebox[2 cm][b]{\hrulefill}'.$discussionitems[$alldiscussion{$post}]; + $discussion.=$discussionitems[$alldiscussion{$post}]; } elsif ($outputtarget eq 'export') { - my $postfilename = $alldiscussion{$_}.'-'.$imsitems{$alldiscussion{$_}}{'timestamp'}.'.html'; + my $postfilename = $alldiscussion{$post}.'-'.$imsitems{$alldiscussion{$post}}{'timestamp'}.'.html'; if ($manifestok) { - if (($depth[$alldiscussion{$_}] <= $currdepth) && ($alldiscussion{$_} != $firstidx)) { + if (($depth[$alldiscussion{$post}] <= $currdepth) && ($alldiscussion{$post} != $firstidx)) { print $manifestfile ' '."\n"; } - $currdepth = $depth[$alldiscussion{$_}]; + $currdepth = $depth[$alldiscussion{$post}]; print $manifestfile "\n". - ''. - ''.$imsitems{$alldiscussion{$_}}{'title'}.''; + ''. + ''.$imsitems{$alldiscussion{$post}}{'title'}.''; $imsresources .= "\n". - ''."\n". + ''."\n". ''."\n". - $imsfiles{$alldiscussion{$_}}{$imsitems{$alldiscussion{$_}}{'currversion'}}."\n". + $imsfiles{$alldiscussion{$post}}{$imsitems{$alldiscussion{$post}}{'currversion'}}."\n". ''; } my $postingfile; my $postingfilename = $tempexport.'/'.$postfilename; if ($postingfile = Apache::File->new('>'.$postingfilename)) { print $postingfile 'Discussion Post'. - $imsitems{$alldiscussion{$_}}{'title'}.' '. - $imsitems{$alldiscussion{$_}}{'sender'}. - $imsitems{$alldiscussion{$_}}{'timestamp'}.'

'. - $imsitems{$alldiscussion{$_}}{'message'}.'
'. - $imsitems{$alldiscussion{$_}}{'attach'}.''."\n"; + $imsitems{$alldiscussion{$post}}{'title'}.' '. + $imsitems{$alldiscussion{$post}}{'sender'}. + $imsitems{$alldiscussion{$post}}{'timestamp'}.'

'. + $imsitems{$alldiscussion{$post}}{'message'}.'
'. + $imsitems{$alldiscussion{$post}}{'attach'}.''."\n"; close($postingfile); } else { - $discussion .= $lt{'aerr'}.' '.$alldiscussion{$_}.'
'; + $discussion .= $lt{'aerr'}.' '.$alldiscussion{$post}.'
'; } - $copyresult.=&replicate_attachments($imsitems{$alldiscussion{$_}}{'allattachments'},$tempexport); + $copyresult.=&replicate_attachments($imsitems{$alldiscussion{$post}}{'allattachments'},$tempexport); } else { - $discussion.='
'. $discussionitems[$alldiscussion{$_}]. + $discussion.=''. $discussionitems[$alldiscussion{$post}]. '
-

END + $discussion .= &action_links_bar($colspan,$ressymb,$visible, + $newpostsflag,$group, + $prevread,$markondisp); + $discussion .= " + +

\n"; } if ($outputtarget eq 'export') { if ($manifestok) { @@ -779,6 +743,78 @@ END return $discussion; } +sub action_links_bar { + my ($colspan,$ressymb,$visible,$newpostsflag,$group,$prevread,$markondisp) = @_; + my $discussion = ''. + ''; + my $escsymb=&escape($ressymb); + if ($visible>2) { + $discussion .= ''; + if ($newpostsflag) { + if (!$markondisp) { + $discussion .=''; + } + } else { + $discussion .= ''; + } + $discussion .= '
'. + ''.&mt('Threaded View').'  '. + ''.&mt('Chronological View').'   + '.&mt('Sorting/Filtering options').'  '; + } else { + $discussion .= ''; + } + $discussion .=''.&mt('Export').'?  '. + &mt('Preferences on what is marked as NEW'). + '
'.&mt('Mark NEW posts no longer new').''; + } else { + $discussion .= '
  
'; + return $discussion; +} + +sub blocking_posts { + my ($type,$showstatus) = @_; + my %setters; + my ($blocked,$output); + my ($startblock,$endblock) = + &Apache::loncommon::blockcheck(\%setters,$type); + if ($startblock && $endblock) { + $blocked = 1; + if ($showstatus) { + my $showstart = &Apache::lonlocal::locallocaltime($startblock); + my $showend = &Apache::lonlocal::locallocaltime($endblock); + $output = &mt('Discussion postings will not be viewable for resources in this course between [_1] and [_2] because communication is being blocked.',$showstart, $showend).'
'. + &Apache::loncommon::build_block_table($startblock,$endblock, + \%setters); + } + } + return ($blocked,$output); +} + sub postingform_display { my ($mode,$ressymb,$now,$subject,$comment,$outputtarget,$attachnum, $currnewattach,$currdelold,$group) = @_; @@ -815,11 +851,16 @@ ENDDISCUSS if ($group ne '') { $postingform .=''; } + my ($blockblog) = &blocking_posts('blogs'); + if (!$blockblog) { + $postingform .= &add_blog_checkbox(); + } $postingform .= "\n"; if ($outputtarget ne 'tex') { $postingform .= &generate_attachments_button('',$attachnum,$ressymb, $now,$currnewattach, - $currdelold,'',$mode); + $currdelold,'',$mode, + $blockblog); if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) { $newattachmsg = '
'.$lt{'newa'}.'
'; if (@{$currnewattach} > 1) { @@ -901,7 +942,7 @@ sub build_posting_display { $$visible++; if ($contrib{$idx.':history'}) { if ($contrib{$idx.':history'} =~ /:/) { - my @oldversions = split/:/,$contrib{$idx.':history'}; + my @oldversions = split(/:/,$contrib{$idx.':history'}); $numoldver = @oldversions; } else { $numoldver = 1; @@ -940,13 +981,13 @@ sub build_posting_display { if ($subject eq '') { if (defined($$subjectsort{'__No subject'})) { - push @{$$subjectsort{'__No subject'}}, $idx; + push(@{$$subjectsort{'__No subject'}}, $idx); } else { @{$$subjectsort{'__No subject'}} = ("$idx"); } } else { if (defined($$subjectsort{$subject})) { - push @{$$subjectsort{$subject}}, $idx; + push(@{$$subjectsort{$subject}}, $idx); } else { @{$$subjectsort{$subject}} = ("$idx"); } @@ -968,7 +1009,7 @@ sub build_posting_display { %{$$usernamesort{$contrib{$idx.':senderdomain'}}} = (); } if (defined($$usernamesort{$contrib{$idx.':senderdomain'}}{$contrib{$idx.':sendername'}})) { - push @{$$usernamesort{$contrib{$idx.':senderdomain'}}{$contrib{$idx.':sendername'}}}, $idx; + push(@{$$usernamesort{$contrib{$idx.':senderdomain'}}{$contrib{$idx.':sendername'}}}, $idx); } else { @{$$usernamesort{$contrib{$idx.':senderdomain'}}{$contrib{$idx.':sendername'}}} = ("$idx"); } @@ -988,7 +1029,7 @@ sub build_posting_display { %{$$namesort{$lastname}} = (); } if (defined($$namesort{$lastname}{$firstname})) { - push @{$$namesort{$lastname}{$firstname}}, $idx; + push(@{$$namesort{$lastname}{$firstname}}, $idx); } else { @{$$namesort{$lastname}{$firstname}} = ("$idx"); } @@ -1044,7 +1085,7 @@ sub build_posting_display { %{$$usernamesort{'__anon'}} = (); } if (defined($$usernamesort{'__anon'}{'__anon'})) { - push @{$$usernamesort{'__anon'}{'__anon'}}, $idx; + push(@{$$usernamesort{'__anon'}{'__anon'}}, $idx); } else { @{$$usernamesort{'__anon'}{'__anon'}} = ("$idx"); } @@ -1053,7 +1094,7 @@ sub build_posting_display { %{$$namesort{'__anon'}} = (); } if (defined($$namesort{'__anon'}{'__anon'})) { - push @{$$namesort{'__anon'}{'__anon'}}, $idx; + push(@{$$namesort{'__anon'}{'__anon'}}, $idx); } else { @{$$namesort{'__anon'}{'__anon'}} = ("$idx"); } @@ -1213,7 +1254,7 @@ sub build_posting_display { } $$discussionitems[$idx].='
'.&mt('Earlier version(s) were posted on: '); if ($contrib{$idx.':history'} =~ m/:/) { - @postversions = split/:/,$contrib{$idx.':history'}; + @postversions = split(/:/,$contrib{$idx.':history'}); } else { @postversions = ("$contrib{$idx.':history'}"); } @@ -1236,9 +1277,9 @@ sub filter_regexp { my $skiptest = 1; if (@{$rolefilter} > 0) { my @okrolefilter = (); - foreach (@{$rolefilter}) { - unless ($_ eq '') { - push @okrolefilter, $_; + foreach my $role (@{$rolefilter}) { + unless ($role eq '') { + push(@okrolefilter, $role); } } if (@okrolefilter > 0) { @@ -1256,9 +1297,9 @@ sub filter_regexp { } if (@{$sectionpick} > 0) { my @oksectionpick = (); - foreach (@{$sectionpick}) { - unless ($_ eq '') { - push @oksectionpick, $_; + foreach my $sec (@{$sectionpick}) { + unless ($sec eq '') { + push(@oksectionpick, $sec); } } if ((@oksectionpick > 0) && (!grep/^all$/,@oksectionpick)) { @@ -1320,7 +1361,7 @@ sub get_post_contents { } &get_post_versions($messages,$$contrib{$idx.':message'},1); &get_post_versions($subjects,$$contrib{$idx.':subject'},1); - push @postversions,$$contrib{$idx.':timestamp'}; + push(@postversions,$$contrib{$idx.':timestamp'}); $end = @postversions; } else { &get_post_versions($messages,$$contrib{$idx.':message'},1,$numver); @@ -1348,8 +1389,8 @@ sub get_post_contents { $$imsfiles{$idx}{$i} = ''; if ($attachmsg) { $$attachtxt{$i} = '
'.&mt('Attachments').':
'; - foreach (sort keys %currattach) { - if ($$allattachments{$_}{'filename'} =~ m-^/uploaded/([^/]+/[^/]+)(/feedback)?(/?\d*)/([^/]+)$-) { + foreach my $key (sort(keys(%currattach))) { + if ($$allattachments{$key}{'filename'} =~ m-^/uploaded/([^/]+/[^/]+)(/feedback)?(/?\d*)/([^/]+)$-) { my $fname = $1.$3.'/'.$4; $$imsfiles{$idx}{$i} .= ''."\n"; $$attachtxt{$i}.= ''.$4.'
'; @@ -1382,11 +1423,11 @@ END sub replicate_attachments { my ($attachrefs,$tempexport) = @_; my $response; - foreach my $id (keys %{$attachrefs}) { + foreach my $id (keys(%{$attachrefs})) { if ($$attachrefs{$id}{'filename'} =~ m-^/uploaded/([^/]+)/([^/]+)(/feedback)?(/?\d*)/([^/]+)$-) { my $path = $tempexport; my $tail = $1.'/'.$2.$4; - my @extras = split/\//,$tail; + my @extras = split(/\//,$tail); my $destination = $tempexport.'/'.$1.'/'.$2.$4.'/'.$5; if (!-e $destination) { my $i= 0; @@ -1497,7 +1538,7 @@ END unless (($contrib{'hidden'}=~/\.$idx\./) || ($contrib{'deleted'}=~/\.$idx\./)) { if ($contrib{$idx.':history'}) { if ($contrib{$idx.':history'} =~ /:/) { - my @oldversions = split/:/,$contrib{$idx.':history'}; + my @oldversions = split(/:/,$contrib{$idx.':history'}); $numoldver = @oldversions; } else { $numoldver = 1; @@ -1506,7 +1547,7 @@ END if ($env{'form.replydisc'}) { if ($contrib{$idx.':history'}) { if ($contrib{$idx.':history'} =~ /:/) { - my @oldversions = split/:/,$contrib{$idx.':history'}; + my @oldversions = split(/:/,$contrib{$idx.':history'}); $numoldver = @oldversions; } else { $numoldver = 1; @@ -1520,7 +1561,7 @@ END if ($idx > 0) { my %subversions = (); &get_post_versions(\%subversions,$contrib{$idx.':subject'},1,$numoldver); - $subject = &mt('Re: ')..$subversions{$numoldver}; + $subject = &mt('Re: ').$subversions{$numoldver}; } $subject = &HTML::Entities::encode($subject,'<>&"'); } else { @@ -1650,19 +1691,19 @@ $lt{'title'}: '."\n"); + foreach my $attach (@currnewattach) { + $r->print(''."\n"); } - foreach (@currdelold) { - $r->print(''."\n"); + foreach my $oldatt (@currdelold) { + $r->print(''."\n"); } } if ($env{'form.editdisc'}) { if ($attachmenturls) { &extract_attachments($attachmenturls,$idx,$numoldver,\$attachmsg,\%attachments,\%currattach,\@currdelold); - $attachnum = scalar(keys %currattach); - foreach (keys %currattach) { - $r->print(''."\n"); + $attachnum = scalar(keys(%currattach)); + foreach my $key (keys(%currattach)) { + $r->print(''."\n"); } } } @@ -1695,7 +1736,8 @@ END if (@currnewattach > 0) { $attachnum += @currnewattach; } - $r->print(&generate_attachments_button($postidx,$attachnum,$ressymb,$now,\@currnewattach,\@currdelold,$numoldver)); + my ($blockblog) = &blocking_posts('blogs'); + $r->print(&generate_attachments_button($postidx,$attachnum,$ressymb,$now,\@currnewattach,\@currdelold,$numoldver,'',$blockblog)); if ($attachnum > 0) { if (@currnewattach > 0) { $newattachmsg .= '
'.&mt('New attachments').'
'; @@ -2200,7 +2242,7 @@ sub print_showposters { $postcounts{$poster} ++; if (defined($namesort{$lastname}{$firstname})) { if (!grep/^$poster$/,@{$namesort{$lastname}{$firstname}}) { - push @{$namesort{$lastname}{$firstname}}, $poster; + push(@{$namesort{$lastname}{$firstname}}, $poster); } } else { @{$namesort{$lastname}{$firstname}} = ("$poster"); @@ -2225,19 +2267,19 @@ $start_page END my $count = 0; - foreach my $last (sort keys %namesort) { - foreach my $first (sort keys %{$namesort{$last}}) { - foreach (sort @{$namesort{$last}{$first}}) { - my ($uname,$udom) = split/:/,$_; + foreach my $last (sort(keys(%namesort))) { + foreach my $first (sort(keys(%{$namesort{$last}}))) { + foreach my $user (sort(@{$namesort{$last}{$first}})) { + my ($uname,$udom) = split(/:/,$user); if (!$uname || !$udom) { next; } else { $count ++; $r->print(&Apache::loncommon::start_data_table_row(). ''.$count.' -
'. - ''.&mt('Change Screenname').''; + my ($blocked) = &blocking_posts('boards'); + if (!$blocked) { + $discussoptions='
'. + ''.&mt('Change Screenname').''; + } + } + my ($blockblog) = &blocking_posts('blogs'); + if (!$blockblog) { + $discussoptions.= &add_blog_checkbox(); } - $discussoptions.='
'; } if ($msgoptions) { $msgoptions='

'.&mt('Sending Messages').'

'.$msgoptions; } if ($discussoptions) { @@ -2615,9 +2662,9 @@ sub secapply { $rec=~s/\@/\:/g; my ($adr,$sections)=($rec=~/^([^\(]+)\(([^\)]+)\)/); if ($sections) { - foreach (split(/\;/,$sections)) { - if (($_ eq $env{'request.course.sec'}) || - ($defaultflag && ($_ eq '*'))) { + foreach my $sec (split(/\;/,$sections)) { + if (($sec eq $env{'request.course.sec'}) || + ($defaultflag && ($sec eq '*'))) { return $adr; } } @@ -2669,28 +2716,28 @@ sub decide_receiver { } if ($env{'form.discuss'} eq 'question' ||$question) { $typestyle.=&mt('Submitting as Question').'
'; - foreach (split(/\,/, + foreach my $item (split(/\,/, $env{'course.'.$env{'request.course.id'}.'.question.email'}) ) { - my $rec=&secapply($_,$defaultflag); + my $rec=&secapply($item,$defaultflag); if ($rec) { $to{$rec}=1; } } } if ($env{'form.discuss'} eq 'course' ||$course) { $typestyle.=&mt('Submitting as Comment').'
'; - foreach (split(/\,/, + foreach my $item (split(/\,/, $env{'course.'.$env{'request.course.id'}.'.comment.email'}) ) { - my $rec=&secapply($_,$defaultflag); + my $rec=&secapply($item,$defaultflag); if ($rec) { $to{$rec}=1; } } } if ($env{'form.discuss'} eq 'policy' ||$policy) { $typestyle.=&mt('Submitting as Policy Feedback').'
'; - foreach (split(/\,/, + foreach my $item (split(/\,/, $env{'course.'.$env{'request.course.id'}.'.policy.email'}) ) { - my $rec=&secapply($_,$defaultflag); + my $rec=&secapply($item,$defaultflag); if ($rec) { $to{$rec}=1; } } } @@ -2713,13 +2760,13 @@ sub send_msg { my $sendsomething=0; if ($title=~/^Error/) { $title=&mt('Feedback').': '.$title; } unless ($title=~/\w/) { $title=&mt('Feedback'); } - foreach (keys %to) { - if ($_) { + foreach my $key (keys(%to)) { + if ($key) { my $declutter=&Apache::lonnet::declutter($feedurl); - unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$_), + unless (&Apache::lonmsg::user_normal_msg(split(/\:/,$key), $title.' ['.$declutter.']',$email,$citations,$feedurl, $attachmenturl)=~/ok/) { - $status.='
'.&mt('Error sending message to').' '.$_.'
'; + $status.='
'.&mt('Error sending message to').' '.$key.'
'; } else { $sendsomething++; } @@ -2727,7 +2774,7 @@ sub send_msg { } my %record=&Apache::lonnet::restore('_feedback'); - my ($temp)=keys %record; + my ($temp)=keys(%record); unless ($temp=~/^error\:/) { my %newrecord=(); $newrecord{'resource'}=$feedurl; @@ -2788,7 +2835,7 @@ sub adddiscuss { } if (defined($oldcontrib{$oldidx.':history'})) { if ($oldcontrib{$oldidx.':history'} =~ /:/) { - my @oldversions = split/:/,$oldcontrib{$oldidx.':history'}; + my @oldversions = split(/:/,$oldcontrib{$oldidx.':history'}); $numoldver = @oldversions; } else { $numoldver = 1; @@ -2831,7 +2878,7 @@ sub adddiscuss { $env{'course.'.$env{'request.course.id'}.'.num'}); } my %record=&Apache::lonnet::restore('_discussion'); - my ($temp)=keys %record; + my ($temp)=keys(%record); unless ($temp=~/^error\:/) { my %newrecord=(); $newrecord{'resource'}=$symb; @@ -2959,7 +3006,7 @@ $start_page END if ($idx) { if ($attachmenturls) { - my @currold = keys %currattach; + my @currold = keys(%currattach); if (@currold > 0) { $r->print($lt{'thfo'}.'
'.$lt{'chth'}.'
'."\n"); foreach my $id (@currold) { @@ -2973,9 +3020,9 @@ END } if ((ref($currnewattach) eq 'ARRAY') && (@{$currnewattach} > 0)) { $r->print($lt{'thef'}.'
'.$lt{'chth'}.'
'."\n"); - foreach (@{$currnewattach}) { - $_ =~ m#/([^/]+)$#; - $r->print('
'."\n"); + foreach my $attach (@{$currnewattach}) { + $attach =~ m#/([^/]+)$#; + $r->print('
'."\n"); } $r->print("
"); } @@ -3020,14 +3067,14 @@ sub process_attachments { my @currnew = (); foreach my $newone (@{$currnewattach}) { my $delflag = 0; - foreach (@currdelnew) { - if ($newone eq $_) { + foreach my $item (@currdelnew) { + if ($newone eq $item) { $delflag = 1; last; } } unless ($delflag) { - push @currnew, $newone; + push(@currnew, $newone); } } @{$currnewattach} = @currnew; @@ -3036,7 +3083,8 @@ sub process_attachments { } sub generate_attachments_button { - my ($idx,$attachnum,$ressymb,$now,$currnewattach,$deloldattach,$numoldver,$mode) = @_; + 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( @@ -3048,6 +3096,9 @@ sub generate_attachments_button { $lt{'clic'}:  ENDATTACH if (defined($deloldattach)) { if (@{$deloldattach} > 0) { - foreach (@{$deloldattach}) { - $response .= ''."\n"; + foreach my $delatt (@{$deloldattach}) { + $response .= ''."\n"; } } } if (defined($currnewattach)) { if (@{$currnewattach} > 0) { - foreach (@{$currnewattach}) { - $response .= ''."\n"; + foreach my $attach (@{$currnewattach}) { + $response .= ''."\n"; } } } @@ -3084,7 +3135,7 @@ sub extract_attachments { my ($attachmenturls,$idx,$numoldver,$message,$attachments,$currattach,$currdelold) = @_; %{$attachments}=(); &get_post_attachments($attachments,$attachmenturls); - foreach my $id (sort keys %{$attachments}) { + foreach my $id (sort(keys(%{$attachments}))) { if (exists($$attachments{$id}{$numoldver})) { if (defined($currdelold)) { if (@{$currdelold} > 0) { @@ -3099,7 +3150,7 @@ sub extract_attachments { } } } - my @attached = (sort { $a <=> $b } keys %{$currattach}); + my @attached = (sort { $a <=> $b } keys(%{$currattach})); if (@attached == 1) { my $id = $attached[0]; my $attachurl; @@ -3115,8 +3166,8 @@ sub extract_attachments { $attachurl); } elsif (@attached > 1) { $$message.='
    '; - foreach (@attached) { - my $id = $_; + foreach my $attach (@attached) { + my $id = $attach; my $attachurl = &HTML::Entities::decode($$attachments{$id}{'filename'}); my ($fname) =($attachurl=~m|/([^/]+)$|); @@ -3143,7 +3194,7 @@ sub construct_attachmenturl { $oldattachmenturl = $contrib{$idx.':attachmenturl'}; if ($contrib{$idx.':history'}) { if ($contrib{$idx.':history'} =~ /:/) { - my @oldversions = split/:/,$contrib{$idx.':history'}; + my @oldversions = split(/:/,$contrib{$idx.':history'}); $currver = 1 + scalar(@oldversions); } else { $currver = 2; @@ -3156,13 +3207,13 @@ sub construct_attachmenturl { my %attachments = (); my $prevver = $currver-1; &get_post_attachments(\%attachments,$oldattachmenturl); - my $numattach = scalar(keys %attachments); + my $numattach = scalar(keys(%attachments)); $startnum += $numattach; - foreach my $num (sort {$a <=> $b} keys %attachments) { + foreach my $num (sort {$a <=> $b} keys(%attachments)) { $newattachmenturl .= ''.$attachments{$num}{'filename'}.''; - foreach $_ (sort {$a <=> $b} keys %{$attachments{$num}}) { - unless ($_ eq 'filename') { - $newattachmenturl .= ''.$attachments{$num}{$_}.''; + foreach my $item (sort {$a <=> $b} keys(%{$attachments{$num}})) { + unless ($item eq 'filename') { + $newattachmenturl .= ''.$attachments{$num}{$item}.''; } } if (grep/^$num$/,@{$keepold}) { @@ -3187,6 +3238,26 @@ sub construct_attachmenturl { return $newattachmenturl; } +sub add_blog_checkbox { + my ($checkstatus); + if ($env{'form.blog'}) { + $checkstatus = 'checked="checked"'; + } + my $output = ' +
    +
    '."\n"; + return $output; +} + sub has_discussion { my $resourcesref = shift; my $navmap = Apache::lonnavmaps::navmap->new(); @@ -3194,7 +3265,7 @@ sub has_discussion { foreach my $resource (@allres) { if ($resource->hasDiscussion()) { my $ressymb = $resource->wrap_symb(); - push @{$resourcesref}, $ressymb; + push(@{$resourcesref}, $ressymb); } } return; @@ -3256,7 +3327,7 @@ sub handler { my $readkey = $symb.'_read'; my $chgcount = 0; my %readinghash = &Apache::lonnet::get('nohist_'.$env{'request.course.id'}.'_discuss',[$readkey],$env{'user.domain'},$env{'user.name'}); - foreach my $key (keys %env) { + foreach my $key (keys(%env)) { if ($key =~ m/^form\.postunread_(\d+)/) { if ($readinghash{$readkey} =~ /\.$1\./) { $readinghash{$readkey} =~ s/\.$1\.//; @@ -3355,7 +3426,7 @@ sub handler { my @resources = (); if (defined($env{'form.navmaps'})) { if ($env{'form.navmaps'} =~ /:/) { - @resources = split/:/,$env{'form.navmaps'}; + @resources = split(/:/,$env{'form.navmaps'}); } else { @resources = ("$env{'form.navmaps'}"); } @@ -3370,8 +3441,8 @@ sub handler { 'robb' => 'resources/bulletin boards.', 'twnp' => 'There are currently no resources or bulletin boards with unread discussion postings.' ); - foreach (@resources) { - my $ressymb=$_; + foreach my $res (@resources) { + my $ressymb=$res; &Apache::lonenc::check_decrypt(\$ressymb); my $lastkey = $ressymb.'_lastread'; $discinfo{$lastkey} = $env{'form.navtime'}; @@ -3541,7 +3612,7 @@ ENDREDIR unless (length($env{'form.addnewattach'})>131072) { my $subdir = 'feedback/'.$env{'form.timestamp'}; my $newattachment=&Apache::lonnet::userfileupload('addnewattach',undef,$subdir); - push @currnewattach, $newattachment; + push(@currnewattach, $newattachment); } } my $attachmenturls;