FIX Ensure documents are drag-and-drop reorderable in document sets

This commit is contained in:
Robbie Averill 2017-06-06 16:14:14 +12:00
parent d8f3685601
commit 58ac37a1e8
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'));
}
$field = $fields->fieldByName('Root.Main.PageID');

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
*/