Skip to content

Commit e6cbcbe

Browse files
authored
Merge pull request #66 from silverstripeltd/pulls/cms6-support
Add support for CMS 6
2 parents 19c71f1 + 1252214 commit e6cbcbe

File tree

13 files changed

+60
-42
lines changed

13 files changed

+60
-42
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ jobs:
1111
uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1
1212
with:
1313
simple_matrix: true
14+
endtoend: false

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ composer.lock
44
/assets
55
/public
66
.phpunit.result.cache
7+
app/

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
"prefer-stable": true,
1414
"require": {
1515
"php": "^8.1",
16-
"dnadesign/silverstripe-elemental": "^5",
17-
"silverstripe/tagfield": "^3"
16+
"dnadesign/silverstripe-elemental": "^6",
17+
"silverstripe/tagfield": "^4"
1818
},
1919
"require-dev": {
20-
"silverstripe/recipe-testing": "^3",
20+
"silverstripe/recipe-testing": "^4",
2121
"squizlabs/php_codesniffer": "^3.0"
2222
},
2323
"extra": {

phpunit.xml.dist

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?xml version="1.0"?>
2-
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="vendor/silverstripe/framework/tests/bootstrap.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
3-
<coverage includeUncoveredFiles="true">
4-
<include>
5-
<directory suffix=".php">src/</directory>
6-
</include>
7-
<exclude>
8-
<directory suffix=".php">tests/php</directory>
9-
</exclude>
10-
</coverage>
11-
<testsuite name="Default">
12-
<directory>tests/php</directory>
13-
</testsuite>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.5/phpunit.xsd">
3+
<testsuite name="Default">
4+
<directory>tests/php</directory>
5+
</testsuite>
6+
<source>
7+
<include>
8+
<directory suffix=".php">src/</directory>
9+
</include>
10+
<exclude>
11+
<directory suffix=".php">tests/php</directory>
12+
</exclude>
13+
</source>
1414
</phpunit>

src/Extension/BaseElementExtension.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
use SilverStripe\Forms\GridField\GridFieldDetailForm;
1717
use SilverStripe\Forms\LiteralField;
1818
use SilverStripe\Forms\ReadonlyField;
19-
use SilverStripe\ORM\ArrayList;
20-
use SilverStripe\ORM\DataExtension;
19+
use SilverStripe\Model\List\ArrayList;
20+
use SilverStripe\Core\Extension;
2121
use SilverStripe\ORM\DB;
2222
use SilverStripe\ORM\FieldType\DBHTMLText;
2323
use SilverStripe\Versioned\Versioned;
2424

25-
class BaseElementExtension extends DataExtension
25+
class BaseElementExtension extends Extension
2626
{
2727
/**
2828
* @config
@@ -54,7 +54,7 @@ public function populateDefaults()
5454
}
5555

5656

57-
public function requireDefaultRecords()
57+
public function onRequireDefaultRecords(): void
5858
{
5959
$update = BaseElement::get()->filter([
6060
'VirtualLookupTitle' => [null, ''],
@@ -179,7 +179,7 @@ public function updateCMSFields(FieldList $fields)
179179

180180
if ($ownerPage = $this->owner->getPage()) {
181181
if ($ownerPage->hasMethod('CMSEditLink')) {
182-
$link = $ownerPage->canEdit() ? $ownerPage->CMSEditLink() : $ownerPage->Link();
182+
$link = $ownerPage->canEdit() ? $ownerPage->getCMSEditLink() : $ownerPage->Link();
183183
} else {
184184
$link = $ownerPage->Link();
185185
}
@@ -344,7 +344,7 @@ public function UsageSummary()
344344
$arr = [];
345345
foreach ($usage as $page) {
346346
$type = ($page->ElementType) ? sprintf("<em> - %s</em>", $page->ElementType) : null;
347-
$arr[] = sprintf("<a href=\"%s\" target=\"blank\">%s</a> %s", $page->CMSEditLink(), $page->Title, $type);
347+
$arr[] = sprintf("<a href=\"%s\" target=\"blank\">%s</a> %s", $page->getCMSEditLink(), $page->Title, $type);
348348
}
349349
$html = DBHTMLText::create('UsageSummary');
350350
$html->setValue(implode('<br>', $arr));

src/Model/ElementVirtual.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class ElementVirtual extends BaseElement
2626
/**
2727
* @var string
2828
*/
29-
private static $description = 'Reused element';
29+
private static $class_description = 'Reused element';
3030

3131
private static $table_name = 'ElementVirtual';
3232

@@ -166,15 +166,13 @@ public function getTitle()
166166

167167
/**
168168
* Override to render template based on LinkedElement
169-
*
170-
* @return string|null HTML
171169
*/
172-
public function forTemplate($holder = true)
170+
public function forTemplate($holder = true): string
173171
{
174172
if ($linked = $this->LinkedElement()) {
175173
return $linked->forTemplate($holder);
176174
}
177-
return null;
175+
return '';
178176
}
179177

180178
protected function provideBlockSchema()

src/Tasks/ResetGloballyEnabledElements.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,20 @@
77
use SilverStripe\Core\ClassInfo;
88
use SilverStripe\Core\Config\Config;
99
use SilverStripe\ORM\DB;
10+
use SilverStripe\PolyExecution\PolyOutput;
11+
use Symfony\Component\Console\Command\Command;
12+
use Symfony\Component\Console\Input\InputInterface;
13+
use Symfony\Component\Console\Input\InputOption;
1014

1115
class ResetGloballyEnabledElements extends BuildTask
1216
{
13-
protected $title = 'Reset Globally Enabled elements';
17+
protected static string $commandName = 'elemental:virtual:reset-globally-enabled';
1418

15-
protected $description = 'Reset individual elements \'AvailableGlobally\' setting via the YAML config';
19+
protected string $title = 'Reset Globally Enabled elements';
1620

17-
public function run($request)
21+
protected static string $description = "Reset individual elements 'AvailableGlobally' setting via the YAML config";
22+
23+
protected function execute(InputInterface $input, PolyOutput $output): int
1824
{
1925
// get all classes of BaseElement
2026
$elementClasses = ClassInfo::subclassesFor(BaseElement::class);
@@ -35,5 +41,7 @@ public function run($request)
3541
DB::query("UPDATE Element_Versions SET AvailableGlobally = $isGlobal WHERE RecordID IN ('$idStr')");
3642
}
3743
}
44+
45+
return Command::SUCCESS;
3846
}
3947
}

tests/Src/TestElement.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@
88

99
class TestElement extends BaseElement implements TestOnly
1010
{
11-
private static $table_name = 'TestElement';
11+
private static string $table_name = 'VTestElement';
1212

13-
private static $db = [
13+
private static array $db = [
1414
'TestValue' => 'Text',
1515
];
1616

17-
private static $controller_class = TestElementController::class;
18-
19-
public function getType()
17+
public function getType(): string
2018
{
2119
return 'A test element';
2220
}
@@ -29,4 +27,11 @@ public function canView($member = null)
2927
}
3028
return parent::canView($member);
3129
}
30+
31+
public function getRenderTemplates($suffix = '')
32+
{
33+
return [
34+
__DIR__ . '/TestElement.ss'
35+
];
36+
}
3237
}

tests/Src/TestElement.ss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$Title ($TestValue)

tests/Src/TestPage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77

88
class TestPage extends SiteTree implements TestOnly
99
{
10-
private static $table_name = 'TestElementalPage';
10+
private static $table_name = 'VTestElementalPage';
1111
}

0 commit comments

Comments
 (0)