Merge pull request #159 from creative-commoners/pulls/2.0/fix-orderable-documents

FIX Ensure documents are drag-and-drop reorderable in document sets
This commit is contained in:
sachajudd 2017-06-06 16:47:03 +12:00 committed by GitHub
commit 84c7233b79
3 changed files with 25 additions and 7 deletions

View File

@ -29,6 +29,7 @@ class DMSDocumentSet extends DataObject
// Flag indicating if a document was added directly to a set - in which case it is set - or added
// via the query-builder.
'ManuallyAdded' => 'Boolean(1)',
'DocumentSort' => 'Int'
),
);
@ -87,6 +88,8 @@ class DMSDocumentSet extends DataObject
'Title'
);
} else {
$fields->removeByName('DocumentSetSort');
// Document listing
$gridFieldConfig = GridFieldConfig::create()
->addComponents(
@ -109,12 +112,7 @@ class DMSDocumentSet extends DataObject
$gridFieldConfig->addComponent($paginatorComponent);
if (class_exists('GridFieldSortableRows')) {
$sortableComponent = new GridFieldSortableRows('DocumentSort');
// setUsePagination method removed from newer version of SortableGridField.
if (method_exists($sortableComponent, 'setUsePagination')) {
$sortableComponent->setUsePagination(false)->setForceRedraw(true);
}
$gridFieldConfig->addComponent($sortableComponent);
$gridFieldConfig->addComponent(new GridFieldSortableRows('DocumentSort'));
}
// Don't show which page this is if we're already editing within a page context

View File

@ -4,7 +4,7 @@
<h3>$Title</h3>
<% end_if %>
<% loop $getDocuments %>
<% loop $getDocuments.Sort(DocumentSort) %>
<% include Document %>
<% end_loop %>
</div>

View File

@ -173,6 +173,26 @@ class DMSDocumentSetTest extends SapphireTest
$this->assertSame('unit-test', $field->Value());
}
/**
* Ensure that if the module is available, the orderable rows GridField component is added
*/
public function testDocumentsAreOrderable()
{
if (!class_exists('GridFieldSortableRows')) {
$this->markTestSkipped('Test requires undefinedoffset/sortablegridfield installed.');
}
$fields = $this->objFromFixture('DMSDocumentSet', 'ds1')->getCMSFields();
$gridField = $fields->fieldByName('Root.Main.Documents');
$this->assertInstanceOf('GridField', $gridField);
$this->assertInstanceOf(
'GridFieldSortableRows',
$gridField->getConfig()->getComponentByType('GridFieldSortableRows')
);
}
/**
* Test that extra documents are added after write
*/