From 20af30ed988f08c08855111fe0c1ebd8d1797a5e Mon Sep 17 00:00:00 2001 From: Stephen McMahon Date: Fri, 17 Oct 2014 14:22:30 +1100 Subject: [PATCH] FIX GridFieldExportButton exporting only Paginated list when using ArrayList as source --- forms/gridfield/GridFieldExportButton.php | 5 ++++- .../gridfield/GridFieldExportButtonTest.php | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/forms/gridfield/GridFieldExportButton.php b/forms/gridfield/GridFieldExportButton.php index 08a90060c..464a3366d 100644 --- a/forms/gridfield/GridFieldExportButton.php +++ b/forms/gridfield/GridFieldExportButton.php @@ -118,7 +118,10 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP $fileData .= "\"" . implode("\"{$separator}\"", array_values($headers)) . "\""; $fileData .= "\n"; } - + + //Remove GridFieldPaginator as we're going to export the entire list. + $gridField->getConfig()->removeComponentsByType('GridFieldPaginator'); + $items = $gridField->getManipulatedList(); // @todo should GridFieldComponents change behaviour based on whether others are available in the config? diff --git a/tests/forms/gridfield/GridFieldExportButtonTest.php b/tests/forms/gridfield/GridFieldExportButtonTest.php index 59d2c0848..d46638655 100644 --- a/tests/forms/gridfield/GridFieldExportButtonTest.php +++ b/tests/forms/gridfield/GridFieldExportButtonTest.php @@ -73,6 +73,27 @@ class GridFieldExportButtonTest extends SapphireTest { $button->generateExportFileData($this->gridField) ); } + + public function testArrayListInput() { + $button = new GridFieldExportButton(); + $this->gridField->getConfig()->addComponent(new GridFieldPaginator()); + + //Create an ArrayList 1 greater the Paginator's default 15 rows + $arrayList = new ArrayList(); + for ($i = 1; $i <= 16; $i++) { + $dataobject = new DataObject( + array ( 'ID' => $i ) + ); + $arrayList->add($dataobject); + } + $this->gridField->setList($arrayList); + + $this->assertEquals( + "\"ID\"\n\"1\"\n\"2\"\n\"3\"\n\"4\"\n\"5\"\n\"6\"\n\"7\"\n\"8\"\n" + ."\"9\"\n\"10\"\n\"11\"\n\"12\"\n\"13\"\n\"14\"\n\"15\"\n\"16\"\n", + $button->generateExportFileData($this->gridField) + ); + } } class GridFieldExportButtonTest_Team extends DataObject implements TestOnly {