diff --git a/lib/WebGUI/AssetExportHtml.pm b/lib/WebGUI/AssetExportHtml.pm index b582452ec..6257c197d 100644 --- a/lib/WebGUI/AssetExportHtml.pm +++ b/lib/WebGUI/AssetExportHtml.pm @@ -16,6 +16,7 @@ package WebGUI::Asset; use strict; use File::Path; +use FileHandle; =head1 NAME @@ -67,46 +68,6 @@ sub checkExportPath { } -#------------------------------------------------------------------- - -=head2 exportAsHtml ( hashref ) - -Executes the export and returns html content. - -=head3 params - -A hashref containing one of the following properties: - -=head4 stripHtml - -A boolean indicating whether the resulting output should be stripped of HTML tags. - -=head4 userId - -The unique id of the user to become when exporting this page. Defaults to '1' (Visitor). - -=cut - -sub exportAsHtml { - my $self = shift; - my $params = shift; - my $userId = $params->{userId} || 1; - my $stripHtml = $params->{stripHtml} || undef; - - # Change the stuff we need to change to do the export - my $session = WebGUI::Session->open($self->session->config->getWebguiRoot, $self->session->config->getFilename); - $session->user({userId=>$userId}) unless ($userId eq $self->session->user->userId); - - # Generate the page - my $content = $self->www_view; - if($stripHtml) { - $content = WebGUI::HTML::html2text($content); - } - - return $content; -} - - #------------------------------------------------------------------- =head2 www_export @@ -144,18 +105,6 @@ sub www_export { -name=>"index", -value=>"index.html" ); - $f->text( - -label=>$i18n->get('Extras URL'), - -hoverHelp=>$i18n->get('Extras URL description'), - -name=>"extrasURL", - -value=>$self->session->config->get("extrasURL") - ); - $f->text( - -label=>$i18n->get('Uploads URL'), - -hoverHelp=>$i18n->get('Uploads URL description'), - -name=>"uploadsURL", - -value=>$self->session->config->get("uploadsURL") - ); $f->submit; $self->getAdminConsole->render($self->checkExportPath.$f->print,$i18n->get('Export Page')); } @@ -177,8 +126,6 @@ sub www_exportStatus { $iframeUrl = $self->session->url->append($iframeUrl, 'index='.$self->session->form->process("index")); $iframeUrl = $self->session->url->append($iframeUrl, 'depth='.$self->session->form->process("depth")); $iframeUrl = $self->session->url->append($iframeUrl, 'userId='.$self->session->form->process("userId")); - $iframeUrl = $self->session->url->append($iframeUrl, 'extrasURL='.$self->session->form->process("extrasURL")); - $iframeUrl = $self->session->url->append($iframeUrl, 'uploadsURL='.$self->session->form->process("uploadsURL")); my $output = ''; $self->getAdminConsole->render($output,$i18n->get('Page Export Status'),"Asset"); } @@ -205,10 +152,12 @@ sub www_exportGenerate { } my $i18n = WebGUI::International->new($self->session, 'Asset'); my $userId = $self->session->form->process("userId"); - my $extrasURL = $self->session->form->process("extrasURL"); - my $uploadsURL = $self->session->form->process("uploadsURL"); my $index = $self->session->form->process("index"); - my $assets = $self->getLineage(["self","descendants"],{returnObjects=>1,endingLineageLength=>$self->getLineageLength+$self->session->form->process("depth")}); + # Change the stuff we need to change to do the export + my $newSession = WebGUI::Session->open($self->session->config->getWebguiRoot, $self->session->config->getFilename); + my $newSelf = WebGUI::Asset->new($newSession, $self->getId, $self->get("className"), $self->get("revisionDate")); + my $assets = $newSelf->getLineage(["self","descendants"],{returnObjects=>1,endingLineageLength=>$newSelf->getLineageLength+$self->session->form->process("depth")}); + $newSession->user({userId=>$userId}); foreach my $asset (@{$assets}) { my $url = $asset->get("url"); $self->session->output->printf( $i18n->get('exporting page'), $url); @@ -234,22 +183,28 @@ sub www_exportGenerate { $path = $self->session->config->get("exportPath") . "/" . $path; eval { mkpath($path) }; if($@) { - $self->session->output->printf($i18n->get('could not create path'), $path, $@); + $self->session->output->print(printf($i18n->get('could not create path'), $path, $@), 1); return; } } $path .= "/".$filename; - eval { open(FILE, "> $path") or die "$!" }; + my $file = eval { FileHandle->new(">".$path) or die "$!" }; if ($@) { - $self->session->output->printf($i18n->get('could not open path'), $path, $@); + $self->session->output->print(printf($i18n->get('could not open path'), $path, $@),1); return; } else { - print FILE $asset->exportAsHtml({userId=>$userId,extrasUrl=>$extrasURL,uploadsUrl=>$uploadsURL}); - close(FILE); + $newSession->output->setHandle($file); + my $content = $asset->www_view; + unless ($content eq "chunked") { + $newSession->output->print($content); + } + $file->close; } $self->session->output->print($i18n->get('done')); } - $self->session->output->printf($i18n->get('export information'), scalar(@{$assets}), ($self->session->datetime->time()-$startTime)); + $newSession->var->end; + $newSession->close; + $self->session->output->print(printf($i18n->get('export information'), scalar(@{$assets}), ($self->session->datetime->time()-$startTime)),1); $self->session->output->print(''.$i18n->get(493,'WebGUI').''); return; } diff --git a/lib/WebGUI/Session/Output.pm b/lib/WebGUI/Session/Output.pm index f082b3194..4ae878c07 100644 --- a/lib/WebGUI/Session/Output.pm +++ b/lib/WebGUI/Session/Output.pm @@ -50,21 +50,6 @@ sub DESTROY { } -#------------------------------------------------------------------- - -=head2 goodNightAndGoodLuck ( ) - -This should be called at the end of all possible output HTML output. It handles printing out debug and other maintenance tasks. - -=cut - -sub goodNightAndGoodLuck { - my $self = shift; - if ($self->session->errorHandler->canShowDebug()) { - print $self->session->errorHandler->showDebug(); - } -} - #------------------------------------------------------------------- =head2 new ( session ) @@ -104,7 +89,11 @@ sub print { my $content = shift; my $skipMacros = shift; WebGUI::Macro::process($self->session, \$content) unless $skipMacros; - print $content; + if (exists $self->{_handle}) { + print $self->{_handle}; + } else { + print $content; + } } #------------------------------------------------------------------- @@ -120,6 +109,23 @@ sub session { return $self->{_session}; } +#------------------------------------------------------------------- + +=head2 setHandle ( handle ) + +Sets a handle to print the content to. If we're running in command line mode, WebGUI assumes we're printing to standard out, and if we were called through mod_perl it assumes we're printing to that. + +=head3 handle + +An open FILE handle that WebGUI can print to. + +=cut + +sub setHandle { + my $self = shift; + my $handle = shift; + $self->{_handle} = $handle; +} 1; diff --git a/sbin/generateContent.pl b/sbin/generateContent.pl index 7946cc2ad..f9dbc66a6 100644 --- a/sbin/generateContent.pl +++ b/sbin/generateContent.pl @@ -17,14 +17,15 @@ BEGIN { } use DBI; +use FileHandle; use Getopt::Long; use strict qw(subs vars); -use WebGUI; use WebGUI::Session; +use WebGUI::Asset; $|=1; -my ($configFile, $assetId, $userId, $styleId, $toFile, $stripHtml, $help, $relativeUrls); +my ($configFile, $assetId, $userId, $styleId, $toFile, $help); $userId = 1; my $url = ""; @@ -33,9 +34,8 @@ GetOptions( 'assetId:s'=>\$assetId, 'userId:s'=>\$userId, 'toFile:s'=>\$toFile, - 'stripHtml'=>\$stripHtml, 'help'=>\$help, - 'relativeUrls'=>\$relativeUrls, + 'styleId:s'=>\$styleId, 'url=s'=>\$url ); @@ -54,12 +54,6 @@ Options: --help Displays this message. - --stripHtml A flag indicating that WebGUI should - strip all the HTML from the document and - output only text. NOTE: The resulting - text may have formatting problems as a - result. - --styleId Set an alternate style for the page. Defaults to asset's default style. @@ -77,8 +71,10 @@ STOP # Open WebGUI session my $session = WebGUI::Session->open($webguiRoot,$configFile); +$session->user({userId=>$userId}) if (defined $userId); +$session->scratch->set("personalStyleId", $styleId) if (defined $styleId); -my $asset = ""; +my $asset = undef; if ($url) { $asset = WebGUI::Asset->newByUrl($session,$url); @@ -87,16 +83,17 @@ if ($url) { } if (defined $asset) { - #$asset->{_properties}{styleTemplateId} = $styleId if ($styleId); - #my $content = $asset->exportAsHtml({stripHtml => $stripHtml}); - my $content = $asset->www_view; + my $file = undef; if ($toFile) { - open (TOFILE, ">$toFile") or die "Can't open file $toFile for writing. $!"; - print TOFILE $content; - close (TOFILE); - } else { - print $content; + $file = FileHandle->new(">$toFile") or die "Can't open file $toFile for writing. $!"; + $session->output->setHandle($file); } + my $content = $asset->www_view; + unless ($content eq "chunked") { + $session->output->print($content); + $session->output->setHandle(undef); + } + $file->close if (defined $file); } else { print "Asset not defined!!\n"; }