version 1.52, 2006/05/12 02:17:50
|
version 1.53, 2006/05/12 15:53:10
|
Line 81 sub readcalendar {
|
Line 81 sub readcalendar {
|
} |
} |
} |
} |
|
|
if ($courseid eq $env{'request.course.id'}) { |
my $can_see_hidden = $env{'request.role.adv'}; |
my $can_see_hidden = $env{'request.role.adv'}; |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my %resourcedata= |
my %resourcedata= |
&Apache::lonnet::dump('resourcedata',$coursedom,$coursenum); |
&Apache::lonnet::dump('resourcedata',$coursedom,$coursenum); |
foreach my $thiskey (sort keys %resourcedata) { |
foreach my $thiskey (sort keys %resourcedata) { |
if ($resourcedata{$thiskey.'.type'}=~/^date/) { |
if ($resourcedata{$thiskey.'.type'}=~/^date/) { |
my ($course,$middle,$part,$name)= |
my ($course,$middle,$part,$name)= |
($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); |
($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); |
my $section=&mt('All Students'); |
my $section=&mt('All Students'); |
if ($middle=~/^\[(.*)\]\./) { |
if ($middle=~/^\[(.*)\]\./) { |
my $sec=$1; |
my $sec=$1; |
# if we have a section don't show ones that aren't ours |
# if we have a section don't show ones that aren't ours |
if ($env{'request.course.sec'} && |
if ($env{'request.course.sec'} && |
$env{'request.course.sec'} ne $sec) { next; } |
$env{'request.course.sec'} ne $sec) { next; } |
# if a student without a section don't show any section ones |
# if a student without a section don't show any section ones |
if (!$env{'request.role.adv'} && |
if (!$env{'request.role.adv'} && |
!$env{'request.course.sec'}) { next; } |
!$env{'request.course.sec'}) { next; } |
$section=&mt('Group/Section').': '.$1; |
$section=&mt('Group/Section').': '.$1; |
$middle=~s/^\[(.*)\]\.//; |
$middle=~s/^\[(.*)\]\.//; |
} |
|
$middle=~s/\.$//; |
|
my $realm=&mt('All Resources'); |
|
if ($middle eq '___(all)') { |
|
if (!$can_see_hidden && !$navmap) { |
|
next; |
|
} |
|
} elsif ($middle=~/^(.+)\_\_\_\(all\)$/) { |
|
my $map_url=$1; |
|
if (!$can_see_hidden && !$navmap) { |
|
next; |
|
} |
|
if (!$can_see_hidden) { |
|
my $res = $navmap->getResourceByUrl($map_url); |
|
if ($res && $res->randomout()) { next; } |
} |
} |
$middle=~s/\.$//; |
$realm=&mt('Folder/Map').': '.&Apache::lonnet::gettitle($map_url); |
my $realm=&mt('All Resources'); |
} elsif ($middle) { |
if ($middle=~/^(.+)\_\_\_\(all\)$/) { |
if (!$can_see_hidden && !$navmap) { |
my $map_url=$1; |
next; |
if (!$can_see_hidden && !$navmap) { |
|
next; |
|
} |
|
if (!$can_see_hidden) { |
|
my $res = $navmap->getResourceByUrl($map_url); |
|
if ($res && $res->randomout()) { next; } |
|
} |
|
$realm=&mt('Folder/Map').': '.&Apache::lonnet::gettitle($map_url); |
|
} elsif ($middle) { |
|
if (!$can_see_hidden && !$navmap) { |
|
next; |
|
} |
|
if (!$can_see_hidden) { |
|
my $res = $navmap->getBySymb($middle); |
|
if ($res && $res->randomout()) { next; } |
|
} |
|
$realm=&mt('Resource').': '.&Apache::lonnet::gettitle($middle); |
|
} |
} |
my $datetype=''; |
if (!$can_see_hidden) { |
if ($name eq 'duedate') { |
my $res = $navmap->getBySymb($middle); |
$datetype=&mt('Due'); |
if ($res && $res->randomout()) { next; } |
|
} |
|
$realm=&mt('Resource').': '.&Apache::lonnet::gettitle($middle); |
|
} |
|
my $datetype=''; |
|
if ($name eq 'duedate') { |
|
$datetype=&mt('Due'); |
# see if accidentally answerdate is before duedate |
# see if accidentally answerdate is before duedate |
my $answerkey=$thiskey; |
my $answerkey=$thiskey; |
$answerkey=~s/duedate$/answerdate/; |
$answerkey=~s/duedate$/answerdate/; |
if ($resourcedata{$thiskey}>$resourcedata{$answerkey}) { |
if ($resourcedata{$thiskey}>$resourcedata{$answerkey}) { |
$datetype='Due and Answer Available'; |
$datetype=&mt('Due and Answer Available'); |
} |
|
} |
} |
if ($name eq 'opendate') { $datetype=&mt('Opening'); } |
} |
if ($name eq 'answerdate') { |
if ($name eq 'opendate') { $datetype=&mt('Opening'); } |
|
if ($name eq 'answerdate') { |
# see if accidentally answerdate is before duedate |
# see if accidentally answerdate is before duedate |
my $duekey=$thiskey; |
my $duekey=$thiskey; |
$duekey=~s/answerdate$/duedate/; |
$duekey=~s/answerdate$/duedate/; |
if ($resourcedata{$duekey}>$resourcedata{$thiskey}) { |
if ($resourcedata{$duekey}>$resourcedata{$thiskey}) { |
# forget it |
# forget it |
next; |
next; |
} |
} |
$datetype=&mt('Answer Available'); |
$datetype=&mt('Answer Available'); |
} |
} |
$returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'. |
$returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'. |
$resourcedata{$thiskey}}= |
$resourcedata{$thiskey}}= |
'INTERNAL:'.$datetype.': '.$realm.' ('.$section.')'; |
'INTERNAL:'.$datetype.': '.$realm.' ('.$section.')'; |
} |
|
} |
} |
} |
} |
return %returnhash; |
return %returnhash; |
Line 345 sub output_ics_file {
|
Line 347 sub output_ics_file {
|
$r->print("PRODID:-//LONCAPA//LONCAPA Calendar Output//EN$crlf"); |
$r->print("PRODID:-//LONCAPA//LONCAPA Calendar Output//EN$crlf"); |
my %allcal=&get_all_calendars(); |
my %allcal=&get_all_calendars(); |
foreach my $event (keys(%allcal)) { |
foreach my $event (keys(%allcal)) { |
my ($course,$startdate,$enddate)=($event=~/^(\w+)\@(\d+)\_(\d+)$/); |
my ($courseid,$startdate,$enddate)=($event=~/^(\w+)\@(\d+)\_(\d+)$/); |
|
my $uid=$event; |
|
$uid=~s/[\W\_]/-/gs; |
|
$uid.='@loncapa'; |
|
my $summary=$allcal{$event}; |
|
$summary=~s/^INTERNAL\://; |
|
$summary=~s/\s+/ /gs; |
|
$summary=$env{'course.'.$courseid.'.description'}.': '.$summary; |
$r->print("BEGIN:VEVENT$crlf"); |
$r->print("BEGIN:VEVENT$crlf"); |
$r->print("DTSTART:".&Apache::loncommon::utc_string($startdate).$crlf); |
$r->print("DTSTART:".&Apache::loncommon::utc_string($startdate).$crlf); |
$r->print("DTEND:".&Apache::loncommon::utc_string($enddate).$crlf); |
$r->print("DTEND:".&Apache::loncommon::utc_string($enddate).$crlf); |
$r->print("SUMMARY:$allcal{$event}$crlf"); |
$r->print("SUMMARY:$summary$crlf"); |
|
$r->print("UID:$uid$crlf"); |
$r->print("END:VEVENT$crlf"); |
$r->print("END:VEVENT$crlf"); |
} |
} |
# Footer |
# Footer |
Line 593 SERVERANNOUNCE
|
Line 603 SERVERANNOUNCE
|
'&year='.$todayhash{'year'}. |
'&year='.$todayhash{'year'}. |
($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a></p>'. |
($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a></p>'. |
($pickdatemode?'</font>':'').&Apache::loncommon::end_page()); |
($pickdatemode?'</font>':'').&Apache::loncommon::end_page()); |
|
$r->print('<a href="/adm/announcements.ics">'.&mt('Download your Calendar as iCalendar File').'</a>'); |
return OK; |
return OK; |
} |
} |
|
|