version 1.4, 2002/08/09 20:15:16
|
version 1.14, 2003/06/18 15:11:20
|
Line 31 package Apache::lonannounce;
|
Line 31 package Apache::lonannounce;
|
use strict; |
use strict; |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::loncommon; |
use Apache::loncommon; |
|
use Apache::lonhtmlcommon(); |
|
|
|
my %todayhash; |
|
|
|
sub editfield { |
|
my ($r,$start,$end,$text)=@_; |
|
# Deal with date forms |
|
my $startdateform = &Apache::lonhtmlcommon::date_setter('anno', |
|
'startdate', |
|
$start); |
|
my $enddateform = &Apache::lonhtmlcommon::date_setter('anno', |
|
'enddate', |
|
$end); |
|
|
|
$r->print(<<ENDFORM); |
|
<form name="anno" method="post"> |
|
<input type="hidden" value='' name="action" > |
|
<table><tr><td>Starting date:</td><td>$startdateform</td></tr> |
|
<tr><td>Ending date:</td><td>$enddateform</td></tr></table> |
|
<textarea name="msg" rows="4" cols="60">$text</textarea> |
|
<input type="button" onClick="trysubmit()" value="Post Announcement"><hr> |
|
ENDFORM |
|
} |
|
|
sub readcalendar { |
sub readcalendar { |
my $courseid=shift; |
my $courseid=shift; |
Line 51 sub emptycell {
|
Line 74 sub emptycell {
|
} |
} |
|
|
sub normalcell { |
sub normalcell { |
my ($day,$text)=@_; |
my ($day,$month,$year,$text)=@_; |
my $output=''; |
my $output=''; |
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) { |
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) { |
if ($_) { |
if ($_) { |
my ($courseid,$msg)=split(/\@/,$_); |
my ($courseid,$start,$end,@msg)=split(/\@/,$_); |
my $fullmsg=$ENV{'course.'.$courseid.'.description'}.': '.$msg; |
my $msg=join('@',@msg); |
$output.='<a href="javascript:alert('."'$fullmsg'".')">'. |
my $fullmsg=$ENV{'course.'.$courseid.'.description'}. |
substr($msg,0,20).'...</a><br>'; |
', '.localtime($start).' - '.localtime($end).': '.$msg; |
|
if ($courseid eq $ENV{'request.course.id'}) { |
|
if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) { |
|
$output.='<input type="checkbox" name="remove_'.$start.'_'. |
|
$end.'">'; |
|
} |
|
} |
|
$output.='<a href="javascript:alert('."'$fullmsg'".')">'. |
|
substr($msg,0,20).'...</a><br />'; |
} |
} |
} |
} |
return '<td><b>'.$day.'</b><br>'.$output.'</td>'; |
return '<td'. |
|
((($day eq $todayhash{'day'}) && |
|
($month eq $todayhash{'month'}) && |
|
($year eq $todayhash{'year'}))?' bgcolor="#FFFF00"':''). |
|
'><b>'.$day.'</b><br>'.$output.'</td>'; |
|
} |
|
|
|
sub plaincell { |
|
my ($text)=@_; |
|
my $output=''; |
|
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) { |
|
if ($_) { |
|
my ($courseid,$start,$end,@msg)=split(/\@/,$_); |
|
my $msg=join('@',@msg); |
|
my $fullmsg=$ENV{'course.'.$courseid.'.description'}. |
|
', '.localtime($start).' - '.localtime($end).': '.$msg; |
|
$output.='<a href="javascript:alert('."'$fullmsg'".')">'. |
|
substr($msg,0,40).'...</a><br />'; |
|
} |
|
} |
|
return $output; |
|
} |
|
|
|
sub listcell { |
|
my ($text)=@_; |
|
my $output=''; |
|
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) { |
|
if ($_) { |
|
my ($courseid,$start,$end,@msg)=split(/\@/,$_); |
|
my $msg=join('@',@msg); |
|
my $fullmsg=localtime($start).' to '.localtime($end).':<br /><b>'. |
|
$msg.'</b>'; |
|
$output.='<li>'.$fullmsg.'</li>'; |
|
} |
|
} |
|
return $output; |
} |
} |
|
|
sub nextday { |
sub nextday { |
Line 71 sub nextday {
|
Line 137 sub nextday {
|
} |
} |
|
|
sub showday { |
sub showday { |
my ($tk,%allcal)=@_; |
my ($tk,$mode,%allcal)=@_; |
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=''; |
Line 79 sub showday {
|
Line 145 sub showday {
|
foreach (keys %allcal) { |
foreach (keys %allcal) { |
my ($course,$startdate,$enddate)=($_=~/^(\w+)\@(\d+)\_(\d+)$/); |
my ($course,$startdate,$enddate)=($_=~/^(\w+)\@(\d+)\_(\d+)$/); |
if (($startdate<$nextday) && ($enddate>$tk)) { |
if (($startdate<$nextday) && ($enddate>$tk)) { |
$outp.='___&&&___'.$course.'@'.$allcal{$_}; |
$outp.='___&&&___'.$course.'@'.$startdate.'@'.$enddate.'@'. |
|
$allcal{$_}; |
} |
} |
} |
} |
return ($nextday,$nextmonth,&normalcell($th{'day'},$outp)); |
unless ($mode) { |
|
return ($nextday,$nextmonth,&normalcell( |
|
$th{'day'},$th{'month'},$th{'year'},$outp)); |
|
} elsif ($outp) { |
|
if ($mode==1) { |
|
return '<br />'.&plaincell($outp); |
|
} else { |
|
return '<ul>'.&listcell($outp).'</ul>'; |
|
} |
|
} else { |
|
return ''; |
|
} |
} |
} |
|
|
sub handler { |
sub handler { |
Line 93 sub handler {
|
Line 171 sub handler {
|
|
|
# ---------------------------------------------------------- Get time right now |
# ---------------------------------------------------------- Get time right now |
my $today=time; |
my $today=time; |
my %todayhash=&Apache::loncommon::timehash($today); |
%todayhash=&Apache::loncommon::timehash($today); |
|
|
# ---------------------------------------------------------- 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']); |
['month','year']); |
# ----------------------------------------------------- Summarize all calendars |
|
my %allcal=(); |
|
foreach (&Apache::loncommon::findallcourses()) { |
|
%allcal=(%allcal,&readcalendar($_)); |
|
} |
|
# --------------------------------------------------- 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'}; } |
Line 117 sub handler {
|
Line 190 sub handler {
|
'dlsav' => $todayhash{'dlsav'} )); |
'dlsav' => $todayhash{'dlsav'} )); |
my $weekday=$firstday{'weekday'}; |
my $weekday=$firstday{'weekday'}; |
# ------------------------------------------------------------ Print the screen |
# ------------------------------------------------------------ Print the screen |
|
|
$r->print(<<ENDDOCUMENT); |
$r->print(<<ENDDOCUMENT); |
<html> |
<html> |
<head> |
<head> |
<title>The LearningOnline Network with CAPA</title> |
<title>The LearningOnline Network with CAPA</title> |
<script> |
<script> |
function pclose() { |
|
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", |
|
"height=350,width=350,scrollbars=no,menubar=no"); |
|
parmwin.close(); |
|
} |
|
|
|
function pjump(type,dis,value,marker,ret,call) { |
|
parmwin=window.open("/adm/rat/parameter.html?type="+escape(type) |
|
+"&value="+escape(value)+"&marker="+escape(marker) |
|
+"&return="+escape(ret) |
|
+"&call="+escape(call)+"&name="+escape(dis),"LONCAPAparms", |
|
"height=350,width=350,scrollbars=no,menubar=no"); |
|
|
|
} |
|
|
|
function dateset() { |
|
if (document.anno.pres_marker.value=='end') { |
|
document.anno.enddate.value= |
|
document.anno.pres_value.value; |
|
} |
|
if (document.anno.pres_marker.value=='start') { |
|
document.anno.startdate.value= |
|
document.anno.pres_value.value; |
|
} |
|
pclose(); |
|
} |
|
|
|
function trysubmit() { |
function trysubmit() { |
if (document.anno.startdate.value=='') { |
|
alert("Announcements must have a starting date"); |
|
return ''; |
|
} |
|
if (document.anno.enddate.value=='') { |
|
alert("Announcements must have a starting date"); |
|
return ''; |
|
} |
|
if (document.anno.startdate.value>document.anno.enddate.value) { |
|
alert("Starting date is later than ending date"); |
|
return ''; |
|
} |
|
document.anno.action.value="new"; |
document.anno.action.value="new"; |
document.anno.submit(); |
document.anno.submit(); |
} |
} |
Line 172 sub handler {
|
Line 208 sub handler {
|
} |
} |
</script> |
</script> |
</head> |
</head> |
<body bgcolor="#FFFFFF"> |
|
<h1>Announcements</h1> |
|
ENDDOCUMENT |
ENDDOCUMENT |
|
$r->print(&Apache::loncommon::bodytag("Announcements and Calendar")); |
# 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'}) { |
Line 187 ENDDOCUMENT
|
Line 221 ENDDOCUMENT
|
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 = |
|
&Apache::lonhtmlcommon::get_date_from_form('startdate'); |
|
my $enddate = |
|
&Apache::lonhtmlcommon::get_date_from_form('enddate'); |
|
unless ($startdate=~/^\d+$/) { $startdate=time; } |
|
unless ($enddate=~/^\d+$/) { $enddate=$startdate+1; } |
|
if ($startdate>$enddate) { |
|
my $buffer=$startdate; |
|
$startdate=$enddate; |
|
$enddate=$buffer; |
|
} |
&Apache::lonnet::put('calendar',{ |
&Apache::lonnet::put('calendar',{ |
$ENV{'form.startdate'}.'_'.$ENV{'form.enddate'} => |
$startdate.'_'.$enddate => |
$ENV{'form.msg'} },$coursedom,$coursenum); |
$ENV{'form.msg'} },$coursedom,$coursenum); |
} |
} |
# ---------------------------------------------------------------- Remove items |
# ---------------------------------------------------------------- Remove items |
Line 206 ENDDOCUMENT
|
Line 251 ENDDOCUMENT
|
$tomorrowhash{'day'}++; |
$tomorrowhash{'day'}++; |
my $tomorrow=&Apache::loncommon::maketime(%tomorrowhash); |
my $tomorrow=&Apache::loncommon::maketime(%tomorrowhash); |
|
|
$r->print(<<ENDFORM); |
&editfield($r,$today,$tomorrow,''); |
<form name="anno" method="post"> |
|
<input type="hidden" value='' name="action" > |
|
<input type="hidden" value='' name="pres_value" > |
|
<input type="hidden" value='' name="pres_type" > |
|
<input type="hidden" value='' name="pres_marker" > |
|
<input type="hidden" value='$today' name="startdate" > |
|
<input type="hidden" value='$tomorrow' name="enddate" > |
|
<a |
|
href="javascript:pjump('date_start','Starting Date',document.anno.startdate.value,'start','anno.pres','dateset');" |
|
>Set Starting Date</a> |
|
<a |
|
href="javascript:pjump('date_end','Ending Date',document.anno.enddate.value,'end','anno.pres','dateset');" |
|
>Set Ending Date</a><p> |
|
<textarea name="msg" rows="4" cols="60"> |
|
</textarea> |
|
<input type="button" onClick="trysubmit()" value="Post Announcement"><hr> |
|
<input type="button" onClick="removesub()" value="Remove Marked"><hr> |
|
ENDFORM |
|
} |
} |
|
# ----------------------------------------------------- Summarize all calendars |
|
my %allcal=(); |
|
foreach (&Apache::loncommon::findallcourses()) { |
|
%allcal=(%allcal,&readcalendar($_)); |
|
} |
|
|
|
# ------------------------------- Initialize table and forward backward buttons |
my ($pm,$py,$fm,$fy)=($month-1,$year,$month+1,$year); |
my ($pm,$py,$fm,$fy)=($month-1,$year,$month+1,$year); |
if ($pm<1) { ($pm,$py)=(12,$year-1); } |
if ($pm<1) { ($pm,$py)=(12,$year-1); } |
if ($fm>12){ ($fm,$fy)=(1,$year+1); } |
if ($fm>12){ ($fm,$fy)=(1,$year+1); } |
|
|
$r->print('<h1>'.('','January','February','March','April','May', |
$r->print('<h1>'.('','January','February','March','April','May', |
'June','July','August','September','October', |
'June','July','August','September','October', |
'November','December')[$month].' '.$year.'</h1>'. |
'November','December')[$month].' '.$year.'</h1>'); |
|
# Reached the end of times, give up |
|
if (($year<1970) || ($year>2037)) { |
|
$r->print('<h3>No calendar available for this date.</h3>'. |
|
'<a href="/adm/announcements?month='.$todayhash{'month'}. |
|
'&year='.$todayhash{'year'}.'">Current Month</a></body></html>'); |
|
return OK; |
|
} |
|
$r->print( |
'<a href="/adm/announcements?month='.$pm.'&year='.$py.'">Previous Month</a> '. |
'<a href="/adm/announcements?month='.$pm.'&year='.$py.'">Previous Month</a> '. |
'<a href="/adm/announcements?month='.$fm.'&year='.$fy.'">Next Month</a><p>'. |
'<a href="/adm/announcements?month='.$fm.'&year='.$fy.'">Next Month</a>'. |
|
' <a href="/adm/announcements?month='.$todayhash{'month'}. |
|
'&year='.$todayhash{'year'}.'">Current Month</a><p>'. |
'<table border="2" cols="7" rows="5"><tr><th>Sun</th><th>Mon</th>'. |
'<table border="2" cols="7" rows="5"><tr><th>Sun</th><th>Mon</th>'. |
'<th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th>'); |
'<th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr>'); |
|
|
my $tk=&Apache::loncommon::maketime(%firstday); |
my $tk=&Apache::loncommon::maketime(%firstday); |
my $outp; |
my $outp; |
Line 245 ENDFORM
|
Line 290 ENDFORM
|
$r->print('<tr>'); |
$r->print('<tr>'); |
for (my $i=0;$i<$weekday;$i++) { $r->print(&emptycell); } |
for (my $i=0;$i<$weekday;$i++) { $r->print(&emptycell); } |
for (my $i=$weekday;$i<=6;$i++) { |
for (my $i=$weekday;$i<=6;$i++) { |
($tk,$nm,$outp)=&showday($tk,%allcal); |
($tk,$nm,$outp)=&showday($tk,0,%allcal); |
$r->print($outp); |
$r->print($outp); |
} |
} |
$r->print('</tr>'); |
$r->print('</tr>'); |
Line 253 ENDFORM
|
Line 298 ENDFORM
|
for (my $k=0;$k<=3;$k++) { |
for (my $k=0;$k<=3;$k++) { |
$r->print('<tr>'); |
$r->print('<tr>'); |
for (my $i=0;$i<=6;$i++) { |
for (my $i=0;$i<=6;$i++) { |
($tk,$nm,$outp)=&showday($tk,%allcal); |
($tk,$nm,$outp)=&showday($tk,0,%allcal); |
if ($month!=$nm) { $outp=&emptycell; } |
if ($month!=$nm) { $outp=&emptycell; } |
$r->print($outp); |
$r->print($outp); |
} |
} |
$r->print('</tr>'); |
$r->print('</tr>'); |
} |
} |
# ------------------------------------------------------------------- End table |
# ------------------------------------------------------------------- End table |
if ($allowed) { $r->print('</form>'); } |
$r->print('</table>'); |
$r->print('</table><p>'. |
if ($allowed) { $r->print('<input type="button" onClick="removesub()" value="Remove Checked Entries"></form>'); } |
|
$r->print('<p>'. |
'<a href="/adm/announcements?month='.$pm.'&year='.$py.'">Previous Month</a> '. |
'<a href="/adm/announcements?month='.$pm.'&year='.$py.'">Previous Month</a> '. |
'<a href="/adm/announcements?month='.$fm.'&year='.$fy.'">Next Month</a><p>'. |
'<a href="/adm/announcements?month='.$fm.'&year='.$fy.'">Next Month</a>'. |
|
' <a href="/adm/announcements?month='.$todayhash{'month'}. |
|
'&year='.$todayhash{'year'}.'">Current Month</a></p>'. |
'</body></html>'); |
'</body></html>'); |
return OK; |
return OK; |
} |
} |