Diff for /loncom/interface/lonannounce.pm between versions 1.23 and 1.49

version 1.23, 2003/11/08 03:22:03 version 1.49, 2006/04/22 16:32:55
Line 33  use Apache::Constants qw(:common); Line 33  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonnavmaps();
   use Apache::lonrss();
   use Apache::lonnet;
 use HTML::Entities();  use HTML::Entities();
   
 my %todayhash;  my %todayhash;
Line 47  sub editfield { Line 50  sub editfield {
     my $enddateform = &Apache::lonhtmlcommon::date_setter('anno',      my $enddateform = &Apache::lonhtmlcommon::date_setter('anno',
                                                           'enddate',                                                            'enddate',
                                                           $end);                                                            $end);
       my $help=&Apache::loncommon::help_open_menu('','Calendar Add Announcement','Calendar_Add_Announcement','',274,'Communication Tools');
       my %lt=&Apache::lonlocal::texthash('post' => 'Post Announcement',
          'start' => 'Starting date',
          'end' => 'Ending date',
          'incrss' => 'Include in course RSS newsfeed');
   
     $r->print(<<ENDFORM);      $r->print(<<ENDFORM);
   $help
 <form name="anno" method="post">  <form name="anno" method="post">
 <input type="hidden" value=''          name="action"      >  <input type="hidden" value='' name="action" />
 <table><tr><td>Starting date:</td><td>$startdateform</td></tr>  <table><tr><td>$lt{'start'}:</td><td>$startdateform</td></tr>
 <tr><td>Ending date:</td><td>$enddateform</td></tr></table>  <tr><td>$lt{'end'}:</td><td>$enddateform</td></tr></table>
 <textarea name="msg" rows="4" cols="60">$text</textarea>  <textarea name="msg" rows="4" cols="60">$text</textarea>
 <input type="button" onClick="trysubmit()" value="Post Announcement"><hr>  <br />
   <label><input type="checkbox" name="rsspost" /> $lt{'incrss'}</label>
   <br /><input type="button" onClick="trysubmit()" value="$lt{'post'}" /><hr />
 ENDFORM  ENDFORM
 }  }
   
 sub readcalendar {  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'};
     my %thiscal=&Apache::lonnet::dump('calendar',$coursedom,$coursenum);      my %thiscal=&Apache::lonnet::dump('calendar',$coursedom,$coursenum);
     my %returnhash=();      my %returnhash=();
     foreach (keys %thiscal) {      foreach my $item (keys(%thiscal)) {
         unless (($_=~/^error\:/) || ($thiscal{$_}=~/^error\:/)) {          unless (($item=~/^error\:/) || ($thiscal{$item}=~/^error\:/)) {
    $returnhash{$courseid.'@'.$_}=$thiscal{$_};     $returnhash{$courseid.'@'.$item}=$thiscal{$item};
         }          }
     }      }
   
       if ($courseid eq $env{'request.course.id'}) {
    my $can_see_hidden = $env{'request.role.adv'};
    my $navmap = Apache::lonnavmaps::navmap->new();
    my %resourcedata=
       &Apache::lonnet::dump('resourcedata',$coursedom,$coursenum);
    foreach my $thiskey (sort keys %resourcedata) {
       if ($resourcedata{$thiskey.'.type'}=~/^date/) {
    my ($course,$middle,$part,$name)=
       ($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/);
    my $section=&mt('All Students');
    if ($middle=~/^\[(.*)\]\./) {
       my $sec=$1;
       # if we have a section don't show ones that aren't ours
       if ($env{'request.course.sec'} &&
    $env{'request.course.sec'} ne $sec) { next; }
       # 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;
       $middle=~s/^\[(.*)\]\.//;
    }
    $middle=~s/\.$//;
    my $realm=&mt('All Resources');
    if ($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; }
       }
       $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 ($name eq 'duedate') { 
       $datetype=&mt('Due'); 
   # see if accidentally answerdate is before duedate
       my $answerkey=$thiskey;
       $answerkey=~s/duedate$/answerdate/;
       if ($resourcedata{$thiskey}>$resourcedata{$answerkey}) {
    $datetype='Due and Answer Available';
       }
    }
    if ($name eq 'opendate') { $datetype=&mt('Opening'); }
    if ($name eq 'answerdate') {
   # see if accidentally answerdate is before duedate
       my $duekey=$thiskey;
       $duekey=~s/answerdate$/duedate/;
       if ($resourcedata{$duekey}>$resourcedata{$thiskey}) {
   # forget it
    next;
       } 
       $datetype=&mt('Answer Available'); 
    }
    $returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'.
       $resourcedata{$thiskey}}=
       'INTERNAL:'.$datetype.': '.$realm.' ('.$section.')';
       }
    }
       }
     return %returnhash;      return %returnhash;
 }  }
   
 sub emptycell {  sub emptycell {
     return '<td bgcolor="#AAAAAA">&nbsp;</td>';      return '<td class="LC_calendar_day_empty">&nbsp;</td>';
 }  }
   
 sub normalcell {  sub normalcell {
     my ($day,$month,$year,$text)=@_;      my ($day,$month,$year,$text)=@_;
     my $output='';      my $output='';
     foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {      my @items=&order($text);
         if ($_) {      foreach my $item (@items) {
     my ($courseid,$start,$end,@msg)=split(/\@/,$_);          if ($item) {
             my $msg=join('@',@msg);      my $internalflag=0;
             my $fullmsg=$ENV{'course.'.$courseid.'.description'}.      my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
  ', '.&Apache::lonlocal::locallocaltime($start).' - '.&Apache::lonlocal::locallocaltime($end).': '.$msg;      if ($msg=~/INTERNAL\:/) {
             if ($courseid eq $ENV{'request.course.id'}) {   $msg=~s/INTERNAL\://gs;
               if ((&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))   $internalflag=1;
       }
               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;
               if ($courseid eq $env{'request.course.id'}) {
                 if ((&Apache::lonnet::allowed('srm',$env{'request.course.id'}))
                && (!$showedcheck{$start.'_'.$end})                 && (!$showedcheck{$start.'_'.$end})
        && ($ENV{'form.pickdate'} ne 'yes')) {         && ($env{'form.pickdate'} ne 'yes')
          && (!$internalflag)) {
                $output.='<input type="checkbox" name="remove_'.$start.'_'.                 $output.='<input type="checkbox" name="remove_'.$start.'_'.
    $end.'">';     $end.'">';
                $showedcheck{$start.'_'.$end}=1;                 $showedcheck{$start.'_'.$end}=1;
       }        }
     }      }
       $fullmsg=~s/[\n\r]/\\n/gs;
             $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');              $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
             $fullmsg=~s/&/\\&/g;              $fullmsg=~s/&/\\&/g;
             $output.='<a href="javascript:alert('."'$fullmsg'".')">'.              $output.='<a href="javascript:alert('."'$fullmsg'".')">'.
        substr($msg,0,20).'...</a><br />';         substr($msg,0,20).'...</a><br />';
        }         }
     }      }
     return '<td'.      return '<td class="LC_calendar_day'.
  ((($day eq $todayhash{'day'}) &&   ((($day eq $todayhash{'day'}) &&
           ($month eq $todayhash{'month'}) &&            ($month eq $todayhash{'month'}) &&
           ($year eq $todayhash{'year'}))?' bgcolor="#FFFF00"':'').            ($year eq $todayhash{'year'}))?'_current':'').
            '>'.&tfont('<b>'.&picklink($day,$day,$month,$year).'</b><br>'.$output).'</td>';             '" ><b>'.&picklink($day,$day,$month,$year).'</b><br />'.$output.'</td>';
 }  }
   
 sub plaincell {  sub plaincell {
     my ($text)=@_;      my ($text)=@_;
     my $output='';      my $output='';
     foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {      my @items=&order($text);
         if ($_) {      foreach my $item (@items) {
     my ($courseid,$start,$end,@msg)=split(/\@/,$_);          if ($item) {
             my $msg=join('@',@msg);      my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
             my $fullmsg=$ENV{'course.'.$courseid.'.description'}.              my $fullmsg=&mt('Calendar Announcement for ').$env{'course.'.$courseid.'.description'}.
  ', '.localtime($start).' - '.localtime($end).': '.$msg;   '\n'.&Apache::lonlocal::locallocaltime($start);
       if ($start!=$end) {
    $fullmsg.=' - '.&Apache::lonlocal::locallocaltime($end);
       }
       $msg=~s/INTERNAL\://gs;
       $fullmsg.=':\n'.$msg;
        $fullmsg=~s/[\n\r]/\\n/gs;
             $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');              $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
             $fullmsg=~s/&/\\&/g;              $fullmsg=~s/&/\\&/g;
             $output.='<a href="javascript:alert('."'$fullmsg'".')">'.              $output.='<a href="javascript:alert('."'$fullmsg'".')">'.
        substr($msg,0,40).'...</a><br />';         substr($msg,0,80).'...</a><br />';
        }         }
     }      }
     return $output;      return $output;
Line 128  sub plaincell { Line 227  sub plaincell {
 sub listcell {  sub listcell {
     my ($text)=@_;      my ($text)=@_;
     my $output='';      my $output='';
     foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {      my @items=&order($text);
         if ($_) {      foreach my $item (@items) {
     my ($courseid,$start,$end,@msg)=split(/\@/,$_);          if ($item) {
             my $msg=join('@',@msg);      my ($courseid,$start,$end,$msg)=split(/\@/,$item,4);
             my $fullmsg=localtime($start).' to '.localtime($end).':<br /><b>'.      $msg=~s/INTERNAL\://gs;
               my $fullmsg=&Apache::lonlocal::locallocaltime($start);
       if ($start!=$end) {
    $fullmsg.=&mt(' to ').
       &Apache::lonlocal::locallocaltime($end);
       }
               $fullmsg.=':<br /><b>'.
                $msg.'</b>';                 $msg.'</b>';
             $output.='<li>'.$fullmsg.'</li>';              $output.='<li>'.$fullmsg.'</li>';
        }         }
Line 140  sub listcell { Line 245  sub listcell {
     return $output;      return $output;
 }  }
   
   sub order {
       my ($text)=@_;
       my @items = split(/___&&&___/,$text);
       sort {
    my (undef,$astart,$aend)=split(/\@/,$a);
    my (undef,$bstart,$bend)=split(/\@/,$b);
    if ($astart != $bstart) {
       return $astart <=> $bstart;
    }
    return $aend <=> $bend;
       } @items;
   }
   
 sub nextday {  sub nextday {
     my %th=@_;      my %th=@_;
     $th{'day'}++;      $th{'day'}++;
Line 151  sub showday { Line 269  sub showday {
     my %th=&Apache::loncommon::timehash($tk);      my %th=&Apache::loncommon::timehash($tk);
     my ($nextday,$nextmonth)=&nextday(%th);      my ($nextday,$nextmonth)=&nextday(%th);
     my $outp='';      my $outp='';
     my $oneday=24*3600;      if ($mode) {
     foreach (keys %allcal) {   my $oneday=24*3600;
  my ($course,$startdate,$enddate)=($_=~/^(\w+)\@(\d+)\_(\d+)$/);   $tk-=$oneday;
         if (($startdate<$nextday) && ($enddate>$tk))  {   $nextday+=$oneday;
       }
       foreach my $item (keys(%allcal)) {
    my ($course,$startdate,$enddate)=($item=~/^(\w+)\@(\d+)\_(\d+)$/);
           if (($startdate<$nextday) && ($enddate>=$tk))  {
     $outp.='___&&&___'.$course.'@'.$startdate.'@'.$enddate.'@'.      $outp.='___&&&___'.$course.'@'.$startdate.'@'.$enddate.'@'.
             $allcal{$_};              $allcal{$item};
         }          }
     }      }
     unless ($mode) {      unless ($mode) {
Line 173  sub showday { Line 295  sub showday {
    }     }
 }  }
   
 sub tfont {  
     my $text=shift;  
     if ($ENV{'form.pickdate'} eq 'yes') {  
  return '<font size="1">'.$text.'</font>';  
     } else {  
  return $text;  
     }  
 }  
   
 sub picklink {  sub picklink {
     my ($text,$day,$month,$year)=@_;      my ($text,$day,$month,$year)=@_;
     if ($ENV{'form.pickdate'} eq 'yes') {      if ($env{'form.pickdate'} eq 'yes') {
  return '<a href="javascript:dialin('.$day.','.$month.','.$year.')">'.   return '<a href="javascript:dialin('.$day.','.$month.','.$year.')">'.
     $text.'</a>';      $text.'</a>';
     } else {      } else {
Line 196  sub dialscript { Line 309  sub dialscript {
     return (<<ENDDIA);      return (<<ENDDIA);
 <script language="Javascript">  <script language="Javascript">
 function dialin(day,month,year) {  function dialin(day,month,year) {
  opener.document.$ENV{'form.formname'}.$ENV{'form.element'}\_year.value=year;   opener.document.$env{'form.formname'}.$env{'form.element'}\_year.value=year;
     var slct=opener.document.$ENV{'form.formname'}.$ENV{'form.element'}\_month;      var slct=opener.document.$env{'form.formname'}.$env{'form.element'}\_month;
     var i;      var i;
     for (i=0;i<slct.length;i++) {      for (i=0;i<slct.length;i++) {
         if (slct.options[i].value==month) { slct.selectedIndex=i; }          if (slct.options[i].value==month) { slct.selectedIndex=i; }
     }      }
     opener.document.$ENV{'form.formname'}.$ENV{'form.element'}\_day.value=day;      opener.document.$env{'form.formname'}.$env{'form.element'}\_day.value=day;
     opener.$ENV{'form.element'}\_checkday();      opener.$env{'form.element'}\_checkday();
     self.close();      self.close();
 }  }
 </script>  </script>
Line 220  sub handler { Line 333  sub handler {
     my $today=time;      my $today=time;
     %todayhash=&Apache::loncommon::timehash($today);      %todayhash=&Apache::loncommon::timehash($today);
 # ----------------------------------------------------------------- Check marks  # ----------------------------------------------------------------- Check marks
     %showedcheck=();      undef(%showedcheck);
     undef %showedcheck;  
 # ---------------------------------------------------------- Get month and year  # ---------------------------------------------------------- Get month and year
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                              ['month','year','pickdate','formname','element']);                               ['month','year','pickdate','formname','element']);
 # --------------------------------------------------- Decide what month to show  # --------------------------------------------------- Decide what month to show
     my $year=$todayhash{'year'};      my $year=$todayhash{'year'};
     if ($ENV{'form.year'}) { $year=$ENV{'form.year'}; }      if ($env{'form.year'}) { $year=$env{'form.year'}; }
     my $month=$todayhash{'month'};      my $month=$todayhash{'month'};
     if ($ENV{'form.month'}) { $month=$ENV{'form.month'}; }      if ($env{'form.month'}) { $month=$env{'form.month'}; }
   
 # ---------------------------------------------- See if we are in pickdate mode  # ---------------------------------------------- See if we are in pickdate mode
     my $pickdatemode=($ENV{'form.pickdate'} eq 'yes');      my $pickdatemode=($env{'form.pickdate'} eq 'yes');
     my $pickinfo='&pickdate=yes&formname='.$ENV{'form.formname'}.      my $pickinfo='&pickdate=yes&formname='.$env{'form.formname'}.
  '&element='.$ENV{'form.element'};   '&element='.$env{'form.element'};
 # --------------------------------------------- Find out first day of the month  # --------------------------------------------- Find out first day of the month
   
     my %firstday=&Apache::loncommon::timehash(      my %firstday=&Apache::loncommon::timehash(
        &Apache::loncommon::maketime( 'day' => 1, 'month'=> $month,         &Apache::loncommon::maketime( 'day' => 1, 'month'=> $month,
                                      'year' => $year, 'hours' => 0,                                       'year' => $year, 'hours' => 0,
      'minutes' => 0, 'seconds' => 0,       'minutes' => 0, 'seconds' => 0,
                                      'dlsav' => $todayhash{'dlsav'} ));                                       'dlsav' => -1 ));
     my $weekday=$firstday{'weekday'};      my $weekday=$firstday{'weekday'};
 # ------------------------------------------------------------ Print the screen  # ------------------------------------------------------------ Print the screen
       my $js = <<ENDDOCUMENT;
     $r->print(<<ENDDOCUMENT);  <script type="text/javascript">
 <html>  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 <script>  
   
     function trysubmit() {      function trysubmit() {
         document.anno.action.value="new";          document.anno.action.value="new";
Line 261  sub handler { Line 369  sub handler {
  document.anno.submit();   document.anno.submit();
     }      }
 </script>  </script>
 </head>  
 ENDDOCUMENT  ENDDOCUMENT
   
     if ($pickdatemode) {      if ($pickdatemode) {
 # no big header in pickdate mode  # no big header in pickdate mode
  $r->print(&Apache::loncommon::bodytag("Pick a Date",'','',1).   $r->print(&Apache::loncommon::start_page("Pick a Date",$js,
    {'only_body' => 1,}).
   &dialscript().    &dialscript().
   '<font size="1">');    '<font size="1">');
     } else {      } else {
        $r->print(&Apache::loncommon::bodytag("Announcements and Calendar"));         $r->print(&Apache::loncommon::start_page("Announcements and Calendar",
    $js));
     }      }
 # does this user have privileges to post, etc?  # does this user have privileges to post, etc?
     my $allowed=0;      my $allowed=0;
     if ($ENV{'request.course.id'}) {      if ($env{'request.course.id'}) {
        $allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});         $allowed=&Apache::lonnet::allowed('srm',$env{'request.course.id'});
     }      }
 # does this user have privileges to post to servers?  # does this user have privileges to post to servers?
     my $serverpost=0;      my $serverpost=0;
     if ($ENV{'request.role.domain'}) {      if ($env{'request.role.domain'}) {
  $serverpost=&Apache::lonnet::allowed('psa',   $serverpost=&Apache::lonnet::allowed('psa',
      $ENV{'request.role.domain'});       $env{'request.role.domain'});
     } else {      } else {
  $serverpost=&Apache::lonnet::allowed('psa','/');   $serverpost=&Apache::lonnet::allowed('psa','/');
     }      }
Line 291  ENDDOCUMENT Line 401  ENDDOCUMENT
     }      }
 # ------------------------------------------------------------ Process commands  # ------------------------------------------------------------ Process commands
     if ($serverpost) {      if ($serverpost) {
  if ($ENV{'form.serveraction'}) {   if ($env{'form.serveraction'}) {
     foreach (keys %ENV) {      foreach my $key (keys(%env)) {
  if ($_=~/^form\.postto\_(\w+)/) {   if ($key=~/^form\.postto\_(\w+)/) {
     $r->print(       $r->print( 
  '<br />Posting '.$1.': '.&Apache::lonnet::postannounce   '<br />Posting '.$1.': '.&Apache::lonnet::postannounce
  ($1,$ENV{'form.serverannnounce'}));   ($1,$env{'form.serverannnounce'}));
  }   }
     }      }
  }   }
Line 309  Post announcements to the system login a Line 419  Post announcements to the system login a
 Check machines:<br />  Check machines:<br />
 SERVERANNOUNCE  SERVERANNOUNCE
 # list servers  # list servers
     foreach (sort keys %Apache::lonnet::hostname) {      foreach my $host (sort(keys(%Apache::lonnet::hostname))) {
  if (&Apache::lonnet::allowed('psa',$Apache::lonnet::hostdom{$_})) {   if (&Apache::lonnet::allowed('psa',$Apache::lonnet::hostdom{$host})) {
     $r->print ('<br /><input type="checkbox" name="postto_'.$_.'" /> '.      $r->print ('<br /><input type="checkbox" name="postto_'.$host.'" /> '.
        $_.' <tt>'.$Apache::lonnet::hostname{$_}.'</tt> '.         $host.' <tt>'.$Apache::lonnet::hostname{$host}.'</tt> '.
        '<a href="http://'.$Apache::lonnet::hostname{$_}.         '<a href="http://'.$Apache::lonnet::hostname{$host}.
        '/announcement.txt" target="annowin">current</a>');         '/announcement.txt" target="annowin">current</a>');
  }   }
     }      }
Line 321  SERVERANNOUNCE Line 431  SERVERANNOUNCE
   '<br /><input type="submit" name="serveraction" value="Post"></form><hr />');    '<br /><input type="submit" name="serveraction" value="Post"></form><hr />');
     }      }
     if ($allowed) {      if ($allowed) {
         my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};          my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'};
         my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};          my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'};
 # ----------------------------------------------------- Store new submitted one  # ----------------------------------------------------- Store new submitted one
         if ($ENV{'form.action'} eq 'new') {          if ($env{'form.action'} eq 'new') {
     my $startdate =       my $startdate = 
  &Apache::lonhtmlcommon::get_date_from_form('startdate');   &Apache::lonhtmlcommon::get_date_from_form('startdate');
     my $enddate   =       my $enddate   = 
Line 338  SERVERANNOUNCE Line 448  SERVERANNOUNCE
             }              }
     &Apache::lonnet::put('calendar',{       &Apache::lonnet::put('calendar',{ 
  $startdate.'_'.$enddate =>    $startdate.'_'.$enddate => 
     $ENV{'form.msg'} },$coursedom,$coursenum);      $env{'form.msg'} },$coursedom,$coursenum);
       if ($env{'form.rsspost'}) {
                  &Apache::lonrss::addentry($coursenum,$coursedom,'Course_Announcements',
    &mt('Event from [_1] to [_2]',
        &Apache::lonlocal::locallocaltime($startdate),
        &Apache::lonlocal::locallocaltime($enddate)),
    $env{'form.msg'},'/adm/announcements','public');
      }
         }          }
 # ---------------------------------------------------------------- Remove items  # ---------------------------------------------------------------- Remove items
         if ($ENV{'form.action'} eq 'del') {          if ($env{'form.action'} eq 'del') {
     my @delwhich=();      my @delwhich=();
             foreach (keys %ENV) {              foreach my $key (keys(%env)) {
  if ($_=~/^form\.remove\_(.+)$/) {   if ($key=~/^form\.remove\_(.+)$/) {
     push(@delwhich,$1);      push(@delwhich,$1);
                 }                  }
             }              }
Line 359  SERVERANNOUNCE Line 476  SERVERANNOUNCE
     }      }
 # ----------------------------------------------------- Summarize all calendars  # ----------------------------------------------------- Summarize all calendars
     my %allcal=();      my %allcal=();
     foreach (&Apache::loncommon::findallcourses()) {      foreach my $course (sort(&Apache::loncommon::findallcourses())) {
  %allcal=(%allcal,&readcalendar($_));   %allcal=(%allcal,&readcalendar($course));
     }      }
   
 # ------------------------------- Initialize table and forward backward buttons  # ------------------------------- Initialize table and forward backward buttons
Line 378  SERVERANNOUNCE Line 495  SERVERANNOUNCE
     if (($year<1970) || ($year>2037)) {      if (($year<1970) || ($year>2037)) {
  $r->print('<h3>No calendar available for this date.</h3>'.   $r->print('<h3>No calendar available for this date.</h3>'.
  '<a href="/adm/announcements?month='.$todayhash{'month'}.   '<a href="/adm/announcements?month='.$todayhash{'month'}.
  '&year='.$todayhash{'year'}.'">Current Month</a></body></html>');   '&year='.$todayhash{'year'}.'">Current Month</a>'.
     &Apache::loncommon::end_page());
  return OK;   return OK;
     }      }
   
       my $class = "LC_calendar";
       if ($env{'form.pickdate'} eq 'yes') {
    $class .= " LC_calendar_pickdate";
       }
     $r->print(      $r->print(
  '<a href="/adm/announcements?month='.$pm.'&year='.$py.   '<a href="/adm/announcements?month='.$pm.'&year='.$py.
  ($pickdatemode?$pickinfo:'').'">'.&mt('Previous Month').'</a> '.   ($pickdatemode?$pickinfo:'').'">'.&mt('Previous Month').'</a> '.
Line 389  SERVERANNOUNCE Line 512  SERVERANNOUNCE
  '&nbsp;&nbsp;&nbsp;<a href="/adm/announcements?month='.$todayhash{'month'}.   '&nbsp;&nbsp;&nbsp;<a href="/adm/announcements?month='.$todayhash{'month'}.
  '&year='.$todayhash{'year'}.   '&year='.$todayhash{'year'}.
  ($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a><p>'.   ($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a><p>'.
         '<table border="2" cols="7" rows="5"><tr><th>'.          '<table class="'.$class.'" cols="7" rows="5"><tr>
 &tfont(&mt('Sun'))  <th>'.&mt('Sun').'</th>
 .'</th><th>'.  <th>'.&mt('Mon').'</th>
 &tfont(&mt('Mon'))  <th>'.&mt('Tue').'</th>
 .'</th><th>'.  <th>'.&mt('Wed').'</th>
 &tfont(&mt('Tue'))  <th>'.&mt('Thu').'</th>
 .'</th><th>'.  <th>'.&mt('Fri').'</th>
 &tfont(&mt('Wed'))  <th>'.&mt('Sat').'</th></tr>');
 .'</th><th>'.  
 &tfont(&mt('Thu'))  
 .'</th><th>'.  
 &tfont(&mt('Fri'))  
 .'</th><th>'.  
 &tfont(&mt('Sat'))  
 .'</th></tr>');  
   
     my $tk=&Apache::loncommon::maketime(%firstday);      my $tk=&Apache::loncommon::maketime(%firstday);
     my $outp;      my $outp;
Line 430  SERVERANNOUNCE Line 546  SERVERANNOUNCE
 # ------------------------------------------------------------------- End table  # ------------------------------------------------------------------- End table
     $r->print('</table>');      $r->print('</table>');
 # ----------------------------------------------------------------- Check marks  # ----------------------------------------------------------------- Check marks
     %showedcheck=();      undef(%showedcheck);
     undef %showedcheck;  
 # --------------------------------------------------------------- Remove button  # --------------------------------------------------------------- Remove button
     if ($allowed) { $r->print('<input type="button" onClick="removesub()" value="Remove Checked Entries"></form>'); }      if ($allowed) { $r->print('<input type="button" onClick="removesub()" value="Remove Checked Entries">'.
         &Apache::loncommon::help_open_topic('Calendar_Remove_Announcement').'</form>'); }
     $r->print('<p>'.      $r->print('<p>'.
  '<a href="/adm/announcements?month='.$pm.'&year='.$py.   '<a href="/adm/announcements?month='.$pm.'&year='.$py.
  ($pickdatemode?$pickinfo:'').'">'.&mt('Previous Month').'</a> '.   ($pickdatemode?$pickinfo:'').'">'.&mt('Previous Month').'</a> '.
Line 442  SERVERANNOUNCE Line 558  SERVERANNOUNCE
  '&nbsp;&nbsp;&nbsp;<a href="/adm/announcements?month='.$todayhash{'month'}.   '&nbsp;&nbsp;&nbsp;<a href="/adm/announcements?month='.$todayhash{'month'}.
  '&year='.$todayhash{'year'}.   '&year='.$todayhash{'year'}.
  ($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a></p>'.   ($pickdatemode?$pickinfo:'').'">'.&mt('Current Month').'</a></p>'.
  ($pickdatemode?'</font>':'').   ($pickdatemode?'</font>':'').&Apache::loncommon::end_page());
  '</body></html>');  
     return OK;      return OK;
 }   } 
   

Removed from v.1.23  
changed lines
  Added in v.1.49


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.