[LON-CAPA-cvs] cvs: loncom /interface lonannounce.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 29 Jun 2006 15:23:59 -0000
This is a MIME encoded message
--albertel1151594639
Content-Type: text/plain
albertel Thu Jun 29 11:23:59 2006 EDT
Modified files:
/loncom/interface lonannounce.pm
Log:
- BUG#4850, restore titles to calaendar events associated with resources, but retian the speedups of doing delayed gettile
--albertel1151594639
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20060629112359.txt"
Index: loncom/interface/lonannounce.pm
diff -u loncom/interface/lonannounce.pm:1.55 loncom/interface/lonannounce.pm:1.56
--- loncom/interface/lonannounce.pm:1.55 Mon Jun 26 18:31:56 2006
+++ loncom/interface/lonannounce.pm Thu Jun 29 11:23:59 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Announce
#
-# $Id: lonannounce.pm,v 1.55 2006/06/26 22:31:56 albertel Exp $
+# $Id: lonannounce.pm,v 1.56 2006/06/29 15:23:59 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -89,7 +89,7 @@
if ($resourcedata{$thiskey.'.type'}=~/^date/) {
my ($course,$middle,$part,$name)=
($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
- my $section=&mt('All Students');
+ my %data = ( 'section' => &mt('All Students'));
if ($middle=~/^\[(.*)\]\./) {
my $sec=$1;
# if we have a section don't show ones that aren't ours
@@ -98,11 +98,11 @@
# if a student without a section don't show any section ones
if (!$env{'request.role.adv'} &&
!$env{'request.course.sec'}) { next; }
- $section=&mt('Group/Section').': '.$1;
+ $data{'section'}=&mt('Group/Section').': '.$1;
$middle=~s/^\[(.*)\]\.//;
}
$middle=~s/\.$//;
- my $realm=&mt('All Resources');
+ $data{'realm'}=&mt('All Resources');
if ($middle eq '___(all)') {
if (!$can_see_hidden && !$navmap) {
next;
@@ -116,9 +116,8 @@
my $res = $navmap->getResourceByUrl($map_url);
if ($res && $res->randomout()) { next; }
}
- # need to do this looks up in showday or /*cell for speed resaons
- #$realm=&mt('Folder/Map').': '.&Apache::lonnet::gettitle($map_url);
- $realm=&mt('Folder/Map').': '.$map_url;
+ $data{'realm'}=&mt('Folder/Map');
+ $data{'url'} = $map_url;
} elsif ($middle) {
if (!$can_see_hidden && !$navmap) {
next;
@@ -127,20 +126,26 @@
my $res = $navmap->getBySymb($middle);
if ($res && $res->randomout()) { next; }
}
- #$realm=&mt('Resource').': '.&Apache::lonnet::gettitle($middle);
- $realm=&mt('Resource').': '.$middle;
+ $data{'realm'} = &mt('Resource');
+ $data{'symb'} = $middle;
}
- my $datetype='';
+ $data{'datetype'} = $name;
if ($name eq 'duedate') {
- $datetype=&mt('Due');
+ $data{'datetype'} = &mt('Due');
# see if accidentally answerdate is before duedate
my $answerkey=$thiskey;
$answerkey=~s/duedate$/answerdate/;
if ($resourcedata{$thiskey}>$resourcedata{$answerkey}) {
- $datetype=&mt('Due and Answer Available');
+ $data{'datetype'} = &mt('Due and Answer Available');
}
}
- if ($name eq 'opendate') { $datetype=&mt('Opening'); }
+ if ($name eq 'opendate'
+ || $name eq 'contentopen' ) {
+ $data{'datetype'}=&mt('Opening');
+ }
+ if ($name eq 'contentclose') {
+ $data{'datetype'}=&mt('Closing');
+ }
if ($name eq 'answerdate') {
# see if accidentally answerdate is before duedate
my $duekey=$thiskey;
@@ -149,11 +154,10 @@
# forget it
next;
}
- $datetype=&mt('Answer Available');
+ $data{'datetype'}=&mt('Answer Available');
}
$returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'.
- $resourcedata{$thiskey}}=
- 'INTERNAL:'.$datetype.': '.$realm.' ('.$section.')';
+ $resourcedata{$thiskey}}=\%data;
}
}
return %returnhash;
@@ -164,23 +168,25 @@
}
sub normalcell {
- my ($day,$month,$year,$text)=@_;
+ my ($day,$month,$year,$items_ref)=@_;
my $output;
- my @items=&order($text);
+ my @items=&order($items_ref);
foreach my $item (@items) {
if ($item) {
- my $internalflag=0;
- my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
- if ($msg=~/INTERNAL\:/) {
- $msg=~s/INTERNAL\://gs;
- $internalflag=1;
- }
+ my ($courseid,$start,$end,$msg)=@$item;
+ my $internalflag= (ref($msg)) ? 1 : 0;
+ $msg = &display_msg($msg);
my $fullmsg=&mt('Calendar Announcement for ').$env{'course.'.$courseid.'.description'}.
'\n'.&Apache::lonlocal::locallocaltime($start);
if ($start!=$end) {
$fullmsg.=' - '.&Apache::lonlocal::locallocaltime($end);
}
$fullmsg.=':\n'.$msg;
+ $fullmsg=~s/[\n\r]/\\n/gs;
+ $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
+ $fullmsg=~s/&/\\&/g;
+ my $short_msg = substr($msg,0,20).((length($msg) > 20)?'...':'');
+ if (defined($output)) { $output.='<br />'; }
if ($courseid eq $env{'request.course.id'}) {
if ((&Apache::lonnet::allowed('srm',$env{'request.course.id'}))
&& (!$showedcheck{$start.'_'.$end})
@@ -191,11 +197,6 @@
$showedcheck{$start.'_'.$end}=1;
}
}
- $fullmsg=~s/[\n\r]/\\n/gs;
- $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
- $fullmsg=~s/&/\\&/g;
- my $short_msg = substr($msg,0,20).((length($msg) > 20)?'...':'');
- if (defined($output)) { $output.='<br />'; }
$output.='<a href="javascript:alert('."'$fullmsg'".')">'.
$short_msg.'</a>';
}
@@ -208,18 +209,18 @@
}
sub plaincell {
- my ($text)=@_;
+ my ($items_ref)=@_;
my $output;
- my @items=&order($text);
+ my @items=&order($items_ref);
foreach my $item (@items) {
- if ($item) {
- my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
+ if (ref($item)) {
+ my ($courseid,$start,$end,$msg)=@$item;
my $fullmsg=&mt('Calendar Announcement for ').$env{'course.'.$courseid.'.description'}.
'\n'.&Apache::lonlocal::locallocaltime($start);
if ($start!=$end) {
$fullmsg.=' - '.&Apache::lonlocal::locallocaltime($end);
}
- $msg=~s/INTERNAL\://gs;
+ $msg = &display_msg($msg);
$fullmsg.=':\n'.$msg;
$fullmsg=~s/[\n\r]/\\n/gs;
$fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
@@ -234,20 +235,19 @@
}
sub listcell {
- my ($text)=@_;
+ my ($items_ref)=@_;
my $output='';
- my @items=&order($text);
+ my @items=&order($items_ref);
foreach my $item (@items) {
- if ($item) {
- my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
- $msg=~s/INTERNAL\://gs;
- my $fullmsg=&Apache::lonlocal::locallocaltime($start);
+ if (ref($item)) {
+ my ($courseid,$start,$end,$msg)=@$item;
+ &Apache::lonnet::logthis(" msg2 is ".ref($msg)." $msg ");
+ my $fullmsg=&Apache::lonlocal::locallocaltime($start);
if ($start!=$end) {
$fullmsg.=&mt(' to ').
&Apache::lonlocal::locallocaltime($end);
}
- $fullmsg.=':<br /><b>'.
- $msg.'</b>';
+ $fullmsg.=':<br /><b>'.&display_msg($msg).'</b>';
$output.='<li>'.$fullmsg.'</li>';
}
}
@@ -255,16 +255,15 @@
}
sub order {
- my ($text)=@_;
- my @items = split(/___&&&___/,$text);
- sort {
- my (undef,$astart,$aend)=split(/\@/,$a);
- my (undef,$bstart,$bend)=split(/\@/,$b);
+ my ($items)=@_;
+ return sort {
+ my ($astart,$aend)=$a->[1,2];
+ my ($bstart,$bend)=$b->[1,2];
if ($astart != $bstart) {
return $astart <=> $bstart;
}
return $aend <=> $bend;
- } @items;
+ } @$items;
}
sub nextday {
@@ -273,11 +272,28 @@
return (&Apache::loncommon::maketime(%th),$th{'month'});
}
+sub display_msg {
+ my ($msg) = @_;
+
+ # if it's not a ref, it's an instructor provided message
+ return $msg if (!ref($msg));
+
+ my $output = $msg->{'datetype'}. ': '.$msg->{'realm'};
+ if (exists($msg->{'url'})) {
+ $output .= ': '.&Apache::lonnet::gettitle($msg->{'url'});
+ }
+ if (exists($msg->{'symb'})) {
+ $output .= ': '.&Apache::lonnet::gettitle($msg->{'symb'});
+ }
+ $output .= ' ('.$msg->{'section'}.') ';
+ return $output;
+}
+
sub showday {
my ($tk,$mode,%allcal)=@_;
my %th=&Apache::loncommon::timehash($tk);
my ($nextday,$nextmonth)=&nextday(%th);
- my $outp='';
+ my @outp;
if ($mode) {
my $oneday=24*3600;
$tk-=$oneday;
@@ -286,18 +302,17 @@
foreach my $item (keys(%allcal)) {
my ($course,$startdate,$enddate)=($item=~/^(\w+)\@(\d+)\_(\d+)$/);
if (($startdate<$nextday) && ($enddate>=$tk)) {
- $outp.='___&&&___'.$course.'@'.$startdate.'@'.$enddate.'@'.
- $allcal{$item};
+ push(@outp,[$course,$startdate,$enddate,$allcal{$item}]);
}
}
unless ($mode) {
return ($nextday,$nextmonth,&normalcell(
- $th{'day'},$th{'month'},$th{'year'},$outp));
- } elsif ($outp) {
+ $th{'day'},$th{'month'},$th{'year'},\@outp));
+ } elsif (@outp) {
if ($mode==1) {
- return '<br />'.&plaincell($outp);
+ return '<br />'.&plaincell(\@outp);
} else {
- return '<ul>'.&listcell($outp).'</ul>';
+ return '<ul>'.&listcell(\@outp).'</ul>';
}
} else {
return '';
@@ -354,8 +369,7 @@
my $uid=$event;
$uid=~s/[\W\_]/-/gs;
$uid.='@loncapa';
- my $summary=$allcal{$event};
- $summary=~s/^INTERNAL\://;
+ my $summary=&display_msg($allcal{$event});
$summary=~s/\s+/ /gs;
$summary=$env{'course.'.$courseid.'.description'}.': '.$summary;
$r->print("BEGIN:VEVENT$crlf");
--albertel1151594639--