mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge branch '3.3' into 3.4
This commit is contained in:
commit
cf247534d5
@ -172,7 +172,8 @@ We call `setDisplayFields()` directly on the component responsible for their ren
|
||||
Adding a `GridField` to a page type is a popular way to manage data,
|
||||
but not the only one. If your data requires a dedicated interface
|
||||
with more sophisticated search and management logic, consider
|
||||
using the `[ModelAdmin](reference/modeladmin)` interface instead.
|
||||
using the [ModelAdmin](/developer_guides/customising_the_admin_interface/modeladmin)
|
||||
interface instead.
|
||||
</div>
|
||||
|
||||
![tutorial:tutorial5_project_creation.jpg](../_images/tutorial5_project_creation.jpg)
|
||||
|
@ -289,7 +289,8 @@ class Hierarchy extends DataExtension {
|
||||
foreach($children as $child) {
|
||||
$markingMatches = $this->markingFilterMatches($child);
|
||||
if($markingMatches) {
|
||||
if($child->$numChildrenMethod()) {
|
||||
// Mark a child node as unexpanded if it has children and has not already been expanded
|
||||
if($child->$numChildrenMethod() && !$child->isExpanded()) {
|
||||
$child->markUnexpanded();
|
||||
} else {
|
||||
$child->markExpanded();
|
||||
|
@ -59,12 +59,12 @@ class HierarchyTest extends SapphireTest {
|
||||
// Obj 3 has been deleted; let's bring it back from the grave
|
||||
$obj3 = Versioned::get_including_deleted("HierarchyTest_Object", "\"Title\" = 'Obj 3'")->First();
|
||||
|
||||
// Check that both obj 3 children are returned
|
||||
$this->assertEquals(array("Obj 3a", "Obj 3b", "Obj 3c"),
|
||||
// Check that all obj 3 children are returned
|
||||
$this->assertEquals(array("Obj 3a", "Obj 3b", "Obj 3c", "Obj 3d"),
|
||||
$obj3->AllHistoricalChildren()->column('Title'));
|
||||
|
||||
// Check numHistoricalChildren
|
||||
$this->assertEquals(3, $obj3->numHistoricalChildren());
|
||||
$this->assertEquals(4, $obj3->numHistoricalChildren());
|
||||
|
||||
}
|
||||
|
||||
@ -94,11 +94,11 @@ class HierarchyTest extends SapphireTest {
|
||||
public function testNumChildren() {
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj1')->numChildren(), 0);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj2')->numChildren(), 2);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj3')->numChildren(), 3);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj3')->numChildren(), 4);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj2a')->numChildren(), 2);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj2b')->numChildren(), 0);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj3a')->numChildren(), 2);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj3b')->numChildren(), 0);
|
||||
$this->assertEquals($this->objFromFixture('HierarchyTest_Object', 'obj3d')->numChildren(), 0);
|
||||
|
||||
$obj1 = $this->objFromFixture('HierarchyTest_Object', 'obj1');
|
||||
$this->assertEquals($obj1->numChildren(), 0);
|
||||
@ -180,6 +180,53 @@ class HierarchyTest extends SapphireTest {
|
||||
$this->assertEquals('Obj 2 » Obj 2a » Obj 2aa', $obj2aa->getBreadcrumbs());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Hierarchy::markChildren()
|
||||
*/
|
||||
public function testMarkChildrenDoesntUnmarkPreviouslyMarked() {
|
||||
$obj3 = $this->objFromFixture('HierarchyTest_Object', 'obj3');
|
||||
$obj3aa = $this->objFromFixture('HierarchyTest_Object', 'obj3aa');
|
||||
$obj3ba = $this->objFromFixture('HierarchyTest_Object', 'obj3ba');
|
||||
$obj3ca = $this->objFromFixture('HierarchyTest_Object', 'obj3ca');
|
||||
|
||||
$obj3->markPartialTree();
|
||||
$obj3->markToExpose($obj3aa);
|
||||
$obj3->markToExpose($obj3ba);
|
||||
$obj3->markToExpose($obj3ca);
|
||||
|
||||
$expected = <<<EOT
|
||||
<ul>
|
||||
<li>Obj 3a
|
||||
<ul>
|
||||
<li>Obj 3aa
|
||||
</li>
|
||||
<li>Obj 3ab
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Obj 3b
|
||||
<ul>
|
||||
<li>Obj 3ba
|
||||
</li>
|
||||
<li>Obj 3bb
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Obj 3c
|
||||
<ul>
|
||||
<li>Obj 3c
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Obj 3d
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
EOT;
|
||||
|
||||
$this->assertSame($expected, $obj3->getChildrenAsUL());
|
||||
}
|
||||
|
||||
public function testGetChildrenAsUL() {
|
||||
$obj1 = $this->objFromFixture('HierarchyTest_Object', 'obj1');
|
||||
$obj2 = $this->objFromFixture('HierarchyTest_Object', 'obj2');
|
||||
@ -539,6 +586,8 @@ class HierarchyTest_Object extends DataObject implements TestOnly {
|
||||
"Versioned('Stage', 'Live')",
|
||||
);
|
||||
|
||||
private static $default_sort = 'Title ASC';
|
||||
|
||||
public function cmstreeclasses() {
|
||||
return $this->markingClasses();
|
||||
}
|
||||
|
@ -20,6 +20,9 @@ HierarchyTest_Object:
|
||||
obj3c:
|
||||
Parent: =>HierarchyTest_Object.obj3
|
||||
Title: Obj 3c
|
||||
obj3d:
|
||||
Parent: =>HierarchyTest_Object.obj3
|
||||
Title: Obj 3d
|
||||
obj2aa:
|
||||
Parent: =>HierarchyTest_Object.obj2a
|
||||
Title: Obj 2aa
|
||||
@ -32,3 +35,12 @@ HierarchyTest_Object:
|
||||
obj3ab:
|
||||
Parent: =>HierarchyTest_Object.obj3a
|
||||
Title: Obj 3ab
|
||||
obj3ba:
|
||||
Parent: =>HierarchyTest_Object.obj3b
|
||||
Title: Obj 3ba
|
||||
obj3bb:
|
||||
Parent: =>HierarchyTest_Object.obj3b
|
||||
Title: Obj 3bb
|
||||
obj3ca:
|
||||
Parent: =>HierarchyTest_Object.obj3c
|
||||
Title: Obj 3c
|
Loading…
Reference in New Issue
Block a user