Added internal redirect

(Is there a way to get content_type that wouldn't require File::MMagic?)
Apache2::SubRequest's method lookup_file coused segfault in apache, so I scrapped that and used File::MMagic to to content type determing
Also fixed credit and added a currentPage.rankIsN variable to navigation
This commit is contained in:
Jukka Raimovaara 2006-04-30 13:07:00 +00:00
parent a9c3387cb1
commit 1f78c2b077
8 changed files with 58 additions and 5 deletions

View file

@ -48,9 +48,10 @@
- Added a User form field type.
- Added a symbol next to items in the asset manager to indicate if they have
children or not.
- Added more templating options to the Paginator thanks to Jukka Raimovaara.
- Added the currentPage.rank variable to the nav template thanks to Jukka
Raimovaara.
- Added more templating options to the Paginator. (thanks to Jukka Raimovaara
/ Axxion Oy)
- Added the currentPage.rank and currentPage.rankIsN variable to the nav
template. (thanks to Jukka Raimovaara / Axxion Oy)
- Added a screenshot feature to the matrix.
- Added an option to delete Matrix fields.
- Added an API for retrieving email from POP3 servers.

View file

@ -36,7 +36,7 @@ Contributing Developers..............Peter Beardsley / Appropriate Solutions
Tony Mountifield
Tavis Parker / ParkerOne Consulting
Daniel Quinlan
Jukka Raimovaara
Jukka Raimovaara / Axxion Oy
Alan Ritari / DonorWare
Hal Roberts / Harvard
Steve Simms

View file

@ -237,6 +237,11 @@
"soapHttpHeaderOverride" : 0,
# Enable streaming Image and File assets thru mod_perl process instead of
# simple redirect. WARNING has impact on performance.
"enableStreamingUploads" : "0",
# Specify the list of macros you wish to be processed on each page.
"macros" : {

View file

@ -29,6 +29,7 @@ use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Const -compile => qw(OK DECLINED NOT_FOUND DIR_MAGIC_TYPE);
use Apache2::ServerUtil ();
use File::MMagic;
#-------------------------------------------------------------------
@ -104,6 +105,21 @@ sub contentHandler {
$output = page($session);
}
$session->http->setCookie("wgSession",$session->var->{_var}{sessionId}) unless $session->var->{_var}{sessionId} eq $session->http->getCookies->{"wgSession"};
my $filename = $session->http->getStreamedFile();
# print STDERR "file $filename and setting ".$session->config->get("enableStreamingUploads")."!\n";
if ((defined $filename) && ($session->config->get("enableStreamingUploads") eq "1")) {
#my $subr = $r->lookup_file($filename,$r->output_filters);
my $mm = new File::MMagic;
my $ct = $mm->checktype_filename($filename);
my $oldContentType = $r->content_type($ct);
# print STDERR "contenttype ".$r->content_type()."!\n";
if ($r->sendfile($filename) ) {
return Apache2::Const::OK();
} else {
$r->content_type($oldContentType);
}
}
$session->http->sendHeader();
unless ($session->http->isRedirect()) {
$session->output->print($output);

View file

@ -171,6 +171,7 @@ sub getEditForm {
#-------------------------------------------------------------------
sub getFileUrl {
my $self = shift;
#return $self->get("url");
return $self->getStorageLocation->getUrl($self->get("filename"));
}
@ -373,6 +374,7 @@ sub www_view {
return $self->getContainer->www_view;
}
$self->session->http->setRedirect($self->getFileUrl);
$self->session->http->setStreamedFile($self->getStorageLocation->getPath($self->get("filename")));
return '1';
}

View file

@ -312,6 +312,7 @@ sub www_view {
}
my $storage = $self->getStorageLocation;
$self->session->http->setRedirect($storage->getUrl($self->get("filename")));
$self->session->http->setStreamedFile($storage->getPath($self->get("filename")));
return "1";
}

View file

@ -362,6 +362,7 @@ sub view {
$var->{'currentPage.url'} = $current->getUrl;
$var->{'currentPage.hasChild'} = $current->hasChildren;
$var->{'currentPage.rank'} = $current->getRank;
$var->{'currentPage.rankIs'.$current->getRank} = 1;
my $currentLineage = $current->get("lineage");
my $lineageToSkip = "noskip";
my $absoluteDepthOfLastPage;

View file

@ -101,7 +101,6 @@ sub getMimeType {
return $self->{_http}{mimetype} || "text/html";
}
#-------------------------------------------------------------------
=head2 getStatus ( ) {
@ -117,6 +116,20 @@ sub getStatus {
}
#-------------------------------------------------------------------
=head2 getStreamedFile ( ) {
Returns the location of a file to be streamed thru mod_perl, if one has been set.
=cut
sub getStreamedFile {
my $self = shift;
return $self->{_http}{streamlocation} || undef;
}
#-------------------------------------------------------------------
=head2 isRedirect ( )
@ -377,5 +390,19 @@ sub setStatus {
$self->{_http}{statusDescription} = shift;
}
#-------------------------------------------------------------------
=head2 setStreamedFile ( ) {
Set a file to be streamed thru mod_perl.
=cut
sub setStreamedFile {
my $self = shift;
$self->{_http}{streamlocation} = shift;
}
1;