diff --git a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js index c063d7a8..91d20ace 100644 --- a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js +++ b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js @@ -112,6 +112,8 @@ const PLACEHOLDERS = [ ['[[COMMENT_T]]', 'Comment (plain text)'], ['[[LAST_MODIFIED]]', 'Last modified datetime'], ['[[CREATION_DATE]]', 'Creation datetime'], + ['[[OWNER]]', 'Full name of the location owner'], + ['[[OWNER_USERNAME]]', 'Username of the location owner'], ] }, { diff --git a/assets/ckeditor/plugins/PartDBLabel/lang/de.js b/assets/ckeditor/plugins/PartDBLabel/lang/de.js index c263825f..3cc43dc5 100644 --- a/assets/ckeditor/plugins/PartDBLabel/lang/de.js +++ b/assets/ckeditor/plugins/PartDBLabel/lang/de.js @@ -71,6 +71,8 @@ Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, { 'Full path': 'Vollständiger Pfad', 'Parent name': 'Name des Übergeordneten Elements', 'Parent full path': 'Ganzer Pfad des Übergeordneten Elements', + 'Full name of the location owner': 'Name des Besitzers des Lagerorts', + 'Username of the location owner': 'Benutzername des Besitzers des Lagerorts', 'Username': 'Benutzername', 'Username (including name)': 'Benutzername (inklusive Name)', diff --git a/src/Services/LabelSystem/PlaceholderProviders/StorelocationProvider.php b/src/Services/LabelSystem/PlaceholderProviders/StorelocationProvider.php new file mode 100644 index 00000000..747e1a00 --- /dev/null +++ b/src/Services/LabelSystem/PlaceholderProviders/StorelocationProvider.php @@ -0,0 +1,39 @@ +. + */ + +namespace App\Services\LabelSystem\PlaceholderProviders; + +use App\Entity\Parts\Storelocation; + +class StorelocationProvider implements PlaceholderProviderInterface +{ + public function replace(string $placeholder, object $label_target, array $options = []): ?string + { + if ($label_target instanceof Storelocation) { + if ('[[OWNER]]' === $placeholder) { + return $label_target->getOwner() ? $label_target->getOwner()->getFullName() : ''; + } + + if ('[[OWNER_USERNAME]]' === $placeholder) { + return $label_target->getOwner() ? $label_target->getOwner()->getUsername() : ''; + } + } + } +} \ No newline at end of file diff --git a/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php index cdede869..fda06053 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php @@ -44,6 +44,7 @@ namespace App\Tests\Services\LabelSystem\PlaceholderProviders; use App\Entity\Parts\Part; use App\Entity\Parts\PartLot; use App\Entity\Parts\Storelocation; +use App\Entity\UserSystem\User; use App\Services\LabelSystem\PlaceholderProviders\PartLotProvider; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; @@ -76,6 +77,12 @@ class PartLotProviderTest extends WebTestCase $part->setName('Part'); $part->setDescription('Part description'); $this->target->setPart($part); + + $user = new User(); + $user->setName('user'); + $user->setFirstName('John'); + $user->setLastName('Doe'); + $this->target->setOwner($user); } public function dataProvider(): array @@ -91,6 +98,8 @@ class PartLotProviderTest extends WebTestCase //Test part inheritance ['Part', '[[NAME]]'], ['Part description', '[[DESCRIPTION]]'], + ['John Doe', '[[OWNER]]'], + ['user', '[[OWNER_USERNAME]]'], ]; }