version 1.63, 2006/12/05 02:55:51
|
version 1.70, 2008/05/18 19:45:46
|
Line 74 sub readcalendar {
|
Line 74 sub readcalendar {
|
my $courseid=shift; |
my $courseid=shift; |
my $coursenum=$env{'course.'.$courseid.'.num'}; |
my $coursenum=$env{'course.'.$courseid.'.num'}; |
my $coursedom=$env{'course.'.$courseid.'.domain'}; |
my $coursedom=$env{'course.'.$courseid.'.domain'}; |
|
if ($coursenum eq '' || $coursedom eq '') { |
|
my %courseinfo=&Apache::lonnet::coursedescription($courseid); |
|
if ($coursenum eq '' && exists($courseinfo{'num'})) { |
|
$coursenum = $courseinfo{'num'}; |
|
} |
|
if ($coursedom eq '' && exists($courseinfo{'domain'})) { |
|
$coursedom = $courseinfo{'domain'}; |
|
} |
|
} |
|
|
my %thiscal=&Apache::lonnet::dump('calendar',$coursedom,$coursenum); |
my %thiscal=&Apache::lonnet::dump('calendar',$coursedom,$coursenum); |
my %returnhash=(); |
my %returnhash=(); |
foreach my $item (keys(%thiscal)) { |
foreach my $item (keys(%thiscal)) { |
unless (($item=~/^error\:/) || ($thiscal{$item}=~/^error\:/)) { |
unless (($item=~/^error\:/) || ($thiscal{$item}=~/^error\:/)) { |
$returnhash{$courseid.'@'.$item}=$thiscal{$item}; |
my ($start,$end)=split('_',$item); |
|
$returnhash{join("\0",$courseid,$start,$end)}=$thiscal{$item}; |
} |
} |
} |
} |
my $can_see_hidden = ($env{'request.role.adv'} && |
my $can_see_hidden = ($env{'request.role.adv'} && |
Line 88 sub readcalendar {
|
Line 99 sub readcalendar {
|
if ($courseid eq $env{'request.course.id'}) { |
if ($courseid eq $env{'request.course.id'}) { |
$navmap = Apache::lonnavmaps::navmap->new(); |
$navmap = Apache::lonnavmaps::navmap->new(); |
} |
} |
my %resourcedata= |
|
&Apache::lonnet::dump('resourcedata',$coursedom,$coursenum); |
my $resourcedata= |
foreach my $thiskey (sort keys %resourcedata) { |
&Apache::lonnet::get_courseresdata($coursenum,$coursedom); |
if ($resourcedata{$thiskey.'.type'}=~/^date/) { |
if (ref($resourcedata) ne 'HASH') { |
|
return %returnhash; |
|
} |
|
foreach my $thiskey (keys(%$resourcedata)) { |
|
if ($resourcedata->{$thiskey.'.type'}=~/^date/) { |
my ($course,$middle,$part,$name)= |
my ($course,$middle,$part,$name)= |
($thiskey=~/^($match_courseid)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); |
($thiskey=~/^(\Q$courseid\E)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); |
|
|
my %data = ( 'section' => &mt('All Students')); |
my %data = ( 'section' => &mt('All Students')); |
if ($middle=~/^\[(.*)\]\./) { |
if ($middle=~/^\[(.*)\]\./) { |
my $sec=$1; |
my $sec=$1; |
Line 119 sub readcalendar {
|
Line 135 sub readcalendar {
|
} |
} |
if (!$can_see_hidden) { |
if (!$can_see_hidden) { |
my $res = $navmap->getResourceByUrl($map_url); |
my $res = $navmap->getResourceByUrl($map_url); |
if ($res && $res->randomout()) { next; } |
if ($res && $res->randomout()) { |
|
next; |
|
} |
} |
} |
$data{'realm'}=&mt('Folder/Map'); |
$data{'realm'}=&mt('Folder/Map'); |
$data{'url'} = $map_url; |
$data{'url'} = $map_url; |
Line 129 sub readcalendar {
|
Line 147 sub readcalendar {
|
} |
} |
if (!$can_see_hidden) { |
if (!$can_see_hidden) { |
my $res = $navmap->getBySymb($middle); |
my $res = $navmap->getBySymb($middle); |
if ($res && $res->randomout()) { next; } |
if ($res && $res->randomout()) { |
|
next; |
|
} |
} |
} |
$data{'realm'} = &mt('Resource'); |
$data{'realm'} = &mt('Resource'); |
$data{'symb'} = $middle; |
$data{'symb'} = $middle; |
Line 140 sub readcalendar {
|
Line 160 sub readcalendar {
|
# 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}) { |
$data{'datetype'} = &mt('Due and Answer Available'); |
$data{'datetype'} = &mt('Due and Answer Available'); |
} |
} |
} |
} |
Line 155 sub readcalendar {
|
Line 175 sub readcalendar {
|
# 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; |
} |
} |
$data{'datetype'}=&mt('Answer Available'); |
$data{'datetype'}=&mt('Answer Available'); |
} |
} |
$returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'. |
$returnhash{join("\0",$courseid, |
$resourcedata{$thiskey}}=\%data; |
$resourcedata->{$thiskey}, |
|
$resourcedata->{$thiskey})}=\%data; |
} |
} |
} |
} |
return %returnhash; |
return %returnhash; |
Line 310 sub showday {
|
Line 331 sub showday {
|
$nextday+=$oneday; |
$nextday+=$oneday; |
} |
} |
foreach my $item (keys(%allcal)) { |
foreach my $item (keys(%allcal)) { |
my ($course,$startdate,$enddate)=($item=~/^($match_courseid)\@(\d+)\_(\d+)$/); |
my ($courseid,$startdate,$enddate)= split("\0",$item); |
if (($startdate<$nextday) && ($enddate>=$tk)) { |
if (($startdate<$nextday) && ($enddate>=$tk)) { |
push(@outp,[$course,$startdate,$enddate,$allcal{$item}]); |
push(@outp,[$courseid,$startdate,$enddate,$allcal{$item}]); |
} |
} |
} |
} |
unless ($mode) { |
unless ($mode) { |
Line 376 sub output_ics_file {
|
Line 397 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 ($courseid,$startdate,$enddate)=($event=~/^($match_courseid)\@(\d+)\_(\d+)$/); |
my ($courseid,$startdate,$enddate)= split('\0',$event); |
my $uid=$event; |
my $uid=$event; |
$uid=~s/[\W\_]/-/gs; |
$uid=~s/[\W\_]/-/gs; |
$uid.='@loncapa'; |
$uid.='@loncapa'; |
Line 495 Post announcements to the system login a
|
Line 516 Post announcements to the system login a
|
Check machines:<br /> |
Check machines:<br /> |
SERVERANNOUNCE |
SERVERANNOUNCE |
# list servers |
# list servers |
foreach my $host (sort(keys(%Apache::lonnet::hostname))) { |
my %hostname = &Apache::lonnet::all_hostnames(); |
if (&Apache::lonnet::allowed('psa',$Apache::lonnet::hostdom{$host})) { |
foreach my $host (sort(keys(%hostname))) { |
|
if (&Apache::lonnet::allowed('psa', |
|
&Apache::lonnet::host_domain($host))) { |
$r->print ('<br /><label><input type="checkbox" name="postto_'.$host.'" /> '. |
$r->print ('<br /><label><input type="checkbox" name="postto_'.$host.'" /> '. |
$host.' <tt>'.$Apache::lonnet::hostname{$host}.'</tt> '. |
$host.' <tt>'.$hostname{$host}.'</tt> '. |
'</label><a href="http://'.$Apache::lonnet::hostname{$host}. |
'</label><a href="http://'.$hostname{$host}. |
'/announcement.txt" target="annowin">current</a>'); |
'/announcement.txt?time='.time.'" target="annowin">current</a>'); |
} |
} |
} |
} |
$r->print( |
$r->print( |