diff --git a/src/Services/LabelSystem/LabelTextReplacer.php b/src/Services/LabelSystem/LabelTextReplacer.php index 844abbb2..3ebbb0e2 100644 --- a/src/Services/LabelSystem/LabelTextReplacer.php +++ b/src/Services/LabelSystem/LabelTextReplacer.php @@ -65,7 +65,7 @@ class LabelTextReplacer public function replace(string $lines, object $target): string { $patterns = [ - '/(%%[A-Z_]+%%)/' => function ($match) use ($target) { + '/(\[\[[A-Z_]+\]\])/' => function ($match) use ($target) { return $this->handlePlaceholder($match[0], $target); }, ]; diff --git a/src/Services/LabelSystem/PlaceholderProviders/AbstractDBElementProvider.php b/src/Services/LabelSystem/PlaceholderProviders/AbstractDBElementProvider.php index 50467915..8fb2017e 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/AbstractDBElementProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/AbstractDBElementProvider.php @@ -40,11 +40,11 @@ class AbstractDBElementProvider implements PlaceholderProviderInterface { if ($label_target instanceof AbstractDBElement) { - if ($placeholder === '%%TYPE%%') { + if ($placeholder === '[[TYPE]]') { return $this->elementTypeNameGenerator->getLocalizedTypeLabel($label_target); } - if ($placeholder === '%%ID%%') { + if ($placeholder === '[[ID]]') { return (string) ($label_target->getID() ?? 'unknown'); } diff --git a/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php b/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php index 8f4ba7ae..d3844b75 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php +++ b/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php @@ -47,20 +47,20 @@ class GlobalProviders implements PlaceholderProviderInterface */ public function replace(string $placeholder, object $label_target, array $options = []): ?string { - if ($placeholder === "%%INSTALL_NAME%%") { + if ($placeholder === "[[INSTALL_NAME]]") { return $this->partdb_title; } $user = $this->security->getUser(); - if ($placeholder === "%%USERNAME%%") { + if ($placeholder === "[[USERNAME]]") { if ($user instanceof User) { return $user->getName(); } return 'anonymous'; } - if ($placeholder === "%%USERNAME_FULL%%") { + if ($placeholder === "[[USERNAME_FULL]]") { if ($user instanceof User) { return $user->getFullName(true); } @@ -69,7 +69,7 @@ class GlobalProviders implements PlaceholderProviderInterface $now = new \DateTime(); - if ($placeholder === '%%DATETIME%%') { + if ($placeholder === '[[DATETIME]]') { $formatter = IntlDateFormatter::create( Locale::getDefault(), IntlDateFormatter::SHORT, @@ -80,7 +80,7 @@ class GlobalProviders implements PlaceholderProviderInterface return $formatter->format($now); } - if ($placeholder === '%%DATE%%') { + if ($placeholder === '[[DATE]]') { $formatter = IntlDateFormatter::create( Locale::getDefault(), IntlDateFormatter::SHORT, @@ -91,7 +91,7 @@ class GlobalProviders implements PlaceholderProviderInterface return $formatter->format($now); } - if ($placeholder === '%%TIME%%') { + if ($placeholder === '[[TIME]]') { $formatter = IntlDateFormatter::create( Locale::getDefault(), IntlDateFormatter::NONE, diff --git a/src/Services/LabelSystem/PlaceholderProviders/NamedElementProvider.php b/src/Services/LabelSystem/PlaceholderProviders/NamedElementProvider.php index 5acd461c..c4861cf4 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/NamedElementProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/NamedElementProvider.php @@ -31,7 +31,7 @@ class NamedElementProvider implements PlaceholderProviderInterface */ public function replace(string $placeholder, object $label_target, array $options = []): ?string { - if ($label_target instanceof NamedElementInterface && $placeholder === '%%NAME%%') { + if ($label_target instanceof NamedElementInterface && $placeholder === '[[NAME]]') { return $label_target->getName(); } diff --git a/src/Services/LabelSystem/PlaceholderProviders/PartLotProvider.php b/src/Services/LabelSystem/PlaceholderProviders/PartLotProvider.php index 394f1b26..4c3bd641 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/PartLotProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/PartLotProvider.php @@ -41,19 +41,19 @@ class PartLotProvider implements PlaceholderProviderInterface public function replace(string $placeholder, object $label_target, array $options = []): ?string { if ($label_target instanceof PartLot) { - if ($placeholder === '%%LOT_ID%%') { + if ($placeholder === '[[LOT_ID]]') { return $label_target->getID() ?? 'unknown'; } - if ($placeholder === '%%LOT_NAME%%') { + if ($placeholder === '[[LOT_NAME]]') { return $label_target->getName(); } - if ($placeholder === '%%LOT_COMMENT%%') { + if ($placeholder === '[[LOT_COMMENT]]') { return $label_target->getComment(); } - if ($placeholder === '%%EXPIRATION_DATE%%') { + if ($placeholder === '[[EXPIRATION_DATE]]') { if ($label_target->getExpirationDate() === null) { return ''; } @@ -67,18 +67,18 @@ class PartLotProvider implements PlaceholderProviderInterface return $formatter->format($label_target->getExpirationDate()); } - if ($placeholder === '%%AMOUNT%%') { + if ($placeholder === '[[AMOUNT]]') { if ($label_target->isInstockUnknown()) { return '?'; } return $this->amountFormatter->format($label_target->getAmount(), $label_target->getPart()->getPartUnit()); } - if ($placeholder === '%%LOCATION%%') { + if ($placeholder === '[[LOCATION]]') { return $label_target->getStorageLocation() ? $label_target->getStorageLocation()->getName() : ''; } - if ($placeholder === '%%LOCATION_FULL%%') { + if ($placeholder === '[[LOCATION_FULL]]') { return $label_target->getStorageLocation() ? $label_target->getStorageLocation()->getFullPath() : ''; } diff --git a/src/Services/LabelSystem/PlaceholderProviders/PartProvider.php b/src/Services/LabelSystem/PlaceholderProviders/PartProvider.php index da8e1d14..e1b9d555 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/PartProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/PartProvider.php @@ -46,43 +46,43 @@ class PartProvider implements PlaceholderProviderInterface return null; } - if ($placeholder === '%%CATEGORY%%') { + if ($placeholder === '[[CATEGORY]]') { return $part->getCategory() ? $part->getCategory()->getName() : ''; } - if ($placeholder === '%%CATEGORY_FULL%%') { + if ($placeholder === '[[CATEGORY_FULL]]') { return $part->getCategory() ? $part->getCategory()->getFullPath() : ''; } - if ($placeholder === '%%MANUFACTURER%%') { + if ($placeholder === '[[MANUFACTURER]]') { return $part->getManufacturer() ? $part->getManufacturer()->getName() : ''; } - if ($placeholder === '%%MANUFACTURER_FULL%%') { + if ($placeholder === '[[MANUFACTURER_FULL]]') { return $part->getManufacturer() ? $part->getManufacturer()->getFullPath() : ''; } - if ($placeholder === '%%FOOTPRINT%%') { + if ($placeholder === '[[FOOTPRINT]]') { return $part->getFootprint() ? $part->getFootprint()->getName() : ''; } - if ($placeholder === '%%FOOTPRINT_FULL%%') { + if ($placeholder === '[[FOOTPRINT_FULL]]') { return $part->getFootprint() ? $part->getFootprint()->getFullPath() : ''; } - if ($placeholder === '%%MASS%%') { + if ($placeholder === '[[MASS]]') { return $part->getMass() ? $this->siFormatter->format($part->getMass(), 'g', 1) : ''; } - if ($placeholder === '%%MPN%%') { + if ($placeholder === '[[MPN]]') { return $part->getManufacturerProductNumber(); } - if ($placeholder === '%%TAGS%%') { + if ($placeholder === '[[TAGS]]') { return $part->getTags(); } - if ($placeholder === '%%M_STATUS%%') { + if ($placeholder === '[[M_STATUS]]') { if ($part->getManufacturingStatus() === '') { return ''; } @@ -91,19 +91,19 @@ class PartProvider implements PlaceholderProviderInterface $parsedown = new \Parsedown(); - if ($placeholder === '%%DESCRIPTION%%') { + if ($placeholder === '[[DESCRIPTION]]') { return $parsedown->line($part->getDescription()); } - if ($placeholder === '%%DESCRIPTION_T%%') { + if ($placeholder === '[[DESCRIPTION_T]]') { return strip_tags($parsedown->line($part->getDescription())); } - if ($placeholder === '%%COMMENT%%') { + if ($placeholder === '[[COMMENT]]') { return $parsedown->line($part->getComment()); } - if ($placeholder === '%%COMMENT_T%%') { + if ($placeholder === '[[COMMENT_T]]') { return strip_tags($parsedown->line($part->getComment())); } diff --git a/src/Services/LabelSystem/PlaceholderProviders/TimestampableElementProvider.php b/src/Services/LabelSystem/PlaceholderProviders/TimestampableElementProvider.php index aa2a50ee..5ddc0011 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/TimestampableElementProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/TimestampableElementProvider.php @@ -33,11 +33,11 @@ class TimestampableElementProvider implements PlaceholderProviderInterface public function replace(string $placeholder, object $label_target, array $options = []): ?string { if ($label_target instanceof TimeStampableInterface) { - if ($placeholder === '%%LAST_MODIFIED%%') { + if ($placeholder === '[[LAST_MODIFIED]]') { return IntlDateFormatter::formatObject($label_target->getLastModified() ?? new \DateTime(), IntlDateFormatter::SHORT, Locale::getDefault()); } - if ($placeholder === '%%CREATION_DATE%%') { + if ($placeholder === '[[CREATION_DATE]]') { return IntlDateFormatter::formatObject($label_target->getAddedDate() ?? new \DateTime(), IntlDateFormatter::SHORT, Locale::getDefault()); } diff --git a/tests/Services/LabelSystem/LabelTextReplacerTest.php b/tests/Services/LabelSystem/LabelTextReplacerTest.php index 1e155e55..1d677f6c 100644 --- a/tests/Services/LabelSystem/LabelTextReplacerTest.php +++ b/tests/Services/LabelSystem/LabelTextReplacerTest.php @@ -55,28 +55,28 @@ class LabelTextReplacerTest extends WebTestCase public function handlePlaceholderDataProvider(): array { return [ - ['Part 1', '%%NAME%%'], - ['P Description', '%%DESCRIPTION%%'], - ['%%UNKNOWN%%', '%%UNKNOWN%%'], - ['%%INVALID', '%%INVALID'], - ['%%', '%%'], + ['Part 1', '[[NAME]]'], + ['P Description', '[[DESCRIPTION]]'], + ['[[UNKNOWN]]', '[[UNKNOWN]]', '[[UNKNOWN]]'], + ['[[INVALID', '[[INVALID'], + ['[[', '[['], ['NAME', 'NAME'], - ['%%NAME', '%%NAME'], - ['Test %%NAME%%', 'Test %%NAME%%'], + ['[[NAME', '[[NAME'], + ['Test [[NAME]]', 'Test [[NAME]]', 'Test [[NAME]]'], ]; } public function replaceDataProvider(): array { return [ - ['Part 1', '%%NAME%%'], - ['TestPart 1', 'Test%%NAME%%'], - ["P Description\nPart 1", "%%DESCRIPTION_T%%\n%%NAME%%"], - ['Part 1 Part 1', '%%NAME%% %%NAME%%'], - ['%%UNKNOWN%% Test', '%%UNKNOWN%% Test'], - ["%%NAME\n%% %%NAME %%", "%%NAME\n%% %%NAME %%"], - ['%%%%', '%%%%'], - ['TEST%% %%TEST', 'TEST%% %%TEST'] + ['Part 1', '[[NAME]]'], + ['TestPart 1', 'Test[[NAME]]'], + ["P Description\nPart 1", "[[DESCRIPTION_T]]\n[[NAME]]"], + ['Part 1 Part 1', '[[NAME]] [[NAME]]'], + ['[[UNKNOWN]] Test', '[[UNKNOWN]] Test'], + ["[[NAME\n]] [[NAME ]]", "[[NAME\n]] [[NAME ]]"], + ['[[]]', '[[]]'], + ['TEST[[ ]]TEST', 'TEST[[ ]]TEST'] ]; } @@ -107,6 +107,6 @@ class LabelTextReplacerTest extends WebTestCase $part->setName('Part'); $part_lot->setPart($part); - $this->assertSame('Part', $this->service->handlePlaceholder('%%NAME%%', $part_lot)); + $this->assertSame('Part', $this->service->handlePlaceholder('[[NAME]]', $part_lot)); } } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/AbstractElementProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/AbstractElementProviderTest.php index 8d5df9d2..1eb79366 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/AbstractElementProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/AbstractElementProviderTest.php @@ -54,7 +54,7 @@ class AbstractElementProviderTest extends WebTestCase public function dataProvider(): array { return [ - ['123', '%%ID%%'], + ['123', '[[ID]]'], ]; } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/GlobalProvidersTest.php b/tests/Services/LabelSystem/PlaceholderProviders/GlobalProvidersTest.php index 324e9997..07bd2a87 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/GlobalProvidersTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/GlobalProvidersTest.php @@ -42,8 +42,8 @@ class GlobalProvidersTest extends WebTestCase public function dataProvider(): array { return [ - ['Part-DB', '%%INSTALL_NAME%%'], - ['anonymous', '%%USERNAME%%'], + ['Part-DB', '[[INSTALL_NAME]]'], + ['anonymous', '[[USERNAME]]'], ]; } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/NamedElementProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/NamedElementProviderTest.php index 59f3bf81..06308738 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/NamedElementProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/NamedElementProviderTest.php @@ -53,7 +53,7 @@ class NamedElementProviderTest extends WebTestCase public function dataProvider(): array { return [ - ['This is my Name', '%%NAME%%'] + ['This is my Name', '[[NAME]]'] ]; } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php index e18bdb06..c430fad2 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/PartLotProviderTest.php @@ -60,16 +60,16 @@ class PartLotProviderTest extends WebTestCase public function dataProvider(): array { return [ - ['unknown', '%%LOT_ID%%'], - ['Lot description', '%%LOT_NAME%%'], - ['Lot comment', '%%LOT_COMMENT%%'], - ['4/13/99', '%%EXPIRATION_DATE%%'], - ['?', '%%AMOUNT%%'], - ['Location', '%%LOCATION%%'], - ['Parent → Location', '%%LOCATION_FULL%%'], + ['unknown', '[[LOT_ID]]'], + ['Lot description', '[[LOT_NAME]]'], + ['Lot comment', '[[LOT_COMMENT]]'], + ['4/13/99', '[[EXPIRATION_DATE]]'], + ['?', '[[AMOUNT]]'], + ['Location', '[[LOCATION]]'], + ['Parent → Location', '[[LOCATION_FULL]]'], //Test part inheritance - ['Part', '%%NAME%%'], - ['Part description', '%%DESCRIPTION%%'], + ['Part', '[[NAME]]'], + ['Part description', '[[DESCRIPTION]]'], ]; } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/PartProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/PartProviderTest.php index 10e68cb7..6e7928bd 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/PartProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/PartProviderTest.php @@ -67,21 +67,21 @@ class PartProviderTest extends WebTestCase public function dataProvider(): array { return [ - ['Node 2.1', '%%CATEGORY%%'], - ['Node 2 → Node 2.1', '%%CATEGORY_FULL%%'], - ['Node 2.1', '%%FOOTPRINT%%'], - ['Node 2 → Node 2.1', '%%FOOTPRINT_FULL%%'], - ['', '%%MANUFACTURER%%'], - ['', '%%MANUFACTURER_FULL%%'], + ['Node 2.1', '[[CATEGORY]]'], + ['Node 2 → Node 2.1', '[[CATEGORY_FULL]]'], + ['Node 2.1', '[[FOOTPRINT]]'], + ['Node 2 → Node 2.1', '[[FOOTPRINT_FULL]]'], + ['', '[[MANUFACTURER]]'], + ['', '[[MANUFACTURER_FULL]]'], - ['1.2 kg', '%%MASS%%'], - ['MPN123', '%%MPN%%'], - ['SMD, Tag1, Tag2', '%%TAGS%%'], - ['Active', '%%M_STATUS%%'], - ['Bold Italic', '%%DESCRIPTION%%'], - ['Bold Italic', '%%DESCRIPTION_T%%'], - ['Bold Italic', '%%COMMENT%%'], - ['Bold Italic', '%%COMMENT_T%%'], + ['1.2 kg', '[[MASS]]'], + ['MPN123', '[[MPN]]'], + ['SMD, Tag1, Tag2', '[[TAGS]]'], + ['Active', '[[M_STATUS]]'], + ['Bold Italic', '[[DESCRIPTION]]'], + ['Bold Italic', '[[DESCRIPTION_T]]'], + ['Bold Italic', '[[COMMENT]]'], + ['Bold Italic', '[[COMMENT_T]]'], ]; } diff --git a/tests/Services/LabelSystem/PlaceholderProviders/TimestampableElementProviderTest.php b/tests/Services/LabelSystem/PlaceholderProviders/TimestampableElementProviderTest.php index dff330d8..2bf3bcaa 100644 --- a/tests/Services/LabelSystem/PlaceholderProviders/TimestampableElementProviderTest.php +++ b/tests/Services/LabelSystem/PlaceholderProviders/TimestampableElementProviderTest.php @@ -36,6 +36,7 @@ class TimestampableElementProviderTest extends WebTestCase public function setUp(): void { self::bootKernel(); + \Locale::setDefault('en'); $this->service = self::$container->get(TimestampableElementProvider::class); $this->target = new class implements TimeStampableInterface { @@ -59,11 +60,12 @@ class TimestampableElementProviderTest extends WebTestCase public function dataProvider(): array { + \Locale::setDefault('en'); $formatted = \IntlDateFormatter::formatObject(new \DateTime('2000-01-01'), \IntlDateFormatter::SHORT); return [ - [$formatted, '%%LAST_MODIFIED%%'], - [$formatted, '%%CREATION_DATE%%'], + [$formatted, '[[LAST_MODIFIED]]'], + [$formatted, '[[CREATION_DATE]]'], ]; }