version 1.7, 2005/11/22 16:16:53
|
version 1.15, 2006/04/13 17:57:17
|
Line 36 use Apache::lontexconvert;
|
Line 36 use Apache::lontexconvert;
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
|
|
|
my $feedcounter; |
|
|
sub filterfeedname { |
sub filterfeedname { |
my $filename=shift; |
my $filename=shift; |
$filename=~s/(\_rss\.html|\.rss)$//; |
$filename=~s/(\_rss\.html|\.rss)$//; |
$filename=~s/\W//g; |
$filename=~s/\W//g; |
|
$filename=~s/\_rssfeed$//; |
|
$filename=~s/^nohist\_//; |
return $filename; |
return $filename; |
} |
} |
|
|
Line 74 sub renamefeed {
|
Line 78 sub renamefeed {
|
} |
} |
|
|
sub advertisefeeds { |
sub advertisefeeds { |
return; |
|
my ($uname,$udom,$edit)=@_; |
my ($uname,$udom,$edit)=@_; |
my $feeds=''; |
my $feeds=''; |
my %feednames=&Apache::lonnet::dump('nohist_all_rss_feeds',$udom,$uname); |
my %feednames=&Apache::lonnet::dump('nohist_all_rss_feeds',$udom,$uname); |
Line 84 sub advertisefeeds {
|
Line 87 sub advertisefeeds {
|
} |
} |
foreach my $feed (sort(keys(%feednames))) { |
foreach my $feed (sort(keys(%feednames))) { |
if ($feed!~/^error\:/) { |
if ($feed!~/^error\:/) { |
my $feedurl='feed://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $feedurl='http://'.$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'.$feed.'.rss'; |
my $htmlurl='http://'.$ENV{'HTTP_HOST'}.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
my $htmlurl='http://'.$ENV{'HTTP_HOST'}.'/'.$mode.'/'.$udom.'/'.$uname.'/'.$feed.'_rss.html'; |
$feeds.='<li>'.$feednames{$feed}. |
$feeds.='<li>'.$feednames{$feed}. |
'<br />'.($edit?&mt('Edit'):'HTML').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a>'. |
'<br />'.($edit?&mt('Edit'):'HTML').': <a href="'.$htmlurl.'"><tt>'.$htmlurl.'</tt></a>'. |
Line 98 sub advertisefeeds {
|
Line 101 sub advertisefeeds {
|
} |
} |
} |
} |
|
|
{ |
sub rss_link { |
my $feedcounter; |
my ($url) = @_; |
sub addentry { |
return qq|<link rel="alternate" type="application/rss+xml" title="Course Announcements" href="$url" />|; |
$feedcounter++; |
} |
my $id=time.'00000'.$$.'00000'.$feedcounter; |
|
return &editentry($id,@_); |
sub addentry { |
} |
$feedcounter++; |
|
my $id=time.'00000'.$$.'00000'.$feedcounter; |
|
return &editentry($id,@_); |
} |
} |
|
|
sub editentry { |
sub editentry { |
my ($id,$uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enclength,$enctype)=@_; |
my ($id,$uname,$udom,$filename,$title,$description,$url,$status,$encurl,$enclength,$enctype)=@_; |
|
if ($status eq 'deleted') { |
|
return &changestatus($id,$uname,$udom,$filename,$status); |
|
} |
my $feedname=&feedname($filename); |
my $feedname=&feedname($filename); |
&Apache::lonnet::put('nohist_all_rss_feeds', |
&Apache::lonnet::put('nohist_all_rss_feeds', |
{ &filterfeedname($filename) => &displayfeedname($filename,$uname,$udom) }, |
{ &filterfeedname($filename) => &displayfeedname($filename,$uname,$udom) }, |
Line 139 sub changestatus {
|
Line 147 sub changestatus {
|
} |
} |
} |
} |
|
|
|
sub changed_js { |
|
return <<ENDSCRIPT; |
|
<script type="text/javascript"> |
|
function changed(tform,id) { |
|
tform.elements[id+"_modified"].checked=true; |
|
} |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my ($r) = @_; |
|
|
my $edit=0; |
my $edit=0; |
my $html=0; |
my $html=0; |
Line 166 sub handler {
|
Line 184 sub handler {
|
my $feedname=&feedname($filename); |
my $feedname=&feedname($filename); |
my $displayfeedname=&displayfeedname($filename,$uname,$udom); |
my $displayfeedname=&displayfeedname($filename,$uname,$udom); |
if ($html) { |
if ($html) { |
$r->print(&Apache::lonxml::xmlbegin().&Apache::loncommon::bodytag |
$r->print(&Apache::loncommon::start_page($displayfeedname,undef, |
($displayfeedname,'','','',$udom, |
{'domain' => $udom, |
$env{'form.register'}).<<ENDSCRIPT); |
'force_register' => |
<script> |
$env{'form.register'}}). |
function changed(tform,id) { |
&changed_js()); |
tform.elements[id+"_modified"].checked=true; |
|
} |
|
</script> |
|
ENDSCRIPT |
|
} else { |
} else { |
$r->print("<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1'>\n<channel>". |
$r->print("<rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1'>\n<channel>". |
"\n<link>http://".$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'. |
"\n<link>http://".$ENV{'HTTP_HOST'}.'/public/'.$udom.'/'.$uname.'/'. |
Line 183 ENDSCRIPT
|
Line 197 ENDSCRIPT
|
&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System'). |
&mt('An RSS Feed provided by the LON-CAPA Learning Content Management System'). |
'</description>'); |
'</description>'); |
} |
} |
|
# Do we have stuff to store? |
|
if ($edit) { |
|
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
|
foreach my $entry (sort(keys(%newsfeed)),$env{'form.newid'}.'_status') { |
|
if ($entry=~/^(\d+)\_status$/) { |
|
my $id=$1; |
|
if ($env{'form.'.$id.'_modified'}) { |
|
&editentry($id,$uname,$udom,$feedname, |
|
$env{'form.'.$id.'_title'}, |
|
$env{'form.'.$id.'_description'}, |
|
$env{'form.'.$id.'_url'}, |
|
$env{'form.'.$id.'_status'}); |
|
} |
|
} |
|
} |
|
} |
|
$feedcounter++; |
|
my $newid=time.'00000'.$$.'00000'.$feedcounter; |
# Is this user for real? |
# Is this user for real? |
my $homeserver=&Apache::lonnet::homeserver($uname,$udom); |
my $homeserver=&Apache::lonnet::homeserver($uname,$udom); |
if ($html) { |
if ($html) { |
Line 213 ENDSCRIPT
|
Line 245 ENDSCRIPT
|
} |
} |
# Get feed items |
# Get feed items |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
my %newsfeed=&Apache::lonnet::dump($feedname,$udom,$uname); |
foreach my $entry (sort(keys(%newsfeed))) { |
foreach my $entry (sort(keys(%newsfeed)),$newid.'_status') { |
if ($entry=~/^(\d+)\_status$/) { |
if ($entry=~/^(\d+)\_status$/) { |
my $id=$1; |
my $id=$1; |
if ($edit) { |
if ($edit) { |
Line 223 ENDSCRIPT
|
Line 255 ENDSCRIPT
|
'delete' => 'delete', |
'delete' => 'delete', |
'store' => 'Store changes'); |
'store' => 'Store changes'); |
my %status=(); |
my %status=(); |
|
unless ($newsfeed{$id.'_status'}) { $newsfeed{$id.'_status'}='public'; } |
$status{$newsfeed{$id.'_status'}}='checked="checked"'; |
$status{$newsfeed{$id.'_status'}}='checked="checked"'; |
$r->print(<<ENDEDIT); |
$r->print(<<ENDEDIT); |
<li> |
<li> |
<label><input name='$id\_modified' type='checkbox' /> $lt{'store'}</label> |
<label><input name='$id\_modified' type='checkbox' value="modified" /> $lt{'store'}</label> |
|
|
<label><input name='$id\_status' type="radio" value="public" $status{'public'} onClick="changed(this.form,'$id');" /> $lt{'public'}</label> |
<label><input name='$id\_status' type="radio" value="public" $status{'public'} onClick="changed(this.form,'$id');" /> $lt{'public'}</label> |
|
|
Line 234 ENDSCRIPT
|
Line 267 ENDSCRIPT
|
|
|
<label><input name='$id\_status' type="radio" value="hidden" $status{'hidden'} onClick="changed(this.form,'$id');" /> $lt{'hidden'}</label> |
<label><input name='$id\_status' type="radio" value="hidden" $status{'hidden'} onClick="changed(this.form,'$id');" /> $lt{'hidden'}</label> |
|
|
<label><input name='$id\_status' type="radio" value="delete" onClick="changed(this.form,'$id');" /> $lt{'delete'}</label> |
<label><input name='$id\_status' type="radio" value="deleted" onClick="changed(this.form,'$id');" /> $lt{'delete'}</label> |
<br /> |
<br /> |
<input name='$id\_title' type='text' size='80' value='$newsfeed{$id.'_title'}' onChange="changed(this.form,'$id');" /><br /> |
<input name='$id\_title' type='text' size='80' value='$newsfeed{$id.'_title'}' onChange="changed(this.form,'$id');" /><br /> |
<textarea name='$id\_description' rows="6" cols="80" onChange="changed(this.form,'$id');">$newsfeed{$id.'_description'}</textarea><br /> |
<textarea name='$id\_description' rows="6" cols="80" onChange="changed(this.form,'$id');">$newsfeed{$id.'_description'}</textarea><br /> |
Line 265 ENDEDIT
|
Line 298 ENDEDIT
|
} |
} |
} |
} |
} |
} |
$r->print("\n".($html?'</ul>'.($edit?'<input type="submit" value="'.&mt('Store Marked Changes').'" /></form>':'').'</body></html>':'</channel></rss>'."\n")); |
$r->print("\n".($html?'</ul>'.($edit?'<input type="hidden" name="newid" value="'.$newid.'"/><input type="submit" value="'.&mt('Store Marked Changes').'" /></form>':'').&Apache::loncommon::end_page():'</channel></rss>'."\n")); |
return OK; |
return OK; |
} |
} |
1; |
1; |