-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0343c4c
commit ecfab9d
Showing
25 changed files
with
637 additions
and
13 deletions.
There are no files selected for viewing
79 changes: 79 additions & 0 deletions
79
Content/Application/ContentDataMapper/DataMapper/WebspaceDataMapper.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/* | ||
* This file is part of Sulu. | ||
* | ||
* (c) Sulu GmbH | ||
* | ||
* This source file is subject to the MIT license that is bundled | ||
* with this source code in the file LICENSE. | ||
*/ | ||
|
||
namespace Sulu\Bundle\ContentBundle\Content\Application\ContentDataMapper\DataMapper; | ||
|
||
use Sulu\Bundle\ContentBundle\Content\Domain\Model\DimensionContentInterface; | ||
use Sulu\Bundle\ContentBundle\Content\Domain\Model\WebspaceInterface; | ||
use Sulu\Component\Webspace\Manager\WebspaceManagerInterface; | ||
|
||
class WebspaceDataMapper implements DataMapperInterface | ||
{ | ||
/** | ||
* @var WebspaceManagerInterface | ||
*/ | ||
private $webspaceManager; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
private $defaultWebspaceKey; | ||
|
||
public function __construct(WebspaceManagerInterface $webspaceManager) | ||
{ | ||
$this->webspaceManager = $webspaceManager; | ||
} | ||
|
||
public function map( | ||
DimensionContentInterface $unlocalizedDimensionContent, | ||
DimensionContentInterface $localizedDimensionContent, | ||
array $data | ||
): void { | ||
if (!$localizedDimensionContent instanceof WebspaceInterface) { | ||
return; | ||
} | ||
|
||
$this->setWebspaceData($localizedDimensionContent, $data); | ||
} | ||
|
||
/** | ||
* @param mixed[] $data | ||
*/ | ||
private function setWebspaceData(WebspaceInterface $dimensionContent, array $data): void | ||
{ | ||
// TODO allow to configure another webspace with `<tag name="sulu_content.default_main_webspace" value="example" />` | ||
// on the template itself which will be injected with ["type" => ["template-key" => "webspace-key"]] into this service. | ||
if (\array_key_exists('mainWebspace', $data)) { | ||
$dimensionContent->setMainWebspace($data['mainWebspace']); | ||
} | ||
|
||
if (!$dimensionContent->getMainWebspace()) { | ||
// if no main webspace is yet set a default webspace will be set | ||
$dimensionContent->setMainWebspace($this->getDefaultWebspaceKey()); | ||
} | ||
} | ||
|
||
private function getDefaultWebspaceKey(): ?string | ||
{ | ||
if (!$this->defaultWebspaceKey) { | ||
$webspaces = $this->webspaceManager->getWebspaceCollection()->getWebspaces(); | ||
$webspace = \reset($webspaces); | ||
|
||
if ($webspace) { | ||
$this->defaultWebspaceKey = $webspace->getKey(); | ||
} | ||
} | ||
|
||
return $this->defaultWebspaceKey; | ||
} | ||
} |
34 changes: 34 additions & 0 deletions
34
Content/Application/ContentMerger/Merger/WebspaceMerger.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/* | ||
* This file is part of Sulu. | ||
* | ||
* (c) Sulu GmbH | ||
* | ||
* This source file is subject to the MIT license that is bundled | ||
* with this source code in the file LICENSE. | ||
*/ | ||
|
||
namespace Sulu\Bundle\ContentBundle\Content\Application\ContentMerger\Merger; | ||
|
||
use Sulu\Bundle\ContentBundle\Content\Domain\Model\WebspaceInterface; | ||
|
||
class WebspaceMerger implements MergerInterface | ||
{ | ||
public function merge(object $targetObject, object $sourceObject): void | ||
{ | ||
if (!$targetObject instanceof WebspaceInterface) { | ||
return; | ||
} | ||
|
||
if (!$sourceObject instanceof WebspaceInterface) { | ||
return; | ||
} | ||
|
||
if ($mainWebspace = $sourceObject->getMainWebspace()) { | ||
$targetObject->setMainWebspace($mainWebspace); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/* | ||
* This file is part of Sulu. | ||
* | ||
* (c) Sulu GmbH | ||
* | ||
* This source file is subject to the MIT license that is bundled | ||
* with this source code in the file LICENSE. | ||
*/ | ||
|
||
namespace Sulu\Bundle\ContentBundle\Content\Domain\Model; | ||
|
||
interface WebspaceInterface | ||
{ | ||
public function getMainWebspace(): ?string; | ||
|
||
public function setMainWebspace(?string $mainWebspace): void; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/* | ||
* This file is part of Sulu. | ||
* | ||
* (c) Sulu GmbH | ||
* | ||
* This source file is subject to the MIT license that is bundled | ||
* with this source code in the file LICENSE. | ||
*/ | ||
|
||
namespace Sulu\Bundle\ContentBundle\Content\Domain\Model; | ||
|
||
trait WebspaceTrait | ||
{ | ||
/** | ||
* @var string|null | ||
*/ | ||
protected $mainWebspace; | ||
|
||
public function getMainWebspace(): ?string | ||
{ | ||
return $this->mainWebspace; | ||
} | ||
|
||
public function setMainWebspace(?string $mainWebspace): void | ||
{ | ||
$this->mainWebspace = $mainWebspace; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 45 additions & 0 deletions
45
Content/Infrastructure/Sulu/Page/Select/WebspaceSelect.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
/* | ||
* This file is part of Sulu. | ||
* | ||
* (c) Sulu GmbH | ||
* | ||
* This source file is subject to the MIT license that is bundled | ||
* with this source code in the file LICENSE. | ||
*/ | ||
|
||
namespace Sulu\Bundle\ContentBundle\Content\Infrastructure\Sulu\Page\Select; | ||
|
||
use Sulu\Component\Webspace\Manager\WebspaceManagerInterface; | ||
|
||
class WebspaceSelect | ||
{ | ||
/** | ||
* @var WebspaceManagerInterface | ||
*/ | ||
private $webspaceManager; | ||
|
||
public function __construct(WebspaceManagerInterface $webspaceManager) | ||
{ | ||
$this->webspaceManager = $webspaceManager; | ||
} | ||
|
||
/** | ||
* @return array<array{name: string, title: string}> | ||
*/ | ||
public function getValues(): array | ||
{ | ||
$values = []; | ||
foreach ($this->webspaceManager->getWebspaceCollection() as $webspace) { | ||
$values[] = [ | ||
'name' => $webspace->getKey(), | ||
'title' => $webspace->getName(), | ||
]; | ||
} | ||
|
||
return $values; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?xml version="1.0" ?> | ||
<form xmlns="http://schemas.sulu.io/template/template" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://schemas.sulu.io/template/template http://schemas.sulu.io/template/form-1.0.xsd" | ||
> | ||
<key>content_settings_webspace</key> | ||
|
||
<tag name="sulu_content.content_settings_form" instanceOf="Sulu\Bundle\ContentBundle\Content\Domain\Model\WebspaceInterface" priority="-30"/> | ||
|
||
<properties> | ||
<section name="webspace"> | ||
<meta> | ||
<title>sulu_content.webspace</title> | ||
</meta> | ||
|
||
<properties> | ||
<property name="mainWebspace" type="single_select" colspan="6" spaceAfter="6"> | ||
<meta> | ||
<title>sulu_content.main_webspace</title> | ||
</meta> | ||
|
||
<params> | ||
<param | ||
name="values" | ||
type="expression" | ||
value="service('sulu_content.webspace_select').getValues()" | ||
/> | ||
</params> | ||
</property> | ||
</properties> | ||
</section> | ||
</properties> | ||
</form> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.