diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index d3a4c5f71..c9b2cf808 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -55,6 +55,7 @@ - fixed #8982: Deploy package doesn't take back to asset manager - fixed #8956: Not checking for populated variable - fixed #9130: fixed: Rich editor creates root
tag even when set to use
+ - fixed: DataForm times out when exporting large data sets
7.6.3
- improved performance of file uploads
diff --git a/lib/WebGUI/Asset/Wobject/DataForm.pm b/lib/WebGUI/Asset/Wobject/DataForm.pm
index 089d009d7..b978dab46 100644
--- a/lib/WebGUI/Asset/Wobject/DataForm.pm
+++ b/lib/WebGUI/Asset/Wobject/DataForm.pm
@@ -15,10 +15,8 @@ http://www.plainblack.com info@plainblack.com
=cut
use strict;
-use Tie::CPHash;
use Tie::IxHash;
use WebGUI::Form;
-use WebGUI::HTML;
use WebGUI::HTMLForm;
use WebGUI::International;
use WebGUI::Mail::Send;
@@ -26,13 +24,12 @@ use WebGUI::Macro;
use WebGUI::Inbox;
use WebGUI::SQL;
use WebGUI::Asset::Wobject;
-use WebGUI::Utility qw(isIn);
use WebGUI::Pluggable;
use WebGUI::DateTime;
use WebGUI::User;
use WebGUI::Group;
use WebGUI::AssetCollateral::DataForm::Entry;
-use JSON;
+use JSON ();
our @ISA = qw(WebGUI::Asset::Wobject);
@@ -1339,7 +1336,8 @@ sub www_editTabSave {
#-------------------------------------------------------------------
sub www_exportTab {
my $self = shift;
- return $self->session->privilege->insufficient
+ my $session = $self->session;
+ return $session->privilege->insufficient
unless $self->canEdit;
my @exportFields;
for my $field ( map { $self->getFieldConfig($_) } @{$self->getFieldOrder} ) {
@@ -1356,7 +1354,10 @@ sub www_exportTab {
'submissionDate',
@exportFields,
);
- my $outText = $tsv->string;
+
+ $session->http->setFilename($self->get("url").".tab","text/plain");
+ $session->http->sendHeader;
+ $session->output->print($tsv->string, 1);
my $entryIter = $self->entryClass->iterateAll($self);
@@ -1370,10 +1371,9 @@ sub www_exportTab {
$entry->submissionDate->webguiDate,
@{ $entryFields }{@exportFields},
);
- $outText .= $tsv->string;
+ $session->output->print($tsv->string, 1);
}
- $self->session->http->setFilename($self->get("url").".tab","text/plain");
- return $outText;
+ return 'chunked';
}
#-------------------------------------------------------------------