Diff for /loncom/interface/lonannounce.pm between versions 1.63 and 1.70

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(

Removed from v.1.63  
changed lines
  Added in v.1.70


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>