From be4268c6cd00b0891f72f95d3acf4efae973c787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 15 Jan 2024 22:32:00 +0100 Subject: [PATCH 001/634] New translations messages.en.xlf (Czech) --- translations/messages.cs.xlf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 57b63d42..73c41d14 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -895,7 +895,7 @@ Uživatel bude muset znovu nastavit všechny metody dvoufaktorového ověřován entity.delete.message To nelze vrátit zpět! <br> -Dílčí prvky budou posunuty nahoru. +Související prvky budou přesunuty nahoru. @@ -932,7 +932,7 @@ Dílčí prvky budou posunuty nahoru. entity.delete.recursive - Odstranit rekurzivně (všechny dílčí prvky) + Odstranit rekurzivně (všechny související prvky) @@ -9606,7 +9606,7 @@ Element 3 entity.info.parts_count_recursive - Počet díů s tímto prvkem nebo jeho dílčími prvky + Počet dílů s tímto prvkem nebo jeho souvisejícími prvky @@ -11142,7 +11142,7 @@ Element 3 part.withdraw.access_denied - Není povoleno provést požadovanou akci. Zkontrolujte prosím svá oprávnění a vlastníka dílčích prvků. + Není povoleno provést požadovanou akci. Zkontrolujte prosím svá oprávnění a vlastníka souvisejících prvků. From 427a31f1b62c681fa2ab5bb06f7093bc4f0f8328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 15 Jan 2024 23:30:23 +0100 Subject: [PATCH 002/634] New translations messages.en.xlf (Czech) --- translations/messages.cs.xlf | 50 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 73c41d14..15d6d8a6 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -1242,7 +1242,7 @@ Související prvky budou přesunuty nahoru. vendor.base.javascript_hint - Chcete-li používat všechny funkce, aktivujte prosím Javascript! + Chcete-li používat všechny funkce, aktivujte prosím JavaScript! @@ -2137,7 +2137,7 @@ Související prvky budou přesunuty nahoru. user.creating_user - Uživatel, který vytvořil tuto komponentu + Uživatel, který vytvořil tento díl @@ -3387,7 +3387,7 @@ Související prvky budou přesunuty nahoru. user.firstName.label - Křestní jméno + Jméno @@ -3946,7 +3946,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn user.language_select - Přepnutí jazyka + Jazyk @@ -4274,7 +4274,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn log.undo.element_change_undone - Změna úspěšně zrušena! + Změna úspěšně vrácena! @@ -4633,7 +4633,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn log.undo.undelete - Odstranění prvku + Odstranit prvek @@ -6076,7 +6076,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn pw_reset.email.subject - Obnovení hesla pro váš účet Part-DB + Obnovení hesla k účtu Part-DB @@ -9768,13 +9768,13 @@ Element 3 currency.edit.exchange_rate_update.unsupported_currency - Měna není poskytovatelem směnných kurzů podporována. Zkontrolujte konfiguraci poskytovatele směnných kurzů. + Měna není podporována zdrojem směnných kurzů. Zkontrolujte konfiguraci zdroje směnných kurzů. currency.edit.exchange_rate_update.generic_error - Nelze načíst směnný kurz. Zkontrolujte konfiguraci poskytovatele směnných kurzů. + Nelze načíst směnný kurz. Zkontrolujte konfiguraci zdroje směnných kurzů. @@ -10266,7 +10266,7 @@ Element 3 user_settings.remove_avatar.label - Odstranění profilového obrázku + Odstranit profilový obrázek @@ -10866,7 +10866,7 @@ Element 3 user.saml_user.pw_change_hint - Váš uživatel používá jednotné přihlášení (SSO). Heslo a nastavení 2FA zde nelze změnit. Nakonfigurujte je raději u svého centrálního poskytovatele SSO! + Uživatel používá jednotné přihlášení (SSO). Heslo a nastavení 2FA zde nelze změnit. Nakonfigurujte je raději u svého centrálního zdroje SSO! @@ -11184,7 +11184,7 @@ Element 3 log.details.title - Podrobnosti o záznamu + Podrobnosti záznamu @@ -11298,7 +11298,7 @@ Element 3 log.details.delete_entry - Odstranění záznamu protokolu + Odstranit záznam protokolu @@ -11492,7 +11492,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part.info_provider_reference - Vytvořeno poskytovatelem informací + Vytvořeno zdrojem informací @@ -11522,7 +11522,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.search.providers.help - Vyberte poskytovatele, ve kterých se má vyhledávat. + Vyberte zdroje, ve kterých se má vyhledávat. @@ -11534,13 +11534,13 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.search.info_providers_list - Zobrazit všechny dostupné poskytovatele informací + Zobrazit všechny dostupné zdroje informací info_providers.search.title - Vytvoření dílů z poskytovatele informací + Vytvořit díly ze zdroje informací @@ -11558,7 +11558,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz perm.part.info_providers.create_parts - Vytvoření dílů z poskytovatele informací + Vytvořit díly ze zdroje informací @@ -11714,7 +11714,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz api_tokens.your_token_is - Váš token API je + Token API je @@ -11864,13 +11864,13 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part_association.edit.type.help - Zde můžete vybrat, jaký vybraná díl souvisí s tímto dílem. + Zde můžete vybrat, jak vybraný díl souvisí s tímto dílem. part_association.table.from_this_part - Asociace tohodot dílu k ostatním + Přidružení tohoto dílu k ostatním @@ -11900,7 +11900,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part_association.table.to_this_part - Asociace k tomuto dílu od ostatních + Přidružení k tomuto dílu od ostatních @@ -11924,7 +11924,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part_association.edit.delete.confirm - Opravdu chcete tuto asociaci smazat? To nelze zrušit. + Opravdu chcete toto přidružení smazat? To nelze vrátit zpět. @@ -12026,7 +12026,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.update_part.title - Aktualizace stávajícího dílu od poskytovatele informací + Aktualizace stávajícího dílu ze zdroje informací @@ -12074,7 +12074,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.search.error.client_exception - Při komunikaci s poskytovatelem informací došlo k chybě. Zkontrolujte konfiguraci tohoto poskytovatele a pokud možno obnovte tokeny OAuth. + Při komunikaci se zdrojem informací došlo k chybě. Zkontrolujte konfiguraci tohoto zdroje a pokud možno obnovte tokeny OAuth. From dcf85f9d5ec456bf8f202147fb75f4eb193e5a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 16 Jan 2024 22:10:29 +0100 Subject: [PATCH 003/634] Add hint about bad unicode treatment in sqlite to dabase choosing guide Related to issue #465 --- docs/installation/choosing_database.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/installation/choosing_database.md b/docs/installation/choosing_database.md index 1b4ca223..4bd9a93e 100644 --- a/docs/installation/choosing_database.md +++ b/docs/installation/choosing_database.md @@ -30,7 +30,10 @@ automatically However, SQLite does not support certain operations like regex search, which has to be emulated by PHP and therefore are pretty slow compared to the same operation at MySQL. In future there might be features that may only be available, when -using MySQL. +using MySQL. Also SQLite has limitations in comparisons and sorting of unicode characters, which might lead to unexpected +behavior when using non-ASCII characters in your data. For example `µ` (micro sign) is not seen as equal to `μ`(greek minuscle mu), +therefore searching for `µ` (micro sign) will not find parts containing `μ` (mu) and vice versa. In MySQL identical +looking characters are seen as equal, which is more intuitive in most cases. In general MySQL might perform better for big Part-DB instances with many entries, lots of users and high activity, than SQLite. From 7430ecd7a699b85b14ae531c4334ecee8070db0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 16 Jan 2024 22:49:01 +0100 Subject: [PATCH 004/634] Invalidate part related cache tags properly, if a part is created, changed or removed This fixes the issue with KiCAD integration described in issue #483 --- src/Entity/Parts/Part.php | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/Entity/Parts/Part.php b/src/Entity/Parts/Part.php index 8fa53680..e5281ddc 100644 --- a/src/Entity/Parts/Part.php +++ b/src/Entity/Parts/Part.php @@ -27,41 +27,35 @@ use ApiPlatform\Doctrine\Orm\Filter\DateFilter; use ApiPlatform\Doctrine\Orm\Filter\OrderFilter; use ApiPlatform\Doctrine\Orm\Filter\RangeFilter; use ApiPlatform\Metadata\ApiFilter; -use ApiPlatform\Metadata\ApiProperty; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Delete; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; -use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; use ApiPlatform\Serializer\Filter\PropertyFilter; -use App\ApiPlatform\DocumentedAPIProperty; use App\ApiPlatform\Filter\EntityFilter; use App\ApiPlatform\Filter\LikeFilter; use App\ApiPlatform\Filter\PartStoragelocationFilter; -use App\Entity\Attachments\AttachmentTypeAttachment; -use App\Entity\EDA\EDAPartInfo; -use App\Entity\Parts\PartTraits\AssociationTrait; -use App\Entity\Parts\PartTraits\EDATrait; -use App\Repository\PartRepository; -use Doctrine\DBAL\Types\Types; use App\Entity\Attachments\Attachment; use App\Entity\Attachments\AttachmentContainingDBElement; use App\Entity\Attachments\PartAttachment; -use App\Entity\Parts\PartTraits\ProjectTrait; +use App\Entity\EDA\EDAPartInfo; use App\Entity\Parameters\ParametersTrait; use App\Entity\Parameters\PartParameter; use App\Entity\Parts\PartTraits\AdvancedPropertyTrait; +use App\Entity\Parts\PartTraits\AssociationTrait; use App\Entity\Parts\PartTraits\BasicPropertyTrait; +use App\Entity\Parts\PartTraits\EDATrait; use App\Entity\Parts\PartTraits\InstockTrait; use App\Entity\Parts\PartTraits\ManufacturerTrait; use App\Entity\Parts\PartTraits\OrderTrait; -use DateTime; +use App\Entity\Parts\PartTraits\ProjectTrait; +use App\EntityListeners\TreeCacheInvalidationListener; +use App\Repository\PartRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; -use Jfcherng\Diff\Utility\Arr; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; @@ -78,6 +72,7 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; */ #[UniqueEntity(fields: ['ipn'], message: 'part.ipn.must_be_unique')] #[ORM\Entity(repositoryClass: PartRepository::class)] +#[ORM\EntityListeners([TreeCacheInvalidationListener::class])] #[ORM\Table('`parts`')] #[ORM\Index(name: 'parts_idx_datet_name_last_id_needs', columns: ['datetime_added', 'name', 'last_modified', 'id', 'needs_review'])] #[ORM\Index(name: 'parts_idx_name', columns: ['name'])] From ef6dd0febcbfc7b9d4510e9141f40bbbd6122e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 16 Jan 2024 23:06:20 +0100 Subject: [PATCH 005/634] Bumped version to 1.10.4 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 587c5f0c..18b31142 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.3 +1.10.4 From 6b2ebd24342f88a71521808e96eabea3163a0542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 22 Jan 2024 11:52:37 +0100 Subject: [PATCH 006/634] New Crowdin updates (#485) * New translations messages.en.xlf (Czech) * New translations messages.en.xlf (Czech) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Czech) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) --- translations/messages.cs.xlf | 34 +- translations/messages.da.xlf | 3544 ++++++++++++++++++++++++++++++++++ 2 files changed, 3561 insertions(+), 17 deletions(-) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index 15d6d8a6..bbe73140 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -545,7 +545,7 @@ measurement_unit.caption - Jednotka měření + Měrné jednotky @@ -1594,7 +1594,7 @@ Související prvky budou přesunuty nahoru. label_scanner.title - Čtečka + Čtečka štítků @@ -3900,7 +3900,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn navbar.scanner.link - Čtečka + Čtečka štítků @@ -4027,7 +4027,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn search.regexmatching - Reg.Ex. Shoda + RegEx. shoda @@ -4836,7 +4836,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn part.table.partUnit - Jednotka měření + Měrné jednotky @@ -6135,7 +6135,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn tree.tools.tools.label_scanner - Čtečka + Čtečka štítků @@ -6230,7 +6230,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn tree.tools.edit.measurement_unit - Jednotka měření + Měrné jednotky @@ -7280,7 +7280,7 @@ Element 3 storelocation.limit_to_existing.help - okud je tato možnost aktivována, není možné přidávat nové díly do tohoto skladového umístění, ale množství stávajících dílů lze zvýšit. + Pokud je tato možnost aktivována, není možné přidávat nové díly do tohoto umístění, ale množství stávajících dílů lze navýšit. @@ -7590,7 +7590,7 @@ Element 3 part.withdraw.caption - Stažení dílů + Odebrání dílů @@ -9972,7 +9972,7 @@ Element 3 part.info.withdraw_modal.title.withdraw - Stažení dílů z inventáře + Odebrání dílů z inventáře @@ -10068,7 +10068,7 @@ Element 3 log.part_stock_changed.withdraw - Stažení zásob + Odebrání zásob @@ -11088,7 +11088,7 @@ Element 3 measurement_unit.edit - Upravit jednotku měření + Upravit měrnou jednotku @@ -11486,7 +11486,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part.info_provider_reference.badge - Poskytovatel informací použitý k vytvoření tohoto dílu. + Zdroj informací použitý k vytvoření tohoto dílu. @@ -11528,7 +11528,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.search.providers - Poskytovatelé + Zdroje @@ -11576,7 +11576,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz info_providers.form.help_prefix - Poskytovatel + Zdroj @@ -12020,7 +12020,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part.update_part_from_info_provider.btn - Aktualizovat díl od poskytovatelů informací + Aktualizovat díl ze zdroje informací @@ -12068,7 +12068,7 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part.info.withdraw_modal.delete_lot_if_empty - Vymazat tento inventář, pokud se vyprázdní + Vymazat tento inventář, až se vyprázdní diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 0f3eded2..c062e894 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -7192,6 +7192,516 @@ Element 3 er heltal + + + obsolete + obsolete + + + measurement_unit.edit.is_integer.help + Når denne option er aktiveret, vil alle mængder i denne enhed blive afrundet til hele tal. + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix + Benyt SI prefix + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix.help + Når denne option er aktiveret, bruges SI-præfikser, når tallene udlæses (f.eks. 1,2 kg i stedet for 1200 g) + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol + Enhedssymbol + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol.placeholder + f.eks. m + + + + + obsolete + obsolete + + + storelocation.edit.is_full.label + Lagerlokation er fyldt op + + + + + obsolete + obsolete + + + storelocation.edit.is_full.help + Når denne option er aktiveret, er det hverken muligt at tilføje nye komponenter til denne lagerplads eller at øge antallet af eksisterende komponenter. + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.label + Kun eksisterende komponenter + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.help + Når denne option er aktiveret, er det ikke muligt at tilføje nye komponenter til denne lagerplads, men det er muligt at øge antallet af eksisterende komponenter. + + + + + obsolete + obsolete + + + storelocation.only_single_part.label + Kun en komponent + + + + + obsolete + obsolete + + + storelocation.only_single_part.help + Hvis denne option er aktiveret, kan denne lagerplads kun indeholde en enkelt komponent, men i en hvilken som helst mængde. Nyttigt til små SMD-rum eller fødere. + + + + + obsolete + obsolete + + + storelocation.storage_type.label + Lagertype + + + + + obsolete + obsolete + + + storelocation.storage_type.help + Her kan du vælge en måleenhed, som en komponent skal have, så den kan opbevares på denne lagerplads. + + + + + obsolete + obsolete + + + supplier.edit.default_currency + Standardvaluta + + + + + obsolete + obsolete + + + supplier.shipping_costs.label + Forsendelsesomkostninger + + + + + obsolete + obsolete + + + user.username.placeholder + f.eks. j.doe + + + + + obsolete + obsolete + + + user.firstName.placeholder + f.eks. John + + + + + obsolete + obsolete + + + user.lastName.placeholder + f.eks. Doe + + + + + obsolete + obsolete + + + user.email.placeholder + j.doe@ecorp.com + + + + + obsolete + obsolete + + + user.department.placeholder + f.eks. Udvikling + + + + + obsolete + obsolete + + + user.settings.pw_new.label + Nyt pasword + + + + + obsolete + obsolete + + + user.settings.pw_confirm.label + bekræft nyt password + + + + + obsolete + obsolete + + + user.edit.needs_pw_change + Bruger skal ændre password + + + + + obsolete + obsolete + + + user.edit.user_disabled + Bruger deaktiveret (login ikke muligt) + + + + + obsolete + obsolete + + + user.create + Opret bruger + + + + + obsolete + obsolete + + + user.edit.save + Gem + + + + + obsolete + obsolete + + + entity.edit.reset + Fortryd ændringer + + + + + templates\Parts\show_part_info.html.twig:166 + obsolete + obsolete + + + part.withdraw.btn + Fjern + + + + + templates\Parts\show_part_info.html.twig:171 + obsolete + obsolete + + + part.withdraw.comment: + Kommentar/formål + + + + + templates\Parts\show_part_info.html.twig:189 + obsolete + obsolete + + + part.add.caption + Tilføj komponent + + + + + templates\Parts\show_part_info.html.twig:194 + obsolete + obsolete + + + part.add.btn + Tilføj + + + + + templates\Parts\show_part_info.html.twig:199 + obsolete + obsolete + + + part.add.comment + Kommentar/formål + + + + + templates\AdminPages\CompanyAdminBase.html.twig:15 + obsolete + obsolete + + + admin.comment + Noter + + + + + src\Form\PartType.php:83 + obsolete + obsolete + + + manufacturer_url.label + Producentlink + + + + + src\Form\PartType.php:66 + obsolete + obsolete + + + part.description.placeholder + f.eks. NPN 45V 0,1A 0,5W + + + + + src\Form\PartType.php:69 + obsolete + obsolete + + + part.instock.placeholder + f.eks. 10 + + + + + src\Form\PartType.php:72 + obsolete + obsolete + + + part.mininstock.placeholder + f.eks. 12 + + + + + obsolete + obsolete + + + part.order.price_per + Stykpris + + + + + obsolete + obsolete + + + part.withdraw.caption + Fjern komponenter + + + + + obsolete + obsolete + + + datatable.datatable.lengthMenu + _MENU_ + + + + + obsolete + obsolete + + + perm.group.parts + Komponenter + + + + + obsolete + obsolete + + + perm.group.structures + Datastrukturer + + + + + obsolete + obsolete + + + perm.group.system + System + + + + + obsolete + obsolete + + + perm.parts + Generelt + + + + + obsolete + obsolete + + + perm.read + Vis + + + + + obsolete + obsolete + + + perm.edit + Ret + + + + + obsolete + obsolete + + + perm.create + Opret + + + + + obsolete + obsolete + + + perm.part.move + Skift kategori + + + + + obsolete + obsolete + + + perm.delete + Slet + + + + + obsolete + obsolete + + + perm.part.search + Søg + + obsolete @@ -7252,5 +7762,3039 @@ Element 3 Vis favoritkomponenter + + + obsolete + obsolete + + + perm.part.show_last_edit_parts + Vis nyligt redigerede/tilføjede komponenter + + + + + obsolete + obsolete + + + perm.part.show_users + Vis den sidste bruger, der redigerede + + + + + obsolete + obsolete + + + perm.part.show_history + Se historik + + + + + obsolete + obsolete + + + perm.part.name + Navn + + + + + obsolete + obsolete + + + perm.part.description + Beskrivelse + + + + + obsolete + obsolete + + + perm.part.instock + På lager + + + + + obsolete + obsolete + + + perm.part.mininstock + mindste lager + + + + + obsolete + obsolete + + + perm.part.comment + Noter + + + + + obsolete + obsolete + + + perm.part.storelocation + Lagerlokation + + + + + obsolete + obsolete + + + perm.part.manufacturer + Fabrikant + + + + + obsolete + obsolete + + + perm.part.orderdetails + Ordreinformation + + + + + obsolete + obsolete + + + perm.part.prices + Pris + + + + + obsolete + obsolete + + + perm.part.attachments + Bilag + + + + + obsolete + obsolete + + + perm.part.order + Ordrer + + + + + obsolete + obsolete + + + perm.storelocations + Lagerlokationer + + + + + obsolete + obsolete + + + perm.move + Flyt + + + + + obsolete + obsolete + + + perm.list_parts + Vis komponentliste + + + + + obsolete + obsolete + + + perm.part.footprints + Footprints + + + + + obsolete + obsolete + + + perm.part.categories + Kategorier + + + + + obsolete + obsolete + + + perm.part.supplier + Leverandører + + + + + obsolete + obsolete + + + perm.part.manufacturers + Fabrikant + + + + + obsolete + obsolete + + + perm.projects + Projekter + + + + + obsolete + obsolete + + + perm.part.attachment_types + bilagstype + + + + + obsolete + obsolete + + + perm.tools.import + Import + + + + + obsolete + obsolete + + + perm.tools.labels + Labels + + + + + obsolete + obsolete + + + perm.tools.calculator + Modstandsberegner + + + + + obsolete + obsolete + + + perm.tools.footprints + Footprints + + + + + obsolete + obsolete + + + perm.tools.ic_logos + IC logoer + + + + + obsolete + obsolete + + + perm.tools.statistics + Statistik + + + + + obsolete + obsolete + + + perm.edit_permissions + Ret tilladelser + + + + + obsolete + obsolete + + + perm.users.edit_user_name + Ret brugernavn + + + + + obsolete + obsolete + + + perm.users.edit_change_group + Skift gruppe + + + + + obsolete + obsolete + + + perm.users.edit_infos + Ret information + + + + + obsolete + obsolete + + + perm.users.edit_permissions + Ret tilladelser + + + + + obsolete + obsolete + + + perm.users.set_password + Skift password + + + + + obsolete + obsolete + + + perm.users.change_user_settings + Ret brugerindstillinger + + + + + obsolete + obsolete + + + perm.database.see_status + Vis status + + + + + obsolete + obsolete + + + perm.database.update_db + Opdater database + + + + + obsolete + obsolete + + + perm.database.read_db_settings + Vis indstillinger + + + + + obsolete + obsolete + + + perm.database.write_db_settings + Ret indstillinger + + + + + obsolete + obsolete + + + perm.config.read_config + Vis konfiguration + + + + + obsolete + obsolete + + + perm.config.edit_config + Ret konfiguration + + + + + obsolete + obsolete + + + perm.config.server_info + Server info + + + + + obsolete + obsolete + + + perm.config.use_debug + Brug fejlfindingsværktøjer + + + + + obsolete + obsolete + + + perm.show_logs + Vis logs + + + + + obsolete + obsolete + + + perm.delete_logs + Slet log + + + + + obsolete + obsolete + + + perm.self.edit_infos + Ret info + + + + + obsolete + obsolete + + + perm.self.edit_username + Ret brugernavn + + + + + obsolete + obsolete + + + perm.self.show_permissions + Vis tilladelser + + + + + obsolete + obsolete + + + perm.self.show_logs + Se log + + + + + obsolete + obsolete + + + perm.self.create_labels + Opret labels + + + + + obsolete + obsolete + + + perm.self.edit_options + Ret indstillinger + + + + + obsolete + obsolete + + + perm.self.delete_profiles + Slet profiler + + + + + obsolete + obsolete + + + perm.self.edit_profiles + Ret profiler + + + + + obsolete + obsolete + + + perm.part.tools + Værktøjer + + + + + obsolete + obsolete + + + perm.groups + Grupper + + + + + obsolete + obsolete + + + perm.users + Brugere + + + + + obsolete + obsolete + + + perm.database + Database + + + + + obsolete + obsolete + + + perm.config + Instilinger + + + + + obsolete + obsolete + + + perm.system + System + + + + + obsolete + obsolete + + + perm.self + Ret din egen bruger + + + + + obsolete + obsolete + + + perm.labels + Labels + + + + + obsolete + obsolete + + + perm.part.category + Kategori + + + + + obsolete + obsolete + + + perm.part.minamount + Mindstebeholdning + + + + + obsolete + obsolete + + + perm.part.footprint + Footprint + + + + + obsolete + obsolete + + + perm.part.mpn + MPN + + + + + obsolete + obsolete + + + perm.part.status + Fremstillingsstatus + + + + + obsolete + obsolete + + + perm.part.tags + Tags + + + + + obsolete + obsolete + + + perm.part.unit + Måleenhed + + + + + obsolete + obsolete + + + perm.part.mass + Vægt + + + + + obsolete + obsolete + + + perm.part.lots + Lagerlokationer + + + + + obsolete + obsolete + + + perm.show_users + Vis den sidste bruger, der redigerede + + + + + obsolete + obsolete + + + perm.currencies + Valuta + + + + + obsolete + obsolete + + + perm.measurement_units + Måleenhed + + + + + obsolete + obsolete + + + user.settings.pw_old.label + Gammelt password + + + + + obsolete + obsolete + + + pw_reset.submit + Nulstil password + + + + + obsolete + obsolete + + + u2f_two_factor + Sikkerhedsnøgle (U2F) + + + + + obsolete + obsolete + + + google + Google + + + + + tfa.provider.webauthn_two_factor_provider + Sikkerhedsnøgle + + + + + obsolete + obsolete + + + tfa.provider.google + Godkendelses-app + + + + + obsolete + obsolete + + + Login successful + Logget ind med succes + + + + + obsolete + obsolete + + + log.type.exception + Ubehandlet undtagelse (udfaset) + + + + + obsolete + obsolete + + + log.type.user_login + Bruger logget ind + + + + + obsolete + obsolete + + + log.type.user_logout + Bruger logget ud + + + + + obsolete + obsolete + + + log.type.unknown + Ukendt + + + + + obsolete + obsolete + + + log.type.element_created + Element oprettet + + + + + obsolete + obsolete + + + log.type.element_edited + Element rettet + + + + + obsolete + obsolete + + + log.type.element_deleted + Element slettet + + + + + obsolete + obsolete + + + log.type.database_updated + Database er opdateret + + + + + obsolete + + + perm.revert_elements + Nulstil element + + + + + obsolete + + + perm.show_history + Vis historik + + + + + obsolete + + + perm.tools.lastActivity + Vis sidste aktivitet + + + + + obsolete + + + perm.tools.timeTravel + Vis tidligere versioner (tidsrejser) + + + + + obsolete + + + tfa_u2f.key_added_successful + Sikkerhedsnøgle tilføjet + + + + + obsolete + + + Username + Brugernavn + + + + + obsolete + + + log.type.security.google_disabled + Godkendelses-app deaktiveret + + + + + obsolete + + + log.type.security.u2f_removed + Sikkerhedsnøgle slettet + + + + + obsolete + + + log.type.security.u2f_added + Sikkerhedsnøgle tilføjet + + + + + obsolete + + + log.type.security.backup_keys_reset + Backupnøgler regenereret + + + + + obsolete + + + log.type.security.google_enabled + Godkendelses-app aktiveret + + + + + obsolete + + + log.type.security.password_changed + Password ændret + + + + + obsolete + + + log.type.security.trusted_device_reset + Godkendte enheder nulstillet + + + + + obsolete + + + log.type.collection_element_deleted + Hovedelement slettet + + + + + obsolete + + + log.type.security.password_reset + Nulstil password + + + + + obsolete + + + log.type.security.2fa_admin_reset + To-faktor-godkendelse nulstillet af administrator + + + + + obsolete + + + log.type.user_not_allowed + Forsøg på uautoriseret adgang + + + + + obsolete + + + log.database_updated.success + Succes + + + + + obsolete + + + label_options.barcode_type.2D + 2D + + + + + obsolete + + + label_options.barcode_type.1D + 1D + + + + + obsolete + + + perm.part.parameters + Parametre + + + + + obsolete + + + perm.attachment_show_private + Vis private bilag + + + + + obsolete + + + perm.tools.label_scanner + Labelscannner + + + + + obsolete + + + perm.self.read_profiles + Vis profiler + + + + + obsolete + + + perm.self.create_profiles + Opret profil + + + + + obsolete + + + perm.labels.use_twig + Brug Twig tilstand + + + + + label_profile.showInDropdown + Vis hurtigvalg i barcode + + + + + group.edit.enforce_2fa + Forlang to-faktor-godkendelse (2FA) + + + + + group.edit.enforce_2fa.help + Hvis denne option er valgt, skal hvert direkte medlem af denne gruppe konfigurere mindst en anden faktor til godkendelse. Anbefales f.eks. til administrative grupper med omfattende autorisationer. + + + + + selectpicker.empty + Ingenting valgt + + + + + selectpicker.nothing_selected + Ingenting valgt + + + + + entity.delete.must_not_contain_parts + Elementet "%PATH%" indeholder stadig komponenter. Rediger komponenterne for at kunne slette dette element. + + + + + entity.delete.must_not_contain_attachments + Filtypen indeholder stadig komponenter. Skift deres filtype for at kunne slette denne filtype. + + + + + entity.delete.must_not_contain_prices + Valuta indeholder stadig komponenter. Skift deres valuta for at kunne slette denne valuta. + + + + + entity.delete.must_not_contain_users + Der er stadigvæk brugere i denne gruppe. Vælg en anden gruppe for disse brugere for at kunne slette denne gruppe. + + + + + part.table.edit + Ret + + + + + part.table.edit.title + Ret komponent + + + + + part_list.action.action.title + Vælg handling + + + + + part_list.action.action.group.favorite + Favorit + + + + + part_list.action.action.favorite + Gør denne til favorit + + + + + part_list.action.action.unfavorite + Fjern favorit + + + + + part_list.action.action.group.change_field + Ret felt + + + + + part_list.action.action.change_category + Skift kategori + + + + + part_list.action.action.change_footprint + Ret footprint + + + + + part_list.action.action.change_manufacturer + Ret fabrikant + + + + + part_list.action.action.change_unit + Ret måleenhed + + + + + part_list.action.action.delete + Slet + + + + + part_list.action.submit + Ok + + + + + part_list.action.part_count + %count% komponenter valgt + + + + + company.edit.quick.website + Åbn webside + + + + + company.edit.quick.email + send e-mail + + + + + company.edit.quick.phone + Ring op + + + + + company.edit.quick.fax + Send fax + + + + + company.fax_number.placeholder + f.eks. +45 1234 5678 + + + + + part.edit.save_and_clone + Gem og dupliker + + + + + validator.file_ext_not_allowed + Filtypenavnet er ikke tilladt for denne bilagstype. + + + + + tools.reel_calc.title + SMD-rulle beregner + + + + + tools.reel_calc.inner_dia + Indre diameter + + + + + tools.reel_calc.outer_dia + Ydre diameter + + + + + tools.reel_calc.tape_thick + Tape tykkelse + + + + + tools.reel_calc.part_distance + Komponentafstand + + + + + tools.reel_calc.update + Opdater + + + + + tools.reel_calc.parts_per_meter + Komponenter per meter + + + + + tools.reel_calc.result_length + Tapelængde + + + + + tools.reel_calc.result_amount + Omtrentligt antal komponenter + + + + + tools.reel_calc.outer_greater_inner_error + Fejl: Den ydre diameter skal være større end den indvendige diameter! + + + + + tools.reel_calc.missing_values.error + Angiv venligst alle værdier! + + + + + tools.reel_calc.load_preset + Indlæs preset + + + + + tools.reel_calc.explanation + Denne kalkulator giver dig mulighed for at estimere hvor mange komponenter der er tilbage på en SMD-rulle. Mål de angivne dimensioner på rullen (eller brug specifikationerne) og tryk på "Opdater". + + + + + perm.tools.reel_calculator + SMD-rulle kalkulator + + + + + tree.tools.tools.reel_calculator + SMD-rullle kalkulator + + + + + user.pw_change_needed.flash + Ændring af password påkrævet! Venligst vælg et nyt password. + + + + + tree.root_node.text + Rod + + + + + part_list.action.select_null + Ingen elementer tilstede! + + + + + part_list.action.delete-title + Vil du virkelig slette disse komponenter? + + + + + part_list.action.delete-message + Disse komponenter og alle tilknyttede oplysninger (bilag, vedhæftede filer, prisoplysninger osv.) slettes. Dette kan ikke fortrydes! + + + + + part.table.actions.success + Handling lykkedes med succes. + + + + + attachment.edit.delete.confirm + Er du sikker på, at du vil slette dette bilag? + + + + + filter.text_constraint.value.operator.EQ + Lig med + + + + + filter.text_constraint.value.operator.NEQ + Forskellig fra + + + + + filter.text_constraint.value.operator.STARTS + Begynder med + + + + + filter.text_constraint.value.operator.CONTAINS + Indeholder + + + + + filter.text_constraint.value.operator.ENDS + Slutter med + + + + + filter.text_constraint.value.operator.LIKE + LIKE udtryk + + + + + filter.text_constraint.value.operator.REGEX + Almindelig udtryk + + + + + filter.number_constraint.value.operator.BETWEEN + Mellem + + + + + filter.number_constraint.AND + og + + + + + filter.entity_constraint.operator.EQ + Lig med (uden underelementer) + + + + + filter.entity_constraint.operator.NEQ + Forskellig fra (uden underelementer) + + + + + filter.entity_constraint.operator.INCLUDING_CHILDREN + Lig med (inklusiv underelementer) + + + + + filter.entity_constraint.operator.EXCLUDING_CHILDREN + Forskellig fra (inklusiv underelementer) + + + + + part.filter.dbId + Database ID + + + + + filter.tags_constraint.operator.ANY + Alle tags + + + + + filter.tags_constraint.operator.ALL + Alle tags + + + + + filter.tags_constraint.operator.NONE + Ingen tags + + + + + part.filter.lot_count + Antal partier + + + + + part.filter.attachments_count + Antal bilag + + + + + part.filter.orderdetails_count + Antal bestillingsinformationer + + + + + part.filter.lotExpirationDate + Udløbsdato for komponentbeholdning + + + + + part.filter.lotNeedsRefill + Lagerbeholdning skal genopfyldes + + + + + part.filter.lotUnknwonAmount + Lagerbestand med ukendt antal + + + + + part.filter.attachmentName + Bilagsnavn + + + + + filter.choice_constraint.operator.ANY + En af de udvalgte + + + + + filter.choice_constraint.operator.NONE + Ingen af de udvalgte + + + + + part.filter.amount_sum + Samlet mængde + + + + + filter.submit + Updatér + + + + + filter.discard + Fortryd ændringer + + + + + filter.clear_filters + Slet alle filtre + + + + + filter.title + Filter + + + + + filter.parameter_value_constraint.operator.= + Typ. Værdi = + + + + + filter.parameter_value_constraint.operator.!= + Typ. Værdi != + + + + + filter.parameter_value_constraint.operator.< + Typ. værdi < + + + + + filter.parameter_value_constraint.operator.> + Typ. værdi > + + + + + filter.parameter_value_constraint.operator.<= + Typ. værdi <= + + + + + filter.parameter_value_constraint.operator.>= + Typ. værdi >= + + + + + filter.parameter_value_constraint.operator.BETWEEN + Typ. værdi imellem + + + + + filter.parameter_value_constraint.operator.IN_RANGE + I værdiområdet + + + + + filter.parameter_value_constraint.operator.NOT_IN_RANGE + Ikke i værdiområdet + + + + + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE + Større end værdiområdet + + + + + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE + Større end eller lig med værdiområdet + + + + + filter.parameter_value_constraint.operator.LESS_THAN_RANGE + Mindre end værdiområdet + + + + + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE + Mindre end lig med værdiområdet + + + + + filter.parameter_value_constraint.operator.RANGE_IN_RANGE + helt indenfor værdiområdet + + + + + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE + Skærer værdiområdet + + + + + filter.text_constraint.value + Ingen værdi angivet + + + + + filter.number_constraint.value1 + Ingen værdi angivet + + + + + filter.number_constraint.value2 + Maksimalværdi + + + + + filter.datetime_constraint.value1 + Ingen dato/tid indstillet + + + + + filter.datetime_constraint.value2 + Maksimal dato/tid + + + + + filter.constraint.add + Tilføj filter + + + + + part.filter.parameters_count + Antal parametre + + + + + part.filter.lotDescription + Beskrivelse af komponentbeholdning + + + + + parts_list.search.searching_for + Søg i dele med søgeordet <b>%søgeord%</b> + + + + + parts_list.search_options.caption + Aktiverede søgemuligheder + + + + + attachment.table.element_type + Aktiverede søgemuligheder + + + + + log.level.debug + Debug + + + + + log.level.info + Info + + + + + log.level.notice + Meddelele + + + + + log.level.warning + Advarsel + + + + + log.level.error + Fejl + + + + + log.level.critical + Kritisk + + + + + log.level.alert + Alarm + + + + + log.level.emergency + Nødsituation + + + + + log.type.security + Sikkerhedsbegivenhed + + + + + log.type.instock_changed + [ALT] Beholdning ændret + + + + + log.target_id + ID for målelementet + + + + + entity.info.parts_count_recursive + Komponenter med dette element eller dets underelementer + + + + + tools.server_infos.title + Serverinfo + + + + + permission.preset.read_only + Read-only + + + + + permission.preset.read_only.desc + Tillad kun read-only for data + + + + + permission.preset.all_inherit + Alle nedarvede + + + + + permission.preset.all_inherit.desc + Indstil alle tilladelser til at kunne arve + + + + + permission.preset.all_forbid + Forbyd alle + + + + + permission.preset.all_forbid.desc + Indstil alle tilladelser til Ikke tilladt + + + + + permission.preset.all_allow + Tillad alle + + + + + permission.preset.all_allow.desc + Indstill alle tilladelser til Tilladt + + + + + perm.server_infos + Serverinfo + + + + + permission.preset.editor + Redaktør + + + + + permission.preset.editor.desc + Tillad at komponenter og datastrukturer kan redigeres + + + + + permission.preset.admin + Admin + + + + + permission.preset.admin.desc + Tillad administrative handlinger + + + + + permission.preset.button + Anvend skabelon + + + + + perm.attachments.show_private + Vis private bilag + + + + + perm.attachments.list_attachments + Se liste over alle bilag + + + + + user.edit.permission_success + Tilladelsesskabelon blev anvendt. Tjek, at de nye tilladelser lever op til dine forventninger. + + + + + perm.group.data + Data + + + + + part_list.action.action.group.needs_review + Gennemsyn nødvendigt + + + + + part_list.action.action.set_needs_review + Sæt status til Gennemgang nødvændig + + + + + part_list.action.action.unset_needs_review + Fjern Gennemganng nødvendig status + + + + + part.edit.ipn + Internt Partnummer (IPN) + + + + + part.ipn.not_defined + Ikke defineret + + + + + part.table.ipn + IPN + + + + + currency.edit.update_rate + Hent valutakurs + + + + + currency.edit.exchange_rate_update.unsupported_currency + Valutaen understøttes ikke af valutakursudbyderen. Tjek venligst konfigurationen af ​​valutakursudbyderne. + + + + + currency.edit.exchange_rate_update.generic_error + Valutakursen kan kke hentes. Tjek venligst konfigurationen af ​​valutakursudbyderne. + + + + + currency.edit.exchange_rate_updated.success + Valutakurs hentet med succes + + + + + project.bom.quantity + BOM mængde + + + + + project.bom.mountnames + Bestykningsnavn + + + + + project.bom.name + Navn + + + + + project.bom.comment + Noter + + + + + project.bom.part + Komponent + + + + + project.bom.add_entry + Tilføj post + + + + + part_list.action.group.projects + Projekter + + + + + part_list.action.projects.add_to_project + Tilføj komponent til projekt + + + + + project.bom.delete.confirm + Vil du virkeligt slette denne stykliste (BOM)? + + + + + project.add_parts_to_project + Tilføj komponenter til stykliste (BOM) + + + + + part.info.add_part_to_project + Føj denne komponent til et projekt + + + + + project_bom_entry.label + Registrering af BOM + + + + + project.edit.status + Projektstatus + + + + + project.status.draft + Kladde + + + + + project.status.planning + Under planlægning + + + + + project.status.in_production + I produktion + + + + + project.status.finished + Ophørt + + + + + project.status.archived + Arkiveret + + + + + part.new_build_part.error.build_part_already_exists + Dette projekt har allerede en linket komponent + + + + + project.edit.associated_build_part + Tilhørende bygge komponent + + + + + project.edit.associated_build_part.add + Tilføj bygge komponent + + + + + project.edit.associated_build.hint + Denne komponent repræsenterer de færdigbyggede forekomster af projektet, der er gemt et sted + + + + + part.info.projectBuildPart.hint + Denne komponent repræsenterer de byggede forekomster af det følgende projekt og er knyttet til det + + + + + part.is_build_part + Er produktkomponent + + + + + project.info.title + Projektinfo + + + + + project.info.bom_entries_count + Styklisteposter + + + + + project.info.sub_projects_count + Underprojekt + + + + + project.info.bom_add_parts + Tilføj nye styklisteposter + + + + + project.info.info.label + Info + + + + + project.info.sub_projects.label + Underprojekter + + + + + project.bom.price + Pris + + + + + part.info.withdraw_modal.title.withdraw + Fjern komponenter fra lot + + + + + part.info.withdraw_modal.title.add + Tilføj komponenter til lot + + + + + part.info.withdraw_modal.title.move + Flyt komponenter til et andet lot + + + + + part.info.withdraw_modal.amount + Mængde + + + + + part.info.withdraw_modal.move_to + Flyt til + + + + + part.info.withdraw_modal.comment + Kommentar + + + + + part.info.withdraw_modal.comment.hint + Du kan indtaste en kommentar her, der beskriver, hvorfor denne handling blev udført (f.eks. hvorfor denne komponent var nødvendig). Disse oplysninger gemmes i loggen. + + + + + modal.close + Luk + + + + + modal.submit + Indsend + + + + + part.withdraw.success + Komponenter blev fjernet/tilføjet/flyttet. + + + + + perm.parts_stock + Komponentbeholdning + + + + + perm.parts_stock.withdraw + Fjern komponenter fra lageret + + + + + perm.parts_stock.add + Tilføj komponenter til lager + + + + + perm.parts_stock.move + Flyt komponenter mellem lagerbeholdninger + + + + + user.permissions_schema_updated + Din brugerkontos tilladelsesliste er blevet opdateret til den seneste version. + + + + + log.type.part_stock_changed + Komponentbeholdning ændret + + + + + log.part_stock_changed.withdraw + Komponenter fjernet + + + + + log.part_stock_changed.add + Komponenter tilføjet til lager + + + + + log.part_stock_changed.move + Komponenter flyttet + + + + + log.part_stock_changed.comment + Kommentar + + + + + log.part_stock_changed.change + Ændring + + + + + log.part_stock_changed.move_target + Flyttet til + + + + + tools.builtin_footprints_viewer.title + Indbyggede Footprint billeder + + + + + tools.builtin_footprints_viewer.hint + Dette galleri viser alle de inkluderede footprint-billeder. Hvis du vil bruge det i et bilag, skal du skrive navnet (eller et nøgleord) i bilagets URL-felt og vælge det ønskede billede fra rullemenuen. + + + + + tools.ic_logos.title + IC logoer + + + + + part_list.action.group.labels + Labels + + + + + part_list.action.projects.generate_label + Opret labels (til komponenter) + + + + + part_list.action.projects.generate_label_lot + Opret labels (til komponentbeholdning) + + + + + part_list.action.generate_label.empty + Tom label + + + + + project.info.builds.label + Byg + + + + + project.builds.build_not_possible + Byg ikke mulig: Der er ikke nok komponenter tilsted for dette byg + + + + + project.builds.following_bom_entries_miss_instock + Følgende komponenter har ikke nok lagerbeholdning til at bygge dette projekt mindst én gang: + + + + + project.builds.stocked + På lager + + + + + project.builds.needed + Nødvendig + + + + + project.builds.build_possible + Der kan laves et byg + + + + + project.builds.number_of_builds_possible + Du har nok komponenter på lager til at bygge <b>%max_builds%</b> kopier af dette projekt. + + + + + project.builds.check_project_status + Den aktuelle projektstatus er <b>"%project_status%"</b>. Du bør tjekke, om du virkelig vil bygge projektet med denne status! + + + + + project.builds.following_bom_entries_miss_instock_n + Der er ikke nok komponenter på lager til at bygge dette projekt %number_of_builds% gange. Der er ikke nok af følgende komponenter på lager. + + + + + project.build.flash.invalid_input + Projektet kan ikke bygges. Tjek venligst dine input + + + + + project.build.required_qty + Nødvendigt antal + + + + + project.build.btn_build + Byg + + + + + project.build.help + Vælg fra hvilke lagre de komponenter, der kræves til bygget skal tages (og i hvilken mængde). Marker afkrydsningsfeltet for hver styklistepost, når du har fjernet komponenterne, eller brug det øverste afkrydsningsfelt til at markere alle felterne på én gang. + + + + + project.build.buildsPartLot.new_lot + Opret ny beholdning + + + + + project.build.add_builds_to_builds_part + Tilføj byg til projekt-byg-dele + + + + + project.build.builds_part_lot + Mål mængde + + + + + project.builds.number_of_builds + Byg antal + + + + + project.builds.no_stocked_builds + Antal gemte byg-instanser + + + + + user.change_avatar.label + Ændr profilbillede + + + + + user_settings.change_avatar.label + Ændre profilbillede + + + + + user_settings.remove_avatar.label + Fjern profilbillede + + + + + part.edit.name.category_hint + tip fra kategori + + + + + category.edit.partname_regex.placeholder + f.eks. "/Kondensator \d+ nF/i" + + + + + category.edit.partname_regex.help + Et PCRE-kompatibelt regulært udtryk, som delnavnet skal opfylde. + + + + + entity.select.add_hint + Brug -> for at oprette under-strukturer, f.eks. "Element 1->Element 1.1" + + + + + entity.select.group.new_not_added_to_DB + Ny (endnu ikke tilføjet til database) + + + + + part.edit.save_and_new + Gem og opret en ny tom komponent + + + + + homepage.first_steps.title + Første skridt + + + + + homepage.first_steps.introduction + Databasen er i øjeblikket tom. Du vil måske læse <a href="%url%">dokumentationen</a> eller begynde at oprette følgende datastrukturer. + + + + + homepage.first_steps.create_part + Eller du kan direkte oprette en <a href="%url%">ny komponent</a>. + + + + + homepage.first_steps.hide_hint + Denne meddelelse vil blive skjult, når du har oprettet den første komponent. + + + + + homepage.forum.text + For spørgsmål om Part-DB, brug <a class="link-external" rel="noopener" target="_blank" href="%href%">diskussionsforummet</a> + + + + + log.element_edited.changed_fields.category + Kategori + + + + + log.element_edited.changed_fields.footprint + Footprint + + + + + log.element_edited.changed_fields.manufacturer + Fabrikant + + + + + log.element_edited.changed_fields.value_typical + typ. værdi + + + + + log.element_edited.changed_fields.pw_reset_expires + Nulstil password + + + + + log.element_edited.changed_fields.comment + Noter + + + + + log.element_edited.changed_fields.supplierpartnr + Leverandør part-nummer + + + + + log.element_edited.changed_fields.supplier_product_url + Produkt URL + + + + + log.element_edited.changed_fields.price + Pris + + + + + log.element_edited.changed_fields.min_discount_quantity + Minimum ordremængde + + + + + log.element_edited.changed_fields.original_filename + Originalt bilagsnavn, filnavn + + + + + log.element_edited.changed_fields.path + Sti + + + + + log.element_edited.changed_fields.description + Beskrivelse + + + + + log.element_edited.changed_fields.manufacturing_status + Fabrikantstatus + + + + + log.element_edited.changed_fields.options.barcode_type + Barcode type + + + + + log.element_edited.changed_fields.status + Status + + + + + log.element_edited.changed_fields.quantity + BOM antal + + + + + log.element_edited.changed_fields.mountnames + Montagenavne + + + + + log.element_edited.changed_fields.name + Navn + + + + + log.element_edited.changed_fields.iso_code + ISO-kode + + + + + log.element_edited.changed_fields.unit + Enhedssymbol + + + + + log.element_edited.changed_fields.is_integer + Er heltal + + + + + log.element_edited.changed_fields.use_si_prefix + Benyt SI-præfiks + + + + + log.element_edited.changed_fields.options.width + Bredde + + + + + log.element_edited.changed_fields.options.height + Højde + + + + + log.element_edited.changed_fields.options.supported_element + Elementtype + + + + + log.element_edited.changed_fields.mass + Masse + + + + + log.element_edited.changed_fields.ipn + IPN + + + + + log.element_edited.changed_fields.favorite + Favorit + + + + + log.element_edited.changed_fields.minamount + Minimum lagerbeholdning + + + + + log.element_edited.changed_fields.manufacturer_product_url + Link til produktside + + + + + log.element_edited.changed_fields.manufacturer_product_number + MPN + + + + + log.element_edited.changed_fields.partUnit + Måleenhed + + + + + log.element_edited.changed_fields.expiration_date + Udløbsdato + + + + + log.element_edited.changed_fields.amount + Mængde + + + + + log.element_edited.changed_fields.storage_location + Lagerlokation + + + + + attachment.max_file_size + Maksimum bilagsstørrelse + + + + + user.saml_user + SSO / SAML Bruger + + + + + user.saml_user.pw_change_hint + Du bruger Single Sign-On (SSO) til at logge ind. Du kan derfor ikke konfigurere dit password og to-faktor godkendelse her. Brug i stedet det centrale websted for din SSO-udbyder! + + + + + login.sso_saml_login + Single Sign-On Login (SSO) + + + + + login.local_login_hint + Nedenstående formular kan kun bruges til at logge ind med en lokal bruger. Ønsker du i stedet at logge ind via single sign-on, skal du bruge knappen ovenfor. + + + + + part_list.action.action.export + Eksporter komponenter + + + + + part_list.action.export_json + Eksporter som JSON + + + + + part_list.action.export_csv + Eksporter som CSV + + + + + part_list.action.export_yaml + Esporter som YAML + + + + + part_list.action.export_xml + Eksporter som XML + + + + + parts.import.title + Importer kompenter + + + + + parts.import.errors.title + Problemer ved import + + + + + parts.import.flash.error + Der opstod fejl under eksport. Dette skyldes sandsynligvis fejlbehæftede data. + + + + + parts.import.format.auto + Automatisk (baseret på endelsen på bilagsnavnet) + + + + + parts.import.flash.error.unknown_format + Formatet kunne ikke bestemmes automatisk. Vælg venligst det korrekte format manuelt! + + + + + parts.import.flash.error.invalid_file + Bilaget er beskadiget/forkert formateret. Tjek, at du har valgt det rigtige format. + + + + + parts.import.part_category.label + Gennemtving kategori + + + + + parts.import.part_category.help + Hvis du vælger en kategori her, vil alle importerede komponenter blive tildelt denne kategori, uanset hvad der er i importdataene. + + + + + import.create_unknown_datastructures + Opret ukendte datastrukturer + + + + + import.create_unknown_datastructures.help + Hvis denne mulighed er valgt, oprettes automatisk datastrukturer (f.eks. kategorier, footprints osv.), som endnu ikke findes i databasen. Hvis denne mulighed ikke er valgt, vil kun datastrukturer, der allerede findes i databasen, blive brugt. Og hvis der ikke findes en passende struktur, vil det tilsvarende felt for komponenten stå tomt. + + + + + import.path_delimiter + Stibegrænser + + + + + import.path_delimiter.help + Afgrænseren bruges til at adskille de forskellige niveauer af datastrukturer (såsom kategorier, footprint osv.) i stispecifikationer. + + + + + parts.import.help_documentation + Se <a href="%link%">dokumentationen</a> for mere information om bilagsformatet. + + + + + parts.import.help + Med dette værktøj kan du importere komponenter fra eksisterende bilag. Komponenterne gemmes direkte i databasen (uden mulighed for at kontrollere dem igen på forhånd). Tjek venligst din importfil her, før du uploader! + + + + + parts.import.flash.success + Komponentimport lykkedes + + + + + parts.import.errors.imported_entities + Importerde komponenter + + + + + perm.import + Importer data + + + + + parts.import.part_needs_review.label + Marker alle komponenter som "Gennnemgang nødvendig" + + + + + parts.import.part_needs_review.help + Hvis denne mulighed er valgt, vil alle dele blive markeret som "Kræver gennemgang", uanset hvad der blev angivet i dataene. + + + + + project.bom_import.flash.success + %count% BOM Einträge erfolgreich importiert. +​ +Oversæt med stemmen +44 / 5.000 +Oversættelsesresultater +Oversættelsen +%count% styklisteposter blev importeret. + + + + + project.bom_import.type + Typ + + + + + project.bom_import.type.kicad_pcbnew + KiCAD Pcbnew BOM (CSV fil) + + + + + project.bom_import.clear_existing_bom + let eksisterende styklisteposter før import + + + + + project.bom_import.clear_existing_bom.help + Hvis denne mulighed er valgt, vil alle styklisteposter, der allerede findes i projektet, blive slettet og overskrevet med de importerede styklistedata. + + + + + project.bom_import.flash.invalid_file + Filen kunne ikke importeres. Tjek, at du har valgt den korrekte bilagstype. Fejlmeddelelse: %message% + + + + + project.bom_import.flash.invalid_entries + Valideringsfejl! Tjek venligst den importerede fil! + + + + + project.import_bom + Importer stykliste til projekt + + + + + project.edit.bom.import_bom + Importer BOM + + + + + measurement_unit.new + Ny måleenhed + + + + + measurement_unit.edit + Ret måleenhed + + From b177db82f5f32704b6bd515d8e428c8bb8ec94c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 17:15:29 +0000 Subject: [PATCH 007/634] Bump actions/cache from 3 to 4 Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/assets_artifact_build.yml | 4 ++-- .github/workflows/static_analysis.yml | 2 +- .github/workflows/tests.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index b56db403..0bbfe432 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -34,7 +34,7 @@ jobs: run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -48,7 +48,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v3 + - uses: actions/cache@v4 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index 6d356a75..20150b28 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -31,7 +31,7 @@ jobs: run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4650d1ff..2b901dd2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -64,7 +64,7 @@ jobs: id: composer-cache run: | echo "::set-output name=dir::$(composer config cache-files-dir)" - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} @@ -75,7 +75,7 @@ jobs: id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - - uses: actions/cache@v3 + - uses: actions/cache@v4 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} From daabb9f55ec241bd267c3925291982957d8257a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 24 Jan 2024 11:53:55 +0100 Subject: [PATCH 008/634] New Crowdin updates (#491) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations security.en.xlf (Danish) * New translations messages.en.xlf (Danish) * New translations messages.en.xlf (Danish) --- translations/messages.da.xlf | 1404 +++++++++++++++++++++++++++++++++- translations/security.da.xlf | 4 +- 2 files changed, 1404 insertions(+), 4 deletions(-) diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index c062e894..bc6f7db5 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -9,7 +9,7 @@ attachment_type.caption - Forespørgsel + Bilags datatyper @@ -19,7 +19,7 @@ attachment_type.edit - Ret filtype + Ret bilags filtype @@ -10448,6 +10448,174 @@ Element 3 Navn + + + log.element_edited.changed_fields.part + Komponent + + + + + log.element_edited.changed_fields.price_currency + prisens valuta + + + + + log.element_edited.changed_fields.partname_hint + Komponentnavn henvisning + + + + + log.element_edited.changed_fields.partname_regex + Navnefilter + + + + + log.element_edited.changed_fields.disable_footprints + Deaktiver footprints + + + + + log.element_edited.changed_fields.disable_manufacturers + Deaktiver fabrikanter + + + + + log.element_edited.changed_fields.disable_autodatasheets + Deaktiver automatiske databladlinks + + + + + log.element_edited.changed_fields.disable_properties + Deaktiver egenskaber + + + + + log.element_edited.changed_fields.default_description + Standardbeskrivelse + + + + + log.element_edited.changed_fields.default_comment + Standardkommentar + + + + + log.element_edited.changed_fields.filetype_filter + Tilladte bilagstyper + + + + + log.element_edited.changed_fields.not_selectable + Ikke valgt + + + + + log.element_edited.changed_fields.parent + Overordnet element + + + + + log.element_edited.changed_fields.shipping_costs + Forsendelsespris + + + + + log.element_edited.changed_fields.default_currency + Standard valuta + + + + + log.element_edited.changed_fields.address + Adresse + + + + + log.element_edited.changed_fields.phone_number + Telefonnummer + + + + + log.element_edited.changed_fields.fax_number + Fax nummer + + + + + log.element_edited.changed_fields.email_address + e-mail + + + + + log.element_edited.changed_fields.website + Webside + + + + + log.element_edited.changed_fields.auto_product_url + Produkt URL + + + + + log.element_edited.changed_fields.is_full + Lagerplads fuld + + + + + log.element_edited.changed_fields.limit_to_existing_parts + Kun eksisterende komponenter + + + + + log.element_edited.changed_fields.only_single_part + Kun én komponent + + + + + log.element_edited.changed_fields.storage_type + Lagertype + + + + + log.element_edited.changed_fields.footprint_3d + 3D-model + + + + + log.element_edited.changed_fields.master_picture_attachment + Miniaturebillede + + + + + log.element_edited.changed_fields.exchange_rate + Veksel kurs + + log.element_edited.changed_fields.iso_code @@ -10490,6 +10658,138 @@ Element 3 Elementtype + + + log.element_edited.changed_fields.options.additional_css + Yderligere CSS + + + + + log.element_edited.changed_fields.options.lines + Indhold + + + + + log.element_edited.changed_fields.permissions.data + Tilladelser + + + + + log.element_edited.changed_fields.disabled + Deaktiveret + + + + + log.element_edited.changed_fields.theme + Tema + + + + + log.element_edited.changed_fields.timezone + Tidszone + + + + + log.element_edited.changed_fields.language + Sprog + + + + + log.element_edited.changed_fields.email + e-mail + + + + + log.element_edited.changed_fields.department + Afdeling + + + + + log.element_edited.changed_fields.last_name + Fornavn + + + + + log.element_edited.changed_fields.first_name + Efternavn + + + + + log.element_edited.changed_fields.group + Gruppe + + + + + log.element_edited.changed_fields.currency + foretrukken valuta + + + + + log.element_edited.changed_fields.enforce2FA + Fremtving 2FA + + + + + log.element_edited.changed_fields.symbol + Symbol + + + + + log.element_edited.changed_fields.value_min + Minimum værdi + + + + + log.element_edited.changed_fields.value_max + Maksimum værdi + + + + + log.element_edited.changed_fields.value_text + Tekstværdi + + + + + log.element_edited.changed_fields.show_in_table + Vis på tabelform + + + + + log.element_edited.changed_fields.attachment_type + Datatype + + + + + log.element_edited.changed_fields.needs_review + Behøver gennemgang + + + + + log.element_edited.changed_fields.tags + Tags + + log.element_edited.changed_fields.mass @@ -10796,5 +11096,1105 @@ Oversættelsen Ret måleenhed + + + user.aboutMe.label + Om mig + + + + + storelocation.owner.label + Ejer + + + + + storelocation.part_owner_must_match.label + Komponentejer skal matche lagerplaceringsejer + + + + + part_lot.owner + Ejer + + + + + part_lot.owner.help + Kun ejeren kan fjerne eller tilføje komponenter fra denne beholdning. + + + + + log.element_edited.changed_fields.owner + Ejer + + + + + log.element_edited.changed_fields.instock_unknown + Mængde ukendt + + + + + log.element_edited.changed_fields.needs_refill + Skal genopfyldes + + + + + part.withdraw.access_denied + Du er ikke autoriseret til at udføre den ønskede handling! Tjek venligst dine autorisationer og ejeren af ​​komponentbeholdningen. + + + + + part.info.amount.less_than_desired + Mindre end ønsket + + + + + log.cli_user + CLI bruger + + + + + log.element_edited.changed_fields.part_owner_must_match + Komponentejeren skal svare til lagerstedets ejer! + + + + + part.filter.lessThanDesired + Mindre tilgængelig end ønsket (samlet mængde < minimumsmængde) + + + + + part.filter.lotOwner + Ejer af inventaret + + + + + user.show_email_on_profile.label + Vis e-mail adresse på den offenlige profilside + + + + + log.details.title + Log detaljer + + + + + log.user_login.login_from_ip + Login fra IP-Adresse + + + + + log.user_login.ip_anonymize_hint + Hvis de sidste cifre i IP-adressen mangler, aktiveres DSGV-tilstanden, hvor IP-adresserne anonymiseres. + + + + + log.user_not_allowed.unauthorized_access_attempt_to + Uautoriseret adgang forsøg på side + + + + + log.user_not_allowed.hint + Anmodningen blev blokeret. Der skulle ikke være behov for yderligere handling. + + + + + log.no_comment + Ingen kommentarer + + + + + log.element_changed.field + Felt + + + + + log.element_changed.data_before + Data før ændring + + + + + error_table.error + Der opstod en fejl under anmodningen. + + + + + part.table.invalid_regex + Ugyldigt regulært udtryk (regex) + + + + + log.element_changed.data_after + Data efter ændring + + + + + log.element_changed.diff + Forskel + + + + + log.undo.undo.short + Fortryd + + + + + log.undo.revert.short + Vend tilbage til version + + + + + log.view_version + Vis version + + + + + log.undo.undelete.short + Gendan + + + + + log.element_edited.changed_fields.id + ID + + + + + log.element_edited.changed_fields.id_owner + Ejer + + + + + log.element_edited.changed_fields.parent_id + Overordnet element + + + + + log.details.delete_entry + Slet logpost + + + + + log.delete.message.title + Vil du virkelig slette denne logpost? + + + + + log.delete.message + Hvis dette er en historikindgang for et element, vil sletning af det resultere i tab af historikdata! Dette kan give uventede resultater, når du bruger tidsrejsefunktionen. + + + + + log.collection_deleted.on_collection + i samling + + + + + log.element_edited.changed_fields.attachments + Bilag + + + + + tfa_u2f.add_key.registration_error + Der opstod en fejl under registrering af sikkerhedsnøgle. Prøv igen, eller brug en anden nøgle! + + + + + log.target_type.none + Ingen + + + + + ui.darkmode.light + Lys + + + + + ui.darkmode.dark + Mørk + + + + + ui.darkmode.auto + Auto (baseret på systemindstillinger) + + + + + label_generator.no_lines_given + Intet tekstindhold angivet! De oprettede etiketter vil være tomme. + + + + + user.password_strength.very_weak + Meget svag + + + + + user.password_strength.weak + Svag + + + + + user.password_strength.medium + Middel + + + + + user.password_strength.strong + Stærk + + + + + user.password_strength.very_strong + Meget stærk + + + + + perm.users.impersonate + Kopier en anden bruger + + + + + user.impersonated_by.label + Kopieret fra bruger + + + + + user.stop_impersonation + Afslut kopiering fra bruger + + + + + user.impersonate.btn + Kopier fra bruger + + + + + user.impersonate.confirm.title + Er du sikker på at du vil kopiere fra denne bruger? + + + + + user.impersonate.confirm.message + Dette vil blive logget. Du bør kun gøre dette med en grund. + +Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver dette, vil du modtage en "Adgang nægtet"-meddelelse. + + + + + log.type.security.user_impersonated + Kopieret bruger + + + + + info_providers.providers_list.title + Kilder til information + + + + + info_providers.providers_list.active + Aktiv + + + + + info_providers.providers_list.disabled + Deaktiveret + + + + + info_providers.capabilities.basic + Basis + + + + + info_providers.capabilities.footprint + Footprint + + + + + info_providers.capabilities.picture + Billede + + + + + info_providers.capabilities.datasheet + Datablade + + + + + info_providers.capabilities.price + Pris + + + + + part.info_provider_reference.badge + Kilden til information, der bruges til at oprette denne komponent + + + + + part.info_provider_reference + Genereret fra informationskilde + + + + + oauth_client.connect.btn + Forbind OAuth + + + + + info_providers.table.provider.label + Kilde + + + + + info_providers.search.keyword + Søgeord + + + + + info_providers.search.submit + Søg + + + + + info_providers.search.providers.help + Vælg de informationskilder, der skal søges i. + + + + + info_providers.search.providers + Kilder + + + + + info_providers.search.info_providers_list + Se alle tilgængelige informationskilder + + + + + info_providers.search.title + Opret komponent vha. informationskilde + + + + + oauth_client.flash.connection_successful + Forbindelsen til OAuth-applikationen er etableret! + + + + + perm.part.info_providers + Informationskilder + + + + + perm.part.info_providers.create_parts + Opret komponenter + + + + + entity.edit.alternative_names.label + Alternativt navn + + + + + entity.edit.alternative_names.help + De alternative navne, der er angivet her, bruges til automatisk at vælge dette element baseret på data returneret fra informationskilder. + + + + + info_providers.form.help_prefix + Kilde + + + + + update_manager.new_version_available.title + Ny version tilgængelig + + + + + update_manager.new_version_available.text + En ny version af Part-DB er tilgængelig. Her finder du mere information + + + + + update_manager.new_version_available.only_administrators_can_see + Kun administratorer kan se denne meddelelse + + + + + perm.system.show_available_updates + Vis tilgængelige Part-DB opdateringer + + + + + user.settings.api_tokens + API token + + + + + user.settings.api_tokens.description + Ved at bruge et API-token kan andre applikationer få adgang til Part-DB med deres brugerrettigheder til at udføre forskellige handlinger ved hjælp af Part-DB REST API. Hvis du sletter et API-token, kan det program, der bruger token'et, ikke længere få adgang til Part-DB på dets vegne. + + + + + api_tokens.name + Navn + + + + + api_tokens.access_level + Adgangsniveau + + + + + api_tokens.expiration_date + Udløbsdato + + + + + api_tokens.added_date + Oprettet den + + + + + api_tokens.last_time_used + Sidste anvendelse + + + + + datetime.never + Aldrig + + + + + api_token.valid + Gyldig + + + + + api_token.expired + Udløbet + + + + + user.settings.show_api_documentation + Vis API dokumentation + + + + + api_token.create_new + Opret nyt API token + + + + + api_token.level.read_only + Read-only + + + + + api_token.level.edit + Ret + + + + + api_token.level.admin + Admin + + + + + api_token.level.full + Fuld + + + + + api_tokens.access_level.help + Dette giver dig mulighed for at begrænse, hvad API-tokenet giver adgang til. Adgang er altid begrænset af brugerens tilladelser. + + + + + api_tokens.expiration_date.help + Efter denne dato vil tokenet ikke længere være brugbart. Hvis dette felt efterlades tomt, vil tokenet aldrig udløbe. + + + + + api_tokens.your_token_is + Dit API token er + + + + + api_tokens.please_save_it + Gem venligst dette. Du vil ikke kunne se det igen! + + + + + api_tokens.create_new.back_to_user_settings + Tilbage til brugerindstillinger + + + + + project.build.dont_check_quantity + Kontrollerer ikke mængder + + + + + project.build.dont_check_quantity.help + Hvis denne mulighed er valgt, vil de valgte mængder blive fjernet fra lageret, uanset om der er flere eller færre komponenter, end der reelt er nødvendige for at bygge projektet. + + + + + part_list.action.invert_selection + Inverter valg + + + + + perm.api + API + + + + + perm.api.access_api + API adgang + + + + + perm.api.manage_tokens + Administrer API-tokens + + + + + user.settings.api_tokens.delete.title + Er du sikker på, at du vil slette dette API-token? + + + + + user.settings.api_tokens.delete + Slet + + + + + user.settings.api_tokens.delete.message + Den applikation, der bruger dette token, vil ikke længere have adgang til Part-DB. Dette kan ikke fortrydes! + + + + + api_tokens.deleted + API-token blev fjernet! + + + + + user.settings.api_tokens.no_api_tokens_yet + Ingen API-tokens er blevet oprettet endnu. + + + + + api_token.ends_with + Ender med + + + + + entity.select.creating_new_entities_not_allowed + Du er ikke autoriseret til at oprette nye elementer af denne type! Vælg venligst et givet element. + + + + + scan_dialog.mode + Barcode type + + + + + scan_dialog.mode.auto + Automatisk genkendelse + + + + + scan_dialog.mode.ipn + IPN barcode + + + + + scan_dialog.mode.internal + Part-DB barcode + + + + + part_association.label + Komponentforbindelse + + + + + part.edit.tab.associations + Forbundne komponenter + + + + + part_association.edit.other_part + Forbunden komponent + + + + + part_association.edit.type + type relation + + + + + part_association.edit.comment + Noter + + + + + part_association.edit.type.help + Her kan du vælge hvilken type forbindelse komponenterne har. + + + + + part_association.table.from_this_part + Links fra denne komponent til andre + + + + + part_association.table.from + Fra + + + + + part_association.table.type + Relation + + + + + part_association.table.to + Til + + + + + part_association.type.compatible + Er kompatibel med + + + + + part_association.table.to_this_part + Links til denne komponent fra andre + + + + + part_association.type.other + Andet (egen værdi) + + + + + part_association.type.supersedes + Erstatter + + + + + part_association.edit.other_type + brugerdefineret type + + + + + part_association.edit.delete.confirm + Er du sikker på, at du vil slette denne genvej? Dette kan ikke fortrydes. + + + + + part_lot.edit.advanced + Vis avancerede muligheder + + + + + part_lot.edit.vendor_barcode + Leverandør barcode + + + + + part_lot.edit.vendor_barcode.help + Hvis denne beholdning allerede har en stregkode (f.eks. påført af leverandøren), kan du indtaste stregkodens indhold her, så du kan finde denne beholdning ved at scanne stregkoden. + + + + + scan_dialog.mode.vendor + Leverandørstregkode (konfigureret i komponentbeholdning) + + + + + project.bom.instockAmount + Lagerantal + + + + + collection_type.new_element.tooltip + Dette element er nyoprettet og er endnu ikke gemt i databasen. + + + + + part.merge.title + Sammenflæt komponent + + + + + part.merge.title.into + sammen til + + + + + part.merge.confirm.title + Er du sikker på at du vil sammenflætte <b>%other%</b> til <b>%target%</b>? + + + + + part.merge.confirm.message + <b>%other%</b> vil blive slettet, og komponenten vil blive gemt med den viste informaton. + + + + + part.info.merge_modal.title + Sammenflæt kompontenter + + + + + part.info.merge_modal.other_part + Andet komponent + + + + + part.info.merge_modal.other_into_this + Sammenflet anden komponent ind i denne (slet anden komponent, behold denne) + + + + + part.info.merge_modal.this_into_other + Flet denne komponent til en anden (slet denne komponent, behold en anden) + + + + + part.info.merge_btn + Sammenflæt komponent + + + + + part.update_part_from_info_provider.btn + Opdater komponent fra informationskilden + + + + + info_providers.update_part.title + Opdater komponent fra informationskilden + + + + + part.merge.flash.please_review + Data er endnu ikke blevet gemt. Gennemgå ændringerne, og klik på Gem for at gemme dataene. + + + + + user.edit.flash.permissions_fixed + De nødvendige tilladelser til andre tilladelser manglede. Dette er blevet rettet. Tjek venligst, om tilladelserne svarer til dine krav. + + + + + permission.legend.dependency_note + Bemærk venligst, at nogle autorisationsoperationer afhænger af hinanden. Hvis du modtager en advarsel om, at manglende tilladelser er blevet rettet, og en tilladelse er blevet sat tilbage til tilladt, skal du også indstille den afhængige handling til forbudt. Afhængighederne er normalt placeret til højre for en operation. + + + + + log.part_stock_changed.timestamp + Tidspunkt + + + + + part.info.withdraw_modal.timestamp + Handlingstidspunkt + + + + + part.info.withdraw_modal.timestamp.hint + Dette felt giver dig mulighed for at angive den faktiske dato, da lageroperationen rent faktisk blev udført, ikke kun datoen, hvor den blev logget. Denne værdi gemmes i det ekstra felt i logposten. + + + + + part.info.withdraw_modal.delete_lot_if_empty + Slet denne beholdning, når den bliver tom under drift + + + + + info_providers.search.error.client_exception + Der opstod en fejl under kommunikationen med informationsudbyderen. Gennemgå konfigurationen for denne udbyder, og forny OAuth-token'erne, hvis det er muligt. + + + + + eda_info.reference_prefix.placeholder + f.eks. R + + + + + eda_info.reference_prefix + Referencepræfiks + + + + + eda_info.kicad_section.title + KiCad specifikke indstillinger + + + + + eda_info.value + Værdi + + + + + eda_info.value.placeholder + f.eks. 100n + + + + + eda_info.exclude_from_bom + Udelad komponent fra stykliste (BOM) + + + + + eda_info.exclude_from_board + Udelad komponent fra PCB/Print + + + + + eda_info.exclude_from_sim + Udelad komponent fra simulering + + + + + eda_info.kicad_symbol + KiCad diagramsymbol + + + + + eda_info.kicad_symbol.placeholder + f.eks. transistor_BJT:BC547 + + + + + eda_info.kicad_footprint + KiCad footprint + + + + + eda_info.kicad_footprint.placeholder + f.eks. Package_TO_SOT_THT:TO-92 + + + + + part.edit.tab.eda + EDA information + + + + + api.api_endpoints.title + API endpoint + + + + + api.api_endpoints.partdb + Part-DB API + + + + + api.api_endpoints.kicad_root_url + KiCad API root URL + + + + + eda_info.visibility + Gennemtving synlighed + + + + + eda_info.visibility.help + Som standard bestemmes synlighed automatisk i EDA-softwaren. Ved at bruge dette afkrydsningsfelt kan du tvinge komponenten til at være synlig eller usynlig. + + + + + part.withdraw.zero_amount + Du forsøgte at fjerne/tilføje en mængde sat til nul! Der blev ikke foretaget nogen handling. + + diff --git a/translations/security.da.xlf b/translations/security.da.xlf index f66000e0..0b1423fe 100644 --- a/translations/security.da.xlf +++ b/translations/security.da.xlf @@ -4,13 +4,13 @@ user.login_error.user_disabled - Din konto er deaktiveret! Kontakt en administrator hvis du mener dette er forkert. + Din konto er deaktiveret! Kontakt en administrator, hvis du mener, at dette er en fejl. saml.error.cannot_login_local_user_per_saml - Du kan ikke logge ind som lokalbruger via SSO! Brug dit lokale bruger-password i stedet for. + Du kan ikke logge ind som lokal bruger via SSO! Brug dit lokale password i stedet. From 046803b9c4781723530141cc3be2cbe69b4c750d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 24 Jan 2024 11:56:56 +0100 Subject: [PATCH 009/634] Added danish to prefered languages --- config/parameters.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/parameters.yaml b/config/parameters.yaml index df49cb4a..13b07a35 100644 --- a/config/parameters.yaml +++ b/config/parameters.yaml @@ -11,7 +11,7 @@ parameters: partdb.banner: '%env(trim:string:BANNER)%' # The info text shown in the homepage, if empty config/banner.md is used partdb.default_currency: '%env(string:BASE_CURRENCY)%' # The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country partdb.global_theme: '' # The theme to use globally (see public/build/themes/ for choices, use name without .css). Set to '' for default bootstrap theme - partdb.locale_menu: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs'] # The languages that are shown in user drop down menu + partdb.locale_menu: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da'] # The languages that are shown in user drop down menu partdb.enforce_change_comments_for: '%env(csv:ENFORCE_CHANGE_COMMENTS_FOR)%' # The actions for which a change comment is required (e.g. "part_edit", "part_create", etc.). If this is empty, change comments are not required at all. partdb.default_uri: '%env(string:DEFAULT_URI)%' # The default URI to use for the Part-DB instance (e.g. https://part-db.example.com/). This is used for generating links in emails From af1852bb3f901b3723765a892753994ad64fa427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 24 Jan 2024 11:57:17 +0100 Subject: [PATCH 010/634] We are in development of 1.10.5 now --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 18b31142..3e5a73e8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.4 +1.10.5-dev From 0307a50890fe3572a20d9848d0df004569e53c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 24 Jan 2024 20:01:38 +0100 Subject: [PATCH 011/634] New translations messages.en.xlf (Czech) --- translations/messages.cs.xlf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index bbe73140..d35e859d 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -4141,7 +4141,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn entity.edit_flash.invalid - Nelze uložit změnit. Zkontrolujte prosím svůj vstup! + Nelze uložit změnit. Zkontrolujte prosím své zadání! @@ -4317,7 +4317,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn part.edited_flash.invalid - Chyba při ukládání: Zkontrolujte prosím své vstupy! + Chyba při ukládání: Zkontrolujte prosím své zadání! @@ -4350,7 +4350,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn part.created_flash.invalid - Chyba při vytváření: Zkontrolujte prosím své vstupy! + Chyba při vytváření: Zkontrolujte prosím své zadání! @@ -4428,7 +4428,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn pw_reset.new_pw.error - Uživatelské jméno nebo token je neplatný! Zkontrolujte prosím svůj vstup. + Uživatelské jméno nebo token je neplatný! Zkontrolujte prosím své zadání. @@ -5429,7 +5429,7 @@ Pokud jste to provedli nesprávně nebo pokud počítač již není důvěryhodn scan_dialog.input - Vstup + Zadání @@ -7155,7 +7155,7 @@ Město mass_creation.lines - Vstup + Zadání From e4634ecc2ca3efff5b0bea4785b340e3fae5a4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 13:22:01 +0100 Subject: [PATCH 012/634] Fixed wrong header in API authentication docs This fix issue #494 --- docs/api/authentication.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api/authentication.md b/docs/api/authentication.md index d30b877d..cb534097 100644 --- a/docs/api/authentication.md +++ b/docs/api/authentication.md @@ -20,8 +20,8 @@ The only method currently available for authentication is to use API tokens: An API token is a long alphanumeric string, which is bound to a specific user and can be used to authenticate as this user, when accessing the API. -The API token is passed via the `Authentication` HTTP header during the API request, like the -following: `Authentication: Bearer tcp_sdjfks....`. +The API token is passed via the `Authorization` HTTP header during the API request, like the +following: `Authorization: Bearer tcp_sdjfks....`. {: .important } > Everybody who knows the API token can access the API as the user, which is bound to the token. So you should treat the From e8eb102febcf779b74cea05501999a01a5c58bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 22:19:06 +0100 Subject: [PATCH 013/634] Updated dependencies --- composer.lock | 142 +++++++++++------------ yarn.lock | 306 +++++++++++++++++++++++++------------------------- 2 files changed, 225 insertions(+), 223 deletions(-) diff --git a/composer.lock b/composer.lock index 338febd1..f2a599fe 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.11", + "version": "v3.2.12", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "227c85871b00613f427ea985b54f4af24ce56a29" + "reference": "ac8031eb42810e6c538ffaca295cf7b4d35adf06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/227c85871b00613f427ea985b54f4af24ce56a29", - "reference": "227c85871b00613f427ea985b54f4af24ce56a29", + "url": "https://api.github.com/repos/api-platform/core/zipball/ac8031eb42810e6c538ffaca295cf7b4d35adf06", + "reference": "ac8031eb42810e6c538ffaca295cf7b4d35adf06", "shasum": "" }, "require": { @@ -54,6 +54,7 @@ "doctrine/dbal": "^3.4.0", "doctrine/doctrine-bundle": "^1.12 || ^2.0", "doctrine/mongodb-odm": "^2.2", + "doctrine/mongodb-odm-bundle": "^4.0 || ^5.0", "doctrine/orm": "^2.14", "elasticsearch/elasticsearch": "^7.11 || ^8.4", "friends-of-behat/mink-browserkit-driver": "^1.3.1", @@ -167,9 +168,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.11" + "source": "https://github.com/api-platform/core/tree/v3.2.12" }, - "time": "2024-01-12T13:17:28+00:00" + "time": "2024-01-19T19:03:13+00:00" }, { "name": "beberlei/assert", @@ -936,16 +937,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.7.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/ce594cbc39a4866c544f1a970d285ff0548221ad", + "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad", "shasum": "" }, "require": { @@ -961,14 +962,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.15", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -1029,7 +1030,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.7.3" }, "funding": [ { @@ -1045,7 +1046,7 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-01-21T07:53:09+00:00" }, { "name": "doctrine/deprecations", @@ -1738,16 +1739,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.2", + "version": "2.17.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77" + "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/393679a4795e49b0b3ac317dce84d0f8888f2b77", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77", + "url": "https://api.github.com/repos/doctrine/orm/zipball/398ab0547aaf90bdb352b560a94c24f44ff00670", + "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670", "shasum": "" }, "require": { @@ -1833,9 +1834,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.2" + "source": "https://github.com/doctrine/orm/tree/2.17.3" }, - "time": "2023-12-20T21:47:52+00:00" + "time": "2024-01-16T21:32:04+00:00" }, { "name": "doctrine/persistence", @@ -4341,16 +4342,16 @@ }, { "name": "nelmio/security-bundle", - "version": "v3.1.0", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioSecurityBundle.git", - "reference": "da7cc88ae338c6b8370c45c2e5fec88d24f5595d" + "reference": "9ae9fabf708ec5899cda46b2d764864bceaa9c8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/da7cc88ae338c6b8370c45c2e5fec88d24f5595d", - "reference": "da7cc88ae338c6b8370c45c2e5fec88d24f5595d", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/9ae9fabf708ec5899cda46b2d764864bceaa9c8e", + "reference": "9ae9fabf708ec5899cda46b2d764864bceaa9c8e", "shasum": "" }, "require": { @@ -4408,9 +4409,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", - "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.1.0" + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.1.1" }, - "time": "2023-12-03T08:44:55+00:00" + "time": "2024-01-17T14:32:52+00:00" }, { "name": "nikic/php-parser", @@ -15551,16 +15552,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.56", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "27816a01aea996191ee14d010f325434c0ee76fa" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", - "reference": "27816a01aea996191ee14d010f325434c0ee76fa", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -15609,20 +15610,20 @@ "type": "tidelift" } ], - "time": "2024-01-15T10:43:00+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.56", + "version": "1.3.59", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "0edf5b0cf1ff0a85adeefe4b5c1a6ba238f961cc" + "reference": "9534fcd0b6906c62594146b506acadeabd3a99b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/0edf5b0cf1ff0a85adeefe4b5c1a6ba238f961cc", - "reference": "0edf5b0cf1ff0a85adeefe4b5c1a6ba238f961cc", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/9534fcd0b6906c62594146b506acadeabd3a99b3", + "reference": "9534fcd0b6906c62594146b506acadeabd3a99b3", "shasum": "" }, "require": { @@ -15677,9 +15678,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.56" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.59" }, - "time": "2024-01-15T10:17:55+00:00" + "time": "2024-01-18T09:41:35+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -16123,16 +16124,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -16206,7 +16207,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -16222,7 +16223,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "psalm/plugin-symfony", @@ -16351,12 +16352,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "2c711f5d89ab975c7dd6fccfca79c41cbb980adf" + "reference": "cea5a32b418b44dc5a480049f531f53563c26210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2c711f5d89ab975c7dd6fccfca79c41cbb980adf", - "reference": "2c711f5d89ab975c7dd6fccfca79c41cbb980adf", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/cea5a32b418b44dc5a480049f531f53563c26210", + "reference": "cea5a32b418b44dc5a480049f531f53563c26210", "shasum": "" }, "conflict": { @@ -16396,7 +16397,7 @@ "backpack/crud": "<3.4.9", "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", "badaso/core": "<2.7", - "bagisto/bagisto": "<0.1.5", + "bagisto/bagisto": "<1.3.2", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", @@ -16478,6 +16479,7 @@ "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", "elefant/cms": "<2.0.7", @@ -16687,8 +16689,8 @@ "neorazorx/facturascripts": "<2022.04", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/neos-ui": "<=8.3.3", "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", @@ -16754,7 +16756,7 @@ "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.2.2", + "pimcore/admin-ui-classic-bundle": "<1.3.2", "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", "pimcore/demo": "<10.3", @@ -16778,7 +16780,7 @@ "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.200", + "processwire/processwire": "<=3.0.210", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", "pterodactyl/panel": "<1.7", @@ -16811,21 +16813,21 @@ "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.4.20", - "shopware/platform": "<=6.4.20", + "shopware/core": "<=6.5.7.3", + "shopware/platform": "<=6.5.7.3", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1", "shopxo/shopxo": "<2.2.6", "showdoc/showdoc": "<2.10.4", "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.13.6", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", "silverstripe/assets": ">=1,<1.11.1", "silverstripe/cms": "<4.11.3", "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.13.14|>=5,<5.0.13", - "silverstripe/graphql": "<3.8.2|>=4,<4.1.3|>=4.2,<4.2.5|>=4.3,<4.3.4|>=5,<5.0.3", + "silverstripe/framework": "<4.13.39|>=5,<5.1.11", + "silverstripe/graphql": "<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", @@ -17073,7 +17075,7 @@ "type": "tidelift" } ], - "time": "2024-01-15T18:04:39+00:00" + "time": "2024-01-24T22:04:16+00:00" }, { "name": "sebastian/cli-parser", @@ -18568,16 +18570,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.7", + "version": "12.1.8", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "f23626aba4f103a09c7e33f74f6995d844d63bf3" + "reference": "7962c810a8eebc4174a38d7dff673f1999e61595" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/f23626aba4f103a09c7e33f74f6995d844d63bf3", - "reference": "f23626aba4f103a09c7e33f74f6995d844d63bf3", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/7962c810a8eebc4174a38d7dff673f1999e61595", + "reference": "7962c810a8eebc4174a38d7dff673f1999e61595", "shasum": "" }, "require": { @@ -18610,7 +18612,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.7" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.8" }, "funding": [ { @@ -18622,7 +18624,7 @@ "type": "github" } ], - "time": "2024-01-14T17:55:27+00:00" + "time": "2024-01-16T22:56:06+00:00" }, { "name": "theseer/tokenizer", @@ -18676,16 +18678,16 @@ }, { "name": "vimeo/psalm", - "version": "5.19.0", + "version": "5.20.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b" + "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/06b71be009a6bd6d81b9811855d6629b9fe90e1b", - "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", + "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", "shasum": "" }, "require": { @@ -18782,7 +18784,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-01-09T21:02:43+00:00" + "time": "2024-01-18T12:15:06+00:00" } ], "aliases": [ diff --git a/yarn.lock b/yarn.lock index 50934410..fb9b5ea7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -24,20 +24,20 @@ integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== "@babel/core@^7.19.6": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" - integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.7" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -80,9 +80,9 @@ semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.22.15": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d" - integrity sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" + integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.20" @@ -103,10 +103,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" - integrity sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA== +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -234,14 +234,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" - integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" "@babel/highlight@^7.23.4": version "7.23.4" @@ -252,10 +252,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.18.9", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.18.9", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" @@ -420,10 +420,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz#3aa0b4f2fa3788b5226ef9346cf6d16ec61f99cd" - integrity sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA== +"@babel/plugin-transform-async-generator-functions@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" + integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== dependencies: "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" @@ -602,10 +602,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" - integrity sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ== +"@babel/plugin-transform-modules-systemjs@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" + integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== dependencies: "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-module-transforms" "^7.23.3" @@ -802,9 +802,9 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.19.4": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.8.tgz#7d6f8171ea7c221ecd28059e65ad37c20e441e3e" - integrity sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" + integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== dependencies: "@babel/compat-data" "^7.23.5" "@babel/helper-compilation-targets" "^7.23.6" @@ -833,7 +833,7 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.7" + "@babel/plugin-transform-async-generator-functions" "^7.23.9" "@babel/plugin-transform-async-to-generator" "^7.23.3" "@babel/plugin-transform-block-scoped-functions" "^7.23.3" "@babel/plugin-transform-block-scoping" "^7.23.4" @@ -855,7 +855,7 @@ "@babel/plugin-transform-member-expression-literals" "^7.23.3" "@babel/plugin-transform-modules-amd" "^7.23.3" "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.3" + "@babel/plugin-transform-modules-systemjs" "^7.23.9" "@babel/plugin-transform-modules-umd" "^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.23.3" @@ -881,9 +881,9 @@ "@babel/plugin-transform-unicode-regex" "^7.23.3" "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.7" - babel-plugin-polyfill-corejs3 "^0.8.7" - babel-plugin-polyfill-regenerator "^0.5.4" + babel-plugin-polyfill-corejs2 "^0.4.8" + babel-plugin-polyfill-corejs3 "^0.9.0" + babel-plugin-polyfill-regenerator "^0.5.5" core-js-compat "^3.31.0" semver "^6.3.1" @@ -902,25 +902,25 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.8.4": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" - integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" + integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== +"@babel/template@^7.22.15", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" -"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== +"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== dependencies: "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" @@ -928,15 +928,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.4.4": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== +"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" @@ -1469,12 +1469,12 @@ resolved "https://registry.yarnpkg.com/@foliojs-fork/restructure/-/restructure-2.0.2.tgz#73759aba2aff1da87b7c4554e6839c70d43c92b4" integrity sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA== -"@formatjs/ecma402-abstract@1.18.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.0.tgz#e2120e7101020140661b58430a7ff4262705a2f2" - integrity sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA== +"@formatjs/ecma402-abstract@1.18.2": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz#bf103712a406874eb1e387858d5be2371ab3aa14" + integrity sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA== dependencies: - "@formatjs/intl-localematcher" "0.5.2" + "@formatjs/intl-localematcher" "0.5.4" tslib "^2.4.0" "@formatjs/fast-memoize@2.2.0": @@ -1484,27 +1484,27 @@ dependencies: tslib "^2.4.0" -"@formatjs/icu-messageformat-parser@2.7.3": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.3.tgz#c8c95e7c9f8141bdb93bea0e92e4fcace19d3c9f" - integrity sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw== +"@formatjs/icu-messageformat-parser@2.7.5": + version "2.7.5" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.5.tgz#6c12c08544eafef874df13b30729daf7b4dbd089" + integrity sha512-zCB53HdGDibh6/2ISEN3TGsFQruQ6gGKMFV94qHNyVrs0tNO6ncKhV0vq0n3Ydz8ipIQ2GaYAvfCoimNOVvKqA== dependencies: - "@formatjs/ecma402-abstract" "1.18.0" - "@formatjs/icu-skeleton-parser" "1.7.0" + "@formatjs/ecma402-abstract" "1.18.2" + "@formatjs/icu-skeleton-parser" "1.7.2" tslib "^2.4.0" -"@formatjs/icu-skeleton-parser@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.0.tgz#796938d6d0ba8fc75bb9edee038d1350bfee32cb" - integrity sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A== +"@formatjs/icu-skeleton-parser@1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.2.tgz#ffbdd535c33249635ad0e54a34813194287a1567" + integrity sha512-nlIXVv280bjGW3ail5Np1+xgGKBnMhwQQIivgbk9xX0af8ESQO+y2VW9TOY7mCrs3WH786uVpZlLimXAlXH7SA== dependencies: - "@formatjs/ecma402-abstract" "1.18.0" + "@formatjs/ecma402-abstract" "1.18.2" tslib "^2.4.0" -"@formatjs/intl-localematcher@0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.2.tgz#5fcf029fd218905575e5080fa33facdcb623d532" - integrity sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw== +"@formatjs/intl-localematcher@0.5.4": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz#caa71f2e40d93e37d58be35cfffe57865f2b366f" + integrity sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g== dependencies: tslib "^2.4.0" @@ -1590,9 +1590,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.21" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz#5dc1df7b3dc4a6209e503a924e1ca56097a2bb15" - integrity sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g== + version "0.3.22" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" + integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1694,9 +1694,9 @@ version "0.1.0" "@symfony/webpack-encore@^4.1.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-4.5.0.tgz#6f8251518412e37e947100cb6daadf846cfea8dd" - integrity sha512-eGHtQc1BDDj7hS35FyIDxQdgQcgKZ5kPh9nLLUihyDE37kPav/id1PfaHoAfydqQyv4QHsXQzLfdYC7k8agFLw== + version "4.6.1" + resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-4.6.1.tgz#a3ced0baf1b02feb6d1a564906aff0e479b07259" + integrity sha512-JbOjy0P6P9pcbgVE3nceFnCCneRO+tbcLUkQh9rpPj/sHtFl12foSjHz6uY93ZGZGAvTyqEslie+4MlD/rUtnQ== dependencies: "@nuxt/friendly-errors-webpack-plugin" "^2.5.1" assets-webpack-plugin "7.0.*" @@ -1775,7 +1775,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.2.tgz#39cea3fe02fbbc2f80ed283e94e1d24f2d3856fb" - integrity sha512-cZShBaVa+UO1LjWWBPmWRR4+/eY/JR/UIEcDlVsw3okjWEu+rB7/mH6X3B/L+qJVHDLjk9QW/y2upp9wp1yDXA== + version "20.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.6.tgz#6adf4241460e28be53836529c033a41985f85b6e" + integrity sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q== dependencies: undici-types "~5.26.4" @@ -2350,29 +2350,29 @@ babel-loader@^9.1.3: find-cache-dir "^4.0.0" schema-utils "^4.0.0" -babel-plugin-polyfill-corejs2@^0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c" - integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== +babel-plugin-polyfill-corejs2@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.7: - version "0.8.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" - integrity sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA== +babel-plugin-polyfill-corejs3@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" + integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" - core-js-compat "^3.33.1" + "@babel/helper-define-polyfill-provider" "^0.5.0" + core-js-compat "^3.34.0" -babel-plugin-polyfill-regenerator@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz#c6fc8eab610d3a11eb475391e52584bacfc020f4" - integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== +babel-plugin-polyfill-regenerator@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" balanced-match@^1.0.0: version "1.0.2" @@ -2503,7 +2503,7 @@ browserify-optional@^1.0.1: ast-types "^0.7.0" browser-resolve "^1.8.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.22.2: +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: version "4.22.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== @@ -2597,9 +2597,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001565: - version "1.0.30001576" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4" - integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== + version "1.0.30001580" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" + integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== chalk@^2.4.2: version "2.4.2" @@ -2880,17 +2880,17 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.0.tgz#c149a3d1ab51e743bc1da61e39cb51f461a41873" - integrity sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw== +core-js-compat@^3.31.0, core-js-compat@^3.34.0: + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" + integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== dependencies: browserslist "^4.22.2" core-js@^3.23.0: - version "3.35.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4" - integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg== + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== core-util-is@~1.0.0: version "1.0.3" @@ -2949,15 +2949,15 @@ css-loader@^5.2.7: semver "^7.3.5" css-loader@^6.7.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.9.0.tgz#0cc2f14df94ed97c526c5ae42b6b13916d1d8d0e" - integrity sha512-3I5Nu4ytWlHvOP6zItjiHlefBNtrH+oehq8tnQa2kO305qpVyx9XNIT1CXIj5bgCJs7qICBCkgCYxQLKPANoLA== + version "6.9.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.9.1.tgz#9ec9a434368f2bdfeffbf8f6901a1ce773586c6b" + integrity sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ== dependencies: icss-utils "^5.1.0" - postcss "^8.4.31" + postcss "^8.4.33" postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.3" - postcss-modules-scope "^3.1.0" + postcss-modules-local-by-default "^4.0.4" + postcss-modules-scope "^3.1.1" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" semver "^7.5.4" @@ -3519,9 +3519,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.601: - version "1.4.630" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz#1d9f4169653784997bec98975e11a2c05214ce39" - integrity sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg== + version "1.4.646" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.646.tgz#2ed74709d854d5501b32936c9feaaee02c7a9ba5" + integrity sha512-vThkQ0JuF45qT/20KbRgM56lV7IuGt7SjhawQ719PDHzhP84KAO1WJoaxgCoAffKHK47FmVKP1Fqizx7CwK1SA== emoji-regex@^8.0.0: version "8.0.0" @@ -4436,13 +4436,13 @@ interpret@^2.2.0: integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== intl-messageformat@^10.2.5: - version "10.5.8" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.8.tgz#7184da425f360a53a5483a6194e16d666b011fc0" - integrity sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA== + version "10.5.10" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.10.tgz#638b7a9a4926a04f784dfe6e77104a0c537deb36" + integrity sha512-3yzwX6t/my9WRtNiqP05r+/UkpWxwstQiwaHAiuHmDRt7ykzWJ+nceOVjNLZYYWGiSltY+C+Likd8OIVkASepw== dependencies: - "@formatjs/ecma402-abstract" "1.18.0" + "@formatjs/ecma402-abstract" "1.18.2" "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.7.3" + "@formatjs/icu-messageformat-parser" "2.7.5" tslib "^2.4.0" ipaddr.js@1.9.1: @@ -5711,19 +5711,19 @@ postcss-modules-extract-imports@^3.0.0: resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== -postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== +postcss-modules-local-by-default@^4.0.0, postcss-modules-local-by-default@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.0.0, postcss-modules-scope@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.0.tgz#fbfddfda93a31f310f1d152c2bb4d3f3c5592ee0" - integrity sha512-SaIbK8XW+MZbd0xHPf7kdfA/3eOt7vxJ72IRecn3EzuZVLr1r0orzf0MX/pN8m+NMDoo6X/SQd8oeKqGZd8PXg== +postcss-modules-scope@^3.0.0, postcss-modules-scope@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== dependencies: postcss-selector-parser "^6.0.4" @@ -5961,7 +5961,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.24, postcss@^8.4.31: +postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.24, postcss@^8.4.33: version "8.4.33" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== @@ -6838,7 +6838,7 @@ terser-webpack-plugin@^4.2.3: terser "^5.3.4" webpack-sources "^1.4.3" -terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -6850,9 +6850,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.7: terser "^5.26.0" terser@^5.26.0, terser@^5.3.4: - version "5.26.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + version "5.27.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" + integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -7300,18 +7300,18 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.74.0: - version "5.89.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" - integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== + version "5.90.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" + integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" + "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.11.5" "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" enhanced-resolve "^5.15.0" es-module-lexer "^1.2.1" @@ -7325,7 +7325,7 @@ webpack@^5.74.0: neo-async "^2.6.2" schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" + terser-webpack-plugin "^5.3.10" watchpack "^2.4.0" webpack-sources "^3.2.3" From 631c364179b81d230502acb1a550e495df46e1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 22:58:52 +0100 Subject: [PATCH 014/634] Added option to redirect https requests to http via Part-DB This is especially useful for the heroku demo instance, where the webserver can not do the automatic redirect --- .docker/symfony.conf | 2 +- .env | 3 + config/parameters.yaml | 2 + docs/configuration.md | 3 + .../RedirectToHttpsSubscriber.php | 72 +++++++++++++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/EventSubscriber/RedirectToHttpsSubscriber.php diff --git a/.docker/symfony.conf b/.docker/symfony.conf index 31b608fb..02d83622 100644 --- a/.docker/symfony.conf +++ b/.docker/symfony.conf @@ -25,7 +25,7 @@ CustomLog ${APACHE_LOG_DIR}/access.log combined # Pass the configuration from the docker env to the PHP environment (here you should list all .env options) - PassEnv APP_ENV APP_DEBUG APP_SECRET + PassEnv APP_ENV APP_DEBUG APP_SECRET REDIRECT_TO_HTTPS PassEnv TRUSTED_PROXIES TRUSTED_HOSTS LOCK_DSN PassEnv DATABASE_URL ENFORCE_CHANGE_COMMENTS_FOR DATABASE_MYSQL_USE_SSL_CA DATABASE_MYSQL_SSL_VERIFY_CERT PassEnv DEFAULT_LANG DEFAULT_TIMEZONE BASE_CURRENCY INSTANCE_NAME ALLOW_ATTACHMENT_DOWNLOADS USE_GRAVATAR MAX_ATTACHMENT_FILE_SIZE DEFAULT_URI CHECK_FOR_UPDATES ATTACHMENT_DOWNLOAD_BY_DEFAULT diff --git a/.env b/.env index 32d149df..85f25ae8 100644 --- a/.env +++ b/.env @@ -226,6 +226,9 @@ DEMO_MODE=0 # In that case all URL contains the index.php front controller in URL NO_URL_REWRITE_AVAILABLE=0 +# Set to 1, if Part-DB should redirect all HTTP requests to HTTPS. You dont need to configure this, if your webserver already does this. +REDIRECT_TO_HTTPS=0 + # If you want to use fixer.io for currency conversion, you have to set this to your API key FIXER_API_KEY=CHANGEME diff --git a/config/parameters.yaml b/config/parameters.yaml index 13b07a35..82ca4a58 100644 --- a/config/parameters.yaml +++ b/config/parameters.yaml @@ -115,6 +115,8 @@ parameters: env(USE_GRAVATAR): '0' env(MAX_ATTACHMENT_FILE_SIZE): '100M' + env(REDIRECT_TO_HTTPS): 0 + env(ENFORCE_CHANGE_COMMENTS_FOR): '' env(ERROR_PAGE_ADMIN_EMAIL): '' diff --git a/docs/configuration.md b/docs/configuration.md index 32472901..1805ad01 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -196,6 +196,9 @@ See the [information providers]({% link usage/information_provider_system.md %}) * `NO_URL_REWRITE_AVAILABLE` (allowed values `true` or `false`): Set this value to true, if your webserver does not support rewrite. In this case, all URL paths will contain index.php/, which is needed then. Normally this setting do not need to be changed. +* `REDIRECT_TO_HTTPS`: If this is set to true, all requests to http will be redirected to https. This is useful, if your + webserver does not already do this (like the one used in the demo instance). If your webserver already redirects to + https, you don't need to set this. Ensure that Part-DB is accessible via https, before you enable this setting. * `FIXER_API_KEY`: If you want to automatically retrieve exchange rates for base currencies other than euros, you have to configure an exchange rate provider API. [Fixer.io](https://fixer.io/) is preconfigured, and you just have to register there and set the retrieved API key in this environment variable. diff --git a/src/EventSubscriber/RedirectToHttpsSubscriber.php b/src/EventSubscriber/RedirectToHttpsSubscriber.php new file mode 100644 index 00000000..400b50e5 --- /dev/null +++ b/src/EventSubscriber/RedirectToHttpsSubscriber.php @@ -0,0 +1,72 @@ +. + */ + +declare(strict_types=1); + + +namespace App\EventSubscriber; + +use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\Security\Http\HttpUtils; + +/** + * The purpose of this event listener is (if enabled) to redirect all requests to https. + */ +final class RedirectToHttpsSubscriber implements EventSubscriberInterface +{ + + public function __construct( + #[Autowire('env(bool:REDIRECT_TO_HTTPS)')] + private readonly bool $enabled, + private readonly HttpUtils $httpUtils) + { + } + + public static function getSubscribedEvents(): array + { + return [ + KernelEvents::REQUEST => ['onKernelRequest', 0], + ]; + } + + public function onKernelRequest(RequestEvent $event): void + { + //If the feature is disabled, or we are not the main request, we do nothing + if (!$this->enabled || !$event->isMainRequest()) { + return; + } + + + $request = $event->getRequest(); + + //If the request is already https, we do nothing + if ($request->isSecure()) { + return; + } + + + //Change the request to https + $new_url = str_replace('http://', 'https://' ,$request->getUri()); + $event->setResponse($this->httpUtils->createRedirectResponse($event->getRequest(), $new_url)); + } +} \ No newline at end of file From f0519ae0b3372a3549866fec5f3bbfd6ed9548f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 23:35:15 +0100 Subject: [PATCH 015/634] Return a 401 message with an JSON encoded body, if no authentication header is passed for an API request. Also for browser requests, a flash message is shown in that case, prompting the user to authenticate. This follows a suggestion from issue #494 --- config/packages/security.yaml | 2 +- src/Security/AuthenticationEntryPoint.php | 76 + translations/messages.en.xlf | 2864 +++++++++++---------- 3 files changed, 1512 insertions(+), 1430 deletions(-) create mode 100644 src/Security/AuthenticationEntryPoint.php diff --git a/config/packages/security.yaml b/config/packages/security.yaml index dab2b5dd..95f5c6b1 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -19,7 +19,7 @@ security: provider: app_user_provider lazy: true user_checker: App\Security\UserChecker - entry_point: form_login + entry_point: App\Security\AuthenticationEntryPoint # Enable user impersonation switch_user: { role: CAN_SWITCH_USER } diff --git a/src/Security/AuthenticationEntryPoint.php b/src/Security/AuthenticationEntryPoint.php new file mode 100644 index 00000000..3d6782ee --- /dev/null +++ b/src/Security/AuthenticationEntryPoint.php @@ -0,0 +1,76 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Security; + +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; + +use function Symfony\Component\Translation\t; + +/** + * This class decides, what to do, when a user tries to access a page, that requires authentication and he is not + * authenticated / logged in yet. + * For browser requests, the user is redirected to the login page, for API requests, a 401 response with a JSON encoded + * message is returned. + */ +class AuthenticationEntryPoint implements AuthenticationEntryPointInterface +{ + public function __construct( + private UrlGeneratorInterface $urlGenerator, + ) { + } + + public function start(Request $request, AuthenticationException $authException = null): Response + { + //Check if the request is an API request + if ($this->isJSONRequest($request)) { + //If it is, we return a 401 response with a JSON body + return new JsonResponse([ + 'title' => 'Unauthorized', + 'detail' => 'Authentication is required. Please pass a valid API token in the Authorization header.', + ], Response::HTTP_UNAUTHORIZED); + } + + //Otherwise we redirect to the login page + + //Add a nice flash message to make it clear what happened + $request->getSession()->getFlashBag()->add('error', t('login.flash.access_denied_please_login')); + + return new RedirectResponse($this->urlGenerator->generate('login')); + } + + private function isJSONRequest(Request $request): bool + { + //If either the content type or accept header is a json type, we assume it is an API request + $contentType = $request->headers->get('Content-Type'); + $accept = $request->headers->get('Accept'); + + return str_contains($contentType, 'json') || str_contains($accept, 'json'); + } +} \ No newline at end of file diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index bc7acb05..204c91f5 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -7,7 +7,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - + attachment_type.caption File types for attachments @@ -17,7 +17,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new - + attachment_type.edit Edit file type @@ -27,7 +27,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new - + attachment_type.new New file type @@ -46,7 +46,7 @@ templates\base.html.twig:197 templates\base.html.twig:225 - + category.labelp Categories @@ -59,7 +59,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 templates\AdminPages\CategoryAdmin.html.twig:8 - + admin.options Options @@ -72,7 +72,7 @@ Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 templates\AdminPages\CategoryAdmin.html.twig:9 - + admin.advanced Advanced @@ -82,7 +82,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new - + category.edit Edit category @@ -92,7 +92,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new - + category.new New category @@ -102,7 +102,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - + currency.caption Currency @@ -112,7 +112,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - + currency.iso_code.caption ISO code @@ -122,7 +122,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - + currency.symbol.caption Currency symbol @@ -132,7 +132,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new - + currency.edit Edit currency @@ -142,7 +142,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new - + currency.new New currency @@ -153,7 +153,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 templates\AdminPages\DeviceAdmin.html.twig:4 - + project.caption Project @@ -163,7 +163,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new - + project.edit Edit project @@ -173,7 +173,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new - + project.new New project @@ -196,7 +196,7 @@ templates\base.html.twig:206 templates\base.html.twig:237 - + search.placeholder Search @@ -212,7 +212,7 @@ templates\base.html.twig:193 templates\base.html.twig:221 - + expandAll Expand All @@ -228,7 +228,7 @@ templates\base.html.twig:194 templates\base.html.twig:222 - + reduceAll Reduce All @@ -240,9 +240,9 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - + part.info.timetravel_hint - This is how the part appeared before %timestamp%. <i>Please note that this feature is experimental, so the info may not be correct.</i> + Please note that this feature is experimental, so the info may not be correct.]]> @@ -251,7 +251,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 templates\AdminPages\EntityAdminBase.html.twig:42 - + standard.label Properties @@ -262,7 +262,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 templates\AdminPages\EntityAdminBase.html.twig:43 - + infos.label Info @@ -273,7 +273,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new - + history.label History @@ -284,7 +284,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 templates\AdminPages\EntityAdminBase.html.twig:45 - + export.label Export @@ -295,7 +295,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 templates\AdminPages\EntityAdminBase.html.twig:47 - + import_export.label Import / Export @@ -305,7 +305,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - + mass_creation.label Mass creation @@ -316,7 +316,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 templates\AdminPages\EntityAdminBase.html.twig:59 - + admin.common Common @@ -326,7 +326,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - + admin.attachments Attachments @@ -335,7 +335,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - + admin.parameters Parameters @@ -346,7 +346,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 templates\AdminPages\EntityAdminBase.html.twig:142 - + export_all.label Export all elements @@ -356,7 +356,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - + mass_creation.help Each line will be interpreted as a name of an element, which will be created. You can create nested structures by indentations. @@ -367,7 +367,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 templates\AdminPages\EntityAdminBase.html.twig:35 - + edit.caption Edit element "%name" @@ -378,7 +378,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 templates\AdminPages\EntityAdminBase.html.twig:37 - + new.caption New element @@ -393,7 +393,7 @@ templates\base.html.twig:199 templates\base.html.twig:227 - + footprint.labelp Footprints @@ -403,7 +403,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new - + footprint.edit Edit footprint @@ -413,7 +413,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new - + footprint.new New footprint @@ -423,7 +423,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - + group.edit.caption Groups @@ -435,7 +435,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - + user.edit.permissions Permissions @@ -445,7 +445,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new - + group.edit Edit group @@ -455,7 +455,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new - + group.new New group @@ -464,7 +464,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - + label_profile.caption Label profiles @@ -473,7 +473,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - + label_profile.advanced Advanced @@ -482,7 +482,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - + label_profile.comment Notes @@ -492,7 +492,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new - + label_profile.edit Edit label profile @@ -502,7 +502,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new - + label_profile.new New label profile @@ -513,7 +513,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 templates\AdminPages\ManufacturerAdmin.html.twig:4 - + manufacturer.caption Manufacturers @@ -523,7 +523,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new - + manufacturer.edit Edit manufacturer @@ -533,7 +533,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new - + manufacturer.new New manufacturer @@ -543,7 +543,7 @@ Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - + measurement_unit.caption Measurement Unit @@ -558,7 +558,7 @@ templates\base.html.twig:198 templates\base.html.twig:226 - + storelocation.labelp Storage locations @@ -568,7 +568,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new - + storelocation.edit Edit storage location @@ -578,7 +578,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new - + storelocation.new New storage location @@ -589,7 +589,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 templates\AdminPages\SupplierAdmin.html.twig:4 - + supplier.caption Suppliers @@ -599,7 +599,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new - + supplier.edit Edit supplier @@ -609,7 +609,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new - + supplier.new New supplier @@ -619,7 +619,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - + user.edit.caption Users @@ -629,7 +629,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - + user.edit.configuration Configuration @@ -639,7 +639,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - + user.edit.password Password @@ -649,7 +649,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - + user.edit.tfa.caption Two-factor authentication @@ -659,7 +659,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - + user.edit.tfa.google_active Authenticator app active @@ -673,7 +673,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:15 Part-DB1\templates\Users\_2fa_settings.html.twig:95 - + tfa_backup.remaining_tokens Remaining backup codes count @@ -687,7 +687,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:96 - + tfa_backup.generation_date Generation date of the backup codes @@ -699,7 +699,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - + user.edit.tfa.disabled Method not enabled @@ -709,7 +709,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - + user.edit.tfa.u2f_keys_count Active security keys @@ -719,7 +719,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - + user.edit.tfa.disable_tfa_title Do you really want to proceed? @@ -729,12 +729,12 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - + user.edit.tfa.disable_tfa_message - This will disable <b>all active two-factor authentication methods of the user</b> and delete the <b>backup codes</b>! -<br> -The user will have to set up all two-factor authentication methods again and print new backup codes! <br><br> -<b>Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!</b> + all active two-factor authentication methods of the user and delete the backup codes! +
+The user will have to set up all two-factor authentication methods again and print new backup codes!

+Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!]]>
@@ -742,7 +742,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - + user.edit.tfa.disable_tfa.btn Disable all two-factor authentication methods @@ -752,7 +752,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new - + user.edit Edit user @@ -762,7 +762,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new - + user.new New user @@ -775,7 +775,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:4 Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - + attachment.delete Delete @@ -789,7 +789,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:159 - + attachment.external External @@ -801,7 +801,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:47 Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - + attachment.preview.alt Attachment thumbnail @@ -815,7 +815,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:48 Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - + attachment.view View @@ -831,7 +831,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:166 - + attachment.file_not_found File not found @@ -843,7 +843,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - + attachment.secure Private attachment @@ -855,7 +855,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:77 Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - + attachment.create Add attachment @@ -869,7 +869,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:80 Part-DB1\templates\Parts\edit\_lots.html.twig:33 - + part_lot.edit.delete.confirm Do you really want to delete this stock? This can not be undone! @@ -880,7 +880,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:2 templates\AdminPages\_delete_form.html.twig:2 - + entity.delete.confirm_title You really want to delete %name%? @@ -891,11 +891,11 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:3 templates\AdminPages\_delete_form.html.twig:3 - + entity.delete.message - This can not be undone! -<br> -Sub elements will be moved upwards. + +Sub elements will be moved upwards.]]> @@ -904,7 +904,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_delete_form.html.twig:11 templates\AdminPages\_delete_form.html.twig:9 - + entity.delete Delete element @@ -919,7 +919,7 @@ Sub elements will be moved upwards. Part-DB1\src\Form\Part\PartBaseType.php:267 new - + edit.log_comment Change comment @@ -930,7 +930,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_delete_form.html.twig:24 templates\AdminPages\_delete_form.html.twig:12 - + entity.delete.recursive Delete recursive (all sub elements) @@ -939,7 +939,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - + entity.duplicate Duplicate element @@ -953,7 +953,7 @@ Sub elements will be moved upwards. templates\AdminPages\_export_form.html.twig:4 src\Form\ImportType.php:67 - + export.format File format @@ -964,7 +964,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:16 templates\AdminPages\_export_form.html.twig:16 - + export.level Verbosity level @@ -975,7 +975,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:19 templates\AdminPages\_export_form.html.twig:19 - + export.level.simple Simple @@ -986,7 +986,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:20 templates\AdminPages\_export_form.html.twig:20 - + export.level.extended Extended @@ -997,7 +997,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:21 templates\AdminPages\_export_form.html.twig:21 - + export.level.full Full @@ -1008,7 +1008,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:31 templates\AdminPages\_export_form.html.twig:31 - + export.include_children Include children elements in export @@ -1019,7 +1019,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_export_form.html.twig:39 templates\AdminPages\_export_form.html.twig:39 - + export.btn Export @@ -1038,7 +1038,7 @@ Sub elements will be moved upwards. templates\Parts\edit_part_info.html.twig:12 templates\Parts\show_part_info.html.twig:11 - + id.label ID @@ -1062,7 +1062,7 @@ Sub elements will be moved upwards. templates\AdminPages\EntityAdminBase.html.twig:101 templates\Parts\show_part_info.html.twig:248 - + createdAt Created At @@ -1080,7 +1080,7 @@ Sub elements will be moved upwards. templates\AdminPages\EntityAdminBase.html.twig:114 templates\Parts\show_part_info.html.twig:263 - + lastModified Last modified @@ -1090,7 +1090,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_info.html.twig:38 Part-DB1\templates\AdminPages\_info.html.twig:38 - + entity.info.parts_count Number of parts with this element @@ -1101,7 +1101,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:125 Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - + specifications.property Parameter @@ -1111,7 +1111,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:7 Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - + specifications.symbol Symbol @@ -1121,7 +1121,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:8 Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - + specifications.value_min Min. @@ -1131,7 +1131,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:9 Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - + specifications.value_typ Typ. @@ -1141,7 +1141,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:10 Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - + specifications.value_max Max. @@ -1151,7 +1151,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:11 Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - + specifications.unit Unit @@ -1161,7 +1161,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:12 Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - + specifications.text Text @@ -1171,7 +1171,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:13 Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - + specifications.group Group @@ -1181,7 +1181,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:26 Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - + specification.create New Parameter @@ -1191,7 +1191,7 @@ Sub elements will be moved upwards. Part-DB1\templates\AdminPages\_parameters.html.twig:31 Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - + parameter.delete.confirm Do you really want to delete this parameter? @@ -1201,7 +1201,7 @@ Sub elements will be moved upwards. Part-DB1\templates\attachment_list.html.twig:3 Part-DB1\templates\attachment_list.html.twig:3 - + attachment.list.title Attachments list @@ -1215,7 +1215,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LogSystem\_log_table.html.twig:8 Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - + part_list.loading.caption Loading @@ -1229,7 +1229,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LogSystem\_log_table.html.twig:9 Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - + part_list.loading.message This can take a moment. If this message do not disappear, try to reload the page. @@ -1240,7 +1240,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:68 templates\base.html.twig:246 - + vendor.base.javascript_hint Please activate Javascript to use all features! @@ -1250,7 +1250,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:73 Part-DB1\templates\base.html.twig:73 - + sidebar.big.toggle Show/Hide sidebar @@ -1261,7 +1261,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:95 templates\base.html.twig:271 - + loading.caption Loading: @@ -1272,7 +1272,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:96 templates\base.html.twig:272 - + loading.message This can take a while. If this messages stays for a long time, try to reload the page. @@ -1283,7 +1283,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:101 templates\base.html.twig:277 - + loading.bar Loading... @@ -1294,7 +1294,7 @@ Sub elements will be moved upwards. Part-DB1\templates\base.html.twig:112 templates\base.html.twig:288 - + back_to_top Back to page's top @@ -1304,7 +1304,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:35 Part-DB1\templates\Form\permissionLayout.html.twig:35 - + permission.edit.permission Permissions @@ -1314,7 +1314,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:36 Part-DB1\templates\Form\permissionLayout.html.twig:36 - + permission.edit.value Value @@ -1324,7 +1324,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:53 Part-DB1\templates\Form\permissionLayout.html.twig:53 - + permission.legend.title Explanation of the states @@ -1334,7 +1334,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:57 Part-DB1\templates\Form\permissionLayout.html.twig:57 - + permission.legend.disallow Forbidden @@ -1344,7 +1344,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:61 Part-DB1\templates\Form\permissionLayout.html.twig:61 - + permission.legend.allow Allowed @@ -1354,7 +1354,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Form\permissionLayout.html.twig:65 Part-DB1\templates\Form\permissionLayout.html.twig:65 - + permission.legend.inherit Inherit from (parent) group @@ -1364,7 +1364,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:3 Part-DB1\templates\helper.twig:3 - + bool.true True @@ -1374,7 +1374,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:5 Part-DB1\templates\helper.twig:5 - + bool.false False @@ -1384,7 +1384,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:92 Part-DB1\templates\helper.twig:87 - + Yes Yes @@ -1394,7 +1394,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:94 Part-DB1\templates\helper.twig:89 - + No No @@ -1403,7 +1403,7 @@ Sub elements will be moved upwards. Part-DB1\templates\helper.twig:126 - + specifications.value Value @@ -1414,7 +1414,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:7 templates\homepage.html.twig:7 - + version.caption Version @@ -1425,7 +1425,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:22 templates\homepage.html.twig:19 - + homepage.license License information @@ -1436,7 +1436,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 - + homepage.github.caption Project page @@ -1447,9 +1447,9 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 - + homepage.github.text - Source, downloads, bug reports, to-do-list etc. can be found on <a href="%href%" class="link-external" target="_blank">GitHub project page</a> + GitHub project page]]> @@ -1458,7 +1458,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 - + homepage.help.caption Help @@ -1469,9 +1469,9 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 - + homepage.help.text - Help and tips can be found in Wiki the <a href="%href%" class="link-external" target="_blank">GitHub page</a> + GitHub page]]> @@ -1480,7 +1480,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 - + homepage.forum.caption Forum @@ -1491,7 +1491,7 @@ Sub elements will be moved upwards. Part-DB1\templates\homepage.html.twig:45 new - + homepage.last_activity Last activity @@ -1501,7 +1501,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:3 Part-DB1\templates\LabelSystem\dialog.html.twig:6 - + label_generator.title Label generator @@ -1510,7 +1510,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:16 - + label_generator.common Common @@ -1519,7 +1519,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:20 - + label_generator.advanced Advanced @@ -1528,7 +1528,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:24 - + label_generator.profiles Profiles @@ -1537,7 +1537,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:58 - + label_generator.selected_profile Currently selected profile @@ -1546,7 +1546,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:62 - + label_generator.edit_profile Edit profile @@ -1555,7 +1555,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:75 - + label_generator.load_profile Load profile @@ -1564,7 +1564,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dialog.html.twig:102 - + label_generator.download Download @@ -1574,7 +1574,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - + label_generator.label_btn Generate label @@ -1583,7 +1583,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - + label_generator.label_empty New empty label @@ -1592,7 +1592,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - + label_scanner.title Label scanner @@ -1601,7 +1601,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - + label_scanner.no_cam_found.title No webcam found @@ -1610,7 +1610,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - + label_scanner.no_cam_found.text You need a webcam and give permission to use the scanner function. You can input the barcode code manually below. @@ -1619,7 +1619,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - + label_scanner.source_select Select source @@ -1629,7 +1629,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LogSystem\log_list.html.twig:3 Part-DB1\templates\LogSystem\log_list.html.twig:3 - + log.list.title System log @@ -1640,7 +1640,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LogSystem\_log_table.html.twig:1 new - + log.undo.confirm_title Really undo change / revert to timestamp? @@ -1651,7 +1651,7 @@ Sub elements will be moved upwards. Part-DB1\templates\LogSystem\_log_table.html.twig:2 new - + log.undo.confirm_message Do you really want to undo the given change / reset the element to the given timestamp? @@ -1661,7 +1661,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 - + mail.footer.email_sent_by This email was sent automatically by @@ -1671,7 +1671,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 - + mail.footer.dont_reply Do not answer to this email. @@ -1681,7 +1681,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:6 Part-DB1\templates\mail\pw_reset.html.twig:6 - + email.hi %name% Hi %name% @@ -1691,7 +1691,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:7 Part-DB1\templates\mail\pw_reset.html.twig:7 - + email.pw_reset.message somebody (hopefully you) requested a reset of your password. If this request was not made by you, ignore this mail. @@ -1701,7 +1701,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:9 Part-DB1\templates\mail\pw_reset.html.twig:9 - + email.pw_reset.button Click here to reset password @@ -1711,9 +1711,9 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:11 Part-DB1\templates\mail\pw_reset.html.twig:11 - + email.pw_reset.fallback - If this does not work for you, go to <a href="%url%">%url%</a> and enter the following info + %url% and enter the following info]]> @@ -1721,7 +1721,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:16 Part-DB1\templates\mail\pw_reset.html.twig:16 - + email.pw_reset.username Username @@ -1731,7 +1731,7 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:19 Part-DB1\templates\mail\pw_reset.html.twig:19 - + email.pw_reset.token Token @@ -1741,9 +1741,9 @@ Sub elements will be moved upwards. Part-DB1\templates\mail\pw_reset.html.twig:24 Part-DB1\templates\mail\pw_reset.html.twig:24 - + email.pw_reset.valid_unit %date% - The reset token will be valid until <i>%date%</i>. + %date%.]]> @@ -1753,7 +1753,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - + orderdetail.delete Delete @@ -1763,7 +1763,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 - + pricedetails.edit.min_qty Minimum discount quantity @@ -1773,7 +1773,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 - + pricedetails.edit.price Price @@ -1783,7 +1783,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 - + pricedetails.edit.price_qty for amount @@ -1793,7 +1793,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - + pricedetail.create Add price @@ -1804,7 +1804,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 templates\Parts\edit_part_info.html.twig:4 - + part.edit.title Edit part @@ -1815,7 +1815,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 templates\Parts\edit_part_info.html.twig:9 - + part.edit.card_title Edit part @@ -1825,7 +1825,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 - + part.edit.tab.common Common @@ -1835,7 +1835,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 - + part.edit.tab.manufacturer Manufacturer @@ -1845,7 +1845,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 - + part.edit.tab.advanced Advanced @@ -1855,7 +1855,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 - + part.edit.tab.part_lots Stocks @@ -1865,7 +1865,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 - + part.edit.tab.attachments Attachments @@ -1875,7 +1875,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 - + part.edit.tab.orderdetails Purchase information @@ -1884,7 +1884,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - + part.edit.tab.specifications Parameters @@ -1894,7 +1894,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\edit_part_info.html.twig:64 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - + part.edit.tab.comment Notes @@ -1905,7 +1905,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\new_part.html.twig:8 templates\Parts\new_part.html.twig:8 - + part.new.card_title Create new part @@ -1915,7 +1915,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\_lots.html.twig:5 Part-DB1\templates\Parts\edit\_lots.html.twig:5 - + part_lot.delete Delete @@ -1925,7 +1925,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\_lots.html.twig:28 Part-DB1\templates\Parts\edit\_lots.html.twig:28 - + part_lot.create Add stock @@ -1935,7 +1935,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - + orderdetail.create Add distributor @@ -1945,7 +1945,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - + pricedetails.edit.delete.confirm Do you really want to delete this price? This can not be undone. @@ -1955,7 +1955,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - + orderdetails.edit.delete.confirm Do you really want to delete this distributor info? This can not be undone! @@ -1969,7 +1969,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:4 templates\Parts\show_part_info.html.twig:9 - + part.info.title Detail info for part @@ -1979,7 +1979,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:47 Part-DB1\templates\Parts\info\show_part_info.html.twig:47 - + part.part_lots.label Stocks @@ -1994,7 +1994,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:74 src\Form\PartType.php:86 - + comment.label Notes @@ -2003,7 +2003,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - + part.info.specifications Parameters @@ -2014,7 +2014,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:64 templates\Parts\show_part_info.html.twig:82 - + attachment.labelp Attachments @@ -2025,7 +2025,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:71 templates\Parts\show_part_info.html.twig:88 - + vendor.partinfo.shopping_infos Shopping information @@ -2036,7 +2036,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:78 templates\Parts\show_part_info.html.twig:94 - + vendor.partinfo.history History @@ -2055,7 +2055,7 @@ Sub elements will be moved upwards. templates\base.html.twig:231 templates\Parts\show_part_info.html.twig:100 - + tools.label Tools @@ -2065,7 +2065,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\show_part_info.html.twig:103 Part-DB1\templates\Parts\info\show_part_info.html.twig:90 - + extended_info.label Extended info @@ -2075,7 +2075,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - + attachment.name Name @@ -2085,7 +2085,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - + attachment.attachment_type Attachment Type @@ -2095,7 +2095,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - + attachment.file_name File name @@ -2105,7 +2105,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - + attachment.file_size File size @@ -2114,7 +2114,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - + attachment.preview Preview picture @@ -2124,7 +2124,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - + attachment.download Download @@ -2135,7 +2135,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new - + user.creating_user User who created this part @@ -2149,7 +2149,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - + Unknown Unknown @@ -2162,7 +2162,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 new - + accessDenied Access Denied @@ -2173,7 +2173,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new - + user.last_editing_user User who edited this part last @@ -2183,7 +2183,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - + part.isFavorite Favorite @@ -2193,7 +2193,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - + part.minOrderAmount Minimum order amount @@ -2210,7 +2210,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:24 src\Form\PartType.php:80 - + manufacturer.label Manufacturer @@ -2222,7 +2222,7 @@ Sub elements will be moved upwards. templates\base.html.twig:54 src\Form\PartType.php:62 - + name.label Name @@ -2233,7 +2233,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new - + part.back_to_info Back to current version @@ -2248,7 +2248,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:31 src\Form\PartType.php:65 - + description.label Description @@ -2265,7 +2265,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:32 src\Form\PartType.php:74 - + category.label Category @@ -2277,7 +2277,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:42 src\Form\PartType.php:69 - + instock.label Instock @@ -2289,7 +2289,7 @@ Sub elements will be moved upwards. templates\Parts\show_part_info.html.twig:44 src\Form\PartType.php:72 - + mininstock.label Minimum Instock @@ -2305,7 +2305,7 @@ Sub elements will be moved upwards. templates\base.html.twig:73 templates\Parts\show_part_info.html.twig:47 - + footprint.label Footprint @@ -2318,7 +2318,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_main_infos.html.twig:60 templates\Parts\show_part_info.html.twig:51 - + part.avg_price.label Average Price @@ -2328,7 +2328,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:5 Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - + part.supplier.name Name @@ -2338,7 +2338,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - + part.supplier.partnr Partnr. @@ -2348,7 +2348,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:28 Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - + part.order.minamount Minimum amount @@ -2358,7 +2358,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:29 Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - + part.order.price Price @@ -2368,7 +2368,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:31 Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - + part.order.single_price Unit Price @@ -2378,7 +2378,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:71 Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - + edit.caption_short Edit @@ -2388,7 +2388,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_order_infos.html.twig:72 Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - + delete.caption Delete @@ -2398,7 +2398,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:7 Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - + part_lots.description Description @@ -2408,7 +2408,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:8 Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - + part_lots.storage_location Storage location @@ -2418,7 +2418,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:9 Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - + part_lots.amount Amount @@ -2428,7 +2428,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:24 Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - + part_lots.location_unknown Storage location unknown @@ -2438,7 +2438,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:31 Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - + part_lots.instock_unknown Amount unknown @@ -2448,7 +2448,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:40 Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - + part_lots.expiration_date Expiration date @@ -2458,7 +2458,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:48 Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - + part_lots.is_expired Expired @@ -2468,7 +2468,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_part_lots.html.twig:55 Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - + part_lots.need_refill Needs refill @@ -2478,7 +2478,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_picture.html.twig:15 Part-DB1\templates\Parts\info\_picture.html.twig:15 - + part.info.prev_picture Previous picture @@ -2488,7 +2488,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_picture.html.twig:19 Part-DB1\templates\Parts\info\_picture.html.twig:19 - + part.info.next_picture Next picture @@ -2498,7 +2498,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_sidebar.html.twig:21 Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - + part.mass.tooltip Mass @@ -2508,7 +2508,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_sidebar.html.twig:30 Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - + part.needs_review.badge Needs review @@ -2518,7 +2518,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_sidebar.html.twig:39 Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - + part.favorite.badge Favorite @@ -2528,7 +2528,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_sidebar.html.twig:47 Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - + part.obsolete.badge No longer available @@ -2537,7 +2537,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_specifications.html.twig:10 - + parameters.extracted_from_description Automatically extracted from description @@ -2546,7 +2546,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_specifications.html.twig:15 - + parameters.auto_extracted_from_comment Automatically extracted from notes @@ -2557,7 +2557,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_tools.html.twig:4 templates\Parts\show_part_info.html.twig:125 - + part.edit.btn Edit part @@ -2568,7 +2568,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_tools.html.twig:14 templates\Parts\show_part_info.html.twig:135 - + part.clone.btn Clone part @@ -2579,7 +2579,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 templates\Parts\show_part_info.html.twig:143 - + part.create.btn Create new part @@ -2589,7 +2589,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_tools.html.twig:31 Part-DB1\templates\Parts\info\_tools.html.twig:29 - + part.delete.confirm_title Do you really want to delete this part? @@ -2599,7 +2599,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_tools.html.twig:32 Part-DB1\templates\Parts\info\_tools.html.twig:30 - + part.delete.message This part and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! @@ -2609,7 +2609,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\info\_tools.html.twig:39 Part-DB1\templates\Parts\info\_tools.html.twig:37 - + part.delete Delete part @@ -2619,7 +2619,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\all_list.html.twig:4 Part-DB1\templates\Parts\lists\all_list.html.twig:4 - + parts_list.all.title All parts @@ -2629,7 +2629,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\category_list.html.twig:4 Part-DB1\templates\Parts\lists\category_list.html.twig:4 - + parts_list.category.title Parts with category @@ -2639,7 +2639,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - + parts_list.footprint.title Parts with footprint @@ -2649,7 +2649,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - + parts_list.manufacturer.title Parts with manufacturer @@ -2659,7 +2659,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\search_list.html.twig:4 Part-DB1\templates\Parts\lists\search_list.html.twig:4 - + parts_list.search.title Search Parts @@ -2669,7 +2669,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 - + parts_list.storelocation.title Parts with storage locations @@ -2679,7 +2679,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - + parts_list.supplier.title Parts with supplier @@ -2689,7 +2689,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\tags_list.html.twig:4 Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - + parts_list.tags.title Parts with tag @@ -2699,7 +2699,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:22 Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - + entity.info.common.tab Common @@ -2709,7 +2709,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:26 Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - + entity.info.statistics.tab Statistics @@ -2718,7 +2718,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - + entity.info.attachments.tab Attachments @@ -2727,7 +2727,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - + entity.info.parameters.tab Parameters @@ -2737,7 +2737,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:54 Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - + entity.info.name Name @@ -2749,7 +2749,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:34 Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - + entity.info.parent Parent @@ -2759,7 +2759,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:70 Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - + entity.edit.btn Edit @@ -2769,7 +2769,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Parts\lists\_info_card.html.twig:92 Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - + entity.info.children_count Count of children elements @@ -2781,7 +2781,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\2fa_base_form.html.twig:3 Part-DB1\templates\security\2fa_base_form.html.twig:5 - + tfa.check.title Two-factor authentication needed @@ -2791,7 +2791,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\2fa_base_form.html.twig:39 Part-DB1\templates\security\2fa_base_form.html.twig:39 - + tfa.code.trusted_pc This is a trusted computer (if this is enabled, no further two-factor queries are performed on this computer) @@ -2803,7 +2803,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\2fa_base_form.html.twig:52 Part-DB1\templates\security\login.html.twig:58 - + login.btn Login @@ -2817,7 +2817,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_login.html.twig:13 Part-DB1\templates\_navbar.html.twig:40 - + user.logout Logout @@ -2827,7 +2827,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\2fa_form.html.twig:6 Part-DB1\templates\security\2fa_form.html.twig:6 - + tfa.check.code.label Authenticator app code @@ -2837,7 +2837,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\2fa_form.html.twig:10 Part-DB1\templates\security\2fa_form.html.twig:10 - + tfa.check.code.help Enter the 6-digit code from your Authenticator app or one of your backup codes if the Authenticator is not available. @@ -2848,7 +2848,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:3 templates\security\login.html.twig:3 - + login.title Login @@ -2859,7 +2859,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:7 templates\security\login.html.twig:7 - + login.card_title Login @@ -2870,7 +2870,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:31 templates\security\login.html.twig:31 - + login.username.label Username @@ -2881,7 +2881,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:34 templates\security\login.html.twig:34 - + login.username.placeholder Username @@ -2892,7 +2892,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:38 templates\security\login.html.twig:38 - + login.password.label Password @@ -2903,7 +2903,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:40 templates\security\login.html.twig:40 - + login.password.placeholder Password @@ -2914,7 +2914,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:50 templates\security\login.html.twig:50 - + login.rememberme Remember me (should not be used on shared computers) @@ -2924,7 +2924,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\login.html.twig:64 Part-DB1\templates\security\login.html.twig:64 - + pw_reset.password_forget Forgot username/password? @@ -2934,7 +2934,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 - + pw_reset.new_pw.header.title Set new password @@ -2944,7 +2944,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\pw_reset_request.html.twig:5 Part-DB1\templates\security\pw_reset_request.html.twig:5 - + pw_reset.request.header.title Request a new password @@ -2956,7 +2956,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_login.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - + tfa_u2f.http_warning You are accessing this page using the insecure HTTP method, so U2F will most likely not work (Bad Request error message). Ask an administrator to set up the secure HTTPS method if you want to use security keys. @@ -2968,7 +2968,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_login.html.twig:10 Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - + r_u2f_two_factor.pressbutton Please plug in your security key and press its button! @@ -2978,7 +2978,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:3 Part-DB1\templates\security\U2F\u2f_register.html.twig:3 - + tfa_u2f.add_key.title Add security key @@ -2990,7 +2990,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:111 - + tfa_u2f.explanation With the help of a U2F/FIDO compatible security key (e.g. YubiKey or NitroKey), user-friendly and secure two-factor authentication can be achieved. The security keys can be registered here, and if two-factor verification is required, the key only needs to be inserted via USB or typed against the device via NFC. @@ -3000,7 +3000,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:7 - + tfa_u2f.add_key.backup_hint To ensure access even if the key is lost, it is recommended to register a second key as backup and store it in a safe place! @@ -3010,7 +3010,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:16 Part-DB1\templates\security\U2F\u2f_register.html.twig:16 - + r_u2f_two_factor.name Shown key name (e.g. Backup) @@ -3020,7 +3020,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:19 Part-DB1\templates\security\U2F\u2f_register.html.twig:19 - + tfa_u2f.add_key.add_button Add security key @@ -3030,7 +3030,7 @@ Sub elements will be moved upwards. Part-DB1\templates\security\U2F\u2f_register.html.twig:27 Part-DB1\templates\security\U2F\u2f_register.html.twig:27 - + tfa_u2f.add_key.back_to_settings Back to settings @@ -3043,7 +3043,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:8 new - + statistics.title Statistics @@ -3054,7 +3054,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:14 new - + statistics.parts Parts @@ -3065,7 +3065,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:19 new - + statistics.data_structures Data structures @@ -3076,7 +3076,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:24 new - + statistics.attachments Attachments @@ -3091,7 +3091,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:104 new - + statistics.property Property @@ -3106,7 +3106,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:105 new - + statistics.value Value @@ -3117,7 +3117,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:40 new - + statistics.distinct_parts_count Number of distinct parts @@ -3128,7 +3128,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:44 new - + statistics.parts_instock_sum Sum of all part instocks @@ -3139,7 +3139,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:48 new - + statistics.parts_with_price Number of parts with price information @@ -3150,7 +3150,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:65 new - + statistics.categories_count Number of categories @@ -3161,7 +3161,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:69 new - + statistics.footprints_count Number of footprints @@ -3172,7 +3172,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:73 new - + statistics.manufacturers_count Number of manufacturers @@ -3183,7 +3183,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:77 new - + statistics.storelocations_count Number of storage locations @@ -3194,7 +3194,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:81 new - + statistics.suppliers_count Number of suppliers @@ -3205,7 +3205,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:85 new - + statistics.currencies_count Number of currencies @@ -3216,7 +3216,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:89 new - + statistics.measurement_units_count Number of measurement units @@ -3227,7 +3227,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:93 new - + statistics.devices_count Number of projects @@ -3238,7 +3238,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:110 new - + statistics.attachment_types_count Number of attachment types @@ -3249,7 +3249,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:114 new - + statistics.all_attachments_count Number of all attachments @@ -3260,7 +3260,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:118 new - + statistics.user_uploaded_attachments_count Number of user uploaded attachments @@ -3271,7 +3271,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:122 new - + statistics.private_attachments_count Number of private attachments @@ -3282,7 +3282,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Statistics\statistics.html.twig:126 new - + statistics.external_attachments_count Number of external attachments (URL) @@ -3294,7 +3294,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:3 Part-DB1\templates\Users\backup_codes.html.twig:9 - + tfa_backup.codes.title Backup codes @@ -3304,7 +3304,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:12 Part-DB1\templates\Users\backup_codes.html.twig:12 - + tfa_backup.codes.explanation Print out these codes and keep them in a safe place! @@ -3314,7 +3314,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:13 Part-DB1\templates\Users\backup_codes.html.twig:13 - + tfa_backup.codes.help If you no longer have access to your device with the Authenticator App (lost smartphone, data loss, etc.) you can use one of these codes to access your account and possibly set up a new Authenticator App. Each of these codes can be used once, it is recommended to delete used codes. Anyone with access to these codes can potentially access your account, so keep them in a safe place. @@ -3324,7 +3324,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:16 Part-DB1\templates\Users\backup_codes.html.twig:16 - + tfa_backup.username Username @@ -3334,7 +3334,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:29 Part-DB1\templates\Users\backup_codes.html.twig:29 - + tfa_backup.codes.page_generated_on Page generated on %date% @@ -3344,7 +3344,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:32 Part-DB1\templates\Users\backup_codes.html.twig:32 - + tfa_backup.codes.print Print @@ -3354,7 +3354,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\backup_codes.html.twig:35 Part-DB1\templates\Users\backup_codes.html.twig:35 - + tfa_backup.codes.copy_clipboard Copy to clipboard @@ -3371,7 +3371,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:3 templates\Users\user_info.html.twig:6 - + user.info.label User information @@ -3385,7 +3385,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:18 src\Form\UserSettingsType.php:32 - + user.firstName.label First name @@ -3399,7 +3399,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:24 src\Form\UserSettingsType.php:35 - + user.lastName.label Last name @@ -3413,7 +3413,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:30 src\Form\UserSettingsType.php:41 - + user.email.label Email @@ -3427,7 +3427,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:37 src\Form\UserSettingsType.php:38 - + user.department.label Department @@ -3441,7 +3441,7 @@ Sub elements will be moved upwards. templates\Users\user_info.html.twig:47 src\Form\UserSettingsType.php:30 - + user.username.label User name @@ -3454,7 +3454,7 @@ Sub elements will be moved upwards. Part-DB1\src\Services\ElementTypeNameGenerator.php:93 templates\Users\user_info.html.twig:53 - + group.label Group: @@ -3464,7 +3464,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\user_info.html.twig:67 Part-DB1\templates\Users\user_info.html.twig:67 - + user.permissions Permissions @@ -3481,7 +3481,7 @@ Sub elements will be moved upwards. templates\Users\user_settings.html.twig:3 templates\Users\user_settings.html.twig:6 - + user.settings.label User settings @@ -3492,7 +3492,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\user_settings.html.twig:18 templates\Users\user_settings.html.twig:14 - + user_settings.data.label Personal data @@ -3503,7 +3503,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\user_settings.html.twig:22 templates\Users\user_settings.html.twig:18 - + user_settings.configuration.label Configuration @@ -3514,7 +3514,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\user_settings.html.twig:55 templates\Users\user_settings.html.twig:48 - + user.settings.change_pw Change password @@ -3524,7 +3524,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:6 - + user.settings.2fa_settings Two-Factor Authentication @@ -3534,7 +3534,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:13 Part-DB1\templates\Users\_2fa_settings.html.twig:13 - + tfa.settings.google.tab Authenticator app @@ -3544,7 +3544,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:17 - + tfa.settings.bakup.tab Backup codes @@ -3554,7 +3554,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:21 Part-DB1\templates\Users\_2fa_settings.html.twig:21 - + tfa.settings.u2f.tab Security keys (U2F) @@ -3564,7 +3564,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:25 Part-DB1\templates\Users\_2fa_settings.html.twig:25 - + tfa.settings.trustedDevices.tab Trusted devices @@ -3574,7 +3574,7 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 - + tfa_google.disable.confirm_title Do you really want to disable the Authenticator App? @@ -3584,10 +3584,10 @@ Sub elements will be moved upwards. Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 - + tfa_google.disable.confirm_message - If you disable the Authenticator App, all backup codes will be deleted, so you may need to reprint them.<br> -Also note that without two-factor authentication your account is not as well protected against attackers! + +Also note that without two-factor authentication your account is not as well protected against attackers!]]> @@ -3595,7 +3595,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:39 Part-DB1\templates\Users\_2fa_settings.html.twig:39 - + tfa_google.disabled_message Authenticator app deactivated! @@ -3605,9 +3605,9 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:48 Part-DB1\templates\Users\_2fa_settings.html.twig:48 - + tfa_google.step.download - Download an authenticator app (e.g. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> oder <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTP Authenticator</a>) + Google Authenticator oder FreeOTP Authenticator)]]> @@ -3615,7 +3615,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:49 Part-DB1\templates\Users\_2fa_settings.html.twig:49 - + tfa_google.step.scan Scan the adjoining QR Code with the app or enter the data manually @@ -3625,7 +3625,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:50 Part-DB1\templates\Users\_2fa_settings.html.twig:50 - + tfa_google.step.input_code Enter the generated code in the field below and confirm @@ -3635,7 +3635,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:51 Part-DB1\templates\Users\_2fa_settings.html.twig:51 - + tfa_google.step.download_backup Print out your backup codes and store them in a safe place @@ -3645,7 +3645,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:58 Part-DB1\templates\Users\_2fa_settings.html.twig:58 - + tfa_google.manual_setup Manual setup @@ -3655,7 +3655,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:62 Part-DB1\templates\Users\_2fa_settings.html.twig:62 - + tfa_google.manual_setup.type Type @@ -3665,7 +3665,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:63 Part-DB1\templates\Users\_2fa_settings.html.twig:63 - + tfa_google.manual_setup.username Username @@ -3675,7 +3675,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:64 Part-DB1\templates\Users\_2fa_settings.html.twig:64 - + tfa_google.manual_setup.secret Secret @@ -3685,7 +3685,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:65 Part-DB1\templates\Users\_2fa_settings.html.twig:65 - + tfa_google.manual_setup.digit_count Digit count @@ -3695,7 +3695,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:74 Part-DB1\templates\Users\_2fa_settings.html.twig:74 - + tfa_google.enabled_message Authenticator App enabled @@ -3705,7 +3705,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:83 Part-DB1\templates\Users\_2fa_settings.html.twig:83 - + tfa_backup.disabled Backup codes disabled. Setup authenticator app to enable backup codes. @@ -3717,7 +3717,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:84 Part-DB1\templates\Users\_2fa_settings.html.twig:92 - + tfa_backup.explanation You can use these backup codes to access your account even if you lose the device with the Authenticator App. Print out the codes and keep them in a safe place. @@ -3727,7 +3727,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 - + tfa_backup.reset_codes.confirm_title Really reset codes? @@ -3737,7 +3737,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 - + tfa_backup.reset_codes.confirm_message This will delete all previous codes and generate a set of new codes. This cannot be undone. Remember to print out the new codes and store them in a safe place! @@ -3747,7 +3747,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:91 Part-DB1\templates\Users\_2fa_settings.html.twig:91 - + tfa_backup.enabled Backup codes enabled @@ -3757,7 +3757,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:99 Part-DB1\templates\Users\_2fa_settings.html.twig:99 - + tfa_backup.show_codes Show backup codes @@ -3767,7 +3767,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:114 Part-DB1\templates\Users\_2fa_settings.html.twig:114 - + tfa_u2f.table_caption Registered security keys @@ -3777,7 +3777,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:115 Part-DB1\templates\Users\_2fa_settings.html.twig:115 - + tfa_u2f.delete_u2f.confirm_title Really remove this security key? @@ -3787,7 +3787,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:116 Part-DB1\templates\Users\_2fa_settings.html.twig:116 - + tfa_u2f.delete_u2f.confirm_message If you remove this key, then no more login with this key will be possible. If no security keys remain, two-factor authentication will be disabled. @@ -3797,7 +3797,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:123 Part-DB1\templates\Users\_2fa_settings.html.twig:123 - + tfa_u2f.keys.name Key name @@ -3807,7 +3807,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:124 Part-DB1\templates\Users\_2fa_settings.html.twig:124 - + tfa_u2f.keys.added_date Registration date @@ -3817,7 +3817,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:134 Part-DB1\templates\Users\_2fa_settings.html.twig:134 - + tfa_u2f.key_delete Delete key @@ -3827,7 +3827,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:141 Part-DB1\templates\Users\_2fa_settings.html.twig:141 - + tfa_u2f.no_keys_registered No keys registered yet. @@ -3837,7 +3837,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:144 Part-DB1\templates\Users\_2fa_settings.html.twig:144 - + tfa_u2f.add_new_key Register new security key @@ -3847,10 +3847,10 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:148 Part-DB1\templates\Users\_2fa_settings.html.twig:148 - + tfa_trustedDevices.explanation - When checking the second factor, the current computer can be marked as trustworthy, so no more two-factor checks on this computer are needed. -If you have done this incorrectly or if a computer is no longer trusted, you can reset the status of <i>all </i>computers here. + all computers here.]]> @@ -3858,7 +3858,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:149 Part-DB1\templates\Users\_2fa_settings.html.twig:149 - + tfa_trustedDevices.invalidate.confirm_title Really remove all trusted computers? @@ -3868,7 +3868,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:150 Part-DB1\templates\Users\_2fa_settings.html.twig:150 - + tfa_trustedDevices.invalidate.confirm_message You will have to perform two-factor authentication again on all computers. Make sure you have your two-factor device at hand. @@ -3878,7 +3878,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:154 Part-DB1\templates\Users\_2fa_settings.html.twig:154 - + tfa_trustedDevices.invalidate.btn Reset trusted devices @@ -3889,7 +3889,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:4 templates\base.html.twig:29 - + sidebar.toggle Toggle Sidebar @@ -3898,7 +3898,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:22 - + navbar.scanner.link Scanner @@ -3909,7 +3909,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:36 templates\base.html.twig:97 - + user.loggedin.label Logged in as @@ -3920,7 +3920,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:42 templates\base.html.twig:103 - + user.login Login @@ -3930,7 +3930,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:50 Part-DB1\templates\_navbar.html.twig:48 - + ui.toggle_darkmode Darkmode @@ -3944,7 +3944,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:106 src\Form\UserSettingsType.php:44 - + user.language_select Switch Language @@ -3955,7 +3955,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:4 templates\base.html.twig:49 - + search.options.label Search options @@ -3964,7 +3964,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:23 - + tags.label Tags @@ -3979,7 +3979,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\Parts\show_part_info.html.twig:36 src\Form\PartType.php:77 - + storelocation.label Storage location @@ -3990,7 +3990,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:31 templates\base.html.twig:65 - + ordernumber.label.short supplier partnr. @@ -4003,7 +4003,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:89 templates\base.html.twig:67 - + supplier.label Supplier @@ -4014,7 +4014,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:52 templates\base.html.twig:75 - + search.deactivateBarcode Deact. Barcode @@ -4025,7 +4025,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:56 templates\base.html.twig:77 - + search.regexmatching Reg.Ex. Matching @@ -4035,7 +4035,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:68 Part-DB1\templates\_navbar_search.html.twig:62 - + search.submit Go! @@ -4051,7 +4051,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:202 templates\base.html.twig:230 - + project.labelp Projects @@ -4064,7 +4064,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:192 templates\base.html.twig:220 - + actions Actions @@ -4077,7 +4077,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:196 templates\base.html.twig:224 - + datasource Data source @@ -4090,7 +4090,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:200 templates\base.html.twig:228 - + manufacturer.labelp Manufacturers @@ -4103,7 +4103,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:201 templates\base.html.twig:229 - + supplier.labelp Suppliers @@ -4119,7 +4119,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:173 Part-DB1\src\Controller\PartController.php:268 - + attachment.download_failed Download of the external attachment failed. @@ -4129,7 +4129,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - + entity.edit_flash Changes saved successful. @@ -4139,7 +4139,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - + entity.edit_flash.invalid Can not save changed. Please check your input! @@ -4149,7 +4149,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - + entity.created_flash Element created. @@ -4159,7 +4159,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - + entity.created_flash.invalid Could not create element. Please check your input! @@ -4170,7 +4170,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 src\Controller\BaseAdminController.php:154 - + attachment_type.deleted Element deleted! @@ -4186,7 +4186,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:150 Part-DB1\src\Controller\UserSettingsController.php:182 - + csfr_invalid CSFR Token invalid. Please reload this page or contact an administrator if this message stays. @@ -4195,7 +4195,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LabelController.php:125 - + label_generator.no_entities_found No entities matching the range found. @@ -4206,7 +4206,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:154 new - + log.undo.target_not_found Target element could not be found in DB! @@ -4217,7 +4217,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:160 new - + log.undo.revert_success Reverted to timestamp successfully. @@ -4228,7 +4228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:180 new - + log.undo.element_undelete_success Undeleted element successfully. @@ -4239,7 +4239,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:182 new - + log.undo.element_element_already_undeleted Element was already undeleted! @@ -4250,7 +4250,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:189 new - + log.undo.element_delete_success Element deleted successfully. @@ -4261,7 +4261,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:191 new - + log.undo.element.element_already_delted Element was already deleted! @@ -4272,7 +4272,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:198 new - + log.undo.element_change_undone Change undone successfully! @@ -4283,7 +4283,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:200 new - + log.undo.do_undelete_before You have to undelete the element before you can undo this change! @@ -4294,7 +4294,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:203 new - + log.undo.log_type_invalid This log entry can not be undone! @@ -4305,7 +4305,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:182 src\Controller\PartController.php:80 - + part.edited_flash Saved changes! @@ -4315,7 +4315,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:186 Part-DB1\src\Controller\PartController.php:186 - + part.edited_flash.invalid Error during saving: Please check your inputs! @@ -4325,7 +4325,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:216 Part-DB1\src\Controller\PartController.php:219 - + part.deleted Part deleted successful. @@ -4338,7 +4338,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Controller\PartController.php:113 src\Controller\PartController.php:142 - + part.created_flash Part created! @@ -4348,7 +4348,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:308 Part-DB1\src\Controller\PartController.php:283 - + part.created_flash.invalid Error during creation: Please check your inputs! @@ -4358,7 +4358,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:68 Part-DB1\src\Controller\ScanController.php:90 - + scan.qr_not_found No element found for the given barcode. @@ -4367,7 +4367,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:71 - + scan.format_unknown Format unknown! @@ -4376,7 +4376,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:86 - + scan.qr_success Element found. @@ -4386,7 +4386,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:114 Part-DB1\src\Controller\SecurityController.php:109 - + pw_reset.user_or_email Username / Email @@ -4396,7 +4396,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:131 Part-DB1\src\Controller\SecurityController.php:126 - + pw_reset.request.success Reset request was successful! Please check your emails for further instructions. @@ -4406,7 +4406,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:162 Part-DB1\src\Controller\SecurityController.php:160 - + pw_reset.username Username @@ -4416,7 +4416,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:165 Part-DB1\src\Controller\SecurityController.php:163 - + pw_reset.token Token @@ -4426,7 +4426,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:194 Part-DB1\src\Controller\SecurityController.php:192 - + pw_reset.new_pw.error Username or Token invalid! Please check your input. @@ -4436,7 +4436,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:196 Part-DB1\src\Controller\SecurityController.php:194 - + pw_reset.new_pw.success Password was reset successfully. You can now login with your new password. @@ -4446,7 +4446,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserController.php:107 Part-DB1\src\Controller\UserController.php:99 - + user.edit.reset_success All two-factor authentication methods were successfully disabled. @@ -4456,7 +4456,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:101 Part-DB1\src\Controller\UserSettingsController.php:92 - + tfa_backup.no_codes_enabled No backup codes enabled! @@ -4466,7 +4466,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:138 Part-DB1\src\Controller\UserSettingsController.php:132 - + tfa_u2f.u2f_delete.not_existing No security key with this ID is existing. @@ -4476,7 +4476,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:145 Part-DB1\src\Controller\UserSettingsController.php:139 - + tfa_u2f.u2f_delete.access_denied You can not delete the security keys of other users! @@ -4486,7 +4486,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:153 Part-DB1\src\Controller\UserSettingsController.php:147 - + tfa.u2f.u2f_delete.success Security key successfully removed. @@ -4496,7 +4496,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:188 Part-DB1\src\Controller\UserSettingsController.php:180 - + tfa_trustedDevice.invalidate.success Trusted devices successfully reset. @@ -4507,7 +4507,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:226 src\Controller\UserController.php:98 - + user.settings.saved_flash Settings saved! @@ -4518,7 +4518,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:288 src\Controller\UserController.php:130 - + user.settings.pw_changed_flash Password changed! @@ -4528,7 +4528,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:317 Part-DB1\src\Controller\UserSettingsController.php:306 - + user.settings.2fa.google.activated Authenticator App successfully activated. @@ -4538,7 +4538,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:328 Part-DB1\src\Controller\UserSettingsController.php:315 - + user.settings.2fa.google.disabled Authenticator App successfully deactivated. @@ -4548,7 +4548,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:346 Part-DB1\src\Controller\UserSettingsController.php:332 - + user.settings.2fa.backup_codes.regenerated New backup codes successfully generated. @@ -4558,7 +4558,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\AttachmentDataTable.php:148 Part-DB1\src\DataTables\AttachmentDataTable.php:148 - + attachment.table.filename File name @@ -4568,7 +4568,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\AttachmentDataTable.php:153 Part-DB1\src\DataTables\AttachmentDataTable.php:153 - + attachment.table.filesize File size @@ -4588,7 +4588,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:193 Part-DB1\src\DataTables\PartsDataTable.php:200 - + true true @@ -4610,7 +4610,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:201 Part-DB1\src\Form\Type\SIUnitType.php:139 - + false false @@ -4620,7 +4620,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - + log.target_deleted deleted @@ -4631,7 +4631,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new - + log.undo.undelete Undelete element @@ -4642,7 +4642,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new - + log.undo.undo Undo change @@ -4653,7 +4653,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new - + log.undo.revert Revert element to this timestamp @@ -4663,7 +4663,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:173 Part-DB1\src\DataTables\LogDataTable.php:161 - + log.id ID @@ -4673,7 +4673,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:178 Part-DB1\src\DataTables\LogDataTable.php:166 - + log.timestamp Timestamp @@ -4683,7 +4683,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:183 Part-DB1\src\DataTables\LogDataTable.php:171 - + log.type Event @@ -4693,7 +4693,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:191 Part-DB1\src\DataTables\LogDataTable.php:179 - + log.level Level @@ -4703,7 +4703,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:200 Part-DB1\src\DataTables\LogDataTable.php:188 - + log.user User @@ -4713,7 +4713,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:213 Part-DB1\src\DataTables\LogDataTable.php:201 - + log.target_type Target type @@ -4723,7 +4723,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:226 Part-DB1\src\DataTables\LogDataTable.php:214 - + log.target Target @@ -4734,7 +4734,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:218 new - + log.extra Extra @@ -4744,7 +4744,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:168 Part-DB1\src\DataTables\PartsDataTable.php:116 - + part.table.name Name @@ -4754,7 +4754,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:178 Part-DB1\src\DataTables\PartsDataTable.php:126 - + part.table.id Id @@ -4764,7 +4764,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:182 Part-DB1\src\DataTables\PartsDataTable.php:130 - + part.table.description Description @@ -4774,7 +4774,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:185 Part-DB1\src\DataTables\PartsDataTable.php:133 - + part.table.category Category @@ -4784,7 +4784,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:190 Part-DB1\src\DataTables\PartsDataTable.php:138 - + part.table.footprint Footprint @@ -4794,7 +4794,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:194 Part-DB1\src\DataTables\PartsDataTable.php:142 - + part.table.manufacturer Manufacturer @@ -4804,7 +4804,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:197 Part-DB1\src\DataTables\PartsDataTable.php:145 - + part.table.storeLocations Storage locations @@ -4814,7 +4814,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:216 Part-DB1\src\DataTables\PartsDataTable.php:164 - + part.table.amount Amount @@ -4824,7 +4824,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:224 Part-DB1\src\DataTables\PartsDataTable.php:172 - + part.table.minamount Min. Amount @@ -4834,7 +4834,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:232 Part-DB1\src\DataTables\PartsDataTable.php:180 - + part.table.partUnit Measurement Unit @@ -4844,7 +4844,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:236 Part-DB1\src\DataTables\PartsDataTable.php:184 - + part.table.addedDate Created at @@ -4854,7 +4854,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:240 Part-DB1\src\DataTables\PartsDataTable.php:188 - + part.table.lastModified Last modified @@ -4864,7 +4864,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:244 Part-DB1\src\DataTables\PartsDataTable.php:192 - + part.table.needsReview Needs review @@ -4874,7 +4874,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:251 Part-DB1\src\DataTables\PartsDataTable.php:199 - + part.table.favorite Favorite @@ -4884,7 +4884,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:258 Part-DB1\src\DataTables\PartsDataTable.php:206 - + part.table.manufacturingStatus Status @@ -4898,7 +4898,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:210 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.unknown Unknown @@ -4910,7 +4910,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:211 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.announced Announced @@ -4922,7 +4922,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:212 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.active Active @@ -4934,7 +4934,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:213 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.nrfnd Not recommended for new designs @@ -4946,7 +4946,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:214 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.eol End of life @@ -4958,7 +4958,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:215 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.discontinued Discontinued @@ -4968,7 +4968,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:271 Part-DB1\src\DataTables\PartsDataTable.php:219 - + part.table.mpn MPN @@ -4978,7 +4978,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:275 Part-DB1\src\DataTables\PartsDataTable.php:223 - + part.table.mass Mass @@ -4988,7 +4988,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:279 Part-DB1\src\DataTables\PartsDataTable.php:227 - + part.table.tags Tags @@ -4998,7 +4998,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:283 Part-DB1\src\DataTables\PartsDataTable.php:231 - + part.table.attachments Attachments @@ -5008,7 +5008,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - + flash.login_successful Login successful @@ -5019,7 +5019,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + JSON JSON @@ -5030,7 +5030,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + XML XML @@ -5041,7 +5041,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + CSV CSV @@ -5052,7 +5052,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + YAML YAML @@ -5062,7 +5062,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:124 Part-DB1\src\Form\AdminPages\ImportType.php:124 - + import.abort_on_validation.help When this option is activated, the whole import process is aborted if invalid data is detected. If not selected, the invalid data is ignored and the importer will try to import the other elements. @@ -5073,7 +5073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:86 src\Form\ImportType.php:70 - + import.csv_separator CSV separator @@ -5084,7 +5084,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:93 src\Form\ImportType.php:72 - + parent.label Parent element @@ -5095,7 +5095,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:101 src\Form\ImportType.php:75 - + import.file File @@ -5106,7 +5106,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:111 src\Form\ImportType.php:78 - + import.preserve_children Preserve child elements on import @@ -5117,7 +5117,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:120 src\Form\ImportType.php:80 - + import.abort_on_validation Abort on invalid data @@ -5128,7 +5128,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:132 src\Form\ImportType.php:85 - + import.btn Import @@ -5138,7 +5138,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:113 Part-DB1\src\Form\AttachmentFormType.php:109 - + attachment.edit.secure_file.help An attachment marked private can only be accessed by authenticated users with the proper permission. If this is activated no thumbnails are generated and access to file is less performant. @@ -5148,7 +5148,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:127 Part-DB1\src\Form\AttachmentFormType.php:123 - + attachment.edit.url.help You can specify an URL to an external file here, or input an keyword which is used to search in built-in resources (e.g. footprints) @@ -5158,7 +5158,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:82 Part-DB1\src\Form\AttachmentFormType.php:79 - + attachment.edit.name Name @@ -5168,7 +5168,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:85 Part-DB1\src\Form\AttachmentFormType.php:82 - + attachment.edit.attachment_type Attachment type @@ -5178,7 +5178,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:94 Part-DB1\src\Form\AttachmentFormType.php:91 - + attachment.edit.show_in_table Show in table @@ -5188,7 +5188,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:105 Part-DB1\src\Form\AttachmentFormType.php:102 - + attachment.edit.secure_file Private attachment @@ -5198,7 +5198,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:119 Part-DB1\src\Form\AttachmentFormType.php:115 - + attachment.edit.url URL @@ -5208,7 +5208,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:133 Part-DB1\src\Form\AttachmentFormType.php:129 - + attachment.edit.download_url Download external file @@ -5218,7 +5218,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:146 Part-DB1\src\Form\AttachmentFormType.php:142 - + attachment.edit.file Upload file @@ -5228,7 +5228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - + part.label Part @@ -5238,7 +5238,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - + part_lot.label Part lot @@ -5247,7 +5247,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.none None @@ -5256,7 +5256,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.qr QR Code (recommended) @@ -5265,7 +5265,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code128 Code 128 (recommended) @@ -5274,7 +5274,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code39 Code 39 (recommended) @@ -5283,7 +5283,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code93 Code 93 @@ -5292,7 +5292,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.datamatrix Datamatrix @@ -5301,7 +5301,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:122 - + label_options.lines_mode.html Placeholders @@ -5310,7 +5310,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:122 - + label.options.lines_mode.twig Twig @@ -5319,16 +5319,16 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:126 - + label_options.lines_mode.help - If you select Twig here, the content field is interpreted as Twig template. See <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig documentation</a> and <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> for more information. + Twig documentation and Wiki for more information.]]> Part-DB1\src\Form\LabelOptionsType.php:47 - + label_options.page_size.label Label size @@ -5337,7 +5337,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:66 - + label_options.supported_elements.label Target type @@ -5346,7 +5346,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:75 - + label_options.barcode_type.label Barcode @@ -5355,7 +5355,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:102 - + label_profile.lines.label Content @@ -5364,7 +5364,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:111 - + label_options.additional_css.label Additional styles (CSS) @@ -5373,7 +5373,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:120 - + label_options.lines_mode.label Parser mode @@ -5382,7 +5382,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:51 - + label_options.width.placeholder Width @@ -5391,7 +5391,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:60 - + label_options.height.placeholder Height @@ -5400,7 +5400,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - + label_generator.target_id.range_hint You can specify multiple IDs (e.g. 1,2,3) and/or a range (1-3) here to generate labels for multiple elements at once. @@ -5409,7 +5409,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - + label_generator.target_id.label Target IDs @@ -5418,7 +5418,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - + label_generator.update Update @@ -5427,7 +5427,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - + scan_dialog.input Input @@ -5436,7 +5436,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - + scan_dialog.submit Submit @@ -5445,7 +5445,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:41 - + parameters.name.placeholder e.g. DC Current Gain @@ -5454,7 +5454,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:50 - + parameters.symbol.placeholder e.g. h_{FE} @@ -5463,7 +5463,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:60 - + parameters.text.placeholder e.g. Test conditions @@ -5472,7 +5472,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:71 - + parameters.max.placeholder e.g. 350 @@ -5481,7 +5481,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:82 - + parameters.min.placeholder e.g. 100 @@ -5490,7 +5490,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:93 - + parameters.typical.placeholder e.g. 200 @@ -5499,7 +5499,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:103 - + parameters.unit.placeholder e.g. V @@ -5508,7 +5508,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:114 - + parameter.group.placeholder e.g. Technical Specifications @@ -5518,7 +5518,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:72 Part-DB1\src\Form\Part\OrderdetailType.php:75 - + orderdetails.edit.supplierpartnr Supplier part number @@ -5528,7 +5528,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:81 Part-DB1\src\Form\Part\OrderdetailType.php:84 - + orderdetails.edit.supplier Supplier @@ -5538,7 +5538,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:87 Part-DB1\src\Form\Part\OrderdetailType.php:90 - + orderdetails.edit.url Link to offer @@ -5548,7 +5548,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:93 Part-DB1\src\Form\Part\OrderdetailType.php:96 - + orderdetails.edit.obsolete No longer available @@ -5558,7 +5558,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:75 Part-DB1\src\Form\Part\OrderdetailType.php:78 - + orderdetails.edit.supplierpartnr.placeholder e.g. BC 547 @@ -5568,7 +5568,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:101 Part-DB1\src\Form\Part\PartBaseType.php:99 - + part.edit.name Name @@ -5578,7 +5578,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:109 Part-DB1\src\Form\Part\PartBaseType.php:107 - + part.edit.description Description @@ -5588,7 +5588,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:120 Part-DB1\src\Form\Part\PartBaseType.php:118 - + part.edit.mininstock Minimum stock @@ -5598,7 +5598,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:129 Part-DB1\src\Form\Part\PartBaseType.php:127 - + part.edit.category Category @@ -5608,7 +5608,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:135 Part-DB1\src\Form\Part\PartBaseType.php:133 - + part.edit.footprint Footprint @@ -5618,7 +5618,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:142 Part-DB1\src\Form\Part\PartBaseType.php:140 - + part.edit.tags Tags @@ -5628,7 +5628,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:154 Part-DB1\src\Form\Part\PartBaseType.php:152 - + part.edit.manufacturer.label Manufacturer @@ -5638,7 +5638,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:161 Part-DB1\src\Form\Part\PartBaseType.php:159 - + part.edit.manufacturer_url.label Link to product page @@ -5648,7 +5648,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:167 Part-DB1\src\Form\Part\PartBaseType.php:165 - + part.edit.mpn Manufacturer part number @@ -5658,7 +5658,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:173 Part-DB1\src\Form\Part\PartBaseType.php:171 - + part.edit.manufacturing_status Manufacturing status @@ -5668,7 +5668,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:181 Part-DB1\src\Form\Part\PartBaseType.php:179 - + part.edit.needs_review Needs review @@ -5678,7 +5678,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:189 Part-DB1\src\Form\Part\PartBaseType.php:187 - + part.edit.is_favorite Favorite @@ -5688,7 +5688,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:197 Part-DB1\src\Form\Part\PartBaseType.php:195 - + part.edit.mass Mass @@ -5698,7 +5698,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:203 Part-DB1\src\Form\Part\PartBaseType.php:201 - + part.edit.partUnit Measuring unit @@ -5708,7 +5708,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:212 Part-DB1\src\Form\Part\PartBaseType.php:210 - + part.edit.comment Notes @@ -5718,7 +5718,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:250 Part-DB1\src\Form\Part\PartBaseType.php:246 - + part.edit.master_attachment Preview image @@ -5729,7 +5729,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:276 src\Form\PartType.php:91 - + part.edit.save Save changes @@ -5740,7 +5740,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:277 src\Form\PartType.php:92 - + part.edit.reset Reset changes @@ -5750,7 +5750,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:105 Part-DB1\src\Form\Part\PartBaseType.php:103 - + part.edit.name.placeholder e.g. BC547 @@ -5760,7 +5760,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:115 Part-DB1\src\Form\Part\PartBaseType.php:113 - + part.edit.description.placeholder e.g. NPN 45V, 0,1A, 0,5W @@ -5770,7 +5770,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:123 Part-DB1\src\Form\Part\PartBaseType.php:121 - + part.editmininstock.placeholder e.g. 1 @@ -5780,7 +5780,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:69 Part-DB1\src\Form\Part\PartLotType.php:69 - + part_lot.edit.description Description @@ -5790,7 +5790,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:78 Part-DB1\src\Form\Part\PartLotType.php:78 - + part_lot.edit.location Storage location @@ -5800,7 +5800,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:89 Part-DB1\src\Form\Part\PartLotType.php:89 - + part_lot.edit.amount Amount @@ -5810,7 +5810,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:98 Part-DB1\src\Form\Part\PartLotType.php:97 - + part_lot.edit.instock_unknown Amount unknown @@ -5820,7 +5820,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:109 Part-DB1\src\Form\Part\PartLotType.php:108 - + part_lot.edit.needs_refill Needs refill @@ -5830,7 +5830,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:120 Part-DB1\src\Form\Part\PartLotType.php:119 - + part_lot.edit.expiration_date Expiration date @@ -5840,7 +5840,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:128 Part-DB1\src\Form\Part\PartLotType.php:125 - + part_lot.edit.comment Notes @@ -5850,7 +5850,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Permissions\PermissionsType.php:99 Part-DB1\src\Form\Permissions\PermissionsType.php:99 - + perm.group.other Miscellaneous @@ -5860,7 +5860,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:97 Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - + tfa_google.enable Enable authenticator app @@ -5870,7 +5870,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:101 Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - + tfa_google.disable Deactivate authenticator app @@ -5880,7 +5880,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:74 Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - + google_confirmation Confirmation code @@ -5891,7 +5891,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:108 src\Form\UserSettingsType.php:46 - + user.timezone.label Timezone @@ -5901,7 +5901,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:133 Part-DB1\src\Form\UserSettingsType.php:132 - + user.currency.label Preferred currency @@ -5912,7 +5912,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:139 src\Form\UserSettingsType.php:53 - + save Apply changes @@ -5923,7 +5923,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:140 src\Form\UserSettingsType.php:54 - + reset Discard changes @@ -5934,7 +5934,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:104 src\Form\UserSettingsType.php:45 - + user_settings.language.placeholder Serverwide language @@ -5945,7 +5945,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:115 src\Form\UserSettingsType.php:48 - + user_settings.timezone.placeholder Serverwide Timezone @@ -5955,7 +5955,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:79 Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - + attachment.label Attachment @@ -5965,7 +5965,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:81 Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - + attachment_type.label Attachment type @@ -5975,7 +5975,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:82 Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - + project.label Project @@ -5985,7 +5985,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:85 Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - + measurement_unit.label Measurement unit @@ -5995,7 +5995,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:90 Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - + currency.label Currency @@ -6005,7 +6005,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:91 Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - + orderdetail.label Order detail @@ -6015,7 +6015,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:92 Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - + pricedetail.label Price detail @@ -6025,7 +6025,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:94 Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - + user.label User @@ -6034,7 +6034,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - + parameter.label Parameter @@ -6043,7 +6043,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - + label_profile.label Label profile @@ -6054,7 +6054,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new - + log.element_deleted.old_name.unknown Unknown @@ -6064,7 +6064,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\MarkdownParser.php:73 Part-DB1\src\Services\MarkdownParser.php:73 - + markdown.loading Loading markdown. If this message does not disappear, try to reload the page. @@ -6074,7 +6074,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\PasswordResetManager.php:98 Part-DB1\src\Services\PasswordResetManager.php:98 - + pw_reset.email.subject Password reset for your Part-DB account @@ -6083,7 +6083,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - + tree.tools.tools Tools @@ -6094,7 +6094,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 src\Services\ToolsTreeBuilder.php:74 - + tree.tools.edit Edit @@ -6105,7 +6105,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 src\Services\ToolsTreeBuilder.php:81 - + tree.tools.show Show @@ -6115,7 +6115,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - + tree.tools.system System @@ -6124,7 +6124,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - + tree.tools.tools.label_dialog Label generator @@ -6133,7 +6133,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - + tree.tools.tools.label_scanner Scanner @@ -6144,7 +6144,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 src\Services\ToolsTreeBuilder.php:62 - + tree.tools.edit.attachment_types Attachment types @@ -6155,7 +6155,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 src\Services\ToolsTreeBuilder.php:64 - + tree.tools.edit.categories Categories @@ -6166,7 +6166,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 src\Services\ToolsTreeBuilder.php:66 - + tree.tools.edit.projects Projects @@ -6177,7 +6177,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 src\Services\ToolsTreeBuilder.php:68 - + tree.tools.edit.suppliers Suppliers @@ -6188,7 +6188,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 src\Services\ToolsTreeBuilder.php:70 - + tree.tools.edit.manufacturer Manufacturers @@ -6198,7 +6198,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - + tree.tools.edit.storelocation Storage locations @@ -6208,7 +6208,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - + tree.tools.edit.footprint Footprints @@ -6218,7 +6218,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - + tree.tools.edit.currency Currencies @@ -6228,7 +6228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - + tree.tools.edit.measurement_unit Measurement Unit @@ -6237,7 +6237,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - + tree.tools.edit.label_profile Label profiles @@ -6247,7 +6247,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - + tree.tools.edit.part New part @@ -6258,7 +6258,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 src\Services\ToolsTreeBuilder.php:77 - + tree.tools.show.all_parts Show all parts @@ -6268,7 +6268,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - + tree.tools.show.all_attachments Attachments @@ -6279,7 +6279,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new - + tree.tools.show.statistics Statistics @@ -6289,7 +6289,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - + tree.tools.system.users Users @@ -6299,7 +6299,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - + tree.tools.system.groups Groups @@ -6310,7 +6310,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new - + tree.tools.system.event_log Event log @@ -6321,7 +6321,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 src\Services\TreeBuilder.php:124 - + entity.tree.new New Element @@ -6331,7 +6331,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 obsolete - + attachment.external_file External file @@ -6341,7 +6341,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete - + attachment.edit Edit @@ -6352,7 +6352,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:88 obsolete - + barcode.scan Scan Barcode @@ -6363,7 +6363,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Form\UserSettingsType.php:49 obsolete - + user.theme.label Theme @@ -6374,7 +6374,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Form\UserSettingsType.php:50 obsolete - + user_settings.theme.placeholder Serverwide Theme @@ -6385,7 +6385,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.user_login.ip IP @@ -6399,7 +6399,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.undo_mode.undo Change undone @@ -6413,7 +6413,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.undo_mode.revert Element reverted @@ -6424,7 +6424,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_created.original_instock Old instock @@ -6435,7 +6435,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_deleted.old_name Old name @@ -6446,7 +6446,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_edited.changed_fields Changed fields @@ -6457,7 +6457,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.instock_changed.comment Comment @@ -6468,7 +6468,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.collection_deleted.deleted Deleted element: @@ -6479,7 +6479,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + go.exclamation Go! @@ -6490,7 +6490,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + language.english English @@ -6501,7 +6501,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + language.german German @@ -6511,7 +6511,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.password_change_needed Password change needed! @@ -6521,7 +6521,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.table.type Attachment type @@ -6531,7 +6531,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.table.element Associated element @@ -6541,7 +6541,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.isPicture Picture? @@ -6551,7 +6551,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.is3DModel 3D model? @@ -6561,7 +6561,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.isBuiltin Builtin? @@ -6571,7 +6571,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_comment.placeholder e.g. useful for switching @@ -6581,7 +6581,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + tfa_backup.regenerate_codes Generate new backup codes @@ -6591,7 +6591,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noneofitschild.self A element can not be its own parent. @@ -6601,7 +6601,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noneofitschild.children The parent can not be one of the children of itself. @@ -6611,7 +6611,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.location_full.no_increasment The storage location was marked as full, so you can not increase the instock amount. (New amount max. {{ old_amount }}) @@ -6621,7 +6621,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.location_full The storage location was marked as full, so you can not add a new part to it. @@ -6631,7 +6631,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.only_existing The storage location was marked as "only existing", so you can not add new part to it. @@ -6641,7 +6641,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.single_part The storage location was marked as "single part", so you can not add a new part to it. @@ -6651,7 +6651,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.active.help The part is currently and in the foreseeable future in production @@ -6661,7 +6661,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.announced.help The part was announced but is not available yet. @@ -6671,7 +6671,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.discontinued.help The part is discontinued and not produced anymore. @@ -6681,7 +6681,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.eol.help The product has reached its end-of-life and the production will be stopped soon. @@ -6691,7 +6691,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.nrfnd.help The part is currently in production but is not recommended for new designs. @@ -6701,7 +6701,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.unknown.help The manufacturing status of the part is not known. @@ -6711,7 +6711,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.success Success @@ -6721,7 +6721,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.error Error @@ -6731,7 +6731,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.warning Warning @@ -6741,7 +6741,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.notice Notice @@ -6751,7 +6751,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.info Info @@ -6761,7 +6761,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noLockout You can not withdraw yourself the "change permission" permission, to prevent that you lockout yourself accidentally. @@ -6771,7 +6771,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter Allowed file extensions @@ -6781,7 +6781,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter.help You can specify a comma separated list of file extension or mime types, which an uploaded file must have when assigned to this attachment type. To allow all supported image files, you can use image/*. @@ -6791,7 +6791,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter.placeholder e.g. .txt, application/pdf, image/* @@ -6802,7 +6802,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + part.name.placeholder e.g. BC547 @@ -6812,7 +6812,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.not_selectable Not selectable @@ -6822,7 +6822,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.not_selectable.help If this option is activated, this element can not be assigned to a part property. Useful if this element is just used for grouping. @@ -6832,7 +6832,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + bbcode.hint You can use BBCode here (e.g. [b]Bold[/b]) @@ -6842,7 +6842,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.create Create element @@ -6852,7 +6852,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.save Save @@ -6862,7 +6862,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_footprints Disable footprints @@ -6872,7 +6872,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_footprints.help If this option is activated, the footprint property is disabled for all parts with this category. @@ -6882,7 +6882,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_manufacturers Disable manufacturers @@ -6892,7 +6892,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_manufacturers.help If this option is activated, the manufacturer property is disabled for all parts with this category. @@ -6902,7 +6902,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_autodatasheets Disable automatic datasheet links @@ -6912,7 +6912,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_autodatasheets.help If this option is activated, no automatic links to datasheets are created for parts with this category. @@ -6922,7 +6922,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_properties Disable properties @@ -6932,7 +6932,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_properties.help If this option is activated, the part properties are disabled for parts with this category. @@ -6942,7 +6942,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_hint Part name hint @@ -6952,7 +6952,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_hint.placeholder e.g. 100nF @@ -6962,7 +6962,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_regex Name filter @@ -6972,7 +6972,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_description Default description @@ -6982,7 +6982,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_description.placeholder e.g. Capacitor, 10mm x 10mm, SMD @@ -6992,7 +6992,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_comment Default notes @@ -7002,7 +7002,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + company.edit.address Address @@ -7012,7 +7012,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + company.edit.address.placeholder e.g. Examplestreet 314 Exampletown @@ -7023,7 +7023,7 @@ Exampletown obsolete obsolete - + company.edit.phone_number Phone number @@ -7033,7 +7033,7 @@ Exampletown obsolete obsolete - + company.edit.phone_number.placeholder +49 12345 6789 @@ -7043,7 +7043,7 @@ Exampletown obsolete obsolete - + company.edit.fax_number Fax number @@ -7053,7 +7053,7 @@ Exampletown obsolete obsolete - + company.edit.email Email @@ -7063,7 +7063,7 @@ Exampletown obsolete obsolete - + company.edit.email.placeholder e.g. contact@foo.bar @@ -7073,7 +7073,7 @@ Exampletown obsolete obsolete - + company.edit.website Website @@ -7083,7 +7083,7 @@ Exampletown obsolete obsolete - + company.edit.website.placeholder https://www.foo.bar @@ -7093,7 +7093,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url Product URL @@ -7103,7 +7103,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url.help This field is used to determine a link to the part on the company page. %PARTNUMBER% will be replaced with the order number. @@ -7113,7 +7113,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url.placeholder https://foo.bar/product/%PARTNUMBER% @@ -7123,7 +7123,7 @@ Exampletown obsolete obsolete - + currency.edit.iso_code ISO code @@ -7133,7 +7133,7 @@ Exampletown obsolete obsolete - + currency.edit.exchange_rate Exchange rate @@ -7143,7 +7143,7 @@ Exampletown obsolete obsolete - + footprint.edit.3d_model 3D model @@ -7153,7 +7153,7 @@ Exampletown obsolete obsolete - + mass_creation.lines Input @@ -7163,7 +7163,7 @@ Exampletown obsolete obsolete - + mass_creation.lines.placeholder Element 1 Element 1.1 @@ -7178,7 +7178,7 @@ Element 3 obsolete obsolete - + entity.mass_creation.btn Create @@ -7188,7 +7188,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer Is integer @@ -7198,7 +7198,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer.help If this option is activated, all values with this unit will be rounded to whole numbers. @@ -7208,7 +7208,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix Use SI prefix @@ -7218,7 +7218,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix.help If this option is activated, values are outputted with SI prefixes (e.g. 1,2kg instead of 1200g) @@ -7228,7 +7228,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol Unit symbol @@ -7238,7 +7238,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol.placeholder e.g. m @@ -7248,7 +7248,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.label Storelocation full @@ -7258,7 +7258,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.help If this option is selected, it is neither possible to add new parts to this storelocation or to increase the amount of existing parts. @@ -7268,7 +7268,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.label Limit to existing parts @@ -7278,7 +7278,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.help If this option is activated, it is not possible to add new parts to this storelocation, but the amount of existing parts can be increased. @@ -7288,7 +7288,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.label Only single part @@ -7298,7 +7298,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.help If this option is activated, only a single part (with every amount) can be assigned to this storage location. Useful for small SMD boxes or feeders. @@ -7308,7 +7308,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.label Storage type @@ -7318,7 +7318,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.help You can select a measurement unit here, which a part must have to be able to be assigned to this storage location @@ -7328,7 +7328,7 @@ Element 3 obsolete obsolete - + supplier.edit.default_currency Default currency @@ -7338,7 +7338,7 @@ Element 3 obsolete obsolete - + supplier.shipping_costs.label Shipping Costs @@ -7348,7 +7348,7 @@ Element 3 obsolete obsolete - + user.username.placeholder e.g. j.doe @@ -7358,7 +7358,7 @@ Element 3 obsolete obsolete - + user.firstName.placeholder e.g John @@ -7368,7 +7368,7 @@ Element 3 obsolete obsolete - + user.lastName.placeholder e.g. Doe @@ -7378,7 +7378,7 @@ Element 3 obsolete obsolete - + user.email.placeholder j.doe@ecorp.com @@ -7388,7 +7388,7 @@ Element 3 obsolete obsolete - + user.department.placeholder e.g. Development @@ -7398,7 +7398,7 @@ Element 3 obsolete obsolete - + user.settings.pw_new.label New password @@ -7408,7 +7408,7 @@ Element 3 obsolete obsolete - + user.settings.pw_confirm.label Confirm new password @@ -7418,7 +7418,7 @@ Element 3 obsolete obsolete - + user.edit.needs_pw_change User needs to change password @@ -7428,7 +7428,7 @@ Element 3 obsolete obsolete - + user.edit.user_disabled User disabled (no login possible) @@ -7438,7 +7438,7 @@ Element 3 obsolete obsolete - + user.create Create user @@ -7448,7 +7448,7 @@ Element 3 obsolete obsolete - + user.edit.save Save @@ -7458,7 +7458,7 @@ Element 3 obsolete obsolete - + entity.edit.reset Discard changes @@ -7469,7 +7469,7 @@ Element 3 obsolete obsolete - + part.withdraw.btn Withdraw @@ -7480,7 +7480,7 @@ Element 3 obsolete obsolete - + part.withdraw.comment: Comment/Purpose @@ -7491,7 +7491,7 @@ Element 3 obsolete obsolete - + part.add.caption Add parts @@ -7502,7 +7502,7 @@ Element 3 obsolete obsolete - + part.add.btn Add @@ -7513,7 +7513,7 @@ Element 3 obsolete obsolete - + part.add.comment Comment/Purpose @@ -7524,7 +7524,7 @@ Element 3 obsolete obsolete - + admin.comment Notes @@ -7535,7 +7535,7 @@ Element 3 obsolete obsolete - + manufacturer_url.label Manufacturer link @@ -7546,7 +7546,7 @@ Element 3 obsolete obsolete - + part.description.placeholder e.g. NPN 45V 0,1A 0,5W @@ -7557,7 +7557,7 @@ Element 3 obsolete obsolete - + part.instock.placeholder e.g. 10 @@ -7568,7 +7568,7 @@ Element 3 obsolete obsolete - + part.mininstock.placeholder e.g. 5 @@ -7578,7 +7578,7 @@ Element 3 obsolete obsolete - + part.order.price_per Price per @@ -7588,7 +7588,7 @@ Element 3 obsolete obsolete - + part.withdraw.caption Withdraw parts @@ -7598,7 +7598,7 @@ Element 3 obsolete obsolete - + datatable.datatable.lengthMenu _MENU_ @@ -7608,7 +7608,7 @@ Element 3 obsolete obsolete - + perm.group.parts Parts @@ -7618,7 +7618,7 @@ Element 3 obsolete obsolete - + perm.group.structures Data structures @@ -7628,7 +7628,7 @@ Element 3 obsolete obsolete - + perm.group.system System @@ -7638,7 +7638,7 @@ Element 3 obsolete obsolete - + perm.parts Parts @@ -7648,7 +7648,7 @@ Element 3 obsolete obsolete - + perm.read View @@ -7658,7 +7658,7 @@ Element 3 obsolete obsolete - + perm.edit Edit @@ -7668,7 +7668,7 @@ Element 3 obsolete obsolete - + perm.create Create @@ -7678,7 +7678,7 @@ Element 3 obsolete obsolete - + perm.part.move Change category @@ -7688,7 +7688,7 @@ Element 3 obsolete obsolete - + perm.delete Delete @@ -7698,7 +7698,7 @@ Element 3 obsolete obsolete - + perm.part.search Search @@ -7708,7 +7708,7 @@ Element 3 obsolete obsolete - + perm.part.all_parts List all parts @@ -7718,7 +7718,7 @@ Element 3 obsolete obsolete - + perm.part.no_price_parts List parts without price info @@ -7728,7 +7728,7 @@ Element 3 obsolete obsolete - + perm.part.obsolete_parts List obsolete parts @@ -7738,7 +7738,7 @@ Element 3 obsolete obsolete - + perm.part.unknown_instock_parts Show parts with unknown instock @@ -7748,7 +7748,7 @@ Element 3 obsolete obsolete - + perm.part.change_favorite Change favorite status @@ -7758,7 +7758,7 @@ Element 3 obsolete obsolete - + perm.part.show_favorite List favorite parts @@ -7768,7 +7768,7 @@ Element 3 obsolete obsolete - + perm.part.show_last_edit_parts Show last edited/added parts @@ -7778,7 +7778,7 @@ Element 3 obsolete obsolete - + perm.part.show_users Show last modifying user @@ -7788,7 +7788,7 @@ Element 3 obsolete obsolete - + perm.part.show_history Show history @@ -7798,7 +7798,7 @@ Element 3 obsolete obsolete - + perm.part.name Name @@ -7808,7 +7808,7 @@ Element 3 obsolete obsolete - + perm.part.description Description @@ -7818,7 +7818,7 @@ Element 3 obsolete obsolete - + perm.part.instock Instock @@ -7828,7 +7828,7 @@ Element 3 obsolete obsolete - + perm.part.mininstock Minimum instock @@ -7838,7 +7838,7 @@ Element 3 obsolete obsolete - + perm.part.comment Notes @@ -7848,7 +7848,7 @@ Element 3 obsolete obsolete - + perm.part.storelocation Storage location @@ -7858,7 +7858,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturer Manufacturer @@ -7868,7 +7868,7 @@ Element 3 obsolete obsolete - + perm.part.orderdetails Order information @@ -7878,7 +7878,7 @@ Element 3 obsolete obsolete - + perm.part.prices Prices @@ -7888,7 +7888,7 @@ Element 3 obsolete obsolete - + perm.part.attachments File attachments @@ -7898,7 +7898,7 @@ Element 3 obsolete obsolete - + perm.part.order Orders @@ -7908,7 +7908,7 @@ Element 3 obsolete obsolete - + perm.storelocations Storage locations @@ -7918,7 +7918,7 @@ Element 3 obsolete obsolete - + perm.move Move @@ -7928,7 +7928,7 @@ Element 3 obsolete obsolete - + perm.list_parts List parts @@ -7938,7 +7938,7 @@ Element 3 obsolete obsolete - + perm.part.footprints Footprints @@ -7948,7 +7948,7 @@ Element 3 obsolete obsolete - + perm.part.categories Categories @@ -7958,7 +7958,7 @@ Element 3 obsolete obsolete - + perm.part.supplier Suppliers @@ -7968,7 +7968,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturers Manufacturers @@ -7978,7 +7978,7 @@ Element 3 obsolete obsolete - + perm.projects Projects @@ -7988,7 +7988,7 @@ Element 3 obsolete obsolete - + perm.part.attachment_types Attachment types @@ -7998,7 +7998,7 @@ Element 3 obsolete obsolete - + perm.tools.import Import @@ -8008,7 +8008,7 @@ Element 3 obsolete obsolete - + perm.tools.labels Labels @@ -8018,7 +8018,7 @@ Element 3 obsolete obsolete - + perm.tools.calculator Resistor calculator @@ -8028,7 +8028,7 @@ Element 3 obsolete obsolete - + perm.tools.footprints Footprints @@ -8038,7 +8038,7 @@ Element 3 obsolete obsolete - + perm.tools.ic_logos IC logos @@ -8048,7 +8048,7 @@ Element 3 obsolete obsolete - + perm.tools.statistics Statistics @@ -8058,7 +8058,7 @@ Element 3 obsolete obsolete - + perm.edit_permissions Edit permissions @@ -8068,7 +8068,7 @@ Element 3 obsolete obsolete - + perm.users.edit_user_name Edit user name @@ -8078,7 +8078,7 @@ Element 3 obsolete obsolete - + perm.users.edit_change_group Change group @@ -8088,7 +8088,7 @@ Element 3 obsolete obsolete - + perm.users.edit_infos Edit info @@ -8098,7 +8098,7 @@ Element 3 obsolete obsolete - + perm.users.edit_permissions Edit permissions @@ -8108,7 +8108,7 @@ Element 3 obsolete obsolete - + perm.users.set_password Set password @@ -8118,7 +8118,7 @@ Element 3 obsolete obsolete - + perm.users.change_user_settings Change user settings @@ -8128,7 +8128,7 @@ Element 3 obsolete obsolete - + perm.database.see_status Show status @@ -8138,7 +8138,7 @@ Element 3 obsolete obsolete - + perm.database.update_db Update DB @@ -8148,7 +8148,7 @@ Element 3 obsolete obsolete - + perm.database.read_db_settings Read DB settings @@ -8158,7 +8158,7 @@ Element 3 obsolete obsolete - + perm.database.write_db_settings Write DB settings @@ -8168,7 +8168,7 @@ Element 3 obsolete obsolete - + perm.config.read_config Read config @@ -8178,7 +8178,7 @@ Element 3 obsolete obsolete - + perm.config.edit_config Edit config @@ -8188,7 +8188,7 @@ Element 3 obsolete obsolete - + perm.config.server_info Server info @@ -8198,7 +8198,7 @@ Element 3 obsolete obsolete - + perm.config.use_debug Use debug tools @@ -8208,7 +8208,7 @@ Element 3 obsolete obsolete - + perm.show_logs Show logs @@ -8218,7 +8218,7 @@ Element 3 obsolete obsolete - + perm.delete_logs Delete logs @@ -8228,7 +8228,7 @@ Element 3 obsolete obsolete - + perm.self.edit_infos Edit info @@ -8238,7 +8238,7 @@ Element 3 obsolete obsolete - + perm.self.edit_username Edit username @@ -8248,7 +8248,7 @@ Element 3 obsolete obsolete - + perm.self.show_permissions View permissions @@ -8258,7 +8258,7 @@ Element 3 obsolete obsolete - + perm.self.show_logs Show own log entries @@ -8268,7 +8268,7 @@ Element 3 obsolete obsolete - + perm.self.create_labels Create labels @@ -8278,7 +8278,7 @@ Element 3 obsolete obsolete - + perm.self.edit_options Edit options @@ -8288,7 +8288,7 @@ Element 3 obsolete obsolete - + perm.self.delete_profiles Delete profiles @@ -8298,7 +8298,7 @@ Element 3 obsolete obsolete - + perm.self.edit_profiles Edit profiles @@ -8308,7 +8308,7 @@ Element 3 obsolete obsolete - + perm.part.tools Tools @@ -8318,7 +8318,7 @@ Element 3 obsolete obsolete - + perm.groups Groups @@ -8328,7 +8328,7 @@ Element 3 obsolete obsolete - + perm.users Users @@ -8338,7 +8338,7 @@ Element 3 obsolete obsolete - + perm.database Database @@ -8348,7 +8348,7 @@ Element 3 obsolete obsolete - + perm.config Configuration @@ -8358,7 +8358,7 @@ Element 3 obsolete obsolete - + perm.system System @@ -8368,7 +8368,7 @@ Element 3 obsolete obsolete - + perm.self Own user @@ -8378,7 +8378,7 @@ Element 3 obsolete obsolete - + perm.labels Labels @@ -8388,7 +8388,7 @@ Element 3 obsolete obsolete - + perm.part.category Category @@ -8398,7 +8398,7 @@ Element 3 obsolete obsolete - + perm.part.minamount Minimum amount @@ -8408,7 +8408,7 @@ Element 3 obsolete obsolete - + perm.part.footprint Footprint @@ -8418,7 +8418,7 @@ Element 3 obsolete obsolete - + perm.part.mpn MPN @@ -8428,7 +8428,7 @@ Element 3 obsolete obsolete - + perm.part.status Manufacturing status @@ -8438,7 +8438,7 @@ Element 3 obsolete obsolete - + perm.part.tags Tags @@ -8448,7 +8448,7 @@ Element 3 obsolete obsolete - + perm.part.unit Part unit @@ -8458,7 +8458,7 @@ Element 3 obsolete obsolete - + perm.part.mass Mass @@ -8468,7 +8468,7 @@ Element 3 obsolete obsolete - + perm.part.lots Part lots @@ -8478,7 +8478,7 @@ Element 3 obsolete obsolete - + perm.show_users Show last modifying user @@ -8488,7 +8488,7 @@ Element 3 obsolete obsolete - + perm.currencies Currencies @@ -8498,7 +8498,7 @@ Element 3 obsolete obsolete - + perm.measurement_units Measurement unit @@ -8508,7 +8508,7 @@ Element 3 obsolete obsolete - + user.settings.pw_old.label Old password @@ -8518,7 +8518,7 @@ Element 3 obsolete obsolete - + pw_reset.submit Reset password @@ -8528,7 +8528,7 @@ Element 3 obsolete obsolete - + u2f_two_factor Security key (U2F) @@ -8538,13 +8538,13 @@ Element 3 obsolete obsolete - + google Google - + tfa.provider.webauthn_two_factor_provider Security key @@ -8554,7 +8554,7 @@ Element 3 obsolete obsolete - + tfa.provider.google Authenticator app @@ -8564,7 +8564,7 @@ Element 3 obsolete obsolete - + Login successful Login successful @@ -8574,7 +8574,7 @@ Element 3 obsolete obsolete - + log.type.exception Unhandled exception (obsolete) @@ -8584,7 +8584,7 @@ Element 3 obsolete obsolete - + log.type.user_login User login @@ -8594,7 +8594,7 @@ Element 3 obsolete obsolete - + log.type.user_logout User logout @@ -8604,7 +8604,7 @@ Element 3 obsolete obsolete - + log.type.unknown Unknown @@ -8614,7 +8614,7 @@ Element 3 obsolete obsolete - + log.type.element_created Element created @@ -8624,7 +8624,7 @@ Element 3 obsolete obsolete - + log.type.element_edited Element edited @@ -8634,7 +8634,7 @@ Element 3 obsolete obsolete - + log.type.element_deleted Element deleted @@ -8644,7 +8644,7 @@ Element 3 obsolete obsolete - + log.type.database_updated Database updated @@ -8653,7 +8653,7 @@ Element 3 obsolete - + perm.revert_elements Revert element @@ -8662,7 +8662,7 @@ Element 3 obsolete - + perm.show_history Show history @@ -8671,7 +8671,7 @@ Element 3 obsolete - + perm.tools.lastActivity Show last activity @@ -8680,7 +8680,7 @@ Element 3 obsolete - + perm.tools.timeTravel Show old element versions (time travel) @@ -8689,7 +8689,7 @@ Element 3 obsolete - + tfa_u2f.key_added_successful Security key added successfully. @@ -8698,7 +8698,7 @@ Element 3 obsolete - + Username Username @@ -8707,7 +8707,7 @@ Element 3 obsolete - + log.type.security.google_disabled Authenticator App disabled @@ -8716,7 +8716,7 @@ Element 3 obsolete - + log.type.security.u2f_removed Security key removed @@ -8725,7 +8725,7 @@ Element 3 obsolete - + log.type.security.u2f_added Security key added @@ -8734,7 +8734,7 @@ Element 3 obsolete - + log.type.security.backup_keys_reset Backup keys regenerated @@ -8743,7 +8743,7 @@ Element 3 obsolete - + log.type.security.google_enabled Authenticator App enabled @@ -8752,7 +8752,7 @@ Element 3 obsolete - + log.type.security.password_changed Password changed @@ -8761,7 +8761,7 @@ Element 3 obsolete - + log.type.security.trusted_device_reset Trusted devices resetted @@ -8770,7 +8770,7 @@ Element 3 obsolete - + log.type.collection_element_deleted Element of Collection deleted @@ -8779,7 +8779,7 @@ Element 3 obsolete - + log.type.security.password_reset Password reset @@ -8788,7 +8788,7 @@ Element 3 obsolete - + log.type.security.2fa_admin_reset Two Factor Reset by Administrator @@ -8797,7 +8797,7 @@ Element 3 obsolete - + log.type.user_not_allowed Unauthorized access attempt @@ -8806,7 +8806,7 @@ Element 3 obsolete - + log.database_updated.success Success @@ -8815,7 +8815,7 @@ Element 3 obsolete - + label_options.barcode_type.2D 2D @@ -8824,7 +8824,7 @@ Element 3 obsolete - + label_options.barcode_type.1D 1D @@ -8833,7 +8833,7 @@ Element 3 obsolete - + perm.part.parameters Parameters @@ -8842,7 +8842,7 @@ Element 3 obsolete - + perm.attachment_show_private View private attachments @@ -8851,7 +8851,7 @@ Element 3 obsolete - + perm.tools.label_scanner Label scanner @@ -8860,7 +8860,7 @@ Element 3 obsolete - + perm.self.read_profiles Read profiles @@ -8869,7 +8869,7 @@ Element 3 obsolete - + perm.self.create_profiles Create profiles @@ -8878,2551 +8878,2551 @@ Element 3 obsolete - + perm.labels.use_twig Use twig mode - + label_profile.showInDropdown Show in quick select - + group.edit.enforce_2fa Enforce Two-factor authentication (2FA) - + group.edit.enforce_2fa.help If this option is enabled, every direct member of this group, has to configure at least one second-factor for authentication. Recommended for administrative groups with much permissions. - + selectpicker.empty Nothing selected - + selectpicker.nothing_selected Nothing selected - + entity.delete.must_not_contain_parts Element "%PATH%" still contains parts! You have to move the parts, to be able to delete this element. - + entity.delete.must_not_contain_attachments Attachment type still contains attachments. Change their type, to be able to delete this attachment type. - + entity.delete.must_not_contain_prices Currency still contains price details. You have to change their currency to be able to delete this element. - + entity.delete.must_not_contain_users Users still uses this group! Change their group, to be able to delete this group. - + part.table.edit Edit - + part.table.edit.title Edit part - + part_list.action.action.title Select action - + part_list.action.action.group.favorite Favorite status - + part_list.action.action.favorite Favorite - + part_list.action.action.unfavorite Unfavorite - + part_list.action.action.group.change_field Change field - + part_list.action.action.change_category Change category - + part_list.action.action.change_footprint Change footprint - + part_list.action.action.change_manufacturer Change manufacturer - + part_list.action.action.change_unit Change part unit - + part_list.action.action.delete Delete - + part_list.action.submit Submit - + part_list.action.part_count %count% parts selected! - + company.edit.quick.website Open website - + company.edit.quick.email Send email - + company.edit.quick.phone Call phone - + company.edit.quick.fax Send fax - + company.fax_number.placeholder e.g. +49 1234 567890 - + part.edit.save_and_clone Save and clone - + validator.file_ext_not_allowed File extension not allowed for this attachment type. - + tools.reel_calc.title SMD Reel calculator - + tools.reel_calc.inner_dia Inner diameter - + tools.reel_calc.outer_dia Outer diameter - + tools.reel_calc.tape_thick Tape thickness - + tools.reel_calc.part_distance Part distance - + tools.reel_calc.update Update - + tools.reel_calc.parts_per_meter Parts per meter - + tools.reel_calc.result_length Tape length - + tools.reel_calc.result_amount Approx. parts count - + tools.reel_calc.outer_greater_inner_error Error: Outer diameter must be greater than inner diameter! - + tools.reel_calc.missing_values.error Please fill in all values! - + tools.reel_calc.load_preset Load preset - + tools.reel_calc.explanation This calculator gives you an estimation, how many parts are remaining on an SMD reel. Measure the noted the dimensions on the reel (or use some of the presets) and click "Update" to get an result. - + perm.tools.reel_calculator SMD Reel calculator - + tree.tools.tools.reel_calculator SMD Reel calculator - + user.pw_change_needed.flash Your password needs to be changed! Please set a new password. - + tree.root_node.text Root node - + part_list.action.select_null Empty element - + part_list.action.delete-title Do you really want to delete these parts? - + part_list.action.delete-message These parts and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! - + part.table.actions.success Actions finished successfully. - + attachment.edit.delete.confirm Do you really want to delete this attachment? - + filter.text_constraint.value.operator.EQ Is - + filter.text_constraint.value.operator.NEQ Is not - + filter.text_constraint.value.operator.STARTS Starts with - + filter.text_constraint.value.operator.CONTAINS Contains - + filter.text_constraint.value.operator.ENDS Ends with - + filter.text_constraint.value.operator.LIKE LIKE pattern - + filter.text_constraint.value.operator.REGEX Regular expression - + filter.number_constraint.value.operator.BETWEEN Between - + filter.number_constraint.AND and - + filter.entity_constraint.operator.EQ Is (excluding children) - + filter.entity_constraint.operator.NEQ Is not (excluding children) - + filter.entity_constraint.operator.INCLUDING_CHILDREN Is (including children) - + filter.entity_constraint.operator.EXCLUDING_CHILDREN Is not (excluding children) - + part.filter.dbId Database ID - + filter.tags_constraint.operator.ANY Any of the tags - + filter.tags_constraint.operator.ALL All the tags - + filter.tags_constraint.operator.NONE None of the tags - + part.filter.lot_count Number of lots - + part.filter.attachments_count Number of attachments - + part.filter.orderdetails_count Number of orderdetails - + part.filter.lotExpirationDate Lot expiration date - + part.filter.lotNeedsRefill Any lot needs refill - + part.filter.lotUnknwonAmount Any lot has unknown amount - + part.filter.attachmentName Attachment name - + filter.choice_constraint.operator.ANY Any of - + filter.choice_constraint.operator.NONE None of - + part.filter.amount_sum Total amount - + filter.submit Update - + filter.discard Discard changes - + filter.clear_filters Clear all filters - + filter.title Filter - + filter.parameter_value_constraint.operator.= Typ. Value = - + filter.parameter_value_constraint.operator.!= Typ. Value != - + filter.parameter_value_constraint.operator.< - Typ. Value < + - + filter.parameter_value_constraint.operator.> - Typ. Value > + ]]> - + filter.parameter_value_constraint.operator.<= - Typ. Value <= + - + filter.parameter_value_constraint.operator.>= - Typ. Value >= + =]]> - + filter.parameter_value_constraint.operator.BETWEEN Typ. Value is between - + filter.parameter_value_constraint.operator.IN_RANGE In Value range - + filter.parameter_value_constraint.operator.NOT_IN_RANGE Not in Value range - + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE Greater than Value range - + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE Greater equal than Value range - + filter.parameter_value_constraint.operator.LESS_THAN_RANGE Less than Value range - + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE Less equal than Value range - + filter.parameter_value_constraint.operator.RANGE_IN_RANGE Range is completely in Value range - + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE Range intersects Value range - + filter.text_constraint.value No value set - + filter.number_constraint.value1 No value set - + filter.number_constraint.value2 Maximum value - + filter.datetime_constraint.value1 No datetime set - + filter.datetime_constraint.value2 Maximum datetime - + filter.constraint.add Add constraint - + part.filter.parameters_count Number of parameters - + part.filter.lotDescription Lot description - + parts_list.search.searching_for - Searching parts with keyword <b>%keyword%</b> + %keyword%]]> - + parts_list.search_options.caption Enabled search options - + attachment.table.element_type Associated element type - + log.level.debug Debug - + log.level.info Info - + log.level.notice Notice - + log.level.warning Warning - + log.level.error Error - + log.level.critical Critical - + log.level.alert Alert - + log.level.emergency Emergency - + log.type.security Security related event - + log.type.instock_changed [LEGACY] Instock changed - + log.target_id Target element ID - + entity.info.parts_count_recursive Number of parts with this element or its sub elements - + tools.server_infos.title Server info - + permission.preset.read_only Read-Only - + permission.preset.read_only.desc Only allow read operations on data - + permission.preset.all_inherit Inherit all - + permission.preset.all_inherit.desc Set all permissions to Inherit - + permission.preset.all_forbid Forbid all - + permission.preset.all_forbid.desc Set all permissions to Forbid - + permission.preset.all_allow Allow all - + permission.preset.all_allow.desc Set all permissions to allow - + perm.server_infos Server info - + permission.preset.editor Editor - + permission.preset.editor.desc Allow changing parts and data structures - + permission.preset.admin Admin - + permission.preset.admin.desc Allow administrative actions - + permission.preset.button Apply preset - + perm.attachments.show_private Show private attachments - + perm.attachments.list_attachments Show list of all attachments - + user.edit.permission_success Permission preset applied successfully. Check if the new permissions fit your needs. - + perm.group.data Data - + part_list.action.action.group.needs_review Needs Review - + part_list.action.action.set_needs_review Set Needs Review Status - + part_list.action.action.unset_needs_review Unset Needs Review Status - + part.edit.ipn Internal Part Number (IPN) - + part.ipn.not_defined Not defined - + part.table.ipn IPN - + currency.edit.update_rate Retrieve exchange rate - + currency.edit.exchange_rate_update.unsupported_currency The currency is unsupported by the exchange rate provider. Check your exchange rate provider configuration. - + currency.edit.exchange_rate_update.generic_error Unable to retrieve the exchange rate. Check your exchange rate provider configuration. - + currency.edit.exchange_rate_updated.success Retrieved the exchange rate successfully. - + project.bom.quantity BOM Qty. - + project.bom.mountnames Mount names - + project.bom.name Name - + project.bom.comment Notes - + project.bom.part Part - + project.bom.add_entry Add entry - + part_list.action.group.projects Projects - + part_list.action.projects.add_to_project Add parts to project - + project.bom.delete.confirm Do you really want to delete this BOM entry? - + project.add_parts_to_project Add parts to project BOM - + part.info.add_part_to_project Add this part to a project - + project_bom_entry.label BOM entry - + project.edit.status Project status - + project.status.draft Draft - + project.status.planning Planning - + project.status.in_production In production - + project.status.finished Finished - + project.status.archived Archived - + part.new_build_part.error.build_part_already_exists The project already has a build part! - + project.edit.associated_build_part Associated builds part - + project.edit.associated_build_part.add Add builds part - + project.edit.associated_build.hint This part represents the builds of this project, which are stored somewhere. - + part.info.projectBuildPart.hint This part represents the builds of the following project and is associated with it - + part.is_build_part Is project builds part - + project.info.title Project info - + project.info.bom_entries_count BOM entries - + project.info.sub_projects_count Subprojects - + project.info.bom_add_parts Add BOM entries - + project.info.info.label Info - + project.info.sub_projects.label Subprojects - + project.bom.price Price - + part.info.withdraw_modal.title.withdraw Withdraw parts from lot - + part.info.withdraw_modal.title.add Add parts to lot - + part.info.withdraw_modal.title.move Move parts from lot to another lot - + part.info.withdraw_modal.amount Amount - + part.info.withdraw_modal.move_to Move to - + part.info.withdraw_modal.comment Comment - + part.info.withdraw_modal.comment.hint You can set a comment here describing why you are doing this operation (e.g. for what you need the parts). This info will be saved in the log. - + modal.close Close - + modal.submit Submit - + part.withdraw.success Added/Moved/Withdrawn parts successfully. - + perm.parts_stock Parts Stock - + perm.parts_stock.withdraw Withdraw parts from stock - + perm.parts_stock.add Add parts to stock - + perm.parts_stock.move Move parts between lots - + user.permissions_schema_updated The permission schema of your user were upgraded to the latest version. - + log.type.part_stock_changed Part Stock changed - + log.part_stock_changed.withdraw Stock withdrawn - + log.part_stock_changed.add Stock added - + log.part_stock_changed.move Stock moved - + log.part_stock_changed.comment Comment - + log.part_stock_changed.change Change - + log.part_stock_changed.move_target Move target - + tools.builtin_footprints_viewer.title Builtin footprint image gallery - + tools.builtin_footprints_viewer.hint This gallery lists all available built-in footprint images. If you want to use them in an attachment, type in the name (or a keyword) in the path field of the attachment and select the image from the dropdown select. - + tools.ic_logos.title IC logos - + part_list.action.group.labels Labels - + part_list.action.projects.generate_label Generate labels (for parts) - + part_list.action.projects.generate_label_lot Generate labels (for part lots) - + part_list.action.generate_label.empty Empty label - + project.info.builds.label Build - + project.builds.build_not_possible Build not possible: Parts not stocked - + project.builds.following_bom_entries_miss_instock The following parts have not enough stock to build this project at least once: - + project.builds.stocked stocked - + project.builds.needed needed - + project.builds.build_possible Build possible - + project.builds.number_of_builds_possible - You have enough stocked to build <b>%max_builds%</b> builds of this project. + %max_builds% builds of this project.]]> - + project.builds.check_project_status - The current project status is <b>"%project_status%"</b>. You should check if you really want to build the project with this status! + "%project_status%". You should check if you really want to build the project with this status!]]> - + project.builds.following_bom_entries_miss_instock_n You do not have enough parts stocked to build this project %number_of_builds% times. The following parts have missing instock: - + project.build.flash.invalid_input Can not build project. Check input! - + project.build.required_qty Required quantity - + project.build.btn_build Build - + project.build.help Choose from which part lots the stock to build this project should be taken (and in which amount). Check the checkbox for each BOM Entry, when you are finished withdrawing the parts, or use the top checkbox to check all boxes at once. - + project.build.buildsPartLot.new_lot Create new lot - + project.build.add_builds_to_builds_part Add builds to project builds part - + project.build.builds_part_lot Target lot - + project.builds.number_of_builds Build amount - + project.builds.no_stocked_builds Number of stocked builds - + user.change_avatar.label Change profile picture - + user_settings.change_avatar.label Change profile picture - + user_settings.remove_avatar.label Remove profile picture - + part.edit.name.category_hint Hint from category - + category.edit.partname_regex.placeholder e.g "/Capacitor \d+ nF/i" - + category.edit.partname_regex.help A PCRE-compatible regular expression, which a part name have to match. - + entity.select.add_hint - Use -> to create nested structures, e.g. "Node 1->Node 1.1" + to create nested structures, e.g. "Node 1->Node 1.1"]]> - + entity.select.group.new_not_added_to_DB New (not added to DB yet) - + part.edit.save_and_new Save and create new empty part - + homepage.first_steps.title First steps - + homepage.first_steps.introduction - Your database is still empty. You might want to read the <a href="%url%">documentation</a> or start to creating the following data structures: + documentation or start to creating the following data structures:]]> - + homepage.first_steps.create_part - Or you can directly <a href="%url%">create a new part</a>. + create a new part.]]> - + homepage.first_steps.hide_hint This box will hide as soon as you have created your first part. - + homepage.forum.text - For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> + discussion forum]]> - + log.element_edited.changed_fields.category Category - + log.element_edited.changed_fields.footprint Footprint - + log.element_edited.changed_fields.manufacturer Manufacturer - + log.element_edited.changed_fields.value_typical typ. value - + log.element_edited.changed_fields.pw_reset_expires Password reset - + log.element_edited.changed_fields.comment Notes - + log.element_edited.changed_fields.supplierpartnr Supplier part number - + log.element_edited.changed_fields.supplier_product_url Link to offer - + log.element_edited.changed_fields.price Price - + log.element_edited.changed_fields.min_discount_quantity Minimum discount amount - + log.element_edited.changed_fields.original_filename Original filename - + log.element_edited.changed_fields.path Filepath - + log.element_edited.changed_fields.description Description - + log.element_edited.changed_fields.manufacturing_status Manufacturing status - + log.element_edited.changed_fields.options.barcode_type Barcode type - + log.element_edited.changed_fields.status Status - + log.element_edited.changed_fields.quantity BOM Qty. - + log.element_edited.changed_fields.mountnames Mountnames - + log.element_edited.changed_fields.name Name - + log.element_edited.changed_fields.part Part - + log.element_edited.changed_fields.price_currency Currency of price - + log.element_edited.changed_fields.partname_hint Part name hint - + log.element_edited.changed_fields.partname_regex Name filter - + log.element_edited.changed_fields.disable_footprints Disable footprints - + log.element_edited.changed_fields.disable_manufacturers Disable manufacturers - + log.element_edited.changed_fields.disable_autodatasheets Disable automatic datasheet links - + log.element_edited.changed_fields.disable_properties Disable properties - + log.element_edited.changed_fields.default_description Default description - + log.element_edited.changed_fields.default_comment Default notes - + log.element_edited.changed_fields.filetype_filter Allowed file extensions - + log.element_edited.changed_fields.not_selectable Not selected - + log.element_edited.changed_fields.parent Parent element - + log.element_edited.changed_fields.shipping_costs Shipping costs - + log.element_edited.changed_fields.default_currency Default currency - + log.element_edited.changed_fields.address Address - + log.element_edited.changed_fields.phone_number Phone number - + log.element_edited.changed_fields.fax_number Fax number - + log.element_edited.changed_fields.email_address Email - + log.element_edited.changed_fields.website Website - + log.element_edited.changed_fields.auto_product_url Product URL - + log.element_edited.changed_fields.is_full Storelocation full - + log.element_edited.changed_fields.limit_to_existing_parts Limit to existing parts - + log.element_edited.changed_fields.only_single_part Only single part - + log.element_edited.changed_fields.storage_type Storage type - + log.element_edited.changed_fields.footprint_3d 3D model - + log.element_edited.changed_fields.master_picture_attachment Preview image - + log.element_edited.changed_fields.exchange_rate Exchange rate - + log.element_edited.changed_fields.iso_code Exchange rate - + log.element_edited.changed_fields.unit Unit symbol - + log.element_edited.changed_fields.is_integer Is integer - + log.element_edited.changed_fields.use_si_prefix Use SI prefix - + log.element_edited.changed_fields.options.width Width - + log.element_edited.changed_fields.options.height Height - + log.element_edited.changed_fields.options.supported_element Target type - + log.element_edited.changed_fields.options.additional_css Additional styles (CSS) - + log.element_edited.changed_fields.options.lines Content - + log.element_edited.changed_fields.permissions.data Permissions - + log.element_edited.changed_fields.disabled Disabled - + log.element_edited.changed_fields.theme Theme - + log.element_edited.changed_fields.timezone Timezone - + log.element_edited.changed_fields.language Language - + log.element_edited.changed_fields.email Email - + log.element_edited.changed_fields.department Department - + log.element_edited.changed_fields.last_name Last name - + log.element_edited.changed_fields.first_name First name - + log.element_edited.changed_fields.group Group - + log.element_edited.changed_fields.currency Preferred currency - + log.element_edited.changed_fields.enforce2FA Enforce 2FA - + log.element_edited.changed_fields.symbol Symbol - + log.element_edited.changed_fields.value_min Min. value - + log.element_edited.changed_fields.value_max Max. value - + log.element_edited.changed_fields.value_text Text value - + log.element_edited.changed_fields.show_in_table Show in table - + log.element_edited.changed_fields.attachment_type Show in table - + log.element_edited.changed_fields.needs_review Needs review - + log.element_edited.changed_fields.tags Tags - + log.element_edited.changed_fields.mass Mass - + log.element_edited.changed_fields.ipn IPN - + log.element_edited.changed_fields.favorite Favorite - + log.element_edited.changed_fields.minamount Minimum stock - + log.element_edited.changed_fields.manufacturer_product_url Link to product page - + log.element_edited.changed_fields.manufacturer_product_number MPN - + log.element_edited.changed_fields.partUnit Measuring Unit - + log.element_edited.changed_fields.expiration_date Expiration date - + log.element_edited.changed_fields.amount Amount - + log.element_edited.changed_fields.storage_location Storage location - + attachment.max_file_size Maximum file size - + user.saml_user SSO / SAML user - + user.saml_user.pw_change_hint Your user uses single sign-on (SSO). You can not change the password and 2FA settings here. Configure them on your central SSO provider instead! - + login.sso_saml_login Single Sign-On Login (SSO) - + login.local_login_hint The form below is only for log in with a local user. If you want to log in via single sign-on, press the button above. - + part_list.action.action.export Export parts - + part_list.action.export_json Export to JSON - + part_list.action.export_csv Export to CSV - + part_list.action.export_yaml Export to YAML - + part_list.action.export_xml Export to XML - + parts.import.title Import parts - + parts.import.errors.title Import violations - + parts.import.flash.error Errors during import. This is most likely caused by some invalid data. - + parts.import.format.auto Automatic (based on file extension) - + parts.import.flash.error.unknown_format Could not determine the format from the given file! - + parts.import.flash.error.invalid_file File invalid. Please check that you have selected the right format! - + parts.import.part_category.label Category override - + parts.import.part_category.help If you select a value here, all imported parts will be assigned to this category. No matter what was set in the data. - + import.create_unknown_datastructures Create unknown datastructures - + import.create_unknown_datastructures.help If this is selected, datastructures (like categories, footprints, etc.) which does not exist in the database yet, will be automatically created. If this is not selected, only existing data structures will be used, and if no matching data structure is found, the part will get assigned nothing - + import.path_delimiter Path delimiter - + import.path_delimiter.help The delimiter used to mark different levels in data structure pathes like category, footprint, etc. - + parts.import.help_documentation - See the <a href="%link%">documentation</a> for more information on the file format. + documentation for more information on the file format.]]> - + parts.import.help You can import parts from existing files with this tool. The parts will be directly written to database, so please check your file beforehand for correct content before uploading it here. - + parts.import.flash.success Part import successful! - + parts.import.errors.imported_entities Imported parts - + perm.import Import data - + parts.import.part_needs_review.label Mark all imported parts as "Needs review" - + parts.import.part_needs_review.help If this option is selected, then all parts will be marked as "Needs review", no matter what was set in the data. - + project.bom_import.flash.success Imported %count% BOM entries successfully. - + project.bom_import.type Type - + project.bom_import.type.kicad_pcbnew KiCAD Pcbnew BOM (CSV file) - + project.bom_import.clear_existing_bom Clear existing BOM entries before importing - + project.bom_import.clear_existing_bom.help Selecting this option will remove all existing BOM entries in the project and overwrite them with the imported BOM file! - + project.bom_import.flash.invalid_file File could not be imported. Please check that you have selected the right file type. Error message: %message% - + project.bom_import.flash.invalid_entries Validation error! Please check your data! - + project.import_bom Import BOM for project - + project.edit.bom.import_bom Import BOM - + measurement_unit.new New Measurement Unit - + measurement_unit.edit Edit Measurement Unit - + user.aboutMe.label About Me - + storelocation.owner.label Owner - + storelocation.part_owner_must_match.label Part Lot owner must match storage location owner - + part_lot.owner Owner - + part_lot.owner.help Only the owner can withdraw or add stock to this lot. - + log.element_edited.changed_fields.owner Owner - + log.element_edited.changed_fields.instock_unknown Amount unknown - + log.element_edited.changed_fields.needs_refill Refill needed - + part.withdraw.access_denied Not allowed to do the desired action. Please check your permissions and the owner of the part lots. - + part.info.amount.less_than_desired Less than desired - + log.cli_user CLI user - + log.element_edited.changed_fields.part_owner_must_match Part owner must match storage location owner - + part.filter.lessThanDesired - In stock less than desired (total amount < min. amount) + - + part.filter.lotOwner Lot owner - + user.show_email_on_profile.label Show email on public profile page - + log.details.title Log details - + log.user_login.login_from_ip Login from IP address - + log.user_login.ip_anonymize_hint If the last digits of the IP address are missing, then the GPDR mode is enabled, in which IP addresses are anynomized. - + log.user_not_allowed.unauthorized_access_attempt_to Unauthorized access attempt to page - + log.user_not_allowed.hint The request was blocked. No action should be required. - + log.no_comment No comment - + log.element_changed.field Field - + log.element_changed.data_before Data before change - + error_table.error An error occured during your request. - + part.table.invalid_regex Invalid regular expression (regex) - + log.element_changed.data_after Data after change - + log.element_changed.diff Difference - + log.undo.undo.short Undo - + log.undo.revert.short Revert to this timestamp - + log.view_version View version - + log.undo.undelete.short Undelete - + log.element_edited.changed_fields.id ID - + log.element_edited.changed_fields.id_owner Owner - + log.element_edited.changed_fields.parent_id Parent - + log.details.delete_entry Delete log entry - + log.delete.message.title Do you really want to delete the log entry? - + log.delete.message If this is an element history entry, this breaks the element history! This can lead to unexpected results when using the time travel function. - + log.collection_deleted.on_collection on Collection - + log.element_edited.changed_fields.attachments Attachments - + tfa_u2f.add_key.registration_error An error occurred during the registration of the security key. Try again or use another security key! - + log.target_type.none None - + ui.darkmode.light Light - + ui.darkmode.dark Dark - + ui.darkmode.auto Auto (decide based on system settings) - + label_generator.no_lines_given No text content given! The labels will remain empty. - + user.password_strength.very_weak Very weak - + user.password_strength.weak Weak - + user.password_strength.medium Medium - + user.password_strength.strong Strong - + user.password_strength.very_strong Very strong - + perm.users.impersonate Impersonate other users - + user.impersonated_by.label Impersonated by - + user.stop_impersonation Stop impersonation - + user.impersonate.btn Impersonate - + user.impersonate.confirm.title Do you really want to impersonate this user? - + user.impersonate.confirm.message This will be logged. You should only do this with a good reason. @@ -11430,766 +11430,772 @@ Please note, that you can not impersonate a disabled user. If you try you will g - + log.type.security.user_impersonated User impersonated - + info_providers.providers_list.title Information providers - + info_providers.providers_list.active Active - + info_providers.providers_list.disabled Disabled - + info_providers.capabilities.basic Basic - + info_providers.capabilities.footprint Footprint - + info_providers.capabilities.picture Picture - + info_providers.capabilities.datasheet Datasheets - + info_providers.capabilities.price Prices - + part.info_provider_reference.badge The information provider used to create this part. - + part.info_provider_reference Created by Information provider - + oauth_client.connect.btn Connect OAuth - + info_providers.table.provider.label Provider - + info_providers.search.keyword Keyword - + info_providers.search.submit Search - + info_providers.search.providers.help Select the providers in which should be searched. - + info_providers.search.providers Providers - + info_providers.search.info_providers_list Show all available info providers - + info_providers.search.title Create parts from info provider - + oauth_client.flash.connection_successful Connected to OAuth application successfully! - + perm.part.info_providers Info providers - + perm.part.info_providers.create_parts Create parts from info provider - + entity.edit.alternative_names.label Alternative names - + entity.edit.alternative_names.help The alternative names given here, are used to find this element based on the results of the information providers. - + info_providers.form.help_prefix Provider - + update_manager.new_version_available.title New version available - + update_manager.new_version_available.text A new version of Part-DB is available. Check it out here - + update_manager.new_version_available.only_administrators_can_see Only administrators can see this message. - + perm.system.show_available_updates Show available Part-DB updates - + user.settings.api_tokens API tokens - + user.settings.api_tokens.description Using an API token, other applications can access Part-DB with your user rights, to perform various actions using the Part-DB REST API. If you delete an API token here, the application, which uses the token, will no longer be able to access Part-DB on your behalf. - + api_tokens.name Name - + api_tokens.access_level Access level - + api_tokens.expiration_date Expiration date - + api_tokens.added_date Added at - + api_tokens.last_time_used Last time used - + datetime.never Never - + api_token.valid Valid - + api_token.expired Expired - + user.settings.show_api_documentation Show API documentation - + api_token.create_new Create new API token - + api_token.level.read_only Read-Only - + api_token.level.edit Edit - + api_token.level.admin Admin - + api_token.level.full Full - + api_tokens.access_level.help You can restrict, what the API token can access. The access is always limited by the permissions of your user. - + api_tokens.expiration_date.help After this date, the token is not usable anymore. Leave empty if the token should never expire. - + api_tokens.your_token_is Your API token is - + api_tokens.please_save_it Please save it. You will not be able to see it again! - + api_tokens.create_new.back_to_user_settings Back to user settings - + project.build.dont_check_quantity Do not check quantities - + project.build.dont_check_quantity.help If this option is selected, the given withdraw quantities are used as given, no matter if more or less parts are actually required to build this project. - + part_list.action.invert_selection Invert selection - + perm.api API - + perm.api.access_api Access API - + perm.api.manage_tokens Manage API tokens - + user.settings.api_tokens.delete.title Do you really want to delete this API token? - + user.settings.api_tokens.delete Delete - + user.settings.api_tokens.delete.message The application, which uses this API token, will no longer have access to Part-DB. This action can not be undone! - + api_tokens.deleted API token deleted successfully! - + user.settings.api_tokens.no_api_tokens_yet No API tokens configured yet. - + api_token.ends_with Ends with - + entity.select.creating_new_entities_not_allowed You are not allowed to create new entities of this type! Please choose a pre-existing one. - + scan_dialog.mode Barcode type - + scan_dialog.mode.auto Auto detect - + scan_dialog.mode.ipn IPN barcode - + scan_dialog.mode.internal Part-DB barcode - + part_association.label Part association - + part.edit.tab.associations Associated parts - + part_association.edit.other_part Associated part - + part_association.edit.type Relation Type - + part_association.edit.comment Notes - + part_association.edit.type.help You can select here, how the chosen part is related to this part. - + part_association.table.from_this_part Associations from this part to others - + part_association.table.from From - + part_association.table.type Relation - + part_association.table.to To - + part_association.type.compatible Is compatible with - + part_association.table.to_this_part Associations to this part from others - + part_association.type.other Other (custom value) - + part_association.type.supersedes Supersedes - + part_association.edit.other_type Custom type - + part_association.edit.delete.confirm Do you really want to delete this association? This can not be undone. - + part_lot.edit.advanced Expand advanced options - + part_lot.edit.vendor_barcode Vendor barcode - + part_lot.edit.vendor_barcode.help If this lot already have a barcode (e.g. put there by the vendor), you can input its content here, to easily scan it. - + scan_dialog.mode.vendor Vendor barcode (configured in part lot) - + project.bom.instockAmount Stocked amount - + collection_type.new_element.tooltip This element was newly created and was not persisted to the database yet. - + part.merge.title Merge part - + part.merge.title.into into - + part.merge.confirm.title - Do you really want to merge <b>%other%</b> into <b>%target%</b>? + %other% into %target%?]]> - + part.merge.confirm.message - <b>%other%</b> will be deleted, and the part will be saved with the shown information. + %other% will be deleted, and the part will be saved with the shown information.]]> - + part.info.merge_modal.title Merge parts - + part.info.merge_modal.other_part Other part - + part.info.merge_modal.other_into_this Merge other part into this one (delete other part, keep this one) - + part.info.merge_modal.this_into_other Merge this part into other one (delete this part, keep other one) - + part.info.merge_btn Merge part - + part.update_part_from_info_provider.btn Update part from info providers - + info_providers.update_part.title Update existing part from info provider - + part.merge.flash.please_review Data not saved yet. Review the changes and click save to persist the new data. - + user.edit.flash.permissions_fixed Permissions required by other permissions were missing. This was corrected. Please check if the permissions are as you intended. - + permission.legend.dependency_note Please note that some permission operations depend on each other. If you encounter a warning that missing permissions were corrected and a permission was set to allow again, you have to set the dependent operation to forbid too. The dependents can normally found right of an operation. - + log.part_stock_changed.timestamp Timestamp - + part.info.withdraw_modal.timestamp Action timestamp - + part.info.withdraw_modal.timestamp.hint This field allows you to specify the real date, when the stock operation actually was performed, and not just when it was logged. This value is saved in the extra field of the log entry. - + part.info.withdraw_modal.delete_lot_if_empty Delete this lot, if it becomes empty - + info_providers.search.error.client_exception An error occurred while communicating with the information provider. Check the configuration for this provider and refresh the OAuth tokens if possible. - + eda_info.reference_prefix.placeholder e.g. R - + eda_info.reference_prefix Reference prefix - + eda_info.kicad_section.title KiCad specific settings - + eda_info.value Value - + eda_info.value.placeholder e.g. 100n - + eda_info.exclude_from_bom Exclude part from BOM - + eda_info.exclude_from_board Exclude part from PCB/Board - + eda_info.exclude_from_sim Exclude part from simulation - + eda_info.kicad_symbol KiCad schematic symbol - + eda_info.kicad_symbol.placeholder e.g. Transistor_BJT:BC547 - + eda_info.kicad_footprint KiCad footprint - + eda_info.kicad_footprint.placeholder e.g. Package_TO_SOT_THT:TO-92 - + part.edit.tab.eda EDA information - + api.api_endpoints.title API endpoints - + api.api_endpoints.partdb Part-DB API - + api.api_endpoints.kicad_root_url KiCad API root URL - + eda_info.visibility Force visibility - + eda_info.visibility.help By default, the visibility to the EDA software is automatically determined. With this checkbox, you can force the part to be visible or invisible. - + part.withdraw.zero_amount You tried to withdraw/add an amount of zero! No action was performed. + + + login.flash.access_denied_please_login + Access denied! Please log in to continue. + + From 08e7e3f2bfcd29ac979b5302691d771d5e01a924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 23:41:43 +0100 Subject: [PATCH 016/634] Fixed phpstan issue --- src/Security/AuthenticationEntryPoint.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Security/AuthenticationEntryPoint.php b/src/Security/AuthenticationEntryPoint.php index 3d6782ee..f99d2118 100644 --- a/src/Security/AuthenticationEntryPoint.php +++ b/src/Security/AuthenticationEntryPoint.php @@ -27,6 +27,7 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; @@ -60,7 +61,9 @@ class AuthenticationEntryPoint implements AuthenticationEntryPointInterface //Otherwise we redirect to the login page //Add a nice flash message to make it clear what happened - $request->getSession()->getFlashBag()->add('error', t('login.flash.access_denied_please_login')); + if ($request->getSession() instanceof Session) { + $request->getSession()->getFlashBag()->add('error', t('login.flash.access_denied_please_login')); + } return new RedirectResponse($this->urlGenerator->generate('login')); } From 6f24e7f077ef61fd3d64b9f73488d2a04a045ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 26 Jan 2024 00:12:37 +0100 Subject: [PATCH 017/634] Fixed phpunit tests caused by typo in Autowire attribute This caused the whole thing to behave very very weirdly --- src/EventSubscriber/RedirectToHttpsSubscriber.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EventSubscriber/RedirectToHttpsSubscriber.php b/src/EventSubscriber/RedirectToHttpsSubscriber.php index 400b50e5..7089109e 100644 --- a/src/EventSubscriber/RedirectToHttpsSubscriber.php +++ b/src/EventSubscriber/RedirectToHttpsSubscriber.php @@ -36,7 +36,7 @@ final class RedirectToHttpsSubscriber implements EventSubscriberInterface { public function __construct( - #[Autowire('env(bool:REDIRECT_TO_HTTPS)')] + #[Autowire('%env(bool:REDIRECT_TO_HTTPS)%')] private readonly bool $enabled, private readonly HttpUtils $httpUtils) { @@ -45,7 +45,7 @@ final class RedirectToHttpsSubscriber implements EventSubscriberInterface public static function getSubscribedEvents(): array { return [ - KernelEvents::REQUEST => ['onKernelRequest', 0], + KernelEvents::REQUEST => 'onKernelRequest', ]; } From 2861f4fdb8f50e478cbc58547f579f59411115b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 25 Jan 2024 23:42:09 +0100 Subject: [PATCH 018/634] New translations messages.en.xlf (English) --- translations/messages.en.xlf | 2860 +++++++++++++++++----------------- 1 file changed, 1430 insertions(+), 1430 deletions(-) diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 204c91f5..f6d876a3 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -7,7 +7,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:4 templates\AdminPages\AttachmentTypeAdmin.html.twig:4 - + attachment_type.caption File types for attachments @@ -17,7 +17,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:12 new - + attachment_type.edit Edit file type @@ -27,7 +27,7 @@ Part-DB1\templates\AdminPages\AttachmentTypeAdmin.html.twig:16 new - + attachment_type.new New file type @@ -46,7 +46,7 @@ templates\base.html.twig:197 templates\base.html.twig:225 - + category.labelp Categories @@ -59,7 +59,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:11 templates\AdminPages\CategoryAdmin.html.twig:8 - + admin.options Options @@ -72,7 +72,7 @@ Part-DB1\templates\AdminPages\CompanyAdminBase.html.twig:15 templates\AdminPages\CategoryAdmin.html.twig:9 - + admin.advanced Advanced @@ -82,7 +82,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:13 new - + category.edit Edit category @@ -92,7 +92,7 @@ Part-DB1\templates\AdminPages\CategoryAdmin.html.twig:17 new - + category.new New category @@ -102,7 +102,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:4 - + currency.caption Currency @@ -112,7 +112,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:12 - + currency.iso_code.caption ISO code @@ -122,7 +122,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:15 - + currency.symbol.caption Currency symbol @@ -132,7 +132,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:29 new - + currency.edit Edit currency @@ -142,7 +142,7 @@ Part-DB1\templates\AdminPages\CurrencyAdmin.html.twig:33 new - + currency.new New currency @@ -153,7 +153,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:4 templates\AdminPages\DeviceAdmin.html.twig:4 - + project.caption Project @@ -163,7 +163,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:8 new - + project.edit Edit project @@ -173,7 +173,7 @@ Part-DB1\templates\AdminPages\DeviceAdmin.html.twig:12 new - + project.new New project @@ -196,7 +196,7 @@ templates\base.html.twig:206 templates\base.html.twig:237 - + search.placeholder Search @@ -212,7 +212,7 @@ templates\base.html.twig:193 templates\base.html.twig:221 - + expandAll Expand All @@ -228,7 +228,7 @@ templates\base.html.twig:194 templates\base.html.twig:222 - + reduceAll Reduce All @@ -240,9 +240,9 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:54 Part-DB1\templates\Parts\info\_sidebar.html.twig:4 - + part.info.timetravel_hint - Please note that this feature is experimental, so the info may not be correct.]]> + This is how the part appeared before %timestamp%. <i>Please note that this feature is experimental, so the info may not be correct.</i>
@@ -251,7 +251,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:60 templates\AdminPages\EntityAdminBase.html.twig:42 - + standard.label Properties @@ -262,7 +262,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:61 templates\AdminPages\EntityAdminBase.html.twig:43 - + infos.label Info @@ -273,7 +273,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:63 new - + history.label History @@ -284,7 +284,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:66 templates\AdminPages\EntityAdminBase.html.twig:45 - + export.label Export @@ -295,7 +295,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:68 templates\AdminPages\EntityAdminBase.html.twig:47 - + import_export.label Import / Export @@ -305,7 +305,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:69 - + mass_creation.label Mass creation @@ -316,7 +316,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:82 templates\AdminPages\EntityAdminBase.html.twig:59 - + admin.common Common @@ -326,7 +326,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:86 - + admin.attachments Attachments @@ -335,7 +335,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:90 - + admin.parameters Parameters @@ -346,7 +346,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:167 templates\AdminPages\EntityAdminBase.html.twig:142 - + export_all.label Export all elements @@ -356,7 +356,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:185 Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:173 - + mass_creation.help Each line will be interpreted as a name of an element, which will be created. You can create nested structures by indentations. @@ -367,7 +367,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:45 templates\AdminPages\EntityAdminBase.html.twig:35 - + edit.caption Edit element "%name" @@ -378,7 +378,7 @@ Part-DB1\templates\AdminPages\EntityAdminBase.html.twig:50 templates\AdminPages\EntityAdminBase.html.twig:37 - + new.caption New element @@ -393,7 +393,7 @@ templates\base.html.twig:199 templates\base.html.twig:227 - + footprint.labelp Footprints @@ -403,7 +403,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:13 new - + footprint.edit Edit footprint @@ -413,7 +413,7 @@ Part-DB1\templates\AdminPages\FootprintAdmin.html.twig:17 new - + footprint.new New footprint @@ -423,7 +423,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 Part-DB1\templates\AdminPages\GroupAdmin.html.twig:4 - + group.edit.caption Groups @@ -435,7 +435,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:9 Part-DB1\templates\AdminPages\UserAdmin.html.twig:16 - + user.edit.permissions Permissions @@ -445,7 +445,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:24 new - + group.edit Edit group @@ -455,7 +455,7 @@ Part-DB1\templates\AdminPages\GroupAdmin.html.twig:28 new - + group.new New group @@ -464,7 +464,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:4 - + label_profile.caption Label profiles @@ -473,7 +473,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:8 - + label_profile.advanced Advanced @@ -482,7 +482,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:9 - + label_profile.comment Notes @@ -492,7 +492,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:55 new - + label_profile.edit Edit label profile @@ -502,7 +502,7 @@ Part-DB1\templates\AdminPages\LabelProfileAdmin.html.twig:59 new - + label_profile.new New label profile @@ -513,7 +513,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:4 templates\AdminPages\ManufacturerAdmin.html.twig:4 - + manufacturer.caption Manufacturers @@ -523,7 +523,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:8 new - + manufacturer.edit Edit manufacturer @@ -533,7 +533,7 @@ Part-DB1\templates\AdminPages\ManufacturerAdmin.html.twig:12 new - + manufacturer.new New manufacturer @@ -543,7 +543,7 @@ Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 Part-DB1\templates\AdminPages\MeasurementUnitAdmin.html.twig:4 - + measurement_unit.caption Measurement Unit @@ -558,7 +558,7 @@ templates\base.html.twig:198 templates\base.html.twig:226 - + storelocation.labelp Storage locations @@ -568,7 +568,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:32 new - + storelocation.edit Edit storage location @@ -578,7 +578,7 @@ Part-DB1\templates\AdminPages\StorelocationAdmin.html.twig:36 new - + storelocation.new New storage location @@ -589,7 +589,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:4 templates\AdminPages\SupplierAdmin.html.twig:4 - + supplier.caption Suppliers @@ -599,7 +599,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:16 new - + supplier.edit Edit supplier @@ -609,7 +609,7 @@ Part-DB1\templates\AdminPages\SupplierAdmin.html.twig:20 new - + supplier.new New supplier @@ -619,7 +619,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 Part-DB1\templates\AdminPages\UserAdmin.html.twig:8 - + user.edit.caption Users @@ -629,7 +629,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 Part-DB1\templates\AdminPages\UserAdmin.html.twig:14 - + user.edit.configuration Configuration @@ -639,7 +639,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 Part-DB1\templates\AdminPages\UserAdmin.html.twig:15 - + user.edit.password Password @@ -649,7 +649,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 Part-DB1\templates\AdminPages\UserAdmin.html.twig:45 - + user.edit.tfa.caption Two-factor authentication @@ -659,7 +659,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 Part-DB1\templates\AdminPages\UserAdmin.html.twig:47 - + user.edit.tfa.google_active Authenticator app active @@ -673,7 +673,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:15 Part-DB1\templates\Users\_2fa_settings.html.twig:95 - + tfa_backup.remaining_tokens Remaining backup codes count @@ -687,7 +687,7 @@ Part-DB1\templates\Users\backup_codes.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:96 - + tfa_backup.generation_date Generation date of the backup codes @@ -699,7 +699,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:53 Part-DB1\templates\AdminPages\UserAdmin.html.twig:60 - + user.edit.tfa.disabled Method not enabled @@ -709,7 +709,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 Part-DB1\templates\AdminPages\UserAdmin.html.twig:56 - + user.edit.tfa.u2f_keys_count Active security keys @@ -719,7 +719,7 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - + user.edit.tfa.disable_tfa_title Do you really want to proceed? @@ -729,12 +729,12 @@ Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 Part-DB1\templates\AdminPages\UserAdmin.html.twig:72 - + user.edit.tfa.disable_tfa_message - all active two-factor authentication methods of the user and delete the backup codes! -
-The user will have to set up all two-factor authentication methods again and print new backup codes!

-Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!]]>
+ This will disable <b>all active two-factor authentication methods of the user</b> and delete the <b>backup codes</b>! +<br> +The user will have to set up all two-factor authentication methods again and print new backup codes! <br><br> +<b>Only do this if you are absolutely sure about the identity of the user (seeking help), otherwise the account could be compromised by an attacker!</b>
@@ -742,7 +742,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 Part-DB1\templates\AdminPages\UserAdmin.html.twig:73 - + user.edit.tfa.disable_tfa.btn Disable all two-factor authentication methods @@ -752,7 +752,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:85 new - + user.edit Edit user @@ -762,7 +762,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\UserAdmin.html.twig:89 new - + user.new New user @@ -775,7 +775,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:4 Part-DB1\templates\Parts\info\_attachments_info.html.twig:63 - + attachment.delete Delete @@ -789,7 +789,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:159 - + attachment.external External @@ -801,7 +801,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:47 Part-DB1\templates\Parts\edit\_attachments.html.twig:45 - + attachment.preview.alt Attachment thumbnail @@ -815,7 +815,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:48 Part-DB1\templates\Parts\info\_attachments_info.html.twig:45 - + attachment.view View @@ -831,7 +831,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\info\_attachments_info.html.twig:38 Part-DB1\src\DataTables\AttachmentDataTable.php:166 - + attachment.file_not_found File not found @@ -843,7 +843,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\info\_attachments_info.html.twig:48 Part-DB1\templates\Parts\edit\_attachments.html.twig:62 - + attachment.secure Private attachment @@ -855,7 +855,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_attachments.html.twig:77 Part-DB1\templates\Parts\edit\_attachments.html.twig:75 - + attachment.create Add attachment @@ -869,7 +869,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\Parts\edit\_attachments.html.twig:80 Part-DB1\templates\Parts\edit\_lots.html.twig:33 - + part_lot.edit.delete.confirm Do you really want to delete this stock? This can not be undone! @@ -880,7 +880,7 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:2 templates\AdminPages\_delete_form.html.twig:2 - + entity.delete.confirm_title You really want to delete %name%? @@ -891,11 +891,11 @@ The user will have to set up all two-factor authentication methods again and pri Part-DB1\templates\AdminPages\_delete_form.html.twig:3 templates\AdminPages\_delete_form.html.twig:3 - + entity.delete.message - -Sub elements will be moved upwards.]]> + This can not be undone! +<br> +Sub elements will be moved upwards. @@ -904,7 +904,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_delete_form.html.twig:11 templates\AdminPages\_delete_form.html.twig:9 - + entity.delete Delete element @@ -919,7 +919,7 @@ Sub elements will be moved upwards.]]> Part-DB1\src\Form\Part\PartBaseType.php:267 new - + edit.log_comment Change comment @@ -930,7 +930,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_delete_form.html.twig:24 templates\AdminPages\_delete_form.html.twig:12 - + entity.delete.recursive Delete recursive (all sub elements) @@ -939,7 +939,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_duplicate.html.twig:3 - + entity.duplicate Duplicate element @@ -953,7 +953,7 @@ Sub elements will be moved upwards.]]> templates\AdminPages\_export_form.html.twig:4 src\Form\ImportType.php:67 - + export.format File format @@ -964,7 +964,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:16 templates\AdminPages\_export_form.html.twig:16 - + export.level Verbosity level @@ -975,7 +975,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:19 templates\AdminPages\_export_form.html.twig:19 - + export.level.simple Simple @@ -986,7 +986,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:20 templates\AdminPages\_export_form.html.twig:20 - + export.level.extended Extended @@ -997,7 +997,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:21 templates\AdminPages\_export_form.html.twig:21 - + export.level.full Full @@ -1008,7 +1008,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:31 templates\AdminPages\_export_form.html.twig:31 - + export.include_children Include children elements in export @@ -1019,7 +1019,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_export_form.html.twig:39 templates\AdminPages\_export_form.html.twig:39 - + export.btn Export @@ -1038,7 +1038,7 @@ Sub elements will be moved upwards.]]> templates\Parts\edit_part_info.html.twig:12 templates\Parts\show_part_info.html.twig:11 - + id.label ID @@ -1062,7 +1062,7 @@ Sub elements will be moved upwards.]]> templates\AdminPages\EntityAdminBase.html.twig:101 templates\Parts\show_part_info.html.twig:248 - + createdAt Created At @@ -1080,7 +1080,7 @@ Sub elements will be moved upwards.]]> templates\AdminPages\EntityAdminBase.html.twig:114 templates\Parts\show_part_info.html.twig:263 - + lastModified Last modified @@ -1090,7 +1090,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_info.html.twig:38 Part-DB1\templates\AdminPages\_info.html.twig:38 - + entity.info.parts_count Number of parts with this element @@ -1101,7 +1101,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:125 Part-DB1\templates\Parts\edit\_specifications.html.twig:6 - + specifications.property Parameter @@ -1111,7 +1111,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:7 Part-DB1\templates\Parts\edit\_specifications.html.twig:7 - + specifications.symbol Symbol @@ -1121,7 +1121,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:8 Part-DB1\templates\Parts\edit\_specifications.html.twig:8 - + specifications.value_min Min. @@ -1131,7 +1131,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:9 Part-DB1\templates\Parts\edit\_specifications.html.twig:9 - + specifications.value_typ Typ. @@ -1141,7 +1141,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:10 Part-DB1\templates\Parts\edit\_specifications.html.twig:10 - + specifications.value_max Max. @@ -1151,7 +1151,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:11 Part-DB1\templates\Parts\edit\_specifications.html.twig:11 - + specifications.unit Unit @@ -1161,7 +1161,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:12 Part-DB1\templates\Parts\edit\_specifications.html.twig:12 - + specifications.text Text @@ -1171,7 +1171,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:13 Part-DB1\templates\Parts\edit\_specifications.html.twig:13 - + specifications.group Group @@ -1181,7 +1181,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:26 Part-DB1\templates\Parts\edit\_specifications.html.twig:26 - + specification.create New Parameter @@ -1191,7 +1191,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\AdminPages\_parameters.html.twig:31 Part-DB1\templates\Parts\edit\_specifications.html.twig:31 - + parameter.delete.confirm Do you really want to delete this parameter? @@ -1201,7 +1201,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\attachment_list.html.twig:3 Part-DB1\templates\attachment_list.html.twig:3 - + attachment.list.title Attachments list @@ -1215,7 +1215,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LogSystem\_log_table.html.twig:8 Part-DB1\templates\Parts\lists\_parts_list.html.twig:6 - + part_list.loading.caption Loading @@ -1229,7 +1229,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LogSystem\_log_table.html.twig:9 Part-DB1\templates\Parts\lists\_parts_list.html.twig:7 - + part_list.loading.message This can take a moment. If this message do not disappear, try to reload the page. @@ -1240,7 +1240,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:68 templates\base.html.twig:246 - + vendor.base.javascript_hint Please activate Javascript to use all features! @@ -1250,7 +1250,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:73 Part-DB1\templates\base.html.twig:73 - + sidebar.big.toggle Show/Hide sidebar @@ -1261,7 +1261,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:95 templates\base.html.twig:271 - + loading.caption Loading: @@ -1272,7 +1272,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:96 templates\base.html.twig:272 - + loading.message This can take a while. If this messages stays for a long time, try to reload the page. @@ -1283,7 +1283,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:101 templates\base.html.twig:277 - + loading.bar Loading... @@ -1294,7 +1294,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\base.html.twig:112 templates\base.html.twig:288 - + back_to_top Back to page's top @@ -1304,7 +1304,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:35 Part-DB1\templates\Form\permissionLayout.html.twig:35 - + permission.edit.permission Permissions @@ -1314,7 +1314,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:36 Part-DB1\templates\Form\permissionLayout.html.twig:36 - + permission.edit.value Value @@ -1324,7 +1324,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:53 Part-DB1\templates\Form\permissionLayout.html.twig:53 - + permission.legend.title Explanation of the states @@ -1334,7 +1334,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:57 Part-DB1\templates\Form\permissionLayout.html.twig:57 - + permission.legend.disallow Forbidden @@ -1344,7 +1344,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:61 Part-DB1\templates\Form\permissionLayout.html.twig:61 - + permission.legend.allow Allowed @@ -1354,7 +1354,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Form\permissionLayout.html.twig:65 Part-DB1\templates\Form\permissionLayout.html.twig:65 - + permission.legend.inherit Inherit from (parent) group @@ -1364,7 +1364,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:3 Part-DB1\templates\helper.twig:3 - + bool.true True @@ -1374,7 +1374,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:5 Part-DB1\templates\helper.twig:5 - + bool.false False @@ -1384,7 +1384,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:92 Part-DB1\templates\helper.twig:87 - + Yes Yes @@ -1394,7 +1394,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:94 Part-DB1\templates\helper.twig:89 - + No No @@ -1403,7 +1403,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\helper.twig:126 - + specifications.value Value @@ -1414,7 +1414,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:7 templates\homepage.html.twig:7 - + version.caption Version @@ -1425,7 +1425,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:22 templates\homepage.html.twig:19 - + homepage.license License information @@ -1436,7 +1436,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 - + homepage.github.caption Project page @@ -1447,9 +1447,9 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:31 templates\homepage.html.twig:28 - + homepage.github.text - GitHub project page]]> + Source, downloads, bug reports, to-do-list etc. can be found on <a href="%href%" class="link-external" target="_blank">GitHub project page</a> @@ -1458,7 +1458,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 - + homepage.help.caption Help @@ -1469,9 +1469,9 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:32 templates\homepage.html.twig:29 - + homepage.help.text - GitHub page]]> + Help and tips can be found in Wiki the <a href="%href%" class="link-external" target="_blank">GitHub page</a> @@ -1480,7 +1480,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:33 templates\homepage.html.twig:30 - + homepage.forum.caption Forum @@ -1491,7 +1491,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\homepage.html.twig:45 new - + homepage.last_activity Last activity @@ -1501,7 +1501,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:3 Part-DB1\templates\LabelSystem\dialog.html.twig:6 - + label_generator.title Label generator @@ -1510,7 +1510,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:16 - + label_generator.common Common @@ -1519,7 +1519,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:20 - + label_generator.advanced Advanced @@ -1528,7 +1528,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:24 - + label_generator.profiles Profiles @@ -1537,7 +1537,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:58 - + label_generator.selected_profile Currently selected profile @@ -1546,7 +1546,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:62 - + label_generator.edit_profile Edit profile @@ -1555,7 +1555,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:75 - + label_generator.load_profile Load profile @@ -1564,7 +1564,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dialog.html.twig:102 - + label_generator.download Download @@ -1574,7 +1574,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:3 Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:5 - + label_generator.label_btn Generate label @@ -1583,7 +1583,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\dropdown_macro.html.twig:20 - + label_generator.label_empty New empty label @@ -1592,7 +1592,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:3 - + label_scanner.title Label scanner @@ -1601,7 +1601,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - + label_scanner.no_cam_found.title No webcam found @@ -1610,7 +1610,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:7 - + label_scanner.no_cam_found.text You need a webcam and give permission to use the scanner function. You can input the barcode code manually below. @@ -1619,7 +1619,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LabelSystem\Scanner\dialog.html.twig:27 - + label_scanner.source_select Select source @@ -1629,7 +1629,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LogSystem\log_list.html.twig:3 Part-DB1\templates\LogSystem\log_list.html.twig:3 - + log.list.title System log @@ -1640,7 +1640,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LogSystem\_log_table.html.twig:1 new - + log.undo.confirm_title Really undo change / revert to timestamp? @@ -1651,7 +1651,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\LogSystem\_log_table.html.twig:2 new - + log.undo.confirm_message Do you really want to undo the given change / reset the element to the given timestamp? @@ -1661,7 +1661,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 - + mail.footer.email_sent_by This email was sent automatically by @@ -1671,7 +1671,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\base.html.twig:24 Part-DB1\templates\mail\base.html.twig:24 - + mail.footer.dont_reply Do not answer to this email. @@ -1681,7 +1681,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:6 Part-DB1\templates\mail\pw_reset.html.twig:6 - + email.hi %name% Hi %name% @@ -1691,7 +1691,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:7 Part-DB1\templates\mail\pw_reset.html.twig:7 - + email.pw_reset.message somebody (hopefully you) requested a reset of your password. If this request was not made by you, ignore this mail. @@ -1701,7 +1701,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:9 Part-DB1\templates\mail\pw_reset.html.twig:9 - + email.pw_reset.button Click here to reset password @@ -1711,9 +1711,9 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:11 Part-DB1\templates\mail\pw_reset.html.twig:11 - + email.pw_reset.fallback - %url% and enter the following info]]> + If this does not work for you, go to <a href="%url%">%url%</a> and enter the following info @@ -1721,7 +1721,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:16 Part-DB1\templates\mail\pw_reset.html.twig:16 - + email.pw_reset.username Username @@ -1731,7 +1731,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:19 Part-DB1\templates\mail\pw_reset.html.twig:19 - + email.pw_reset.token Token @@ -1741,9 +1741,9 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\mail\pw_reset.html.twig:24 Part-DB1\templates\mail\pw_reset.html.twig:24 - + email.pw_reset.valid_unit %date% - %date%.]]> + The reset token will be valid until <i>%date%</i>. @@ -1753,7 +1753,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:78 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:58 - + orderdetail.delete Delete @@ -1763,7 +1763,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:39 - + pricedetails.edit.min_qty Minimum discount quantity @@ -1773,7 +1773,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:40 - + pricedetails.edit.price Price @@ -1783,7 +1783,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:41 - + pricedetails.edit.price_qty for amount @@ -1793,7 +1793,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 Part-DB1\templates\Parts\edit\edit_form_styles.html.twig:54 - + pricedetail.create Add price @@ -1804,7 +1804,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:4 templates\Parts\edit_part_info.html.twig:4 - + part.edit.title Edit part @@ -1815,7 +1815,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:9 templates\Parts\edit_part_info.html.twig:9 - + part.edit.card_title Edit part @@ -1825,7 +1825,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:22 - + part.edit.tab.common Common @@ -1835,7 +1835,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:28 - + part.edit.tab.manufacturer Manufacturer @@ -1845,7 +1845,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:34 - + part.edit.tab.advanced Advanced @@ -1855,7 +1855,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40 - + part.edit.tab.part_lots Stocks @@ -1865,7 +1865,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:46 - + part.edit.tab.attachments Attachments @@ -1875,7 +1875,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:52 - + part.edit.tab.orderdetails Purchase information @@ -1884,7 +1884,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - + part.edit.tab.specifications Parameters @@ -1894,7 +1894,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\edit_part_info.html.twig:64 Part-DB1\templates\Parts\edit\edit_part_info.html.twig:58 - + part.edit.tab.comment Notes @@ -1905,7 +1905,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\new_part.html.twig:8 templates\Parts\new_part.html.twig:8 - + part.new.card_title Create new part @@ -1915,7 +1915,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_lots.html.twig:5 Part-DB1\templates\Parts\edit\_lots.html.twig:5 - + part_lot.delete Delete @@ -1925,7 +1925,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_lots.html.twig:28 Part-DB1\templates\Parts\edit\_lots.html.twig:28 - + part_lot.create Add stock @@ -1935,7 +1935,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 - + orderdetail.create Add distributor @@ -1945,7 +1945,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 - + pricedetails.edit.delete.confirm Do you really want to delete this price? This can not be undone. @@ -1955,7 +1955,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 - + orderdetails.edit.delete.confirm Do you really want to delete this distributor info? This can not be undone! @@ -1969,7 +1969,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:4 templates\Parts\show_part_info.html.twig:9 - + part.info.title Detail info for part @@ -1979,7 +1979,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:47 Part-DB1\templates\Parts\info\show_part_info.html.twig:47 - + part.part_lots.label Stocks @@ -1994,7 +1994,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:74 src\Form\PartType.php:86 - + comment.label Notes @@ -2003,7 +2003,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:64 - + part.info.specifications Parameters @@ -2014,7 +2014,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:64 templates\Parts\show_part_info.html.twig:82 - + attachment.labelp Attachments @@ -2025,7 +2025,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:71 templates\Parts\show_part_info.html.twig:88 - + vendor.partinfo.shopping_infos Shopping information @@ -2036,7 +2036,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:78 templates\Parts\show_part_info.html.twig:94 - + vendor.partinfo.history History @@ -2055,7 +2055,7 @@ Sub elements will be moved upwards.]]> templates\base.html.twig:231 templates\Parts\show_part_info.html.twig:100 - + tools.label Tools @@ -2065,7 +2065,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\show_part_info.html.twig:103 Part-DB1\templates\Parts\info\show_part_info.html.twig:90 - + extended_info.label Extended info @@ -2075,7 +2075,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 - + attachment.name Name @@ -2085,7 +2085,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 - + attachment.attachment_type Attachment Type @@ -2095,7 +2095,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 - + attachment.file_name File name @@ -2105,7 +2105,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 - + attachment.file_size File size @@ -2114,7 +2114,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 - + attachment.preview Preview picture @@ -2124,7 +2124,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 - + attachment.download Download @@ -2135,7 +2135,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 new - + user.creating_user User who created this part @@ -2149,7 +2149,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:28 Part-DB1\templates\Parts\info\_extended_infos.html.twig:50 - + Unknown Unknown @@ -2162,7 +2162,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 new - + accessDenied Access Denied @@ -2173,7 +2173,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 new - + user.last_editing_user User who edited this part last @@ -2183,7 +2183,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 - + part.isFavorite Favorite @@ -2193,7 +2193,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 - + part.minOrderAmount Minimum order amount @@ -2210,7 +2210,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:24 src\Form\PartType.php:80 - + manufacturer.label Manufacturer @@ -2222,7 +2222,7 @@ Sub elements will be moved upwards.]]> templates\base.html.twig:54 src\Form\PartType.php:62 - + name.label Name @@ -2233,7 +2233,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_main_infos.html.twig:27 new - + part.back_to_info Back to current version @@ -2248,7 +2248,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:31 src\Form\PartType.php:65 - + description.label Description @@ -2265,7 +2265,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:32 src\Form\PartType.php:74 - + category.label Category @@ -2277,7 +2277,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:42 src\Form\PartType.php:69 - + instock.label Instock @@ -2289,7 +2289,7 @@ Sub elements will be moved upwards.]]> templates\Parts\show_part_info.html.twig:44 src\Form\PartType.php:72 - + mininstock.label Minimum Instock @@ -2305,7 +2305,7 @@ Sub elements will be moved upwards.]]> templates\base.html.twig:73 templates\Parts\show_part_info.html.twig:47 - + footprint.label Footprint @@ -2318,7 +2318,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_main_infos.html.twig:60 templates\Parts\show_part_info.html.twig:51 - + part.avg_price.label Average Price @@ -2328,7 +2328,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:5 Part-DB1\templates\Parts\info\_order_infos.html.twig:5 - + part.supplier.name Name @@ -2338,7 +2338,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:6 Part-DB1\templates\Parts\info\_order_infos.html.twig:6 - + part.supplier.partnr Partnr. @@ -2348,7 +2348,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:28 Part-DB1\templates\Parts\info\_order_infos.html.twig:28 - + part.order.minamount Minimum amount @@ -2358,7 +2358,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:29 Part-DB1\templates\Parts\info\_order_infos.html.twig:29 - + part.order.price Price @@ -2368,7 +2368,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:31 Part-DB1\templates\Parts\info\_order_infos.html.twig:31 - + part.order.single_price Unit Price @@ -2378,7 +2378,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:71 Part-DB1\templates\Parts\info\_order_infos.html.twig:71 - + edit.caption_short Edit @@ -2388,7 +2388,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_order_infos.html.twig:72 Part-DB1\templates\Parts\info\_order_infos.html.twig:72 - + delete.caption Delete @@ -2398,7 +2398,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:7 Part-DB1\templates\Parts\info\_part_lots.html.twig:6 - + part_lots.description Description @@ -2408,7 +2408,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:8 Part-DB1\templates\Parts\info\_part_lots.html.twig:7 - + part_lots.storage_location Storage location @@ -2418,7 +2418,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:9 Part-DB1\templates\Parts\info\_part_lots.html.twig:8 - + part_lots.amount Amount @@ -2428,7 +2428,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:24 Part-DB1\templates\Parts\info\_part_lots.html.twig:22 - + part_lots.location_unknown Storage location unknown @@ -2438,7 +2438,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:31 Part-DB1\templates\Parts\info\_part_lots.html.twig:29 - + part_lots.instock_unknown Amount unknown @@ -2448,7 +2448,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:40 Part-DB1\templates\Parts\info\_part_lots.html.twig:38 - + part_lots.expiration_date Expiration date @@ -2458,7 +2458,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:48 Part-DB1\templates\Parts\info\_part_lots.html.twig:46 - + part_lots.is_expired Expired @@ -2468,7 +2468,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_part_lots.html.twig:55 Part-DB1\templates\Parts\info\_part_lots.html.twig:53 - + part_lots.need_refill Needs refill @@ -2478,7 +2478,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_picture.html.twig:15 Part-DB1\templates\Parts\info\_picture.html.twig:15 - + part.info.prev_picture Previous picture @@ -2488,7 +2488,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_picture.html.twig:19 Part-DB1\templates\Parts\info\_picture.html.twig:19 - + part.info.next_picture Next picture @@ -2498,7 +2498,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_sidebar.html.twig:21 Part-DB1\templates\Parts\info\_sidebar.html.twig:21 - + part.mass.tooltip Mass @@ -2508,7 +2508,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_sidebar.html.twig:30 Part-DB1\templates\Parts\info\_sidebar.html.twig:30 - + part.needs_review.badge Needs review @@ -2518,7 +2518,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_sidebar.html.twig:39 Part-DB1\templates\Parts\info\_sidebar.html.twig:39 - + part.favorite.badge Favorite @@ -2528,7 +2528,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_sidebar.html.twig:47 Part-DB1\templates\Parts\info\_sidebar.html.twig:47 - + part.obsolete.badge No longer available @@ -2537,7 +2537,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_specifications.html.twig:10 - + parameters.extracted_from_description Automatically extracted from description @@ -2546,7 +2546,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_specifications.html.twig:15 - + parameters.auto_extracted_from_comment Automatically extracted from notes @@ -2557,7 +2557,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:4 templates\Parts\show_part_info.html.twig:125 - + part.edit.btn Edit part @@ -2568,7 +2568,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:14 templates\Parts\show_part_info.html.twig:135 - + part.clone.btn Clone part @@ -2579,7 +2579,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_action_bar.html.twig:4 templates\Parts\show_part_info.html.twig:143 - + part.create.btn Create new part @@ -2589,7 +2589,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:31 Part-DB1\templates\Parts\info\_tools.html.twig:29 - + part.delete.confirm_title Do you really want to delete this part? @@ -2599,7 +2599,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:32 Part-DB1\templates\Parts\info\_tools.html.twig:30 - + part.delete.message This part and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! @@ -2609,7 +2609,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\info\_tools.html.twig:39 Part-DB1\templates\Parts\info\_tools.html.twig:37 - + part.delete Delete part @@ -2619,7 +2619,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\all_list.html.twig:4 Part-DB1\templates\Parts\lists\all_list.html.twig:4 - + parts_list.all.title All parts @@ -2629,7 +2629,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\category_list.html.twig:4 Part-DB1\templates\Parts\lists\category_list.html.twig:4 - + parts_list.category.title Parts with category @@ -2639,7 +2639,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 Part-DB1\templates\Parts\lists\footprint_list.html.twig:4 - + parts_list.footprint.title Parts with footprint @@ -2649,7 +2649,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 Part-DB1\templates\Parts\lists\manufacturer_list.html.twig:4 - + parts_list.manufacturer.title Parts with manufacturer @@ -2659,7 +2659,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\search_list.html.twig:4 Part-DB1\templates\Parts\lists\search_list.html.twig:4 - + parts_list.search.title Search Parts @@ -2669,7 +2669,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 Part-DB1\templates\Parts\lists\store_location_list.html.twig:4 - + parts_list.storelocation.title Parts with storage locations @@ -2679,7 +2679,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 Part-DB1\templates\Parts\lists\supplier_list.html.twig:4 - + parts_list.supplier.title Parts with supplier @@ -2689,7 +2689,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\tags_list.html.twig:4 Part-DB1\templates\Parts\lists\tags_list.html.twig:4 - + parts_list.tags.title Parts with tag @@ -2699,7 +2699,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:22 Part-DB1\templates\Parts\lists\_info_card.html.twig:17 - + entity.info.common.tab Common @@ -2709,7 +2709,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:26 Part-DB1\templates\Parts\lists\_info_card.html.twig:20 - + entity.info.statistics.tab Statistics @@ -2718,7 +2718,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:31 - + entity.info.attachments.tab Attachments @@ -2727,7 +2727,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:37 - + entity.info.parameters.tab Parameters @@ -2737,7 +2737,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:54 Part-DB1\templates\Parts\lists\_info_card.html.twig:30 - + entity.info.name Name @@ -2749,7 +2749,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:34 Part-DB1\templates\Parts\lists\_info_card.html.twig:67 - + entity.info.parent Parent @@ -2759,7 +2759,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:70 Part-DB1\templates\Parts\lists\_info_card.html.twig:46 - + entity.edit.btn Edit @@ -2769,7 +2769,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Parts\lists\_info_card.html.twig:92 Part-DB1\templates\Parts\lists\_info_card.html.twig:63 - + entity.info.children_count Count of children elements @@ -2781,7 +2781,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:3 Part-DB1\templates\security\2fa_base_form.html.twig:5 - + tfa.check.title Two-factor authentication needed @@ -2791,7 +2791,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:39 Part-DB1\templates\security\2fa_base_form.html.twig:39 - + tfa.code.trusted_pc This is a trusted computer (if this is enabled, no further two-factor queries are performed on this computer) @@ -2803,7 +2803,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\2fa_base_form.html.twig:52 Part-DB1\templates\security\login.html.twig:58 - + login.btn Login @@ -2817,7 +2817,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_login.html.twig:13 Part-DB1\templates\_navbar.html.twig:40 - + user.logout Logout @@ -2827,7 +2827,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\2fa_form.html.twig:6 Part-DB1\templates\security\2fa_form.html.twig:6 - + tfa.check.code.label Authenticator app code @@ -2837,7 +2837,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\2fa_form.html.twig:10 Part-DB1\templates\security\2fa_form.html.twig:10 - + tfa.check.code.help Enter the 6-digit code from your Authenticator app or one of your backup codes if the Authenticator is not available. @@ -2848,7 +2848,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:3 templates\security\login.html.twig:3 - + login.title Login @@ -2859,7 +2859,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:7 templates\security\login.html.twig:7 - + login.card_title Login @@ -2870,7 +2870,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:31 templates\security\login.html.twig:31 - + login.username.label Username @@ -2881,7 +2881,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:34 templates\security\login.html.twig:34 - + login.username.placeholder Username @@ -2892,7 +2892,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:38 templates\security\login.html.twig:38 - + login.password.label Password @@ -2903,7 +2903,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:40 templates\security\login.html.twig:40 - + login.password.placeholder Password @@ -2914,7 +2914,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:50 templates\security\login.html.twig:50 - + login.rememberme Remember me (should not be used on shared computers) @@ -2924,7 +2924,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\login.html.twig:64 Part-DB1\templates\security\login.html.twig:64 - + pw_reset.password_forget Forgot username/password? @@ -2934,7 +2934,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 Part-DB1\templates\security\pw_reset_new_pw.html.twig:5 - + pw_reset.new_pw.header.title Set new password @@ -2944,7 +2944,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\pw_reset_request.html.twig:5 Part-DB1\templates\security\pw_reset_request.html.twig:5 - + pw_reset.request.header.title Request a new password @@ -2956,7 +2956,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_login.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:10 - + tfa_u2f.http_warning You are accessing this page using the insecure HTTP method, so U2F will most likely not work (Bad Request error message). Ask an administrator to set up the secure HTTPS method if you want to use security keys. @@ -2968,7 +2968,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_login.html.twig:10 Part-DB1\templates\security\U2F\u2f_register.html.twig:22 - + r_u2f_two_factor.pressbutton Please plug in your security key and press its button! @@ -2978,7 +2978,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:3 Part-DB1\templates\security\U2F\u2f_register.html.twig:3 - + tfa_u2f.add_key.title Add security key @@ -2990,7 +2990,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:111 - + tfa_u2f.explanation With the help of a U2F/FIDO compatible security key (e.g. YubiKey or NitroKey), user-friendly and secure two-factor authentication can be achieved. The security keys can be registered here, and if two-factor verification is required, the key only needs to be inserted via USB or typed against the device via NFC. @@ -3000,7 +3000,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:7 Part-DB1\templates\security\U2F\u2f_register.html.twig:7 - + tfa_u2f.add_key.backup_hint To ensure access even if the key is lost, it is recommended to register a second key as backup and store it in a safe place! @@ -3010,7 +3010,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:16 Part-DB1\templates\security\U2F\u2f_register.html.twig:16 - + r_u2f_two_factor.name Shown key name (e.g. Backup) @@ -3020,7 +3020,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:19 Part-DB1\templates\security\U2F\u2f_register.html.twig:19 - + tfa_u2f.add_key.add_button Add security key @@ -3030,7 +3030,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\security\U2F\u2f_register.html.twig:27 Part-DB1\templates\security\U2F\u2f_register.html.twig:27 - + tfa_u2f.add_key.back_to_settings Back to settings @@ -3043,7 +3043,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:8 new - + statistics.title Statistics @@ -3054,7 +3054,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:14 new - + statistics.parts Parts @@ -3065,7 +3065,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:19 new - + statistics.data_structures Data structures @@ -3076,7 +3076,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:24 new - + statistics.attachments Attachments @@ -3091,7 +3091,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:104 new - + statistics.property Property @@ -3106,7 +3106,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:105 new - + statistics.value Value @@ -3117,7 +3117,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:40 new - + statistics.distinct_parts_count Number of distinct parts @@ -3128,7 +3128,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:44 new - + statistics.parts_instock_sum Sum of all part instocks @@ -3139,7 +3139,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:48 new - + statistics.parts_with_price Number of parts with price information @@ -3150,7 +3150,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:65 new - + statistics.categories_count Number of categories @@ -3161,7 +3161,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:69 new - + statistics.footprints_count Number of footprints @@ -3172,7 +3172,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:73 new - + statistics.manufacturers_count Number of manufacturers @@ -3183,7 +3183,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:77 new - + statistics.storelocations_count Number of storage locations @@ -3194,7 +3194,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:81 new - + statistics.suppliers_count Number of suppliers @@ -3205,7 +3205,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:85 new - + statistics.currencies_count Number of currencies @@ -3216,7 +3216,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:89 new - + statistics.measurement_units_count Number of measurement units @@ -3227,7 +3227,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:93 new - + statistics.devices_count Number of projects @@ -3238,7 +3238,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:110 new - + statistics.attachment_types_count Number of attachment types @@ -3249,7 +3249,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:114 new - + statistics.all_attachments_count Number of all attachments @@ -3260,7 +3260,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:118 new - + statistics.user_uploaded_attachments_count Number of user uploaded attachments @@ -3271,7 +3271,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:122 new - + statistics.private_attachments_count Number of private attachments @@ -3282,7 +3282,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Statistics\statistics.html.twig:126 new - + statistics.external_attachments_count Number of external attachments (URL) @@ -3294,7 +3294,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:3 Part-DB1\templates\Users\backup_codes.html.twig:9 - + tfa_backup.codes.title Backup codes @@ -3304,7 +3304,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:12 Part-DB1\templates\Users\backup_codes.html.twig:12 - + tfa_backup.codes.explanation Print out these codes and keep them in a safe place! @@ -3314,7 +3314,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:13 Part-DB1\templates\Users\backup_codes.html.twig:13 - + tfa_backup.codes.help If you no longer have access to your device with the Authenticator App (lost smartphone, data loss, etc.) you can use one of these codes to access your account and possibly set up a new Authenticator App. Each of these codes can be used once, it is recommended to delete used codes. Anyone with access to these codes can potentially access your account, so keep them in a safe place. @@ -3324,7 +3324,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:16 Part-DB1\templates\Users\backup_codes.html.twig:16 - + tfa_backup.username Username @@ -3334,7 +3334,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:29 Part-DB1\templates\Users\backup_codes.html.twig:29 - + tfa_backup.codes.page_generated_on Page generated on %date% @@ -3344,7 +3344,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:32 Part-DB1\templates\Users\backup_codes.html.twig:32 - + tfa_backup.codes.print Print @@ -3354,7 +3354,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\backup_codes.html.twig:35 Part-DB1\templates\Users\backup_codes.html.twig:35 - + tfa_backup.codes.copy_clipboard Copy to clipboard @@ -3371,7 +3371,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:3 templates\Users\user_info.html.twig:6 - + user.info.label User information @@ -3385,7 +3385,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:18 src\Form\UserSettingsType.php:32 - + user.firstName.label First name @@ -3399,7 +3399,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:24 src\Form\UserSettingsType.php:35 - + user.lastName.label Last name @@ -3413,7 +3413,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:30 src\Form\UserSettingsType.php:41 - + user.email.label Email @@ -3427,7 +3427,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:37 src\Form\UserSettingsType.php:38 - + user.department.label Department @@ -3441,7 +3441,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_info.html.twig:47 src\Form\UserSettingsType.php:30 - + user.username.label User name @@ -3454,7 +3454,7 @@ Sub elements will be moved upwards.]]> Part-DB1\src\Services\ElementTypeNameGenerator.php:93 templates\Users\user_info.html.twig:53 - + group.label Group: @@ -3464,7 +3464,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\user_info.html.twig:67 Part-DB1\templates\Users\user_info.html.twig:67 - + user.permissions Permissions @@ -3481,7 +3481,7 @@ Sub elements will be moved upwards.]]> templates\Users\user_settings.html.twig:3 templates\Users\user_settings.html.twig:6 - + user.settings.label User settings @@ -3492,7 +3492,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:18 templates\Users\user_settings.html.twig:14 - + user_settings.data.label Personal data @@ -3503,7 +3503,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:22 templates\Users\user_settings.html.twig:18 - + user_settings.configuration.label Configuration @@ -3514,7 +3514,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\user_settings.html.twig:55 templates\Users\user_settings.html.twig:48 - + user.settings.change_pw Change password @@ -3524,7 +3524,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:6 Part-DB1\templates\Users\_2fa_settings.html.twig:6 - + user.settings.2fa_settings Two-Factor Authentication @@ -3534,7 +3534,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:13 Part-DB1\templates\Users\_2fa_settings.html.twig:13 - + tfa.settings.google.tab Authenticator app @@ -3544,7 +3544,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:17 Part-DB1\templates\Users\_2fa_settings.html.twig:17 - + tfa.settings.bakup.tab Backup codes @@ -3554,7 +3554,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:21 Part-DB1\templates\Users\_2fa_settings.html.twig:21 - + tfa.settings.u2f.tab Security keys (U2F) @@ -3564,7 +3564,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:25 Part-DB1\templates\Users\_2fa_settings.html.twig:25 - + tfa.settings.trustedDevices.tab Trusted devices @@ -3574,7 +3574,7 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 - + tfa_google.disable.confirm_title Do you really want to disable the Authenticator App? @@ -3584,10 +3584,10 @@ Sub elements will be moved upwards.]]> Part-DB1\templates\Users\_2fa_settings.html.twig:33 Part-DB1\templates\Users\_2fa_settings.html.twig:33 - + tfa_google.disable.confirm_message - -Also note that without two-factor authentication your account is not as well protected against attackers!]]> + If you disable the Authenticator App, all backup codes will be deleted, so you may need to reprint them.<br> +Also note that without two-factor authentication your account is not as well protected against attackers! @@ -3595,7 +3595,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:39 Part-DB1\templates\Users\_2fa_settings.html.twig:39 - + tfa_google.disabled_message Authenticator app deactivated! @@ -3605,9 +3605,9 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:48 Part-DB1\templates\Users\_2fa_settings.html.twig:48 - + tfa_google.step.download - Google Authenticator oder FreeOTP Authenticator)]]> + Download an authenticator app (e.g. <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> oder <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTP Authenticator</a>) @@ -3615,7 +3615,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:49 Part-DB1\templates\Users\_2fa_settings.html.twig:49 - + tfa_google.step.scan Scan the adjoining QR Code with the app or enter the data manually @@ -3625,7 +3625,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:50 Part-DB1\templates\Users\_2fa_settings.html.twig:50 - + tfa_google.step.input_code Enter the generated code in the field below and confirm @@ -3635,7 +3635,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:51 Part-DB1\templates\Users\_2fa_settings.html.twig:51 - + tfa_google.step.download_backup Print out your backup codes and store them in a safe place @@ -3645,7 +3645,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:58 Part-DB1\templates\Users\_2fa_settings.html.twig:58 - + tfa_google.manual_setup Manual setup @@ -3655,7 +3655,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:62 Part-DB1\templates\Users\_2fa_settings.html.twig:62 - + tfa_google.manual_setup.type Type @@ -3665,7 +3665,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:63 Part-DB1\templates\Users\_2fa_settings.html.twig:63 - + tfa_google.manual_setup.username Username @@ -3675,7 +3675,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:64 Part-DB1\templates\Users\_2fa_settings.html.twig:64 - + tfa_google.manual_setup.secret Secret @@ -3685,7 +3685,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:65 Part-DB1\templates\Users\_2fa_settings.html.twig:65 - + tfa_google.manual_setup.digit_count Digit count @@ -3695,7 +3695,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:74 Part-DB1\templates\Users\_2fa_settings.html.twig:74 - + tfa_google.enabled_message Authenticator App enabled @@ -3705,7 +3705,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:83 Part-DB1\templates\Users\_2fa_settings.html.twig:83 - + tfa_backup.disabled Backup codes disabled. Setup authenticator app to enable backup codes. @@ -3717,7 +3717,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:84 Part-DB1\templates\Users\_2fa_settings.html.twig:92 - + tfa_backup.explanation You can use these backup codes to access your account even if you lose the device with the Authenticator App. Print out the codes and keep them in a safe place. @@ -3727,7 +3727,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 - + tfa_backup.reset_codes.confirm_title Really reset codes? @@ -3737,7 +3737,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:88 Part-DB1\templates\Users\_2fa_settings.html.twig:88 - + tfa_backup.reset_codes.confirm_message This will delete all previous codes and generate a set of new codes. This cannot be undone. Remember to print out the new codes and store them in a safe place! @@ -3747,7 +3747,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:91 Part-DB1\templates\Users\_2fa_settings.html.twig:91 - + tfa_backup.enabled Backup codes enabled @@ -3757,7 +3757,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:99 Part-DB1\templates\Users\_2fa_settings.html.twig:99 - + tfa_backup.show_codes Show backup codes @@ -3767,7 +3767,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:114 Part-DB1\templates\Users\_2fa_settings.html.twig:114 - + tfa_u2f.table_caption Registered security keys @@ -3777,7 +3777,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:115 Part-DB1\templates\Users\_2fa_settings.html.twig:115 - + tfa_u2f.delete_u2f.confirm_title Really remove this security key? @@ -3787,7 +3787,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:116 Part-DB1\templates\Users\_2fa_settings.html.twig:116 - + tfa_u2f.delete_u2f.confirm_message If you remove this key, then no more login with this key will be possible. If no security keys remain, two-factor authentication will be disabled. @@ -3797,7 +3797,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:123 Part-DB1\templates\Users\_2fa_settings.html.twig:123 - + tfa_u2f.keys.name Key name @@ -3807,7 +3807,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:124 Part-DB1\templates\Users\_2fa_settings.html.twig:124 - + tfa_u2f.keys.added_date Registration date @@ -3817,7 +3817,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:134 Part-DB1\templates\Users\_2fa_settings.html.twig:134 - + tfa_u2f.key_delete Delete key @@ -3827,7 +3827,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:141 Part-DB1\templates\Users\_2fa_settings.html.twig:141 - + tfa_u2f.no_keys_registered No keys registered yet. @@ -3837,7 +3837,7 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:144 Part-DB1\templates\Users\_2fa_settings.html.twig:144 - + tfa_u2f.add_new_key Register new security key @@ -3847,10 +3847,10 @@ Also note that without two-factor authentication your account is not as well pro Part-DB1\templates\Users\_2fa_settings.html.twig:148 Part-DB1\templates\Users\_2fa_settings.html.twig:148 - + tfa_trustedDevices.explanation - all computers here.]]> + When checking the second factor, the current computer can be marked as trustworthy, so no more two-factor checks on this computer are needed. +If you have done this incorrectly or if a computer is no longer trusted, you can reset the status of <i>all </i>computers here. @@ -3858,7 +3858,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:149 Part-DB1\templates\Users\_2fa_settings.html.twig:149 - + tfa_trustedDevices.invalidate.confirm_title Really remove all trusted computers? @@ -3868,7 +3868,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:150 Part-DB1\templates\Users\_2fa_settings.html.twig:150 - + tfa_trustedDevices.invalidate.confirm_message You will have to perform two-factor authentication again on all computers. Make sure you have your two-factor device at hand. @@ -3878,7 +3878,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Users\_2fa_settings.html.twig:154 Part-DB1\templates\Users\_2fa_settings.html.twig:154 - + tfa_trustedDevices.invalidate.btn Reset trusted devices @@ -3889,7 +3889,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:4 templates\base.html.twig:29 - + sidebar.toggle Toggle Sidebar @@ -3898,7 +3898,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:22 - + navbar.scanner.link Scanner @@ -3909,7 +3909,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:36 templates\base.html.twig:97 - + user.loggedin.label Logged in as @@ -3920,7 +3920,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:42 templates\base.html.twig:103 - + user.login Login @@ -3930,7 +3930,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar.html.twig:50 Part-DB1\templates\_navbar.html.twig:48 - + ui.toggle_darkmode Darkmode @@ -3944,7 +3944,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:106 src\Form\UserSettingsType.php:44 - + user.language_select Switch Language @@ -3955,7 +3955,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:4 templates\base.html.twig:49 - + search.options.label Search options @@ -3964,7 +3964,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:23 - + tags.label Tags @@ -3979,7 +3979,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\Parts\show_part_info.html.twig:36 src\Form\PartType.php:77 - + storelocation.label Storage location @@ -3990,7 +3990,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:31 templates\base.html.twig:65 - + ordernumber.label.short supplier partnr. @@ -4003,7 +4003,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:89 templates\base.html.twig:67 - + supplier.label Supplier @@ -4014,7 +4014,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:52 templates\base.html.twig:75 - + search.deactivateBarcode Deact. Barcode @@ -4025,7 +4025,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:56 templates\base.html.twig:77 - + search.regexmatching Reg.Ex. Matching @@ -4035,7 +4035,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\_navbar_search.html.twig:68 Part-DB1\templates\_navbar_search.html.twig:62 - + search.submit Go! @@ -4051,7 +4051,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:202 templates\base.html.twig:230 - + project.labelp Projects @@ -4064,7 +4064,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:192 templates\base.html.twig:220 - + actions Actions @@ -4077,7 +4077,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:196 templates\base.html.twig:224 - + datasource Data source @@ -4090,7 +4090,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:200 templates\base.html.twig:228 - + manufacturer.labelp Manufacturers @@ -4103,7 +4103,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:201 templates\base.html.twig:229 - + supplier.labelp Suppliers @@ -4119,7 +4119,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:173 Part-DB1\src\Controller\PartController.php:268 - + attachment.download_failed Download of the external attachment failed. @@ -4129,7 +4129,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:222 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:190 - + entity.edit_flash Changes saved successful. @@ -4139,7 +4139,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:231 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:196 - + entity.edit_flash.invalid Can not save changed. Please check your input! @@ -4149,7 +4149,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:302 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:252 - + entity.created_flash Element created. @@ -4159,7 +4159,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:308 Part-DB1\src\Controller\AdminPages\BaseAdminController.php:258 - + entity.created_flash.invalid Could not create element. Please check your input! @@ -4170,7 +4170,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\AdminPages\BaseAdminController.php:352 src\Controller\BaseAdminController.php:154 - + attachment_type.deleted Element deleted! @@ -4186,7 +4186,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:150 Part-DB1\src\Controller\UserSettingsController.php:182 - + csfr_invalid CSFR Token invalid. Please reload this page or contact an administrator if this message stays. @@ -4195,7 +4195,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LabelController.php:125 - + label_generator.no_entities_found No entities matching the range found. @@ -4206,7 +4206,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:154 new - + log.undo.target_not_found Target element could not be found in DB! @@ -4217,7 +4217,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:160 new - + log.undo.revert_success Reverted to timestamp successfully. @@ -4228,7 +4228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:180 new - + log.undo.element_undelete_success Undeleted element successfully. @@ -4239,7 +4239,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:182 new - + log.undo.element_element_already_undeleted Element was already undeleted! @@ -4250,7 +4250,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:189 new - + log.undo.element_delete_success Element deleted successfully. @@ -4261,7 +4261,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:191 new - + log.undo.element.element_already_delted Element was already deleted! @@ -4272,7 +4272,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:198 new - + log.undo.element_change_undone Change undone successfully! @@ -4283,7 +4283,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:200 new - + log.undo.do_undelete_before You have to undelete the element before you can undo this change! @@ -4294,7 +4294,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\LogController.php:203 new - + log.undo.log_type_invalid This log entry can not be undone! @@ -4305,7 +4305,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:182 src\Controller\PartController.php:80 - + part.edited_flash Saved changes! @@ -4315,7 +4315,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:186 Part-DB1\src\Controller\PartController.php:186 - + part.edited_flash.invalid Error during saving: Please check your inputs! @@ -4325,7 +4325,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:216 Part-DB1\src\Controller\PartController.php:219 - + part.deleted Part deleted successful. @@ -4338,7 +4338,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Controller\PartController.php:113 src\Controller\PartController.php:142 - + part.created_flash Part created! @@ -4348,7 +4348,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\PartController.php:308 Part-DB1\src\Controller\PartController.php:283 - + part.created_flash.invalid Error during creation: Please check your inputs! @@ -4358,7 +4358,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:68 Part-DB1\src\Controller\ScanController.php:90 - + scan.qr_not_found No element found for the given barcode. @@ -4367,7 +4367,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:71 - + scan.format_unknown Format unknown! @@ -4376,7 +4376,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\ScanController.php:86 - + scan.qr_success Element found. @@ -4386,7 +4386,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:114 Part-DB1\src\Controller\SecurityController.php:109 - + pw_reset.user_or_email Username / Email @@ -4396,7 +4396,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:131 Part-DB1\src\Controller\SecurityController.php:126 - + pw_reset.request.success Reset request was successful! Please check your emails for further instructions. @@ -4406,7 +4406,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:162 Part-DB1\src\Controller\SecurityController.php:160 - + pw_reset.username Username @@ -4416,7 +4416,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:165 Part-DB1\src\Controller\SecurityController.php:163 - + pw_reset.token Token @@ -4426,7 +4426,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:194 Part-DB1\src\Controller\SecurityController.php:192 - + pw_reset.new_pw.error Username or Token invalid! Please check your input. @@ -4436,7 +4436,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\SecurityController.php:196 Part-DB1\src\Controller\SecurityController.php:194 - + pw_reset.new_pw.success Password was reset successfully. You can now login with your new password. @@ -4446,7 +4446,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserController.php:107 Part-DB1\src\Controller\UserController.php:99 - + user.edit.reset_success All two-factor authentication methods were successfully disabled. @@ -4456,7 +4456,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:101 Part-DB1\src\Controller\UserSettingsController.php:92 - + tfa_backup.no_codes_enabled No backup codes enabled! @@ -4466,7 +4466,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:138 Part-DB1\src\Controller\UserSettingsController.php:132 - + tfa_u2f.u2f_delete.not_existing No security key with this ID is existing. @@ -4476,7 +4476,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:145 Part-DB1\src\Controller\UserSettingsController.php:139 - + tfa_u2f.u2f_delete.access_denied You can not delete the security keys of other users! @@ -4486,7 +4486,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:153 Part-DB1\src\Controller\UserSettingsController.php:147 - + tfa.u2f.u2f_delete.success Security key successfully removed. @@ -4496,7 +4496,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:188 Part-DB1\src\Controller\UserSettingsController.php:180 - + tfa_trustedDevice.invalidate.success Trusted devices successfully reset. @@ -4507,7 +4507,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:226 src\Controller\UserController.php:98 - + user.settings.saved_flash Settings saved! @@ -4518,7 +4518,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:288 src\Controller\UserController.php:130 - + user.settings.pw_changed_flash Password changed! @@ -4528,7 +4528,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:317 Part-DB1\src\Controller\UserSettingsController.php:306 - + user.settings.2fa.google.activated Authenticator App successfully activated. @@ -4538,7 +4538,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:328 Part-DB1\src\Controller\UserSettingsController.php:315 - + user.settings.2fa.google.disabled Authenticator App successfully deactivated. @@ -4548,7 +4548,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Controller\UserSettingsController.php:346 Part-DB1\src\Controller\UserSettingsController.php:332 - + user.settings.2fa.backup_codes.regenerated New backup codes successfully generated. @@ -4558,7 +4558,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\AttachmentDataTable.php:148 Part-DB1\src\DataTables\AttachmentDataTable.php:148 - + attachment.table.filename File name @@ -4568,7 +4568,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\AttachmentDataTable.php:153 Part-DB1\src\DataTables\AttachmentDataTable.php:153 - + attachment.table.filesize File size @@ -4588,7 +4588,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:193 Part-DB1\src\DataTables\PartsDataTable.php:200 - + true true @@ -4610,7 +4610,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:201 Part-DB1\src\Form\Type\SIUnitType.php:139 - + false false @@ -4620,7 +4620,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 - + log.target_deleted deleted @@ -4631,7 +4631,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 new - + log.undo.undelete Undelete element @@ -4642,7 +4642,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 new - + log.undo.undo Undo change @@ -4653,7 +4653,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 new - + log.undo.revert Revert element to this timestamp @@ -4663,7 +4663,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:173 Part-DB1\src\DataTables\LogDataTable.php:161 - + log.id ID @@ -4673,7 +4673,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:178 Part-DB1\src\DataTables\LogDataTable.php:166 - + log.timestamp Timestamp @@ -4683,7 +4683,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:183 Part-DB1\src\DataTables\LogDataTable.php:171 - + log.type Event @@ -4693,7 +4693,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:191 Part-DB1\src\DataTables\LogDataTable.php:179 - + log.level Level @@ -4703,7 +4703,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:200 Part-DB1\src\DataTables\LogDataTable.php:188 - + log.user User @@ -4713,7 +4713,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:213 Part-DB1\src\DataTables\LogDataTable.php:201 - + log.target_type Target type @@ -4723,7 +4723,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:226 Part-DB1\src\DataTables\LogDataTable.php:214 - + log.target Target @@ -4734,7 +4734,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\LogDataTable.php:218 new - + log.extra Extra @@ -4744,7 +4744,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:168 Part-DB1\src\DataTables\PartsDataTable.php:116 - + part.table.name Name @@ -4754,7 +4754,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:178 Part-DB1\src\DataTables\PartsDataTable.php:126 - + part.table.id Id @@ -4764,7 +4764,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:182 Part-DB1\src\DataTables\PartsDataTable.php:130 - + part.table.description Description @@ -4774,7 +4774,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:185 Part-DB1\src\DataTables\PartsDataTable.php:133 - + part.table.category Category @@ -4784,7 +4784,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:190 Part-DB1\src\DataTables\PartsDataTable.php:138 - + part.table.footprint Footprint @@ -4794,7 +4794,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:194 Part-DB1\src\DataTables\PartsDataTable.php:142 - + part.table.manufacturer Manufacturer @@ -4804,7 +4804,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:197 Part-DB1\src\DataTables\PartsDataTable.php:145 - + part.table.storeLocations Storage locations @@ -4814,7 +4814,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:216 Part-DB1\src\DataTables\PartsDataTable.php:164 - + part.table.amount Amount @@ -4824,7 +4824,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:224 Part-DB1\src\DataTables\PartsDataTable.php:172 - + part.table.minamount Min. Amount @@ -4834,7 +4834,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:232 Part-DB1\src\DataTables\PartsDataTable.php:180 - + part.table.partUnit Measurement Unit @@ -4844,7 +4844,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:236 Part-DB1\src\DataTables\PartsDataTable.php:184 - + part.table.addedDate Created at @@ -4854,7 +4854,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:240 Part-DB1\src\DataTables\PartsDataTable.php:188 - + part.table.lastModified Last modified @@ -4864,7 +4864,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:244 Part-DB1\src\DataTables\PartsDataTable.php:192 - + part.table.needsReview Needs review @@ -4874,7 +4874,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:251 Part-DB1\src\DataTables\PartsDataTable.php:199 - + part.table.favorite Favorite @@ -4884,7 +4884,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:258 Part-DB1\src\DataTables\PartsDataTable.php:206 - + part.table.manufacturingStatus Status @@ -4898,7 +4898,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:210 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.unknown Unknown @@ -4910,7 +4910,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:211 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.announced Announced @@ -4922,7 +4922,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:212 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.active Active @@ -4934,7 +4934,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:213 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.nrfnd Not recommended for new designs @@ -4946,7 +4946,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:214 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.eol End of life @@ -4958,7 +4958,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:215 Part-DB1\src\Form\Part\PartBaseType.php:88 - + m_status.discontinued Discontinued @@ -4968,7 +4968,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:271 Part-DB1\src\DataTables\PartsDataTable.php:219 - + part.table.mpn MPN @@ -4978,7 +4978,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:275 Part-DB1\src\DataTables\PartsDataTable.php:223 - + part.table.mass Mass @@ -4988,7 +4988,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:279 Part-DB1\src\DataTables\PartsDataTable.php:227 - + part.table.tags Tags @@ -4998,7 +4998,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\DataTables\PartsDataTable.php:283 Part-DB1\src\DataTables\PartsDataTable.php:231 - + part.table.attachments Attachments @@ -5008,7 +5008,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 - + flash.login_successful Login successful @@ -5019,7 +5019,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + JSON JSON @@ -5030,7 +5030,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + XML XML @@ -5041,7 +5041,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + CSV CSV @@ -5052,7 +5052,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:77 src\Form\ImportType.php:68 - + YAML YAML @@ -5062,7 +5062,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:124 Part-DB1\src\Form\AdminPages\ImportType.php:124 - + import.abort_on_validation.help When this option is activated, the whole import process is aborted if invalid data is detected. If not selected, the invalid data is ignored and the importer will try to import the other elements. @@ -5073,7 +5073,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:86 src\Form\ImportType.php:70 - + import.csv_separator CSV separator @@ -5084,7 +5084,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:93 src\Form\ImportType.php:72 - + parent.label Parent element @@ -5095,7 +5095,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:101 src\Form\ImportType.php:75 - + import.file File @@ -5106,7 +5106,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:111 src\Form\ImportType.php:78 - + import.preserve_children Preserve child elements on import @@ -5117,7 +5117,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:120 src\Form\ImportType.php:80 - + import.abort_on_validation Abort on invalid data @@ -5128,7 +5128,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AdminPages\ImportType.php:132 src\Form\ImportType.php:85 - + import.btn Import @@ -5138,7 +5138,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:113 Part-DB1\src\Form\AttachmentFormType.php:109 - + attachment.edit.secure_file.help An attachment marked private can only be accessed by authenticated users with the proper permission. If this is activated no thumbnails are generated and access to file is less performant. @@ -5148,7 +5148,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:127 Part-DB1\src\Form\AttachmentFormType.php:123 - + attachment.edit.url.help You can specify an URL to an external file here, or input an keyword which is used to search in built-in resources (e.g. footprints) @@ -5158,7 +5158,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:82 Part-DB1\src\Form\AttachmentFormType.php:79 - + attachment.edit.name Name @@ -5168,7 +5168,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:85 Part-DB1\src\Form\AttachmentFormType.php:82 - + attachment.edit.attachment_type Attachment type @@ -5178,7 +5178,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:94 Part-DB1\src\Form\AttachmentFormType.php:91 - + attachment.edit.show_in_table Show in table @@ -5188,7 +5188,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:105 Part-DB1\src\Form\AttachmentFormType.php:102 - + attachment.edit.secure_file Private attachment @@ -5198,7 +5198,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:119 Part-DB1\src\Form\AttachmentFormType.php:115 - + attachment.edit.url URL @@ -5208,7 +5208,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:133 Part-DB1\src\Form\AttachmentFormType.php:129 - + attachment.edit.download_url Download external file @@ -5218,7 +5218,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\AttachmentFormType.php:146 Part-DB1\src\Form\AttachmentFormType.php:142 - + attachment.edit.file Upload file @@ -5228,7 +5228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:86 - + part.label Part @@ -5238,7 +5238,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:68 Part-DB1\src\Services\ElementTypeNameGenerator.php:87 - + part_lot.label Part lot @@ -5247,7 +5247,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.none None @@ -5256,7 +5256,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.qr QR Code (recommended) @@ -5265,7 +5265,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code128 Code 128 (recommended) @@ -5274,7 +5274,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code39 Code 39 (recommended) @@ -5283,7 +5283,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.code93 Code 93 @@ -5292,7 +5292,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:78 - + label_options.barcode_type.datamatrix Datamatrix @@ -5301,7 +5301,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:122 - + label_options.lines_mode.html Placeholders @@ -5310,7 +5310,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:122 - + label.options.lines_mode.twig Twig @@ -5319,16 +5319,16 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:126 - + label_options.lines_mode.help - Twig documentation and Wiki for more information.]]> + If you select Twig here, the content field is interpreted as Twig template. See <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig documentation</a> and <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> for more information. Part-DB1\src\Form\LabelOptionsType.php:47 - + label_options.page_size.label Label size @@ -5337,7 +5337,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:66 - + label_options.supported_elements.label Target type @@ -5346,7 +5346,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:75 - + label_options.barcode_type.label Barcode @@ -5355,7 +5355,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:102 - + label_profile.lines.label Content @@ -5364,7 +5364,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:111 - + label_options.additional_css.label Additional styles (CSS) @@ -5373,7 +5373,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:120 - + label_options.lines_mode.label Parser mode @@ -5382,7 +5382,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:51 - + label_options.width.placeholder Width @@ -5391,7 +5391,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelOptionsType.php:60 - + label_options.height.placeholder Height @@ -5400,7 +5400,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 - + label_generator.target_id.range_hint You can specify multiple IDs (e.g. 1,2,3) and/or a range (1-3) here to generate labels for multiple elements at once. @@ -5409,7 +5409,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 - + label_generator.target_id.label Target IDs @@ -5418,7 +5418,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 - + label_generator.update Update @@ -5427,7 +5427,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 - + scan_dialog.input Input @@ -5436,7 +5436,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 - + scan_dialog.submit Submit @@ -5445,7 +5445,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:41 - + parameters.name.placeholder e.g. DC Current Gain @@ -5454,7 +5454,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:50 - + parameters.symbol.placeholder e.g. h_{FE} @@ -5463,7 +5463,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:60 - + parameters.text.placeholder e.g. Test conditions @@ -5472,7 +5472,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:71 - + parameters.max.placeholder e.g. 350 @@ -5481,7 +5481,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:82 - + parameters.min.placeholder e.g. 100 @@ -5490,7 +5490,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:93 - + parameters.typical.placeholder e.g. 200 @@ -5499,7 +5499,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:103 - + parameters.unit.placeholder e.g. V @@ -5508,7 +5508,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\ParameterType.php:114 - + parameter.group.placeholder e.g. Technical Specifications @@ -5518,7 +5518,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:72 Part-DB1\src\Form\Part\OrderdetailType.php:75 - + orderdetails.edit.supplierpartnr Supplier part number @@ -5528,7 +5528,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:81 Part-DB1\src\Form\Part\OrderdetailType.php:84 - + orderdetails.edit.supplier Supplier @@ -5538,7 +5538,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:87 Part-DB1\src\Form\Part\OrderdetailType.php:90 - + orderdetails.edit.url Link to offer @@ -5548,7 +5548,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:93 Part-DB1\src\Form\Part\OrderdetailType.php:96 - + orderdetails.edit.obsolete No longer available @@ -5558,7 +5558,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\OrderdetailType.php:75 Part-DB1\src\Form\Part\OrderdetailType.php:78 - + orderdetails.edit.supplierpartnr.placeholder e.g. BC 547 @@ -5568,7 +5568,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:101 Part-DB1\src\Form\Part\PartBaseType.php:99 - + part.edit.name Name @@ -5578,7 +5578,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:109 Part-DB1\src\Form\Part\PartBaseType.php:107 - + part.edit.description Description @@ -5588,7 +5588,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:120 Part-DB1\src\Form\Part\PartBaseType.php:118 - + part.edit.mininstock Minimum stock @@ -5598,7 +5598,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:129 Part-DB1\src\Form\Part\PartBaseType.php:127 - + part.edit.category Category @@ -5608,7 +5608,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:135 Part-DB1\src\Form\Part\PartBaseType.php:133 - + part.edit.footprint Footprint @@ -5618,7 +5618,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:142 Part-DB1\src\Form\Part\PartBaseType.php:140 - + part.edit.tags Tags @@ -5628,7 +5628,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:154 Part-DB1\src\Form\Part\PartBaseType.php:152 - + part.edit.manufacturer.label Manufacturer @@ -5638,7 +5638,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:161 Part-DB1\src\Form\Part\PartBaseType.php:159 - + part.edit.manufacturer_url.label Link to product page @@ -5648,7 +5648,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:167 Part-DB1\src\Form\Part\PartBaseType.php:165 - + part.edit.mpn Manufacturer part number @@ -5658,7 +5658,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:173 Part-DB1\src\Form\Part\PartBaseType.php:171 - + part.edit.manufacturing_status Manufacturing status @@ -5668,7 +5668,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:181 Part-DB1\src\Form\Part\PartBaseType.php:179 - + part.edit.needs_review Needs review @@ -5678,7 +5678,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:189 Part-DB1\src\Form\Part\PartBaseType.php:187 - + part.edit.is_favorite Favorite @@ -5688,7 +5688,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:197 Part-DB1\src\Form\Part\PartBaseType.php:195 - + part.edit.mass Mass @@ -5698,7 +5698,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:203 Part-DB1\src\Form\Part\PartBaseType.php:201 - + part.edit.partUnit Measuring unit @@ -5708,7 +5708,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:212 Part-DB1\src\Form\Part\PartBaseType.php:210 - + part.edit.comment Notes @@ -5718,7 +5718,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:250 Part-DB1\src\Form\Part\PartBaseType.php:246 - + part.edit.master_attachment Preview image @@ -5729,7 +5729,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:276 src\Form\PartType.php:91 - + part.edit.save Save changes @@ -5740,7 +5740,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:277 src\Form\PartType.php:92 - + part.edit.reset Reset changes @@ -5750,7 +5750,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:105 Part-DB1\src\Form\Part\PartBaseType.php:103 - + part.edit.name.placeholder e.g. BC547 @@ -5760,7 +5760,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:115 Part-DB1\src\Form\Part\PartBaseType.php:113 - + part.edit.description.placeholder e.g. NPN 45V, 0,1A, 0,5W @@ -5770,7 +5770,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartBaseType.php:123 Part-DB1\src\Form\Part\PartBaseType.php:121 - + part.editmininstock.placeholder e.g. 1 @@ -5780,7 +5780,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:69 Part-DB1\src\Form\Part\PartLotType.php:69 - + part_lot.edit.description Description @@ -5790,7 +5790,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:78 Part-DB1\src\Form\Part\PartLotType.php:78 - + part_lot.edit.location Storage location @@ -5800,7 +5800,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:89 Part-DB1\src\Form\Part\PartLotType.php:89 - + part_lot.edit.amount Amount @@ -5810,7 +5810,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:98 Part-DB1\src\Form\Part\PartLotType.php:97 - + part_lot.edit.instock_unknown Amount unknown @@ -5820,7 +5820,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:109 Part-DB1\src\Form\Part\PartLotType.php:108 - + part_lot.edit.needs_refill Needs refill @@ -5830,7 +5830,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:120 Part-DB1\src\Form\Part\PartLotType.php:119 - + part_lot.edit.expiration_date Expiration date @@ -5840,7 +5840,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Part\PartLotType.php:128 Part-DB1\src\Form\Part\PartLotType.php:125 - + part_lot.edit.comment Notes @@ -5850,7 +5850,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\Permissions\PermissionsType.php:99 Part-DB1\src\Form\Permissions\PermissionsType.php:99 - + perm.group.other Miscellaneous @@ -5860,7 +5860,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:97 Part-DB1\src\Form\TFAGoogleSettingsType.php:97 - + tfa_google.enable Enable authenticator app @@ -5870,7 +5870,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:101 Part-DB1\src\Form\TFAGoogleSettingsType.php:101 - + tfa_google.disable Deactivate authenticator app @@ -5880,7 +5880,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\TFAGoogleSettingsType.php:74 Part-DB1\src\Form\TFAGoogleSettingsType.php:74 - + google_confirmation Confirmation code @@ -5891,7 +5891,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:108 src\Form\UserSettingsType.php:46 - + user.timezone.label Timezone @@ -5901,7 +5901,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:133 Part-DB1\src\Form\UserSettingsType.php:132 - + user.currency.label Preferred currency @@ -5912,7 +5912,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:139 src\Form\UserSettingsType.php:53 - + save Apply changes @@ -5923,7 +5923,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:140 src\Form\UserSettingsType.php:54 - + reset Discard changes @@ -5934,7 +5934,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:104 src\Form\UserSettingsType.php:45 - + user_settings.language.placeholder Serverwide language @@ -5945,7 +5945,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Form\UserSettingsType.php:115 src\Form\UserSettingsType.php:48 - + user_settings.timezone.placeholder Serverwide Timezone @@ -5955,7 +5955,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:79 Part-DB1\src\Services\ElementTypeNameGenerator.php:79 - + attachment.label Attachment @@ -5965,7 +5965,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:81 Part-DB1\src\Services\ElementTypeNameGenerator.php:81 - + attachment_type.label Attachment type @@ -5975,7 +5975,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:82 Part-DB1\src\Services\ElementTypeNameGenerator.php:82 - + project.label Project @@ -5985,7 +5985,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:85 Part-DB1\src\Services\ElementTypeNameGenerator.php:85 - + measurement_unit.label Measurement unit @@ -5995,7 +5995,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:90 Part-DB1\src\Services\ElementTypeNameGenerator.php:90 - + currency.label Currency @@ -6005,7 +6005,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:91 Part-DB1\src\Services\ElementTypeNameGenerator.php:91 - + orderdetail.label Order detail @@ -6015,7 +6015,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:92 Part-DB1\src\Services\ElementTypeNameGenerator.php:92 - + pricedetail.label Price detail @@ -6025,7 +6025,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:94 Part-DB1\src\Services\ElementTypeNameGenerator.php:94 - + user.label User @@ -6034,7 +6034,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:95 - + parameter.label Parameter @@ -6043,7 +6043,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\ElementTypeNameGenerator.php:96 - + label_profile.label Label profile @@ -6054,7 +6054,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 new - + log.element_deleted.old_name.unknown Unknown @@ -6064,7 +6064,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\MarkdownParser.php:73 Part-DB1\src\Services\MarkdownParser.php:73 - + markdown.loading Loading markdown. If this message does not disappear, try to reload the page. @@ -6074,7 +6074,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\PasswordResetManager.php:98 Part-DB1\src\Services\PasswordResetManager.php:98 - + pw_reset.email.subject Password reset for your Part-DB account @@ -6083,7 +6083,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 - + tree.tools.tools Tools @@ -6094,7 +6094,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 src\Services\ToolsTreeBuilder.php:74 - + tree.tools.edit Edit @@ -6105,7 +6105,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 src\Services\ToolsTreeBuilder.php:81 - + tree.tools.show Show @@ -6115,7 +6115,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 - + tree.tools.system System @@ -6124,7 +6124,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 - + tree.tools.tools.label_dialog Label generator @@ -6133,7 +6133,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 - + tree.tools.tools.label_scanner Scanner @@ -6144,7 +6144,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 src\Services\ToolsTreeBuilder.php:62 - + tree.tools.edit.attachment_types Attachment types @@ -6155,7 +6155,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 src\Services\ToolsTreeBuilder.php:64 - + tree.tools.edit.categories Categories @@ -6166,7 +6166,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 src\Services\ToolsTreeBuilder.php:66 - + tree.tools.edit.projects Projects @@ -6177,7 +6177,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:144 src\Services\ToolsTreeBuilder.php:68 - + tree.tools.edit.suppliers Suppliers @@ -6188,7 +6188,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 src\Services\ToolsTreeBuilder.php:70 - + tree.tools.edit.manufacturer Manufacturers @@ -6198,7 +6198,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 - + tree.tools.edit.storelocation Storage locations @@ -6208,7 +6208,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 - + tree.tools.edit.footprint Footprints @@ -6218,7 +6218,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 - + tree.tools.edit.currency Currencies @@ -6228,7 +6228,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 - + tree.tools.edit.measurement_unit Measurement Unit @@ -6237,7 +6237,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - + tree.tools.edit.label_profile Label profiles @@ -6247,7 +6247,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 - + tree.tools.edit.part New part @@ -6258,7 +6258,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 src\Services\ToolsTreeBuilder.php:77 - + tree.tools.show.all_parts Show all parts @@ -6268,7 +6268,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 - + tree.tools.show.all_attachments Attachments @@ -6279,7 +6279,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 new - + tree.tools.show.statistics Statistics @@ -6289,7 +6289,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 - + tree.tools.system.users Users @@ -6299,7 +6299,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 - + tree.tools.system.groups Groups @@ -6310,7 +6310,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 new - + tree.tools.system.event_log Event log @@ -6321,7 +6321,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 src\Services\TreeBuilder.php:124 - + entity.tree.new New Element @@ -6331,7 +6331,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 obsolete - + attachment.external_file External file @@ -6341,7 +6341,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 obsolete - + attachment.edit Edit @@ -6352,7 +6352,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can templates\base.html.twig:88 obsolete - + barcode.scan Scan Barcode @@ -6363,7 +6363,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Form\UserSettingsType.php:49 obsolete - + user.theme.label Theme @@ -6374,7 +6374,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can src\Form\UserSettingsType.php:50 obsolete - + user_settings.theme.placeholder Serverwide Theme @@ -6385,7 +6385,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.user_login.ip IP @@ -6399,7 +6399,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.undo_mode.undo Change undone @@ -6413,7 +6413,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.undo_mode.revert Element reverted @@ -6424,7 +6424,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_created.original_instock Old instock @@ -6435,7 +6435,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_deleted.old_name Old name @@ -6446,7 +6446,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.element_edited.changed_fields Changed fields @@ -6457,7 +6457,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.instock_changed.comment Comment @@ -6468,7 +6468,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can new obsolete - + log.collection_deleted.deleted Deleted element: @@ -6479,7 +6479,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + go.exclamation Go! @@ -6490,7 +6490,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + language.english English @@ -6501,7 +6501,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + language.german German @@ -6511,7 +6511,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.password_change_needed Password change needed! @@ -6521,7 +6521,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.table.type Attachment type @@ -6531,7 +6531,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.table.element Associated element @@ -6541,7 +6541,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.isPicture Picture? @@ -6551,7 +6551,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.is3DModel 3D model? @@ -6561,7 +6561,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment.edit.isBuiltin Builtin? @@ -6571,7 +6571,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_comment.placeholder e.g. useful for switching @@ -6581,7 +6581,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + tfa_backup.regenerate_codes Generate new backup codes @@ -6591,7 +6591,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noneofitschild.self A element can not be its own parent. @@ -6601,7 +6601,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noneofitschild.children The parent can not be one of the children of itself. @@ -6611,7 +6611,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.location_full.no_increasment The storage location was marked as full, so you can not increase the instock amount. (New amount max. {{ old_amount }}) @@ -6621,7 +6621,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.location_full The storage location was marked as full, so you can not add a new part to it. @@ -6631,7 +6631,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.only_existing The storage location was marked as "only existing", so you can not add new part to it. @@ -6641,7 +6641,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.part_lot.single_part The storage location was marked as "single part", so you can not add a new part to it. @@ -6651,7 +6651,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.active.help The part is currently and in the foreseeable future in production @@ -6661,7 +6661,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.announced.help The part was announced but is not available yet. @@ -6671,7 +6671,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.discontinued.help The part is discontinued and not produced anymore. @@ -6681,7 +6681,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.eol.help The product has reached its end-of-life and the production will be stopped soon. @@ -6691,7 +6691,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.nrfnd.help The part is currently in production but is not recommended for new designs. @@ -6701,7 +6701,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + m_status.unknown.help The manufacturing status of the part is not known. @@ -6711,7 +6711,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.success Success @@ -6721,7 +6721,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.error Error @@ -6731,7 +6731,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.warning Warning @@ -6741,7 +6741,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.notice Notice @@ -6751,7 +6751,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + flash.info Info @@ -6761,7 +6761,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + validator.noLockout You can not withdraw yourself the "change permission" permission, to prevent that you lockout yourself accidentally. @@ -6771,7 +6771,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter Allowed file extensions @@ -6781,7 +6781,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter.help You can specify a comma separated list of file extension or mime types, which an uploaded file must have when assigned to this attachment type. To allow all supported image files, you can use image/*. @@ -6791,7 +6791,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + attachment_type.edit.filetype_filter.placeholder e.g. .txt, application/pdf, image/* @@ -6802,7 +6802,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + part.name.placeholder e.g. BC547 @@ -6812,7 +6812,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.not_selectable Not selectable @@ -6822,7 +6822,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.not_selectable.help If this option is activated, this element can not be assigned to a part property. Useful if this element is just used for grouping. @@ -6832,7 +6832,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + bbcode.hint You can use BBCode here (e.g. [b]Bold[/b]) @@ -6842,7 +6842,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.create Create element @@ -6852,7 +6852,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + entity.edit.save Save @@ -6862,7 +6862,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_footprints Disable footprints @@ -6872,7 +6872,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_footprints.help If this option is activated, the footprint property is disabled for all parts with this category. @@ -6882,7 +6882,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_manufacturers Disable manufacturers @@ -6892,7 +6892,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_manufacturers.help If this option is activated, the manufacturer property is disabled for all parts with this category. @@ -6902,7 +6902,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_autodatasheets Disable automatic datasheet links @@ -6912,7 +6912,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_autodatasheets.help If this option is activated, no automatic links to datasheets are created for parts with this category. @@ -6922,7 +6922,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_properties Disable properties @@ -6932,7 +6932,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.disable_properties.help If this option is activated, the part properties are disabled for parts with this category. @@ -6942,7 +6942,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_hint Part name hint @@ -6952,7 +6952,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_hint.placeholder e.g. 100nF @@ -6962,7 +6962,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.partname_regex Name filter @@ -6972,7 +6972,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_description Default description @@ -6982,7 +6982,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_description.placeholder e.g. Capacitor, 10mm x 10mm, SMD @@ -6992,7 +6992,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + category.edit.default_comment Default notes @@ -7002,7 +7002,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + company.edit.address Address @@ -7012,7 +7012,7 @@ If you have done this incorrectly or if a computer is no longer trusted, you can obsolete obsolete - + company.edit.address.placeholder e.g. Examplestreet 314 Exampletown @@ -7023,7 +7023,7 @@ Exampletown obsolete obsolete - + company.edit.phone_number Phone number @@ -7033,7 +7033,7 @@ Exampletown obsolete obsolete - + company.edit.phone_number.placeholder +49 12345 6789 @@ -7043,7 +7043,7 @@ Exampletown obsolete obsolete - + company.edit.fax_number Fax number @@ -7053,7 +7053,7 @@ Exampletown obsolete obsolete - + company.edit.email Email @@ -7063,7 +7063,7 @@ Exampletown obsolete obsolete - + company.edit.email.placeholder e.g. contact@foo.bar @@ -7073,7 +7073,7 @@ Exampletown obsolete obsolete - + company.edit.website Website @@ -7083,7 +7083,7 @@ Exampletown obsolete obsolete - + company.edit.website.placeholder https://www.foo.bar @@ -7093,7 +7093,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url Product URL @@ -7103,7 +7103,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url.help This field is used to determine a link to the part on the company page. %PARTNUMBER% will be replaced with the order number. @@ -7113,7 +7113,7 @@ Exampletown obsolete obsolete - + company.edit.auto_product_url.placeholder https://foo.bar/product/%PARTNUMBER% @@ -7123,7 +7123,7 @@ Exampletown obsolete obsolete - + currency.edit.iso_code ISO code @@ -7133,7 +7133,7 @@ Exampletown obsolete obsolete - + currency.edit.exchange_rate Exchange rate @@ -7143,7 +7143,7 @@ Exampletown obsolete obsolete - + footprint.edit.3d_model 3D model @@ -7153,7 +7153,7 @@ Exampletown obsolete obsolete - + mass_creation.lines Input @@ -7163,7 +7163,7 @@ Exampletown obsolete obsolete - + mass_creation.lines.placeholder Element 1 Element 1.1 @@ -7178,7 +7178,7 @@ Element 3 obsolete obsolete - + entity.mass_creation.btn Create @@ -7188,7 +7188,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer Is integer @@ -7198,7 +7198,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.is_integer.help If this option is activated, all values with this unit will be rounded to whole numbers. @@ -7208,7 +7208,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix Use SI prefix @@ -7218,7 +7218,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.use_si_prefix.help If this option is activated, values are outputted with SI prefixes (e.g. 1,2kg instead of 1200g) @@ -7228,7 +7228,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol Unit symbol @@ -7238,7 +7238,7 @@ Element 3 obsolete obsolete - + measurement_unit.edit.unit_symbol.placeholder e.g. m @@ -7248,7 +7248,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.label Storelocation full @@ -7258,7 +7258,7 @@ Element 3 obsolete obsolete - + storelocation.edit.is_full.help If this option is selected, it is neither possible to add new parts to this storelocation or to increase the amount of existing parts. @@ -7268,7 +7268,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.label Limit to existing parts @@ -7278,7 +7278,7 @@ Element 3 obsolete obsolete - + storelocation.limit_to_existing.help If this option is activated, it is not possible to add new parts to this storelocation, but the amount of existing parts can be increased. @@ -7288,7 +7288,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.label Only single part @@ -7298,7 +7298,7 @@ Element 3 obsolete obsolete - + storelocation.only_single_part.help If this option is activated, only a single part (with every amount) can be assigned to this storage location. Useful for small SMD boxes or feeders. @@ -7308,7 +7308,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.label Storage type @@ -7318,7 +7318,7 @@ Element 3 obsolete obsolete - + storelocation.storage_type.help You can select a measurement unit here, which a part must have to be able to be assigned to this storage location @@ -7328,7 +7328,7 @@ Element 3 obsolete obsolete - + supplier.edit.default_currency Default currency @@ -7338,7 +7338,7 @@ Element 3 obsolete obsolete - + supplier.shipping_costs.label Shipping Costs @@ -7348,7 +7348,7 @@ Element 3 obsolete obsolete - + user.username.placeholder e.g. j.doe @@ -7358,7 +7358,7 @@ Element 3 obsolete obsolete - + user.firstName.placeholder e.g John @@ -7368,7 +7368,7 @@ Element 3 obsolete obsolete - + user.lastName.placeholder e.g. Doe @@ -7378,7 +7378,7 @@ Element 3 obsolete obsolete - + user.email.placeholder j.doe@ecorp.com @@ -7388,7 +7388,7 @@ Element 3 obsolete obsolete - + user.department.placeholder e.g. Development @@ -7398,7 +7398,7 @@ Element 3 obsolete obsolete - + user.settings.pw_new.label New password @@ -7408,7 +7408,7 @@ Element 3 obsolete obsolete - + user.settings.pw_confirm.label Confirm new password @@ -7418,7 +7418,7 @@ Element 3 obsolete obsolete - + user.edit.needs_pw_change User needs to change password @@ -7428,7 +7428,7 @@ Element 3 obsolete obsolete - + user.edit.user_disabled User disabled (no login possible) @@ -7438,7 +7438,7 @@ Element 3 obsolete obsolete - + user.create Create user @@ -7448,7 +7448,7 @@ Element 3 obsolete obsolete - + user.edit.save Save @@ -7458,7 +7458,7 @@ Element 3 obsolete obsolete - + entity.edit.reset Discard changes @@ -7469,7 +7469,7 @@ Element 3 obsolete obsolete - + part.withdraw.btn Withdraw @@ -7480,7 +7480,7 @@ Element 3 obsolete obsolete - + part.withdraw.comment: Comment/Purpose @@ -7491,7 +7491,7 @@ Element 3 obsolete obsolete - + part.add.caption Add parts @@ -7502,7 +7502,7 @@ Element 3 obsolete obsolete - + part.add.btn Add @@ -7513,7 +7513,7 @@ Element 3 obsolete obsolete - + part.add.comment Comment/Purpose @@ -7524,7 +7524,7 @@ Element 3 obsolete obsolete - + admin.comment Notes @@ -7535,7 +7535,7 @@ Element 3 obsolete obsolete - + manufacturer_url.label Manufacturer link @@ -7546,7 +7546,7 @@ Element 3 obsolete obsolete - + part.description.placeholder e.g. NPN 45V 0,1A 0,5W @@ -7557,7 +7557,7 @@ Element 3 obsolete obsolete - + part.instock.placeholder e.g. 10 @@ -7568,7 +7568,7 @@ Element 3 obsolete obsolete - + part.mininstock.placeholder e.g. 5 @@ -7578,7 +7578,7 @@ Element 3 obsolete obsolete - + part.order.price_per Price per @@ -7588,7 +7588,7 @@ Element 3 obsolete obsolete - + part.withdraw.caption Withdraw parts @@ -7598,7 +7598,7 @@ Element 3 obsolete obsolete - + datatable.datatable.lengthMenu _MENU_ @@ -7608,7 +7608,7 @@ Element 3 obsolete obsolete - + perm.group.parts Parts @@ -7618,7 +7618,7 @@ Element 3 obsolete obsolete - + perm.group.structures Data structures @@ -7628,7 +7628,7 @@ Element 3 obsolete obsolete - + perm.group.system System @@ -7638,7 +7638,7 @@ Element 3 obsolete obsolete - + perm.parts Parts @@ -7648,7 +7648,7 @@ Element 3 obsolete obsolete - + perm.read View @@ -7658,7 +7658,7 @@ Element 3 obsolete obsolete - + perm.edit Edit @@ -7668,7 +7668,7 @@ Element 3 obsolete obsolete - + perm.create Create @@ -7678,7 +7678,7 @@ Element 3 obsolete obsolete - + perm.part.move Change category @@ -7688,7 +7688,7 @@ Element 3 obsolete obsolete - + perm.delete Delete @@ -7698,7 +7698,7 @@ Element 3 obsolete obsolete - + perm.part.search Search @@ -7708,7 +7708,7 @@ Element 3 obsolete obsolete - + perm.part.all_parts List all parts @@ -7718,7 +7718,7 @@ Element 3 obsolete obsolete - + perm.part.no_price_parts List parts without price info @@ -7728,7 +7728,7 @@ Element 3 obsolete obsolete - + perm.part.obsolete_parts List obsolete parts @@ -7738,7 +7738,7 @@ Element 3 obsolete obsolete - + perm.part.unknown_instock_parts Show parts with unknown instock @@ -7748,7 +7748,7 @@ Element 3 obsolete obsolete - + perm.part.change_favorite Change favorite status @@ -7758,7 +7758,7 @@ Element 3 obsolete obsolete - + perm.part.show_favorite List favorite parts @@ -7768,7 +7768,7 @@ Element 3 obsolete obsolete - + perm.part.show_last_edit_parts Show last edited/added parts @@ -7778,7 +7778,7 @@ Element 3 obsolete obsolete - + perm.part.show_users Show last modifying user @@ -7788,7 +7788,7 @@ Element 3 obsolete obsolete - + perm.part.show_history Show history @@ -7798,7 +7798,7 @@ Element 3 obsolete obsolete - + perm.part.name Name @@ -7808,7 +7808,7 @@ Element 3 obsolete obsolete - + perm.part.description Description @@ -7818,7 +7818,7 @@ Element 3 obsolete obsolete - + perm.part.instock Instock @@ -7828,7 +7828,7 @@ Element 3 obsolete obsolete - + perm.part.mininstock Minimum instock @@ -7838,7 +7838,7 @@ Element 3 obsolete obsolete - + perm.part.comment Notes @@ -7848,7 +7848,7 @@ Element 3 obsolete obsolete - + perm.part.storelocation Storage location @@ -7858,7 +7858,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturer Manufacturer @@ -7868,7 +7868,7 @@ Element 3 obsolete obsolete - + perm.part.orderdetails Order information @@ -7878,7 +7878,7 @@ Element 3 obsolete obsolete - + perm.part.prices Prices @@ -7888,7 +7888,7 @@ Element 3 obsolete obsolete - + perm.part.attachments File attachments @@ -7898,7 +7898,7 @@ Element 3 obsolete obsolete - + perm.part.order Orders @@ -7908,7 +7908,7 @@ Element 3 obsolete obsolete - + perm.storelocations Storage locations @@ -7918,7 +7918,7 @@ Element 3 obsolete obsolete - + perm.move Move @@ -7928,7 +7928,7 @@ Element 3 obsolete obsolete - + perm.list_parts List parts @@ -7938,7 +7938,7 @@ Element 3 obsolete obsolete - + perm.part.footprints Footprints @@ -7948,7 +7948,7 @@ Element 3 obsolete obsolete - + perm.part.categories Categories @@ -7958,7 +7958,7 @@ Element 3 obsolete obsolete - + perm.part.supplier Suppliers @@ -7968,7 +7968,7 @@ Element 3 obsolete obsolete - + perm.part.manufacturers Manufacturers @@ -7978,7 +7978,7 @@ Element 3 obsolete obsolete - + perm.projects Projects @@ -7988,7 +7988,7 @@ Element 3 obsolete obsolete - + perm.part.attachment_types Attachment types @@ -7998,7 +7998,7 @@ Element 3 obsolete obsolete - + perm.tools.import Import @@ -8008,7 +8008,7 @@ Element 3 obsolete obsolete - + perm.tools.labels Labels @@ -8018,7 +8018,7 @@ Element 3 obsolete obsolete - + perm.tools.calculator Resistor calculator @@ -8028,7 +8028,7 @@ Element 3 obsolete obsolete - + perm.tools.footprints Footprints @@ -8038,7 +8038,7 @@ Element 3 obsolete obsolete - + perm.tools.ic_logos IC logos @@ -8048,7 +8048,7 @@ Element 3 obsolete obsolete - + perm.tools.statistics Statistics @@ -8058,7 +8058,7 @@ Element 3 obsolete obsolete - + perm.edit_permissions Edit permissions @@ -8068,7 +8068,7 @@ Element 3 obsolete obsolete - + perm.users.edit_user_name Edit user name @@ -8078,7 +8078,7 @@ Element 3 obsolete obsolete - + perm.users.edit_change_group Change group @@ -8088,7 +8088,7 @@ Element 3 obsolete obsolete - + perm.users.edit_infos Edit info @@ -8098,7 +8098,7 @@ Element 3 obsolete obsolete - + perm.users.edit_permissions Edit permissions @@ -8108,7 +8108,7 @@ Element 3 obsolete obsolete - + perm.users.set_password Set password @@ -8118,7 +8118,7 @@ Element 3 obsolete obsolete - + perm.users.change_user_settings Change user settings @@ -8128,7 +8128,7 @@ Element 3 obsolete obsolete - + perm.database.see_status Show status @@ -8138,7 +8138,7 @@ Element 3 obsolete obsolete - + perm.database.update_db Update DB @@ -8148,7 +8148,7 @@ Element 3 obsolete obsolete - + perm.database.read_db_settings Read DB settings @@ -8158,7 +8158,7 @@ Element 3 obsolete obsolete - + perm.database.write_db_settings Write DB settings @@ -8168,7 +8168,7 @@ Element 3 obsolete obsolete - + perm.config.read_config Read config @@ -8178,7 +8178,7 @@ Element 3 obsolete obsolete - + perm.config.edit_config Edit config @@ -8188,7 +8188,7 @@ Element 3 obsolete obsolete - + perm.config.server_info Server info @@ -8198,7 +8198,7 @@ Element 3 obsolete obsolete - + perm.config.use_debug Use debug tools @@ -8208,7 +8208,7 @@ Element 3 obsolete obsolete - + perm.show_logs Show logs @@ -8218,7 +8218,7 @@ Element 3 obsolete obsolete - + perm.delete_logs Delete logs @@ -8228,7 +8228,7 @@ Element 3 obsolete obsolete - + perm.self.edit_infos Edit info @@ -8238,7 +8238,7 @@ Element 3 obsolete obsolete - + perm.self.edit_username Edit username @@ -8248,7 +8248,7 @@ Element 3 obsolete obsolete - + perm.self.show_permissions View permissions @@ -8258,7 +8258,7 @@ Element 3 obsolete obsolete - + perm.self.show_logs Show own log entries @@ -8268,7 +8268,7 @@ Element 3 obsolete obsolete - + perm.self.create_labels Create labels @@ -8278,7 +8278,7 @@ Element 3 obsolete obsolete - + perm.self.edit_options Edit options @@ -8288,7 +8288,7 @@ Element 3 obsolete obsolete - + perm.self.delete_profiles Delete profiles @@ -8298,7 +8298,7 @@ Element 3 obsolete obsolete - + perm.self.edit_profiles Edit profiles @@ -8308,7 +8308,7 @@ Element 3 obsolete obsolete - + perm.part.tools Tools @@ -8318,7 +8318,7 @@ Element 3 obsolete obsolete - + perm.groups Groups @@ -8328,7 +8328,7 @@ Element 3 obsolete obsolete - + perm.users Users @@ -8338,7 +8338,7 @@ Element 3 obsolete obsolete - + perm.database Database @@ -8348,7 +8348,7 @@ Element 3 obsolete obsolete - + perm.config Configuration @@ -8358,7 +8358,7 @@ Element 3 obsolete obsolete - + perm.system System @@ -8368,7 +8368,7 @@ Element 3 obsolete obsolete - + perm.self Own user @@ -8378,7 +8378,7 @@ Element 3 obsolete obsolete - + perm.labels Labels @@ -8388,7 +8388,7 @@ Element 3 obsolete obsolete - + perm.part.category Category @@ -8398,7 +8398,7 @@ Element 3 obsolete obsolete - + perm.part.minamount Minimum amount @@ -8408,7 +8408,7 @@ Element 3 obsolete obsolete - + perm.part.footprint Footprint @@ -8418,7 +8418,7 @@ Element 3 obsolete obsolete - + perm.part.mpn MPN @@ -8428,7 +8428,7 @@ Element 3 obsolete obsolete - + perm.part.status Manufacturing status @@ -8438,7 +8438,7 @@ Element 3 obsolete obsolete - + perm.part.tags Tags @@ -8448,7 +8448,7 @@ Element 3 obsolete obsolete - + perm.part.unit Part unit @@ -8458,7 +8458,7 @@ Element 3 obsolete obsolete - + perm.part.mass Mass @@ -8468,7 +8468,7 @@ Element 3 obsolete obsolete - + perm.part.lots Part lots @@ -8478,7 +8478,7 @@ Element 3 obsolete obsolete - + perm.show_users Show last modifying user @@ -8488,7 +8488,7 @@ Element 3 obsolete obsolete - + perm.currencies Currencies @@ -8498,7 +8498,7 @@ Element 3 obsolete obsolete - + perm.measurement_units Measurement unit @@ -8508,7 +8508,7 @@ Element 3 obsolete obsolete - + user.settings.pw_old.label Old password @@ -8518,7 +8518,7 @@ Element 3 obsolete obsolete - + pw_reset.submit Reset password @@ -8528,7 +8528,7 @@ Element 3 obsolete obsolete - + u2f_two_factor Security key (U2F) @@ -8538,13 +8538,13 @@ Element 3 obsolete obsolete - + google Google - + tfa.provider.webauthn_two_factor_provider Security key @@ -8554,7 +8554,7 @@ Element 3 obsolete obsolete - + tfa.provider.google Authenticator app @@ -8564,7 +8564,7 @@ Element 3 obsolete obsolete - + Login successful Login successful @@ -8574,7 +8574,7 @@ Element 3 obsolete obsolete - + log.type.exception Unhandled exception (obsolete) @@ -8584,7 +8584,7 @@ Element 3 obsolete obsolete - + log.type.user_login User login @@ -8594,7 +8594,7 @@ Element 3 obsolete obsolete - + log.type.user_logout User logout @@ -8604,7 +8604,7 @@ Element 3 obsolete obsolete - + log.type.unknown Unknown @@ -8614,7 +8614,7 @@ Element 3 obsolete obsolete - + log.type.element_created Element created @@ -8624,7 +8624,7 @@ Element 3 obsolete obsolete - + log.type.element_edited Element edited @@ -8634,7 +8634,7 @@ Element 3 obsolete obsolete - + log.type.element_deleted Element deleted @@ -8644,7 +8644,7 @@ Element 3 obsolete obsolete - + log.type.database_updated Database updated @@ -8653,7 +8653,7 @@ Element 3 obsolete - + perm.revert_elements Revert element @@ -8662,7 +8662,7 @@ Element 3 obsolete - + perm.show_history Show history @@ -8671,7 +8671,7 @@ Element 3 obsolete - + perm.tools.lastActivity Show last activity @@ -8680,7 +8680,7 @@ Element 3 obsolete - + perm.tools.timeTravel Show old element versions (time travel) @@ -8689,7 +8689,7 @@ Element 3 obsolete - + tfa_u2f.key_added_successful Security key added successfully. @@ -8698,7 +8698,7 @@ Element 3 obsolete - + Username Username @@ -8707,7 +8707,7 @@ Element 3 obsolete - + log.type.security.google_disabled Authenticator App disabled @@ -8716,7 +8716,7 @@ Element 3 obsolete - + log.type.security.u2f_removed Security key removed @@ -8725,7 +8725,7 @@ Element 3 obsolete - + log.type.security.u2f_added Security key added @@ -8734,7 +8734,7 @@ Element 3 obsolete - + log.type.security.backup_keys_reset Backup keys regenerated @@ -8743,7 +8743,7 @@ Element 3 obsolete - + log.type.security.google_enabled Authenticator App enabled @@ -8752,7 +8752,7 @@ Element 3 obsolete - + log.type.security.password_changed Password changed @@ -8761,7 +8761,7 @@ Element 3 obsolete - + log.type.security.trusted_device_reset Trusted devices resetted @@ -8770,7 +8770,7 @@ Element 3 obsolete - + log.type.collection_element_deleted Element of Collection deleted @@ -8779,7 +8779,7 @@ Element 3 obsolete - + log.type.security.password_reset Password reset @@ -8788,7 +8788,7 @@ Element 3 obsolete - + log.type.security.2fa_admin_reset Two Factor Reset by Administrator @@ -8797,7 +8797,7 @@ Element 3 obsolete - + log.type.user_not_allowed Unauthorized access attempt @@ -8806,7 +8806,7 @@ Element 3 obsolete - + log.database_updated.success Success @@ -8815,7 +8815,7 @@ Element 3 obsolete - + label_options.barcode_type.2D 2D @@ -8824,7 +8824,7 @@ Element 3 obsolete - + label_options.barcode_type.1D 1D @@ -8833,7 +8833,7 @@ Element 3 obsolete - + perm.part.parameters Parameters @@ -8842,7 +8842,7 @@ Element 3 obsolete - + perm.attachment_show_private View private attachments @@ -8851,7 +8851,7 @@ Element 3 obsolete - + perm.tools.label_scanner Label scanner @@ -8860,7 +8860,7 @@ Element 3 obsolete - + perm.self.read_profiles Read profiles @@ -8869,7 +8869,7 @@ Element 3 obsolete - + perm.self.create_profiles Create profiles @@ -8878,2551 +8878,2551 @@ Element 3 obsolete - + perm.labels.use_twig Use twig mode - + label_profile.showInDropdown Show in quick select - + group.edit.enforce_2fa Enforce Two-factor authentication (2FA) - + group.edit.enforce_2fa.help If this option is enabled, every direct member of this group, has to configure at least one second-factor for authentication. Recommended for administrative groups with much permissions. - + selectpicker.empty Nothing selected - + selectpicker.nothing_selected Nothing selected - + entity.delete.must_not_contain_parts Element "%PATH%" still contains parts! You have to move the parts, to be able to delete this element. - + entity.delete.must_not_contain_attachments Attachment type still contains attachments. Change their type, to be able to delete this attachment type. - + entity.delete.must_not_contain_prices Currency still contains price details. You have to change their currency to be able to delete this element. - + entity.delete.must_not_contain_users Users still uses this group! Change their group, to be able to delete this group. - + part.table.edit Edit - + part.table.edit.title Edit part - + part_list.action.action.title Select action - + part_list.action.action.group.favorite Favorite status - + part_list.action.action.favorite Favorite - + part_list.action.action.unfavorite Unfavorite - + part_list.action.action.group.change_field Change field - + part_list.action.action.change_category Change category - + part_list.action.action.change_footprint Change footprint - + part_list.action.action.change_manufacturer Change manufacturer - + part_list.action.action.change_unit Change part unit - + part_list.action.action.delete Delete - + part_list.action.submit Submit - + part_list.action.part_count %count% parts selected! - + company.edit.quick.website Open website - + company.edit.quick.email Send email - + company.edit.quick.phone Call phone - + company.edit.quick.fax Send fax - + company.fax_number.placeholder e.g. +49 1234 567890 - + part.edit.save_and_clone Save and clone - + validator.file_ext_not_allowed File extension not allowed for this attachment type. - + tools.reel_calc.title SMD Reel calculator - + tools.reel_calc.inner_dia Inner diameter - + tools.reel_calc.outer_dia Outer diameter - + tools.reel_calc.tape_thick Tape thickness - + tools.reel_calc.part_distance Part distance - + tools.reel_calc.update Update - + tools.reel_calc.parts_per_meter Parts per meter - + tools.reel_calc.result_length Tape length - + tools.reel_calc.result_amount Approx. parts count - + tools.reel_calc.outer_greater_inner_error Error: Outer diameter must be greater than inner diameter! - + tools.reel_calc.missing_values.error Please fill in all values! - + tools.reel_calc.load_preset Load preset - + tools.reel_calc.explanation This calculator gives you an estimation, how many parts are remaining on an SMD reel. Measure the noted the dimensions on the reel (or use some of the presets) and click "Update" to get an result. - + perm.tools.reel_calculator SMD Reel calculator - + tree.tools.tools.reel_calculator SMD Reel calculator - + user.pw_change_needed.flash Your password needs to be changed! Please set a new password. - + tree.root_node.text Root node - + part_list.action.select_null Empty element - + part_list.action.delete-title Do you really want to delete these parts? - + part_list.action.delete-message These parts and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone! - + part.table.actions.success Actions finished successfully. - + attachment.edit.delete.confirm Do you really want to delete this attachment? - + filter.text_constraint.value.operator.EQ Is - + filter.text_constraint.value.operator.NEQ Is not - + filter.text_constraint.value.operator.STARTS Starts with - + filter.text_constraint.value.operator.CONTAINS Contains - + filter.text_constraint.value.operator.ENDS Ends with - + filter.text_constraint.value.operator.LIKE LIKE pattern - + filter.text_constraint.value.operator.REGEX Regular expression - + filter.number_constraint.value.operator.BETWEEN Between - + filter.number_constraint.AND and - + filter.entity_constraint.operator.EQ Is (excluding children) - + filter.entity_constraint.operator.NEQ Is not (excluding children) - + filter.entity_constraint.operator.INCLUDING_CHILDREN Is (including children) - + filter.entity_constraint.operator.EXCLUDING_CHILDREN Is not (excluding children) - + part.filter.dbId Database ID - + filter.tags_constraint.operator.ANY Any of the tags - + filter.tags_constraint.operator.ALL All the tags - + filter.tags_constraint.operator.NONE None of the tags - + part.filter.lot_count Number of lots - + part.filter.attachments_count Number of attachments - + part.filter.orderdetails_count Number of orderdetails - + part.filter.lotExpirationDate Lot expiration date - + part.filter.lotNeedsRefill Any lot needs refill - + part.filter.lotUnknwonAmount Any lot has unknown amount - + part.filter.attachmentName Attachment name - + filter.choice_constraint.operator.ANY Any of - + filter.choice_constraint.operator.NONE None of - + part.filter.amount_sum Total amount - + filter.submit Update - + filter.discard Discard changes - + filter.clear_filters Clear all filters - + filter.title Filter - + filter.parameter_value_constraint.operator.= Typ. Value = - + filter.parameter_value_constraint.operator.!= Typ. Value != - + filter.parameter_value_constraint.operator.< - + Typ. Value < - + filter.parameter_value_constraint.operator.> - ]]> + Typ. Value > - + filter.parameter_value_constraint.operator.<= - + Typ. Value <= - + filter.parameter_value_constraint.operator.>= - =]]> + Typ. Value >= - + filter.parameter_value_constraint.operator.BETWEEN Typ. Value is between - + filter.parameter_value_constraint.operator.IN_RANGE In Value range - + filter.parameter_value_constraint.operator.NOT_IN_RANGE Not in Value range - + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE Greater than Value range - + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE Greater equal than Value range - + filter.parameter_value_constraint.operator.LESS_THAN_RANGE Less than Value range - + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE Less equal than Value range - + filter.parameter_value_constraint.operator.RANGE_IN_RANGE Range is completely in Value range - + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE Range intersects Value range - + filter.text_constraint.value No value set - + filter.number_constraint.value1 No value set - + filter.number_constraint.value2 Maximum value - + filter.datetime_constraint.value1 No datetime set - + filter.datetime_constraint.value2 Maximum datetime - + filter.constraint.add Add constraint - + part.filter.parameters_count Number of parameters - + part.filter.lotDescription Lot description - + parts_list.search.searching_for - %keyword%]]> + Searching parts with keyword <b>%keyword%</b> - + parts_list.search_options.caption Enabled search options - + attachment.table.element_type Associated element type - + log.level.debug Debug - + log.level.info Info - + log.level.notice Notice - + log.level.warning Warning - + log.level.error Error - + log.level.critical Critical - + log.level.alert Alert - + log.level.emergency Emergency - + log.type.security Security related event - + log.type.instock_changed [LEGACY] Instock changed - + log.target_id Target element ID - + entity.info.parts_count_recursive Number of parts with this element or its sub elements - + tools.server_infos.title Server info - + permission.preset.read_only Read-Only - + permission.preset.read_only.desc Only allow read operations on data - + permission.preset.all_inherit Inherit all - + permission.preset.all_inherit.desc Set all permissions to Inherit - + permission.preset.all_forbid Forbid all - + permission.preset.all_forbid.desc Set all permissions to Forbid - + permission.preset.all_allow Allow all - + permission.preset.all_allow.desc Set all permissions to allow - + perm.server_infos Server info - + permission.preset.editor Editor - + permission.preset.editor.desc Allow changing parts and data structures - + permission.preset.admin Admin - + permission.preset.admin.desc Allow administrative actions - + permission.preset.button Apply preset - + perm.attachments.show_private Show private attachments - + perm.attachments.list_attachments Show list of all attachments - + user.edit.permission_success Permission preset applied successfully. Check if the new permissions fit your needs. - + perm.group.data Data - + part_list.action.action.group.needs_review Needs Review - + part_list.action.action.set_needs_review Set Needs Review Status - + part_list.action.action.unset_needs_review Unset Needs Review Status - + part.edit.ipn Internal Part Number (IPN) - + part.ipn.not_defined Not defined - + part.table.ipn IPN - + currency.edit.update_rate Retrieve exchange rate - + currency.edit.exchange_rate_update.unsupported_currency The currency is unsupported by the exchange rate provider. Check your exchange rate provider configuration. - + currency.edit.exchange_rate_update.generic_error Unable to retrieve the exchange rate. Check your exchange rate provider configuration. - + currency.edit.exchange_rate_updated.success Retrieved the exchange rate successfully. - + project.bom.quantity BOM Qty. - + project.bom.mountnames Mount names - + project.bom.name Name - + project.bom.comment Notes - + project.bom.part Part - + project.bom.add_entry Add entry - + part_list.action.group.projects Projects - + part_list.action.projects.add_to_project Add parts to project - + project.bom.delete.confirm Do you really want to delete this BOM entry? - + project.add_parts_to_project Add parts to project BOM - + part.info.add_part_to_project Add this part to a project - + project_bom_entry.label BOM entry - + project.edit.status Project status - + project.status.draft Draft - + project.status.planning Planning - + project.status.in_production In production - + project.status.finished Finished - + project.status.archived Archived - + part.new_build_part.error.build_part_already_exists The project already has a build part! - + project.edit.associated_build_part Associated builds part - + project.edit.associated_build_part.add Add builds part - + project.edit.associated_build.hint This part represents the builds of this project, which are stored somewhere. - + part.info.projectBuildPart.hint This part represents the builds of the following project and is associated with it - + part.is_build_part Is project builds part - + project.info.title Project info - + project.info.bom_entries_count BOM entries - + project.info.sub_projects_count Subprojects - + project.info.bom_add_parts Add BOM entries - + project.info.info.label Info - + project.info.sub_projects.label Subprojects - + project.bom.price Price - + part.info.withdraw_modal.title.withdraw Withdraw parts from lot - + part.info.withdraw_modal.title.add Add parts to lot - + part.info.withdraw_modal.title.move Move parts from lot to another lot - + part.info.withdraw_modal.amount Amount - + part.info.withdraw_modal.move_to Move to - + part.info.withdraw_modal.comment Comment - + part.info.withdraw_modal.comment.hint You can set a comment here describing why you are doing this operation (e.g. for what you need the parts). This info will be saved in the log. - + modal.close Close - + modal.submit Submit - + part.withdraw.success Added/Moved/Withdrawn parts successfully. - + perm.parts_stock Parts Stock - + perm.parts_stock.withdraw Withdraw parts from stock - + perm.parts_stock.add Add parts to stock - + perm.parts_stock.move Move parts between lots - + user.permissions_schema_updated The permission schema of your user were upgraded to the latest version. - + log.type.part_stock_changed Part Stock changed - + log.part_stock_changed.withdraw Stock withdrawn - + log.part_stock_changed.add Stock added - + log.part_stock_changed.move Stock moved - + log.part_stock_changed.comment Comment - + log.part_stock_changed.change Change - + log.part_stock_changed.move_target Move target - + tools.builtin_footprints_viewer.title Builtin footprint image gallery - + tools.builtin_footprints_viewer.hint This gallery lists all available built-in footprint images. If you want to use them in an attachment, type in the name (or a keyword) in the path field of the attachment and select the image from the dropdown select. - + tools.ic_logos.title IC logos - + part_list.action.group.labels Labels - + part_list.action.projects.generate_label Generate labels (for parts) - + part_list.action.projects.generate_label_lot Generate labels (for part lots) - + part_list.action.generate_label.empty Empty label - + project.info.builds.label Build - + project.builds.build_not_possible Build not possible: Parts not stocked - + project.builds.following_bom_entries_miss_instock The following parts have not enough stock to build this project at least once: - + project.builds.stocked stocked - + project.builds.needed needed - + project.builds.build_possible Build possible - + project.builds.number_of_builds_possible - %max_builds% builds of this project.]]> + You have enough stocked to build <b>%max_builds%</b> builds of this project. - + project.builds.check_project_status - "%project_status%". You should check if you really want to build the project with this status!]]> + The current project status is <b>"%project_status%"</b>. You should check if you really want to build the project with this status! - + project.builds.following_bom_entries_miss_instock_n You do not have enough parts stocked to build this project %number_of_builds% times. The following parts have missing instock: - + project.build.flash.invalid_input Can not build project. Check input! - + project.build.required_qty Required quantity - + project.build.btn_build Build - + project.build.help Choose from which part lots the stock to build this project should be taken (and in which amount). Check the checkbox for each BOM Entry, when you are finished withdrawing the parts, or use the top checkbox to check all boxes at once. - + project.build.buildsPartLot.new_lot Create new lot - + project.build.add_builds_to_builds_part Add builds to project builds part - + project.build.builds_part_lot Target lot - + project.builds.number_of_builds Build amount - + project.builds.no_stocked_builds Number of stocked builds - + user.change_avatar.label Change profile picture - + user_settings.change_avatar.label Change profile picture - + user_settings.remove_avatar.label Remove profile picture - + part.edit.name.category_hint Hint from category - + category.edit.partname_regex.placeholder e.g "/Capacitor \d+ nF/i" - + category.edit.partname_regex.help A PCRE-compatible regular expression, which a part name have to match. - + entity.select.add_hint - to create nested structures, e.g. "Node 1->Node 1.1"]]> + Use -> to create nested structures, e.g. "Node 1->Node 1.1" - + entity.select.group.new_not_added_to_DB New (not added to DB yet) - + part.edit.save_and_new Save and create new empty part - + homepage.first_steps.title First steps - + homepage.first_steps.introduction - documentation or start to creating the following data structures:]]> + Your database is still empty. You might want to read the <a href="%url%">documentation</a> or start to creating the following data structures: - + homepage.first_steps.create_part - create a new part.]]> + Or you can directly <a href="%url%">create a new part</a>. - + homepage.first_steps.hide_hint This box will hide as soon as you have created your first part. - + homepage.forum.text - discussion forum]]> + For questions about Part-DB use the <a href="%href%" class="link-external" target="_blank">discussion forum</a> - + log.element_edited.changed_fields.category Category - + log.element_edited.changed_fields.footprint Footprint - + log.element_edited.changed_fields.manufacturer Manufacturer - + log.element_edited.changed_fields.value_typical typ. value - + log.element_edited.changed_fields.pw_reset_expires Password reset - + log.element_edited.changed_fields.comment Notes - + log.element_edited.changed_fields.supplierpartnr Supplier part number - + log.element_edited.changed_fields.supplier_product_url Link to offer - + log.element_edited.changed_fields.price Price - + log.element_edited.changed_fields.min_discount_quantity Minimum discount amount - + log.element_edited.changed_fields.original_filename Original filename - + log.element_edited.changed_fields.path Filepath - + log.element_edited.changed_fields.description Description - + log.element_edited.changed_fields.manufacturing_status Manufacturing status - + log.element_edited.changed_fields.options.barcode_type Barcode type - + log.element_edited.changed_fields.status Status - + log.element_edited.changed_fields.quantity BOM Qty. - + log.element_edited.changed_fields.mountnames Mountnames - + log.element_edited.changed_fields.name Name - + log.element_edited.changed_fields.part Part - + log.element_edited.changed_fields.price_currency Currency of price - + log.element_edited.changed_fields.partname_hint Part name hint - + log.element_edited.changed_fields.partname_regex Name filter - + log.element_edited.changed_fields.disable_footprints Disable footprints - + log.element_edited.changed_fields.disable_manufacturers Disable manufacturers - + log.element_edited.changed_fields.disable_autodatasheets Disable automatic datasheet links - + log.element_edited.changed_fields.disable_properties Disable properties - + log.element_edited.changed_fields.default_description Default description - + log.element_edited.changed_fields.default_comment Default notes - + log.element_edited.changed_fields.filetype_filter Allowed file extensions - + log.element_edited.changed_fields.not_selectable Not selected - + log.element_edited.changed_fields.parent Parent element - + log.element_edited.changed_fields.shipping_costs Shipping costs - + log.element_edited.changed_fields.default_currency Default currency - + log.element_edited.changed_fields.address Address - + log.element_edited.changed_fields.phone_number Phone number - + log.element_edited.changed_fields.fax_number Fax number - + log.element_edited.changed_fields.email_address Email - + log.element_edited.changed_fields.website Website - + log.element_edited.changed_fields.auto_product_url Product URL - + log.element_edited.changed_fields.is_full Storelocation full - + log.element_edited.changed_fields.limit_to_existing_parts Limit to existing parts - + log.element_edited.changed_fields.only_single_part Only single part - + log.element_edited.changed_fields.storage_type Storage type - + log.element_edited.changed_fields.footprint_3d 3D model - + log.element_edited.changed_fields.master_picture_attachment Preview image - + log.element_edited.changed_fields.exchange_rate Exchange rate - + log.element_edited.changed_fields.iso_code Exchange rate - + log.element_edited.changed_fields.unit Unit symbol - + log.element_edited.changed_fields.is_integer Is integer - + log.element_edited.changed_fields.use_si_prefix Use SI prefix - + log.element_edited.changed_fields.options.width Width - + log.element_edited.changed_fields.options.height Height - + log.element_edited.changed_fields.options.supported_element Target type - + log.element_edited.changed_fields.options.additional_css Additional styles (CSS) - + log.element_edited.changed_fields.options.lines Content - + log.element_edited.changed_fields.permissions.data Permissions - + log.element_edited.changed_fields.disabled Disabled - + log.element_edited.changed_fields.theme Theme - + log.element_edited.changed_fields.timezone Timezone - + log.element_edited.changed_fields.language Language - + log.element_edited.changed_fields.email Email - + log.element_edited.changed_fields.department Department - + log.element_edited.changed_fields.last_name Last name - + log.element_edited.changed_fields.first_name First name - + log.element_edited.changed_fields.group Group - + log.element_edited.changed_fields.currency Preferred currency - + log.element_edited.changed_fields.enforce2FA Enforce 2FA - + log.element_edited.changed_fields.symbol Symbol - + log.element_edited.changed_fields.value_min Min. value - + log.element_edited.changed_fields.value_max Max. value - + log.element_edited.changed_fields.value_text Text value - + log.element_edited.changed_fields.show_in_table Show in table - + log.element_edited.changed_fields.attachment_type Show in table - + log.element_edited.changed_fields.needs_review Needs review - + log.element_edited.changed_fields.tags Tags - + log.element_edited.changed_fields.mass Mass - + log.element_edited.changed_fields.ipn IPN - + log.element_edited.changed_fields.favorite Favorite - + log.element_edited.changed_fields.minamount Minimum stock - + log.element_edited.changed_fields.manufacturer_product_url Link to product page - + log.element_edited.changed_fields.manufacturer_product_number MPN - + log.element_edited.changed_fields.partUnit Measuring Unit - + log.element_edited.changed_fields.expiration_date Expiration date - + log.element_edited.changed_fields.amount Amount - + log.element_edited.changed_fields.storage_location Storage location - + attachment.max_file_size Maximum file size - + user.saml_user SSO / SAML user - + user.saml_user.pw_change_hint Your user uses single sign-on (SSO). You can not change the password and 2FA settings here. Configure them on your central SSO provider instead! - + login.sso_saml_login Single Sign-On Login (SSO) - + login.local_login_hint The form below is only for log in with a local user. If you want to log in via single sign-on, press the button above. - + part_list.action.action.export Export parts - + part_list.action.export_json Export to JSON - + part_list.action.export_csv Export to CSV - + part_list.action.export_yaml Export to YAML - + part_list.action.export_xml Export to XML - + parts.import.title Import parts - + parts.import.errors.title Import violations - + parts.import.flash.error Errors during import. This is most likely caused by some invalid data. - + parts.import.format.auto Automatic (based on file extension) - + parts.import.flash.error.unknown_format Could not determine the format from the given file! - + parts.import.flash.error.invalid_file File invalid. Please check that you have selected the right format! - + parts.import.part_category.label Category override - + parts.import.part_category.help If you select a value here, all imported parts will be assigned to this category. No matter what was set in the data. - + import.create_unknown_datastructures Create unknown datastructures - + import.create_unknown_datastructures.help If this is selected, datastructures (like categories, footprints, etc.) which does not exist in the database yet, will be automatically created. If this is not selected, only existing data structures will be used, and if no matching data structure is found, the part will get assigned nothing - + import.path_delimiter Path delimiter - + import.path_delimiter.help The delimiter used to mark different levels in data structure pathes like category, footprint, etc. - + parts.import.help_documentation - documentation for more information on the file format.]]> + See the <a href="%link%">documentation</a> for more information on the file format. - + parts.import.help You can import parts from existing files with this tool. The parts will be directly written to database, so please check your file beforehand for correct content before uploading it here. - + parts.import.flash.success Part import successful! - + parts.import.errors.imported_entities Imported parts - + perm.import Import data - + parts.import.part_needs_review.label Mark all imported parts as "Needs review" - + parts.import.part_needs_review.help If this option is selected, then all parts will be marked as "Needs review", no matter what was set in the data. - + project.bom_import.flash.success Imported %count% BOM entries successfully. - + project.bom_import.type Type - + project.bom_import.type.kicad_pcbnew KiCAD Pcbnew BOM (CSV file) - + project.bom_import.clear_existing_bom Clear existing BOM entries before importing - + project.bom_import.clear_existing_bom.help Selecting this option will remove all existing BOM entries in the project and overwrite them with the imported BOM file! - + project.bom_import.flash.invalid_file File could not be imported. Please check that you have selected the right file type. Error message: %message% - + project.bom_import.flash.invalid_entries Validation error! Please check your data! - + project.import_bom Import BOM for project - + project.edit.bom.import_bom Import BOM - + measurement_unit.new New Measurement Unit - + measurement_unit.edit Edit Measurement Unit - + user.aboutMe.label About Me - + storelocation.owner.label Owner - + storelocation.part_owner_must_match.label Part Lot owner must match storage location owner - + part_lot.owner Owner - + part_lot.owner.help Only the owner can withdraw or add stock to this lot. - + log.element_edited.changed_fields.owner Owner - + log.element_edited.changed_fields.instock_unknown Amount unknown - + log.element_edited.changed_fields.needs_refill Refill needed - + part.withdraw.access_denied Not allowed to do the desired action. Please check your permissions and the owner of the part lots. - + part.info.amount.less_than_desired Less than desired - + log.cli_user CLI user - + log.element_edited.changed_fields.part_owner_must_match Part owner must match storage location owner - + part.filter.lessThanDesired - + In stock less than desired (total amount < min. amount) - + part.filter.lotOwner Lot owner - + user.show_email_on_profile.label Show email on public profile page - + log.details.title Log details - + log.user_login.login_from_ip Login from IP address - + log.user_login.ip_anonymize_hint If the last digits of the IP address are missing, then the GPDR mode is enabled, in which IP addresses are anynomized. - + log.user_not_allowed.unauthorized_access_attempt_to Unauthorized access attempt to page - + log.user_not_allowed.hint The request was blocked. No action should be required. - + log.no_comment No comment - + log.element_changed.field Field - + log.element_changed.data_before Data before change - + error_table.error An error occured during your request. - + part.table.invalid_regex Invalid regular expression (regex) - + log.element_changed.data_after Data after change - + log.element_changed.diff Difference - + log.undo.undo.short Undo - + log.undo.revert.short Revert to this timestamp - + log.view_version View version - + log.undo.undelete.short Undelete - + log.element_edited.changed_fields.id ID - + log.element_edited.changed_fields.id_owner Owner - + log.element_edited.changed_fields.parent_id Parent - + log.details.delete_entry Delete log entry - + log.delete.message.title Do you really want to delete the log entry? - + log.delete.message If this is an element history entry, this breaks the element history! This can lead to unexpected results when using the time travel function. - + log.collection_deleted.on_collection on Collection - + log.element_edited.changed_fields.attachments Attachments - + tfa_u2f.add_key.registration_error An error occurred during the registration of the security key. Try again or use another security key! - + log.target_type.none None - + ui.darkmode.light Light - + ui.darkmode.dark Dark - + ui.darkmode.auto Auto (decide based on system settings) - + label_generator.no_lines_given No text content given! The labels will remain empty. - + user.password_strength.very_weak Very weak - + user.password_strength.weak Weak - + user.password_strength.medium Medium - + user.password_strength.strong Strong - + user.password_strength.very_strong Very strong - + perm.users.impersonate Impersonate other users - + user.impersonated_by.label Impersonated by - + user.stop_impersonation Stop impersonation - + user.impersonate.btn Impersonate - + user.impersonate.confirm.title Do you really want to impersonate this user? - + user.impersonate.confirm.message This will be logged. You should only do this with a good reason. @@ -11430,769 +11430,769 @@ Please note, that you can not impersonate a disabled user. If you try you will g - + log.type.security.user_impersonated User impersonated - + info_providers.providers_list.title Information providers - + info_providers.providers_list.active Active - + info_providers.providers_list.disabled Disabled - + info_providers.capabilities.basic Basic - + info_providers.capabilities.footprint Footprint - + info_providers.capabilities.picture Picture - + info_providers.capabilities.datasheet Datasheets - + info_providers.capabilities.price Prices - + part.info_provider_reference.badge The information provider used to create this part. - + part.info_provider_reference Created by Information provider - + oauth_client.connect.btn Connect OAuth - + info_providers.table.provider.label Provider - + info_providers.search.keyword Keyword - + info_providers.search.submit Search - + info_providers.search.providers.help Select the providers in which should be searched. - + info_providers.search.providers Providers - + info_providers.search.info_providers_list Show all available info providers - + info_providers.search.title Create parts from info provider - + oauth_client.flash.connection_successful Connected to OAuth application successfully! - + perm.part.info_providers Info providers - + perm.part.info_providers.create_parts Create parts from info provider - + entity.edit.alternative_names.label Alternative names - + entity.edit.alternative_names.help The alternative names given here, are used to find this element based on the results of the information providers. - + info_providers.form.help_prefix Provider - + update_manager.new_version_available.title New version available - + update_manager.new_version_available.text A new version of Part-DB is available. Check it out here - + update_manager.new_version_available.only_administrators_can_see Only administrators can see this message. - + perm.system.show_available_updates Show available Part-DB updates - + user.settings.api_tokens API tokens - + user.settings.api_tokens.description Using an API token, other applications can access Part-DB with your user rights, to perform various actions using the Part-DB REST API. If you delete an API token here, the application, which uses the token, will no longer be able to access Part-DB on your behalf. - + api_tokens.name Name - + api_tokens.access_level Access level - + api_tokens.expiration_date Expiration date - + api_tokens.added_date Added at - + api_tokens.last_time_used Last time used - + datetime.never Never - + api_token.valid Valid - + api_token.expired Expired - + user.settings.show_api_documentation Show API documentation - + api_token.create_new Create new API token - + api_token.level.read_only Read-Only - + api_token.level.edit Edit - + api_token.level.admin Admin - + api_token.level.full Full - + api_tokens.access_level.help You can restrict, what the API token can access. The access is always limited by the permissions of your user. - + api_tokens.expiration_date.help After this date, the token is not usable anymore. Leave empty if the token should never expire. - + api_tokens.your_token_is Your API token is - + api_tokens.please_save_it Please save it. You will not be able to see it again! - + api_tokens.create_new.back_to_user_settings Back to user settings - + project.build.dont_check_quantity Do not check quantities - + project.build.dont_check_quantity.help If this option is selected, the given withdraw quantities are used as given, no matter if more or less parts are actually required to build this project. - + part_list.action.invert_selection Invert selection - + perm.api API - + perm.api.access_api Access API - + perm.api.manage_tokens Manage API tokens - + user.settings.api_tokens.delete.title Do you really want to delete this API token? - + user.settings.api_tokens.delete Delete - + user.settings.api_tokens.delete.message The application, which uses this API token, will no longer have access to Part-DB. This action can not be undone! - + api_tokens.deleted API token deleted successfully! - + user.settings.api_tokens.no_api_tokens_yet No API tokens configured yet. - + api_token.ends_with Ends with - + entity.select.creating_new_entities_not_allowed You are not allowed to create new entities of this type! Please choose a pre-existing one. - + scan_dialog.mode Barcode type - + scan_dialog.mode.auto Auto detect - + scan_dialog.mode.ipn IPN barcode - + scan_dialog.mode.internal Part-DB barcode - + part_association.label Part association - + part.edit.tab.associations Associated parts - + part_association.edit.other_part Associated part - + part_association.edit.type Relation Type - + part_association.edit.comment Notes - + part_association.edit.type.help You can select here, how the chosen part is related to this part. - + part_association.table.from_this_part Associations from this part to others - + part_association.table.from From - + part_association.table.type Relation - + part_association.table.to To - + part_association.type.compatible Is compatible with - + part_association.table.to_this_part Associations to this part from others - + part_association.type.other Other (custom value) - + part_association.type.supersedes Supersedes - + part_association.edit.other_type Custom type - + part_association.edit.delete.confirm Do you really want to delete this association? This can not be undone. - + part_lot.edit.advanced Expand advanced options - + part_lot.edit.vendor_barcode Vendor barcode - + part_lot.edit.vendor_barcode.help If this lot already have a barcode (e.g. put there by the vendor), you can input its content here, to easily scan it. - + scan_dialog.mode.vendor Vendor barcode (configured in part lot) - + project.bom.instockAmount Stocked amount - + collection_type.new_element.tooltip This element was newly created and was not persisted to the database yet. - + part.merge.title Merge part - + part.merge.title.into into - + part.merge.confirm.title - %other% into %target%?]]> + Do you really want to merge <b>%other%</b> into <b>%target%</b>? - + part.merge.confirm.message - %other% will be deleted, and the part will be saved with the shown information.]]> + <b>%other%</b> will be deleted, and the part will be saved with the shown information. - + part.info.merge_modal.title Merge parts - + part.info.merge_modal.other_part Other part - + part.info.merge_modal.other_into_this Merge other part into this one (delete other part, keep this one) - + part.info.merge_modal.this_into_other Merge this part into other one (delete this part, keep other one) - + part.info.merge_btn Merge part - + part.update_part_from_info_provider.btn Update part from info providers - + info_providers.update_part.title Update existing part from info provider - + part.merge.flash.please_review Data not saved yet. Review the changes and click save to persist the new data. - + user.edit.flash.permissions_fixed Permissions required by other permissions were missing. This was corrected. Please check if the permissions are as you intended. - + permission.legend.dependency_note Please note that some permission operations depend on each other. If you encounter a warning that missing permissions were corrected and a permission was set to allow again, you have to set the dependent operation to forbid too. The dependents can normally found right of an operation. - + log.part_stock_changed.timestamp Timestamp - + part.info.withdraw_modal.timestamp Action timestamp - + part.info.withdraw_modal.timestamp.hint This field allows you to specify the real date, when the stock operation actually was performed, and not just when it was logged. This value is saved in the extra field of the log entry. - + part.info.withdraw_modal.delete_lot_if_empty Delete this lot, if it becomes empty - + info_providers.search.error.client_exception An error occurred while communicating with the information provider. Check the configuration for this provider and refresh the OAuth tokens if possible. - + eda_info.reference_prefix.placeholder e.g. R - + eda_info.reference_prefix Reference prefix - + eda_info.kicad_section.title KiCad specific settings - + eda_info.value Value - + eda_info.value.placeholder e.g. 100n - + eda_info.exclude_from_bom Exclude part from BOM - + eda_info.exclude_from_board Exclude part from PCB/Board - + eda_info.exclude_from_sim Exclude part from simulation - + eda_info.kicad_symbol KiCad schematic symbol - + eda_info.kicad_symbol.placeholder e.g. Transistor_BJT:BC547 - + eda_info.kicad_footprint KiCad footprint - + eda_info.kicad_footprint.placeholder e.g. Package_TO_SOT_THT:TO-92 - + part.edit.tab.eda EDA information - + api.api_endpoints.title API endpoints - + api.api_endpoints.partdb Part-DB API - + api.api_endpoints.kicad_root_url KiCad API root URL - + eda_info.visibility Force visibility - + eda_info.visibility.help By default, the visibility to the EDA software is automatically determined. With this checkbox, you can force the part to be visible or invisible. - + part.withdraw.zero_amount You tried to withdraw/add an amount of zero! No action was performed. - + login.flash.access_denied_please_login Access denied! Please log in to continue. From 2a7c1317860b25f644a05f8271751d3a4410ff70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 26 Jan 2024 00:28:58 +0100 Subject: [PATCH 019/634] New translations messages.en.xlf (German) --- translations/messages.de.xlf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index f08b0a18..1a64251a 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -12187,5 +12187,11 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Sie haben versucht eine Menge von Null zu entnehmen/hinzuzufügen! Es wurde keine Aktion durchgeführt. + + + login.flash.access_denied_please_login + Zugriff verweigert! Bitte melden Sie sich an, um fortzufahren. + + From ee3ad403fb5e2fb8d29674f455a83f3e0e5ab406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 26 Jan 2024 00:36:14 +0100 Subject: [PATCH 020/634] Fixed exception if no content type or accept header are given --- src/Security/AuthenticationEntryPoint.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Security/AuthenticationEntryPoint.php b/src/Security/AuthenticationEntryPoint.php index f99d2118..882bef00 100644 --- a/src/Security/AuthenticationEntryPoint.php +++ b/src/Security/AuthenticationEntryPoint.php @@ -74,6 +74,16 @@ class AuthenticationEntryPoint implements AuthenticationEntryPointInterface $contentType = $request->headers->get('Content-Type'); $accept = $request->headers->get('Accept'); - return str_contains($contentType, 'json') || str_contains($accept, 'json'); + $tmp = false; + + if ($contentType !== null) { + $tmp = str_contains($contentType, 'json'); + } + + if ($accept !== null) { + $tmp = $tmp || str_contains($accept, 'json'); + } + + return $tmp; } } \ No newline at end of file From 4b41e932d2a92dfac1b810bad830f93eaf8b855f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 26 Jan 2024 09:44:31 +0100 Subject: [PATCH 021/634] New translations messages.en.xlf (Czech) --- translations/messages.cs.xlf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index d35e859d..d4f89c82 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -12191,5 +12191,11 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Pokusili jste se vybrat/přidat nulové množství! Nebyla provedena žádná akce.
+ + + login.flash.access_denied_please_login + Přístup odepřen! Pro pokračování se prosím přihlaste. + + From d111905ba00a673b5c7c733e4eb4d7e1771aba20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 27 Jan 2024 20:31:12 +0100 Subject: [PATCH 022/634] Added hint to docs, that the mouser API dont provide all infos availble See issue #503 --- docs/usage/information_provider_system.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index 98d193aa..206b0535 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -187,6 +187,10 @@ the [Mouser API page](https://www.mouser.de/api-home/). You will receive an API token, which you have to put in the Part-DB env configuration (see below): At the registration you choose a country, language and currency in which you want to get the results. +*Attention*: Currently (January 2024) the mouser API seems to be somewhat broken, in the way that it does not return any +information about datasheets and part specifications. Therefore Part-DB can not retrieve them, even if they are shown +at the mouser page. See [issue #503](https://github.com/Part-DB/Part-DB-server/issues/503) for more infos. + Following env configuration options are available: * `PROVIDER_MOUSER_KEY`: The API key you got from Mouser (mandatory) From d720cde693f09b87303547bc55120d384b91b45c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 27 Jan 2024 20:33:27 +0100 Subject: [PATCH 023/634] Upgraded dependencies --- composer.lock | 26 +++++++++---------- yarn.lock | 70 +++++++++++++++++++++++++-------------------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/composer.lock b/composer.lock index f2a599fe..f4f22836 100644 --- a/composer.lock +++ b/composer.lock @@ -937,16 +937,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/ce594cbc39a4866c544f1a970d285ff0548221ad", - "reference": "ce594cbc39a4866c544f1a970d285ff0548221ad", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { @@ -1030,7 +1030,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.3" + "source": "https://github.com/doctrine/dbal/tree/3.8.0" }, "funding": [ { @@ -1046,7 +1046,7 @@ "type": "tidelift" } ], - "time": "2024-01-21T07:53:09+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", @@ -15346,16 +15346,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.2.0", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + "reference": "f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3", + "reference": "f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3", "shasum": "" }, "require": { @@ -15366,7 +15366,7 @@ "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", "squizlabs/php_codesniffer": "~3.5" }, "type": "library", @@ -15391,9 +15391,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.3.0" }, - "time": "2023-04-09T17:37:40+00:00" + "time": "2024-01-27T14:56:43+00:00" }, { "name": "phar-io/manifest", diff --git a/yarn.lock b/yarn.lock index fb9b5ea7..492d820f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1484,19 +1484,19 @@ dependencies: tslib "^2.4.0" -"@formatjs/icu-messageformat-parser@2.7.5": - version "2.7.5" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.5.tgz#6c12c08544eafef874df13b30729daf7b4dbd089" - integrity sha512-zCB53HdGDibh6/2ISEN3TGsFQruQ6gGKMFV94qHNyVrs0tNO6ncKhV0vq0n3Ydz8ipIQ2GaYAvfCoimNOVvKqA== +"@formatjs/icu-messageformat-parser@2.7.6": + version "2.7.6" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz#3d69806de056d2919d53dad895a5ff4851e4e9ff" + integrity sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA== dependencies: "@formatjs/ecma402-abstract" "1.18.2" - "@formatjs/icu-skeleton-parser" "1.7.2" + "@formatjs/icu-skeleton-parser" "1.8.0" tslib "^2.4.0" -"@formatjs/icu-skeleton-parser@1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.2.tgz#ffbdd535c33249635ad0e54a34813194287a1567" - integrity sha512-nlIXVv280bjGW3ail5Np1+xgGKBnMhwQQIivgbk9xX0af8ESQO+y2VW9TOY7mCrs3WH786uVpZlLimXAlXH7SA== +"@formatjs/icu-skeleton-parser@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz#5f3d3a620c687d6f8c180d80d1241e8f213acf79" + integrity sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA== dependencies: "@formatjs/ecma402-abstract" "1.18.2" tslib "^2.4.0" @@ -1781,9 +1781,9 @@ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.41" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" - integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA== + version "4.17.42" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" + integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.6.tgz#6adf4241460e28be53836529c033a41985f85b6e" - integrity sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q== + version "20.11.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.8.tgz#bdb6de1048613c3c6ab6c341c37e8fd1a7860308" + integrity sha512-i7omyekpPTNdv4Jb/Rgqg0RU8YqLcNsI12quKSDkRXNfx7Wxdm6HhK1awT3xTgEkgxPn3bvnSpiEAc7a7Lpyow== dependencies: undici-types "~5.26.4" @@ -2504,12 +2504,12 @@ browserify-optional@^1.0.1: browser-resolve "^1.8.1" browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -2596,7 +2596,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001565: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: version "1.0.30001580" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== @@ -3518,10 +3518,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.601: - version "1.4.646" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.646.tgz#2ed74709d854d5501b32936c9feaaee02c7a9ba5" - integrity sha512-vThkQ0JuF45qT/20KbRgM56lV7IuGt7SjhawQ719PDHzhP84KAO1WJoaxgCoAffKHK47FmVKP1Fqizx7CwK1SA== +electron-to-chromium@^1.4.648: + version "1.4.648" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz#c7b46c9010752c37bb4322739d6d2dd82354fbe4" + integrity sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg== emoji-regex@^8.0.0: version "8.0.0" @@ -3910,9 +3910,9 @@ fastest-levenshtein@1.0.16, fastest-levenshtein@^1.0.12, fastest-levenshtein@^1. integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== + version "1.17.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" + integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== dependencies: reusify "^1.0.4" @@ -4436,13 +4436,13 @@ interpret@^2.2.0: integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== intl-messageformat@^10.2.5: - version "10.5.10" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.10.tgz#638b7a9a4926a04f784dfe6e77104a0c537deb36" - integrity sha512-3yzwX6t/my9WRtNiqP05r+/UkpWxwstQiwaHAiuHmDRt7ykzWJ+nceOVjNLZYYWGiSltY+C+Likd8OIVkASepw== + version "10.5.11" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.11.tgz#95d6a3b0b303f924d5d8c3f8d3ad057d1dc73c64" + integrity sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg== dependencies: "@formatjs/ecma402-abstract" "1.18.2" "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.7.5" + "@formatjs/icu-messageformat-parser" "2.7.6" tslib "^2.4.0" ipaddr.js@1.9.1: @@ -4906,9 +4906,9 @@ marked@4.0.12: integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== marked@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/marked/-/marked-11.1.1.tgz#e1b2407241f744fb1935fac224680874d9aff7a3" - integrity sha512-EgxRjgK9axsQuUa/oKMx5DEY8oXpKJfk61rT5iY3aRlgU6QJtUcxU5OAymdhCvWvhYcd9FKmO5eQoX8m9VGJXg== + version "11.2.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-11.2.0.tgz#fc908aeca962b721b0392ee4205e6f90ebffb074" + integrity sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw== mdn-data@2.0.14: version "2.0.14" From 8018e8687b589aed7853c271d2bcebc9a57b1ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 27 Jan 2024 21:12:21 +0100 Subject: [PATCH 024/634] Unselect a treeview node, if the referenced page changes Related to issue #458 --- .../controllers/elements/tree_controller.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/assets/controllers/elements/tree_controller.js b/assets/controllers/elements/tree_controller.js index d2f21a8e..c9d8b213 100644 --- a/assets/controllers/elements/tree_controller.js +++ b/assets/controllers/elements/tree_controller.js @@ -98,6 +98,7 @@ export default class extends Controller { const node = event.detail.node; if (node.href) { window.Turbo.visit(node.href, {action: "advance"}); + this._registerURLWatcher(node); } }, //onNodeContextmenu: contextmenu_handler, @@ -108,12 +109,40 @@ export default class extends Controller { const treeView = event.detail.treeView; treeView.revealNode(treeView.getSelected()); + //Add the url watcher to all selected nodes + for (const node of treeView.getSelected()) { + this._registerURLWatcher(node); + } + //Add contextmenu event listener to the tree, which allows us to open the links in a new tab with a right click treeView.getTreeElement().addEventListener("contextmenu", this._onContextMenu.bind(this)); }); } + _registerURLWatcher(node) + { + //Register a watcher for a location change, which will unselect the node, if the location changes + const desired_url = node.href; + + //Ensure that the node is unselected, if the location changes + const unselectNode = () => { + //Parse url so we can properly compare them + const desired = new URL(node.href, window.location.origin); + + //We only compare the pathname, because the hash and parameters should not matter + if(window.location.pathname !== desired.pathname) { + node.setSelected(false); + + //Unregister the watcher + document.removeEventListener('turbo:visit', unselectNode); + } + }; + + //Register the watcher via hotwire turbo + document.addEventListener('turbo:visit', unselectNode); + } + _onContextMenu(event) { //Find the node that was clicked and open link in new tab From a161e3a520e1abebaf25fee190bdb953c579d876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 27 Jan 2024 22:22:07 +0100 Subject: [PATCH 025/634] Load the link again when clicking a already selected treeview node, instead of just unselecting it This fixes the somehow unintuitive behavior described in issue #458 --- assets/controllers/elements/tree_controller.js | 3 ++- yarn.lock | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/assets/controllers/elements/tree_controller.js b/assets/controllers/elements/tree_controller.js index c9d8b213..c6575db8 100644 --- a/assets/controllers/elements/tree_controller.js +++ b/assets/controllers/elements/tree_controller.js @@ -132,7 +132,8 @@ export default class extends Controller { //We only compare the pathname, because the hash and parameters should not matter if(window.location.pathname !== desired.pathname) { - node.setSelected(false); + //The ignore parameter is important here, otherwise the node will not be unselected + node.setSelected(false, {silent: true, ignorePreventUnselect: true}); //Unregister the watcher document.removeEventListener('turbo:visit', unselectNode); diff --git a/yarn.lock b/yarn.lock index 492d820f..d566f440 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1534,9 +1534,9 @@ integrity sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g== "@jbtronics/bs-treeview@^1.0.1": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.4.tgz#aecd128c295ebd1af904d9a77f17dbf77a772b8f" - integrity sha512-ofhMY+4w0xYHcMPyw53EzWABzrzX2ecm50hhD9Kbb6h1/XsmLzVvHLIG9FYJ3eaIR0nTYF9a5L7mS14Qr/JChQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.5.tgz#3267138a47624c492e3fa6c94888e5dce78809ab" + integrity sha512-f+IRGnSGa21P7CGmvv5g3cqjC589hDhyc6AHdLj5VXKVqD1EYw5nXdOudgQmTOlqhZa+JGdsfQx8TlFIp313KA== "@jest/schemas@^29.6.3": version "29.6.3" From 3548f12deba7d35bc302424fae628cdfa5602caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 18:30:16 +0100 Subject: [PATCH 026/634] Added info on how to execute commands inside docker container to docs --- docs/usage/console_commands.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/usage/console_commands.md b/docs/usage/console_commands.md index cba9d366..00431a34 100644 --- a/docs/usage/console_commands.md +++ b/docs/usage/console_commands.md @@ -8,11 +8,23 @@ parent: Usage Part-DB provides some console commands to display various information or perform some tasks. The commands are invoked from the main directory of Part-DB with the command `php bin/console [command]` in the context -of the database user (so usually the webserver user), so you maybe have to use `sudo` or `su` to execute the commands. +of the database user (so usually the webserver user), so you maybe have to use `sudo` or `su` to execute the commands: + +```bash +sudo -u www-data php bin/console [command] +``` You can get help for every command with the parameter `--help`. See `php bin/console` for a list of all available commands. +If you are running Part-DB in a docker container, you must either execute the commands from a shell inside a container, +or use the `docker exec` command to execute the command directly inside the container. For example if you docker container +is named `partdb`, you can execute the command `php bin/console cache:clear` with the following command: + +```bash +docker exec --user=www-data partdb php bin/console cache:clear +``` + ## User management commands * `php bin/console partdb:users:list`: List all users of this Part-DB instance From 7ae0fad3563e99bcc51e8e17bbfcd357f4f8fa7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 19:50:59 +0100 Subject: [PATCH 027/634] Allow to create attachments and parameters via PATCH operations on their owning elemens as direct POST operations are not possible yet This partly fixes issue #502 --- src/Entity/Attachments/Attachment.php | 2 +- src/Entity/Attachments/AttachmentType.php | 2 +- src/Entity/Parts/Category.php | 2 +- src/Entity/Parts/Footprint.php | 2 +- src/Entity/Parts/Manufacturer.php | 2 +- src/Entity/Parts/MeasurementUnit.php | 2 +- src/Entity/Parts/Part.php | 2 +- src/Entity/Parts/StorageLocation.php | 2 +- src/Entity/Parts/Supplier.php | 2 +- src/Entity/PriceInformations/Currency.php | 2 +- src/Entity/ProjectSystem/Project.php | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php index 9e367450..4e02e5db 100644 --- a/src/Entity/Attachments/Attachment.php +++ b/src/Entity/Attachments/Attachment.php @@ -153,7 +153,7 @@ abstract class Attachment extends AbstractNamedDBElement #[ORM\ManyToOne(targetEntity: AttachmentType::class, inversedBy: 'attachments_with_type')] #[ORM\JoinColumn(name: 'type_id', nullable: false)] #[Selectable()] - #[Groups(['attachment:read', 'attachment_write'])] + #[Groups(['attachment:read', 'attachment:write'])] protected ?AttachmentType $attachment_type = null; #[Groups(['attachment:read'])] diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php index 241f3d18..d8f00e37 100644 --- a/src/Entity/Attachments/AttachmentType.php +++ b/src/Entity/Attachments/AttachmentType.php @@ -66,7 +66,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['attachment_type:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['attachment_type:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['attachment_type:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/attachment_types/{id}/children.{_format}', diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index e5e1f907..c54a0a79 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -71,7 +71,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['category:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['category:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['category:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/categories/{id}/children.{_format}', diff --git a/src/Entity/Parts/Footprint.php b/src/Entity/Parts/Footprint.php index d02d010d..7a871bea 100644 --- a/src/Entity/Parts/Footprint.php +++ b/src/Entity/Parts/Footprint.php @@ -72,7 +72,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['footprint:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['footprint:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['footprint:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/footprints/{id}/children.{_format}', diff --git a/src/Entity/Parts/Manufacturer.php b/src/Entity/Parts/Manufacturer.php index 1a5db9ba..3a6b41b4 100644 --- a/src/Entity/Parts/Manufacturer.php +++ b/src/Entity/Parts/Manufacturer.php @@ -67,7 +67,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['manufacturer:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['manufacturer:write', 'company:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['manufacturer:write', 'company:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/manufacturers/{id}/children.{_format}', diff --git a/src/Entity/Parts/MeasurementUnit.php b/src/Entity/Parts/MeasurementUnit.php index 299c230d..a52bc502 100644 --- a/src/Entity/Parts/MeasurementUnit.php +++ b/src/Entity/Parts/MeasurementUnit.php @@ -71,7 +71,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['measurement_unit:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['measurement_unit:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['measurement_unit:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/footprints/{id}/children.{_format}', diff --git a/src/Entity/Parts/Part.php b/src/Entity/Parts/Part.php index e5281ddc..a2e0b534 100644 --- a/src/Entity/Parts/Part.php +++ b/src/Entity/Parts/Part.php @@ -89,7 +89,7 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['part:read', 'provider_reference:read', 'api:basic:read', 'part_lot:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['part:write', 'api:basic:write', 'eda_info:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['part:write', 'api:basic:write', 'eda_info:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiFilter(PropertyFilter::class)] #[ApiFilter(EntityFilter::class, properties: ["category", "footprint", "manufacturer", "partUnit"])] diff --git a/src/Entity/Parts/StorageLocation.php b/src/Entity/Parts/StorageLocation.php index 564f30ce..ae4dceb6 100644 --- a/src/Entity/Parts/StorageLocation.php +++ b/src/Entity/Parts/StorageLocation.php @@ -67,7 +67,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['location:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['location:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['location:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/storage_locations/{id}/children.{_format}', diff --git a/src/Entity/Parts/Supplier.php b/src/Entity/Parts/Supplier.php index 5103a565..14ffa24c 100644 --- a/src/Entity/Parts/Supplier.php +++ b/src/Entity/Parts/Supplier.php @@ -72,7 +72,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['supplier:read', 'company:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['supplier:write', 'company:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['supplier:write', 'company:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/suppliers/{id}/children.{_format}', diff --git a/src/Entity/PriceInformations/Currency.php b/src/Entity/PriceInformations/Currency.php index 2e95dc09..06ac8460 100644 --- a/src/Entity/PriceInformations/Currency.php +++ b/src/Entity/PriceInformations/Currency.php @@ -71,7 +71,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['currency:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['currency:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['currency:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/currencies/{id}/children.{_format}', diff --git a/src/Entity/ProjectSystem/Project.php b/src/Entity/ProjectSystem/Project.php index b18706d7..fd371a2f 100644 --- a/src/Entity/ProjectSystem/Project.php +++ b/src/Entity/ProjectSystem/Project.php @@ -70,7 +70,7 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['project:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['project:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['project:write', 'api:basic:write', 'attachment:write', 'parameter:write'], 'openapi_definition_name' => 'Write'], )] #[ApiResource( uriTemplate: '/projects/{id}/children.{_format}', From aad62f25995f183df30f2d819a1b10769ac5917e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 19:53:33 +0100 Subject: [PATCH 028/634] Disable POST operations for Attachment and AbstractParameter groups for now, as they can not work properly As they work on abstract classes, they can not be initialized directly currently and you need to create them via a PATCH operation on their owning elements. --- src/Entity/Attachments/Attachment.php | 2 +- src/Entity/Parameters/AbstractParameter.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php index 4e02e5db..72075c42 100644 --- a/src/Entity/Attachments/Attachment.php +++ b/src/Entity/Attachments/Attachment.php @@ -72,7 +72,7 @@ use LogicException; operations: [ new Get(security: 'is_granted("read", object)'), new GetCollection(security: 'is_granted("@attachments.list_attachments")'), - new Post(securityPostDenormalize: 'is_granted("create", object)'), + //new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), ], diff --git a/src/Entity/Parameters/AbstractParameter.php b/src/Entity/Parameters/AbstractParameter.php index 015e496d..ebdbd777 100644 --- a/src/Entity/Parameters/AbstractParameter.php +++ b/src/Entity/Parameters/AbstractParameter.php @@ -82,7 +82,7 @@ use function sprintf; shortName: 'Parameter', operations: [ new Get(security: 'is_granted("read", object)'), - new Post(securityPostDenormalize: 'is_granted("create", object)'), + //new Post(securityPostDenormalize: 'is_granted("create", object)'), new Patch(security: 'is_granted("edit", object)'), new Delete(security: 'is_granted("delete", object)'), ], From c8cde94ee3b03e781b12f63b969dab976bc5c659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 20:26:03 +0100 Subject: [PATCH 029/634] Fixed problem that attachment API responses, did not contain an @id and @context attribute --- src/Serializer/AttachmentNormalizer.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Serializer/AttachmentNormalizer.php b/src/Serializer/AttachmentNormalizer.php index c71e035d..11ca615e 100644 --- a/src/Serializer/AttachmentNormalizer.php +++ b/src/Serializer/AttachmentNormalizer.php @@ -26,18 +26,22 @@ namespace App\Serializer; use App\Entity\Attachments\Attachment; use App\Services\Attachments\AttachmentURLGenerator; use Symfony\Component\DependencyInjection\Attribute\Autowire; +use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface; +use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -class AttachmentNormalizer implements NormalizerInterface +class AttachmentNormalizer implements NormalizerInterface, NormalizerAwareInterface { + + use NormalizerAwareTrait; + + private const ALREADY_CALLED = 'ATTACHMENT_NORMALIZER_ALREADY_CALLED'; + public function __construct( - #[Autowire(service: ObjectNormalizer::class)] - private readonly NormalizerInterface $normalizer, private readonly AttachmentURLGenerator $attachmentURLGenerator, ) { - } public function normalize(mixed $object, string $format = null, array $context = []): array|null @@ -46,6 +50,9 @@ class AttachmentNormalizer implements NormalizerInterface throw new \InvalidArgumentException('This normalizer only supports Attachment objects!'); } + //Prevent loops, by adding a flag to the context + $context[self::ALREADY_CALLED] = true; + $data = $this->normalizer->normalize($object, $format, $context); $data['media_url'] = $this->attachmentURLGenerator->getViewURL($object); @@ -57,6 +64,11 @@ class AttachmentNormalizer implements NormalizerInterface public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool { + // avoid recursion: only call once per object + if (isset($context[self::ALREADY_CALLED])) { + return false; + } + return $data instanceof Attachment; } @@ -64,7 +76,7 @@ class AttachmentNormalizer implements NormalizerInterface { return [ //We depend on the context to determine if we should normalize or not - Attachment::class => true, + Attachment::class => false, ]; } } \ No newline at end of file From e5b9ce9c250de937a53f3307dd0b36f8ccf8cee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 20:59:13 +0100 Subject: [PATCH 030/634] Describe the creation of parameters/attachments workaround in API docs Related to issue #502 --- docs/api/intro.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/api/intro.md b/docs/api/intro.md index 1a69455f..0b6936d2 100644 --- a/docs/api/intro.md +++ b/docs/api/intro.md @@ -175,4 +175,29 @@ which will be visible in the log of the entity. You can pass the text for this via the `_comment` query parameter (beware the proper encoding). For -example `/api/parts/123?_comment=This%20is%20a%20change%20comment`. \ No newline at end of file +example `/api/parts/123?_comment=This%20is%20a%20change%20comment`. + +## Creating attachments and parameters + +{: .warning } +> The way described below is more a workaround than a proper solution. This might break in future versions of Part-DB! + +Currently it is not possible to create attachments or parameters via a `POST` operation on the entity endpoint. +The workaround for this is to send a patch request to the owning entity endpoint (e.g. parts `/api/parts/123`): + +``` +PATCH /api/parts/123 + +{ +"attachments": [ + {"name": "front68", "attachment_type": "/api/attachment_types/1", "url": "https://invalid.invalid/test.url"} +], +"parameters": [ + {"name": "value", "unit": "Ohm", "value": 100} +] +} +``` + +The limitation of this is, that this will override/delete all existing attachments/parameters of the entity. + +See [issue #502](https://github.com/Part-DB/Part-DB-server/issues/502) for more details on this topic. \ No newline at end of file From 03c7a71311e01a2340c8501126d54eeecf162870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 21:20:05 +0100 Subject: [PATCH 031/634] Release version 1.10.5 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3e5a73e8..db77e0ee 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.5-dev +1.10.5 From cb9e90ddc9cfdc032c85c43f227d7b0668675bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 21:48:32 +0100 Subject: [PATCH 032/634] Load the link again when clicking a already selected treeview node, instead of just unselecting it --- assets/controllers/elements/tree_controller.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/controllers/elements/tree_controller.js b/assets/controllers/elements/tree_controller.js index c6575db8..bc829ff5 100644 --- a/assets/controllers/elements/tree_controller.js +++ b/assets/controllers/elements/tree_controller.js @@ -94,6 +94,8 @@ export default class extends Controller { showTags: this._showTags, data: data, showIcon: true, + preventUnselect: true, + allowReselect: true, onNodeSelected: (event) => { const node = event.detail.node; if (node.href) { From 1b5eea47505fa0f3f719dd8867856fda452dd8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 28 Jan 2024 21:57:42 +0100 Subject: [PATCH 033/634] Register the unselect handler on turbo:load instead of visit, to avoid problems that the newly clicked treeview node gets unselected too. --- assets/controllers/elements/tree_controller.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/controllers/elements/tree_controller.js b/assets/controllers/elements/tree_controller.js index bc829ff5..bb64839c 100644 --- a/assets/controllers/elements/tree_controller.js +++ b/assets/controllers/elements/tree_controller.js @@ -103,7 +103,6 @@ export default class extends Controller { this._registerURLWatcher(node); } }, - //onNodeContextmenu: contextmenu_handler, }, [BS5Theme, BS53Theme, FAIconTheme]); this.treeTarget.addEventListener(EVENT_INITIALIZED, (event) => { @@ -138,12 +137,13 @@ export default class extends Controller { node.setSelected(false, {silent: true, ignorePreventUnselect: true}); //Unregister the watcher - document.removeEventListener('turbo:visit', unselectNode); + document.removeEventListener('turbo:load', unselectNode); } }; //Register the watcher via hotwire turbo - document.addEventListener('turbo:visit', unselectNode); + //We must just load to have the new url in window.location + document.addEventListener('turbo:load', unselectNode); } _onContextMenu(event) From 3a2f3ce1cc1e6322438e7b4cd49dca3163df5d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:08:25 +0100 Subject: [PATCH 034/634] Fix problem with cache key generation if the username contained an @ sign or any other special character This fixes issue #504 --- src/Services/Cache/UserCacheKeyGenerator.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Services/Cache/UserCacheKeyGenerator.php b/src/Services/Cache/UserCacheKeyGenerator.php index be1b7ad6..ac5487a5 100644 --- a/src/Services/Cache/UserCacheKeyGenerator.php +++ b/src/Services/Cache/UserCacheKeyGenerator.php @@ -60,7 +60,7 @@ class UserCacheKeyGenerator return 'user$_'.User::ID_ANONYMOUS; } - //In the most cases we can just use the username (its unique) - return 'user_'.$user->getUsername().'_'.$locale; + //Use the unique user id and the locale to generate the key + return 'user_'.$user->getID().'_'.$locale; } } From 2f17d5f3f5d38587e969038e86f35311549ada51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:12:01 +0100 Subject: [PATCH 035/634] Fixed problem that trying to request nl language version of a page caused an exception If the translation files dont contain any content, they are seen as invalid and cause this error. Therefore delete it. --- translations/security.nl.xlf | 7 ------ translations/validators.nl.xlf | 40 ---------------------------------- 2 files changed, 47 deletions(-) delete mode 100644 translations/security.nl.xlf delete mode 100644 translations/validators.nl.xlf diff --git a/translations/security.nl.xlf b/translations/security.nl.xlf deleted file mode 100644 index 6c19b22b..00000000 --- a/translations/security.nl.xlf +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/translations/validators.nl.xlf b/translations/validators.nl.xlf deleted file mode 100644 index 70aa3cf3..00000000 --- a/translations/validators.nl.xlf +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From fb493cc837579149aca116b2d08eebc1922b4cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:25:30 +0100 Subject: [PATCH 036/634] Fixed export of entities, if their name contained slash or other reserved charcters --- src/Helpers/FilenameSanatizer.php | 56 +++++++++++++++++++ .../ImportExportSystem/EntityExporter.php | 4 ++ 2 files changed, 60 insertions(+) create mode 100644 src/Helpers/FilenameSanatizer.php diff --git a/src/Helpers/FilenameSanatizer.php b/src/Helpers/FilenameSanatizer.php new file mode 100644 index 00000000..1c7b18d9 --- /dev/null +++ b/src/Helpers/FilenameSanatizer.php @@ -0,0 +1,56 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Helpers; + +/** + * This class provides functions to sanitize filenames. + */ +class FilenameSanatizer +{ + /** + * Converts a given filename to a version, which is guaranteed to be safe to use on all filesystems. + * This function is adapted from https://stackoverflow.com/a/42058764/21879970 + * @param string $filename + * @return string + */ + public static function sanitizeFilename(string $filename): string + { + $filename = preg_replace( + '~ + [<>:"/\\\|?*]| # file system reserved https://en.wikipedia.org/wiki/Filename#Reserved_characters_and_words + [\x00-\x1F]| # control characters http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx + [\x7F\xA0\xAD]| # non-printing characters DEL, NO-BREAK SPACE, SOFT HYPHEN + [#\[\]@!$&\'()+,;=]| # URI reserved https://www.rfc-editor.org/rfc/rfc3986#section-2.2 + [{}^\~`] # URL unsafe characters https://www.ietf.org/rfc/rfc1738.txt + ~x', + '-', $filename); + + // avoids ".", ".." or ".hiddenFiles" + $filename = ltrim($filename, '.-'); + //Limit filename length to 255 bytes + $ext = pathinfo($filename, PATHINFO_EXTENSION); + $filename = mb_strcut(pathinfo($filename, PATHINFO_FILENAME), 0, 255 - ($ext ? strlen($ext) + 1 : 0), mb_detect_encoding($filename)) . ($ext ? '.' . $ext : ''); + return $filename; + } +} \ No newline at end of file diff --git a/src/Services/ImportExportSystem/EntityExporter.php b/src/Services/ImportExportSystem/EntityExporter.php index c99a3672..2619c975 100644 --- a/src/Services/ImportExportSystem/EntityExporter.php +++ b/src/Services/ImportExportSystem/EntityExporter.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Services\ImportExportSystem; use App\Entity\Base\AbstractNamedDBElement; +use App\Helpers\FilenameSanatizer; use Symfony\Component\OptionsResolver\OptionsResolver; use InvalidArgumentException; use function is_array; @@ -166,6 +167,9 @@ class EntityExporter $filename = 'export_'.$entity_name.'_'.$level.'.'.$format; + //Sanitize the filename + $filename = FilenameSanatizer::sanitizeFilename($filename); + // Create the disposition of the file $disposition = $response->headers->makeDisposition( ResponseHeaderBag::DISPOSITION_ATTACHMENT, From a390b1e2a095a5f286c20789542b7286562ae0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:28:21 +0100 Subject: [PATCH 037/634] Upgraded dependencies --- composer.lock | 67 ++++++++++++++++++++++++++------------------------- yarn.lock | 18 +++++++------- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/composer.lock b/composer.lock index f4f22836..87f588d0 100644 --- a/composer.lock +++ b/composer.lock @@ -1739,16 +1739,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.3", + "version": "2.17.4", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670" + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/398ab0547aaf90bdb352b560a94c24f44ff00670", - "reference": "398ab0547aaf90bdb352b560a94c24f44ff00670", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", "shasum": "" }, "require": { @@ -1834,9 +1834,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.3" + "source": "https://github.com/doctrine/orm/tree/2.17.4" }, - "time": "2024-01-16T21:32:04+00:00" + "time": "2024-01-26T19:41:16+00:00" }, { "name": "doctrine/persistence", @@ -5268,25 +5268,26 @@ }, { "name": "php-translation/common", - "version": "3.2.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/php-translation/common.git", - "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1" + "reference": "f5e0e36222bcf400310d089646f8cde1648ca974" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/common/zipball/986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", - "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", + "url": "https://api.github.com/repos/php-translation/common/zipball/f5e0e36222bcf400310d089646f8cde1648ca974", + "reference": "f5e0e36222bcf400310d089646f8cde1648ca974", "shasum": "" }, "require": { "php": ">=7.2", - "symfony/translation": " ^3.4 || ^4.3 || ^5.0 || ^6.0" + "symfony/translation": " ^3.4 || ^4.3 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^8.4", - "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" + "phpspec/prophecy-phpunit": "^2.1", + "phpunit/phpunit": ">=8.5.23", + "symfony/framework-bundle": " ^3.4 || ^4.3 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -5307,9 +5308,9 @@ "description": "Common translation stuff", "support": { "issues": "https://github.com/php-translation/common/issues", - "source": "https://github.com/php-translation/common/tree/3.2.0" + "source": "https://github.com/php-translation/common/tree/3.3.0" }, - "time": "2022-02-04T11:49:38+00:00" + "time": "2024-01-29T16:29:12+00:00" }, { "name": "php-translation/extractor", @@ -5446,26 +5447,26 @@ }, { "name": "php-translation/symfony-storage", - "version": "2.3.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/php-translation/symfony-storage.git", - "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8" + "reference": "0f4702c5837802507231ee6649c49b57b6d7ab89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/95d52dd86d41fe0ec2c75e1469b5003956044cc8", - "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8", + "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/0f4702c5837802507231ee6649c49b57b6d7ab89", + "reference": "0f4702c5837802507231ee6649c49b57b6d7ab89", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", "php-translation/common": "^3.0", - "symfony/translation": "^3.4 || ^4.2 || ^5.0 || ^6.0" + "symfony/translation": "^3.4 || ^4.2 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": ">=8.5.20", - "symfony/framework-bundle": " ^3.4 || ^4.2 || ^5.0 || ^6.0" + "symfony/framework-bundle": " ^3.4 || ^4.2 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { @@ -5491,9 +5492,9 @@ "description": "A translation file storage using Symfony translation component.", "support": { "issues": "https://github.com/php-translation/symfony-storage/issues", - "source": "https://github.com/php-translation/symfony-storage/tree/2.3.1" + "source": "https://github.com/php-translation/symfony-storage/tree/2.4.0" }, - "time": "2022-02-14T11:36:15+00:00" + "time": "2024-01-29T16:41:31+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -15346,16 +15347,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.3.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3" + "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3", - "reference": "f94839946c3bd19bdeb9c7d81f6b4fe7e378ddc3", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/18133a2d8c24e10e58e02b700308ed3a4a60c97f", + "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f", "shasum": "" }, "require": { @@ -15391,9 +15392,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.3.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.0" }, - "time": "2024-01-27T14:56:43+00:00" + "time": "2024-01-28T07:31:37+00:00" }, { "name": "phar-io/manifest", @@ -16352,12 +16353,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "cea5a32b418b44dc5a480049f531f53563c26210" + "reference": "896285f443311a8ce7e936baced47705b9bc4cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/cea5a32b418b44dc5a480049f531f53563c26210", - "reference": "cea5a32b418b44dc5a480049f531f53563c26210", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/896285f443311a8ce7e936baced47705b9bc4cfc", + "reference": "896285f443311a8ce7e936baced47705b9bc4cfc", "shasum": "" }, "conflict": { @@ -17075,7 +17076,7 @@ "type": "tidelift" } ], - "time": "2024-01-24T22:04:16+00:00" + "time": "2024-01-29T20:04:38+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index d566f440..0eb7951b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.8.tgz#bdb6de1048613c3c6ab6c341c37e8fd1a7860308" - integrity sha512-i7omyekpPTNdv4Jb/Rgqg0RU8YqLcNsI12quKSDkRXNfx7Wxdm6HhK1awT3xTgEkgxPn3bvnSpiEAc7a7Lpyow== + version "20.11.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.10.tgz#6c3de8974d65c362f82ee29db6b5adf4205462f9" + integrity sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg== dependencies: undici-types "~5.26.4" @@ -2597,9 +2597,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001580" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" - integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== + version "1.0.30001581" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" + integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== chalk@^2.4.2: version "2.4.2" @@ -3519,9 +3519,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.648: - version "1.4.648" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz#c7b46c9010752c37bb4322739d6d2dd82354fbe4" - integrity sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg== + version "1.4.649" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.649.tgz#684ab7a0392c146c934601ddad0bd9521ff45205" + integrity sha512-dq/owIaALxZGqWm5RXpKQ4baX6aDC19e2Z16c8SXYN+I71PyEKjbVqQUgm7kcuk8CRqljTKXbolo0XXDjxnh2w== emoji-regex@^8.0.0: version "8.0.0" From 998b3ed075ec7bc54664c601c1b50f25aed6e6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:29:14 +0100 Subject: [PATCH 038/634] Fixed typo in german translation --- translations/messages.de.xlf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 1a64251a..6399c0fc 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -6386,7 +6386,7 @@ Wenn Sie dies fehlerhafterweise gemacht haben oder ein Computer nicht mehr vertr log.user_login.ip - IP: + IP
From 0d3c670f9d3d2d280a55a44859b3171fee22b884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 29 Jan 2024 21:30:18 +0100 Subject: [PATCH 039/634] Release version 1.10.6 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index db77e0ee..7b4d9a4f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.5 +1.10.6 From 2bd3a6a7455fd4c617e73b11389bb6dbf7c1ce5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 2 Feb 2024 23:42:36 +0100 Subject: [PATCH 040/634] Updated bs-treeview to 1.0.6 where the issue that child nodes of already expanded nodes dont get expanded on an select all This fixes issue #506 --- yarn.lock | 71 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0eb7951b..b2e4f848 100644 --- a/yarn.lock +++ b/yarn.lock @@ -80,9 +80,9 @@ semver "^6.3.1" "@babel/helper-create-class-features-plugin@^7.22.15": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.9.tgz#fddfdf51fca28f23d16b9e3935a4732690acfad6" - integrity sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw== + version "7.23.10" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" + integrity sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.20" @@ -1534,9 +1534,9 @@ integrity sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g== "@jbtronics/bs-treeview@^1.0.1": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.5.tgz#3267138a47624c492e3fa6c94888e5dce78809ab" - integrity sha512-f+IRGnSGa21P7CGmvv5g3cqjC589hDhyc6AHdLj5VXKVqD1EYw5nXdOudgQmTOlqhZa+JGdsfQx8TlFIp313KA== + version "1.0.6" + resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.6.tgz#7fe126a2ca4716c824d97ab6d1a5f2417750445a" + integrity sha512-fLY2tnbDYO4kCjpmGQyfvoHN8x72Rk5p+tTgVjKJUbiJHHhXt0yIW+l5P83CwYtPD5EwS7kMKc8RLuU1xA2bpA== "@jest/schemas@^29.6.3": version "29.6.3" @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.10.tgz#6c3de8974d65c362f82ee29db6b5adf4205462f9" - integrity sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg== + version "20.11.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" + integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== dependencies: undici-types "~5.26.4" @@ -2597,9 +2597,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001581" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" - integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== + version "1.0.30001583" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz#abb2970cc370801dc7e27bf290509dc132cfa390" + integrity sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q== chalk@^2.4.2: version "2.4.2" @@ -2949,9 +2949,9 @@ css-loader@^5.2.7: semver "^7.3.5" css-loader@^6.7.0: - version "6.9.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.9.1.tgz#9ec9a434368f2bdfeffbf8f6901a1ce773586c6b" - integrity sha512-OzABOh0+26JKFdMzlK6PY1u5Zx8+Ck7CVRlcGNZoY9qwJjdfu2VWFuprTIpPW+Av5TZTVViYWcFQaEEQURLknQ== + version "6.10.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" + integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== dependencies: icss-utils "^5.1.0" postcss "^8.4.33" @@ -3519,9 +3519,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.648: - version "1.4.649" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.649.tgz#684ab7a0392c146c934601ddad0bd9521ff45205" - integrity sha512-dq/owIaALxZGqWm5RXpKQ4baX6aDC19e2Z16c8SXYN+I71PyEKjbVqQUgm7kcuk8CRqljTKXbolo0XXDjxnh2w== + version "1.4.656" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" + integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== emoji-regex@^8.0.0: version "8.0.0" @@ -3562,9 +3562,9 @@ entities@^4.2.0: integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.3: - version "7.11.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" - integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== error-ex@^1.3.1: version "1.3.2" @@ -4208,17 +4208,17 @@ has-proto@^1.0.1: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" has@^1.0.1: version "1.0.4" @@ -4367,9 +4367,9 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== ignore@^5.1.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immediate@~3.0.5: version "3.0.6" @@ -4995,11 +4995,12 @@ mimic-fn@^2.1.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mini-css-extract-plugin@^2.4.2, mini-css-extract-plugin@^2.6.0: - version "2.7.7" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.7.tgz#4acf02f362c641c38fb913bfcb7ca2fc4a7cf339" - integrity sha512-+0n11YGyRavUR3IlaOzJ0/4Il1avMvJ1VJfhWfCn24ITQXhRr1gghbhhrda6tgtNcpZaWKdSuwKq20Jb7fnlyw== + version "2.8.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz#1aeae2a90a954b6426c9e8311eab36b450f553a0" + integrity sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg== dependencies: schema-utils "^4.0.0" + tapable "^2.2.1" minimalistic-assert@^1.0.0: version "1.0.1" @@ -7300,9 +7301,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.74.0: - version "5.90.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" - integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== + version "5.90.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.1.tgz#62ab0c097d7cbe83d32523dbfbb645cdb7c3c01c" + integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" From 3294ba5964c32d315da2480d57dc80d6c5a4306a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 2 Feb 2024 23:44:06 +0100 Subject: [PATCH 041/634] Mention czech and danish translation in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94aad970..5bd16fa8 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ for the first time. * Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer and multiple store locations and price information. Parts can be grouped using tags. You can associate various files like datasheets or pictures with the parts. -* Multi-Language support (currently German, English, Russian, Japanese and French (experimental)) +* Multi-Language support (currently German, English, Russian, Japanese, French, Czech and Danish) * Barcodes/Labels generator for parts and storage locations, scan barcodes via webcam using the builtin barcode scanner * User system with groups and detailed (fine granular) permissions. Two-factor authentication is supported (Google Authenticator and Webauthn/U2F keys) and can be enforced for groups. From a8d12c9c4ca0db354f3f88988a6ea9a4871119a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Feb 2024 00:40:37 +0100 Subject: [PATCH 042/634] Updated dependencies --- composer.lock | 798 +++++++++++++++++++++++++------------------------- 1 file changed, 403 insertions(+), 395 deletions(-) diff --git a/composer.lock b/composer.lock index 87f588d0..26e3c7a2 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.12", + "version": "v3.2.13", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "ac8031eb42810e6c538ffaca295cf7b4d35adf06" + "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/ac8031eb42810e6c538ffaca295cf7b4d35adf06", - "reference": "ac8031eb42810e6c538ffaca295cf7b4d35adf06", + "url": "https://api.github.com/repos/api-platform/core/zipball/3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", + "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", "shasum": "" }, "require": { @@ -168,9 +168,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.12" + "source": "https://github.com/api-platform/core/tree/v3.2.13" }, - "time": "2024-01-19T19:03:13+00:00" + "time": "2024-02-01T14:41:52+00:00" }, { "name": "beberlei/assert", @@ -1050,16 +1050,16 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -1091,9 +1091,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -6477,16 +6477,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "8.5.0", "source": { "type": "git", "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", + "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", "shasum": "" }, "require": { @@ -6494,13 +6494,18 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "codacy/coverage": "^1.4.3", + "phpunit/phpunit": "^5.7.27" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -6524,9 +6529,9 @@ ], "support": { "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.5.0" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2024-02-01T00:40:08+00:00" }, { "name": "scheb/2fa-backup-code", @@ -6952,27 +6957,27 @@ }, { "name": "spomky-labs/cbor-php", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/cbor-php.git", - "reference": "81d5dff7a1101d680729b5789f4359d01b15e6c5" + "reference": "658ed12a85a6b31fa312b89cd92f3a4ce6df4c6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/81d5dff7a1101d680729b5789f4359d01b15e6c5", - "reference": "81d5dff7a1101d680729b5789f4359d01b15e6c5", + "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/658ed12a85a6b31fa312b89cd92f3a4ce6df4c6b", + "reference": "658ed12a85a6b31fa312b89cd92f3a4ce6df4c6b", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-mbstring": "*", "php": ">=8.0" }, "require-dev": { "ekino/phpstan-banned-code": "^1.0", "ext-json": "*", - "infection/infection": "^0.26", + "infection/infection": "^0.27", "php-parallel-lint/php-parallel-lint": "^1.3", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.0", @@ -6980,12 +6985,12 @@ "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^10.1", "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.15", + "rector/rector": "^0.19", "roave/security-advisories": "dev-latest", - "symfony/var-dumper": "^6.0", - "symplify/easy-coding-standard": "^11.1" + "symfony/var-dumper": "^6.0|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "ext-bcmath": "GMP or BCMath extensions will drastically improve the library performance. BCMath extension needed to handle the Big Float and Decimal Fraction Tags", @@ -7019,7 +7024,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/cbor-php/issues", - "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.0.3" + "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.0.4" }, "funding": [ { @@ -7031,7 +7036,7 @@ "type": "patreon" } ], - "time": "2023-02-28T21:37:12+00:00" + "time": "2024-01-29T20:33:48+00:00" }, { "name": "spomky-labs/otphp", @@ -7251,16 +7256,16 @@ }, { "name": "symfony/asset", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "c1108eb27a61ef4ac29504ef61c028648308036c" + "reference": "14b1c0fddb64af6ea626af51bb3c47af9fa19cb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/c1108eb27a61ef4ac29504ef61c028648308036c", - "reference": "c1108eb27a61ef4ac29504ef61c028648308036c", + "url": "https://api.github.com/repos/symfony/asset/zipball/14b1c0fddb64af6ea626af51bb3c47af9fa19cb7", + "reference": "14b1c0fddb64af6ea626af51bb3c47af9fa19cb7", "shasum": "" }, "require": { @@ -7300,7 +7305,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.4.0" + "source": "https://github.com/symfony/asset/tree/v6.4.3" }, "funding": [ { @@ -7316,20 +7321,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/cache", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978" + "reference": "49f8cdee544a621a621cd21b6cda32a38926d310" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/14a75869bbb41cb35bc5d9d322473928c6f3f978", - "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978", + "url": "https://api.github.com/repos/symfony/cache/zipball/49f8cdee544a621a621cd21b6cda32a38926d310", + "reference": "49f8cdee544a621a621cd21b6cda32a38926d310", "shasum": "" }, "require": { @@ -7396,7 +7401,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.2" + "source": "https://github.com/symfony/cache/tree/v6.4.3" }, "funding": [ { @@ -7412,7 +7417,7 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/cache-contracts", @@ -7492,16 +7497,16 @@ }, { "name": "symfony/clock", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "0639710e65f73cc504167958ea29be6de5c7177a" + "reference": "f48770105c544001da00b8d745873a628e0de198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/0639710e65f73cc504167958ea29be6de5c7177a", - "reference": "0639710e65f73cc504167958ea29be6de5c7177a", + "url": "https://api.github.com/repos/symfony/clock/zipball/f48770105c544001da00b8d745873a628e0de198", + "reference": "f48770105c544001da00b8d745873a628e0de198", "shasum": "" }, "require": { @@ -7546,7 +7551,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.2" + "source": "https://github.com/symfony/clock/tree/v6.4.3" }, "funding": [ { @@ -7562,20 +7567,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T00:32:33+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/config", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" + "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", + "url": "https://api.github.com/repos/symfony/config/zipball/206482ff3ed450495b1d5b7bad1bc3a852def96f", + "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f", "shasum": "" }, "require": { @@ -7621,7 +7626,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.0" + "source": "https://github.com/symfony/config/tree/v6.4.3" }, "funding": [ { @@ -7637,20 +7642,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2024-01-29T13:26:27+00:00" }, { "name": "symfony/console", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", "shasum": "" }, "require": { @@ -7715,7 +7720,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.3" }, "funding": [ { @@ -7731,20 +7736,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229", + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229", "shasum": "" }, "require": { @@ -7780,7 +7785,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.3" }, "funding": [ { @@ -7796,20 +7801,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" + "reference": "6871811c5a5c5e180244ddb689746446db02c05b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6871811c5a5c5e180244ddb689746446db02c05b", + "reference": "6871811c5a5c5e180244ddb689746446db02c05b", "shasum": "" }, "require": { @@ -7861,7 +7866,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.2" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.3" }, "funding": [ { @@ -7877,7 +7882,7 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7948,16 +7953,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "da33f27c1dd9946afecfd1585b867551df71bf53" + "reference": "9c9a44bb06337dadeb9db1a8b202f15cca804353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/da33f27c1dd9946afecfd1585b867551df71bf53", - "reference": "da33f27c1dd9946afecfd1585b867551df71bf53", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9c9a44bb06337dadeb9db1a8b202f15cca804353", + "reference": "9c9a44bb06337dadeb9db1a8b202f15cca804353", "shasum": "" }, "require": { @@ -8036,7 +8041,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.3" }, "funding": [ { @@ -8052,20 +8057,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T00:32:33+00:00" + "time": "2024-01-30T11:24:52+00:00" }, { "name": "symfony/dotenv", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "835f8d2d1022934ac038519de40b88158798c96f" + "reference": "3cb7ca997124760ed1389d5341806247670f4ef8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", - "reference": "835f8d2d1022934ac038519de40b88158798c96f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/3cb7ca997124760ed1389d5341806247670f4ef8", + "reference": "3cb7ca997124760ed1389d5341806247670f4ef8", "shasum": "" }, "require": { @@ -8110,7 +8115,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.2" + "source": "https://github.com/symfony/dotenv/tree/v6.4.3" }, "funding": [ { @@ -8126,20 +8131,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", "shasum": "" }, "require": { @@ -8185,7 +8190,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.3" }, "funding": [ { @@ -8201,20 +8206,20 @@ "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2024-01-29T15:40:36+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e95216850555cd55e71b857eb9d6c2674124603a" + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", - "reference": "e95216850555cd55e71b857eb9d6c2674124603a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", "shasum": "" }, "require": { @@ -8265,7 +8270,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" }, "funding": [ { @@ -8281,7 +8286,7 @@ "type": "tidelift" } ], - "time": "2023-12-27T22:16:42+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -8361,16 +8366,16 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "7d63ccd5331d4164961776eced5524e891e30ad3" + "reference": "b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/7d63ccd5331d4164961776eced5524e891e30ad3", - "reference": "7d63ccd5331d4164961776eced5524e891e30ad3", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4", + "reference": "b4a4ae33fbb33a99d23c5698faaecadb76ad0fe4", "shasum": "" }, "require": { @@ -8405,7 +8410,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.2" + "source": "https://github.com/symfony/expression-language/tree/v6.4.3" }, "funding": [ { @@ -8421,20 +8426,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", "shasum": "" }, "require": { @@ -8468,7 +8473,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" }, "funding": [ { @@ -8484,7 +8489,7 @@ "type": "tidelift" } ], - "time": "2023-07-26T17:27:13+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/finder", @@ -8617,16 +8622,16 @@ }, { "name": "symfony/form", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4" + "reference": "dabf7e9375550aada8916ced1736d01c2e3debff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/10649ab710b58a04bcf1886f005ccab58d9cf0a4", - "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4", + "url": "https://api.github.com/repos/symfony/form/zipball/dabf7e9375550aada8916ced1736d01c2e3debff", + "reference": "dabf7e9375550aada8916ced1736d01c2e3debff", "shasum": "" }, "require": { @@ -8647,7 +8652,7 @@ "symfony/error-handler": "<5.4", "symfony/framework-bundle": "<5.4", "symfony/http-kernel": "<5.4", - "symfony/translation": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<6.3" }, @@ -8663,7 +8668,7 @@ "symfony/intl": "^5.4|^6.0|^7.0", "symfony/security-core": "^6.2|^7.0", "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/uid": "^5.4|^6.0|^7.0", "symfony/validator": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" @@ -8694,7 +8699,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.1" + "source": "https://github.com/symfony/form/tree/v6.4.3" }, "funding": [ { @@ -8710,20 +8715,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T11:08:34+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" + "reference": "fb413ac4483803954411966a39f3a9204835848e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/fb413ac4483803954411966a39f3a9204835848e", + "reference": "fb413ac4483803954411966a39f3a9204835848e", "shasum": "" }, "require": { @@ -8762,7 +8767,7 @@ "symfony/mime": "<6.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", - "symfony/scheduler": "<6.4", + "symfony/scheduler": "<6.4.3|>=7.0.0,<7.0.3", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", "symfony/serializer": "<6.4", @@ -8801,7 +8806,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/scheduler": "^6.4|^7.0", + "symfony/scheduler": "^6.4.3|^7.0.3", "symfony/security-bundle": "^5.4|^6.0|^7.0", "symfony/semaphore": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4|^7.0", @@ -8842,7 +8847,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.4.2" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.3" }, "funding": [ { @@ -8858,20 +8863,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2024-01-29T15:02:55+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "fc0944665bd932cf32a7b8a1d009466afc16528f" + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/fc0944665bd932cf32a7b8a1d009466afc16528f", - "reference": "fc0944665bd932cf32a7b8a1d009466afc16528f", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86", + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86", "shasum": "" }, "require": { @@ -8935,7 +8940,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.2" + "source": "https://github.com/symfony/http-client/tree/v6.4.3" }, "funding": [ { @@ -8951,7 +8956,7 @@ "type": "tidelift" } ], - "time": "2023-12-02T12:49:56+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/http-client-contracts", @@ -9033,16 +9038,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", - "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", "shasum": "" }, "require": { @@ -9090,7 +9095,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" }, "funding": [ { @@ -9106,20 +9111,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T22:16:42+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4" + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", "shasum": "" }, "require": { @@ -9203,7 +9208,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" }, "funding": [ { @@ -9219,20 +9224,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T15:31:44+00:00" + "time": "2024-01-31T07:21:29+00:00" }, { "name": "symfony/intl", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "4f45148f7eb984ef12b1f7e123205ab904828839" + "reference": "2628ded562ca132ed7cdea72f5ec6aaf65d94414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/4f45148f7eb984ef12b1f7e123205ab904828839", - "reference": "4f45148f7eb984ef12b1f7e123205ab904828839", + "url": "https://api.github.com/repos/symfony/intl/zipball/2628ded562ca132ed7cdea72f5ec6aaf65d94414", + "reference": "2628ded562ca132ed7cdea72f5ec6aaf65d94414", "shasum": "" }, "require": { @@ -9285,7 +9290,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.2" + "source": "https://github.com/symfony/intl/tree/v6.4.3" }, "funding": [ { @@ -9301,20 +9306,20 @@ "type": "tidelift" } ], - "time": "2023-12-26T18:38:00+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "6da89e5c9202f129717a770a03183fb140720168" + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", - "reference": "6da89e5c9202f129717a770a03183fb140720168", + "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", "shasum": "" }, "require": { @@ -9365,7 +9370,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.2" + "source": "https://github.com/symfony/mailer/tree/v6.4.3" }, "funding": [ { @@ -9381,20 +9386,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T09:12:31+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mime", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { @@ -9449,7 +9454,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.0" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -9465,20 +9470,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:49:05+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "c262c2f54ce7e160a231808817f306f880c32750" + "reference": "1e1ec293f15dcc815146637ee9ee8a7f43642fa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c262c2f54ce7e160a231808817f306f880c32750", - "reference": "c262c2f54ce7e160a231808817f306f880c32750", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/1e1ec293f15dcc815146637ee9ee8a7f43642fa1", + "reference": "1e1ec293f15dcc815146637ee9ee8a7f43642fa1", "shasum": "" }, "require": { @@ -9528,7 +9533,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.3" }, "funding": [ { @@ -9544,7 +9549,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/monolog-bundle", @@ -9696,16 +9701,16 @@ }, { "name": "symfony/password-hasher", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2" + "reference": "5189cdfe89a9acb56cc6d6d7a5233bfb180c7268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e001f752338a49d644ee0523fd7891aabaccb7e2", - "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/5189cdfe89a9acb56cc6d6d7a5233bfb180c7268", + "reference": "5189cdfe89a9acb56cc6d6d7a5233bfb180c7268", "shasum": "" }, "require": { @@ -9748,7 +9753,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.0" + "source": "https://github.com/symfony/password-hasher/tree/v6.4.3" }, "funding": [ { @@ -9764,7 +9769,7 @@ "type": "tidelift" } ], - "time": "2023-11-06T11:00:25+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/polyfill-ctype", @@ -10672,16 +10677,16 @@ }, { "name": "symfony/process", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", - "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", + "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", "shasum": "" }, "require": { @@ -10713,7 +10718,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.2" + "source": "https://github.com/symfony/process/tree/v6.4.3" }, "funding": [ { @@ -10729,20 +10734,20 @@ "type": "tidelift" } ], - "time": "2023-12-22T16:42:54+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/property-access", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "75f6990ae8e8040dd587162f3f1863f755957129" + "reference": "dd22c9247a16c712bfa128b3c90ebdd505102778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/75f6990ae8e8040dd587162f3f1863f755957129", - "reference": "75f6990ae8e8040dd587162f3f1863f755957129", + "url": "https://api.github.com/repos/symfony/property-access/zipball/dd22c9247a16c712bfa128b3c90ebdd505102778", + "reference": "dd22c9247a16c712bfa128b3c90ebdd505102778", "shasum": "" }, "require": { @@ -10790,7 +10795,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.4.0" + "source": "https://github.com/symfony/property-access/tree/v6.4.3" }, "funding": [ { @@ -10806,20 +10811,20 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/property-info", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1" + "reference": "e96d740ab5ac39aa530c8eaa0720ea8169118e26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/288be71bae2ebc88676f5d3a03d23f70b278fcc1", - "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/e96d740ab5ac39aa530c8eaa0720ea8169118e26", + "reference": "e96d740ab5ac39aa530c8eaa0720ea8169118e26", "shasum": "" }, "require": { @@ -10873,7 +10878,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.0" + "source": "https://github.com/symfony/property-info/tree/v6.4.3" }, "funding": [ { @@ -10889,20 +10894,20 @@ "type": "tidelift" } ], - "time": "2023-11-25T16:57:46+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04" + "reference": "c3f1b7d8f0b567eb960c540567f24219cb759e0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/801c4590eacf0dc40d73135dbe79ad71effd6d04", - "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/c3f1b7d8f0b567eb960c540567f24219cb759e0a", + "reference": "c3f1b7d8f0b567eb960c540567f24219cb759e0a", "shasum": "" }, "require": { @@ -10940,7 +10945,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.4.3" }, "funding": [ { @@ -10956,7 +10961,7 @@ "type": "tidelift" } ], - "time": "2023-11-01T12:07:38+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -11049,16 +11054,16 @@ }, { "name": "symfony/rate-limiter", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "c32471a8ebe613f6856db4b0544fcf5429d12511" + "reference": "5b8689fd55becd6b376ec49a542773c98985a7df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/c32471a8ebe613f6856db4b0544fcf5429d12511", - "reference": "c32471a8ebe613f6856db4b0544fcf5429d12511", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/5b8689fd55becd6b376ec49a542773c98985a7df", + "reference": "5b8689fd55becd6b376ec49a542773c98985a7df", "shasum": "" }, "require": { @@ -11100,7 +11105,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v6.4.2" + "source": "https://github.com/symfony/rate-limiter/tree/v6.4.3" }, "funding": [ { @@ -11116,20 +11121,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T09:55:02+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/routing", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", + "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", "shasum": "" }, "require": { @@ -11183,7 +11188,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.2" + "source": "https://github.com/symfony/routing/tree/v6.4.3" }, "funding": [ { @@ -11199,20 +11204,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2024-01-30T13:55:02+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "86539231fadfdc7f7e9911d6fa7ed84a606e7d34" + "reference": "5682281d26366cd3bf0648cec69de0e62cca7fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/86539231fadfdc7f7e9911d6fa7ed84a606e7d34", - "reference": "86539231fadfdc7f7e9911d6fa7ed84a606e7d34", + "url": "https://api.github.com/repos/symfony/runtime/zipball/5682281d26366cd3bf0648cec69de0e62cca7fa0", + "reference": "5682281d26366cd3bf0648cec69de0e62cca7fa0", "shasum": "" }, "require": { @@ -11262,7 +11267,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.0" + "source": "https://github.com/symfony/runtime/tree/v6.4.3" }, "funding": [ { @@ -11278,20 +11283,20 @@ "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6" + "reference": "a53a9e1f6695447ce613aa8c9c698cfd012bd2aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/97d4fb6dbee700937738036ec54b0fcb0641d7d6", - "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a53a9e1f6695447ce613aa8c9c698cfd012bd2aa", + "reference": "a53a9e1f6695447ce613aa8c9c698cfd012bd2aa", "shasum": "" }, "require": { @@ -11374,7 +11379,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.4.2" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.3" }, "funding": [ { @@ -11390,20 +11395,20 @@ "type": "tidelift" } ], - "time": "2023-12-24T09:11:31+00:00" + "time": "2024-01-28T15:49:46+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "9e24a7199744d944c03fc1448276dc57f6237a33" + "reference": "bb10f630cf5b1819ff80aa3ad57a09c61268fc48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/9e24a7199744d944c03fc1448276dc57f6237a33", - "reference": "9e24a7199744d944c03fc1448276dc57f6237a33", + "url": "https://api.github.com/repos/symfony/security-core/zipball/bb10f630cf5b1819ff80aa3ad57a09c61268fc48", + "reference": "bb10f630cf5b1819ff80aa3ad57a09c61268fc48", "shasum": "" }, "require": { @@ -11418,6 +11423,7 @@ "symfony/http-foundation": "<5.4", "symfony/ldap": "<5.4", "symfony/security-guard": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/validator": "<5.4" }, "require-dev": { @@ -11430,7 +11436,7 @@ "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/ldap": "^5.4|^6.0|^7.0", "symfony/string": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/validator": "^6.4|^7.0" }, "type": "library", @@ -11459,7 +11465,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.0" + "source": "https://github.com/symfony/security-core/tree/v6.4.3" }, "funding": [ { @@ -11475,20 +11481,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T17:20:05+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/security-csrf", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638" + "reference": "e10257dd26f965d75e96bbfc27e46efd943f3010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/b28413496ebfce2f98afbb990ad0ce0ba3586638", - "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/e10257dd26f965d75e96bbfc27e46efd943f3010", + "reference": "e10257dd26f965d75e96bbfc27e46efd943f3010", "shasum": "" }, "require": { @@ -11527,7 +11533,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v6.4.0" + "source": "https://github.com/symfony/security-csrf/tree/v6.4.3" }, "funding": [ { @@ -11543,20 +11549,20 @@ "type": "tidelift" } ], - "time": "2023-08-25T16:27:31+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/security-http", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b" + "reference": "d1962d08e02d620dccbaa28192498642500b5043" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/1b49ad8e9f2c3ceec011d67ac09e774e4107416b", - "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b", + "url": "https://api.github.com/repos/symfony/security-http/zipball/d1962d08e02d620dccbaa28192498642500b5043", + "reference": "d1962d08e02d620dccbaa28192498642500b5043", "shasum": "" }, "require": { @@ -11615,7 +11621,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.0" + "source": "https://github.com/symfony/security-http/tree/v6.4.3" }, "funding": [ { @@ -11631,20 +11637,20 @@ "type": "tidelift" } ], - "time": "2023-11-24T21:18:21+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af" + "reference": "51a06ee93c4d5ab5b9edaa0635d8b83953e3c14d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", - "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", + "url": "https://api.github.com/repos/symfony/serializer/zipball/51a06ee93c4d5ab5b9edaa0635d8b83953e3c14d", + "reference": "51a06ee93c4d5ab5b9edaa0635d8b83953e3c14d", "shasum": "" }, "require": { @@ -11678,7 +11684,7 @@ "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/messenger": "^5.4|^6.0|^7.0", "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.26|^6.3|^7.0", "symfony/property-info": "^5.4.24|^6.2.11|^7.0", "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0|^7.0", @@ -11713,7 +11719,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.2" + "source": "https://github.com/symfony/serializer/tree/v6.4.3" }, "funding": [ { @@ -11729,7 +11735,7 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/service-contracts", @@ -11815,16 +11821,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.13.3", + "version": "v2.14.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "40a4416e6d8da7deb18a75bb9b8e7ce955cf653d" + "reference": "a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/40a4416e6d8da7deb18a75bb9b8e7ce955cf653d", - "reference": "40a4416e6d8da7deb18a75bb9b8e7ce955cf653d", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4", + "reference": "a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4", "shasum": "" }, "require": { @@ -11864,7 +11870,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.13.3" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.0" }, "funding": [ { @@ -11880,20 +11886,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T20:29:09+00:00" + "time": "2024-01-30T15:40:36+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1", + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1", "shasum": "" }, "require": { @@ -11926,7 +11932,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.3" }, "funding": [ { @@ -11942,20 +11948,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/string", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "7a14736fb179876575464e4658fce0c304e8c15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b", + "reference": "7a14736fb179876575464e4658fce0c304e8c15b", "shasum": "" }, "require": { @@ -12012,7 +12018,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.3" }, "funding": [ { @@ -12028,20 +12034,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-01-25T09:26:29+00:00" }, { "name": "symfony/translation", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" + "reference": "637c51191b6b184184bbf98937702bcf554f7d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", - "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04", "shasum": "" }, "require": { @@ -12064,7 +12070,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0|^7.0", @@ -12107,7 +12113,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.2" + "source": "https://github.com/symfony/translation/tree/v6.4.3" }, "funding": [ { @@ -12123,7 +12129,7 @@ "type": "tidelift" } ], - "time": "2023-12-18T09:25:29+00:00" + "time": "2024-01-29T13:11:52+00:00" }, { "name": "symfony/translation-contracts", @@ -12205,16 +12211,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "97af829e4733125ee70e806694d56165c60b4ee1" + "reference": "bf6b411a5d9a0ce6ea43cca0fcf5f05f5196a957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/97af829e4733125ee70e806694d56165c60b4ee1", - "reference": "97af829e4733125ee70e806694d56165c60b4ee1", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/bf6b411a5d9a0ce6ea43cca0fcf5f05f5196a957", + "reference": "bf6b411a5d9a0ce6ea43cca0fcf5f05f5196a957", "shasum": "" }, "require": { @@ -12258,7 +12264,7 @@ "symfony/security-core": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/security-http": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^6.1|^7.0", "symfony/web-link": "^5.4|^6.0|^7.0", @@ -12294,7 +12300,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.2" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.3" }, "funding": [ { @@ -12310,20 +12316,20 @@ "type": "tidelift" } ], - "time": "2023-12-15T12:36:48+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c" + "reference": "2e63e50de2ade430191af0b5d21bfd6526fe3709" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/2e63e50de2ade430191af0b5d21bfd6526fe3709", + "reference": "2e63e50de2ade430191af0b5d21bfd6526fe3709", "shasum": "" }, "require": { @@ -12378,7 +12384,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.4.0" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.3" }, "funding": [ { @@ -12394,20 +12400,20 @@ "type": "tidelift" } ], - "time": "2023-11-07T14:57:07+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/uid", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -12452,7 +12458,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -12468,20 +12474,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/ux-translator", - "version": "v2.13.2", + "version": "v2.14.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-translator.git", - "reference": "d6ecd457de290b3e6dd6ca0c939fc7174db2540b" + "reference": "802ced1bc3292f65f48acd8704d7b29f1cbdd51c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-translator/zipball/d6ecd457de290b3e6dd6ca0c939fc7174db2540b", - "reference": "d6ecd457de290b3e6dd6ca0c939fc7174db2540b", + "url": "https://api.github.com/repos/symfony/ux-translator/zipball/802ced1bc3292f65f48acd8704d7b29f1cbdd51c", + "reference": "802ced1bc3292f65f48acd8704d7b29f1cbdd51c", "shasum": "" }, "require": { @@ -12528,7 +12534,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-translator/tree/v2.13.2" + "source": "https://github.com/symfony/ux-translator/tree/v2.14.0" }, "funding": [ { @@ -12544,20 +12550,20 @@ "type": "tidelift" } ], - "time": "2023-11-11T01:20:31+00:00" + "time": "2024-01-14T07:27:47+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.13.2", + "version": "v2.14.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "1be97f191f166ad745f777cafdaa5609d959984d" + "reference": "7806d3960ff40f76094015644742041376218c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/1be97f191f166ad745f777cafdaa5609d959984d", - "reference": "1be97f191f166ad745f777cafdaa5609d959984d", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/7806d3960ff40f76094015644742041376218c76", + "reference": "7806d3960ff40f76094015644742041376218c76", "shasum": "" }, "require": { @@ -12624,7 +12630,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.13.2" + "source": "https://github.com/symfony/ux-turbo/tree/v2.14.0" }, "funding": [ { @@ -12640,20 +12646,20 @@ "type": "tidelift" } ], - "time": "2023-11-11T01:20:31+00:00" + "time": "2023-11-14T10:21:35+00:00" }, { "name": "symfony/validator", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c" + "reference": "9c1d8bb4edce5304fcefca7923741085f1ca5b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", - "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", + "url": "https://api.github.com/repos/symfony/validator/zipball/9c1d8bb4edce5304fcefca7923741085f1ca5b60", + "reference": "9c1d8bb4edce5304fcefca7923741085f1ca5b60", "shasum": "" }, "require": { @@ -12672,7 +12678,7 @@ "symfony/http-kernel": "<5.4", "symfony/intl": "<5.4", "symfony/property-info": "<5.4", - "symfony/translation": "<5.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", "symfony/yaml": "<5.4" }, "require-dev": { @@ -12691,7 +12697,7 @@ "symfony/mime": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", @@ -12720,7 +12726,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.2" + "source": "https://github.com/symfony/validator/tree/v6.4.3" }, "funding": [ { @@ -12736,20 +12742,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T16:34:12+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + "reference": "0435a08f69125535336177c29d56af3abc1f69da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", + "reference": "0435a08f69125535336177c29d56af3abc1f69da", "shasum": "" }, "require": { @@ -12805,7 +12811,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" }, "funding": [ { @@ -12821,20 +12827,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2024-01-23T14:53:30+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", - "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", "shasum": "" }, "require": { @@ -12880,7 +12886,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.3" }, "funding": [ { @@ -12896,20 +12902,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:18:35+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/web-link", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "c7e30b9b90c4a9b3c94cc5697c7b8046a6655a51" + "reference": "1722ee157388aaf2f312954addf5b9665e4b7ee9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/c7e30b9b90c4a9b3c94cc5697c7b8046a6655a51", - "reference": "c7e30b9b90c4a9b3c94cc5697c7b8046a6655a51", + "url": "https://api.github.com/repos/symfony/web-link/zipball/1722ee157388aaf2f312954addf5b9665e4b7ee9", + "reference": "1722ee157388aaf2f312954addf5b9665e4b7ee9", "shasum": "" }, "require": { @@ -12963,7 +12969,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v6.4.0" + "source": "https://github.com/symfony/web-link/tree/v6.4.3" }, "funding": [ { @@ -12979,7 +12985,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -13054,16 +13060,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", "shasum": "" }, "require": { @@ -13106,7 +13112,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.3" }, "funding": [ { @@ -13122,7 +13128,7 @@ "type": "tidelift" } ], - "time": "2023-11-06T11:00:25+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "tecnickcom/tc-lib-barcode", @@ -15347,16 +15353,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.4.0", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f" + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/18133a2d8c24e10e58e02b700308ed3a4a60c97f", - "reference": "18133a2d8c24e10e58e02b700308ed3a4a60c97f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", "shasum": "" }, "require": { @@ -15392,9 +15398,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" }, - "time": "2024-01-28T07:31:37+00:00" + "time": "2024-01-31T06:18:54+00:00" }, { "name": "phar-io/manifest", @@ -16353,12 +16359,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "896285f443311a8ce7e936baced47705b9bc4cfc" + "reference": "2f3b470e6ca356a27bf10b2b439c3683d20bebc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/896285f443311a8ce7e936baced47705b9bc4cfc", - "reference": "896285f443311a8ce7e936baced47705b9bc4cfc", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2f3b470e6ca356a27bf10b2b439c3683d20bebc1", + "reference": "2f3b470e6ca356a27bf10b2b439c3683d20bebc1", "shasum": "" }, "conflict": { @@ -16412,6 +16418,7 @@ "bolt/bolt": "<3.7.2", "bolt/core": "<=4.2", "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.13", "brightlocal/phpwhois": "<=4.2.5", "brotkrueml/codehighlight": "<2.7", "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", @@ -16450,7 +16457,7 @@ "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", - "craftcms/cms": "<=4.5.10", + "craftcms/cms": "<4.6.2", "croogo/croogo": "<4", "cuyz/valinor": "<0.12", "czproject/git-php": "<4.0.3", @@ -16508,7 +16515,7 @@ "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", @@ -16560,7 +16567,7 @@ "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.1", + "grumpydictator/firefly-iii": "<6.1.7", "gugoan/economizzer": "<=0.9.0.0-beta1", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", @@ -16642,7 +16649,7 @@ "liftkit/database": "<2.13.2", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6", + "livewire/livewire": ">2.2.4,<2.2.6|>=3,<3.0.4", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", @@ -16658,7 +16665,7 @@ "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", "mautic/core": "<4.3", - "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", + "mediawiki/core": "<1.36.2", "mediawiki/matomo": "<2.4.3", "mediawiki/semantic-media-wiki": "<4.0.2", "melisplatform/melis-asset-manager": "<5.0.1", @@ -16861,13 +16868,14 @@ "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", "ssddanbrown/bookstack": "<22.02.3", - "statamic/cms": "<4.36", + "statamic/cms": "<4.46", "stormpath/sdk": "<9.9.99", "studio-42/elfinder": "<2.1.62", "subhh/libconnect": "<7.0.8|>=8,<8.1", "sukohi/surpass": "<1", "sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10", "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", "swag/paypal": "<5.4.4", "swiftmailer/swiftmailer": ">=4,<5.4.5", "swiftyedit/swiftyedit": "<1.2", @@ -17076,7 +17084,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:04:38+00:00" + "time": "2024-02-02T13:04:17+00:00" }, { "name": "sebastian/cli-parser", @@ -18107,16 +18115,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502" + "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a3bb210e001580ec75e1d02b27fae3452e6bf502", - "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/495ffa2e6d17e199213f93768efa01af32bbf70e", + "reference": "495ffa2e6d17e199213f93768efa01af32bbf70e", "shasum": "" }, "require": { @@ -18155,7 +18163,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.0" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.3" }, "funding": [ { @@ -18171,20 +18179,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/debug-bundle", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202" + "reference": "425c7760a4e6fdc6cb643c791d32277037c971df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/1e07027423d1d37125b60a50997ada26a9d9d202", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/425c7760a4e6fdc6cb643c791d32277037c971df", + "reference": "425c7760a4e6fdc6cb643c791d32277037c971df", "shasum": "" }, "require": { @@ -18229,7 +18237,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v6.4.0" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.3" }, "funding": [ { @@ -18245,20 +18253,20 @@ "type": "tidelift" } ], - "time": "2023-11-01T12:07:38+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" + "reference": "6db31849011fefe091e94d0bb10cba26f7919894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", - "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/6db31849011fefe091e94d0bb10cba26f7919894", + "reference": "6db31849011fefe091e94d0bb10cba26f7919894", "shasum": "" }, "require": { @@ -18296,7 +18304,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.3" }, "funding": [ { @@ -18312,25 +18320,25 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.52.0", + "version": "v1.53.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "112f9466c94a46ca33dc441eee59a12cd1790757" + "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/112f9466c94a46ca33dc441eee59a12cd1790757", - "reference": "112f9466c94a46ca33dc441eee59a12cd1790757", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/8d2f3f96704766837548d177fe3ae39ae94822d9", + "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", - "nikic/php-parser": "^4.11", + "nikic/php-parser": "^4.18|^5.0", "php": ">=8.1", "symfony/config": "^6.3|^7.0", "symfony/console": "^6.3|^7.0", @@ -18354,7 +18362,7 @@ "symfony/phpunit-bridge": "^6.3|^7.0", "symfony/security-core": "^6.3|^7.0", "symfony/yaml": "^6.3|^7.0", - "twig/twig": "^2.0|^3.0" + "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", "extra": { @@ -18388,7 +18396,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.52.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.53.0" }, "funding": [ { @@ -18404,20 +18412,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T18:23:49+00:00" + "time": "2024-02-01T10:05:38+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d49b4f6dc4690cf2c194311bb498abf0cf4f7485", + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485", "shasum": "" }, "require": { @@ -18469,7 +18477,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.3" }, "funding": [ { @@ -18485,20 +18493,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T09:12:31+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2" + "reference": "e78f98da7b4f842bab89368d53c962f5b2f9e49c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/38462d16856740ec0d1ba2cb902eebf09100dde2", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/e78f98da7b4f842bab89368d53c962f5b2f9e49c", + "reference": "e78f98da7b4f842bab89368d53c962f5b2f9e49c", "shasum": "" }, "require": { @@ -18551,7 +18559,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.3" }, "funding": [ { @@ -18567,7 +18575,7 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:18:35+00:00" + "time": "2024-01-28T15:49:46+00:00" }, { "name": "symplify/easy-coding-standard", @@ -18679,16 +18687,16 @@ }, { "name": "vimeo/psalm", - "version": "5.20.0", + "version": "5.21.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4" + "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", - "reference": "3f284e96c9d9be6fe6b15c79416e1d1903dcfef4", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/8c473e2437be8b6a8fd8f630f0f11a16b114c494", + "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494", "shasum": "" }, "require": { @@ -18785,7 +18793,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-01-18T12:15:06+00:00" + "time": "2024-02-01T01:04:32+00:00" } ], "aliases": [ From 75ce9c4370ef019f012731cbf80ba3f0e326db01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 3 Feb 2024 00:50:38 +0100 Subject: [PATCH 043/634] Fixed problem with multi escaping in title tag This should fix issue #505 --- templates/_turbo_control.html.twig | 3 ++- templates/base.html.twig | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/templates/_turbo_control.html.twig b/templates/_turbo_control.html.twig index 252e644d..4c178038 100644 --- a/templates/_turbo_control.html.twig +++ b/templates/_turbo_control.html.twig @@ -18,7 +18,8 @@ {# Insert info about when the sidebar trees were updated last time, so the sidebar_tree_controller can decide if it needs to reload the tree #} -
+{# The title block is already escaped, therefore we dont require any additional escaping here #} +
{% for locale in locale_menu %} diff --git a/templates/base.html.twig b/templates/base.html.twig index 7914a9a7..0204596d 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -26,8 +26,9 @@ - {% apply trim %}{% block title %}{{ partdb_title}}{% endblock %}{% endapply %} - {% set current_page_title = block("title") %} + {# The content block is already escaped. so we must not escape it again. #} + {% apply trim|raw %}{% block title %}{{ partdb_title }}{% endblock %}{% endapply %} + {% set current_page_title = block("title")|raw %} {% block stylesheets %} {# Include the main bootstrap theme based on user/global setting #} From 77b017381ad0a4bcfb4869326de00d8eeea60a77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 17:15:54 +0000 Subject: [PATCH 044/634] Bump codecov/codecov-action from 3 to 4 Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3 to 4. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3...v4) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2b901dd2..8f4610ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -117,7 +117,7 @@ jobs: run: ./bin/phpunit --coverage-clover=coverage.xml - name: Upload coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: env_vars: PHP_VERSION,DB_TYPE token: ${{ secrets.CODECOV_TOKEN }} From 852107f7f67f0540dc6e779d25eb8cc18afecc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 09:41:15 +0100 Subject: [PATCH 045/634] New Crowdin updates (#510) * New translations messages.en.xlf (Chinese Simplified) * New translations validators.en.xlf (Chinese Simplified) * New translations security.en.xlf (Chinese Simplified) * New translations messages.en.xlf (Chinese Simplified) * New translations security.en.xlf (Chinese Simplified) --- translations/messages.zh.xlf | 9077 +++++++++++++++++++++++++++++++- translations/security.zh.xlf | 4 +- translations/validators.zh.xlf | 86 +- 3 files changed, 8926 insertions(+), 241 deletions(-) diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index d04d8962..e160416a 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -9,7 +9,7 @@ attachment_type.caption - 附件文件类型 + 附件类型 @@ -19,7 +19,7 @@ attachment_type.edit - 编辑附件类型 + 编辑文件类型 @@ -29,7 +29,7 @@ attachment_type.new - 新附件类型 + 新建类型 @@ -114,7 +114,7 @@ currency.iso_code.caption - ISO 代码 + 货币ISO代码 @@ -230,7 +230,7 @@ reduceAll - 全部折叠 + 全部收起 @@ -242,7 +242,7 @@ part.info.timetravel_hint - 这就是该部分在 %timestamp% 之前出现的方式。 <i>请注意,此功能尚处于实验阶段,因此信息可能不正确。</i> + 在 %timestamp% 之前,部件是这样显示的。 <i>请注意,这是试验性功能,信息可能不正确。</i> @@ -297,7 +297,7 @@ import_export.label - 导入 / 导出 + 导入/导出 @@ -307,7 +307,7 @@ mass_creation.label - 批量创建 + 大量创建 @@ -318,7 +318,7 @@ admin.common - 通常 + 基本 @@ -358,7 +358,7 @@ mass_creation.help - 每一行将被解释为将创建的元素的名称。 您可以通过缩进创建嵌套结构。 + 每一行将被解析为新建元素的名称。可以通过缩进创建嵌套元素。 @@ -380,7 +380,7 @@ new.caption - 新元素 + 新建元素 @@ -466,7 +466,7 @@ label_profile.caption - 标签属性 + 标签配置 @@ -484,7 +484,7 @@ label_profile.comment - 留言 + 注释 @@ -494,7 +494,7 @@ label_profile.edit - 编辑标签属性 + 编辑标签配置 @@ -504,7 +504,7 @@ label_profile.new - 新建标签属性 + 新建标签配置 @@ -545,7 +545,7 @@ measurement_unit.caption - 测量单位 + 计量单位 @@ -560,7 +560,7 @@ storelocation.labelp - 存储位置 + 储存位置 @@ -591,7 +591,7 @@ supplier.caption - 供货商 + 供应商 @@ -601,7 +601,7 @@ supplier.edit - 编辑供货商 + 编辑供应商 @@ -611,7 +611,7 @@ supplier.new - 新建供货商 + 新建供应商 @@ -621,7 +621,7 @@ user.edit.caption - 用户 + Users @@ -651,7 +651,7 @@ user.edit.tfa.caption - 双因素认证 + 2FA身份验证 @@ -661,7 +661,7 @@ user.edit.tfa.google_active - 已激活认证应用 + 身份验证器应用处于活动状态 @@ -675,7 +675,7 @@ tfa_backup.remaining_tokens - 剩余的备份代码 + 剩余备份代码计数 @@ -701,7 +701,7 @@ user.edit.tfa.disabled - 没有启用此方法 + 方法未启用 @@ -711,7 +711,7 @@ user.edit.tfa.u2f_keys_count - 已激活的安全密钥 + 主动安全密钥 @@ -721,7 +721,7 @@ user.edit.tfa.disable_tfa_title - 你确定要这么做吗? + 确定继续? @@ -731,10 +731,10 @@ user.edit.tfa.disable_tfa_message - 这将禁用<b>用户的所有活动双因素身份验证方法</b>并删除<b>备份代码</b>! + 这将禁用 <b>账号的所有活动2FA身份验证方法</b> 并删除 <b>备份代码</b>! <br> -用户将必须重新设置所有双因素身份验证方法并打印新的备份代码! <br><br> -<b>只有在您完全确定用户的身份(寻求帮助)时才执行此操作,否则账号可能会被攻击者入侵!</b> +该账号将必须重新设置所有2FA身份验证方法并获取新的备份代码。 <br><br> +<b>应在完全确定 申请者身份 时才执行此操作,否则该账号可能会受到攻击。</b> @@ -744,7 +744,7 @@ user.edit.tfa.disable_tfa.btn - 禁用所有双因素认证 + 禁用所有2FA身份验证方法 @@ -791,7 +791,7 @@ attachment.external - 外部附件 + 外部 @@ -803,7 +803,7 @@ attachment.preview.alt - 附件预览 + 附件缩略图 @@ -833,7 +833,7 @@ attachment.file_not_found - 找不到附件 + 文件未找到 @@ -871,7 +871,7 @@ part_lot.edit.delete.confirm - 您真的要删除该库存吗? 这不能被撤消! + 确认删除 该库存 ? 该操作不能被撤消 @@ -882,7 +882,7 @@ entity.delete.confirm_title - 您确实要删除 %name% 吗? + 确定删除 %name%? @@ -893,7 +893,7 @@ entity.delete.message - 这不能被撤消! + 该操作不能被撤销 <br> 子元素将向上移动。 @@ -906,7 +906,7 @@ entity.delete - 删除 + Delete element @@ -921,7 +921,7 @@ edit.log_comment - 更换评论 + 更改评论 @@ -932,7 +932,7 @@ entity.delete.recursive - 递归删除 (所有子元素) + 递归删除(所有子元素) @@ -941,7 +941,7 @@ entity.duplicate - 克隆元素 + 重复元素 @@ -966,7 +966,7 @@ export.level - 日志级别 + 详细程度 @@ -977,7 +977,7 @@ export.level.simple - 简易 + 简单 @@ -988,7 +988,7 @@ export.level.extended - 详细 + 扩展 @@ -999,7 +999,7 @@ export.level.full - 全部 + 完全 @@ -1010,7 +1010,7 @@ export.include_children - 导出(包含子元素) + 在导出中包含子元素 @@ -1082,7 +1082,7 @@ lastModified - 最后修改 + 上次修改 @@ -1092,7 +1092,7 @@ entity.info.parts_count - 此元素下的元件数量 + 具有该元素的部件数量 @@ -1103,7 +1103,7 @@ specifications.property - 特性 + 参数 @@ -1123,7 +1123,7 @@ specifications.value_min - 最小值 + 最小. @@ -1133,7 +1133,7 @@ specifications.value_typ - 典型值 + 标称. @@ -1143,7 +1143,7 @@ specifications.value_max - 最大值 + 最大. @@ -1173,7 +1173,7 @@ specifications.group - + Group @@ -1183,7 +1183,7 @@ specification.create - 创建特性 + 新建参数 @@ -1193,7 +1193,7 @@ parameter.delete.confirm - 确认要删除这个特性吗? + 确实删除该参数? @@ -1217,7 +1217,7 @@ part_list.loading.caption - 加载中 + 加载中... @@ -1231,7 +1231,7 @@ part_list.loading.message - 这可能需要一些时间。 如果此消息没有消失,请尝试重新加载页面。 + 这可能需要一些时间。如果此消息没有消失,请尝试重新加载页面。 @@ -1242,7 +1242,7 @@ vendor.base.javascript_hint - 请激活 Javascript 才能使用所有功能! + 需要激活 Javascript 才能使用所有功能 @@ -1252,7 +1252,7 @@ sidebar.big.toggle - 显示/隐藏侧边栏 + 显示/隐藏 侧边栏 @@ -1263,7 +1263,7 @@ loading.caption - 加载: + 加载中: @@ -1274,7 +1274,7 @@ loading.message - 这可能需要一段时间。 如果此消息持续很长时间,请尝试重新加载页面。 + 这可能需要一段时间。如果此消息长时间存在,请尝试重新加载页面。 @@ -1296,7 +1296,7 @@ back_to_top - 返回至页面顶部 + 返回页面顶部 @@ -1316,7 +1316,7 @@ permission.edit.value - + 配置 @@ -1326,7 +1326,7 @@ permission.legend.title - 状态说明: + 状态说明 @@ -1336,7 +1336,7 @@ permission.legend.disallow - 拒绝 + 禁止 @@ -1356,7 +1356,7 @@ permission.legend.inherit - 从父级继承 + 继承 @@ -1366,7 +1366,7 @@ bool.true - + TRUE @@ -1376,7 +1376,7 @@ bool.false - + FALSE @@ -1386,7 +1386,7 @@ Yes - + YES @@ -1396,7 +1396,7 @@ No - + NO @@ -1427,7 +1427,7 @@ homepage.license - 许可证 + 许可信息 @@ -1438,7 +1438,7 @@ homepage.github.caption - 项目页 + 项目页面 @@ -1449,7 +1449,7 @@ homepage.github.text - 源代码,下载,错误报告,开发目标可以在 <a href="%href%" class="link-external" target="_blank">GitHub 项目页面</a> 找到。 + 源代码、下载、错误报告、待办事项列表等可以在 <a href="%href%" class="link-external" target="_blank">项目仓库</a> 上找到。 @@ -1471,7 +1471,7 @@ homepage.help.text - 帮助和说明可以在 <a href="%href%" class="link-external" target="_blank">GitHub 页面</a> 的 Wiki 中找到。 + 帮助和提示可以在 <a href="%href%" class="link-external" target="_blank">文档</a>中找到。 @@ -1493,7 +1493,7 @@ homepage.last_activity - 最近活动 + 最近的事件 @@ -1512,7 +1512,7 @@ label_generator.common - 通常 + 基本 @@ -1530,7 +1530,7 @@ label_generator.profiles - 配置 + 标签配置 @@ -1539,7 +1539,7 @@ label_generator.selected_profile - 已选择的配置 + 当前选择的配置 @@ -1557,7 +1557,7 @@ label_generator.load_profile - 加载配置 + 载入配置 @@ -1585,7 +1585,7 @@ label_generator.label_empty - 新的空标签 + 新建空标签 @@ -1594,7 +1594,7 @@ label_scanner.title - 标签扫描 + 标签扫描器 @@ -1603,7 +1603,7 @@ label_scanner.no_cam_found.title - 没有找到摄像头 + 未找到摄像头 @@ -1612,7 +1612,7 @@ label_scanner.no_cam_found.text - 您需要一个网络摄像头并授予使用的权限。 您可以在下面手动输入条形码。 + 您需要一个摄像头并授予权限。或在下面手动输入条形码。 @@ -1642,7 +1642,7 @@ log.undo.confirm_title - 真的撤消更改/恢复到时间戳吗? + 确定撤消更改/恢复到时间戳? @@ -1653,7 +1653,7 @@ log.undo.confirm_message - 您真的想撤消给定的更改/将元素重置为给定的时间戳吗? + 确定撤消给定的更改/将元素重置到给定的时间戳? @@ -1663,7 +1663,7 @@ mail.footer.email_sent_by - 这封邮件被以下实体自动发送 + 这封电子邮件是自动发送的,由 @@ -1673,7 +1673,7 @@ mail.footer.dont_reply - 不要回复此邮件。 + 不要回复此电子邮件。 @@ -1683,7 +1683,7 @@ email.hi %name% - 您好 %name% + 你好 %name% @@ -1693,7 +1693,7 @@ email.pw_reset.message - 有人(希望是您)请求重置您的密码。 如果此请求不是您提出的,请忽略此邮件。 + 有人请求重置您的密码。 如果此请求不是您提出的,请忽略此邮件。 @@ -1733,7 +1733,7 @@ email.pw_reset.token - 代码 + Token @@ -1743,7 +1743,7 @@ email.pw_reset.valid_unit %date% - 这些代码将在 <i>%date%</i> 之后过期。 + 重置令牌将在 <i>%date%</i> 之前有效。 @@ -1755,7 +1755,7 @@ orderdetail.delete - 删除 + Delete @@ -1785,7 +1785,7 @@ pricedetails.edit.price_qty - 购买数量 + 数量 @@ -1806,7 +1806,7 @@ part.edit.title - 编辑元件 + 编辑部件 @@ -1817,7 +1817,7 @@ part.edit.card_title - 编辑元件 + 编辑部件 @@ -1827,7 +1827,7 @@ part.edit.tab.common - 通常 + 基础 @@ -1867,7 +1867,7 @@ part.edit.tab.attachments - parti.edit.tab 附件 + 附件 @@ -1877,7 +1877,7 @@ part.edit.tab.orderdetails - parti.edit.tab.订购信息 + 采购信息 @@ -1886,7 +1886,7 @@ part.edit.tab.specifications - parti.edit.tab.自定义参数 + 参数 @@ -1896,7 +1896,248 @@ part.edit.tab.comment - parti.edit.tab.备注 + 注释 + + + + + Part-DB1\templates\Parts\edit\new_part.html.twig:8 + Part-DB1\templates\Parts\edit\new_part.html.twig:8 + templates\Parts\new_part.html.twig:8 + + + part.new.card_title + 创建新部件 + + + + + Part-DB1\templates\Parts\edit\_lots.html.twig:5 + Part-DB1\templates\Parts\edit\_lots.html.twig:5 + + + part_lot.delete + 删除 + + + + + Part-DB1\templates\Parts\edit\_lots.html.twig:28 + Part-DB1\templates\Parts\edit\_lots.html.twig:28 + + + part_lot.create + 增加库存 + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:13 + + + orderdetail.create + 添加经销商 + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:18 + + + pricedetails.edit.delete.confirm + 确实删除此价格? 该操作不能被撤消 + + + + + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:62 + Part-DB1\templates\Parts\edit\_orderdetails.html.twig:61 + + + orderdetails.edit.delete.confirm + 确实要删除此经销商信息? 该操作不能被撤消 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:4 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 + Part-DB1\templates\Parts\info\show_part_info.html.twig:4 + Part-DB1\templates\Parts\info\show_part_info.html.twig:19 + templates\Parts\show_part_info.html.twig:4 + templates\Parts\show_part_info.html.twig:9 + + + part.info.title + 部件的详细信息 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:47 + Part-DB1\templates\Parts\info\show_part_info.html.twig:47 + + + part.part_lots.label + 库存 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:56 + Part-DB1\templates\Parts\lists\_info_card.html.twig:43 + Part-DB1\templates\_navbar_search.html.twig:31 + Part-DB1\templates\_navbar_search.html.twig:26 + templates\base.html.twig:62 + templates\Parts\show_part_info.html.twig:74 + src\Form\PartType.php:86 + + + comment.label + 注释 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 + + + part.info.specifications + 参数 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:74 + Part-DB1\templates\Parts\info\show_part_info.html.twig:64 + templates\Parts\show_part_info.html.twig:82 + + + attachment.labelp + 附件 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:83 + Part-DB1\templates\Parts\info\show_part_info.html.twig:71 + templates\Parts\show_part_info.html.twig:88 + + + vendor.partinfo.shopping_infos + 采购信息 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:91 + Part-DB1\templates\Parts\info\show_part_info.html.twig:78 + templates\Parts\show_part_info.html.twig:94 + + + vendor.partinfo.history + 历史 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:97 + Part-DB1\templates\_sidebar.html.twig:54 + Part-DB1\templates\_sidebar.html.twig:13 + Part-DB1\templates\Parts\info\show_part_info.html.twig:84 + Part-DB1\templates\_sidebar.html.twig:54 + Part-DB1\templates\_sidebar.html.twig:13 + templates\base.html.twig:176 + templates\base.html.twig:203 + templates\base.html.twig:217 + templates\base.html.twig:231 + templates\Parts\show_part_info.html.twig:100 + + + tools.label + 工具 + + + + + Part-DB1\templates\Parts\info\show_part_info.html.twig:103 + Part-DB1\templates\Parts\info\show_part_info.html.twig:90 + + + extended_info.label + 扩展信息 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:7 + + + attachment.name + 名称 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:8 + + + attachment.attachment_type + 附件类型 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:9 + + + attachment.file_name + 文件名 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:10 + + + attachment.file_size + 文件大小 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:54 + + + attachment.preview + 预览图片 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:67 + Part-DB1\templates\Parts\info\_attachments_info.html.twig:50 + + + attachment.download + 下载 + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:11 + new + + + user.creating_user + 创建此部件的用户 @@ -1913,6 +2154,175 @@ 未知 + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:15 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:30 + new + + + accessDenied + 拒绝访问 + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:26 + new + + + user.last_editing_user + 最后编辑此部件的用户 + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:41 + + + part.isFavorite + Favorite + + + + + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + Part-DB1\templates\Parts\info\_extended_infos.html.twig:46 + + + part.minOrderAmount + 最低订购量 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:8 + Part-DB1\templates\_navbar_search.html.twig:46 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 + Part-DB1\templates\Parts\info\_main_infos.html.twig:8 + Part-DB1\templates\_navbar_search.html.twig:41 + Part-DB1\src\Services\ElementTypeNameGenerator.php:84 + templates\base.html.twig:70 + templates\Parts\show_part_info.html.twig:24 + src\Form\PartType.php:80 + + + manufacturer.label + 制造商 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:24 + Part-DB1\templates\_navbar_search.html.twig:11 + templates\base.html.twig:54 + src\Form\PartType.php:62 + + + name.label + 名称 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + Part-DB1\templates\Parts\info\_main_infos.html.twig:27 + new + + + part.back_to_info + 返回当前版本 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:19 + Part-DB1\templates\Parts\info\_main_infos.html.twig:32 + Part-DB1\templates\_navbar_search.html.twig:18 + templates\base.html.twig:58 + templates\Parts\show_part_info.html.twig:31 + src\Form\PartType.php:65 + + + description.label + 描述 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:15 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 + Part-DB1\templates\Parts\info\_main_infos.html.twig:34 + Part-DB1\templates\_navbar_search.html.twig:14 + Part-DB1\src\Services\ElementTypeNameGenerator.php:80 + templates\base.html.twig:56 + templates\Parts\show_part_info.html.twig:32 + src\Form\PartType.php:74 + + + category.label + 类别 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + Part-DB1\templates\Parts\info\_main_infos.html.twig:39 + templates\Parts\show_part_info.html.twig:42 + src\Form\PartType.php:69 + + + instock.label + 在库 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 + Part-DB1\templates\Parts\info\_main_infos.html.twig:41 + templates\Parts\show_part_info.html.twig:44 + src\Form\PartType.php:72 + + + mininstock.label + 最低库存 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:52 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 + Part-DB1\templates\Parts\info\_main_infos.html.twig:45 + Part-DB1\templates\_navbar_search.html.twig:47 + Part-DB1\src\Services\ElementTypeNameGenerator.php:83 + templates\base.html.twig:73 + templates\Parts\show_part_info.html.twig:47 + + + footprint.label + 封装 + + + + + Part-DB1\templates\Parts\info\_main_infos.html.twig:56 + Part-DB1\templates\Parts\info\_main_infos.html.twig:59 + Part-DB1\templates\Parts\info\_main_infos.html.twig:57 + Part-DB1\templates\Parts\info\_main_infos.html.twig:60 + templates\Parts\show_part_info.html.twig:51 + + + part.avg_price.label + 平均价格 + + Part-DB1\templates\Parts\info\_order_infos.html.twig:5 @@ -1930,7 +2340,47 @@ part.supplier.partnr - 元件编号 + 合作伙伴. + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 + Part-DB1\templates\Parts\info\_order_infos.html.twig:28 + + + part.order.minamount + 最低数量 + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 + Part-DB1\templates\Parts\info\_order_infos.html.twig:29 + + + part.order.price + 价格 + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 + Part-DB1\templates\Parts\info\_order_infos.html.twig:31 + + + part.order.single_price + 单价 + + + + + Part-DB1\templates\Parts\info\_order_infos.html.twig:71 + Part-DB1\templates\Parts\info\_order_infos.html.twig:71 + + + edit.caption_short + 编辑 @@ -1943,6 +2393,36 @@ 删除 + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:7 + Part-DB1\templates\Parts\info\_part_lots.html.twig:6 + + + part_lots.description + 描述 + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:8 + Part-DB1\templates\Parts\info\_part_lots.html.twig:7 + + + part_lots.storage_location + 存储位置 + + + + + Part-DB1\templates\Parts\info\_part_lots.html.twig:9 + Part-DB1\templates\Parts\info\_part_lots.html.twig:8 + + + part_lots.amount + 数量 + + Part-DB1\templates\Parts\info\_part_lots.html.twig:24 @@ -1950,7 +2430,7 @@ part_lots.location_unknown - 未知储存位置 + 存储位置未知 @@ -1960,7 +2440,7 @@ part_lots.instock_unknown - 数量不明 + 数量未知 @@ -1970,7 +2450,7 @@ part_lots.expiration_date - 过期时间 + 到期时间 @@ -1980,7 +2460,7 @@ part_lots.is_expired - 已过期 + 已到期 @@ -2030,7 +2510,7 @@ part.needs_review.badge - 需要检查 + 需要审查 @@ -2050,7 +2530,7 @@ part.obsolete.badge - 已停产 + 不再可用 @@ -2059,7 +2539,7 @@ parameters.extracted_from_description - 自动从描述提取 + 从描述中自动提取 @@ -2068,7 +2548,7 @@ parameters.auto_extracted_from_comment - 自动从说明中提取 + 从注释中自动提取 @@ -2079,7 +2559,7 @@ part.edit.btn - 编辑元件 + 编辑部件 @@ -2090,7 +2570,7 @@ part.clone.btn - 克隆元件 + 克隆部件 @@ -2101,7 +2581,7 @@ part.create.btn - 新建元件 + 新建部件 @@ -2111,7 +2591,7 @@ part.delete.confirm_title - 是否确定删除这个元件? + 确定删除该部件? @@ -2121,7 +2601,7 @@ part.delete.message - 此元件和任何相关信息(如附件、价格信息等)将被删除。 这不能被撤消! + 此部件与它的任何相关信息(如附件、价格信息等)将被删除。 该操作不能被撤消 @@ -2131,7 +2611,7 @@ part.delete - 删除元件 + 删除部件 @@ -2141,7 +2621,7 @@ parts_list.all.title - 所有元件 + 所有部件 @@ -2151,7 +2631,7 @@ parts_list.category.title - 元件类别 + 部件(根据类别) @@ -2161,7 +2641,7 @@ parts_list.footprint.title - 元件封装 + 部件(根据封装) @@ -2171,7 +2651,7 @@ parts_list.manufacturer.title - 元件制造商 + 部件(根据制造商) @@ -2181,7 +2661,7 @@ parts_list.search.title - 搜索元件 + 搜索部件 @@ -2191,7 +2671,7 @@ parts_list.storelocation.title - 元件储存位置 + 部件(根据存储位置) @@ -2201,7 +2681,27 @@ parts_list.supplier.title - 元件供应商 + 部件(根据供应商) + + + + + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 + Part-DB1\templates\Parts\lists\tags_list.html.twig:4 + + + parts_list.tags.title + 部件(根据标签) + + + + + Part-DB1\templates\Parts\lists\_info_card.html.twig:22 + Part-DB1\templates\Parts\lists\_info_card.html.twig:17 + + + entity.info.common.tab + 基本 @@ -2211,7 +2711,7 @@ entity.info.statistics.tab - 统计 + 统计数据 @@ -2251,7 +2751,7 @@ entity.info.parent - 父级 + 父元素 @@ -2271,7 +2771,7 @@ entity.info.children_count - 子元素数量 + 子元素计数 @@ -2283,7 +2783,7 @@ tfa.check.title - 需要双因素认证 + 需要2FA身份验证 @@ -2293,7 +2793,7 @@ tfa.code.trusted_pc - 这是受信任的计算机(如果启用此功能,则不会在此计算机上执行进一步的两因素查询) + 这是受信任的计算机(如果启用此功能,则不会在此计算机上执行进一步的2FA查询) @@ -2319,7 +2819,7 @@ user.logout - 登出 + 注销 @@ -2329,7 +2829,7 @@ tfa.check.code.label - 认证器代码 + 身份验证器应用代码 @@ -2339,7 +2839,7 @@ tfa.check.code.help - 输入身份验证器应用程序中的 6 位代码,或者如果身份验证器不可用,请输入备用代码之一。 + 输入身份验证器应用中的6位代码,如果身份验证器不可用,请输入备用代码之一。 @@ -2416,7 +2916,7 @@ login.rememberme - 请记住您的登录信息 + 记住我(不应在公共计算机上使用) @@ -2426,7 +2926,7 @@ pw_reset.password_forget - 忘记用户名/密码 + 忘记用户名/密码? @@ -2446,7 +2946,7 @@ pw_reset.request.header.title - 请求新密码 + 要求新的密码 @@ -2470,7 +2970,7 @@ r_u2f_two_factor.pressbutton - 请插入您的安全密钥并按下其按钮! + 请插入您的安全密钥并按下其按钮 @@ -2492,7 +2992,7 @@ tfa_u2f.explanation - 借助 U2F/FIDO 兼容的安全密钥(例如 YubiKey 或 NitroKey),可以实现用户友好且安全的双因素身份验证。 可以在此处注册安全密钥,如果需要两步验证,只需通过 USB 插入密钥或通过 NFC 在设备上输入密钥即可。 + 借助 U2F/FIDO 兼容的安全密钥(例如 YubiKey 或 NitroKey),可以实现用户友好且安全的2FA身份验证。 可以在此处注册安全密钥,如果需要两步验证,只需通过 USB 插入密钥或通过 NFC 在设备上输入密钥即可。 @@ -2502,7 +3002,7 @@ tfa_u2f.add_key.backup_hint - 为了即使钥匙丢失也能确保访问,建议注册第二把钥匙作为备份并将其存放在安全的地方! + 为了确保即使密钥丢失也能访问,建议注册第二个密钥作为备份并将其存放在安全的地方! @@ -2556,7 +3056,7 @@ statistics.parts - 元件 + 部件 @@ -2593,7 +3093,7 @@ statistics.property - 属性 + 特性 @@ -2619,7 +3119,7 @@ statistics.distinct_parts_count - 唯一部件的数量 + 部件总数 @@ -2630,7 +3130,7 @@ statistics.parts_instock_sum - 所有元件库存的总和 + 库存总数 @@ -2641,7 +3141,7 @@ statistics.parts_with_price - 带有价格信息的元件数量 + 部件总数(拥有价格) @@ -2652,7 +3152,7 @@ statistics.categories_count - 分类计数 + 类别总数 @@ -2663,7 +3163,7 @@ statistics.footprints_count - 封装计数 + 封装总数 @@ -2674,7 +3174,7 @@ statistics.manufacturers_count - 制造商计数 + 制造商总数 @@ -2685,7 +3185,7 @@ statistics.storelocations_count - 存储位置计数 + 存储位置总数 @@ -2696,7 +3196,7 @@ statistics.suppliers_count - 供货商数量 + 供应商总数 @@ -2707,7 +3207,7 @@ statistics.currencies_count - 货币计数 + 货币种类总数 @@ -2718,7 +3218,7 @@ statistics.measurement_units_count - 测量单位计数 + 度量单位总数 @@ -2729,7 +3229,7 @@ statistics.devices_count - 工程计数 + 项目总数 @@ -2740,7 +3240,7 @@ statistics.attachment_types_count - 附件类型计数 + 附件类型总数 @@ -2751,7 +3251,7 @@ statistics.all_attachments_count - 所有附件计数 + 附件总数 @@ -2762,7 +3262,61 @@ statistics.user_uploaded_attachments_count - 用户上传附件数 + 附件总数(用户上传) + + + + + Part-DB1\templates\Statistics\statistics.html.twig:122 + Part-DB1\templates\Statistics\statistics.html.twig:122 + new + + + statistics.private_attachments_count + 附件数量(私有) + + + + + Part-DB1\templates\Statistics\statistics.html.twig:126 + Part-DB1\templates\Statistics\statistics.html.twig:126 + new + + + statistics.external_attachments_count + 附件总数(外部) + + + + + Part-DB1\templates\Users\backup_codes.html.twig:3 + Part-DB1\templates\Users\backup_codes.html.twig:9 + Part-DB1\templates\Users\backup_codes.html.twig:3 + Part-DB1\templates\Users\backup_codes.html.twig:9 + + + tfa_backup.codes.title + 备份代码 + + + + + Part-DB1\templates\Users\backup_codes.html.twig:12 + Part-DB1\templates\Users\backup_codes.html.twig:12 + + + tfa_backup.codes.explanation + 打印这些代码并将其保存在安全的地方! + + + + + Part-DB1\templates\Users\backup_codes.html.twig:13 + Part-DB1\templates\Users\backup_codes.html.twig:13 + + + tfa_backup.codes.help + 如果您无法再使用身份验证器应用程序访问您的设备(智能手机丢失、数据丢失等),您可以使用这些代码之一来访问您的帐户,并可能设置一个新的身份验证器应用程序。 每个代码只能使用一次,建议删除已使用的代码。 有权访问这些代码的任何人都可能访问您的帐户,因此请将它们保存在安全的地方。 @@ -2775,6 +3329,489 @@ 用户名 + + + Part-DB1\templates\Users\backup_codes.html.twig:29 + Part-DB1\templates\Users\backup_codes.html.twig:29 + + + tfa_backup.codes.page_generated_on + 页面生成于 %date% + + + + + Part-DB1\templates\Users\backup_codes.html.twig:32 + Part-DB1\templates\Users\backup_codes.html.twig:32 + + + tfa_backup.codes.print + 打印 + + + + + Part-DB1\templates\Users\backup_codes.html.twig:35 + Part-DB1\templates\Users\backup_codes.html.twig:35 + + + tfa_backup.codes.copy_clipboard + 复制到剪贴板 + + + + + Part-DB1\templates\Users\user_info.html.twig:3 + Part-DB1\templates\Users\user_info.html.twig:6 + Part-DB1\templates\_navbar.html.twig:40 + Part-DB1\templates\Users\user_info.html.twig:3 + Part-DB1\templates\Users\user_info.html.twig:6 + Part-DB1\templates\_navbar.html.twig:38 + templates\base.html.twig:99 + templates\Users\user_info.html.twig:3 + templates\Users\user_info.html.twig:6 + + + user.info.label + 用户信息 + + + + + Part-DB1\templates\Users\user_info.html.twig:18 + Part-DB1\src\Form\UserSettingsType.php:77 + Part-DB1\templates\Users\user_info.html.twig:18 + Part-DB1\src\Form\UserSettingsType.php:77 + templates\Users\user_info.html.twig:18 + src\Form\UserSettingsType.php:32 + + + user.firstName.label + 名称 + + + + + Part-DB1\templates\Users\user_info.html.twig:24 + Part-DB1\src\Form\UserSettingsType.php:82 + Part-DB1\templates\Users\user_info.html.twig:24 + Part-DB1\src\Form\UserSettingsType.php:82 + templates\Users\user_info.html.twig:24 + src\Form\UserSettingsType.php:35 + + + user.lastName.label + 姓氏 + + + + + Part-DB1\templates\Users\user_info.html.twig:30 + Part-DB1\src\Form\UserSettingsType.php:92 + Part-DB1\templates\Users\user_info.html.twig:30 + Part-DB1\src\Form\UserSettingsType.php:92 + templates\Users\user_info.html.twig:30 + src\Form\UserSettingsType.php:41 + + + user.email.label + 邮件 + + + + + Part-DB1\templates\Users\user_info.html.twig:37 + Part-DB1\src\Form\UserSettingsType.php:87 + Part-DB1\templates\Users\user_info.html.twig:37 + Part-DB1\src\Form\UserSettingsType.php:87 + templates\Users\user_info.html.twig:37 + src\Form\UserSettingsType.php:38 + + + user.department.label + 部门 + + + + + Part-DB1\templates\Users\user_info.html.twig:47 + Part-DB1\src\Form\UserSettingsType.php:73 + Part-DB1\templates\Users\user_info.html.twig:47 + Part-DB1\src\Form\UserSettingsType.php:73 + templates\Users\user_info.html.twig:47 + src\Form\UserSettingsType.php:30 + + + user.username.label + 用户名 + + + + + Part-DB1\templates\Users\user_info.html.twig:53 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 + Part-DB1\templates\Users\user_info.html.twig:53 + Part-DB1\src\Services\ElementTypeNameGenerator.php:93 + templates\Users\user_info.html.twig:53 + + + group.label + 组: + + + + + Part-DB1\templates\Users\user_info.html.twig:67 + Part-DB1\templates\Users\user_info.html.twig:67 + + + user.permissions + 权限 + + + + + Part-DB1\templates\Users\user_settings.html.twig:3 + Part-DB1\templates\Users\user_settings.html.twig:6 + Part-DB1\templates\_navbar.html.twig:39 + Part-DB1\templates\Users\user_settings.html.twig:3 + Part-DB1\templates\Users\user_settings.html.twig:6 + Part-DB1\templates\_navbar.html.twig:37 + templates\base.html.twig:98 + templates\Users\user_settings.html.twig:3 + templates\Users\user_settings.html.twig:6 + + + user.settings.label + 用户设置 + + + + + Part-DB1\templates\Users\user_settings.html.twig:18 + Part-DB1\templates\Users\user_settings.html.twig:18 + templates\Users\user_settings.html.twig:14 + + + user_settings.data.label + 个人资料 + + + + + Part-DB1\templates\Users\user_settings.html.twig:22 + Part-DB1\templates\Users\user_settings.html.twig:22 + templates\Users\user_settings.html.twig:18 + + + user_settings.configuration.label + 配置 + + + + + Part-DB1\templates\Users\user_settings.html.twig:55 + Part-DB1\templates\Users\user_settings.html.twig:55 + templates\Users\user_settings.html.twig:48 + + + user.settings.change_pw + 修改密码 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:6 + Part-DB1\templates\Users\_2fa_settings.html.twig:6 + + + user.settings.2fa_settings + 2FA身份验证 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:13 + Part-DB1\templates\Users\_2fa_settings.html.twig:13 + + + tfa.settings.google.tab + 验证器应用 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:17 + Part-DB1\templates\Users\_2fa_settings.html.twig:17 + + + tfa.settings.bakup.tab + 备份代码 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:21 + Part-DB1\templates\Users\_2fa_settings.html.twig:21 + + + tfa.settings.u2f.tab + 安全密钥 (U2F) + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:25 + Part-DB1\templates\Users\_2fa_settings.html.twig:25 + + + tfa.settings.trustedDevices.tab + 可信设备 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + + + tfa_google.disable.confirm_title + 确定禁用身份验证器应用? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + Part-DB1\templates\Users\_2fa_settings.html.twig:33 + + + tfa_google.disable.confirm_message + 如果禁用验证器应用,所有备份代码将被删除。<br> +请注意,如果没有2FA身份验证,您的帐户就被攻击的风险会提供。 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:39 + Part-DB1\templates\Users\_2fa_settings.html.twig:39 + + + tfa_google.disabled_message + 身份验证器应用已停用! + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:48 + Part-DB1\templates\Users\_2fa_settings.html.twig:48 + + + tfa_google.step.download + 下载验证器应用(例如<a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> oder <a class="link-external" target="_blank" href="https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp">FreeOTP Authenticator</a>) + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:49 + Part-DB1\templates\Users\_2fa_settings.html.twig:49 + + + tfa_google.step.scan + 使用应用程序扫描二维码或手动输入数据 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:50 + Part-DB1\templates\Users\_2fa_settings.html.twig:50 + + + tfa_google.step.input_code + 在下方输入生成的代码并确认 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:51 + Part-DB1\templates\Users\_2fa_settings.html.twig:51 + + + tfa_google.step.download_backup + 打印备份代码并妥善保存 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:58 + Part-DB1\templates\Users\_2fa_settings.html.twig:58 + + + tfa_google.manual_setup + 手动设置 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:62 + Part-DB1\templates\Users\_2fa_settings.html.twig:62 + + + tfa_google.manual_setup.type + 类型 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:63 + Part-DB1\templates\Users\_2fa_settings.html.twig:63 + + + tfa_google.manual_setup.username + 用户名 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:64 + Part-DB1\templates\Users\_2fa_settings.html.twig:64 + + + tfa_google.manual_setup.secret + 保密 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:65 + Part-DB1\templates\Users\_2fa_settings.html.twig:65 + + + tfa_google.manual_setup.digit_count + 位数 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:74 + Part-DB1\templates\Users\_2fa_settings.html.twig:74 + + + tfa_google.enabled_message + 身份验证器应用已启用 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:83 + Part-DB1\templates\Users\_2fa_settings.html.twig:83 + + + tfa_backup.disabled + 备份代码已禁用。 设置验证器应用以启用备份代码。 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:84 + Part-DB1\templates\Users\_2fa_settings.html.twig:92 + Part-DB1\templates\Users\_2fa_settings.html.twig:84 + Part-DB1\templates\Users\_2fa_settings.html.twig:92 + + + tfa_backup.explanation + 即使身份验证器应用设备丢失,也可以使用备份代码来访问帐户。 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + + + tfa_backup.reset_codes.confirm_title + 确认重置备份代码? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + Part-DB1\templates\Users\_2fa_settings.html.twig:88 + + + tfa_backup.reset_codes.confirm_message + 这将删除所有旧备份代码并生成新备份代码。操作不能被撤消。 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:91 + Part-DB1\templates\Users\_2fa_settings.html.twig:91 + + + tfa_backup.enabled + 备份代码已启用 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:99 + Part-DB1\templates\Users\_2fa_settings.html.twig:99 + + + tfa_backup.show_codes + 显示备份代码 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:114 + Part-DB1\templates\Users\_2fa_settings.html.twig:114 + + + tfa_u2f.table_caption + 已注册的安全密钥 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:115 + Part-DB1\templates\Users\_2fa_settings.html.twig:115 + + + tfa_u2f.delete_u2f.confirm_title + 确认删除安全密钥? + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:116 + Part-DB1\templates\Users\_2fa_settings.html.twig:116 + + + tfa_u2f.delete_u2f.confirm_message + 如果删除此密钥,将无法再使用此密钥登录。如果没有可用的安全密钥,2FA身份验证将被禁用。 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:123 + Part-DB1\templates\Users\_2fa_settings.html.twig:123 + + + tfa_u2f.keys.name + 密钥名称 + + + + + Part-DB1\templates\Users\_2fa_settings.html.twig:124 + Part-DB1\templates\Users\_2fa_settings.html.twig:124 + + + tfa_u2f.keys.added_date + 注册日期 + + Part-DB1\templates\Users\_2fa_settings.html.twig:134 @@ -2792,7 +3829,7 @@ tfa_u2f.no_keys_registered - 没有注册任何安全密钥 + 尚未注册密钥。 @@ -2812,8 +3849,8 @@ tfa_trustedDevices.explanation - 在检查双因素认证时,可以将当前计算机标记为可信,这样不再需要对此计算机进行双因素检查。 -如果您的操作不正确或者计算机不再受信任,您可以在此处重置<i>所有 </i>计算机的状态。 + 在检查第二因素时,可以将当前计算机标记为可信,因此不再需要对此计算机进行2FA检查。 +如果您执行此操作不正确或者计算机不再受信任,您可以在此处重置 <i>所有 </i>计算机的状态。 @@ -2823,7 +3860,7 @@ tfa_trustedDevices.invalidate.confirm_title - 真的要删除所有受信任的计算机吗? + 确认删除所有受信任的计算机? @@ -2833,7 +3870,7 @@ tfa_trustedDevices.invalidate.confirm_message - 您必须在所有计算机上再次执行双因素身份验证。 确保您手边有双因素设备。 + 必须在所有计算机上再次执行2FA身份验证。确保有可用的身份验证器应用设备。 @@ -2843,7 +3880,7 @@ tfa_trustedDevices.invalidate.btn - 重置认可的设备 + 重置受信任设备 @@ -2863,7 +3900,7 @@ navbar.scanner.link - 扫描仪 + 扫描器 @@ -2874,7 +3911,7 @@ user.loggedin.label - 登录为 + 登录: @@ -2909,7 +3946,7 @@ user.language_select - 语言选择 + 切换语言 @@ -2955,7 +3992,7 @@ ordernumber.label.short - 供货商单号 + 供应商合作伙伴 @@ -2968,7 +4005,7 @@ supplier.label - 供货商 + 供应商 @@ -2979,7 +4016,7 @@ search.deactivateBarcode - 条码已停用 + 停用条码 @@ -2990,7 +4027,7 @@ search.regexmatching - 正则表达式检索 + 正则匹配 @@ -3000,7 +4037,7 @@ search.submit - 搜索 + GO! @@ -3029,7 +4066,7 @@ actions - 动作 + 操作 @@ -3068,7 +4105,7 @@ supplier.labelp - 供货商 + 供应商 @@ -3084,7 +4121,7 @@ attachment.download_failed - 下载外部附件失败 + 外部附件下载失败。 @@ -3094,7 +4131,7 @@ entity.edit_flash - 修改成功保存 + 更改保存成功。 @@ -3104,7 +4141,7 @@ entity.edit_flash.invalid - 无法保存变更。检查的你的输入! + 无法保存更改。请检查输入 @@ -3114,7 +4151,7 @@ entity.created_flash - 元素已创建 + 元素已创建。 @@ -3124,7 +4161,7 @@ entity.created_flash.invalid - 无法创建元素。请检查你的输入! + 无法创建元素。请检查输入 @@ -3135,7 +4172,7 @@ attachment_type.deleted - 元素已删除! + 元素已删除。 @@ -3151,7 +4188,7 @@ csfr_invalid - CSRF Token 无效。请刷新你懂的页面或联系管理员。 + CSRF Token 无效。如果此消息仍然存在,请重新加载此页面或联系管理员。 @@ -3160,7 +4197,7 @@ label_generator.no_entities_found - 在此范围内没有发现物品 + 未找到匹配的实体。 @@ -3171,7 +4208,7 @@ log.undo.target_not_found - 目标元素无法在数据库中找到! + 在数据库中找不到目标元素。 @@ -3182,7 +4219,7 @@ log.undo.revert_success - 成功还原到目标时间戳 + 已成功恢复时间戳。 @@ -3193,7 +4230,7 @@ log.undo.element_undelete_success - 撤销删除元素成功 + 已成功取消删除元素。 @@ -3204,7 +4241,7 @@ log.undo.element_element_already_undeleted - 元素成功删除 + 元素已取消删除。 @@ -3215,7 +4252,7 @@ log.undo.element_delete_success - 成功删除元素 + 元素删除成功。 @@ -3226,7 +4263,7 @@ log.undo.element.element_already_delted - 元素已经被删除 + 元素已被删除。 @@ -3237,7 +4274,7 @@ log.undo.element_change_undone - 已成功撤销变更 + 更改撤消成功。 @@ -3248,7 +4285,7 @@ log.undo.do_undelete_before - 你必须取消删除此元素才能撤销这个变更! + 必须先取消删除该元素,才能撤消此更改。 @@ -3259,7 +4296,7 @@ log.undo.log_type_invalid - 日志条目不能被回滚! + 此日志条目无法撤消。 @@ -3270,7 +4307,7 @@ part.edited_flash - 变更已保存! + 已保存更改。 @@ -3280,7 +4317,7 @@ part.edited_flash.invalid - 保存时发生错误:请检查你的输入! + 保存时出错。请检查输入 @@ -3290,7 +4327,7 @@ part.deleted - 元件已删除 + 部件删除成功。 @@ -3303,7 +4340,7 @@ part.created_flash - 元件已创建 + 部件已创建。 @@ -3313,7 +4350,7 @@ part.created_flash.invalid - 创建时发生错误:请检查你的输入! + 创建过程中出错。请检查输入 @@ -3323,7 +4360,7 @@ scan.qr_not_found - 没有发现匹配的条码 + 未找到匹配条形码的元素。 @@ -3332,7 +4369,7 @@ scan.format_unknown - 未知类型 + 格式未知。 @@ -3341,7 +4378,7 @@ scan.qr_success - 发现元素 + 找到元素。 @@ -3351,7 +4388,859 @@ pw_reset.user_or_email - 用户名 / 邮箱 + 用户名或邮件 + + + + + Part-DB1\src\Controller\SecurityController.php:131 + Part-DB1\src\Controller\SecurityController.php:126 + + + pw_reset.request.success + 重置请求成功。请检查邮箱 + + + + + Part-DB1\src\Controller\SecurityController.php:162 + Part-DB1\src\Controller\SecurityController.php:160 + + + pw_reset.username + 用户名 + + + + + Part-DB1\src\Controller\SecurityController.php:165 + Part-DB1\src\Controller\SecurityController.php:163 + + + pw_reset.token + Token + + + + + Part-DB1\src\Controller\SecurityController.php:194 + Part-DB1\src\Controller\SecurityController.php:192 + + + pw_reset.new_pw.error + 用户名或Token无效。请检查输入 + + + + + Part-DB1\src\Controller\SecurityController.php:196 + Part-DB1\src\Controller\SecurityController.php:194 + + + pw_reset.new_pw.success + 密码重置成功。现在可以使用新密码登录。 + + + + + Part-DB1\src\Controller\UserController.php:107 + Part-DB1\src\Controller\UserController.php:99 + + + user.edit.reset_success + 成功禁用所有2FA身份验证。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:101 + Part-DB1\src\Controller\UserSettingsController.php:92 + + + tfa_backup.no_codes_enabled + 未启用备份代码。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:138 + Part-DB1\src\Controller\UserSettingsController.php:132 + + + tfa_u2f.u2f_delete.not_existing + 不存在此ID的安全密钥。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:145 + Part-DB1\src\Controller\UserSettingsController.php:139 + + + tfa_u2f.u2f_delete.access_denied + 无法删除其他用户的安全密钥。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:153 + Part-DB1\src\Controller\UserSettingsController.php:147 + + + tfa.u2f.u2f_delete.success + 成功删除安全密钥。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:188 + Part-DB1\src\Controller\UserSettingsController.php:180 + + + tfa_trustedDevice.invalidate.success + 成功重置受信任设备。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:235 + Part-DB1\src\Controller\UserSettingsController.php:226 + src\Controller\UserController.php:98 + + + user.settings.saved_flash + 设置已保存。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:297 + Part-DB1\src\Controller\UserSettingsController.php:288 + src\Controller\UserController.php:130 + + + user.settings.pw_changed_flash + 密码已更改。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:317 + Part-DB1\src\Controller\UserSettingsController.php:306 + + + user.settings.2fa.google.activated + 成功激活身份验证器应用。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:328 + Part-DB1\src\Controller\UserSettingsController.php:315 + + + user.settings.2fa.google.disabled + 成功停用身份验证器应用。 + + + + + Part-DB1\src\Controller\UserSettingsController.php:346 + Part-DB1\src\Controller\UserSettingsController.php:332 + + + user.settings.2fa.backup_codes.regenerated + 成功生成新备份代码。 + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + Part-DB1\src\DataTables\AttachmentDataTable.php:148 + + + attachment.table.filename + 文件名 + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + Part-DB1\src\DataTables\AttachmentDataTable.php:153 + + + attachment.table.filesize + 文件大小 + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:245 + Part-DB1\src\DataTables\PartsDataTable.php:252 + Part-DB1\src\DataTables\AttachmentDataTable.php:183 + Part-DB1\src\DataTables\AttachmentDataTable.php:191 + Part-DB1\src\DataTables\AttachmentDataTable.php:200 + Part-DB1\src\DataTables\AttachmentDataTable.php:209 + Part-DB1\src\DataTables\PartsDataTable.php:193 + Part-DB1\src\DataTables\PartsDataTable.php:200 + + + true + TRUE + + + + + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:246 + Part-DB1\src\DataTables\PartsDataTable.php:253 + Part-DB1\src\Form\Type\SIUnitType.php:139 + Part-DB1\src\DataTables\AttachmentDataTable.php:184 + Part-DB1\src\DataTables\AttachmentDataTable.php:192 + Part-DB1\src\DataTables\AttachmentDataTable.php:201 + Part-DB1\src\DataTables\AttachmentDataTable.php:210 + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:201 + Part-DB1\src\Form\Type\SIUnitType.php:139 + + + false + FALSE + + + + + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:128 + Part-DB1\src\DataTables\Column\LogEntryTargetColumn.php:119 + + + log.target_deleted + 已删除 + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:57 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:60 + new + + + log.undo.undelete + 撤销删除 + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:63 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:66 + new + + + log.undo.undo + 撤消更改 + + + + + Part-DB1\src\DataTables\Column\RevertLogColumn.php:83 + Part-DB1\src\DataTables\Column\RevertLogColumn.php:86 + new + + + log.undo.revert + 恢复到时间戳 + + + + + Part-DB1\src\DataTables\LogDataTable.php:173 + Part-DB1\src\DataTables\LogDataTable.php:161 + + + log.id + ID + + + + + Part-DB1\src\DataTables\LogDataTable.php:178 + Part-DB1\src\DataTables\LogDataTable.php:166 + + + log.timestamp + 时间戳 + + + + + Part-DB1\src\DataTables\LogDataTable.php:183 + Part-DB1\src\DataTables\LogDataTable.php:171 + + + log.type + 事件 + + + + + Part-DB1\src\DataTables\LogDataTable.php:191 + Part-DB1\src\DataTables\LogDataTable.php:179 + + + log.level + 等级 + + + + + Part-DB1\src\DataTables\LogDataTable.php:200 + Part-DB1\src\DataTables\LogDataTable.php:188 + + + log.user + 用户 + + + + + Part-DB1\src\DataTables\LogDataTable.php:213 + Part-DB1\src\DataTables\LogDataTable.php:201 + + + log.target_type + 目标类型 + + + + + Part-DB1\src\DataTables\LogDataTable.php:226 + Part-DB1\src\DataTables\LogDataTable.php:214 + + + log.target + 目标 + + + + + Part-DB1\src\DataTables\LogDataTable.php:231 + Part-DB1\src\DataTables\LogDataTable.php:218 + new + + + log.extra + 其他 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:168 + Part-DB1\src\DataTables\PartsDataTable.php:116 + + + part.table.name + 名称 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:178 + Part-DB1\src\DataTables\PartsDataTable.php:126 + + + part.table.id + Id + + + + + Part-DB1\src\DataTables\PartsDataTable.php:182 + Part-DB1\src\DataTables\PartsDataTable.php:130 + + + part.table.description + 描述 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:185 + Part-DB1\src\DataTables\PartsDataTable.php:133 + + + part.table.category + 类别 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:190 + Part-DB1\src\DataTables\PartsDataTable.php:138 + + + part.table.footprint + 封装 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:194 + Part-DB1\src\DataTables\PartsDataTable.php:142 + + + part.table.manufacturer + 制造商 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:197 + Part-DB1\src\DataTables\PartsDataTable.php:145 + + + part.table.storeLocations + 储存地点 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:216 + Part-DB1\src\DataTables\PartsDataTable.php:164 + + + part.table.amount + 数量 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:224 + Part-DB1\src\DataTables\PartsDataTable.php:172 + + + part.table.minamount + 最小数量 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:232 + Part-DB1\src\DataTables\PartsDataTable.php:180 + + + part.table.partUnit + 计量单位 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:236 + Part-DB1\src\DataTables\PartsDataTable.php:184 + + + part.table.addedDate + 创建时间 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:240 + Part-DB1\src\DataTables\PartsDataTable.php:188 + + + part.table.lastModified + 修改时间 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:244 + Part-DB1\src\DataTables\PartsDataTable.php:192 + + + part.table.needsReview + 需要审查 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:251 + Part-DB1\src\DataTables\PartsDataTable.php:199 + + + part.table.favorite + 收藏 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:258 + Part-DB1\src\DataTables\PartsDataTable.php:206 + + + part.table.manufacturingStatus + 状态 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:260 + Part-DB1\src\DataTables\PartsDataTable.php:262 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:208 + Part-DB1\src\DataTables\PartsDataTable.php:210 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.unknown + 未知 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:263 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:211 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.announced + 公布 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:264 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.active + 活动 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:265 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:213 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.nrfnd + 不推荐用于新设计 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:266 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:214 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.eol + 即将停产 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:267 + Part-DB1\src\Form\Part\PartBaseType.php:90 + Part-DB1\src\DataTables\PartsDataTable.php:215 + Part-DB1\src\Form\Part\PartBaseType.php:88 + + + m_status.discontinued + 停产 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:271 + Part-DB1\src\DataTables\PartsDataTable.php:219 + + + part.table.mpn + MPN + + + + + Part-DB1\src\DataTables\PartsDataTable.php:275 + Part-DB1\src\DataTables\PartsDataTable.php:223 + + + part.table.mass + 重量 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:279 + Part-DB1\src\DataTables\PartsDataTable.php:227 + + + part.table.tags + 标签 + + + + + Part-DB1\src\DataTables\PartsDataTable.php:283 + Part-DB1\src\DataTables\PartsDataTable.php:231 + + + part.table.attachments + 附件 + + + + + Part-DB1\src\EventSubscriber\UserSystem\LoginSuccessSubscriber.php:82 + Part-DB1\src\EventSubscriber\LoginSuccessListener.php:82 + + + flash.login_successful + 登陆成功 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + src\Form\ImportType.php:68 + + + JSON + JSON + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + src\Form\ImportType.php:68 + + + XML + XML + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + src\Form\ImportType.php:68 + + + CSV + CSV + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:77 + Part-DB1\src\Form\AdminPages\ImportType.php:77 + src\Form\ImportType.php:68 + + + YAML + YAML + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:124 + Part-DB1\src\Form\AdminPages\ImportType.php:124 + + + import.abort_on_validation.help + 遇到无效数据时停止导入 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:86 + Part-DB1\src\Form\AdminPages\ImportType.php:86 + src\Form\ImportType.php:70 + + + import.csv_separator + CSV分隔符 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:93 + Part-DB1\src\Form\AdminPages\ImportType.php:93 + src\Form\ImportType.php:72 + + + parent.label + 父元素 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:101 + Part-DB1\src\Form\AdminPages\ImportType.php:101 + src\Form\ImportType.php:75 + + + import.file + 文件 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:111 + Part-DB1\src\Form\AdminPages\ImportType.php:111 + src\Form\ImportType.php:78 + + + import.preserve_children + 导入时保留子元素 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:120 + Part-DB1\src\Form\AdminPages\ImportType.php:120 + src\Form\ImportType.php:80 + + + import.abort_on_validation + 遇到无效数据时中止 + + + + + Part-DB1\src\Form\AdminPages\ImportType.php:132 + Part-DB1\src\Form\AdminPages\ImportType.php:132 + src\Form\ImportType.php:85 + + + import.btn + 导入 + + + + + Part-DB1\src\Form\AttachmentFormType.php:113 + Part-DB1\src\Form\AttachmentFormType.php:109 + + + attachment.edit.secure_file.help + 私有附件只能通过授权的用户访问。私有附件不会生成缩略图,文件访问性能会降低。 + + + + + Part-DB1\src\Form\AttachmentFormType.php:127 + Part-DB1\src\Form\AttachmentFormType.php:123 + + + attachment.edit.url.help + 可以在此处指定外部文件的URL,或输入用于搜索内置资源的关键字 + + + + + Part-DB1\src\Form\AttachmentFormType.php:82 + Part-DB1\src\Form\AttachmentFormType.php:79 + + + attachment.edit.name + 名称 + + + + + Part-DB1\src\Form\AttachmentFormType.php:85 + Part-DB1\src\Form\AttachmentFormType.php:82 + + + attachment.edit.attachment_type + 附件类型 + + + + + Part-DB1\src\Form\AttachmentFormType.php:94 + Part-DB1\src\Form\AttachmentFormType.php:91 + + + attachment.edit.show_in_table + 显示在表中 + + + + + Part-DB1\src\Form\AttachmentFormType.php:105 + Part-DB1\src\Form\AttachmentFormType.php:102 + + + attachment.edit.secure_file + 私有附件 + + + + + Part-DB1\src\Form\AttachmentFormType.php:119 + Part-DB1\src\Form\AttachmentFormType.php:115 + + + attachment.edit.url + URL + + + + + Part-DB1\src\Form\AttachmentFormType.php:133 + Part-DB1\src\Form\AttachmentFormType.php:129 + + + attachment.edit.download_url + 下载外部文件 + + + + + Part-DB1\src\Form\AttachmentFormType.php:146 + Part-DB1\src\Form\AttachmentFormType.php:142 + + + attachment.edit.file + 上传文件 + + + + + Part-DB1\src\Form\LabelOptionsType.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:86 + + + part.label + 部件 + + + + + Part-DB1\src\Form\LabelOptionsType.php:68 + Part-DB1\src\Services\ElementTypeNameGenerator.php:87 + + + part_lot.label + 部件批次 @@ -3369,7 +5258,7 @@ label_options.barcode_type.qr - 二维码 (推荐) + 二维码(推荐) @@ -3378,7 +5267,7 @@ label_options.barcode_type.code128 - Code 128 (推荐) + Code 128(推荐) @@ -3387,7 +5276,7 @@ label_options.barcode_type.code39 - Code 39 (推荐) + Code 39(推荐) @@ -3408,6 +5297,51 @@ 数据矩阵 + + + Part-DB1\src\Form\LabelOptionsType.php:122 + + + label_options.lines_mode.html + 占位符 + + + + + Part-DB1\src\Form\LabelOptionsType.php:122 + + + label.options.lines_mode.twig + Twig + + + + + Part-DB1\src\Form\LabelOptionsType.php:126 + + + label_options.lines_mode.help + 如果您在此处选择Twig,则内容字段将被解释为Twig模板。前往 <a href="https://twig.symfony.com/doc/3.x/templates.html">Twig文档</a> and <a href="https://docs.part-db.de/usage/labels.html#twig-mode">Wiki</a> 了解更多信息。 + + + + + Part-DB1\src\Form\LabelOptionsType.php:47 + + + label_options.page_size.label + Label size + + + + + Part-DB1\src\Form\LabelOptionsType.php:66 + + + label_options.supported_elements.label + 目标类型 + + Part-DB1\src\Form\LabelOptionsType.php:75 @@ -3417,6 +5351,168 @@ 条码 + + + Part-DB1\src\Form\LabelOptionsType.php:102 + + + label_profile.lines.label + 内容 + + + + + Part-DB1\src\Form\LabelOptionsType.php:111 + + + label_options.additional_css.label + 附加样式(CSS) + + + + + Part-DB1\src\Form\LabelOptionsType.php:120 + + + label_options.lines_mode.label + 解析器模式 + + + + + Part-DB1\src\Form\LabelOptionsType.php:51 + + + label_options.width.placeholder + 宽度 + + + + + Part-DB1\src\Form\LabelOptionsType.php:60 + + + label_options.height.placeholder + 高度 + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:49 + + + label_generator.target_id.range_hint + 可以在此处指定多个ID(1、2、3 或 1-3) ,为多个元素生成标签。 + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:46 + + + label_generator.target_id.label + 目标 ID + + + + + Part-DB1\src\Form\LabelSystem\LabelDialogType.php:59 + + + label_generator.update + Update + + + + + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:36 + + + scan_dialog.input + 输入 + + + + + Part-DB1\src\Form\LabelSystem\ScanDialogType.php:44 + + + scan_dialog.submit + Submit + + + + + Part-DB1\src\Form\ParameterType.php:41 + + + parameters.name.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:50 + + + parameters.symbol.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:60 + + + parameters.text.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:71 + + + parameters.max.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:82 + + + parameters.min.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:93 + + + parameters.typical.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:103 + + + parameters.unit.placeholder + + + + + + Part-DB1\src\Form\ParameterType.php:114 + + + parameter.group.placeholder + + + Part-DB1\src\Form\Part\OrderdetailType.php:72 @@ -3424,7 +5520,7 @@ orderdetails.edit.supplierpartnr - 供货商元件编号 + 供应商部件号 @@ -3434,7 +5530,27 @@ orderdetails.edit.supplier - 供货商 + 供应商 + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:87 + Part-DB1\src\Form\Part\OrderdetailType.php:90 + + + orderdetails.edit.url + 供应商链接 + + + + + Part-DB1\src\Form\Part\OrderdetailType.php:93 + Part-DB1\src\Form\Part\OrderdetailType.php:96 + + + orderdetails.edit.obsolete + 不再可用 @@ -3444,7 +5560,615 @@ orderdetails.edit.supplierpartnr.placeholder - 例如 BC 547 + + + + + + Part-DB1\src\Form\Part\PartBaseType.php:101 + Part-DB1\src\Form\Part\PartBaseType.php:99 + + + part.edit.name + 名称 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:109 + Part-DB1\src\Form\Part\PartBaseType.php:107 + + + part.edit.description + 描述 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:120 + Part-DB1\src\Form\Part\PartBaseType.php:118 + + + part.edit.mininstock + 最小库存 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:129 + Part-DB1\src\Form\Part\PartBaseType.php:127 + + + part.edit.category + 类别 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:135 + Part-DB1\src\Form\Part\PartBaseType.php:133 + + + part.edit.footprint + 封装 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:142 + Part-DB1\src\Form\Part\PartBaseType.php:140 + + + part.edit.tags + 标签 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:154 + Part-DB1\src\Form\Part\PartBaseType.php:152 + + + part.edit.manufacturer.label + 制造商 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:161 + Part-DB1\src\Form\Part\PartBaseType.php:159 + + + part.edit.manufacturer_url.label + 制造商链接 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:167 + Part-DB1\src\Form\Part\PartBaseType.php:165 + + + part.edit.mpn + 制造商部件号 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:173 + Part-DB1\src\Form\Part\PartBaseType.php:171 + + + part.edit.manufacturing_status + 生产状态 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:181 + Part-DB1\src\Form\Part\PartBaseType.php:179 + + + part.edit.needs_review + 需要审查 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:189 + Part-DB1\src\Form\Part\PartBaseType.php:187 + + + part.edit.is_favorite + 收藏 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:197 + Part-DB1\src\Form\Part\PartBaseType.php:195 + + + part.edit.mass + 重量 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:203 + Part-DB1\src\Form\Part\PartBaseType.php:201 + + + part.edit.partUnit + 计量单位 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:212 + Part-DB1\src\Form\Part\PartBaseType.php:210 + + + part.edit.comment + 注释 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:250 + Part-DB1\src\Form\Part\PartBaseType.php:246 + + + part.edit.master_attachment + 预览图像 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:295 + Part-DB1\src\Form\Part\PartBaseType.php:276 + src\Form\PartType.php:91 + + + part.edit.save + 保存更改 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:296 + Part-DB1\src\Form\Part\PartBaseType.php:277 + src\Form\PartType.php:92 + + + part.edit.reset + 重置更改 + + + + + Part-DB1\src\Form\Part\PartBaseType.php:105 + Part-DB1\src\Form\Part\PartBaseType.php:103 + + + part.edit.name.placeholder + + + + + + Part-DB1\src\Form\Part\PartBaseType.php:115 + Part-DB1\src\Form\Part\PartBaseType.php:113 + + + part.edit.description.placeholder + + + + + + Part-DB1\src\Form\Part\PartBaseType.php:123 + Part-DB1\src\Form\Part\PartBaseType.php:121 + + + part.editmininstock.placeholder + + + + + + Part-DB1\src\Form\Part\PartLotType.php:69 + Part-DB1\src\Form\Part\PartLotType.php:69 + + + part_lot.edit.description + 描述 + + + + + Part-DB1\src\Form\Part\PartLotType.php:78 + Part-DB1\src\Form\Part\PartLotType.php:78 + + + part_lot.edit.location + 存储位置 + + + + + Part-DB1\src\Form\Part\PartLotType.php:89 + Part-DB1\src\Form\Part\PartLotType.php:89 + + + part_lot.edit.amount + 数量 + + + + + Part-DB1\src\Form\Part\PartLotType.php:98 + Part-DB1\src\Form\Part\PartLotType.php:97 + + + part_lot.edit.instock_unknown + 数量未知 + + + + + Part-DB1\src\Form\Part\PartLotType.php:109 + Part-DB1\src\Form\Part\PartLotType.php:108 + + + part_lot.edit.needs_refill + 需要补充 + + + + + Part-DB1\src\Form\Part\PartLotType.php:120 + Part-DB1\src\Form\Part\PartLotType.php:119 + + + part_lot.edit.expiration_date + 有效期 + + + + + Part-DB1\src\Form\Part\PartLotType.php:128 + Part-DB1\src\Form\Part\PartLotType.php:125 + + + part_lot.edit.comment + 注释 + + + + + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + Part-DB1\src\Form\Permissions\PermissionsType.php:99 + + + perm.group.other + 杂项 + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 + Part-DB1\src\Form\TFAGoogleSettingsType.php:97 + + + tfa_google.enable + 启用验证器应用 + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + Part-DB1\src\Form\TFAGoogleSettingsType.php:101 + + + tfa_google.disable + 停用验证器应用 + + + + + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + Part-DB1\src\Form\TFAGoogleSettingsType.php:74 + + + google_confirmation + 验证码 + + + + + Part-DB1\src\Form\UserSettingsType.php:108 + Part-DB1\src\Form\UserSettingsType.php:108 + src\Form\UserSettingsType.php:46 + + + user.timezone.label + 时区 + + + + + Part-DB1\src\Form\UserSettingsType.php:133 + Part-DB1\src\Form\UserSettingsType.php:132 + + + user.currency.label + 首选货币 + + + + + Part-DB1\src\Form\UserSettingsType.php:140 + Part-DB1\src\Form\UserSettingsType.php:139 + src\Form\UserSettingsType.php:53 + + + save + 应用更改 + + + + + Part-DB1\src\Form\UserSettingsType.php:141 + Part-DB1\src\Form\UserSettingsType.php:140 + src\Form\UserSettingsType.php:54 + + + reset + 放弃更改 + + + + + Part-DB1\src\Form\UserSettingsType.php:104 + Part-DB1\src\Form\UserSettingsType.php:104 + src\Form\UserSettingsType.php:45 + + + user_settings.language.placeholder + 默认语言 + + + + + Part-DB1\src\Form\UserSettingsType.php:115 + Part-DB1\src\Form\UserSettingsType.php:115 + src\Form\UserSettingsType.php:48 + + + user_settings.timezone.placeholder + 默认时区 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + Part-DB1\src\Services\ElementTypeNameGenerator.php:79 + + + attachment.label + 附件 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + Part-DB1\src\Services\ElementTypeNameGenerator.php:81 + + + attachment_type.label + 附件类型 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 + Part-DB1\src\Services\ElementTypeNameGenerator.php:82 + + + project.label + 项目 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + Part-DB1\src\Services\ElementTypeNameGenerator.php:85 + + + measurement_unit.label + 计量单位 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + Part-DB1\src\Services\ElementTypeNameGenerator.php:90 + + + currency.label + 货币 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + Part-DB1\src\Services\ElementTypeNameGenerator.php:91 + + + orderdetail.label + 订单详情 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + Part-DB1\src\Services\ElementTypeNameGenerator.php:92 + + + pricedetail.label + 价格详情 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + Part-DB1\src\Services\ElementTypeNameGenerator.php:94 + + + user.label + 用户 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:95 + + + parameter.label + 参数 + + + + + Part-DB1\src\Services\ElementTypeNameGenerator.php:96 + + + label_profile.label + 标签配置 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:176 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:161 + new + + + log.element_deleted.old_name.unknown + 未知 + + + + + Part-DB1\src\Services\MarkdownParser.php:73 + Part-DB1\src\Services\MarkdownParser.php:73 + + + markdown.loading + 正在加载 Markdown。如果此消息没有消失,请尝试重新加载页面。 + + + + + Part-DB1\src\Services\PasswordResetManager.php:98 + Part-DB1\src\Services\PasswordResetManager.php:98 + + + pw_reset.email.subject + 重置密码 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + + + tree.tools.tools + 工具 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:107 + src\Services\ToolsTreeBuilder.php:74 + + + tree.tools.edit + 编辑 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:110 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:108 + src\Services\ToolsTreeBuilder.php:81 + + + tree.tools.show + 统计 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:111 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:109 + + + tree.tools.system + 系统 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:123 + + + tree.tools.tools.label_dialog + 标签生成器 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:130 + + + tree.tools.tools.label_scanner + 扫描器 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:149 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:126 + src\Services\ToolsTreeBuilder.php:62 + + + tree.tools.edit.attachment_types + 附件类型 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:155 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:132 + src\Services\ToolsTreeBuilder.php:64 + + + tree.tools.edit.categories + 类别 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:161 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:138 + src\Services\ToolsTreeBuilder.php:66 + + + tree.tools.edit.projects + 项目 @@ -3455,7 +6179,171 @@ tree.tools.edit.suppliers - 供货商 + 供应商 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:173 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:150 + src\Services\ToolsTreeBuilder.php:70 + + + tree.tools.edit.manufacturer + 制造商 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:179 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:156 + + + tree.tools.edit.storelocation + 储存位置 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:185 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:162 + + + tree.tools.edit.footprint + 封装 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:191 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:168 + + + tree.tools.edit.currency + 货币 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:174 + + + tree.tools.edit.measurement_unit + 计量单位 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + + + tree.tools.edit.label_profile + 标签配置 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:209 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:180 + + + tree.tools.edit.part + 新建部件 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:226 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:197 + src\Services\ToolsTreeBuilder.php:77 + + + tree.tools.show.all_parts + 所有部件 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:232 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:203 + + + tree.tools.show.all_attachments + 所有附件 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:239 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:210 + new + + + tree.tools.show.statistics + 统计数据 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:258 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:229 + + + tree.tools.system.users + 用户 + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:264 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:235 + + + tree.tools.system.groups + + + + + + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:271 + Part-DB1\src\Services\Trees\ToolsTreeBuilder.php:242 + new + + + tree.tools.system.event_log + 操作日志 + + + + + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + Part-DB1\src\Services\Trees\TreeViewGenerator.php:95 + src\Services\TreeBuilder.php:124 + + + entity.tree.new + 新建 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:34 + obsolete + + + attachment.external_file + 外部文件 + + + + + Part-DB1\templates\Parts\info\_attachments_info.html.twig:62 + obsolete + + + attachment.edit + 编辑 @@ -3466,7 +6354,972 @@ barcode.scan - 扫描条形码 + 扫描条码 + + + + + Part-DB1\src\Form\UserSettingsType.php:119 + src\Form\UserSettingsType.php:49 + obsolete + + + user.theme.label + 主题 + + + + + Part-DB1\src\Form\UserSettingsType.php:129 + src\Form\UserSettingsType.php:50 + obsolete + + + user_settings.theme.placeholder + 默认主题 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:100 + new + obsolete + + + log.user_login.ip + IP + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:128 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:150 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:169 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:207 + new + obsolete + + + log.undo_mode.undo + 更改已撤消 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:130 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:152 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:171 + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:209 + new + obsolete + + + log.undo_mode.revert + 元素已恢复 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:139 + new + obsolete + + + log.element_created.original_instock + 旧库存 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:160 + new + obsolete + + + log.element_deleted.old_name + 旧名称 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:184 + new + obsolete + + + log.element_edited.changed_fields + 变更字段 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:198 + new + obsolete + + + log.instock_changed.comment + 批注 + + + + + Part-DB1\src\Services\LogSystem\LogEntryExtraFormatter.php:214 + new + obsolete + + + log.collection_deleted.deleted + 已删除元素: + + + + + templates\base.html.twig:81 + obsolete + obsolete + + + go.exclamation + GO! + + + + + templates\base.html.twig:109 + obsolete + obsolete + + + language.english + 英语 + + + + + templates\base.html.twig:112 + obsolete + obsolete + + + language.german + 德语 + + + + + obsolete + obsolete + + + flash.password_change_needed + 需要修改密码。 + + + + + obsolete + obsolete + + + attachment.table.type + 附件类型 + + + + + obsolete + obsolete + + + attachment.table.element + 关联元素 + + + + + obsolete + obsolete + + + attachment.edit.isPicture + 图片? + + + + + obsolete + obsolete + + + attachment.edit.is3DModel + 3D模型? + + + + + obsolete + obsolete + + + attachment.edit.isBuiltin + 内置? + + + + + obsolete + obsolete + + + category.edit.default_comment.placeholder + + + + + + obsolete + obsolete + + + tfa_backup.regenerate_codes + 生成新备份代码 + + + + + obsolete + obsolete + + + validator.noneofitschild.self + 子元素不能是它的父元素。 + + + + + obsolete + obsolete + + + validator.noneofitschild.children + 父元素不能是它的子元素。 + + + + + obsolete + obsolete + + + validator.part_lot.location_full.no_increasment + 存储位置已标记为已满,无法增加库存量。(新的库存上限 {{ old_amount }}) + + + + + obsolete + obsolete + + + validator.part_lot.location_full + 存储位置已标记为已满,无法添加新部件。 + + + + + obsolete + obsolete + + + validator.part_lot.only_existing + 存储位置被标记为 "仅现有",无法添加新部件。 + + + + + obsolete + obsolete + + + validator.part_lot.single_part + 存储位置被标记为 "单部件", 无法添加新部件 + + + + + obsolete + obsolete + + + m_status.active.help + 该部件在目前和预期未来都在生产中 + + + + + obsolete + obsolete + + + m_status.announced.help + 该部件已公布,但尚未发布。 + + + + + obsolete + obsolete + + + m_status.discontinued.help + 该部件已停产。 + + + + + obsolete + obsolete + + + m_status.eol.help + 该部件即将停产。 + + + + + obsolete + obsolete + + + m_status.nrfnd.help + 不建议用于新设计。 + + + + + obsolete + obsolete + + + m_status.unknown.help + 生产状态未知。 + + + + + obsolete + obsolete + + + flash.success + 成功 + + + + + obsolete + obsolete + + + flash.error + 错误 + + + + + obsolete + obsolete + + + flash.warning + 警告 + + + + + obsolete + obsolete + + + flash.notice + 注意 + + + + + obsolete + obsolete + + + flash.info + 信息 + + + + + obsolete + obsolete + + + validator.noLockout + 不能撤回自己的 "变更权限" 的权限, 以防止锁定自己。 + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter + 允许的文件扩展名 + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter.help + 您可以指定以逗号分隔的文件扩展名或MIME类型,上传文件的类型在分配给此附件类型时必须在其中。要允许所有支持的图像文件,使用 image/*。 + + + + + obsolete + obsolete + + + attachment_type.edit.filetype_filter.placeholder + + + + + + src\Form\PartType.php:63 + obsolete + obsolete + + + part.name.placeholder + + + + + + obsolete + obsolete + + + entity.edit.not_selectable + 不可选择 + + + + + obsolete + obsolete + + + entity.edit.not_selectable.help + 禁止将此元素分配给部件。适用于将元素仅用于分组。 + + + + + obsolete + obsolete + + + bbcode.hint + 可以在此处使用BBCode + + + + + obsolete + obsolete + + + entity.create + 创建元素 + + + + + obsolete + obsolete + + + entity.edit.save + 保存 + + + + + obsolete + obsolete + + + category.edit.disable_footprints + 禁用封装 + + + + + obsolete + obsolete + + + category.edit.disable_footprints.help + 禁用该类别中部件的封装属性。 + + + + + obsolete + obsolete + + + category.edit.disable_manufacturers + 禁用制造商 + + + + + obsolete + obsolete + + + category.edit.disable_manufacturers.help + 禁用该类别中部件的制造商属性。 + + + + + obsolete + obsolete + + + category.edit.disable_autodatasheets + 禁用自动数据文档链接 + + + + + obsolete + obsolete + + + category.edit.disable_autodatasheets.help + 禁用该类别中部件的 DataSheet 自动链接。 + + + + + obsolete + obsolete + + + category.edit.disable_properties + 禁用属性 + + + + + obsolete + obsolete + + + category.edit.disable_properties.help + 禁用该类别中部件的属性。 + + + + + obsolete + obsolete + + + category.edit.partname_hint + 部件名称提示 + + + + + obsolete + obsolete + + + category.edit.partname_hint.placeholder + + + + + + obsolete + obsolete + + + category.edit.partname_regex + 名称过滤器 + + + + + obsolete + obsolete + + + category.edit.default_description + 默认描述 + + + + + obsolete + obsolete + + + category.edit.default_description.placeholder + + + + + + obsolete + obsolete + + + category.edit.default_comment + 默认注释 + + + + + obsolete + obsolete + + + company.edit.address + 地址 + + + + + obsolete + obsolete + + + company.edit.address.placeholder + + + + + + obsolete + obsolete + + + company.edit.phone_number + 电话 + + + + + obsolete + obsolete + + + company.edit.phone_number.placeholder + + + + + + obsolete + obsolete + + + company.edit.fax_number + 传真 + + + + + obsolete + obsolete + + + company.edit.email + 邮件 + + + + + obsolete + obsolete + + + company.edit.email.placeholder + + + + + + obsolete + obsolete + + + company.edit.website + 网站 + + + + + obsolete + obsolete + + + company.edit.website.placeholder + + + + + + obsolete + obsolete + + + company.edit.auto_product_url + 产品链接 + + + + + obsolete + obsolete + + + company.edit.auto_product_url.help + 指向制造商网站的部件链接。 + + + + + obsolete + obsolete + + + company.edit.auto_product_url.placeholder + + + + + + obsolete + obsolete + + + currency.edit.iso_code + ISO代码 + + + + + obsolete + obsolete + + + currency.edit.exchange_rate + 汇率 + + + + + obsolete + obsolete + + + footprint.edit.3d_model + 3D模型 + + + + + obsolete + obsolete + + + mass_creation.lines + 输入 + + + + + obsolete + obsolete + + + mass_creation.lines.placeholder + Element 1 + Element 1.1 + Element 1.1.1 + Element 1.2 +Element 2 +Element 3 + + + + + obsolete + obsolete + + + entity.mass_creation.btn + 创建 + + + + + obsolete + obsolete + + + measurement_unit.edit.is_integer + 整数 + + + + + obsolete + obsolete + + + measurement_unit.edit.is_integer.help + 输入的值将四舍五入为整数 + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix + 使用SI前缀 + + + + + obsolete + obsolete + + + measurement_unit.edit.use_si_prefix.help + 输出带有 SI 前缀的值(例如 1,2kg 而不是 1200g) + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol + 单位符号 + + + + + obsolete + obsolete + + + measurement_unit.edit.unit_symbol.placeholder + + + + + + obsolete + obsolete + + + storelocation.edit.is_full.label + 存储位置已满 + + + + + obsolete + obsolete + + + storelocation.edit.is_full.help + 禁止添加新部件,禁止增加已有部件的数量。 + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.label + 仅限当前部件 + + + + + obsolete + obsolete + + + storelocation.limit_to_existing.help + 禁止添加新部件。 + + + + + obsolete + obsolete + + + storelocation.only_single_part.label + 仅单个部分 + + + + + obsolete + obsolete + + + storelocation.only_single_part.help + 只允许存在一个部件 + + + + + obsolete + obsolete + + + storelocation.storage_type.label + 存储类型 + + + + + obsolete + obsolete + + + storelocation.storage_type.help + 选择计量单位,部件必须满足才能分配到该储存位置 @@ -3486,7 +7339,617 @@ supplier.shipping_costs.label - 运费 + 运输费 + + + + + obsolete + obsolete + + + user.username.placeholder + + + + + + obsolete + obsolete + + + user.firstName.placeholder + + + + + + obsolete + obsolete + + + user.lastName.placeholder + + + + + + obsolete + obsolete + + + user.email.placeholder + + + + + + obsolete + obsolete + + + user.department.placeholder + + + + + + obsolete + obsolete + + + user.settings.pw_new.label + 新密码 + + + + + obsolete + obsolete + + + user.settings.pw_confirm.label + 确认新密码 + + + + + obsolete + obsolete + + + user.edit.needs_pw_change + 用户需要更改密码 + + + + + obsolete + obsolete + + + user.edit.user_disabled + 用户已禁用(无法登录) + + + + + obsolete + obsolete + + + user.create + 创建用户 + + + + + obsolete + obsolete + + + user.edit.save + 保存 + + + + + obsolete + obsolete + + + entity.edit.reset + 放弃更改 + + + + + templates\Parts\show_part_info.html.twig:166 + obsolete + obsolete + + + part.withdraw.btn + 提取 + + + + + templates\Parts\show_part_info.html.twig:171 + obsolete + obsolete + + + part.withdraw.comment: + 注解/目的 + + + + + templates\Parts\show_part_info.html.twig:189 + obsolete + obsolete + + + part.add.caption + 添加部件 + + + + + templates\Parts\show_part_info.html.twig:194 + obsolete + obsolete + + + part.add.btn + 增加 + + + + + templates\Parts\show_part_info.html.twig:199 + obsolete + obsolete + + + part.add.comment + 注解/目的 + + + + + templates\AdminPages\CompanyAdminBase.html.twig:15 + obsolete + obsolete + + + admin.comment + 注释 + + + + + src\Form\PartType.php:83 + obsolete + obsolete + + + manufacturer_url.label + 制造商链接 + + + + + src\Form\PartType.php:66 + obsolete + obsolete + + + part.description.placeholder + + + + + + src\Form\PartType.php:69 + obsolete + obsolete + + + part.instock.placeholder + + + + + + src\Form\PartType.php:72 + obsolete + obsolete + + + part.mininstock.placeholder + + + + + + obsolete + obsolete + + + part.order.price_per + 每件价格 + + + + + obsolete + obsolete + + + part.withdraw.caption + 取出零件 + + + + + obsolete + obsolete + + + datatable.datatable.lengthMenu + _MENU_ + + + + + obsolete + obsolete + + + perm.group.parts + 部件 + + + + + obsolete + obsolete + + + perm.group.structures + 数据结构 + + + + + obsolete + obsolete + + + perm.group.system + 系统 + + + + + obsolete + obsolete + + + perm.parts + 部件 + + + + + obsolete + obsolete + + + perm.read + 查看 + + + + + obsolete + obsolete + + + perm.edit + 编辑 + + + + + obsolete + obsolete + + + perm.create + 创建 + + + + + obsolete + obsolete + + + perm.part.move + 更改类别 + + + + + obsolete + obsolete + + + perm.delete + 删除 + + + + + obsolete + obsolete + + + perm.part.search + 搜索 + + + + + obsolete + obsolete + + + perm.part.all_parts + 列出所有部件 + + + + + obsolete + obsolete + + + perm.part.no_price_parts + 列出没有价格信息的部件 + + + + + obsolete + obsolete + + + perm.part.obsolete_parts + 列出过时的部件 + + + + + obsolete + obsolete + + + perm.part.unknown_instock_parts + 显示库存未知的部件 + + + + + obsolete + obsolete + + + perm.part.change_favorite + 更改收藏状态 + + + + + obsolete + obsolete + + + perm.part.show_favorite + 列出收藏的部件 + + + + + obsolete + obsolete + + + perm.part.show_last_edit_parts + 显示最后编辑/添加的部件 + + + + + obsolete + obsolete + + + perm.part.show_users + 显示最后修改的用户 + + + + + obsolete + obsolete + + + perm.part.show_history + 显示历史记录 + + + + + obsolete + obsolete + + + perm.part.name + 名称 + + + + + obsolete + obsolete + + + perm.part.description + 描述 + + + + + obsolete + obsolete + + + perm.part.instock + 在库 + + + + + obsolete + obsolete + + + perm.part.mininstock + 最小库存 + + + + + obsolete + obsolete + + + perm.part.comment + 注释 + + + + + obsolete + obsolete + + + perm.part.storelocation + 存储位置 + + + + + obsolete + obsolete + + + perm.part.manufacturer + 制造商 + + + + + obsolete + obsolete + + + perm.part.orderdetails + 订单信息 + + + + + obsolete + obsolete + + + perm.part.prices + 价格 + + + + + obsolete + obsolete + + + perm.part.attachments + 附件 + + + + + obsolete + obsolete + + + perm.part.order + 订单 + + + + + obsolete + obsolete + + + perm.storelocations + 储存位置 + + + + + obsolete + obsolete + + + perm.move + 移动 + + + + + obsolete + obsolete + + + perm.list_parts + 列出部件 + + + + + obsolete + obsolete + + + perm.part.footprints + 封装 + + + + + obsolete + obsolete + + + perm.part.categories + 类别 @@ -3496,7 +7959,855 @@ perm.part.supplier - 供货商 + 供应商 + + + + + obsolete + obsolete + + + perm.part.manufacturers + 制造商 + + + + + obsolete + obsolete + + + perm.projects + 项目 + + + + + obsolete + obsolete + + + perm.part.attachment_types + 附件类型 + + + + + obsolete + obsolete + + + perm.tools.import + 导入 + + + + + obsolete + obsolete + + + perm.tools.labels + 标签 + + + + + obsolete + obsolete + + + perm.tools.calculator + 电阻计算器 + + + + + obsolete + obsolete + + + perm.tools.footprints + 封装 + + + + + obsolete + obsolete + + + perm.tools.ic_logos + 芯片图标 + + + + + obsolete + obsolete + + + perm.tools.statistics + 统计数据 + + + + + obsolete + obsolete + + + perm.edit_permissions + 编辑权限 + + + + + obsolete + obsolete + + + perm.users.edit_user_name + 编辑用户名 + + + + + obsolete + obsolete + + + perm.users.edit_change_group + 更改组 + + + + + obsolete + obsolete + + + perm.users.edit_infos + 编辑信息 + + + + + obsolete + obsolete + + + perm.users.edit_permissions + 编辑权限 + + + + + obsolete + obsolete + + + perm.users.set_password + 设置密码 + + + + + obsolete + obsolete + + + perm.users.change_user_settings + 更改用户设置 + + + + + obsolete + obsolete + + + perm.database.see_status + 显示状态 + + + + + obsolete + obsolete + + + perm.database.update_db + 更新数据库 + + + + + obsolete + obsolete + + + perm.database.read_db_settings + 读取数据库设置 + + + + + obsolete + obsolete + + + perm.database.write_db_settings + 写入数据库设置 + + + + + obsolete + obsolete + + + perm.config.read_config + 读取配置 + + + + + obsolete + obsolete + + + perm.config.edit_config + 编辑配置 + + + + + obsolete + obsolete + + + perm.config.server_info + 服务器信息 + + + + + obsolete + obsolete + + + perm.config.use_debug + 使用调试工具 + + + + + obsolete + obsolete + + + perm.show_logs + 显示日志 + + + + + obsolete + obsolete + + + perm.delete_logs + 删除日志 + + + + + obsolete + obsolete + + + perm.self.edit_infos + 编辑信息 + + + + + obsolete + obsolete + + + perm.self.edit_username + 编辑用户名 + + + + + obsolete + obsolete + + + perm.self.show_permissions + 查看权限 + + + + + obsolete + obsolete + + + perm.self.show_logs + 显示自己的日志条目 + + + + + obsolete + obsolete + + + perm.self.create_labels + 创建标签 + + + + + obsolete + obsolete + + + perm.self.edit_options + 编辑选项 + + + + + obsolete + obsolete + + + perm.self.delete_profiles + 删除配置 + + + + + obsolete + obsolete + + + perm.self.edit_profiles + 编辑配置 + + + + + obsolete + obsolete + + + perm.part.tools + 工具 + + + + + obsolete + obsolete + + + perm.groups + + + + + + obsolete + obsolete + + + perm.users + 用户 + + + + + obsolete + obsolete + + + perm.database + 数据库 + + + + + obsolete + obsolete + + + perm.config + 配置 + + + + + obsolete + obsolete + + + perm.system + 系统 + + + + + obsolete + obsolete + + + perm.self + 自己 + + + + + obsolete + obsolete + + + perm.labels + 标签 + + + + + obsolete + obsolete + + + perm.part.category + 类别 + + + + + obsolete + obsolete + + + perm.part.minamount + 最低数量 + + + + + obsolete + obsolete + + + perm.part.footprint + 封装 + + + + + obsolete + obsolete + + + perm.part.mpn + MPN + + + + + obsolete + obsolete + + + perm.part.status + 生产状态 + + + + + obsolete + obsolete + + + perm.part.tags + 标签 + + + + + obsolete + obsolete + + + perm.part.unit + 部件单位 + + + + + obsolete + obsolete + + + perm.part.mass + 重量 + + + + + obsolete + obsolete + + + perm.part.lots + 部件批次 + + + + + obsolete + obsolete + + + perm.show_users + 显示最后修改的用户 + + + + + obsolete + obsolete + + + perm.currencies + 货币 + + + + + obsolete + obsolete + + + perm.measurement_units + 计量单位 + + + + + obsolete + obsolete + + + user.settings.pw_old.label + 旧密码 + + + + + obsolete + obsolete + + + pw_reset.submit + 重设密码 + + + + + obsolete + obsolete + + + u2f_two_factor + 安全密钥 (U2F) + + + + + obsolete + obsolete + + + google + Google + + + + + tfa.provider.webauthn_two_factor_provider + 安全密钥 + + + + + obsolete + obsolete + + + tfa.provider.google + 验证器应用 + + + + + obsolete + obsolete + + + Login successful + 登陆成功 + + + + + obsolete + obsolete + + + log.type.exception + 未处理的异常(已过时) + + + + + obsolete + obsolete + + + log.type.user_login + 用户登录 + + + + + obsolete + obsolete + + + log.type.user_logout + 用户注销 + + + + + obsolete + obsolete + + + log.type.unknown + 未知 + + + + + obsolete + obsolete + + + log.type.element_created + 元素已创建 + + + + + obsolete + obsolete + + + log.type.element_edited + 元素已编辑 + + + + + obsolete + obsolete + + + log.type.element_deleted + 元素已删除 + + + + + obsolete + obsolete + + + log.type.database_updated + 数据库已更新 + + + + + obsolete + + + perm.revert_elements + 恢复元素 + + + + + obsolete + + + perm.show_history + 显示历史记录 + + + + + obsolete + + + perm.tools.lastActivity + 显示最近活动 + + + + + obsolete + + + perm.tools.timeTravel + 显示旧元素版本(时间旅行) + + + + + obsolete + + + tfa_u2f.key_added_successful + 安全密钥添加成功。 + + + + + obsolete + + + Username + 用户名 + + + + + obsolete + + + log.type.security.google_disabled + 身份验证器应用已禁用 + + + + + obsolete + + + log.type.security.u2f_removed + 已移除安全密钥 + + + + + obsolete + + + log.type.security.u2f_added + 已添加安全密钥 + + + + + obsolete + + + log.type.security.backup_keys_reset + 重新生成备份密钥 + + + + + obsolete + + + log.type.security.google_enabled + 身份验证器应用已启用 + + + + + obsolete + + + log.type.security.password_changed + 密码已更改 + + + + + obsolete + + + log.type.security.trusted_device_reset + 已重置可信设备 + + + + + obsolete + + + log.type.collection_element_deleted + 集合元素已删除 + + + + + obsolete + + + log.type.security.password_reset + 重设密码 + + + + + obsolete + + + log.type.security.2fa_admin_reset + 管理员进行了2FA重置 + + + + + obsolete + + + log.type.user_not_allowed + 未经授权的访问尝试 + + + + + obsolete + + + log.database_updated.success + 成功 @@ -3505,7 +8816,7 @@ label_options.barcode_type.2D - 二维 + 2D @@ -3514,19 +8825,1597 @@ label_options.barcode_type.1D - 一维 + 1D + + + + + obsolete + + + perm.part.parameters + 参数 + + + + + obsolete + + + perm.attachment_show_private + 查看私有附件 + + + + + obsolete + + + perm.tools.label_scanner + 标签扫描仪 + + + + + obsolete + + + perm.self.read_profiles + 读取配置 + + + + + obsolete + + + perm.self.create_profiles + 创建配置 + + + + + obsolete + + + perm.labels.use_twig + 使用TWIG模式 + + + + + label_profile.showInDropdown + 在快速选择中显示 + + + + + group.edit.enforce_2fa + 实施2FA身份验证 + + + + + group.edit.enforce_2fa.help + 该组的每个直接成员都必须配置至少一个的第二因素进行身份验证。 + + + + + selectpicker.empty + 未选择任何内容 + + + + + selectpicker.nothing_selected + 未选择任何内容 + + + + + entity.delete.must_not_contain_parts + "%PATH%" 仍然包含部件。所有移除所有关联才能删除 + + + + + entity.delete.must_not_contain_attachments + 附件类型仍在被使用。必须移除所有关联才能删除 + + + + + entity.delete.must_not_contain_prices + 货币仍在被使用。必须移除所有关联才能删除 + + + + + entity.delete.must_not_contain_users + 组仍在被使用。必须移除所有关联才能删除 + + + + + part.table.edit + 编辑 + + + + + part.table.edit.title + 编辑部件 + + + + + part_list.action.action.title + 选择操作 + + + + + part_list.action.action.group.favorite + 收藏状态 + + + + + part_list.action.action.favorite + 收藏 + + + + + part_list.action.action.unfavorite + 取消收藏 + + + + + part_list.action.action.group.change_field + 更改字段 + + + + + part_list.action.action.change_category + 更改类别 + + + + + part_list.action.action.change_footprint + 更改封装 + + + + + part_list.action.action.change_manufacturer + 更改制造商 + + + + + part_list.action.action.change_unit + 更改部件单位 + + + + + part_list.action.action.delete + 删除 + + + + + part_list.action.submit + 提交 + + + + + part_list.action.part_count + 选定 %count% 个部件 + + + + + company.edit.quick.website + 打开网站 + + + + + company.edit.quick.email + 发送邮件 + + + + + company.edit.quick.phone + 拨打电话 + + + + + company.edit.quick.fax + 发送传真 + + + + + company.fax_number.placeholder + + + + + + part.edit.save_and_clone + 保存并克隆 + + + + + validator.file_ext_not_allowed + 该文件扩展名不属于此附件类型。 + + + + + tools.reel_calc.title + 卷盘计算器 + + + + + tools.reel_calc.inner_dia + 内径 + + + + + tools.reel_calc.outer_dia + 外径 + + + + + tools.reel_calc.tape_thick + 编带厚度 + + + + + tools.reel_calc.part_distance + 元件距离 + + + + + tools.reel_calc.update + 更新 + + + + + tools.reel_calc.parts_per_meter + 每米元件数 + + + + + tools.reel_calc.result_length + 编带长度 + + + + + tools.reel_calc.result_amount + 大概的元件数量 + + + + + tools.reel_calc.outer_greater_inner_error + 错误:外径必须大于内径。 + + + + + tools.reel_calc.missing_values.error + 请填写所有值。 + + + + + tools.reel_calc.load_preset + 加载预设 + + + + + tools.reel_calc.explanation + 该计算器可估算SMD卷轴上剩余的零件数量。测量卷轴上注明的尺寸(或使用一些预设),然后单击 "更新" 获得结果。 + + + + + perm.tools.reel_calculator + SMD卷盘计算器 + + + + + tree.tools.tools.reel_calculator + SMD卷盘计算器 + + + + + user.pw_change_needed.flash + 密码需要更改。请设置新密码 + + + + + tree.root_node.text + 根节点 + + + + + part_list.action.select_null + 空元素 + + + + + part_list.action.delete-title + 确认删除这些部件? + + + + + part_list.action.delete-message + 这些部件及任何属性信息将被删除。操作不能被撤消 + + + + + part.table.actions.success + 操作成功完成。 + + + + + attachment.edit.delete.confirm + 确实删除此附件? + + + + + filter.text_constraint.value.operator.EQ + 等于 + + + + + filter.text_constraint.value.operator.NEQ + 不等于 + + + + + filter.text_constraint.value.operator.STARTS + 以开头 + + + + + filter.text_constraint.value.operator.CONTAINS + 包含 + + + + + filter.text_constraint.value.operator.ENDS + 以结尾 + + + + + filter.text_constraint.value.operator.LIKE + 相似匹配 + + + + + filter.text_constraint.value.operator.REGEX + 正则表达式 + + + + + filter.number_constraint.value.operator.BETWEEN + 之间 + + + + + filter.number_constraint.AND + AND + + + + + filter.entity_constraint.operator.EQ + 等于(不包括子项) + + + + + filter.entity_constraint.operator.NEQ + 不等于(不包括子项) + + + + + filter.entity_constraint.operator.INCLUDING_CHILDREN + 等于(含子项) + + + + + filter.entity_constraint.operator.EXCLUDING_CHILDREN + 不等于(含子项) + + + + + part.filter.dbId + 数据库ID + + + + + filter.tags_constraint.operator.ANY + 任何标签 + + + + + filter.tags_constraint.operator.ALL + 所有标签 + + + + + filter.tags_constraint.operator.NONE + 无标签 + + + + + part.filter.lot_count + 批次数量 + + + + + part.filter.attachments_count + 附件数量 + + + + + part.filter.orderdetails_count + 订单明细数量 + + + + + part.filter.lotExpirationDate + 批次的有效期 + + + + + part.filter.lotNeedsRefill + 需要补充 + + + + + part.filter.lotUnknwonAmount + 未知金额 + + + + + part.filter.attachmentName + 附件名称 + + + + + filter.choice_constraint.operator.ANY + 任意 + + + + + filter.choice_constraint.operator.NONE + + + + + + part.filter.amount_sum + 总数量 + + + + + filter.submit + 更新 + + + + + filter.discard + 放弃更改 + + + + + filter.clear_filters + 清除所有过滤器 + + + + + filter.title + 过滤器 + + + + + filter.parameter_value_constraint.operator.= + 标称值 等于 + + + + + filter.parameter_value_constraint.operator.!= + 标称值 不等于 + + + + + filter.parameter_value_constraint.operator.< + 标称值 小于 + + + + + filter.parameter_value_constraint.operator.> + 标称值 大于 + + + + + filter.parameter_value_constraint.operator.<= + 标称值 小于等于 + + + + + filter.parameter_value_constraint.operator.>= + 标称值 大于等于 + + + + + filter.parameter_value_constraint.operator.BETWEEN + 标称值 之间 + + + + + filter.parameter_value_constraint.operator.IN_RANGE + 范围 内 + + + + + filter.parameter_value_constraint.operator.NOT_IN_RANGE + 范围 外 + + + + + filter.parameter_value_constraint.operator.GREATER_THAN_RANGE + 范围 大于 + + + + + filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE + 范围 大于等于 + + + + + filter.parameter_value_constraint.operator.LESS_THAN_RANGE + 范围 小于 + + + + + filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE + 范围 小于等于 + + + + + filter.parameter_value_constraint.operator.RANGE_IN_RANGE + 范围 包含 + + + + + filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE + 范围 相交 + + + + + filter.text_constraint.value + 无值 + + + + + filter.number_constraint.value1 + 无值 + + + + + filter.number_constraint.value2 + 最大值 + + + + + filter.datetime_constraint.value1 + 未设置日期时间 + + + + + filter.datetime_constraint.value2 + 最大日期时间 + + + + + filter.constraint.add + 添加约束 + + + + + part.filter.parameters_count + 参数的数量 + + + + + part.filter.lotDescription + 批次的说明 + + + + + parts_list.search.searching_for + 搜索部件关键字 <b>%keyword%</b> + + + + + parts_list.search_options.caption + 启用搜索选项 + + + + + attachment.table.element_type + 关联元素类型 + + + + + log.level.debug + 调试 + + + + + log.level.info + 信息 + + + + + log.level.notice + 注意 + + + + + log.level.warning + 警告 + + + + + log.level.error + 错误 + + + + + log.level.critical + 关键 + + + + + log.level.alert + 警报 + + + + + log.level.emergency + 紧急 + + + + + log.type.security + 安全事件 + + + + + log.type.instock_changed + [旧版] 库存已更改 + + + + + log.target_id + 目标元素ID + + + + + entity.info.parts_count_recursive + 具有该元素或其子元素的部件数 + + + + + tools.server_infos.title + 服务器信息 + + + + + permission.preset.read_only + 只读 + + + + + permission.preset.read_only.desc + 只允许进行读取操作 + + + + + permission.preset.all_inherit + 全部继承 + + + + + permission.preset.all_inherit.desc + 将所有权限设置为继承 + + + + + permission.preset.all_forbid + 全部禁止 + + + + + permission.preset.all_forbid.desc + 将所有权限设置为禁止 + + + + + permission.preset.all_allow + 全部允许 + + + + + permission.preset.all_allow.desc + 将所有权限设置为允许 + + + + + perm.server_infos + 服务器信息 + + + + + permission.preset.editor + 编辑器 + + + + + permission.preset.editor.desc + 允许更改部件和数据结构 + + + + + permission.preset.admin + 管理员 + + + + + permission.preset.admin.desc + 允许执行管理操作 + + + + + permission.preset.button + 应用预设 + + + + + perm.attachments.show_private + 显示私有附件 + + + + + perm.attachments.list_attachments + 所有附件列表 + + + + + user.edit.permission_success + 权限预设应用成功。检查新的权限是否满足 + + + + + perm.group.data + 数据 + + + + + part_list.action.action.group.needs_review + 要求审查 + + + + + part_list.action.action.set_needs_review + 设置要求审核状态 + + + + + part_list.action.action.unset_needs_review + 设置要求审核状态 + + + + + part.edit.ipn + 内部零件号 (IPN) + + + + + part.ipn.not_defined + 没有定义 + + + + + part.table.ipn + IPN + + + + + currency.edit.update_rate + 更新汇率 + + + + + currency.edit.exchange_rate_update.unsupported_currency + 该货币不受汇率提供商支持。检查汇率提供商配置 + + + + + currency.edit.exchange_rate_update.generic_error + 无法更新汇率。检查汇率提供商配置 + + + + + currency.edit.exchange_rate_updated.success + 成功更新汇率。 + + + + + project.bom.quantity + BOM 数量 + + + + + project.bom.mountnames + 装配名称 + + + + + project.bom.name + 名称 + + + + + project.bom.comment + 注释 + + + + + project.bom.part + 部件 + + + + + project.bom.add_entry + 添加条目 + + + + + part_list.action.group.projects + 项目 + + + + + part_list.action.projects.add_to_project + 将部件添加到项目中 + + + + + project.bom.delete.confirm + 确实删除此BOM条目? + + + + + project.add_parts_to_project + 将部件添加到项目中 + + + + + part.info.add_part_to_project + 将部件添加到项目中 + + + + + project_bom_entry.label + BOM条目 + + + + + project.edit.status + 项目状态 + + + + + project.status.draft + 草稿 + + + + + project.status.planning + 策划 + + + + + project.status.in_production + 生产中 + + + + + project.status.finished + 已完成 + + + + + project.status.archived + 已存档 + + + + + part.new_build_part.error.build_part_already_exists + 该项目已映射到部件。 + + + + + project.edit.associated_build_part + 该项目已映射到部件。 + + + + + project.edit.associated_build_part.add + 该项目已映射到部件。 + + + + + project.edit.associated_build.hint + 该部件映射到该项目的生产成果,使项目成果可纳入储存管理中。 + + + + + part.info.projectBuildPart.hint + 该部件为生产成果,映射到项目 + + + + + part.is_build_part + 是项目生产的部件 + + + + + project.info.title + 项目信息 + + + + + project.info.bom_entries_count + BOM条目 + + + + + project.info.sub_projects_count + 子项目 + + + + + project.info.bom_add_parts + 添加BOM条目 + + + + + project.info.info.label + 信息 + + + + + project.info.sub_projects.label + 子项目 + + + + + project.bom.price + 价格 + + + + + part.info.withdraw_modal.title.withdraw + 从批次中取出部件 + + + + + part.info.withdraw_modal.title.add + 添加部件到批次中 + + + + + part.info.withdraw_modal.title.move + 移动部件到另一个批次 + + + + + part.info.withdraw_modal.amount + 数量 + + + + + part.info.withdraw_modal.move_to + 移动到 + + + + + part.info.withdraw_modal.comment + 批注/目的 + + + + + part.info.withdraw_modal.comment.hint + 描述您执行此操作的原因。此信息将保存在日志中。 + + + + + modal.close + 关闭 + + + + + modal.submit + 提交 + + + + + part.withdraw.success + 已成功添加/移动/撤回部件。 + + + + + perm.parts_stock + 部件库存 + + + + + perm.parts_stock.withdraw + 从库存中提取部件 + + + + + perm.parts_stock.add + 添加部件到库存 + + + + + perm.parts_stock.move + 在批次之间移动部件 + + + + + user.permissions_schema_updated + 该用户权限架构已升级到最新版本。 + + + + + log.type.part_stock_changed + 部件库存已更改 + + + + + log.part_stock_changed.withdraw + 部件库存提取已更改 + + + + + log.part_stock_changed.add + 库存已添加 + + + + + log.part_stock_changed.move + 库存已移动 + + + + + log.part_stock_changed.comment + 批注/目的 + + + + + log.part_stock_changed.change + 更改 + + + + + log.part_stock_changed.move_target + 移动目标 + + + + + tools.builtin_footprints_viewer.title + 内置封装图像库 + + + + + tools.builtin_footprints_viewer.hint + 所有可用的内置封装图像。在附件的路径字段中输入名称或关键字,然后从下拉列表中选择图像。 + + + + + tools.ic_logos.title + 芯片图标 + + + + + part_list.action.group.labels + 标签 + + + + + part_list.action.projects.generate_label + 生成标签(针对部件) + + + + + part_list.action.projects.generate_label_lot + 生成标签(针对部件批次) + + + + + part_list.action.generate_label.empty + 空标签 + + + + + project.info.builds.label + 生产 + + + + + project.builds.build_not_possible + 无法生产。部件没有库存 + + + + + project.builds.following_bom_entries_miss_instock + 以下部件没有足够的库存,构建至少一次该项目: + + + + + project.builds.stocked + 库存充足 + + + + + project.builds.needed + 需要补充 + + + + + project.builds.build_possible + 可生产 + + + + + project.builds.number_of_builds_possible + 与足够的库存生产 <b>%max_builds%</b> 个该项目 + + + + + project.builds.check_project_status + 当前项目状态为 <b>"%project_status%"</b>。检查是否以该状态生产项目 + + + + + project.builds.following_bom_entries_miss_instock_n + 您没有足够的库存部件生产该项目 %number_of_builds% 次。 以下部件需要补充: + + + + + project.build.flash.invalid_input + 无法生产项目。 检查输入 + + + + + project.build.required_qty + 所需数量 + + + + + project.build.btn_build + 生产 + + + + + project.build.help + 选择应该从哪个部件批次中,获取用于生产该项目的库存(以及数量)。完成提取部件后,请选中每个BOM条目的复选框或使用顶部全选。 + + + + + project.build.buildsPartLot.new_lot + 创建新批次 + + + + + project.build.add_builds_to_builds_part + Add builds to project builds part + + + + + project.build.builds_part_lot + 目标批次 + + + + + project.builds.number_of_builds + 生产数量 + + + + + project.builds.no_stocked_builds + 库存生产数量 + + + + + user.change_avatar.label + 更改配置图片 + + + + + user_settings.change_avatar.label + 更改配置图片 + + + + + user_settings.remove_avatar.label + 移除配置图片 + + + + + part.edit.name.category_hint + 来自类别的提示 + + + + + category.edit.partname_regex.placeholder + + + + + + category.edit.partname_regex.help + 与PCRE兼容的正则表达式,部分名称必须匹配。 + + + + + entity.select.add_hint + 使用 -> 创建嵌套结构,例如 "Node 1->Node 1.1" + + + + + entity.select.group.new_not_added_to_DB + 新建(尚未添加到数据库) + + + + + part.edit.save_and_new + 保存并创建新的空部件 + + + + + homepage.first_steps.title + 第一步 + + + + + homepage.first_steps.introduction + 数据库仍是空的。浏览 <a href="%url%">文档</a> 或创建以下数据结构: + + + + + homepage.first_steps.create_part + 或可以直接 <a href="%url%">创建新部件</a>. + + + + + homepage.first_steps.hide_hint + 一旦创建了第一个部件,此框就会隐藏。 + + + + + homepage.forum.text + 有关 Part-DB 的问题请访问 <a href="%href%" class="link-external" target="_blank">讨论</a> + + + + + log.element_edited.changed_fields.category + 类别 + + + + + log.element_edited.changed_fields.footprint + 封装 + + + + + log.element_edited.changed_fields.manufacturer + 制造商 + + + + + log.element_edited.changed_fields.value_typical + 标称值 + + + + + log.element_edited.changed_fields.pw_reset_expires + 重置密码 + + + + + log.element_edited.changed_fields.comment + 注释 log.element_edited.changed_fields.supplierpartnr - 供货商元件编号 + 供应商部件号 log.element_edited.changed_fields.supplier_product_url - 商品页 + 供应商链接 + + + + + log.element_edited.changed_fields.price + 价格 + + + + + log.element_edited.changed_fields.min_discount_quantity + 最低折扣数量 + + + + + log.element_edited.changed_fields.original_filename + 原始文件名 + + + + + log.element_edited.changed_fields.path + 文件路径 + + + + + log.element_edited.changed_fields.description + 描述 + + + + + log.element_edited.changed_fields.manufacturing_status + 生产状态 @@ -3535,5 +10424,1777 @@ 条码类型 + + + log.element_edited.changed_fields.status + 状态 + + + + + log.element_edited.changed_fields.quantity + BOM 数量 + + + + + log.element_edited.changed_fields.mountnames + 装配名称 + + + + + log.element_edited.changed_fields.name + 名称 + + + + + log.element_edited.changed_fields.part + 部件 + + + + + log.element_edited.changed_fields.price_currency + 价格币种 + + + + + log.element_edited.changed_fields.partname_hint + 部件名称提示 + + + + + log.element_edited.changed_fields.partname_regex + 名称过滤器 + + + + + log.element_edited.changed_fields.disable_footprints + 禁用封装 + + + + + log.element_edited.changed_fields.disable_manufacturers + 禁用制造商 + + + + + log.element_edited.changed_fields.disable_autodatasheets + 禁用自动 DataSheet 链接 + + + + + log.element_edited.changed_fields.disable_properties + 禁用属性 + + + + + log.element_edited.changed_fields.default_description + 默认描述 + + + + + log.element_edited.changed_fields.default_comment + 默认注释 + + + + + log.element_edited.changed_fields.filetype_filter + 允许的文件扩展名 + + + + + log.element_edited.changed_fields.not_selectable + 未选择 + + + + + log.element_edited.changed_fields.parent + 父元素 + + + + + log.element_edited.changed_fields.shipping_costs + 运输费 + + + + + log.element_edited.changed_fields.default_currency + 默认货币 + + + + + log.element_edited.changed_fields.address + 地址 + + + + + log.element_edited.changed_fields.phone_number + 电话号码 + + + + + log.element_edited.changed_fields.fax_number + 传真号码 + + + + + log.element_edited.changed_fields.email_address + 邮件 + + + + + log.element_edited.changed_fields.website + 网站 + + + + + log.element_edited.changed_fields.auto_product_url + 产品链接 + + + + + log.element_edited.changed_fields.is_full + 储存位置已满 + + + + + log.element_edited.changed_fields.limit_to_existing_parts + 仅限当前部件 + + + + + log.element_edited.changed_fields.only_single_part + 仅单部件 + + + + + log.element_edited.changed_fields.storage_type + 储存类型 + + + + + log.element_edited.changed_fields.footprint_3d + 3D模型 + + + + + log.element_edited.changed_fields.master_picture_attachment + 预览图像 + + + + + log.element_edited.changed_fields.exchange_rate + 汇率 + + + + + log.element_edited.changed_fields.iso_code + 汇率 + + + + + log.element_edited.changed_fields.unit + 单位符号 + + + + + log.element_edited.changed_fields.is_integer + 整数 + + + + + log.element_edited.changed_fields.use_si_prefix + 使用 SI 前缀 + + + + + log.element_edited.changed_fields.options.width + + + + + + log.element_edited.changed_fields.options.height + + + + + + log.element_edited.changed_fields.options.supported_element + 目标类型 + + + + + log.element_edited.changed_fields.options.additional_css + 附加样式(CSS) + + + + + log.element_edited.changed_fields.options.lines + 内容 + + + + + log.element_edited.changed_fields.permissions.data + 权限 + + + + + log.element_edited.changed_fields.disabled + 禁用 + + + + + log.element_edited.changed_fields.theme + 主题 + + + + + log.element_edited.changed_fields.timezone + 时区 + + + + + log.element_edited.changed_fields.language + 语言 + + + + + log.element_edited.changed_fields.email + 邮件 + + + + + log.element_edited.changed_fields.department + 部门 + + + + + log.element_edited.changed_fields.last_name + + + + + + log.element_edited.changed_fields.first_name + + + + + + log.element_edited.changed_fields.group + + + + + + log.element_edited.changed_fields.currency + 首选货币 + + + + + log.element_edited.changed_fields.enforce2FA + 执行 2FA + + + + + log.element_edited.changed_fields.symbol + 符号 + + + + + log.element_edited.changed_fields.value_min + 最小值 + + + + + log.element_edited.changed_fields.value_max + 最大值 + + + + + log.element_edited.changed_fields.value_text + 文本值 + + + + + log.element_edited.changed_fields.show_in_table + 显示在表中 + + + + + log.element_edited.changed_fields.attachment_type + 显示在表中 + + + + + log.element_edited.changed_fields.needs_review + 需要审查 + + + + + log.element_edited.changed_fields.tags + 标签 + + + + + log.element_edited.changed_fields.mass + 重量 + + + + + log.element_edited.changed_fields.ipn + IPN + + + + + log.element_edited.changed_fields.favorite + 收藏 + + + + + log.element_edited.changed_fields.minamount + 最小库存 + + + + + log.element_edited.changed_fields.manufacturer_product_url + 产品链接 + + + + + log.element_edited.changed_fields.manufacturer_product_number + MPN + + + + + log.element_edited.changed_fields.partUnit + 计量单位 + + + + + log.element_edited.changed_fields.expiration_date + 有效期 + + + + + log.element_edited.changed_fields.amount + 数量 + + + + + log.element_edited.changed_fields.storage_location + 存储位置 + + + + + attachment.max_file_size + 最大文件大小 + + + + + user.saml_user + SSO/SAML 用户 + + + + + user.saml_user.pw_change_hint + 该用户使用单点登录 (SSO),无法在此处更改密码和2FA设置,请在SSO提供商上配置。 + + + + + login.sso_saml_login + 单点登录 (SSO) + + + + + login.local_login_hint + 下面的表单仅适用于本地用户登录。如果要通过单点登录进行登录请使用上面的按钮。 + + + + + part_list.action.action.export + 导出部件 + + + + + part_list.action.export_json + 导出 JSON + + + + + part_list.action.export_csv + 导出 CSV + + + + + part_list.action.export_yaml + 导出 YAML + + + + + part_list.action.export_xml + 导出 XML + + + + + parts.import.title + 导入部件 + + + + + parts.import.errors.title + 导入违规 + + + + + parts.import.flash.error + 导入出错。可能存在无效数据 + + + + + parts.import.format.auto + 自动(基于文件扩展名) + + + + + parts.import.flash.error.unknown_format + 无法判断给定文件的格式。 + + + + + parts.import.flash.error.invalid_file + 文件无效。请检查格式选择 + + + + + parts.import.part_category.label + 类别覆盖 + + + + + parts.import.part_category.help + 强制导入所有的部件到此类别,忽略文件中设置的类别。 + + + + + import.create_unknown_datastructures + 创建未知的数据结构 + + + + + import.create_unknown_datastructures.help + 自动创建数据库中尚不存在的数据结构。如果不自动创建,不会导入未匹配的数据 + + + + + import.path_delimiter + 路径分隔符 + + + + + import.path_delimiter.help + 分隔符用于标记数据结构的路径。 + + + + + parts.import.help_documentation + 有关文件格式的更多信息请查看 <a href="%link%">文档</a> + + + + + parts.import.help + 使用此工具从文件导入部件。操作将直接写入数据库,请确保文件内容正确。 + + + + + parts.import.flash.success + 部件导入成功! + + + + + parts.import.errors.imported_entities + 已导入部件 + + + + + perm.import + 导入数据 + + + + + parts.import.part_needs_review.label + 强制 "需要审核" + + + + + parts.import.part_needs_review.help + 将所有部件配置为 "需要审查" (忽略导入文件内的部件属性) + + + + + project.bom_import.flash.success + 已成功导入 %count% 个BOM条目。 + + + + + project.bom_import.type + Type + + + + + project.bom_import.type.kicad_pcbnew + KiCAD PCB编辑器 BOM(.CSV) + + + + + project.bom_import.clear_existing_bom + 导入前删除现有BOM条目 + + + + + project.bom_import.clear_existing_bom.help + 删除项目中所有旧的BOM条目,再从文件导入新的 + + + + + project.bom_import.flash.invalid_file + 无法导入文件,请检查文件类型。错误信息:%message% + + + + + project.bom_import.flash.invalid_entries + 验证错误。请检查数据 + + + + + project.import_bom + 为项目导入BOM + + + + + project.edit.bom.import_bom + 导入BOM + + + + + measurement_unit.new + 新建度量单位 + + + + + measurement_unit.edit + 编辑度量单位 + + + + + user.aboutMe.label + 关于我 + + + + + storelocation.owner.label + 所有者 + + + + + storelocation.part_owner_must_match.label + 部件批次所有者 必须与 存储位置所有者 匹配 + + + + + part_lot.owner + 所有者 + + + + + part_lot.owner.help + 只有所有者可以提取或添加该批次的库存。 + + + + + log.element_edited.changed_fields.owner + 所有者 + + + + + log.element_edited.changed_fields.instock_unknown + 数量不明 + + + + + log.element_edited.changed_fields.needs_refill + 需要补充 + + + + + part.withdraw.access_denied + 拒绝操作。请检查权限 + + + + + part.info.amount.less_than_desired + 低于预期 + + + + + log.cli_user + 命令行用户 + + + + + log.element_edited.changed_fields.part_owner_must_match + 部件所有者 必须与 存储位置所有者 匹配 + + + + + part.filter.lessThanDesired + 库存低于预期 + + + + + part.filter.lotOwner + 批次所有者 + + + + + user.show_email_on_profile.label + 在公共个人资料页面上显示电子邮件 + + + + + log.details.title + 日志详情 + + + + + log.user_login.login_from_ip + 从IP地址登录 + + + + + log.user_login.ip_anonymize_hint + 如果IP地址的最后一位丢失,则启用 GDPR 模式,其中IP地址将被匿名化。 + + + + + log.user_not_allowed.unauthorized_access_attempt_to + 访问尝试未授权的页面 + + + + + log.user_not_allowed.hint + 请求被拒绝。 + + + + + log.no_comment + 无注释 + + + + + log.element_changed.field + 字段 + + + + + log.element_changed.data_before + 变更前数据 + + + + + error_table.error + 请求期间发生了错误。 + + + + + part.table.invalid_regex + 无效的正则表达式(regex) + + + + + log.element_changed.data_after + 变更后数据 + + + + + log.element_changed.diff + 差异 + + + + + log.undo.undo.short + 撤销 + + + + + log.undo.revert.short + 恢复到此时间戳 + + + + + log.view_version + 查看版本 + + + + + log.undo.undelete.short + 取消删除 + + + + + log.element_edited.changed_fields.id + ID + + + + + log.element_edited.changed_fields.id_owner + 所有者 + + + + + log.element_edited.changed_fields.parent_id + 父元素 + + + + + log.details.delete_entry + 删除日志条目 + + + + + log.delete.message.title + 确实删除该日志条目? + + + + + log.delete.message + 如果这是元素历史记录条目,则会破坏元素历史记录!使用时间旅行功能时,这可能会导致意外结果。 + + + + + log.collection_deleted.on_collection + 收藏中 + + + + + log.element_edited.changed_fields.attachments + 附件 + + + + + tfa_u2f.add_key.registration_error + 注册安全密钥期间发生错误。再试一次或使用另一个安全密钥 + + + + + log.target_type.none + + + + + + ui.darkmode.light + 亮色 + + + + + ui.darkmode.dark + 暗色 + + + + + ui.darkmode.auto + 自动(跟随系统设置) + + + + + label_generator.no_lines_given + 没有文字内容。标签将保持为空 + + + + + user.password_strength.very_weak + 非常弱 + + + + + user.password_strength.weak + + + + + + user.password_strength.medium + + + + + + user.password_strength.strong + + + + + + user.password_strength.very_strong + 非常强 + + + + + perm.users.impersonate + 模仿其他用户 + + + + + user.impersonated_by.label + 模仿用户 + + + + + user.stop_impersonation + 停止模仿 + + + + + user.impersonate.btn + 模仿 + + + + + user.impersonate.confirm.title + 确认模仿该用户? + + + + + user.impersonate.confirm.message + 他将被登录。确保在理由充分的情况执行该操作。 + +请注意不能模仿禁用的用户。如果尝试会收到 "拒绝访问" 消息。 + + + + + log.type.security.user_impersonated + 用户被模仿 + + + + + info_providers.providers_list.title + 信息提供者 + + + + + info_providers.providers_list.active + 活动 + + + + + info_providers.providers_list.disabled + 禁用 + + + + + info_providers.capabilities.basic + 基本 + + + + + info_providers.capabilities.footprint + 封装 + + + + + info_providers.capabilities.picture + 图片 + + + + + info_providers.capabilities.datasheet + 数据文档 + + + + + info_providers.capabilities.price + 价格 + + + + + part.info_provider_reference.badge + 用于创建此部件的信息提供者。 + + + + + part.info_provider_reference + 由信息提供者创建 + + + + + oauth_client.connect.btn + 连接 OAuth + + + + + info_providers.table.provider.label + 提供者 + + + + + info_providers.search.keyword + 关键词 + + + + + info_providers.search.submit + 搜索 + + + + + info_providers.search.providers.help + 选择被搜索的提供商。 + + + + + info_providers.search.providers + 提供者 + + + + + info_providers.search.info_providers_list + 显示所有可用的信息提供者 + + + + + info_providers.search.title + 从信息提供者创建部件 + + + + + oauth_client.flash.connection_successful + 已成功连接到 OAuth 应用程序 + + + + + perm.part.info_providers + 信息提供者 + + + + + perm.part.info_providers.create_parts + 从信息提供者创建部件 + + + + + entity.edit.alternative_names.label + 替代名称 + + + + + entity.edit.alternative_names.help + 此处给出的替代名称用于根据信息提供者的结果查找该元素。 + + + + + info_providers.form.help_prefix + 提供者 + + + + + update_manager.new_version_available.title + 新版本可用 + + + + + update_manager.new_version_available.text + Part-DB 新版本,已推出 + + + + + update_manager.new_version_available.only_administrators_can_see + 只有管理员才能看到此消息。 + + + + + perm.system.show_available_updates + 显示可用的 Part-DB 更新 + + + + + user.settings.api_tokens + API 令牌 + + + + + user.settings.api_tokens.description + 使用 API 令牌,第三方软件可以以特定用户的权限访问 Part-DB,使用 REST API 执行各种操作。如果删除 API 令牌,则使用该令牌的软件将无法访问 Part-DB。 + + + + + api_tokens.name + 名称 + + + + + api_tokens.access_level + 访问权限 + + + + + api_tokens.expiration_date + 有效期 + + + + + api_tokens.added_date + 添加于 + + + + + api_tokens.last_time_used + 上次使用时间 + + + + + datetime.never + 未使用过 + + + + + api_token.valid + 有效 + + + + + api_token.expired + 已到期 + + + + + user.settings.show_api_documentation + 显示API文档 + + + + + api_token.create_new + 创建新的 API 令牌 + + + + + api_token.level.read_only + 只读 + + + + + api_token.level.edit + 编辑 + + + + + api_token.level.admin + 管理员 + + + + + api_token.level.full + 所有权限 + + + + + api_tokens.access_level.help + API令牌访问始终受用户权限限制。 + + + + + api_tokens.expiration_date.help + 在此日期之后,令牌将不再可用。如果需要令牌永不过期,请保留为空。 + + + + + api_tokens.your_token_is + API令牌: + + + + + api_tokens.please_save_it + 请保存。以后将无法查看到完整的API令牌 + + + + + api_tokens.create_new.back_to_user_settings + 返回用户设置 + + + + + project.build.dont_check_quantity + 不检查数量 + + + + + project.build.dont_check_quantity.help + 无论生产该项目实际需要更多或更少的部件,都将按给定的数量进行提取。 + + + + + part_list.action.invert_selection + 反转选择 + + + + + perm.api + API + + + + + perm.api.access_api + 访问 API + + + + + perm.api.manage_tokens + 管理 API 令牌 + + + + + user.settings.api_tokens.delete.title + 确实删除此API令牌? + + + + + user.settings.api_tokens.delete + 删除 + + + + + user.settings.api_tokens.delete.message + 使用此 API 令牌的第三方软件将无法再访问 Part-DB。该操作无法撤消 + + + + + api_tokens.deleted + API令牌删除成功 + + + + + user.settings.api_tokens.no_api_tokens_yet + 无任何 API 令牌。 + + + + + api_token.ends_with + 结尾为 + + + + + entity.select.creating_new_entities_not_allowed + 不能创建这种类型的新实体。请选择一个现有的 + + + + + scan_dialog.mode + 条码类型 + + + + + scan_dialog.mode.auto + 自动检测 + + + + + scan_dialog.mode.ipn + IPN条码 + + + + + scan_dialog.mode.internal + Part-DB条码 + + + + + part_association.label + 部件关联 + + + + + part.edit.tab.associations + 相关部件 + + + + + part_association.edit.other_part + 相关的部件 + + + + + part_association.edit.type + 类型 + + + + + part_association.edit.comment + 注释 + + + + + part_association.edit.type.help + 选择所选部件与该部件的关联方式。 + + + + + part_association.table.from_this_part + 从该部件关联到其他部件 + + + + + part_association.table.from + 来自 + + + + + part_association.table.type + 关系 + + + + + part_association.table.to + + + + + + part_association.type.compatible + 兼容 + + + + + part_association.table.to_this_part + 其他与该部分的关联 + + + + + part_association.type.other + 其他(自定义值) + + + + + part_association.type.supersedes + 代替 + + + + + part_association.edit.other_type + 自定义类型 + + + + + part_association.edit.delete.confirm + 确实删除该关联? 操作不能被撤消 + + + + + part_lot.edit.advanced + 展开高级选项 + + + + + part_lot.edit.vendor_barcode + 供应商条形码 + + + + + part_lot.edit.vendor_barcode.help + 如果该批次已有条形码,可以在此处输入其内容,以便轻松扫描。 + + + + + scan_dialog.mode.vendor + 供应商条形码(配置于部件批次) + + + + + project.bom.instockAmount + 库存数量 + + + + + collection_type.new_element.tooltip + 该元素是新创建的,尚未写入到数据库中。 + + + + + part.merge.title + 合并部件 + + + + + part.merge.title.into + + + + + + part.merge.confirm.title + 确实要合并 <b>%other%</b> 到 <b>%target%</b> ? + + + + + part.merge.confirm.message + 将删除 <b>%other%</b>。部件将以显示的信息保存。 + + + + + part.info.merge_modal.title + 合并部件 + + + + + part.info.merge_modal.other_part + 其他部件 + + + + + part.info.merge_modal.other_into_this + 将其他部件合并到此部件(删除其他,保留自己) + + + + + part.info.merge_modal.this_into_other + 将此部件合并到其他部件(删除自己,保留其他) + + + + + part.info.merge_btn + 合并部件 + + + + + part.update_part_from_info_provider.btn + 从信息提供者更新部件 + + + + + info_providers.update_part.title + 从信息提供者更新现有部件 + + + + + part.merge.flash.please_review + 数据尚未保存。查看更改并单击 保存 以保留新数据 + + + + + user.edit.flash.permissions_fixed + 权限缺失,已更正。请检查权限是否正确 + + + + + permission.legend.dependency_note + 请注意,有些权限操作是相互依赖的。如果遇到权限缺失并已更正的警告,并且某个权限被设置为允许,则必须同时将依赖操作也设置为禁止。依赖通常位于操作的右侧。 + + + + + log.part_stock_changed.timestamp + 时间戳 + + + + + part.info.withdraw_modal.timestamp + 操作时间戳 + + + + + part.info.withdraw_modal.timestamp.hint + 该字段允许指定真实日期,即实际执行库存操作的日期,而不仅仅是记录日期。该值将保存在日志条目的额外字段中。 + + + + + part.info.withdraw_modal.delete_lot_if_empty + 如果该批次是空的,请删除 + + + + + info_providers.search.error.client_exception + 与信息提供者通信时发生错误。检查此提供程序的配置并刷新 OAuth 令牌(如果可能)。 + + + + + eda_info.reference_prefix.placeholder + e + + + + + eda_info.reference_prefix + 参考前缀 + + + + + eda_info.kicad_section.title + KiCad 设置 + + + + + eda_info.value + + + + + + eda_info.value.placeholder + + + + + + eda_info.exclude_from_bom + 从BOM中排除 + + + + + eda_info.exclude_from_board + 从PCB中排除 + + + + + eda_info.exclude_from_sim + 从仿真中排除 + + + + + eda_info.kicad_symbol + KiCad 符号名 + + + + + eda_info.kicad_symbol.placeholder + + + + + + eda_info.kicad_footprint + KiCad 封装名 + + + + + eda_info.kicad_footprint.placeholder + + + + + + part.edit.tab.eda + EDA信息 + + + + + api.api_endpoints.title + API端点 + + + + + api.api_endpoints.partdb + Part-DB API + + + + + api.api_endpoints.kicad_root_url + KiCad API 根链接 + + + + + eda_info.visibility + 保持可见 + + + + + eda_info.visibility.help + 强制零件可见。默认情况下,EDA软件将自动确定可见性。 + + + + + part.withdraw.zero_amount + 尝试提取/添加的数量为零。未执行任何操作 + + + + + login.flash.access_denied_please_login + 拒绝访问。请登录 + + diff --git a/translations/security.zh.xlf b/translations/security.zh.xlf index 3032eec6..61b236ae 100644 --- a/translations/security.zh.xlf +++ b/translations/security.zh.xlf @@ -4,13 +4,13 @@ user.login_error.user_disabled - 你的账号已被禁用!如果你认为这有问题,请联系管理员。 + 账户已被禁用。请联系管理员 saml.error.cannot_login_local_user_per_saml - 你不能使用 SSO 登录本地用户!请使用本地用户密码。 + 无法通过 SSO 以本地用户身份登录。请使用本地用户密码 diff --git a/translations/validators.zh.xlf b/translations/validators.zh.xlf index d21ac5ca..77153e35 100644 --- a/translations/validators.zh.xlf +++ b/translations/validators.zh.xlf @@ -39,7 +39,7 @@ part.master_attachment.must_be_picture - 预览附件必须是一张有效的图像! + 预览附件必须是有效的图片 @@ -84,7 +84,7 @@ structural.entity.unique_name - 在这个层级上已经存在一个同名的元素! + 相同层下已存在同名元素 @@ -104,7 +104,7 @@ parameters.validator.min_lesser_typical - 这个值必须小于等于典型值 ({{ compared_value }})。 + 值必须小于或等于标称值 ({{compare_value}})。 @@ -124,7 +124,7 @@ parameters.validator.min_lesser_max - 这个值必须小于最大值 ({{ compared_value }})。 + 值必须小于最大值 ({{compare_value}})。 @@ -144,7 +144,7 @@ parameters.validator.max_greater_typical - 这个值必须大于等于典型值 ({{ compared_value }})。 + 值必须大于或等于标称值 ({{compare_value}})。 @@ -154,7 +154,7 @@ validator.user.username_already_used - 已存在一个同名的用户 + 已存在同名用户 @@ -164,7 +164,7 @@ user.invalid_username - 用户名无效 + 用户名只能包含字母、数字、下划线、点、加号或减号。 @@ -173,7 +173,7 @@ validator.noneofitschild.self - 一个元素不能是自己的父元素! + 一个元素不能是它自己的父元素。 @@ -182,139 +182,163 @@ validator.noneofitschild.children - 你不能将子元素设置为他们父元素 (这会导致循环)! + 不能将子元素指定为父元素(会导致循环)。 validator.select_valid_category - 选择一个有效类别 + 请选择一个有效的类别。 validator.part_lot.only_existing - 不能将一个被标记为 “只存在” 的新元件添加到此区域 + 无法将新部件添加到此位置,因为它被标记为 "仅现有" validator.part_lot.location_full.no_increase - 区域已满。不能再增加数量 (新值必须小于 {{ old_amount }})。 + 位置已满。数量无法增加(增加值必须小于 {{ old_amount }})。 validator.part_lot.location_full - 区域已满。不能再添加新元件。 + 位置已满。无法添加新部件。 validator.part_lot.single_part - 这个区域只能添加单个元件,并且该区域已满! + 该位置只能储存一个部件。 validator.attachment.must_not_be_null - 你必须选择一个附件类型! + 必须选择附件类型。 validator.orderdetail.supplier_must_not_be_null - 你必须选择一个供应商! + 必须选择供应商。 validator.measurement_unit.use_si_prefix_needs_unit - 如果你需要启用 SI 前缀,你必须设置一个单位符号! + 要启用 SI 前缀,必须设置单位符号。 part.ipn.must_be_unique - 内部元件编号必须是唯一的。{{ value }} 已经被使用了! + 内部部件号是唯一的。{{ value }} 已被使用! validator.project.bom_entry.name_or_part_needed - 你需要选择一个元件作为 BOM 条目或给非 BOM 条目设置一个名称。 + 您必须为 BOM 条目选择部件,或为非部件 BOM 条目设置名称。 project.bom_entry.name_already_in_bom - 已经存在一个同名的 BOM 条目! + 已存在具有该名称的 BOM 条目。 project.bom_entry.part_already_in_bom - 这个元件已经在 BOM 中! + 该部件已存在于 BOM 中。 project.bom_entry.mountnames_quantity_mismatch - 安装名称的数量必须与 BOM 数量匹配! + 挂载名称的数量必须与 BOM 数量匹配。 project.bom_entry.can_not_add_own_builds_part - 您无法将项目自己的构建部分添加到 BOM。 + 您无法将项目自己的生产映射部件添加到 BOM 中。 project.bom_has_to_include_all_subelement_parts - 项目 BOM 必须包括所有子项目构建部件。 项目 %project_name% 的 %part_name% 元件缺失! + 项目 BOM 必须包括所有子项目生产的部件。项目 %project_name% 的 %part_name% 部件丢失。 project.bom_entry.price_not_allowed_on_parts - 与元件关联的 BOM 条目不允许定价。 请使用元件的价格定义。 + 与部件关联的 BOM 条目上不允许有价格。请在部件上定义价格。 validator.project_build.lot_bigger_than_needed - 您选择的退还数量超出了所需数量! 移除不必要的数量。 + 选择的提取数量超出所需数量。 validator.project_build.lot_smaller_than_needed - 您选择的提取数量少于构建所需的数量! 添加额外数量。 + 选择的提取数量少于所需数量。 part.name.must_match_category_regex - 部分名称与类别指定的正则表达式不匹配:%regex% + 部件名称与类别指定的正则表达式不匹配:%regex% validator.attachment.name_not_blank - 在此处设置一个值,或上传文件以自动使用其文件名作为附件的名称。 + 手动设置值,或上传文件使用其文件名作为附件的名称。 validator.part_lot.owner_must_match_storage_location_owner - 该批次的所有者必须与所选存储位置的所有者 (%owner_name%) 匹配! + 该 批次的所有者 必须与 所选存储位置的所有者(%owner_name%) 匹配! validator.part_lot.owner_must_not_be_anonymous - 块所有者不能是匿名用户! + 批次所有者不能是匿名用户。 + + + + + validator.part_association.must_set_an_value_if_type_is_other + 如果将类型设置为 "other" 则必须为其设置一个描述性值。 + + + + + validator.part_association.part_cannot_be_associated_with_itself + 部件不能与自己关联。 + + + + + validator.part_association.already_exists + 与此部件的关联已存在。 + + + + + validator.part_lot.vendor_barcode_must_be_unique + 该供应商条码已在另一批次中使用。条形码必须是唯一的 From 0d5b7a071149f0fcb066066c9a1c4cf1fe1e5f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 21:42:33 +0100 Subject: [PATCH 046/634] New translations messages.en.xlf (Chinese Simplified) (#511) --- translations/messages.zh.xlf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index e160416a..c6cbcb9d 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -8915,7 +8915,7 @@ Element 3 entity.delete.must_not_contain_parts - "%PATH%" 仍然包含部件。所有移除所有关联才能删除 + "%PATH%" 仍然包含部件。所有移除所有关联才能删除 @@ -12079,7 +12079,7 @@ Element 3 eda_info.reference_prefix.placeholder - e + e @@ -12181,7 +12181,7 @@ Element 3 eda_info.visibility.help - 强制零件可见。默认情况下,EDA软件将自动确定可见性。 + 强制零件可见。默认情况下,EDA软件将自动确定可见性。 From a1bdfab80f20198a1a86ea93676e3312d218a5b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 21:44:36 +0100 Subject: [PATCH 047/634] Bump codecov/codecov-action from 3 to 4 (#509) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3 to 4. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3...v4) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2b901dd2..8f4610ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -117,7 +117,7 @@ jobs: run: ./bin/phpunit --coverage-clover=coverage.xml - name: Upload coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: env_vars: PHP_VERSION,DB_TYPE token: ${{ secrets.CODECOV_TOKEN }} From f0fd3d8c1d0f112aa579eac7598e3a2bb171295c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 21:47:18 +0100 Subject: [PATCH 048/634] Updated dependencies --- composer.lock | 403 +++++++++++++++++++++++--------------------------- yarn.lock | 138 +++++++++-------- 2 files changed, 261 insertions(+), 280 deletions(-) diff --git a/composer.lock b/composer.lock index 26e3c7a2..da79a25f 100644 --- a/composer.lock +++ b/composer.lock @@ -241,27 +241,30 @@ }, { "name": "beberlei/doctrineextensions", - "version": "v1.3.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/beberlei/DoctrineExtensions.git", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + "reference": "249eab82aa35b65741388f38499b3162403d9956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/249eab82aa35b65741388f38499b3162403d9956", + "reference": "249eab82aa35b65741388f38499b3162403d9956", "shasum": "" }, "require": { - "doctrine/orm": "^2.7", + "doctrine/orm": "^2.15", "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", + "doctrine/annotations": "^1.14 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "nesbot/carbon": "*", "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/yaml": "^4.2 || ^5.0", + "squizlabs/php_codesniffer": "^3.8", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^4.4 || ^5.3 || ^6.0 || ^7.0", "zf1/zend-date": "^1.12", "zf1/zend-registry": "^1.12" }, @@ -292,9 +295,9 @@ "orm" ], "support": { - "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.4.0" }, - "time": "2020-11-29T07:37:23+00:00" + "time": "2024-02-05T17:02:44+00:00" }, { "name": "brick/math", @@ -937,16 +940,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" + "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2", + "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2", "shasum": "" }, "require": { @@ -962,9 +965,9 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.56", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.15", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.8.1", @@ -1030,7 +1033,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.0" + "source": "https://github.com/doctrine/dbal/tree/3.8.1" }, "funding": [ { @@ -1046,7 +1049,7 @@ "type": "tidelift" } ], - "time": "2024-01-25T21:44:02+00:00" + "time": "2024-02-03T17:33:49+00:00" }, { "name": "doctrine/deprecations", @@ -1097,16 +1100,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.1", + "version": "2.11.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4089f1424b724786c062aea50aae5f773449b94b" + "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", - "reference": "4089f1424b724786c062aea50aae5f773449b94b", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", + "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", "shasum": "" }, "require": { @@ -1127,18 +1130,18 @@ }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.14 || >=4.0", + "doctrine/orm": "<2.17 || >=4.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.14 || ^3.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^9.5.26 || ^10.0", + "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^4", + "psalm/plugin-symfony": "^5", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/phpunit-bridge": "^6.1 || ^7.0", "symfony/property-info": "^5.4 || ^6.0 || ^7.0", @@ -1151,7 +1154,7 @@ "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^4.30" + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -1196,7 +1199,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.2" }, "funding": [ { @@ -1212,7 +1215,7 @@ "type": "tidelift" } ], - "time": "2023-11-15T20:01:50+00:00" + "time": "2024-02-06T15:41:25+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1559,16 +1562,16 @@ }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { @@ -1576,11 +1579,11 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", "autoload": { @@ -1617,7 +1620,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/2.1.1" }, "funding": [ { @@ -1633,7 +1636,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "doctrine/migrations", @@ -1739,16 +1742,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.4", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", - "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b", + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b", "shasum": "" }, "require": { @@ -1761,7 +1764,7 @@ "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^2", + "doctrine/lexer": "^2 || ^3", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -1797,7 +1800,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1834,9 +1837,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.4" + "source": "https://github.com/doctrine/orm/tree/2.18.0" }, - "time": "2024-01-26T19:41:16+00:00" + "time": "2024-01-31T15:53:12+00:00" }, { "name": "doctrine/persistence", @@ -4991,16 +4994,16 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5.5", + "version": "0.5.6", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8" + "reference": "a1681e9793040740a405ac5b189275059e2a9863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/671df0f3516252011aa94f9e8e3b3b66199339f8", - "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", + "reference": "a1681e9793040740a405ac5b189275059e2a9863", "shasum": "" }, "require": { @@ -5029,9 +5032,9 @@ "homepage": "https://github.com/PhenX/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.5" + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" }, - "time": "2024-01-07T18:13:29+00:00" + "time": "2024-01-29T14:45:26+00:00" }, { "name": "phenx/php-svg-lib", @@ -7120,20 +7123,20 @@ }, { "name": "spomky-labs/pki-framework", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/86102bdd19379b2c6e5b0feb94fd490d40e7d133", + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133", "shasum": "" }, "require": { - "brick/math": "^0.10 || ^0.11", + "brick/math": "^0.10|^0.11|^0.12", "ext-mbstring": "*", "php": ">=8.1" }, @@ -7141,20 +7144,21 @@ "ekino/phpstan-banned-code": "^1.0", "ext-gmp": "*", "ext-openssl": "*", - "infection/infection": "^0.26", + "infection/infection": "^0.27", "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.3", "phpstan/phpstan": "^1.8", "phpstan/phpstan-beberlei-assert": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^10.0", - "rector/rector": "^0.15", + "phpunit/phpunit": "^10.1", + "rector/rector": "^0.19", "roave/security-advisories": "dev-latest", - "symfony/phpunit-bridge": "^6.1", - "symfony/var-dumper": "^6.1", - "symplify/easy-coding-standard": "^11.1", - "thecodingmachine/phpstan-safe-rule": "^1.2" + "symfony/phpunit-bridge": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "ext-bcmath": "For better performance (or GMP)", @@ -7214,7 +7218,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.1" }, "funding": [ { @@ -7226,7 +7230,7 @@ "type": "patreon" } ], - "time": "2023-02-13T17:21:24+00:00" + "time": "2024-02-05T20:37:46+00:00" }, { "name": "symfony/apache-pack", @@ -8557,16 +8561,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.3", + "version": "v2.4.4", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1" + "reference": "bec213c39511eda66663baa2ee7440c65f89c695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", - "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", + "url": "https://api.github.com/repos/symfony/flex/zipball/bec213c39511eda66663baa2ee7440c65f89c695", + "reference": "bec213c39511eda66663baa2ee7440c65f89c695", "shasum": "" }, "require": { @@ -8602,7 +8606,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.3" + "source": "https://github.com/symfony/flex/tree/v2.4.4" }, "funding": [ { @@ -8618,7 +8622,7 @@ "type": "tidelift" } ], - "time": "2024-01-02T11:08:32+00:00" + "time": "2024-02-05T18:04:53+00:00" }, { "name": "symfony/form", @@ -9773,16 +9777,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -9796,9 +9800,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9835,7 +9836,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -9851,20 +9852,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -9875,9 +9876,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9916,7 +9914,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -9932,20 +9930,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e46b4da57951a16053cd751f63f4a24292788157" + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", - "reference": "e46b4da57951a16053cd751f63f4a24292788157", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { @@ -9956,9 +9954,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10003,7 +9998,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -10019,20 +10014,20 @@ "type": "tidelift" } ], - "time": "2023-03-21T17:27:24+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -10045,9 +10040,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10090,7 +10082,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -10106,20 +10098,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -10130,9 +10122,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10174,7 +10163,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -10190,20 +10179,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -10217,9 +10206,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10257,7 +10243,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -10273,20 +10259,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -10294,9 +10280,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10333,7 +10316,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -10349,20 +10332,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -10370,9 +10353,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10416,7 +10396,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -10432,20 +10412,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php82", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php82.git", - "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49" + "reference": "559d488c38784112c78b9bf17c5ce8366a265643" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/7716bea9c86776fb3362d6b52fe1fc9471056a49", - "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/559d488c38784112c78b9bf17c5ce8366a265643", + "reference": "559d488c38784112c78b9bf17c5ce8366a265643", "shasum": "" }, "require": { @@ -10453,9 +10433,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10495,7 +10472,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php82/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php82/tree/v1.29.0" }, "funding": [ { @@ -10511,20 +10488,20 @@ "type": "tidelift" } ], - "time": "2023-08-25T17:27:25+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { @@ -10533,9 +10510,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10575,7 +10549,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -10591,20 +10565,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T06:22:46+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { @@ -10618,9 +10592,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10657,7 +10628,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, "funding": [ { @@ -10673,7 +10644,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", @@ -11821,16 +11792,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.14.0", + "version": "v2.14.1", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4" + "reference": "da6b4a4f95a91390d38151ef67c77901a1210646" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4", - "reference": "a7c30d95ff109f3b9c357d38d9aaf50ee512b8d4", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/da6b4a4f95a91390d38151ef67c77901a1210646", + "reference": "da6b4a4f95a91390d38151ef67c77901a1210646", "shasum": "" }, "require": { @@ -11870,7 +11841,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.1" }, "funding": [ { @@ -11886,7 +11857,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T15:40:36+00:00" + "time": "2024-02-03T01:11:47+00:00" }, { "name": "symfony/stopwatch", @@ -13890,20 +13861,20 @@ }, { "name": "web-auth/cose-lib", - "version": "4.2.3", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/web-auth/cose-lib.git", - "reference": "0ecad86d2d034ea22e2205d81c8cdec13d93a991" + "reference": "e5c417b3b90e06c84638a18d350e438d760cb955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/0ecad86d2d034ea22e2205d81c8cdec13d93a991", - "reference": "0ecad86d2d034ea22e2205d81c8cdec13d93a991", + "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/e5c417b3b90e06c84638a18d350e438d760cb955", + "reference": "e5c417b3b90e06c84638a18d350e438d760cb955", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", @@ -13921,8 +13892,8 @@ "phpstan/phpstan-strict-rules": "^1.2", "phpunit/phpunit": "^10.1", "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.17", - "symfony/phpunit-bridge": "^6.1", + "rector/rector": "^0.19", + "symfony/phpunit-bridge": "^6.4|^7.0", "symplify/easy-coding-standard": "^12.0" }, "suggest": { @@ -13957,7 +13928,7 @@ ], "support": { "issues": "https://github.com/web-auth/cose-lib/issues", - "source": "https://github.com/web-auth/cose-lib/tree/4.2.3" + "source": "https://github.com/web-auth/cose-lib/tree/4.3.0" }, "funding": [ { @@ -13969,11 +13940,11 @@ "type": "patreon" } ], - "time": "2023-07-26T13:32:03+00:00" + "time": "2024-02-05T21:00:39+00:00" }, { "name": "web-auth/metadata-service", - "version": "4.7.8", + "version": "4.7.9", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-metadata-service.git", @@ -14038,7 +14009,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.7.8" + "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.7.9" }, "funding": [ { @@ -14054,16 +14025,16 @@ }, { "name": "web-auth/webauthn-lib", - "version": "4.7.8", + "version": "4.7.9", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-lib.git", - "reference": "71dda902527deef6421727105c289b5ef53b6967" + "reference": "03a652042d7b5e919e449954d729ced26ee3c3c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/71dda902527deef6421727105c289b5ef53b6967", - "reference": "71dda902527deef6421727105c289b5ef53b6967", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/03a652042d7b5e919e449954d729ced26ee3c3c2", + "reference": "03a652042d7b5e919e449954d729ced26ee3c3c2", "shasum": "" }, "require": { @@ -14123,7 +14094,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-lib/tree/4.7.8" + "source": "https://github.com/web-auth/webauthn-lib/tree/4.7.9" }, "funding": [ { @@ -14135,11 +14106,11 @@ "type": "patreon" } ], - "time": "2023-12-08T13:02:43+00:00" + "time": "2024-02-05T17:20:58+00:00" }, { "name": "web-auth/webauthn-symfony-bundle", - "version": "4.7.8", + "version": "4.7.9", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-symfony-bundle.git", @@ -14206,7 +14177,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.7.8" + "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.7.9" }, "funding": [ { @@ -16359,12 +16330,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "2f3b470e6ca356a27bf10b2b439c3683d20bebc1" + "reference": "9ea4e2d28628d32a5222d2efcd76d8a32be4c337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2f3b470e6ca356a27bf10b2b439c3683d20bebc1", - "reference": "2f3b470e6ca356a27bf10b2b439c3683d20bebc1", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/9ea4e2d28628d32a5222d2efcd76d8a32be4c337", + "reference": "9ea4e2d28628d32a5222d2efcd76d8a32be4c337", "shasum": "" }, "conflict": { @@ -16424,7 +16395,7 @@ "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", "brotkrueml/typo3-matomo-integration": "<1.3.2", "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": "<2.0.2", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", @@ -16452,7 +16423,7 @@ "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", "contao/core": ">=2,<3.5.39", - "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", + "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", @@ -16472,7 +16443,7 @@ "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", "doctrine/annotations": "<1.2.7", - "doctrine/cache": "<1.3.2|>=1.4,<1.4.2", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", "doctrine/common": "<2.4.3|>=2.5,<2.5.1", "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", "doctrine/doctrine-bundle": "<1.5.2", @@ -16589,7 +16560,7 @@ "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", - "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/auth": "<5.5.10", "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", @@ -16753,7 +16724,7 @@ "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<=3.1.7", + "phpmyfaq/phpmyfaq": "<3.2.5", "phpoffice/phpexcel": "<1.8", "phpoffice/phpspreadsheet": "<1.16", "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34", @@ -16809,7 +16780,7 @@ "reportico-web/reportico": "<=7.1.21", "rhukster/dom-sanitizer": "<1.0.7", "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": "<3.0.4", + "robrichards/xmlseclibs": ">=1,<3.0.4", "roots/soil": "<4.1", "rudloff/alltube": "<3.0.3", "s-cart/core": "<6.9", @@ -16835,7 +16806,7 @@ "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", "silverstripe/framework": "<4.13.39|>=5,<5.1.11", - "silverstripe/graphql": "<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", @@ -16846,7 +16817,7 @@ "silverstripe/userforms": "<3", "silverstripe/versioned-admin": ">=1,<1.11.1", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", "simplesamlphp/simplesamlphp": "<1.18.6", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "simplesamlphp/simplesamlphp-module-openid": "<1", @@ -16873,7 +16844,7 @@ "studio-42/elfinder": "<2.1.62", "subhh/libconnect": "<7.0.8|>=8,<8.1", "sukohi/surpass": "<1", - "sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10", + "sulu/sulu": "<1.6.44|>=2,<2.4.16|>=2.5,<2.5.12", "sumocoders/framework-user-bundle": "<1.4", "superbig/craft-audit": "<3.0.2", "swag/paypal": "<5.4.4", @@ -17012,7 +16983,7 @@ "yourls/yourls": "<=1.8.2", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": "<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", @@ -17044,7 +17015,7 @@ "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": "<1.0.3", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", "zfr/zfr-oauth2-server-module": "<0.1.2", "zoujingli/thinkadmin": "<=6.1.53" }, @@ -17084,7 +17055,7 @@ "type": "tidelift" } ], - "time": "2024-02-02T13:04:17+00:00" + "time": "2024-02-06T19:04:37+00:00" }, { "name": "sebastian/cli-parser", @@ -18579,16 +18550,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.8", + "version": "12.1.10", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "7962c810a8eebc4174a38d7dff673f1999e61595" + "reference": "67f643befd6997961aa6bd759b4529e94bb18b53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/7962c810a8eebc4174a38d7dff673f1999e61595", - "reference": "7962c810a8eebc4174a38d7dff673f1999e61595", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/67f643befd6997961aa6bd759b4529e94bb18b53", + "reference": "67f643befd6997961aa6bd759b4529e94bb18b53", "shasum": "" }, "require": { @@ -18621,7 +18592,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.8" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.10" }, "funding": [ { @@ -18633,7 +18604,7 @@ "type": "github" } ], - "time": "2024-01-16T22:56:06+00:00" + "time": "2024-02-05T10:58:24+00:00" }, { "name": "theseer/tokenizer", diff --git a/yarn.lock b/yarn.lock index b2e4f848..42283a3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -998,10 +998,10 @@ "@ckeditor/ckeditor5-utils" "40.2.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.5.1": - version "39.5.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.5.1.tgz#5d58ccd5e8a168d4f545f12230eededbf200a12f" - integrity sha512-dpLJRPrEuu/NDR/XMR7clcAxELKkJDGh45GKeRk3pA/jL9cK3rh5fr6m9TFKy2qbjnPaxNaBaHCLybQHTDw/vw== +"@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.6.0": + version "39.6.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.6.0.tgz#129390970935bc50342e01369004a79add8c61f9" + integrity sha512-8Y3cwVnb7XM9qADn0mAE6ovcFelsLSQ7IOsV6xpKqzbDkRYvth/0m9vqgmnFD4eSwB7lR68y9uwrYGORdET1LA== dependencies: "@babel/parser" "^7.18.9" "@babel/traverse" "^7.18.9" @@ -1011,11 +1011,11 @@ webpack-sources "^2.0.1" "@ckeditor/ckeditor5-dev-utils@^39.1.0": - version "39.5.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.5.1.tgz#f3e6ca3c5c61a018a5b907b2b100cdf35c30bb27" - integrity sha512-66LfUgbcgRDRcHUmxD6kIYw/0XhmPBd89Z7GsiDzL3l0U5h+n+yrskHQgBTWN4wI08qGvxhbFIHcvSCIqj0Xzg== + version "39.6.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.6.0.tgz#23b9163f26bc620464466d91d74c894fa354deda" + integrity sha512-1qaXTvaHNKaoRwRY/dK3wezyp0Genq0rIfdI1Hf0disttgTe4MRM7QCrbJiPsDhPmQdqzRNktHK39uixNfixoA== dependencies: - "@ckeditor/ckeditor5-dev-translations" "^39.5.1" + "@ckeditor/ckeditor5-dev-translations" "^39.6.0" chalk "^3.0.0" cli-cursor "^3.1.0" cli-spinners "^2.6.1" @@ -1781,9 +1781,9 @@ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.42" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz#2a276952acc73d1b8dc63fd4210647abbc553a71" - integrity sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ== + version "4.17.43" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54" + integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2562,14 +2562,15 @@ cacache@^15.0.5: tar "^6.0.2" unique-filename "^1.1.1" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== +call-bind@^1.0.2, call-bind@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.6.tgz#6c46675fc7a5e9de82d75a233d586c8b7ac0d931" + integrity sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg== dependencies: + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" + get-intrinsic "^1.2.3" + set-function-length "^1.2.0" callsites@^3.0.0: version "3.1.0" @@ -2597,9 +2598,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001583" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz#abb2970cc370801dc7e27bf290509dc132cfa390" - integrity sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q== + version "1.0.30001584" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz#5e3ea0625d048d5467670051687655b1f7bf7dfd" + integrity sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ== chalk@^2.4.2: version "2.4.2" @@ -3328,14 +3329,15 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== +define-data-property@^1.0.1, define-data-property@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.2.tgz#f3c33b4f0102360cd7c0f5f28700f5678510b63a" + integrity sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g== dependencies: - get-intrinsic "^1.2.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.2" gopd "^1.0.1" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.1" define-lazy-prop@^2.0.0: version "2.0.0" @@ -3519,9 +3521,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.648: - version "1.4.656" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" - integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== + version "1.4.658" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.658.tgz#cfa99cb02539125ffba420f6715face7cbce1241" + integrity sha512-LGkxndHz7OEv6ipmL95E83SOZmK96PHk6Njw0nf5UaOLbvPxxJhejlBWl4esuU6JHMiCjysLhKRQmLTd5s2ZPw== emoji-regex@^8.0.0: version "8.0.0" @@ -3580,6 +3582,11 @@ error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^1.2.1: version "1.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" @@ -3674,9 +3681,9 @@ esbuild@^0.17.6: "@esbuild/win32-x64" "0.17.19" escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-html@~1.0.3: version "1.0.3" @@ -3910,9 +3917,9 @@ fastest-levenshtein@1.0.16, fastest-levenshtein@^1.0.12, fastest-levenshtein@^1. integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" - integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -4064,11 +4071,12 @@ get-assigned-identifiers@^1.1.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: + es-errors "^1.3.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" @@ -4889,16 +4897,16 @@ make-dir@^3.0.2: semver "^6.0.0" marked-gfm-heading-id@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-3.1.2.tgz#ade50dc545d4a75e69ed670e8fda5c1e8897ef6a" - integrity sha512-SdIZvhNxDgndFkDa2WRcFP4ahYm6k6hoHdTCN+fD7HRiI/R3Eimcw/Yl7ikQ+0KUuDpi75NnYQiThZnZsNr9Dg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/marked-gfm-heading-id/-/marked-gfm-heading-id-3.1.3.tgz#7bcfea85901843baf214b96ccc4ff67581c972a9" + integrity sha512-A0cRU4PCueX/5m8VE4mT8uTQ36l3xMYRojz3Eqnk4BmUFZ0T+9Xhn2KvHcANP4qbhfOeuMrWJCTQbASIBR5xeg== dependencies: github-slugger "^2.0.0" marked-mangle@^1.0.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.6.tgz#b5364832eedec5eb18d630cb99551344a36ceb0a" - integrity sha512-4g4GevEeFE/RbB0Zue8k7e7RSDpEolb7yWVWzsAuuo2q4FMsVZiC+hqst762neHorCyjr32d5nNMZSWM/f27Ow== + version "1.1.7" + resolved "https://registry.yarnpkg.com/marked-mangle/-/marked-mangle-1.1.7.tgz#07fed8f47ebdc51761aac0364723468644cea49d" + integrity sha512-bLsXKovJEEs/Dl++TBPmjX8ALFmrH5G0doTs+BdDOloBKWYRf3acyJghce78SnwInDkNPJ6crubr4MnFG7urOA== marked@4.0.12: version "4.0.12" @@ -5169,7 +5177,7 @@ object-assign@^4.0.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.6.0, object-inspect@^1.9.0: +object-inspect@^1.13.1, object-inspect@^1.6.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -5963,9 +5971,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.24, postcss@^8.4.33: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + version "8.4.34" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.34.tgz#563276e86b4ff20dfa5eed0d394d4c53853b2051" + integrity sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" @@ -6370,9 +6378,9 @@ semver@^6.0.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -6432,14 +6440,15 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-function-length@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" - integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== +set-function-length@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== dependencies: - define-data-property "^1.1.1" + define-data-property "^1.1.2" + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.2" + get-intrinsic "^1.2.3" gopd "^1.0.1" has-property-descriptors "^1.0.1" @@ -6511,13 +6520,14 @@ shellwords@^0.1.1: integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" + integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.6" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" From b37ae976734f445d5f002d57a8870aa8bb0b7ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 21:50:07 +0100 Subject: [PATCH 049/634] Added chinese to navbar language picker --- README.md | 2 +- config/parameters.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5bd16fa8..04d8a687 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ for the first time. * Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer and multiple store locations and price information. Parts can be grouped using tags. You can associate various files like datasheets or pictures with the parts. -* Multi-Language support (currently German, English, Russian, Japanese, French, Czech and Danish) +* Multi-Language support (currently German, English, Russian, Japanese, French, Czech, Danish and Chinese) * Barcodes/Labels generator for parts and storage locations, scan barcodes via webcam using the builtin barcode scanner * User system with groups and detailed (fine granular) permissions. Two-factor authentication is supported (Google Authenticator and Webauthn/U2F keys) and can be enforced for groups. diff --git a/config/parameters.yaml b/config/parameters.yaml index 82ca4a58..4caa5780 100644 --- a/config/parameters.yaml +++ b/config/parameters.yaml @@ -11,7 +11,7 @@ parameters: partdb.banner: '%env(trim:string:BANNER)%' # The info text shown in the homepage, if empty config/banner.md is used partdb.default_currency: '%env(string:BASE_CURRENCY)%' # The currency that is used inside the DB (and is assumed when no currency is set). This can not be changed later, so be sure to set it the currency used in your country partdb.global_theme: '' # The theme to use globally (see public/build/themes/ for choices, use name without .css). Set to '' for default bootstrap theme - partdb.locale_menu: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da'] # The languages that are shown in user drop down menu + partdb.locale_menu: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da', 'zh'] # The languages that are shown in user drop down menu partdb.enforce_change_comments_for: '%env(csv:ENFORCE_CHANGE_COMMENTS_FOR)%' # The actions for which a change comment is required (e.g. "part_edit", "part_create", etc.). If this is empty, change comments are not required at all. partdb.default_uri: '%env(string:DEFAULT_URI)%' # The default URI to use for the Part-DB instance (e.g. https://part-db.example.com/). This is used for generating links in emails From 0a7a7c979c53995ef68a866584189a0fdbb85c4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 21:53:13 +0100 Subject: [PATCH 050/634] Fixed problem with navbar height if search button has two words text --- templates/_navbar_search.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/_navbar_search.html.twig b/templates/_navbar_search.html.twig index b00d961d..f13e5c96 100644 --- a/templates/_navbar_search.html.twig +++ b/templates/_navbar_search.html.twig @@ -70,5 +70,5 @@
- + \ No newline at end of file From 47ddcca0658a00e1e6a5c5902358d6d7c6295f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 21:59:53 +0100 Subject: [PATCH 051/634] Fixed exception on label profile admin, if the label profile had an preview attachment --- src/Entity/LabelSystem/LabelProfile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Entity/LabelSystem/LabelProfile.php b/src/Entity/LabelSystem/LabelProfile.php index a504ee0f..fda622a8 100644 --- a/src/Entity/LabelSystem/LabelProfile.php +++ b/src/Entity/LabelSystem/LabelProfile.php @@ -70,7 +70,7 @@ class LabelProfile extends AttachmentContainingDBElement #[ORM\OrderBy(['name' => 'ASC'])] protected Collection $attachments; - #[ORM\ManyToOne(targetEntity: AttachmentTypeAttachment::class)] + #[ORM\ManyToOne(targetEntity: LabelAttachment::class)] #[ORM\JoinColumn(name: 'id_preview_attachment', onDelete: 'SET NULL')] protected ?Attachment $master_picture_attachment = null; From e27b15691af877e7001334c7e294fa3e916b539f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 22:09:02 +0100 Subject: [PATCH 052/634] Fixed permission denied error, when trying to access the log details page of a LabelProfile --- src/Security/Voter/LabelProfileVoter.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Security/Voter/LabelProfileVoter.php b/src/Security/Voter/LabelProfileVoter.php index 3d3f7f6f..acccd435 100644 --- a/src/Security/Voter/LabelProfileVoter.php +++ b/src/Security/Voter/LabelProfileVoter.php @@ -68,7 +68,7 @@ final class LabelProfileVoter extends Voter protected function supports($attribute, $subject): bool { - if ($subject instanceof LabelProfile) { + if (is_a($subject, LabelProfile::class, true)) { if (!isset(self::MAPPING[$attribute])) { return false; } @@ -86,6 +86,6 @@ final class LabelProfileVoter extends Voter public function supportsType(string $subjectType): bool { - return is_a($subjectType, LabelProfile::class, true); + return $subjectType === 'string' || is_a($subjectType, LabelProfile::class, true); } } From ff2aafabbd75cf0067abd3db107dc76b476d9d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 22:18:09 +0100 Subject: [PATCH 053/634] Fixed permission denied error on log details page for BOMEntries --- src/Security/Voter/BOMEntryVoter.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Security/Voter/BOMEntryVoter.php b/src/Security/Voter/BOMEntryVoter.php index b4783b82..f83e2eb3 100644 --- a/src/Security/Voter/BOMEntryVoter.php +++ b/src/Security/Voter/BOMEntryVoter.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace App\Security\Voter; +use App\Entity\ProjectSystem\Project; use App\Entity\ProjectSystem\ProjectBOMEntry; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; @@ -31,7 +32,7 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; class BOMEntryVoter extends Voter { - private const ALLOWED_ATTRIBUTES = ['read', 'view', 'edit', 'delete', 'create']; + private const ALLOWED_ATTRIBUTES = ['read', 'view', 'edit', 'delete', 'create', 'show_history']; public function __construct(private readonly Security $security) { @@ -39,20 +40,25 @@ class BOMEntryVoter extends Voter protected function supports(string $attribute, mixed $subject): bool { - return $this->supportsAttribute($attribute) && is_a($subject, ProjectBOMEntry::class); + return $this->supportsAttribute($attribute) && is_a($subject, ProjectBOMEntry::class, true); } protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool { - if (!$subject instanceof ProjectBOMEntry) { + if (!is_a($subject, ProjectBOMEntry::class, true)) { return false; } - $project = $subject->getProject(); + if (is_object($subject)) { + $project = $subject->getProject(); - //Allow everything if the project was not set yet - if ($project === null) { - return true; + //Allow everything if the project was not set yet + if ($project === null) { + return true; + } + } else { + //If a string was given, use the general project permissions to resolve permissions + $project = Project::class; } //Entry can be read if the user has read access to the project @@ -60,6 +66,11 @@ class BOMEntryVoter extends Voter return $this->security->isGranted('read', $project); } + //History can be shown if the user has show_history access to the project + if ($attribute === 'show_history') { + return $this->security->isGranted('show_history', $project); + } + //Everything else can be done if the user has edit access to the project return $this->security->isGranted('edit', $project); } @@ -71,6 +82,6 @@ class BOMEntryVoter extends Voter public function supportsType(string $subjectType): bool { - return is_a($subjectType, ProjectBOMEntry::class, true); + return $subjectType === 'string' || is_a($subjectType, ProjectBOMEntry::class, true); } } \ No newline at end of file From fea8109789d4acac2aa5ebee45fd1f0c4589f46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 22:21:43 +0100 Subject: [PATCH 054/634] Fixed permission denied error, when accessing a user info page --- src/Security/Voter/UserVoter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Security/Voter/UserVoter.php b/src/Security/Voter/UserVoter.php index 248e9444..a06f098c 100644 --- a/src/Security/Voter/UserVoter.php +++ b/src/Security/Voter/UserVoter.php @@ -62,7 +62,7 @@ final class UserVoter extends Voter public function supportsAttribute(string $attribute): bool { - return $this->helper->isValidOperation('users', $attribute) || $this->helper->isValidOperation('self', $attribute); + return $this->helper->isValidOperation('users', $attribute) || $this->helper->isValidOperation('self', $attribute) || $attribute === 'info'; } public function supportsType(string $subjectType): bool From 3cc1fb40f0c2048060ea6628a13266329f0c7a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 22:42:25 +0100 Subject: [PATCH 055/634] Fixed problem that no datastructures with an parent element could be created/edited via API This fixes issue #512. The error was introduced when trying to allow the modification of attachments/parameters throught the parent element. We need a seperate write scope to the element, or we end up with an infinite loop. --- src/Entity/Attachments/Attachment.php | 4 ++-- src/Entity/Parameters/AbstractParameter.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php index 72075c42..d98cb847 100644 --- a/src/Entity/Attachments/Attachment.php +++ b/src/Entity/Attachments/Attachment.php @@ -77,7 +77,7 @@ use LogicException; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['attachment:read', 'attachment:read:standalone', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['attachment:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['attachment:write', 'attachment:write:standalone', 'api:basic:write'], 'openapi_definition_name' => 'Write'], )] #[DocumentedAPIProperty(schemaName: 'Attachment-Read', property: 'media_url', type: 'string', nullable: true, description: 'The URL to the file, where the attachment file can be downloaded. This can be an internal or external URL.', @@ -142,7 +142,7 @@ abstract class Attachment extends AbstractNamedDBElement * ORM mapping is done in subclasses (like PartAttachment). * @phpstan-param T|null $element */ - #[Groups(['attachment:read:standalone', 'attachment:write'])] + #[Groups(['attachment:read:standalone', 'attachment:write:standalone'])] protected ?AttachmentContainingDBElement $element = null; #[ORM\Column(type: Types::BOOLEAN)] diff --git a/src/Entity/Parameters/AbstractParameter.php b/src/Entity/Parameters/AbstractParameter.php index ebdbd777..3e090a73 100644 --- a/src/Entity/Parameters/AbstractParameter.php +++ b/src/Entity/Parameters/AbstractParameter.php @@ -87,7 +87,7 @@ use function sprintf; new Delete(security: 'is_granted("delete", object)'), ], normalizationContext: ['groups' => ['parameter:read', 'parameter:read:standalone', 'api:basic:read'], 'openapi_definition_name' => 'Read'], - denormalizationContext: ['groups' => ['parameter:write', 'api:basic:write'], 'openapi_definition_name' => 'Write'], + denormalizationContext: ['groups' => ['parameter:write', 'parameter:write:standalone', 'api:basic:write'], 'openapi_definition_name' => 'Write'], )] #[ApiFilter(LikeFilter::class, properties: ["name", "symbol", "unit", "group", "value_text"])] #[ApiFilter(DateFilter::class, strategy: DateFilter::EXCLUDE_NULL)] @@ -161,7 +161,7 @@ abstract class AbstractParameter extends AbstractNamedDBElement * * @var AbstractDBElement|null the element to which this parameter belongs to */ - #[Groups(['parameter:read:standalone', 'parameter:write'])] + #[Groups(['parameter:read:standalone', 'parameter:write:standalone'])] protected ?AbstractDBElement $element = null; public function __construct() From 43d8c3c208827da2395ff2bf1aa3bc66162eb23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 6 Feb 2024 22:50:08 +0100 Subject: [PATCH 056/634] Bumped version to 1.10.7 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 7b4d9a4f..ccff224b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.6 +1.10.7 From e5e039a1caf3b81eb78a9e8f204330fe9e51d46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Feb 2024 22:01:05 +0100 Subject: [PATCH 057/634] Use hotwired/turbo 8 --- VERSION | 2 +- composer.lock | 192 ++++++++++++++++++++++++++------------------------ package.json | 2 +- yarn.lock | 54 +++++++------- 4 files changed, 127 insertions(+), 123 deletions(-) diff --git a/VERSION b/VERSION index ccff224b..1f724bf4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.7 +1.11.0-dev diff --git a/composer.lock b/composer.lock index da79a25f..b5c87650 100644 --- a/composer.lock +++ b/composer.lock @@ -5038,16 +5038,16 @@ }, { "name": "phenx/php-svg-lib", - "version": "0.5.1", + "version": "0.5.2", "source": { "type": "git", "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456" + "reference": "732faa9fb4309221e2bd9b2fda5de44f947133aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8a8a1ebcf6aea861ef30197999f096f7bd4b4456", - "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/732faa9fb4309221e2bd9b2fda5de44f947133aa", + "reference": "732faa9fb4309221e2bd9b2fda5de44f947133aa", "shasum": "" }, "require": { @@ -5078,9 +5078,9 @@ "homepage": "https://github.com/PhenX/php-svg-lib", "support": { "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.1" + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.2" }, - "time": "2023-12-11T20:56:08+00:00" + "time": "2024-02-07T12:49:40+00:00" }, { "name": "php-http/discovery", @@ -6483,12 +6483,12 @@ "version": "8.5.0", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", "shasum": "" }, @@ -6531,8 +6531,8 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.5.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/8.5.0" }, "time": "2024-02-01T00:40:08+00:00" }, @@ -11792,16 +11792,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.14.1", + "version": "v2.14.2", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "da6b4a4f95a91390d38151ef67c77901a1210646" + "reference": "f775f6e811215156bfe41e6be234272d0c27e02b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/da6b4a4f95a91390d38151ef67c77901a1210646", - "reference": "da6b4a4f95a91390d38151ef67c77901a1210646", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/f775f6e811215156bfe41e6be234272d0c27e02b", + "reference": "f775f6e811215156bfe41e6be234272d0c27e02b", "shasum": "" }, "require": { @@ -11841,7 +11841,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.1" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.2" }, "funding": [ { @@ -11857,7 +11857,7 @@ "type": "tidelift" } ], - "time": "2024-02-03T01:11:47+00:00" + "time": "2024-02-07T20:26:48+00:00" }, { "name": "symfony/stopwatch", @@ -12449,16 +12449,16 @@ }, { "name": "symfony/ux-translator", - "version": "v2.14.0", + "version": "v2.14.2", "source": { "type": "git", "url": "https://github.com/symfony/ux-translator.git", - "reference": "802ced1bc3292f65f48acd8704d7b29f1cbdd51c" + "reference": "928543eb9d702baa6658f432b5944d6f00a68993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-translator/zipball/802ced1bc3292f65f48acd8704d7b29f1cbdd51c", - "reference": "802ced1bc3292f65f48acd8704d7b29f1cbdd51c", + "url": "https://api.github.com/repos/symfony/ux-translator/zipball/928543eb9d702baa6658f432b5944d6f00a68993", + "reference": "928543eb9d702baa6658f432b5944d6f00a68993", "shasum": "" }, "require": { @@ -12505,7 +12505,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-translator/tree/v2.14.0" + "source": "https://github.com/symfony/ux-translator/tree/v2.14.2" }, "funding": [ { @@ -12521,20 +12521,20 @@ "type": "tidelift" } ], - "time": "2024-01-14T07:27:47+00:00" + "time": "2024-02-03T21:01:32+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.14.0", + "version": "v2.14.2", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "7806d3960ff40f76094015644742041376218c76" + "reference": "7cd466f33950aa82a2b7e1485d62d8da726a0051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/7806d3960ff40f76094015644742041376218c76", - "reference": "7806d3960ff40f76094015644742041376218c76", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/7cd466f33950aa82a2b7e1485d62d8da726a0051", + "reference": "7cd466f33950aa82a2b7e1485d62d8da726a0051", "shasum": "" }, "require": { @@ -12601,7 +12601,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.14.0" + "source": "https://github.com/symfony/ux-turbo/tree/v2.14.2" }, "funding": [ { @@ -12617,7 +12617,7 @@ "type": "tidelift" } ], - "time": "2023-11-14T10:21:35+00:00" + "time": "2024-02-07T20:26:48+00:00" }, { "name": "symfony/validator", @@ -15204,16 +15204,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { @@ -15253,7 +15253,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, "funding": [ { @@ -15261,7 +15261,7 @@ "type": "github" } ], - "time": "2023-09-17T21:38:23+00:00" + "time": "2024-02-07T09:43:46+00:00" }, { "name": "myclabs/deep-copy", @@ -15592,16 +15592,16 @@ }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.59", + "version": "1.3.60", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "9534fcd0b6906c62594146b506acadeabd3a99b3" + "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/9534fcd0b6906c62594146b506acadeabd3a99b3", - "reference": "9534fcd0b6906c62594146b506acadeabd3a99b3", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/30cf38dda057a78180c4df1f6f41e33eb49c4eca", + "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca", "shasum": "" }, "require": { @@ -15616,24 +15616,25 @@ "doctrine/persistence": "<1.3" }, "require-dev": { + "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", - "doctrine/annotations": "^1.11.0", - "doctrine/collections": "^1.6", + "doctrine/annotations": "^1.11 || ^2.0", + "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", "doctrine/dbal": "^2.13.8 || ^3.3.3", - "doctrine/lexer": "^1.2.1", - "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.14.0", - "doctrine/persistence": "^1.3.8 || ^2.2.1", + "doctrine/lexer": "^2.0 || ^3.0", + "doctrine/mongodb-odm": "^1.3 || ^2.4.3", + "doctrine/orm": "^2.16.0", + "doctrine/persistence": "^2.2.1 || ^3.2", "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan-phpunit": "^1.3.13", "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^9.5.10", - "ramsey/uuid-doctrine": "^1.5.0", - "symfony/cache": "^4.4.35" + "phpunit/phpunit": "^9.6.16", + "ramsey/uuid": "^4.2", + "symfony/cache": "^5.4" }, "type": "phpstan-extension", "extra": { @@ -15656,9 +15657,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.59" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.60" }, - "time": "2024-01-18T09:41:35+00:00" + "time": "2024-02-08T09:33:18+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -16330,12 +16331,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "9ea4e2d28628d32a5222d2efcd76d8a32be4c337" + "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/9ea4e2d28628d32a5222d2efcd76d8a32be4c337", - "reference": "9ea4e2d28628d32a5222d2efcd76d8a32be4c337", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", + "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", "shasum": "" }, "conflict": { @@ -16417,7 +16418,7 @@ "codeigniter4/framework": "<=4.4.2", "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4", + "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", "concrete5/concrete5": "<9.2.3", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", @@ -16644,7 +16645,7 @@ "melisplatform/melis-front": "<5.0.1", "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", "mgallegos/laravel-jqgrid": "<=1.3", - "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2.0.0.0-RC1-dev,<2.0.1", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", "microsoft/microsoft-graph-beta": "<2.0.1", "microsoft/microsoft-graph-core": "<2.0.2", "microweber/microweber": "<=2.0.4", @@ -16689,7 +16690,7 @@ "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2", "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev", "openid/php-openid": "<2.3", @@ -16730,12 +16731,12 @@ "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34", "phpservermon/phpservermon": "<3.6", "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.3.2", + "pimcore/admin-ui-classic-bundle": "<1.3.3", "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", "pimcore/demo": "<10.3", @@ -16786,7 +16787,7 @@ "s-cart/core": "<6.9", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": "<1.7.11|>=1.8,<1.8.9", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", "scheb/two-factor-bundle": "<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", @@ -16854,7 +16855,7 @@ "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", "sylius/grid-bundle": "<1.10.1", "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", @@ -16883,7 +16884,7 @@ "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/translation": ">=2,<2.0.17", "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/ux-autocomplete": "<2.11.2", @@ -16891,7 +16892,7 @@ "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", "symphonycms/symphony-2": "<2.6.4", "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", @@ -16919,12 +16920,15 @@ "ttskch/pagination-service-provider": "<1", "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-install": ">=12.2,<12.4.8", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/cms-saltedpasswords": "<0.2.13", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -16958,7 +16962,7 @@ "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<1.2.3", "woocommerce/woocommerce": "<6.6", - "wp-cli/wp-cli": "<2.5", + "wp-cli/wp-cli": ">=0.12,<2.5", "wp-graphql/wp-graphql": "<=1.14.5", "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", @@ -16986,7 +16990,7 @@ "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", "zendframework/zend-diactoros": "<1.8.4", "zendframework/zend-feed": "<2.10.3", @@ -17011,7 +17015,7 @@ "zendframework/zendservice-slideshare": "<2.0.2", "zendframework/zendservice-technorati": "<2.0.2", "zendframework/zendservice-windowsazure": "<2.0.2", - "zendframework/zendxml": "<1.0.1", + "zendframework/zendxml": ">=1,<1.0.1", "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", @@ -17055,7 +17059,7 @@ "type": "tidelift" } ], - "time": "2024-02-06T19:04:37+00:00" + "time": "2024-02-08T20:04:35+00:00" }, { "name": "sebastian/cli-parser", @@ -18023,16 +18027,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.2.2", + "version": "3.2.3", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "96be97e664c87613121d073ea39af4c74e57a7f8" + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8", - "reference": "96be97e664c87613121d073ea39af4c74e57a7f8", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab", + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab", "shasum": "" }, "require": { @@ -18070,7 +18074,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.2.2" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.3" }, "funding": [ { @@ -18082,7 +18086,7 @@ "type": "github" } ], - "time": "2023-11-14T14:08:51+00:00" + "time": "2024-02-07T10:39:02+00:00" }, { "name": "symfony/browser-kit", @@ -18295,44 +18299,44 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.53.0", + "version": "v1.54.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9" + "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/8d2f3f96704766837548d177fe3ae39ae94822d9", - "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a8523cf35d777bf2d8cf5703fa73f378fdc27125", + "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", "nikic/php-parser": "^4.18|^5.0", "php": ">=8.1", - "symfony/config": "^6.3|^7.0", - "symfony/console": "^6.3|^7.0", - "symfony/dependency-injection": "^6.3|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^6.3|^7.0", - "symfony/finder": "^6.3|^7.0", - "symfony/framework-bundle": "^6.3|^7.0", - "symfony/http-kernel": "^6.3|^7.0", - "symfony/process": "^6.3|^7.0" + "symfony/filesystem": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" }, "conflict": { - "doctrine/doctrine-bundle": "<2.4", - "doctrine/orm": "<2.10" + "doctrine/doctrine-bundle": "<2.10", + "doctrine/orm": "<2.15" }, "require-dev": { "composer/semver": "^3.0", "doctrine/doctrine-bundle": "^2.5.0", - "doctrine/orm": "^2.10.0", - "symfony/http-client": "^6.3|^7.0", - "symfony/phpunit-bridge": "^6.3|^7.0", - "symfony/security-core": "^6.3|^7.0", - "symfony/yaml": "^6.3|^7.0", + "doctrine/orm": "^2.15|^3", + "symfony/http-client": "^6.4|^7.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", @@ -18367,7 +18371,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.53.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.54.0" }, "funding": [ { @@ -18383,7 +18387,7 @@ "type": "tidelift" } ], - "time": "2024-02-01T10:05:38+00:00" + "time": "2024-02-06T21:23:55+00:00" }, { "name": "symfony/phpunit-bridge", diff --git a/package.json b/package.json index 20506988..120bd52b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "@babel/preset-env": "^7.19.4", "@fortawesome/fontawesome-free": "^6.1.1", "@hotwired/stimulus": "^3.0.0", - "@hotwired/turbo": "^7.0.1", + "@hotwired/turbo": "^8.0.1", "@popperjs/core": "^2.10.2", "@symfony/stimulus-bridge": "^3.2.0", "@symfony/ux-translator": "file:vendor/symfony/ux-translator/assets", diff --git a/yarn.lock b/yarn.lock index 42283a3c..8683ea24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -998,10 +998,10 @@ "@ckeditor/ckeditor5-utils" "40.2.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.6.0": - version "39.6.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.6.0.tgz#129390970935bc50342e01369004a79add8c61f9" - integrity sha512-8Y3cwVnb7XM9qADn0mAE6ovcFelsLSQ7IOsV6xpKqzbDkRYvth/0m9vqgmnFD4eSwB7lR68y9uwrYGORdET1LA== +"@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.6.1": + version "39.6.1" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.6.1.tgz#8d14d66d51f6be3988c639c142ecde54e2b232c5" + integrity sha512-YtT4lgl3mPE9p236pN/u98IdmzXrlUEuKByrjBsjihhFN1tUi1dz3XLXVRDvEJhR5Ps8oSSS9LgOlk6DwayUyw== dependencies: "@babel/parser" "^7.18.9" "@babel/traverse" "^7.18.9" @@ -1011,11 +1011,11 @@ webpack-sources "^2.0.1" "@ckeditor/ckeditor5-dev-utils@^39.1.0": - version "39.6.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.6.0.tgz#23b9163f26bc620464466d91d74c894fa354deda" - integrity sha512-1qaXTvaHNKaoRwRY/dK3wezyp0Genq0rIfdI1Hf0disttgTe4MRM7QCrbJiPsDhPmQdqzRNktHK39uixNfixoA== + version "39.6.1" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.6.1.tgz#b83e00b2f2d6ca95ba69cd501dc1e77fe8d28a13" + integrity sha512-DcRd83Y7kvvEc1Dx830+XD6BOrNSJoq/suo95bLj759aa9BxKgAdXuxqYJvbexjrbBR8eFD8mbtyXxfhc74Qvg== dependencies: - "@ckeditor/ckeditor5-dev-translations" "^39.6.0" + "@ckeditor/ckeditor5-dev-translations" "^39.6.1" chalk "^3.0.0" cli-cursor "^3.1.0" cli-spinners "^2.6.1" @@ -1528,10 +1528,10 @@ resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== -"@hotwired/turbo@^7.0.1": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-7.3.0.tgz#2226000fff1aabda9fd9587474565c9929dbf15d" - integrity sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g== +"@hotwired/turbo@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.1.tgz#0f4be48f43e96237181b31879258498b9f0d15d6" + integrity sha512-6DdRoFV8p1qM2YxieZ0McSzFfdKHH85FQn3C8UpLDgyD1UDb3ERhUsXg65M6nPuZeHtBZLY4hUumMdaAP0N1+w== "@jbtronics/bs-treeview@^1.0.1": version "1.0.6" @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.16" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.16.tgz#4411f79411514eb8e2926f036c86c9f0e4ec6708" - integrity sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ== + version "20.11.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.17.tgz#cdd642d0e62ef3a861f88ddbc2b61e32578a9292" + integrity sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw== dependencies: undici-types "~5.26.4" @@ -2598,9 +2598,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001584" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz#5e3ea0625d048d5467670051687655b1f7bf7dfd" - integrity sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ== + version "1.0.30001585" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" + integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== chalk@^2.4.2: version "2.4.2" @@ -2628,9 +2628,9 @@ chalk@^4.0.0, chalk@^4.1.0: supports-color "^7.1.0" chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -3521,9 +3521,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.648: - version "1.4.658" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.658.tgz#cfa99cb02539125ffba420f6715face7cbce1241" - integrity sha512-LGkxndHz7OEv6ipmL95E83SOZmK96PHk6Njw0nf5UaOLbvPxxJhejlBWl4esuU6JHMiCjysLhKRQmLTd5s2ZPw== + version "1.4.662" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.662.tgz#0e014d31687210312c5f601bc9edcae2fa1663ef" + integrity sha512-gfl1XVWTQmPHhqEG0kN77SpUxaqPpMb9r83PT4gvKhg7P3irSxru3lW85RxvK1uI1j2CAcTWPjG/HbE0IP/Rtg== emoji-regex@^8.0.0: version "8.0.0" @@ -5971,9 +5971,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.24, postcss@^8.4.33: - version "8.4.34" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.34.tgz#563276e86b4ff20dfa5eed0d394d4c53853b2051" - integrity sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q== + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" From 7e3e1e2705adee90baeb168dec4664e66612b409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Feb 2024 22:05:57 +0100 Subject: [PATCH 058/634] Use new turbo morph features --- templates/base.html.twig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/templates/base.html.twig b/templates/base.html.twig index 0204596d..fc224e60 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -17,8 +17,10 @@ + {# Turbo control headers #} - + + From b16760988dcd6810d85257c4b696ad6b0d730d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Feb 2024 22:17:00 +0100 Subject: [PATCH 059/634] Updated CKEDITOR to version 41 --- package.json | 60 +++---- yarn.lock | 486 +++++++++++++++++++++++++-------------------------- 2 files changed, 273 insertions(+), 273 deletions(-) diff --git a/package.json b/package.json index 120bd52b..fa54859a 100644 --- a/package.json +++ b/package.json @@ -30,38 +30,38 @@ "build": "encore production --progress" }, "dependencies": { - "@ckeditor/ckeditor5-alignment": "^40.0.0", - "@ckeditor/ckeditor5-autoformat": "^40.0.0", - "@ckeditor/ckeditor5-basic-styles": "^40.0.0", - "@ckeditor/ckeditor5-block-quote": "^40.0.0", - "@ckeditor/ckeditor5-code-block": "^40.0.0", + "@ckeditor/ckeditor5-alignment": "^41.0.0", + "@ckeditor/ckeditor5-autoformat": "^41.0.0", + "@ckeditor/ckeditor5-basic-styles": "^41.0.0", + "@ckeditor/ckeditor5-block-quote": "^41.0.0", + "@ckeditor/ckeditor5-code-block": "^41.0.0", "@ckeditor/ckeditor5-dev-translations": "^39.1.0", "@ckeditor/ckeditor5-dev-utils": "^39.1.0", - "@ckeditor/ckeditor5-editor-classic": "^40.0.0", - "@ckeditor/ckeditor5-essentials": "^40.0.0", - "@ckeditor/ckeditor5-find-and-replace": "^40.0.0", - "@ckeditor/ckeditor5-font": "^40.0.0", - "@ckeditor/ckeditor5-heading": "^40.0.0", - "@ckeditor/ckeditor5-highlight": "^40.0.0", - "@ckeditor/ckeditor5-horizontal-line": "^40.0.0", - "@ckeditor/ckeditor5-html-embed": "^40.0.0", - "@ckeditor/ckeditor5-html-support": "^40.0.0", - "@ckeditor/ckeditor5-image": "^40.0.0", - "@ckeditor/ckeditor5-indent": "^40.0.0", - "@ckeditor/ckeditor5-link": "^40.0.0", - "@ckeditor/ckeditor5-list": "^40.0.0", - "@ckeditor/ckeditor5-markdown-gfm": "^40.0.0", - "@ckeditor/ckeditor5-media-embed": "^40.0.0", - "@ckeditor/ckeditor5-paragraph": "^40.0.0", - "@ckeditor/ckeditor5-paste-from-office": "^40.0.0", - "@ckeditor/ckeditor5-remove-format": "^40.0.0", - "@ckeditor/ckeditor5-source-editing": "^40.0.0", - "@ckeditor/ckeditor5-special-characters": "^40.0.0", - "@ckeditor/ckeditor5-table": "^40.0.0", - "@ckeditor/ckeditor5-theme-lark": "^40.0.0", - "@ckeditor/ckeditor5-upload": "^40.0.0", - "@ckeditor/ckeditor5-watchdog": "^40.0.0", - "@ckeditor/ckeditor5-word-count": "^40.0.0", + "@ckeditor/ckeditor5-editor-classic": "^41.0.0", + "@ckeditor/ckeditor5-essentials": "^41.0.0", + "@ckeditor/ckeditor5-find-and-replace": "^41.0.0", + "@ckeditor/ckeditor5-font": "^41.0.0", + "@ckeditor/ckeditor5-heading": "^41.0.0", + "@ckeditor/ckeditor5-highlight": "^41.0.0", + "@ckeditor/ckeditor5-horizontal-line": "^41.0.0", + "@ckeditor/ckeditor5-html-embed": "^41.0.0", + "@ckeditor/ckeditor5-html-support": "^41.0.0", + "@ckeditor/ckeditor5-image": "^41.0.0", + "@ckeditor/ckeditor5-indent": "^41.0.0", + "@ckeditor/ckeditor5-link": "^41.0.0", + "@ckeditor/ckeditor5-list": "^41.0.0", + "@ckeditor/ckeditor5-markdown-gfm": "^41.0.0", + "@ckeditor/ckeditor5-media-embed": "^41.0.0", + "@ckeditor/ckeditor5-paragraph": "^41.0.0", + "@ckeditor/ckeditor5-paste-from-office": "^41.0.0", + "@ckeditor/ckeditor5-remove-format": "^41.0.0", + "@ckeditor/ckeditor5-source-editing": "^41.0.0", + "@ckeditor/ckeditor5-special-characters": "^41.0.0", + "@ckeditor/ckeditor5-table": "^41.0.0", + "@ckeditor/ckeditor5-theme-lark": "^41.0.0", + "@ckeditor/ckeditor5-upload": "^41.0.0", + "@ckeditor/ckeditor5-watchdog": "^41.0.0", + "@ckeditor/ckeditor5-word-count": "^41.0.0", "@jbtronics/bs-treeview": "^1.0.1", "@zxcvbn-ts/core": "^3.0.2", "@zxcvbn-ts/language-common": "^3.0.3", diff --git a/yarn.lock b/yarn.lock index 8683ea24..1645d9fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -942,60 +942,60 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@ckeditor/ckeditor5-alignment@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-40.2.0.tgz#4ad3ae6e87f89ba0cc9614d25cb5b71f3b86204c" - integrity sha512-OMvOdgEWBzFQbcHLu4CYMe/LONSmn07BxrXQ4Uxd++Wr45U2ElrbkKcJldARa+J97YGEzaaCI3igXDh6g4fkRA== +"@ckeditor/ckeditor5-alignment@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-41.1.0.tgz#da74d54c08f9c921f2c2016deb1749295736ed30" + integrity sha512-uJGts0roqsOAlamn26KXCPlv+rNAgVTiBRSxCDgM6/J9CbqVa/VLJe8oOUXnBsWZ4WwYmgQ1Gtoq7CqIEkdmQA== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-autoformat@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-40.2.0.tgz#ee858ccb2bdfa975d13f1ecb013be9c06cbd0a5f" - integrity sha512-F3w5k7ti5l6V8U07eSQ3gup3ivltRZQXdtvstBXMmTzDb2ceazNcUDLb6TKSHp5y30ETN0dRGgbhx9xiDL0TXg== +"@ckeditor/ckeditor5-autoformat@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-41.1.0.tgz#42ddb0caad3a16ed5a0125f75393e424c421cc8d" + integrity sha512-aTN1bGrGaYwHAjo0kH35pmRDItTUDNFMzJ570OKVmSF4zSmg5ZjfbcZ//otzz5NLePx/K4FjhrCpZlABGI3MDg== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-basic-styles@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-40.2.0.tgz#06e618a7c1e8dd3cd67f6249c5e27335dfa2f2c6" - integrity sha512-P7jYddLnRpaR4zVCqDa8InsZ6YNRHdF0RrX6+Uz81+A1IfyfmSd+5IaiLxxdnFWQ4JlEhJutjy9vMwSmOhZocQ== +"@ckeditor/ckeditor5-basic-styles@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-41.1.0.tgz#070bf87faeff447f957e1dc5725e8e71e513d41d" + integrity sha512-yldViSRB9wTU8SNqfndOJqGQCfCZ0+yufAEbhcmQ/ZHNbIRNIXVYcI91WeZFull640c0DPnj7KT4UxsWu3a4OA== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-block-quote@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-40.2.0.tgz#9d2fa194376146d749e089c5661e5ac4965b05de" - integrity sha512-t03Yp+MeAyQhwdGZqUlkJEx25VSiigpzkIGGOhccSaTIIZ9XcWDkrTevDhwA4Pq4Q9IRQ8Loj3KCVSBuAqkBgw== +"@ckeditor/ckeditor5-block-quote@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-41.1.0.tgz#662591bf9a08259a8730e75ccb3f9fdb78e0b7d7" + integrity sha512-si1WBGTpUhTR18ywoAD0yy6m+PeGwisIblIGbOdPgs+lfMsFECrftvH8qrTZG1D80S3p0jNa74qw7BSMGk/TUg== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-clipboard@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-40.2.0.tgz#74daa4c9d1ae664338e9d14da6052febc3b933c4" - integrity sha512-8/xPH9/i86ukcEiHdmTgNuPVJeYTrivbx5ZYqycPO4Eem7VM99gIbOe7pIYpuV+klr9ymVxIHbGyTJDJ3oUO8A== +"@ckeditor/ckeditor5-clipboard@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-41.1.0.tgz#9b8dd4c4d3ecba5056b037300ab012ccdb7dbe4e" + integrity sha512-QbXp3ysaeI2dFWKUvd/Lf1kbmZfq+F+Sbg6/mawBqImyHJjwvO0QrA+SepUSYPuWaTqnPJ5Kng020MMj1Iexyg== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" - "@ckeditor/ckeditor5-widget" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" + "@ckeditor/ckeditor5-widget" "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-code-block@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-40.2.0.tgz#9de746658ed5cda168fd404608f1b4a1a9cea8e1" - integrity sha512-0BMJPteTuOPcb63vba6qEu91duo4yur7FycHk6uCZmDyn0Ctp8n8zBWSDStUMYS32djrWGEclodnehjF0X57HA== +"@ckeditor/ckeditor5-code-block@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-41.1.0.tgz#80f0c4673f28d6e3cea671b84d6f1058a4e7bf96" + integrity sha512-n32AGHCiEzgu1FDmN6sc+y/oqsigjDd27FLBTzjl/iWus42tZuyjwgE+VWj/JOcrMk6BrWIl6gfsKvNfAiNRng== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-core@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz#fa666d863d03b003ac8667482120f9616b07ce42" - integrity sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ== +"@ckeditor/ckeditor5-core@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-41.1.0.tgz#091fe6e471d0103ec9960b67fa0ef44401d61a1c" + integrity sha512-Z23stcZ5lx1jsQa+9jybyz1h/HvIYqpKo2OW9s27KD9oAvbNNYvsNqtCZMDecik/7ofr8wiWC/xnzCk7QRwmuA== dependencies: - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" lodash-es "4.17.21" "@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.6.1": @@ -1038,275 +1038,275 @@ terser-webpack-plugin "^4.2.3" through2 "^3.0.1" -"@ckeditor/ckeditor5-editor-classic@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-40.2.0.tgz#c1bad26afe542b501cc21371f14d30bd1a83f6f2" - integrity sha512-dftfDBxANOgqgQZ4SB3YTsEV/XX1u0g9jopbOBwqIABnVVa8zoGcktgFdGnLUFk51sL65baSx2z8Z1NNYdZcFQ== +"@ckeditor/ckeditor5-editor-classic@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-41.1.0.tgz#e6f7adb3a5b9533d12d0b0d476967c03200ef90f" + integrity sha512-KMkHPmYalwqDecsMIbNexddhIwe/O0QkD7atJxzwtHWjEWP2bxi0fYPGQvMZXpj1BDXXMyZN6zQZlYfHzrk+7w== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-engine@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz#0d982dfbc6e13855f1f6b04204d9a5c4b5079f89" - integrity sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ== +"@ckeditor/ckeditor5-engine@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-41.1.0.tgz#0906fb6bbf60b0244d347d4d6a59526a51c4105d" + integrity sha512-YYZKXESH6iml9BT3EIlYgKgkH/DqeW2Xe0IzhuC+T7OqemBYp5x/HMP7tQMjsRGImc4+4iyTZ+8pJTAlU5pJyQ== dependencies: - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-utils" "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-enter@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-40.2.0.tgz#6f2dbca2aeb314a0c1cdb6bbe75f924941fb9c31" - integrity sha512-GjTRaKNX8QEDJ3YYKG3GfPZfGHrcigGBxbo+1WDT7NaOsR2DA/CIZfHlAPfgJDAMV17bhWsT3gy3+oQZsExtnQ== +"@ckeditor/ckeditor5-enter@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-41.1.0.tgz#e20f8e15810451256f792631eaa342f7ecbc017e" + integrity sha512-kpESGrUDCuHJbDOXGGYaK4RgwHgyZAY6h2OkXf99yE0Rhm23EOXh09uC07gqzS6q1/4UXM6l0CX/s0jjdD0LuQ== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" -"@ckeditor/ckeditor5-essentials@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-40.2.0.tgz#f0c14a57a1c256391b713401c6f817de68029e45" - integrity sha512-7iUUy0Uwiei4yLrn145SOcyzriMeVFVc5ontQkxQE5b9alFdAc/6ZoDPZqwD7V0zi5RQ/2YsoVMRLFa4hbPfNA== +"@ckeditor/ckeditor5-essentials@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-41.1.0.tgz#ddc8c8d05c9f7924635e0221367c8dd01162f8a3" + integrity sha512-zUPbApEGl32Err/hURVDPZpXZHpe9gRQ/3r1xhaxIvB2zILcHAKauB94phzPLywrr0eBNa546ZW8+iXjFEJ7CQ== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-find-and-replace@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-40.2.0.tgz#a2f52caf7683c3e3c9cb75272a11e6bac311dc11" - integrity sha512-d1q3MLyJzYTi9dHFokMdC7lR0sn1tTVe++QhGDLtzDZ74XGOFLPhmxGuOjoMDR+4ks5O1qZDb+dwpsX290r7fQ== +"@ckeditor/ckeditor5-find-and-replace@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-find-and-replace/-/ckeditor5-find-and-replace-41.1.0.tgz#702147fac8a53addceb78e271a8b3750277f48c1" + integrity sha512-QGBD80gOBuYURxx1jmF1mL3OEO0Wlcz186ktTR/cR3Xt1IDkI9Ee/uP161Clt2xcCpUTrRo9FwfMGzTtVQ7n5Q== dependencies: - "@ckeditor/ckeditor5-ui" "40.2.0" - ckeditor5 "40.2.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-font@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-40.2.0.tgz#ac7640436fc54ba948a0ec7ac0923ec90e5576cc" - integrity sha512-k38+eQQF+zfiauVDxcMBHGG1ShRwCNibaJipu5FKzvGY5PJELUsIfor1dsSPsTADWxWMpBi5qEaSO4S4+Lu/JA== +"@ckeditor/ckeditor5-font@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-font/-/ckeditor5-font-41.1.0.tgz#b9f8dce76e50efc6302168df55ee64c8994fdbd6" + integrity sha512-z0OA6GWBP4NCB//73E5Xu8ku42Odhzkby0if+fAMGi/0vWPT3sDOnRbmewRHkVUTT73iriB5FKoMxCrkkJ8FFQ== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-heading@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-40.2.0.tgz#072989200e8b35840b86fbe17d7962555749f997" - integrity sha512-uDT1sttMy+KrKi90jnqEI43886o1wfKrROWqaMbmKOerTbIi58GNH9LvX04sf1RyHV3+3566RRmB248fsLkYjA== +"@ckeditor/ckeditor5-heading@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-41.1.0.tgz#287534205d68eb8ca85a6784e24503383fa49087" + integrity sha512-rOsQ5AIsc5ccsARrs0CsiinoSx5DZrnkHH6PV6wEJcpgvhiJhB7NYG6Maw+vUcaDlY5z012GvAXLvv21ZNpw4w== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-highlight@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-40.2.0.tgz#bf413d89dc44557fd7b31eb6054a2efc7ac6ba0d" - integrity sha512-V9/KfZzTv3JdLK4o+kojy4bBFtpt35Y8EFfuJfSqubztrQVjG7uYkbeN0AypP+5ovIM/WbQx+Vh14PDEfBNaMg== +"@ckeditor/ckeditor5-highlight@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-highlight/-/ckeditor5-highlight-41.1.0.tgz#d4e2934b87048379d51ffbcbb5081a50b66e8b82" + integrity sha512-Fit2jxPriRORR7nRQlKt57XAkWH1aKZDv+sKQDoLhpFIb6urdGmiQNB0JhyTqyct5J/1aOq/DXSxlAtzrNjrBw== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-horizontal-line@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-40.2.0.tgz#78ed488ed34d3b8fa54f29fd1c70058b5af8ab0f" - integrity sha512-cngw6unhl+GIin+InlGgg4SnzXagM302UypwR7t9WtVqO75ohecVRZ2S0H9WHrsb9IlbfCN+o7WVIb4MmXkRVQ== +"@ckeditor/ckeditor5-horizontal-line@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-41.1.0.tgz#3cf1fddc57bc5ae17fc5c67a9cea7c0c66735f49" + integrity sha512-Fx39da7xnNmYyuGqGXdfEqewNoSVldEuf1nwBwrVQQE/YzJBWnb5WZyrTTqoVZaljfSgk9Rs4kF9u/pSJrVhBw== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-html-embed@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-40.2.0.tgz#f4ac8b3686ee6ef5fc34de13014ffc9022b967f5" - integrity sha512-nF18kJTgV1V+K1kKaW42Jq0uZysO8gnrOuUeak2F3eacLaaIPsWjaSaZuZ2X0N6ca10L6j+fHw+R9mxWASIp5g== +"@ckeditor/ckeditor5-html-embed@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-embed/-/ckeditor5-html-embed-41.1.0.tgz#1d72544e2fb2fcae05d5d4d6704b94018bd60897" + integrity sha512-/bSTVTtjH64KQNEGV9K1DreBdacg3UjvGLdEGwg9SLRKwqEaD0+lzyR8wej3kMdZWOW116qHPpxUvQA0gNwCxA== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-html-support@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-40.2.0.tgz#b576ebfeef7a5a0155360f098a68e9d8fd340e90" - integrity sha512-NbUjSir3aaVxk8y0oPWLaPGB4kDeH2XuSZXVRAvwiYP8c8ICh7gAq2L3KVLmveXW/FIHHYdR+wNu0qNa34V0rw== +"@ckeditor/ckeditor5-html-support@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-41.1.0.tgz#9f4d1fe743a878a666036c4de9b013bc2e9358ed" + integrity sha512-55gNvu1a3hAkIQ4t0fajYqE9sTjqFf1oOrgV0X5uN+5p+XkjafZbTtqEPcaHg4rnoOM5bcQguXWz4PsS4v3gSg== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-image@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-40.2.0.tgz#790b23af7d2e86faee848df273eaab735a8a9240" - integrity sha512-0Dunw1o5k2+5Q5XiWLDG1r8k9awosfIFuDZwqKJGWtDaNE4QQbJ9+iJSwiiRw2QjcGr7D3JdH7xwJZFra7kYmA== +"@ckeditor/ckeditor5-image@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-41.1.0.tgz#27d947a57c1e70fd6dbb1b82c2063f78181766d5" + integrity sha512-K90Dr3nxE8osBcPImP4VOfw9DgwiCPzGUu3vP+4ylMgJxmRetRCmuryEH5Gh4iw+poDr+JeBeTxT/M6n+hdx5w== dependencies: - "@ckeditor/ckeditor5-ui" "40.2.0" - ckeditor5 "40.2.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-indent@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-40.2.0.tgz#a66a1740badd34843a966f51a21316821fe80a5f" - integrity sha512-gSlRGoyAslB2OpqghimIY6Oiflf3Z2/MdLBzvFipU5N4X66cL29HuWZc/bOkcFzWwNeDK5LgzfLdvXNzkdv5Xw== +"@ckeditor/ckeditor5-indent@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-41.1.0.tgz#91c2c8f3e01596e258416e67366e117bc80b5288" + integrity sha512-CLEzSf3Y8Ow5W88W2v3znOO5Yo6a3+0//bEWSPyhQ8c7zaWM5gjZ36qGfPhbBnpMy2vYJkSVwW2fZ7rWdRr2cA== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-link@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-40.2.0.tgz#81068e860bc00f5d9d94b6df344136a872d6481c" - integrity sha512-/r4Ti9USdrURBX+qutvyDGOb75sNuSgtXdI8xK503EVfx5yBIi6qsYIYWoFvnGJKkLYkVo+940ilduhwzq0M7g== +"@ckeditor/ckeditor5-link@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-41.1.0.tgz#a00dc2344888c0f302d2409f92c253be2516278f" + integrity sha512-iTf1J+OGiD6sxsMu3tAvHiFVVYz8qm7DwpZ3M3kvRphx2Tv3bFjNaeCK+tiOeBx2Bpm/EdfGs8Q9XzZLjrIBCA== dependencies: - "@ckeditor/ckeditor5-ui" "40.2.0" - ckeditor5 "40.2.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-list@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-40.2.0.tgz#8d8d32c283b8fefe6f92e9ae55a370aa6b12d484" - integrity sha512-lsQWSLSFRHRQ2AxA6vgTib9YELjF2J5jpR6H4RDW1gM//dL3FjvLxKPPN/V7rMcp15rrpSiOya+qB99l24DEpQ== +"@ckeditor/ckeditor5-list@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-41.1.0.tgz#e499fdde652ce2e2c3574d2aac8704244aea2d50" + integrity sha512-tcvUGMIg+Kg1zF0iWFMWHsikvRxwpReAd/QZp/cVUP6EvoL46bc4H6IzFU5qV3g1JM14wjiSTShHWYW8kS6wYA== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-markdown-gfm@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-40.2.0.tgz#7a2881b313e3562c356773c63ea196f09fb2460f" - integrity sha512-S4QrCfI+jE2fNbp3Q+Gip3vTpoXDMkj8AQFDsvZ07yMOR84VHfulWsxutjNKZ/sGCYWOSohQToMj55IyRZjHUA== +"@ckeditor/ckeditor5-markdown-gfm@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-markdown-gfm/-/ckeditor5-markdown-gfm-41.1.0.tgz#93f4ccee92029b7e6f0cc80ac3443102ea2324f5" + integrity sha512-L5MDFpuaHumr9MNKgNd6VpKvD90te1NAZagTo96ZAjV7mmaxM7jg9mCRIAczuhjRxWQMz+aExR2GwcXsoQCSxw== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" marked "4.0.12" turndown "6.0.0" turndown-plugin-gfm "1.0.2" -"@ckeditor/ckeditor5-media-embed@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-40.2.0.tgz#b22fd221801cfe606a8f4706903b431b87d1dd1a" - integrity sha512-ORY7VebL7UTuBG/4++UxzqEKjnlZZKAFqUrIom7xXpQNfo6oJFtZLnKYwESZ6iNk7NBOAeiHEecP2tKWyFQd1g== +"@ckeditor/ckeditor5-media-embed@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-41.1.0.tgz#3602c3fc88b428cb6442f40cac826c6c942711d5" + integrity sha512-fV2rvE7RORY9jR7icswCgWEtQxze6tVahBDI85YaZuruX20+pa5PmxLE6Ls6uzZZFvIl9hJZkkUxzmJC/tPEsw== dependencies: - "@ckeditor/ckeditor5-ui" "40.2.0" - ckeditor5 "40.2.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-paragraph@40.2.0", "@ckeditor/ckeditor5-paragraph@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-40.2.0.tgz#a152449874ea1597fd64174744f63974ef348aa7" - integrity sha512-NotxWP1cKvbJSY1UwdTe/Oy1NnAj9Etsi4Z7XA908EvCsNSnFtzdMhYzLhFZJ18avrQFDa7PpSKSyN3M64CbSA== +"@ckeditor/ckeditor5-paragraph@41.1.0", "@ckeditor/ckeditor5-paragraph@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-41.1.0.tgz#a80fd8df19bdf9d5f16ca045b2a2871208a4c903" + integrity sha512-4p7imtnmALVbOykbJXOIpU3lI1nCoiDtCHR5B0MTX2oPjmhjRiZEl5cNIMZ0FTquYvdrswQ7zqmeH/++14pBzQ== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" -"@ckeditor/ckeditor5-paste-from-office@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-40.2.0.tgz#2f98027c150622da7634bd76bc4b62604eb12012" - integrity sha512-kdk7uJlSa9mvyuNAwmIfV6Kc1tfWI6DbCs19jyseA/F0vySKibb0DsBVSZ7xa5ihcjphfJvwpypWYL0BYdYKLQ== +"@ckeditor/ckeditor5-paste-from-office@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-41.1.0.tgz#527c1b7ee1493f02642284d92cee3ae4cc878f1f" + integrity sha512-xeB7thvP7ZI/0hWkcpO0+zeDD24MJJ9igdlGNblx8QcBcVRLRCkLDj7XkFlYP9zfzGNZUgjbJjPWyHbeYurHNQ== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-remove-format@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-40.2.0.tgz#3f6a94b88b1feba6ba9fb92201e1a62fe49f092f" - integrity sha512-fJHv6oIu0CGSbhFyK6rvtTqzuPTHyjtuaBYYA93clRXsBhZcmm3M7g63Tz6O6ez/Z/kw+Zk+p0SvdL7tVXUUMw== +"@ckeditor/ckeditor5-remove-format@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-41.1.0.tgz#32a4ba0ec94893d242251a6f4e44659c99ede84b" + integrity sha512-UEgjPkpXYlqXG+/B7yiJac1UdJmsK2ZyHp6yuP2FBQg+KwoMszV68MzPjGLiXCy3jqQSFj9m0O5lu2fiDjpw+A== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-select-all@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-40.2.0.tgz#c1b68ac4225306ea9250599abf284574e10a1421" - integrity sha512-yaYCqhdMcoEH3BsilhweNdbOfuO/cexQ1r1/mYoBoW4CypIuAeq8J/3qLpvFaThmCRPzJBn1J7v2Yjs/0UnamA== +"@ckeditor/ckeditor5-select-all@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-41.1.0.tgz#2b82ada5a79995db82b81a73c5978e1f0113e4c4" + integrity sha512-YGeQZv/VlRzWKwNuJ+qoY50hikcjhjgZlCQeT6ir8RhXBEcSsaTKK+bYYdNnfHoDFGsadosZP6vBpcBTUYrxOw== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" -"@ckeditor/ckeditor5-source-editing@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-40.2.0.tgz#0a5e6bff75406e07fcdabed96879f699d3394593" - integrity sha512-Kh0HXxtOs1jNQAUYzxY1IG7JyUG88AJnM9cNATI9+zo55XwPqBrs6w3hesDDF83Vp87Kjtw9lViHUwwcPRl59Q== +"@ckeditor/ckeditor5-source-editing@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-41.1.0.tgz#06f1f538f6b1bbe72a09f25fba25284a71343d00" + integrity sha512-p1nuelGdceSzAKeCcC67RM0eAS514EyRekCGwNK9yqieqVw1ZbeBTwLSdjtFe0IqoZF8Z922jZeuxg91zVXB5w== dependencies: - "@ckeditor/ckeditor5-theme-lark" "40.2.0" - ckeditor5 "40.2.0" + "@ckeditor/ckeditor5-theme-lark" "41.1.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-special-characters@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-40.2.0.tgz#01fd018c0f6ada56ea4c1b17247cf7d2a25d3712" - integrity sha512-ghv8ewV/FPF7aEh1+dgwijE4EBIZZzWJo17IfhhaqOjUK4dwAxWubknFeekafSTBE9HstMlMHy8n9DMOZzdEoA== +"@ckeditor/ckeditor5-special-characters@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-41.1.0.tgz#9943a21bb6703b4b256cdd2b4da49fafb269a0a0" + integrity sha512-yPZQF29LE23uGvwMRXRjI1ZKUJpr6Mu2qgPcghgBCTfNTIeFkFm0PNka60dHhYaU09aP6XSaIXmYkxqTRqOs5g== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" -"@ckeditor/ckeditor5-table@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-40.2.0.tgz#e2a77495a6c6c5c7fdd3194e452a3b04446e0f5d" - integrity sha512-yODne7az/aJ9lsuI7w476pgGV2QBoH2tOKp3JFh/e2DdHC20637LCVd0cx8sUe3zk61X/eYPY+wOiRJx/mIUqg== +"@ckeditor/ckeditor5-table@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-41.1.0.tgz#cca35f7f7a386626c55d08ce81f5d0a5d5580f36" + integrity sha512-MtWPC3DT3Ew3Fm5Tf/aIOqOodzVR/ms1cmB7jKFnJ1IRe0olo8TborMv6UvNWfy5W11vqf33snCEU1ynbJN7zw== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-theme-lark@40.2.0", "@ckeditor/ckeditor5-theme-lark@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-40.2.0.tgz#85ced805d71b707b1308eb2991d6ca29aec84af6" - integrity sha512-Oxz/tfca4YosjyRHn1wX5pBgm8GMZSRuuNOu/OcLdRHN40sPWkb8Ilz6bY0SGgrYIgtXmXLGj+NVLSKPSab3EA== +"@ckeditor/ckeditor5-theme-lark@41.1.0", "@ckeditor/ckeditor5-theme-lark@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-41.1.0.tgz#1bb9ee986be3129063d641b447018be466b7f466" + integrity sha512-idWJ5Tn2ezmWyKBBhMrmZGJVZDCnkF4xct9jqAUEuy1YXyGAktmbAyU/bBOQDp4wCANPQ0LnJxbC/08HuG0Q0Q== dependencies: - "@ckeditor/ckeditor5-ui" "40.2.0" + "@ckeditor/ckeditor5-ui" "41.1.0" -"@ckeditor/ckeditor5-typing@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-40.2.0.tgz#fd2af10379f7e0bfed17f477bd246deca2161966" - integrity sha512-2E7LkmC4RHdenMUwow0EZDKxlbX00c5UHysUVT51EBGrXiJcN++0cqxQaeJzQ262oTDpk94qE5IZdGXt3ntzrw== +"@ckeditor/ckeditor5-typing@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-41.1.0.tgz#31daf1b2f7fec130b9d5b9e11261623e1a3728e6" + integrity sha512-33XRNa9Z2LTwCWx9GdY7Pyb9ymOaEo+ZarV3hwbD4FOww6CSRB0/29ny+br8WEfJpdM/5EyHNmfLXHpIqP5vtQ== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-ui@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-40.2.0.tgz#cccb8d7d7b70171f79336914ea55aeebe733d85c" - integrity sha512-K8oC9zrJokZD5Nl4uQjJMo8Couds0eHmfNI/go6iU4A4OAdDzph+W50QnyMed4etKnMdhvUSbnuZnPtQjnsvFA== +"@ckeditor/ckeditor5-ui@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-41.1.0.tgz#dfd361947f3d8f672e3cdb0fbd8585c6dc0a0ed3" + integrity sha512-U3lgwTUNCLuK9lFrYV8ch/4/AQqW6Cv4DJFiKzpEwLB7PQFOZsoaY0yP2XZ7Wj1IGMfsOF3uECrNVATiPPr8ww== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" color-convert "2.0.1" color-parse "1.4.2" lodash-es "4.17.21" vanilla-colorful "0.7.2" -"@ckeditor/ckeditor5-undo@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-40.2.0.tgz#66c181ecea6783b0f0d67b7f8d6766b5d5389877" - integrity sha512-k2VZS5x4SJtYk3zhdwHYg+D00DgD0iWR0H4qQgcWmQMFRipYvXJRixP3hSLZGJciQanPFeYcjZgxNQ+rU1s8ug== +"@ckeditor/ckeditor5-undo@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-41.1.0.tgz#910a90a32db0aa70bc01626e16696f2f8e38492f" + integrity sha512-nNGOfyZzjK5NRckRApUiP1CKfRJgKIqy5CE8z4aAqu0/4KdnajoV8K7U7yEQwtrWeClB8ye0rLEsSH8X+6UWeg== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" -"@ckeditor/ckeditor5-upload@40.2.0", "@ckeditor/ckeditor5-upload@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-40.2.0.tgz#8d67cf93bc78bcbb3686e6757ae8ece2127d7a0d" - integrity sha512-AdJSKvWEQbSSyA/DfxbCHRhFN6S4ew4kuYETO57e6AS3aOuYGLBRdu9Mub7IAQcOyy1LL6ktr9u5WEOoWS2h0w== +"@ckeditor/ckeditor5-upload@41.1.0", "@ckeditor/ckeditor5-upload@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-41.1.0.tgz#c30a28e31443e0dc51a18cd1376e862002c90645" + integrity sha512-o64mv8zAJiGMI4Ao/fngZSBpNNCb/THPZc224GEdOrUkXhSpUnHIsXvlsUwwSRSEZuK44vk+OPNGbFloYMk5Eg== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" -"@ckeditor/ckeditor5-utils@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz#2c603d1f96869639e5b79ef29f459bd4cd46bbe0" - integrity sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg== +"@ckeditor/ckeditor5-utils@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-41.1.0.tgz#186c818b07c8cf3e6b9a574dbe67512bacb2ef23" + integrity sha512-2WtcUHbZ7wJoDVKb1AHeB4OSdf0ZLg1PMemr46yjCHDCf7NunGp/n+suZWloIKPuyG9OPkp9lhIBI4MHeDNHYw== dependencies: lodash-es "4.17.21" -"@ckeditor/ckeditor5-watchdog@40.2.0", "@ckeditor/ckeditor5-watchdog@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-40.2.0.tgz#f5c72f0a3feb775be22bbaf595af3edbe8576f5c" - integrity sha512-ets7o2dUR7l23G9o/RAbu+gJzUkc2Ul269E3TEhZnbQXFjshvEGK2kzuay7I+/waL3ADuYe4zuoBqsqdPoAhfg== +"@ckeditor/ckeditor5-watchdog@41.1.0", "@ckeditor/ckeditor5-watchdog@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-41.1.0.tgz#85e9b19d0c58bb5ae7b5d4d657a7e4ce5118e530" + integrity sha512-zAKmuUpYW+X80rNFHIZ0cWXZWeXUd86xO+PVfKEmtSt4By4dKA3wDNT0Ub631x+oZQepp2eoG54R7CpLd2WFiw== dependencies: lodash-es "4.17.21" -"@ckeditor/ckeditor5-widget@40.2.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-40.2.0.tgz#fb54ff8fd4fc31393d492c331f305afdcba338ee" - integrity sha512-okeUSwbnu6TUKvwBOl0YdED6Me0/vvs1ybfKZPNEJNwGl989iG0LQO4oYUye8BTCZvzCZ2cBTb1Cvnwr8KRcbg== +"@ckeditor/ckeditor5-widget@41.1.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-41.1.0.tgz#fd0267e3b400cc35f9b8738a1441540c41f9ad73" + integrity sha512-OBJrBM+43fgmahp3W/MNcliW19JAVVIs7bcY4orMk+ltFptHT2v1fDsLkp7YRsxYi/Ipx6ZjWVjG3DQXAaUjwA== dependencies: - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-enter" "40.2.0" - "@ckeditor/ckeditor5-typing" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-enter" "41.1.0" + "@ckeditor/ckeditor5-typing" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-word-count@^40.0.0": - version "40.2.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-40.2.0.tgz#4174c1aa0f964c14f47e0a42b26acf364f194c56" - integrity sha512-toQl5keROXYudpGIq/xvzpLq7fOqz39mQKcr+RrkHrJb322n311g2yaNWLDofRbdU6y9+BTal707n219bp7BcA== +"@ckeditor/ckeditor5-word-count@^41.0.0": + version "41.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-word-count/-/ckeditor5-word-count-41.1.0.tgz#610c118976b1f98d1c3225672834cbd451cd82d8" + integrity sha512-iZqwPSUxW1yNjt12hb37lM9eLW6Ce9+QCU6lkrHyVzZwXe3x8AooZ7Xh3ydj9JT7Vh5SlhI5vrjs3MTcoBEIiw== dependencies: - ckeditor5 "40.2.0" + ckeditor5 "41.1.0" lodash-es "4.17.21" "@csstools/selector-specificity@^2.0.0": @@ -2657,24 +2657,24 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ckeditor5@40.2.0: - version "40.2.0" - resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-40.2.0.tgz#9dfc6fbdbbff1ce8c4b9498a5f204460feea5e46" - integrity sha512-JaFuY/6DX1wbA6yRB2xQVMr+9W1C3HvSX4AT10ccoKBKe9OctIatekDt2ztV+cMaVHLF1wocskS/Ql9XFRy2Eg== +ckeditor5@41.1.0: + version "41.1.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-41.1.0.tgz#64f7e4bef5045a8804ad0fd309c7d7e999750625" + integrity sha512-ypqC8jtLztWNgCnN7/E9rjhBP80tFnBVd5DyaaA7qZO0SwdlZeQcp3fy610QC36f9GjUWtwm3qLw9eZWXwPnTg== dependencies: - "@ckeditor/ckeditor5-clipboard" "40.2.0" - "@ckeditor/ckeditor5-core" "40.2.0" - "@ckeditor/ckeditor5-engine" "40.2.0" - "@ckeditor/ckeditor5-enter" "40.2.0" - "@ckeditor/ckeditor5-paragraph" "40.2.0" - "@ckeditor/ckeditor5-select-all" "40.2.0" - "@ckeditor/ckeditor5-typing" "40.2.0" - "@ckeditor/ckeditor5-ui" "40.2.0" - "@ckeditor/ckeditor5-undo" "40.2.0" - "@ckeditor/ckeditor5-upload" "40.2.0" - "@ckeditor/ckeditor5-utils" "40.2.0" - "@ckeditor/ckeditor5-watchdog" "40.2.0" - "@ckeditor/ckeditor5-widget" "40.2.0" + "@ckeditor/ckeditor5-clipboard" "41.1.0" + "@ckeditor/ckeditor5-core" "41.1.0" + "@ckeditor/ckeditor5-engine" "41.1.0" + "@ckeditor/ckeditor5-enter" "41.1.0" + "@ckeditor/ckeditor5-paragraph" "41.1.0" + "@ckeditor/ckeditor5-select-all" "41.1.0" + "@ckeditor/ckeditor5-typing" "41.1.0" + "@ckeditor/ckeditor5-ui" "41.1.0" + "@ckeditor/ckeditor5-undo" "41.1.0" + "@ckeditor/ckeditor5-upload" "41.1.0" + "@ckeditor/ckeditor5-utils" "41.1.0" + "@ckeditor/ckeditor5-watchdog" "41.1.0" + "@ckeditor/ckeditor5-widget" "41.1.0" clean-stack@^2.0.0: version "2.2.0" From 698fadc00cb19cfa35169c5e3ac0239fac9ae494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Feb 2024 22:20:44 +0100 Subject: [PATCH 060/634] Upgraded markedjs package --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fa54859a..39b5783a 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "json-formatter-js": "^2.3.4", "jszip": "^3.2.0", "katex": "^0.16.0", - "marked": "^11.1.1", + "marked": "^12.0.0", "marked-gfm-heading-id": "^3.0.4", "marked-mangle": "^1.0.1", "pdfmake": "^0.2.2", diff --git a/yarn.lock b/yarn.lock index 1645d9fd..7772983c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4913,10 +4913,10 @@ marked@4.0.12: resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== -marked@^11.1.1: - version "11.2.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-11.2.0.tgz#fc908aeca962b721b0392ee4205e6f90ebffb074" - integrity sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw== +marked@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-12.0.0.tgz#051ea8c8c7f65148a63003df1499515a2c6de716" + integrity sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w== mdn-data@2.0.14: version "2.0.14" From f67ce2b0a3e49f051b599291e8b5f11e836b5bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 8 Feb 2024 22:48:50 +0100 Subject: [PATCH 061/634] Updated unifont to latest version --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index b5c87650..b0156d8c 100644 --- a/composer.lock +++ b/composer.lock @@ -4956,16 +4956,16 @@ }, { "name": "part-db/label-fonts", - "version": "v1.0.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/Part-DB/label-fonts.git", - "reference": "65f4a47d877f45e39804cd86a4fc65789b49ee2f" + "reference": "77c84b70ed3bb005df15f30ff835ddec490394b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Part-DB/label-fonts/zipball/65f4a47d877f45e39804cd86a4fc65789b49ee2f", - "reference": "65f4a47d877f45e39804cd86a4fc65789b49ee2f", + "url": "https://api.github.com/repos/Part-DB/label-fonts/zipball/77c84b70ed3bb005df15f30ff835ddec490394b9", + "reference": "77c84b70ed3bb005df15f30ff835ddec490394b9", "shasum": "" }, "type": "library", @@ -4988,9 +4988,9 @@ ], "support": { "issues": "https://github.com/Part-DB/label-fonts/issues", - "source": "https://github.com/Part-DB/label-fonts/tree/v1.0.0" + "source": "https://github.com/Part-DB/label-fonts/tree/v1.1.0" }, - "time": "2023-07-02T01:01:20+00:00" + "time": "2024-02-08T21:44:38+00:00" }, { "name": "phenx/php-font-lib", From 178a825e9336f2049069da470f6898fd14815183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 12 Feb 2024 18:37:42 +0100 Subject: [PATCH 062/634] New Crowdin updates (#517) * New translations messages.en.xlf (Russian) * New translations validators.en.xlf (Russian) * New translations security.en.xlf (Russian) --- translations/messages.ru.xlf | 1046 ++++++++++++++++++++++++++++++++ translations/security.ru.xlf | 6 + translations/validators.ru.xlf | 138 +++++ 3 files changed, 1190 insertions(+) diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 281ec548..15a297e2 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -11139,6 +11139,162 @@ Необходимо пополнить
+ + + part.withdraw.access_denied + Вы не авторизованы для выполнения желаемого действия! Пожалуйста, проверьте свои полномочия и владельца инвентаря компонентов. + + + + + part.info.amount.less_than_desired + Меньше, чем хотелось бы + + + + + log.cli_user + Пользователь CLI + + + + + log.element_edited.changed_fields.part_owner_must_match + Владелец компонента должен совпадать с владельцем хранилища! + + + + + part.filter.lessThanDesired + Доступно меньше, чем хотелось бы (общее количество < мин. количества) + + + + + part.filter.lotOwner + Владелец инвентаря + + + + + user.show_email_on_profile.label + Показывать e-mail на странице публичного профиля + + + + + log.details.title + Подробности журнала + + + + + log.user_login.login_from_ip + Вход с IP адреса + + + + + log.user_login.ip_anonymize_hint + Если последние цифры IP-адреса отсутствуют, то активируется режим GDPR, в котором IP-адреса анонимизируются. + + + + + log.user_not_allowed.unauthorized_access_attempt_to + Попытка неавторизованного доступа к странице + + + + + log.user_not_allowed.hint + Запрос был заблокирован. Никаких дальнейших действий не требуется. + + + + + log.no_comment + Без комментариев + + + + + log.element_changed.field + Поле + + + + + log.element_changed.data_before + Данные до изменения + + + + + error_table.error + Во время запроса произошла ошибка. + + + + + part.table.invalid_regex + Неверное регулярное выражение (regex) + + + + + log.element_changed.data_after + Данные после изменения + + + + + log.element_changed.diff + Разница + + + + + log.undo.undo.short + Отмена + + + + + log.undo.revert.short + Вернуться к версии + + + + + log.view_version + Посмотреть версию + + + + + log.undo.undelete.short + Восстановить + + + + + log.element_edited.changed_fields.id + ID + + + + + log.element_edited.changed_fields.id_owner + Владелец + + + + + log.element_edited.changed_fields.parent_id + Родительский элемент + + log.details.delete_entry @@ -11151,5 +11307,895 @@ Вы уверены, что хотите удалить эту запись из журнала ? + + + log.delete.message + Если это запись истории для элемента, то ее удаление приведет к потере данных истории! Это может привести к неожиданным результатам при использовании функции путешествия во времени. + + + + + log.collection_deleted.on_collection + в коллекции + + + + + log.element_edited.changed_fields.attachments + Вложения + + + + + tfa_u2f.add_key.registration_error + Произошла ошибка во время регистрации ключа безопасности. Попробуйте еще раз или используйте другой ключ! + + + + + log.target_type.none + Нет + + + + + ui.darkmode.light + Светлый + + + + + ui.darkmode.dark + Тёмный + + + + + ui.darkmode.auto + Авто (в зависимости от настроек системы) + + + + + label_generator.no_lines_given + Текстовое содержание не указано! Созданные ярлыки будут пустыми. + + + + + user.password_strength.very_weak + Очень слабый + + + + + user.password_strength.weak + Слабый + + + + + user.password_strength.medium + Средний + + + + + user.password_strength.strong + Сильный + + + + + user.password_strength.very_strong + Очень сильный + + + + + perm.users.impersonate + Выдать себя за другого пользователя + + + + + user.impersonated_by.label + Выдано пользователем + + + + + user.stop_impersonation + Прекратить «Выдавать себя за пользователя» + + + + + user.impersonate.btn + Выдавать себя за пользователя + + + + + user.impersonate.confirm.title + Вы уверены, что хотите выдать себя за этого пользователя? + + + + + user.impersonate.confirm.message + Это будет отражено в журнале. Должна быть веская причина для данного действия. + +Обратите внимание, что вы не можете выдавать себя за деактивированного пользователя. Если вы попробуете это сделать, вы получите сообщение «Доступ запрещен». + + + + + log.type.security.user_impersonated + Пользователь выдал себя за другое лицо + + + + + info_providers.providers_list.title + Источники информации + + + + + info_providers.providers_list.active + Активный + + + + + info_providers.providers_list.disabled + Отключенный + + + + + info_providers.capabilities.basic + Основные + + + + + info_providers.capabilities.footprint + Посадочное место + + + + + info_providers.capabilities.picture + Картинка + + + + + info_providers.capabilities.datasheet + Технические данные + + + + + info_providers.capabilities.price + Цены + + + + + part.info_provider_reference.badge + Источник информации, использованный для создания этого компонента. + + + + + part.info_provider_reference + Создано на основе источника информации + + + + + oauth_client.connect.btn + Подключить OAuth + + + + + info_providers.table.provider.label + Источник + + + + + info_providers.search.keyword + Ключевое слово + + + + + info_providers.search.submit + Найти + + + + + info_providers.search.providers.help + Выберите источники информации для поиска. + + + + + info_providers.search.providers + Источники + + + + + info_providers.search.info_providers_list + Посмотреть все доступные источники информации + + + + + info_providers.search.title + Создать компонент из источника информации + + + + + oauth_client.flash.connection_successful + Соединение с приложением OAuth успешно установлено! + + + + + perm.part.info_providers + Источники информации + + + + + perm.part.info_providers.create_parts + Создание компонентов + + + + + entity.edit.alternative_names.label + Альтернативные названия + + + + + entity.edit.alternative_names.help + Представленные здесь альтернативные имена используются для автоматического выбора этого элемента на основе данных, полученных из источников информации. + + + + + info_providers.form.help_prefix + Источник + + + + + update_manager.new_version_available.title + Доступна новая версия + + + + + update_manager.new_version_available.text + Доступна новая версия Part-DB. Здесь вы найдете больше информации + + + + + update_manager.new_version_available.only_administrators_can_see + Это сообщение могут видеть только администраторы. + + + + + perm.system.show_available_updates + Показать доступные обновления Part-DB + + + + + user.settings.api_tokens + Токены API + + + + + user.settings.api_tokens.description + Используя токен API, другие приложения могут получить доступ к Part-DB под вашими правами для выполнения различных действий с помощью REST API Part-DB. Если вы удалите токен API, приложение, использующее этот токен, больше не сможет получить доступ к Part-DB от его имени. + + + + + api_tokens.name + Имя + + + + + api_tokens.access_level + Уровень доступа + + + + + api_tokens.expiration_date + Дата истечения срока действия + + + + + api_tokens.added_date + Добавлен + + + + + api_tokens.last_time_used + Последний раз использован + + + + + datetime.never + Никогда + + + + + api_token.valid + Действительный + + + + + api_token.expired + Истекший + + + + + user.settings.show_api_documentation + Посмотреть документацию по API + + + + + api_token.create_new + Создать новый токен API + + + + + api_token.level.read_only + Только чтение + + + + + api_token.level.edit + Редактировать + + + + + api_token.level.admin + Админ + + + + + api_token.level.full + Полный + + + + + api_tokens.access_level.help + Вы можете ограничить доступ к токену API. Доступ всегда ограничен правами вашего пользователя. + + + + + api_tokens.expiration_date.help + После этой даты токен больше нельзя будет использовать. Если это поле оставить пустым, срок действия токена никогда не истечет. + + + + + api_tokens.your_token_is + Ваш токен API + + + + + api_tokens.please_save_it + Пожалуйста, сохраните эту информацию - вы больше не сможете её увидеть! + + + + + api_tokens.create_new.back_to_user_settings + Вернуться к настройкам пользователя + + + + + project.build.dont_check_quantity + Не проверять количество + + + + + project.build.dont_check_quantity.help + Если выбрана эта опция, выбранные количества будут удалены из запасов, без проверки фактически необходимого количества компонентов требуемых для сборки проекта. + + + + + part_list.action.invert_selection + Наоборот + + + + + perm.api + API + + + + + perm.api.access_api + Доступ через API + + + + + perm.api.manage_tokens + Управление токенами API + + + + + user.settings.api_tokens.delete.title + Вы уверены, что хотите удалить этот токен API? + + + + + user.settings.api_tokens.delete + Удалить + + + + + user.settings.api_tokens.delete.message + Приложение, использующее этот токен, больше не будет иметь доступа к Part-DB. Это не может быть отменено! + + + + + api_tokens.deleted + Токен API успешно удален! + + + + + user.settings.api_tokens.no_api_tokens_yet + Токены API еще не созданы. + + + + + api_token.ends_with + Заканчивается на + + + + + entity.select.creating_new_entities_not_allowed + Вы не имеете права создавать новые элементы этого типа! Пожалуйста, выберите один из существующих. + + + + + scan_dialog.mode + Тип штрих-кода + + + + + scan_dialog.mode.auto + Автоматическое распознавание + + + + + scan_dialog.mode.ipn + IPN штрих-код + + + + + scan_dialog.mode.internal + Штрих-код Part-DB + + + + + part_association.label + Связывание компонентов + + + + + part.edit.tab.associations + Связанные компоненты + + + + + part_association.edit.other_part + Связанный компонент + + + + + part_association.edit.type + Тип отношений + + + + + part_association.edit.comment + Примечания + + + + + part_association.edit.type.help + Здесь вы можете указать, как выбранный компонент связан с текущим компонентом. + + + + + part_association.table.from_this_part + Ссылки из этого компонента на другие + + + + + part_association.table.from + От + + + + + part_association.table.type + Отношение + + + + + part_association.table.to + К + + + + + part_association.type.compatible + Совместим с + + + + + part_association.table.to_this_part + Ссылки на этот компонент от других + + + + + part_association.type.other + Другое (своя цена) + + + + + part_association.type.supersedes + Заменены + + + + + part_association.edit.other_type + Самостоятельно выбранные отношения + + + + + part_association.edit.delete.confirm + Вы действительно хотите удалить это отношение? Это не может быть отменено. + + + + + part_lot.edit.advanced + Показать дополнительные параметры + + + + + part_lot.edit.vendor_barcode + Штрих-код поставщика + + + + + part_lot.edit.vendor_barcode.help + Если этот инвентарь уже имеет штрих-код (например, нанесенный поставщиком), вы можете ввести здесь содержимое штрих-кода, чтобы найти этот инвентарь путем сканирования штрих-кода. + + + + + scan_dialog.mode.vendor + Штрих-код поставщика (настраивается в перечне компонентов) + + + + + project.bom.instockAmount + Наличие на складе + + + + + collection_type.new_element.tooltip + Этот элемент был создан недавно и еще не сохранен в базе данных. + + + + + part.merge.title + Объединить компонент + + + + + part.merge.title.into + в + + + + + part.merge.confirm.title + Вы действительно хотите объединить <b>%other%</b> в <b>%target%</b>? + + + + + part.merge.confirm.message + <b>%other%</b> будет удален, а текущий компонент сохранён с отображаемыми данными. + + + + + part.info.merge_modal.title + Объединение компонентов + + + + + part.info.merge_modal.other_part + Другой компонент + + + + + part.info.merge_modal.other_into_this + Объединить другой компонент с этим (удалить другой компонент, оставить этот) + + + + + part.info.merge_modal.this_into_other + Объединить этот компонент с другим (удалить этот компонент, оставить другой) + + + + + part.info.merge_btn + Объединить компонент + + + + + part.update_part_from_info_provider.btn + Обновить компонент из источника информации + + + + + info_providers.update_part.title + Обновление компонента из источника информации + + + + + part.merge.flash.please_review + Данные еще не сохранены. Пожалуйста, просмотрите изменения и нажмите «Сохранить», чтобы сохранить данные. + + + + + user.edit.flash.permissions_fixed + Разрешения, необходимые для других разрешений, отсутствовали. Это исправлено. Пожалуйста, проверьте, соответствуют ли разрешения вашим ожиданиям. + + + + + permission.legend.dependency_note + Обратите внимание, что некоторые операции авторизации зависят друг от друга. Если вы получили предупреждение о том, что отсутствующие разрешения были исправлены и для разрешения снова установлено значение «разрешено», вам также необходимо установить для зависимой операции значение «запрещено». Зависимости обычно располагаются справа от операции. + + + + + log.part_stock_changed.timestamp + Время + + + + + part.info.withdraw_modal.timestamp + Время действия + + + + + part.info.withdraw_modal.timestamp.hint + Это поле позволяет указать действительную дату фактического выполнения складской операции, а не только дату ее регистрации. Это значение сохраняется в дополнительном поле записи журнала. + + + + + part.info.withdraw_modal.delete_lot_if_empty + Удалить этот инвентарь, когда он станет пустым + + + + + info_providers.search.error.client_exception + Произошла ошибка при общении с поставщиком информации. Просмотрите конфигурацию этого поставщика и, если возможно, обновите токены OAuth. + + + + + eda_info.reference_prefix.placeholder + напр. R + + + + + eda_info.reference_prefix + Ссылочный префикс + + + + + eda_info.kicad_section.title + Специальные настройки KiCad + + + + + eda_info.value + Стоимость + + + + + eda_info.value.placeholder + напр. 100n + + + + + eda_info.exclude_from_bom + Исключить компонент из спецификации + + + + + eda_info.exclude_from_board + Исключить деталь из печатной платы + + + + + eda_info.exclude_from_sim + Исключить компонент из моделирования + + + + + eda_info.kicad_symbol + Символ схемы KiCad + + + + + eda_info.kicad_symbol.placeholder + напр. Transistor_BJT:BC547 + + + + + eda_info.kicad_footprint + посадочное место KiCad + + + + + eda_info.kicad_footprint.placeholder + напр. Package_TO_SOT_THT:TO-92 + + + + + part.edit.tab.eda + Информация EDA + + + + + api.api_endpoints.title + Конечные точки API + + + + + api.api_endpoints.partdb + Part-DB API + + + + + api.api_endpoints.kicad_root_url + корневой URL KiCad API + + + + + eda_info.visibility + Принудительная видимость + + + + + eda_info.visibility.help + По умолчанию видимость определяется автоматически в программном обеспечении EDA. Используя этот флажок, вы можете сделать компонент видимым или невидимым. + + + + + part.withdraw.zero_amount + Вы пытались удалить/добавить нулевое количество! Никаких действий предпринято не было. + + + + + login.flash.access_denied_please_login + В доступе отказано! Пожалуйста, войдите, чтобы продолжить. + + diff --git a/translations/security.ru.xlf b/translations/security.ru.xlf index ef7687b0..214e45ff 100644 --- a/translations/security.ru.xlf +++ b/translations/security.ru.xlf @@ -7,5 +7,11 @@ Ваша учетная запись отключена! Свяжитесь с администратором, если вы считаете, что это неправильно.
+ + + saml.error.cannot_login_local_user_per_saml + Вы не можете войти в систему как локальный пользователь через SSO! Используйте локального пользователя и его пароль. + + diff --git a/translations/validators.ru.xlf b/translations/validators.ru.xlf index ce055f1a..51e0a679 100644 --- a/translations/validators.ru.xlf +++ b/translations/validators.ru.xlf @@ -185,12 +185,24 @@ Родитель не может быть дочерним по отношению к себе
+ + + validator.select_valid_category + Пожалуйста, выберите действительную категорию! + + validator.part_lot.only_existing Вы не можете добавлять новые компоненты в хранилище которое помечено как "только существующие". + + + validator.part_lot.location_full.no_increase + Место хранения заполнено. Запас не может быть увеличен (новое значение должно быть меньше {{old_amount}}). + + validator.part_lot.location_full @@ -203,5 +215,131 @@ Вы не можете добавлять новые компоненты в хранилище которое отмечено как "единственный компонент". + + + validator.attachment.must_not_be_null + Вы должны выбрать тип файла! + + + + + validator.orderdetail.supplier_must_not_be_null + Вы должны выбрать поставщика! + + + + + validator.measurement_unit.use_si_prefix_needs_unit + Чтобы включить префиксы СИ, необходимо установить символ единицы! + + + + + part.ipn.must_be_unique + Внутренний номер детали (IPN) должен быть уникальным. Значение {{value}} уже используется! + + + + + validator.project.bom_entry.name_or_part_needed + Вам необходимо выбрать компонент или задать имя для BOM, не относящейся к компоненту! + + + + + project.bom_entry.name_already_in_bom + Запись BOM с таким именем уже существует! + + + + + project.bom_entry.part_already_in_bom + Этот компонент уже существует в BOM! + + + + + project.bom_entry.mountnames_quantity_mismatch + Количество наименований сборок должно соответствовать количеству собираемых компонентов! + + + + + project.bom_entry.can_not_add_own_builds_part + BOM проекта не может содержать собственную производственную составляющую! + + + + + project.bom_has_to_include_all_subelement_parts + BOM проекта должна содержать все производственные компоненты подпроектов. Компонент %part_name% проекта %project_name% отсутствует! + + + + + project.bom_entry.price_not_allowed_on_parts + Невозможно определить цену для BOM записей компонента. Вместо этого определите цену на сам компонент. + + + + + validator.project_build.lot_bigger_than_needed + Вы выбрали для удаления больше, чем необходимо. Уберите лишнее количество. + + + + + validator.project_build.lot_smaller_than_needed + Они выбрали меньшее количество, чем необходимо для сборки! Добавьте больше. + + + + + part.name.must_match_category_regex + Имя компонента не соответствует регулярному выражению, указанному в категории: %regex% + + + + + validator.attachment.name_not_blank + Выберите значение или загрузите файл, чтобы автоматически использовать его имя в качестве имени для этого вложения. + + + + + validator.part_lot.owner_must_match_storage_location_owner + Владелец этого инвентаря и выбранное место хранения должны совпадать (%owner_name%)! + + + + + validator.part_lot.owner_must_not_be_anonymous + Владелец не может быть анонимным пользователем! + + + + + validator.part_association.must_set_an_value_if_type_is_other + Если тип ссылки установлен на «Другое», необходимо установить описательное значение! + + + + + validator.part_association.part_cannot_be_associated_with_itself + Компонент не может быть связан сам с собой! + + + + + validator.part_association.already_exists + Ссылка на этот компонент уже существует! + + + + + validator.part_lot.vendor_barcode_must_be_unique + Штрих-код этого поставщика уже используется в другом инвентаре. Штрих-код должен быть уникальным! + + From 4d4570701b18bae0bf0e5c3fb655585f44d548b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 14 Feb 2024 22:46:01 +0100 Subject: [PATCH 063/634] Updated dependencies --- composer.lock | 118 +++++++++++++++++++++++---------------------- yarn.lock | 131 ++++++++++++++++++++++++++++---------------------- 2 files changed, 133 insertions(+), 116 deletions(-) diff --git a/composer.lock b/composer.lock index b0156d8c..b938d6a6 100644 --- a/composer.lock +++ b/composer.lock @@ -940,16 +940,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.1", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2", - "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -1033,7 +1033,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.1" + "source": "https://github.com/doctrine/dbal/tree/3.8.2" }, "funding": [ { @@ -1049,7 +1049,7 @@ "type": "tidelift" } ], - "time": "2024-02-03T17:33:49+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", @@ -1100,16 +1100,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.2", + "version": "2.11.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf" + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", - "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/492725310ae9a1b5b20d6ae09fb5ae6404616e68", + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68", "shasum": "" }, "require": { @@ -1199,7 +1199,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.3" }, "funding": [ { @@ -1215,7 +1215,7 @@ "type": "tidelift" } ], - "time": "2024-02-06T15:41:25+00:00" + "time": "2024-02-10T20:56:20+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -3320,16 +3320,16 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.18.0", + "version": "v2.18.1", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6" + "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/2f6c9342c711597e3b5f1f2468910336be5232d6", - "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/1d59f49f164805b45f95f92cf743781bc2ba7d2b", + "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b", "shasum": "" }, "require": { @@ -3374,9 +3374,9 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.0" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.1" }, - "time": "2023-12-18T21:58:12+00:00" + "time": "2024-02-14T17:41:28+00:00" }, { "name": "laminas/laminas-code", @@ -14193,7 +14193,7 @@ }, { "name": "web-token/jwt-core", - "version": "3.2.9", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/web-token/jwt-core.git", @@ -14257,7 +14257,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-core/tree/3.2.9" + "source": "https://github.com/web-token/jwt-core/tree/3.2.10" }, "funding": [ { @@ -14269,7 +14269,7 @@ }, { "name": "web-token/jwt-signature", - "version": "3.2.9", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/web-token/jwt-signature.git", @@ -14334,7 +14334,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-signature/tree/3.2.9" + "source": "https://github.com/web-token/jwt-signature/tree/3.2.10" }, "funding": [ { @@ -15530,16 +15530,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.57", + "version": "1.10.58", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" + "reference": "a23518379ec4defd9e47cbf81019526861623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", + "reference": "a23518379ec4defd9e47cbf81019526861623ec2", "shasum": "" }, "require": { @@ -15588,20 +15588,20 @@ "type": "tidelift" } ], - "time": "2024-01-24T11:51:34+00:00" + "time": "2024-02-12T20:02:57+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.60", + "version": "1.3.62", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca" + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/30cf38dda057a78180c4df1f6f41e33eb49c4eca", - "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f3abbd8e93e12fed8091be3aeec216b06bed0950", + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950", "shasum": "" }, "require": { @@ -15618,6 +15618,7 @@ "require-dev": { "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", + "cweagans/composer-patches": "^1.7.3", "doctrine/annotations": "^1.11 || ^2.0", "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", @@ -15657,9 +15658,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.60" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.62" }, - "time": "2024-02-08T09:33:18+00:00" + "time": "2024-02-12T11:52:17+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -16331,12 +16332,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9" + "reference": "683c8e7acb9c333990683edd7faed421c87d3954" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", - "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/683c8e7acb9c333990683edd7faed421c87d3954", + "reference": "683c8e7acb9c333990683edd7faed421c87d3954", "shasum": "" }, "conflict": { @@ -16419,7 +16420,7 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.3", + "concrete5/concrete5": "<9.2.5", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", @@ -16440,7 +16441,7 @@ "dbrisinajumi/d2files": "<1", "dcat/laravel-admin": "<=2.1.3.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", "doctrine/annotations": "<1.2.7", @@ -16455,8 +16456,8 @@ "dolibarr/dolibarr": "<18.0.2", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": "<9.5.11|>=10,<10.0.11|>=10.1,<10.1.4", - "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", "ec-cube/ec-cube": "<2.4.4", @@ -16584,7 +16585,7 @@ "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": ">=2.5.4,<=3.8.12", + "joomla/framework": "<1.5.4|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", @@ -16621,7 +16622,7 @@ "liftkit/database": "<2.13.2", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6|>=3,<3.0.4", + "livewire/livewire": ">2.2.4,<2.2.6", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", @@ -16712,6 +16713,7 @@ "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", @@ -16743,7 +16745,7 @@ "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", "pimcore/pimcore": "<11.1.1", - "pixelfed/pixelfed": "<=0.11.4", + "pixelfed/pixelfed": "<0.11.11", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", @@ -16921,14 +16923,13 @@ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", - "typo3/cms-saltedpasswords": "<0.2.13", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -16985,6 +16986,7 @@ "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", @@ -17059,7 +17061,7 @@ "type": "tidelift" } ], - "time": "2024-02-08T20:04:35+00:00" + "time": "2024-02-14T16:04:39+00:00" }, { "name": "sebastian/cli-parser", @@ -18554,16 +18556,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.10", + "version": "12.1.12", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "67f643befd6997961aa6bd759b4529e94bb18b53" + "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/67f643befd6997961aa6bd759b4529e94bb18b53", - "reference": "67f643befd6997961aa6bd759b4529e94bb18b53", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d87f15506b5200a0098076cdbf6d00913b4e41f5", + "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5", "shasum": "" }, "require": { @@ -18596,7 +18598,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.10" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.12" }, "funding": [ { @@ -18608,7 +18610,7 @@ "type": "github" } ], - "time": "2024-02-05T10:58:24+00:00" + "time": "2024-02-14T10:04:06+00:00" }, { "name": "theseer/tokenizer", @@ -18662,16 +18664,16 @@ }, { "name": "vimeo/psalm", - "version": "5.21.1", + "version": "5.22.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494" + "reference": "fe2c67ec89f358940f90db05efd2d663388b45a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/8c473e2437be8b6a8fd8f630f0f11a16b114c494", - "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/fe2c67ec89f358940f90db05efd2d663388b45a6", + "reference": "fe2c67ec89f358940f90db05efd2d663388b45a6", "shasum": "" }, "require": { @@ -18694,7 +18696,7 @@ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sebastian/diff": "^4.0 || ^5.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" @@ -18768,7 +18770,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-02-01T01:04:32+00:00" + "time": "2024-02-13T14:22:51+00:00" } ], "aliases": [ diff --git a/yarn.lock b/yarn.lock index 7772983c..fe198a56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1529,9 +1529,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.1.tgz#0f4be48f43e96237181b31879258498b9f0d15d6" - integrity sha512-6DdRoFV8p1qM2YxieZ0McSzFfdKHH85FQn3C8UpLDgyD1UDb3ERhUsXg65M6nPuZeHtBZLY4hUumMdaAP0N1+w== + version "8.0.2" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.2.tgz#c31cdadfe66b98983066a94073b26fc7e15835f0" + integrity sha512-3K6QZkwWfosAV8zuM5bY+kKF02jp1lMQGsWfSE6wXdZBRBP3ah+Vj26YNqYtkEomBwRWA0QKhZgyJP7xOQkVEg== "@jbtronics/bs-treeview@^1.0.1": version "1.0.6" @@ -1567,9 +1567,9 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.0.1": version "1.1.2" @@ -2503,13 +2503,13 @@ browserify-optional@^1.0.1: ast-types "^0.7.0" browser-resolve "^1.8.1" -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: - version "4.22.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" - integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001580" - electron-to-chromium "^1.4.648" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -2563,14 +2563,15 @@ cacache@^15.0.5: unique-filename "^1.1.1" call-bind@^1.0.2, call-bind@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.6.tgz#6c46675fc7a5e9de82d75a233d586c8b7ac0d931" - integrity sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: + es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.3" - set-function-length "^1.2.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -2597,10 +2598,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001585" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" - integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587: + version "1.0.30001587" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz#a0bce920155fa56a1885a69c74e1163fc34b4881" + integrity sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA== chalk@^2.4.2: version "2.4.2" @@ -2882,16 +2883,16 @@ cookie@0.5.0: integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" - integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" + integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== dependencies: - browserslist "^4.22.2" + browserslist "^4.22.3" core-js@^3.23.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" + integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== core-util-is@~1.0.0: version "1.0.3" @@ -3182,9 +3183,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" datatables.net-bs5@>=1.13.4, datatables.net-bs5@^1.10.20: - version "1.13.8" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.8.tgz#807dca4b95c139fe217ed87bd25f3502b1d873d3" - integrity sha512-3B6S8LiKGtUtOsA97SkMddwggrza6JDtubnw1qjFb/mjqDmWO0PC1+QWeUspkLPFQCCbLaSVfXLWMdo44IGEmQ== + version "1.13.10" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.10.tgz#5e8b74a15ad31ba6ae13fe7c156d4e4326090ce9" + integrity sha512-6SPQ7NWufVD4+ibxVMHmaWiObz4SGBaNeZglne4m2xwThaWIAPiJ9OQ2QypcN9Y7ap2uU6QVTPvVmorA9CF5fQ== dependencies: datatables.net "1.13.8" jquery ">=1.7" @@ -3274,13 +3275,20 @@ datatables.net-select@>=1.6.2: datatables.net ">=1.13.4" jquery ">=1.7" -datatables.net@1.13.8, datatables.net@>=1.13.4: +datatables.net@1.13.8: version "1.13.8" resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.8.tgz#05a2fb5a036b0b65b66d1bb1eae0ba018aaea8a3" integrity sha512-2pDamr+GUwPTby2OgriVB9dR9ftFKD2AQyiuCXzZIiG4d9KkKFQ7gqPfNmG7uj9Tc5kDf+rGj86do4LAb/V71g== dependencies: jquery ">=1.7" +datatables.net@>=1.13.4: + version "1.13.10" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.10.tgz#4527e2b5428394732331c8b7db8fa20a56c0cc7b" + integrity sha512-lVjpXGX9VzOpiPYnJ/KxOsYMAVa3oc3UniYGGo6pLBVCyajzMo80yisgXRz8J392wkZOc3bpp6VPs2pDbpKlyw== + dependencies: + jquery ">=1.7" + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -3330,21 +3338,20 @@ default-gateway@^6.0.3: execa "^5.0.0" define-data-property@^1.0.1, define-data-property@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.2.tgz#f3c33b4f0102360cd7c0f5f28700f5678510b63a" - integrity sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: + es-define-property "^1.0.0" es-errors "^1.3.0" - get-intrinsic "^1.2.2" gopd "^1.0.1" - has-property-descriptors "^1.0.1" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.0: +define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3520,10 +3527,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.648: - version "1.4.662" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.662.tgz#0e014d31687210312c5f601bc9edcae2fa1663ef" - integrity sha512-gfl1XVWTQmPHhqEG0kN77SpUxaqPpMb9r83PT4gvKhg7P3irSxru3lW85RxvK1uI1j2CAcTWPjG/HbE0IP/Rtg== +electron-to-chromium@^1.4.668: + version "1.4.669" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.669.tgz#37e9cc16cc2fbdd8e06a46fc1fd3a1249e091f64" + integrity sha512-E2SmpffFPrZhBSgf8ibqanRS2mpuk3FIRDzLDwt7WFpfgJMKDHJs0hmacyP0PS1cWsq0dVkwIIzlscNaterkPg== emoji-regex@^8.0.0: version "8.0.0" @@ -3582,6 +3589,13 @@ error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -4071,7 +4085,7 @@ get-assigned-identifiers@^1.1.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -4205,11 +4219,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.2.2" + es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.1" @@ -4234,9 +4248,9 @@ has@^1.0.1: integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== dependencies: function-bind "^1.1.2" @@ -6161,13 +6175,14 @@ regex-parser@^2.2.11: integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpu-core@^5.3.1: version "5.3.2" @@ -6440,7 +6455,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-function-length@^1.2.0: +set-function-length@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== @@ -6452,7 +6467,7 @@ set-function-length@^1.2.0: gopd "^1.0.1" has-property-descriptors "^1.0.1" -set-function-name@^2.0.0: +set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== From b6b2e44231e9ae0c5524edcc6ceb1e0ee7ac7a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 14 Feb 2024 22:48:36 +0100 Subject: [PATCH 064/634] Dont prefetch settings page in navbar with turbos instaclick behavior as this page might not be accessible without additional authentication --- templates/_navbar.html.twig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/_navbar.html.twig b/templates/_navbar.html.twig index d1a8bc72..2ae97371 100644 --- a/templates/_navbar.html.twig +++ b/templates/_navbar.html.twig @@ -89,7 +89,8 @@ - + {# Dont prefetch settings page, as it might require additional authentication #} + {% trans %}user.settings.label{% endtrans %} From 88f4feaa81766eef851a60933adbad50917fb836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 15 Feb 2024 11:41:21 +0100 Subject: [PATCH 065/634] Revert "Updated dependencies" This reverts commit 4d4570701b18bae0bf0e5c3fb655585f44d548b3. --- composer.lock | 118 ++++++++++++++++++++++----------------------- yarn.lock | 131 ++++++++++++++++++++++---------------------------- 2 files changed, 116 insertions(+), 133 deletions(-) diff --git a/composer.lock b/composer.lock index b938d6a6..b0156d8c 100644 --- a/composer.lock +++ b/composer.lock @@ -940,16 +940,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.2", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" + "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2", + "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2", "shasum": "" }, "require": { @@ -1033,7 +1033,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.1" }, "funding": [ { @@ -1049,7 +1049,7 @@ "type": "tidelift" } ], - "time": "2024-02-12T18:36:36+00:00" + "time": "2024-02-03T17:33:49+00:00" }, { "name": "doctrine/deprecations", @@ -1100,16 +1100,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.3", + "version": "2.11.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68" + "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/492725310ae9a1b5b20d6ae09fb5ae6404616e68", - "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", + "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", "shasum": "" }, "require": { @@ -1199,7 +1199,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.3" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.2" }, "funding": [ { @@ -1215,7 +1215,7 @@ "type": "tidelift" } ], - "time": "2024-02-10T20:56:20+00:00" + "time": "2024-02-06T15:41:25+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -3320,16 +3320,16 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.18.1", + "version": "v2.18.0", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b" + "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/1d59f49f164805b45f95f92cf743781bc2ba7d2b", - "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/2f6c9342c711597e3b5f1f2468910336be5232d6", + "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6", "shasum": "" }, "require": { @@ -3374,9 +3374,9 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.1" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.0" }, - "time": "2024-02-14T17:41:28+00:00" + "time": "2023-12-18T21:58:12+00:00" }, { "name": "laminas/laminas-code", @@ -14193,7 +14193,7 @@ }, { "name": "web-token/jwt-core", - "version": "3.2.10", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/web-token/jwt-core.git", @@ -14257,7 +14257,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-core/tree/3.2.10" + "source": "https://github.com/web-token/jwt-core/tree/3.2.9" }, "funding": [ { @@ -14269,7 +14269,7 @@ }, { "name": "web-token/jwt-signature", - "version": "3.2.10", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/web-token/jwt-signature.git", @@ -14334,7 +14334,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-signature/tree/3.2.10" + "source": "https://github.com/web-token/jwt-signature/tree/3.2.9" }, "funding": [ { @@ -15530,16 +15530,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.58", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -15588,20 +15588,20 @@ "type": "tidelift" } ], - "time": "2024-02-12T20:02:57+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.62", + "version": "1.3.60", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950" + "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f3abbd8e93e12fed8091be3aeec216b06bed0950", - "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/30cf38dda057a78180c4df1f6f41e33eb49c4eca", + "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca", "shasum": "" }, "require": { @@ -15618,7 +15618,6 @@ "require-dev": { "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", - "cweagans/composer-patches": "^1.7.3", "doctrine/annotations": "^1.11 || ^2.0", "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", @@ -15658,9 +15657,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.62" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.60" }, - "time": "2024-02-12T11:52:17+00:00" + "time": "2024-02-08T09:33:18+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -16332,12 +16331,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "683c8e7acb9c333990683edd7faed421c87d3954" + "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/683c8e7acb9c333990683edd7faed421c87d3954", - "reference": "683c8e7acb9c333990683edd7faed421c87d3954", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", + "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", "shasum": "" }, "conflict": { @@ -16420,7 +16419,7 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.5", + "concrete5/concrete5": "<9.2.3", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", @@ -16441,7 +16440,7 @@ "dbrisinajumi/d2files": "<1", "dcat/laravel-admin": "<=2.1.3.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", "doctrine/annotations": "<1.2.7", @@ -16456,8 +16455,8 @@ "dolibarr/dolibarr": "<18.0.2", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "drupal/core": "<9.5.11|>=10,<10.0.11|>=10.1,<10.1.4", + "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", "ec-cube/ec-cube": "<2.4.4", @@ -16585,7 +16584,7 @@ "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.4|>=2.5.4,<=3.8.12", + "joomla/framework": ">=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", @@ -16622,7 +16621,7 @@ "liftkit/database": "<2.13.2", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6", + "livewire/livewire": ">2.2.4,<2.2.6|>=3,<3.0.4", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", @@ -16713,7 +16712,6 @@ "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", "pear/archive_tar": "<1.4.14", - "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", @@ -16745,7 +16743,7 @@ "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", "pimcore/pimcore": "<11.1.1", - "pixelfed/pixelfed": "<0.11.11", + "pixelfed/pixelfed": "<=0.11.4", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", @@ -16923,13 +16921,14 @@ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13", + "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/cms-saltedpasswords": "<0.2.13", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -16986,7 +16985,6 @@ "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", - "yuan1994/tpadmin": "<=1.3.12", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", @@ -17061,7 +17059,7 @@ "type": "tidelift" } ], - "time": "2024-02-14T16:04:39+00:00" + "time": "2024-02-08T20:04:35+00:00" }, { "name": "sebastian/cli-parser", @@ -18556,16 +18554,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.12", + "version": "12.1.10", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5" + "reference": "67f643befd6997961aa6bd759b4529e94bb18b53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d87f15506b5200a0098076cdbf6d00913b4e41f5", - "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/67f643befd6997961aa6bd759b4529e94bb18b53", + "reference": "67f643befd6997961aa6bd759b4529e94bb18b53", "shasum": "" }, "require": { @@ -18598,7 +18596,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.12" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.10" }, "funding": [ { @@ -18610,7 +18608,7 @@ "type": "github" } ], - "time": "2024-02-14T10:04:06+00:00" + "time": "2024-02-05T10:58:24+00:00" }, { "name": "theseer/tokenizer", @@ -18664,16 +18662,16 @@ }, { "name": "vimeo/psalm", - "version": "5.22.0", + "version": "5.21.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "fe2c67ec89f358940f90db05efd2d663388b45a6" + "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/fe2c67ec89f358940f90db05efd2d663388b45a6", - "reference": "fe2c67ec89f358940f90db05efd2d663388b45a6", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/8c473e2437be8b6a8fd8f630f0f11a16b114c494", + "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494", "shasum": "" }, "require": { @@ -18696,7 +18694,7 @@ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "sebastian/diff": "^4.0 || ^5.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" @@ -18770,7 +18768,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-02-13T14:22:51+00:00" + "time": "2024-02-01T01:04:32+00:00" } ], "aliases": [ diff --git a/yarn.lock b/yarn.lock index fe198a56..7772983c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1529,9 +1529,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.2.tgz#c31cdadfe66b98983066a94073b26fc7e15835f0" - integrity sha512-3K6QZkwWfosAV8zuM5bY+kKF02jp1lMQGsWfSE6wXdZBRBP3ah+Vj26YNqYtkEomBwRWA0QKhZgyJP7xOQkVEg== + version "8.0.1" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.1.tgz#0f4be48f43e96237181b31879258498b9f0d15d6" + integrity sha512-6DdRoFV8p1qM2YxieZ0McSzFfdKHH85FQn3C8UpLDgyD1UDb3ERhUsXg65M6nPuZeHtBZLY4hUumMdaAP0N1+w== "@jbtronics/bs-treeview@^1.0.1": version "1.0.6" @@ -1567,9 +1567,9 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" @@ -2503,13 +2503,13 @@ browserify-optional@^1.0.1: ast-types "^0.7.0" browser-resolve "^1.8.1" -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -2563,15 +2563,14 @@ cacache@^15.0.5: unique-filename "^1.1.1" call-bind@^1.0.2, call-bind@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + version "1.0.6" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.6.tgz#6c46675fc7a5e9de82d75a233d586c8b7ac0d931" + integrity sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg== dependencies: - es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" + get-intrinsic "^1.2.3" + set-function-length "^1.2.0" callsites@^3.0.0: version "3.1.0" @@ -2598,10 +2597,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587: - version "1.0.30001587" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz#a0bce920155fa56a1885a69c74e1163fc34b4881" - integrity sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: + version "1.0.30001585" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" + integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== chalk@^2.4.2: version "2.4.2" @@ -2883,16 +2882,16 @@ cookie@0.5.0: integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.36.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" - integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" + integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== dependencies: - browserslist "^4.22.3" + browserslist "^4.22.2" core-js@^3.23.0: - version "3.36.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" - integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== + version "3.35.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" + integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== core-util-is@~1.0.0: version "1.0.3" @@ -3183,9 +3182,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" datatables.net-bs5@>=1.13.4, datatables.net-bs5@^1.10.20: - version "1.13.10" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.10.tgz#5e8b74a15ad31ba6ae13fe7c156d4e4326090ce9" - integrity sha512-6SPQ7NWufVD4+ibxVMHmaWiObz4SGBaNeZglne4m2xwThaWIAPiJ9OQ2QypcN9Y7ap2uU6QVTPvVmorA9CF5fQ== + version "1.13.8" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.8.tgz#807dca4b95c139fe217ed87bd25f3502b1d873d3" + integrity sha512-3B6S8LiKGtUtOsA97SkMddwggrza6JDtubnw1qjFb/mjqDmWO0PC1+QWeUspkLPFQCCbLaSVfXLWMdo44IGEmQ== dependencies: datatables.net "1.13.8" jquery ">=1.7" @@ -3275,20 +3274,13 @@ datatables.net-select@>=1.6.2: datatables.net ">=1.13.4" jquery ">=1.7" -datatables.net@1.13.8: +datatables.net@1.13.8, datatables.net@>=1.13.4: version "1.13.8" resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.8.tgz#05a2fb5a036b0b65b66d1bb1eae0ba018aaea8a3" integrity sha512-2pDamr+GUwPTby2OgriVB9dR9ftFKD2AQyiuCXzZIiG4d9KkKFQ7gqPfNmG7uj9Tc5kDf+rGj86do4LAb/V71g== dependencies: jquery ">=1.7" -datatables.net@>=1.13.4: - version "1.13.10" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.10.tgz#4527e2b5428394732331c8b7db8fa20a56c0cc7b" - integrity sha512-lVjpXGX9VzOpiPYnJ/KxOsYMAVa3oc3UniYGGo6pLBVCyajzMo80yisgXRz8J392wkZOc3bpp6VPs2pDbpKlyw== - dependencies: - jquery ">=1.7" - debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -3338,20 +3330,21 @@ default-gateway@^6.0.3: execa "^5.0.0" define-data-property@^1.0.1, define-data-property@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.2.tgz#f3c33b4f0102360cd7c0f5f28700f5678510b63a" + integrity sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g== dependencies: - es-define-property "^1.0.0" es-errors "^1.3.0" + get-intrinsic "^1.2.2" gopd "^1.0.1" + has-property-descriptors "^1.0.1" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3527,10 +3520,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.668: - version "1.4.669" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.669.tgz#37e9cc16cc2fbdd8e06a46fc1fd3a1249e091f64" - integrity sha512-E2SmpffFPrZhBSgf8ibqanRS2mpuk3FIRDzLDwt7WFpfgJMKDHJs0hmacyP0PS1cWsq0dVkwIIzlscNaterkPg== +electron-to-chromium@^1.4.648: + version "1.4.662" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.662.tgz#0e014d31687210312c5f601bc9edcae2fa1663ef" + integrity sha512-gfl1XVWTQmPHhqEG0kN77SpUxaqPpMb9r83PT4gvKhg7P3irSxru3lW85RxvK1uI1j2CAcTWPjG/HbE0IP/Rtg== emoji-regex@^8.0.0: version "8.0.0" @@ -3589,13 +3582,6 @@ error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -4085,7 +4071,7 @@ get-assigned-identifiers@^1.1.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -4219,11 +4205,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - es-define-property "^1.0.0" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -4248,9 +4234,9 @@ has@^1.0.1: integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hasown@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" - integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: function-bind "^1.1.2" @@ -6175,14 +6161,13 @@ regex-parser@^2.2.11: integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== regexp.prototype.flags@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" regexpu-core@^5.3.1: version "5.3.2" @@ -6455,7 +6440,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-function-length@^1.2.1: +set-function-length@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== @@ -6467,7 +6452,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.1" -set-function-name@^2.0.1: +set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== From 395af17d96c63531463b97cd6a9b27fdefa15f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Feb 2024 19:25:52 +0100 Subject: [PATCH 066/634] Updated dependencies --- composer.lock | 157 +++++++++++++++++---------------- yarn.lock | 236 ++++++++++++++++++++++++++++---------------------- 2 files changed, 216 insertions(+), 177 deletions(-) diff --git a/composer.lock b/composer.lock index b0156d8c..bf0eaea3 100644 --- a/composer.lock +++ b/composer.lock @@ -940,16 +940,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.1", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2", - "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -1033,7 +1033,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.1" + "source": "https://github.com/doctrine/dbal/tree/3.8.2" }, "funding": [ { @@ -1049,7 +1049,7 @@ "type": "tidelift" } ], - "time": "2024-02-03T17:33:49+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", @@ -1100,16 +1100,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.2", + "version": "2.11.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf" + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", - "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/492725310ae9a1b5b20d6ae09fb5ae6404616e68", + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68", "shasum": "" }, "require": { @@ -1199,7 +1199,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.3" }, "funding": [ { @@ -1215,7 +1215,7 @@ "type": "tidelift" } ], - "time": "2024-02-06T15:41:25+00:00" + "time": "2024-02-10T20:56:20+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -2054,7 +2054,7 @@ "issues": "https://github.com/dompdf/dompdf/issues", "source": "https://github.com/dompdf/dompdf/tree/master" }, - "time": "2024-01-12T12:43:38+00:00" + "time": "2024-02-17T20:04:51+00:00" }, { "name": "egulias/email-validator", @@ -3320,16 +3320,16 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.18.0", + "version": "v2.18.1", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6" + "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/2f6c9342c711597e3b5f1f2468910336be5232d6", - "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/1d59f49f164805b45f95f92cf743781bc2ba7d2b", + "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b", "shasum": "" }, "require": { @@ -3374,9 +3374,9 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.0" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.1" }, - "time": "2023-12-18T21:58:12+00:00" + "time": "2024-02-14T17:41:28+00:00" }, { "name": "laminas/laminas-code", @@ -6480,16 +6480,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.5.0", + "version": "v8.5.1", "source": { "type": "git", "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0" + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", - "reference": "4e9a54c2a368fcd73ecc6b45f98c7714b54a7db0", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152", "shasum": "" }, "require": { @@ -6497,7 +6497,6 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4.3", "phpunit/phpunit": "^5.7.27" }, "suggest": { @@ -6506,7 +6505,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.0.x-dev" + "dev-main": "9.0.x-dev" } }, "autoload": { @@ -6521,6 +6520,14 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", @@ -6532,9 +6539,9 @@ ], "support": { "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/8.5.0" + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1" }, - "time": "2024-02-01T00:40:08+00:00" + "time": "2024-02-15T16:41:13+00:00" }, { "name": "scheb/2fa-backup-code", @@ -14193,7 +14200,7 @@ }, { "name": "web-token/jwt-core", - "version": "3.2.9", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/web-token/jwt-core.git", @@ -14257,7 +14264,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-core/tree/3.2.9" + "source": "https://github.com/web-token/jwt-core/tree/3.2.10" }, "funding": [ { @@ -14269,7 +14276,7 @@ }, { "name": "web-token/jwt-signature", - "version": "3.2.9", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/web-token/jwt-signature.git", @@ -14334,7 +14341,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-signature/tree/3.2.9" + "source": "https://github.com/web-token/jwt-signature/tree/3.2.10" }, "funding": [ { @@ -14846,16 +14853,16 @@ }, { "name": "dama/doctrine-test-bundle", - "version": "v8.0.1", + "version": "v8.0.2", "source": { "type": "git", "url": "https://github.com/dmaicher/doctrine-test-bundle.git", - "reference": "e382d27bc03ee04e0fd0ef95391047042792e7cc" + "reference": "f10de294e41570d027a301554a609c394d40e669" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/e382d27bc03ee04e0fd0ef95391047042792e7cc", - "reference": "e382d27bc03ee04e0fd0ef95391047042792e7cc", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/f10de294e41570d027a301554a609c394d40e669", + "reference": "f10de294e41570d027a301554a609c394d40e669", "shasum": "" }, "require": { @@ -14908,9 +14915,9 @@ ], "support": { "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", - "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.0.1" + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v8.0.2" }, - "time": "2023-12-05T16:11:29+00:00" + "time": "2024-02-15T08:28:14+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -15530,16 +15537,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.57", + "version": "1.10.58", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" + "reference": "a23518379ec4defd9e47cbf81019526861623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", + "reference": "a23518379ec4defd9e47cbf81019526861623ec2", "shasum": "" }, "require": { @@ -15588,20 +15595,20 @@ "type": "tidelift" } ], - "time": "2024-01-24T11:51:34+00:00" + "time": "2024-02-12T20:02:57+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.60", + "version": "1.3.62", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca" + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/30cf38dda057a78180c4df1f6f41e33eb49c4eca", - "reference": "30cf38dda057a78180c4df1f6f41e33eb49c4eca", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f3abbd8e93e12fed8091be3aeec216b06bed0950", + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950", "shasum": "" }, "require": { @@ -15618,6 +15625,7 @@ "require-dev": { "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", + "cweagans/composer-patches": "^1.7.3", "doctrine/annotations": "^1.11 || ^2.0", "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", @@ -15657,9 +15665,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.60" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.62" }, - "time": "2024-02-08T09:33:18+00:00" + "time": "2024-02-12T11:52:17+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -16331,12 +16339,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9" + "reference": "3e513f303c13a625befa037a23b5d1ac9bde2a52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", - "reference": "93f700b3ce0a4f87ca3219e591f2f9c85e1d53c9", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3e513f303c13a625befa037a23b5d1ac9bde2a52", + "reference": "3e513f303c13a625befa037a23b5d1ac9bde2a52", "shasum": "" }, "conflict": { @@ -16419,7 +16427,7 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.3", + "concrete5/concrete5": "<9.2.5", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", @@ -16440,7 +16448,7 @@ "dbrisinajumi/d2files": "<1", "dcat/laravel-admin": "<=2.1.3.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", "doctrine/annotations": "<1.2.7", @@ -16455,8 +16463,8 @@ "dolibarr/dolibarr": "<18.0.2", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": "<9.5.11|>=10,<10.0.11|>=10.1,<10.1.4", - "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", "ec-cube/ec-cube": "<2.4.4", @@ -16526,7 +16534,7 @@ "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "getgrav/grav": "<=1.7.42.1", + "getgrav/grav": "<1.7.44", "getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6", "getkirby/kirby": "<=2.5.12", "getkirby/panel": "<2.5.14", @@ -16584,7 +16592,7 @@ "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": ">=2.5.4,<=3.8.12", + "joomla/framework": "<1.5.4|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", @@ -16621,7 +16629,7 @@ "liftkit/database": "<2.13.2", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6|>=3,<3.0.4", + "livewire/livewire": ">2.2.4,<2.2.6", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", @@ -16712,6 +16720,7 @@ "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", @@ -16743,7 +16752,7 @@ "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", "pimcore/pimcore": "<11.1.1", - "pixelfed/pixelfed": "<=0.11.4", + "pixelfed/pixelfed": "<0.11.11", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", @@ -16921,14 +16930,13 @@ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", - "typo3/cms-saltedpasswords": "<0.2.13", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -16985,6 +16993,7 @@ "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", @@ -17059,7 +17068,7 @@ "type": "tidelift" } ], - "time": "2024-02-08T20:04:35+00:00" + "time": "2024-02-16T21:04:04+00:00" }, { "name": "sebastian/cli-parser", @@ -18554,16 +18563,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.10", + "version": "12.1.12", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "67f643befd6997961aa6bd759b4529e94bb18b53" + "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/67f643befd6997961aa6bd759b4529e94bb18b53", - "reference": "67f643befd6997961aa6bd759b4529e94bb18b53", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d87f15506b5200a0098076cdbf6d00913b4e41f5", + "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5", "shasum": "" }, "require": { @@ -18596,7 +18605,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.10" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.12" }, "funding": [ { @@ -18608,7 +18617,7 @@ "type": "github" } ], - "time": "2024-02-05T10:58:24+00:00" + "time": "2024-02-14T10:04:06+00:00" }, { "name": "theseer/tokenizer", @@ -18662,16 +18671,16 @@ }, { "name": "vimeo/psalm", - "version": "5.21.1", + "version": "5.22.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494" + "reference": "e9dad66e11274315dac27e08349c628c7d6a1a43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/8c473e2437be8b6a8fd8f630f0f11a16b114c494", - "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/e9dad66e11274315dac27e08349c628c7d6a1a43", + "reference": "e9dad66e11274315dac27e08349c628c7d6a1a43", "shasum": "" }, "require": { @@ -18694,7 +18703,7 @@ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sebastian/diff": "^4.0 || ^5.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" @@ -18768,7 +18777,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-02-01T01:04:32+00:00" + "time": "2024-02-15T22:52:31+00:00" } ], "aliases": [ diff --git a/yarn.lock b/yarn.lock index 7772983c..270d98dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1529,9 +1529,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.1.tgz#0f4be48f43e96237181b31879258498b9f0d15d6" - integrity sha512-6DdRoFV8p1qM2YxieZ0McSzFfdKHH85FQn3C8UpLDgyD1UDb3ERhUsXg65M6nPuZeHtBZLY4hUumMdaAP0N1+w== + version "8.0.2" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.2.tgz#c31cdadfe66b98983066a94073b26fc7e15835f0" + integrity sha512-3K6QZkwWfosAV8zuM5bY+kKF02jp1lMQGsWfSE6wXdZBRBP3ah+Vj26YNqYtkEomBwRWA0QKhZgyJP7xOQkVEg== "@jbtronics/bs-treeview@^1.0.1": version "1.0.6" @@ -1567,9 +1567,9 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.0.1": version "1.1.2" @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.17.tgz#cdd642d0e62ef3a861f88ddbc2b61e32578a9292" - integrity sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw== + version "20.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" + integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== dependencies: undici-types "~5.26.4" @@ -2503,13 +2503,13 @@ browserify-optional@^1.0.1: ast-types "^0.7.0" browser-resolve "^1.8.1" -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2: - version "4.22.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" - integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001580" - electron-to-chromium "^1.4.648" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -2563,14 +2563,15 @@ cacache@^15.0.5: unique-filename "^1.1.1" call-bind@^1.0.2, call-bind@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.6.tgz#6c46675fc7a5e9de82d75a233d586c8b7ac0d931" - integrity sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: + es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.3" - set-function-length "^1.2.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -2597,10 +2598,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001580: - version "1.0.30001585" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" - integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587: + version "1.0.30001588" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" + integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== chalk@^2.4.2: version "2.4.2" @@ -2882,16 +2883,16 @@ cookie@0.5.0: integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js-compat@^3.31.0, core-js-compat@^3.34.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.35.1.tgz#215247d7edb9e830efa4218ff719beb2803555e2" - integrity sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" + integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== dependencies: - browserslist "^4.22.2" + browserslist "^4.22.3" core-js@^3.23.0: - version "3.35.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.35.1.tgz#9c28f8b7ccee482796f8590cc8d15739eaaf980c" - integrity sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" + integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== core-util-is@~1.0.0: version "1.0.3" @@ -3181,10 +3182,18 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -datatables.net-bs5@>=1.13.4, datatables.net-bs5@^1.10.20: - version "1.13.8" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.8.tgz#807dca4b95c139fe217ed87bd25f3502b1d873d3" - integrity sha512-3B6S8LiKGtUtOsA97SkMddwggrza6JDtubnw1qjFb/mjqDmWO0PC1+QWeUspkLPFQCCbLaSVfXLWMdo44IGEmQ== +datatables.net-bs5@>=1.13.4: + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.0.0.tgz#03fe9c3498d4fd9c588cd161b238e4663937e806" + integrity sha512-/Xx3zkMReK/o2a9lXM4hmUB76WesBV9pA+ps+ZvAipX3mBFqILc5rVmkgpDjkZHGzEKwlE46CAsREKqwaTvQnw== + dependencies: + datatables.net "2.0.0" + jquery ">=1.7" + +datatables.net-bs5@^1.10.20, datatables.net-bs5@^1.13.0: + version "1.13.10" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.10.tgz#5e8b74a15ad31ba6ae13fe7c156d4e4326090ce9" + integrity sha512-6SPQ7NWufVD4+ibxVMHmaWiObz4SGBaNeZglne4m2xwThaWIAPiJ9OQ2QypcN9Y7ap2uU6QVTPvVmorA9CF5fQ== dependencies: datatables.net "1.13.8" jquery ">=1.7" @@ -3199,45 +3208,45 @@ datatables.net-buttons-bs5@^2.2.2: jquery ">=1.7" datatables.net-buttons@>=2.3.6: - version "2.4.2" - resolved "https://registry.yarnpkg.com/datatables.net-buttons/-/datatables.net-buttons-2.4.2.tgz#ceb7204697a1a7932c6dd4e476fd9c9bed81a610" - integrity sha512-ps88Wk6yju8hPyqIPhHZ9xhL+pAfgoiI1nZsyPswvqk84kzcqgj1nmulSSLMYNwFG8awsU8C94gF+Pf+JhDh7g== + version "3.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-buttons/-/datatables.net-buttons-3.0.0.tgz#220fd88e19be3f88b6cb233818ea45a61a9bd19c" + integrity sha512-ThC7/H116bHpDFRK+TbBb/UPcxm+PzQbmnrzUGEq9O0teaA7ClAYIkzzTatKPsOHtf7qGqry5pMxuOTyocJIxQ== dependencies: - datatables.net ">=1.13.4" + datatables.net ">=2.0.0" jquery ">=1.7" datatables.net-colreorder-bs5@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-1.7.0.tgz#443e570eefd7b8bd72209951b4b09ce3236758c8" - integrity sha512-rqTry8MjF4+ImYqn7mqWp54Bf41DfCoqVLV/4RnaM5YZdSfmeQ+Q3Cp3VcL0/CoIDUIcz0MlexzkhSnYU+L9hA== + version "1.7.2" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-1.7.2.tgz#b83916c9c53436681395490ae6bf54406a7b5ae4" + integrity sha512-vVACbltRf04P7lwxSCmC9KNJnpO8OlO7uWtMxM/wStIHmaJerbtGpZwZWorZT9mEbt8qS/YnhOxG3Ju4wF1r7A== dependencies: - datatables.net-bs5 ">=1.13.4" - datatables.net-colreorder ">=1.6.2" + datatables.net-bs5 "^1.13.0" + datatables.net-colreorder "1.7.2" jquery ">=1.7" -datatables.net-colreorder@>=1.6.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-1.7.0.tgz#140bdd1b9fad902edaf89b0ba1b0bcd424c524f3" - integrity sha512-Vyysfxe2kfjeuPJJMGRQ2jHVOfoadyBYKzizbOHzR2bhTVsIYjrbEhUA1H24TISE17SdR77X0RmcUvS/h/Bifw== +datatables.net-colreorder@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-1.7.2.tgz#9806f165048daecb2fe93a482c744efc6e649c06" + integrity sha512-F8TYMFXtWLtsjciwS7hkP/Fbp3XS6WHuHLc+iMFtQqiQmbMo/59GK7YSxKuxSoqTTJU/opaPXQYjODnIuNEc/g== dependencies: - datatables.net ">=1.13.4" + datatables.net "^1.13.0" jquery ">=1.7" datatables.net-fixedheader-bs5@^3.1.5: - version "3.4.0" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-3.4.0.tgz#1c99696afa0efa2742c0ee73f1fb87500847acec" - integrity sha512-x2dTTrsZnm8ah7DJSF40XAiUGEk3oAdBMtrucfZM8TnbU8ekhe+LJAbSj4epDXBr8BAfnVi3KMlfiZKEsa5lRQ== + version "3.4.1" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-3.4.1.tgz#b6e66989fd393983c3df9d5827d3a53ad028b36b" + integrity sha512-A2oDu1dcDzM6tF1IJNFtcnPQ5Vl3wJewyEs9I9/oI/a5P93nAZGbG6F5ZZedE9UDSMfNfCU3MbXYaUYmZEAqrA== dependencies: - datatables.net-bs5 ">=1.13.4" - datatables.net-fixedheader ">=3.3.2" + datatables.net-bs5 "^1.13.0" + datatables.net-fixedheader "3.4.1" jquery ">=1.7" -datatables.net-fixedheader@>=3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-3.4.0.tgz#f08ce3bd63467aa7c11639c13634ef8219ea4b8f" - integrity sha512-qglLTqo/T0IJq0Lp7Ca7wEo50T1iqUO2+YeVG4Ddy6ML5f66B7mLZLzP6yy8zXACFjlRGBDEDxD0ato3g6tviA== +datatables.net-fixedheader@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-3.4.1.tgz#db8b250e7819da989baa5df8c757a5a382754752" + integrity sha512-c9FJAShG5r8RJDIszWQvMFe6Ie+njfbHB9GhzOPjEF7zhbsMUQEkoYq1qW3ppOxY5psadDrT+D3f4iGM589u6w== dependencies: - datatables.net ">=1.13.4" + datatables.net "^1.13.0" jquery ">=1.7" datatables.net-responsive-bs5@^2.2.3: @@ -3250,11 +3259,11 @@ datatables.net-responsive-bs5@^2.2.3: jquery ">=1.7" datatables.net-responsive@>=2.4.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-2.5.0.tgz#56919903646648f362f58c25784794fb89effda1" - integrity sha512-GL7DFiRl5qqrp5ql54Psz92xTGPR0rMcrO3hzNxMfvcfpRGL5zFNTvMpTUh59Erm6u1+KoX+j+Ig1ZD3r0iFsA== + version "3.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-3.0.0.tgz#230382ed4058079164dd3cdfeb2dd08712428e16" + integrity sha512-6O+hZREfZ6bj86bEFOVYH76OgqETX7t0EsfKWwKuo8gpYe50SE9QPcy7DKsuO1swqluwS+442QIVsLfIXoBnNg== dependencies: - datatables.net ">=1.13.4" + datatables.net ">=2.0.0" jquery ">=1.7" datatables.net-select-bs5@^1.2.7: @@ -3267,20 +3276,34 @@ datatables.net-select-bs5@^1.2.7: jquery ">=1.7" datatables.net-select@>=1.6.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/datatables.net-select/-/datatables.net-select-1.7.0.tgz#a108752ee6109a49392d19fec7406c953be11665" - integrity sha512-ps8eL8S2gUV7EdzMraw8mfQlHXpfuc8TC2onBxdk0snP8eizPe85VhpI3r4ULvPRTTI7vcViz8E7JV8aayA2lw== + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-select/-/datatables.net-select-2.0.0.tgz#7c484184d4a6ac660474a580f92ff53ae0532432" + integrity sha512-sKMNoTlJejk5FfZo6Niwdn2/bHSDYiIt5WuMSsXzMGiCTIPtnDiYjNHF843vToKiTTsi+6T0zUuWddHLGPRsxA== dependencies: - datatables.net ">=1.13.4" + datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net@1.13.8, datatables.net@>=1.13.4: +datatables.net@1.13.8: version "1.13.8" resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.8.tgz#05a2fb5a036b0b65b66d1bb1eae0ba018aaea8a3" integrity sha512-2pDamr+GUwPTby2OgriVB9dR9ftFKD2AQyiuCXzZIiG4d9KkKFQ7gqPfNmG7uj9Tc5kDf+rGj86do4LAb/V71g== dependencies: jquery ">=1.7" +datatables.net@2.0.0, datatables.net@>=2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.0.0.tgz#232c45855d78b0019ccea854eaf044e1927118d3" + integrity sha512-HKndZD/qHNZyAhAyC1Bs8S+H652HedZK76xYAjzXR3xDohvxomJ8iWevsoRV4MvHSPgx8GQl3PAdBNpUvn0xJg== + dependencies: + jquery ">=1.7" + +datatables.net@^1.13.0: + version "1.13.10" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.10.tgz#4527e2b5428394732331c8b7db8fa20a56c0cc7b" + integrity sha512-lVjpXGX9VzOpiPYnJ/KxOsYMAVa3oc3UniYGGo6pLBVCyajzMo80yisgXRz8J392wkZOc3bpp6VPs2pDbpKlyw== + dependencies: + jquery ">=1.7" + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -3330,21 +3353,20 @@ default-gateway@^6.0.3: execa "^5.0.0" define-data-property@^1.0.1, define-data-property@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.2.tgz#f3c33b4f0102360cd7c0f5f28700f5678510b63a" - integrity sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: + es-define-property "^1.0.0" es-errors "^1.3.0" - get-intrinsic "^1.2.2" gopd "^1.0.1" - has-property-descriptors "^1.0.1" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.0: +define-properties@^1.1.3, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3520,10 +3542,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.648: - version "1.4.662" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.662.tgz#0e014d31687210312c5f601bc9edcae2fa1663ef" - integrity sha512-gfl1XVWTQmPHhqEG0kN77SpUxaqPpMb9r83PT4gvKhg7P3irSxru3lW85RxvK1uI1j2CAcTWPjG/HbE0IP/Rtg== +electron-to-chromium@^1.4.668: + version "1.4.673" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" + integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== emoji-regex@^8.0.0: version "8.0.0" @@ -3582,6 +3604,13 @@ error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -4071,7 +4100,7 @@ get-assigned-identifiers@^1.1.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -4205,11 +4234,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.2.2" + es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.1" @@ -4234,9 +4263,9 @@ has@^1.0.1: integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== dependencies: function-bind "^1.1.2" @@ -4798,9 +4827,9 @@ lilconfig@^2.0.3: integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lilconfig@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" - integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== lines-and-columns@^1.1.6: version "1.2.4" @@ -6161,13 +6190,14 @@ regex-parser@^2.2.11: integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpu-core@^5.3.1: version "5.3.2" @@ -6440,7 +6470,7 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-function-length@^1.2.0: +set-function-length@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== @@ -6452,7 +6482,7 @@ set-function-length@^1.2.0: gopd "^1.0.1" has-property-descriptors "^1.0.1" -set-function-name@^2.0.0: +set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== @@ -6861,9 +6891,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.26.0, terser@^5.3.4: - version "5.27.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.0.tgz#70108689d9ab25fef61c4e93e808e9fd092bf20c" - integrity sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A== + version "5.27.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.1.tgz#b0092975ea1b379d166088a1a57e32f0839d84a2" + integrity sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -7311,9 +7341,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.74.0: - version "5.90.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.1.tgz#62ab0c097d7cbe83d32523dbfbb645cdb7c3c01c" - integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== + version "5.90.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.2.tgz#189686a8a292427076db9907d495625345805fab" + integrity sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" From 67a1d06f379138d614e24a5d1274354fe2aab064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Feb 2024 19:32:54 +0100 Subject: [PATCH 067/634] Updated datatables version --- package.json | 13 +++--- yarn.lock | 112 +++++++++++++++++++++------------------------------ 2 files changed, 52 insertions(+), 73 deletions(-) diff --git a/package.json b/package.json index 39b5783a..8a9d78fe 100644 --- a/package.json +++ b/package.json @@ -74,12 +74,13 @@ "bs-custom-file-input": "^1.3.4", "clipboard": "^2.0.4", "compression-webpack-plugin": "^10.0.0", - "datatables.net-bs5": "^1.10.20", - "datatables.net-buttons-bs5": "^2.2.2", - "datatables.net-colreorder-bs5": "^1.5.1", - "datatables.net-fixedheader-bs5": "^3.1.5", - "datatables.net-responsive-bs5": "^2.2.3", - "datatables.net-select-bs5": "^1.2.7", + "datatables.net": "^2.0.0", + "datatables.net-bs5": "^2.0.0", + "datatables.net-buttons-bs5": "^3.0.0", + "datatables.net-colreorder-bs5": "^2.0.0", + "datatables.net-fixedheader-bs5": "^4.0.0", + "datatables.net-responsive-bs5": "^3.0.0", + "datatables.net-select-bs5": "^2.0.0", "dompurify": "^3.0.3", "emoji.json": "^15.0.0", "exports-loader": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index 270d98dd..cf950cbe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3182,7 +3182,7 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -datatables.net-bs5@>=1.13.4: +datatables.net-bs5@>=2.0.0, datatables.net-bs5@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-2.0.0.tgz#03fe9c3498d4fd9c588cd161b238e4663937e806" integrity sha512-/Xx3zkMReK/o2a9lXM4hmUB76WesBV9pA+ps+ZvAipX3mBFqILc5rVmkgpDjkZHGzEKwlE46CAsREKqwaTvQnw== @@ -3190,24 +3190,16 @@ datatables.net-bs5@>=1.13.4: datatables.net "2.0.0" jquery ">=1.7" -datatables.net-bs5@^1.10.20, datatables.net-bs5@^1.13.0: - version "1.13.10" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.10.tgz#5e8b74a15ad31ba6ae13fe7c156d4e4326090ce9" - integrity sha512-6SPQ7NWufVD4+ibxVMHmaWiObz4SGBaNeZglne4m2xwThaWIAPiJ9OQ2QypcN9Y7ap2uU6QVTPvVmorA9CF5fQ== +datatables.net-buttons-bs5@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-3.0.0.tgz#e70e3e8ef23d0a441fa947bd42246ab469af47b5" + integrity sha512-NalJNhnkVpuiqVVwFe2mKteDrzfTIJTirZrws4w+YtZq9ICgMhl9VUzh0tYUILvvO22vaqs8dN7lekn5FUa3dA== dependencies: - datatables.net "1.13.8" + datatables.net-bs5 ">=2.0.0" + datatables.net-buttons "3.0.0" jquery ">=1.7" -datatables.net-buttons-bs5@^2.2.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-2.4.2.tgz#0878bfa6ec33f21325becac1dab9600324ac95a4" - integrity sha512-FIapzeW8zBZJ6/yjnbXn22gjk0ONSLykFRfxiU5w1Zjnn2e3fPSi/xN9l9NagRXFvRO80zacC4nYmYOc2cXKfg== - dependencies: - datatables.net-bs5 ">=1.13.4" - datatables.net-buttons ">=2.3.6" - jquery ">=1.7" - -datatables.net-buttons@>=2.3.6: +datatables.net-buttons@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/datatables.net-buttons/-/datatables.net-buttons-3.0.0.tgz#220fd88e19be3f88b6cb233818ea45a61a9bd19c" integrity sha512-ThC7/H116bHpDFRK+TbBb/UPcxm+PzQbmnrzUGEq9O0teaA7ClAYIkzzTatKPsOHtf7qGqry5pMxuOTyocJIxQ== @@ -3215,50 +3207,50 @@ datatables.net-buttons@>=2.3.6: datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net-colreorder-bs5@^1.5.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-1.7.2.tgz#b83916c9c53436681395490ae6bf54406a7b5ae4" - integrity sha512-vVACbltRf04P7lwxSCmC9KNJnpO8OlO7uWtMxM/wStIHmaJerbtGpZwZWorZT9mEbt8qS/YnhOxG3Ju4wF1r7A== +datatables.net-colreorder-bs5@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-2.0.0.tgz#01d586e6939234bd69cd6ac01d9b0afd97e6d2c1" + integrity sha512-DbEriiQTJgP6J78d/NapGfIC8egmweP5Sj/brqK5jrr1UYJeJT2TZQNheca05h/VtYQMP71lO1Z7qwBSf8m+jA== dependencies: - datatables.net-bs5 "^1.13.0" - datatables.net-colreorder "1.7.2" + datatables.net-bs5 ">=2.0.0" + datatables.net-colreorder "2.0.0" jquery ">=1.7" -datatables.net-colreorder@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-1.7.2.tgz#9806f165048daecb2fe93a482c744efc6e649c06" - integrity sha512-F8TYMFXtWLtsjciwS7hkP/Fbp3XS6WHuHLc+iMFtQqiQmbMo/59GK7YSxKuxSoqTTJU/opaPXQYjODnIuNEc/g== +datatables.net-colreorder@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-colreorder/-/datatables.net-colreorder-2.0.0.tgz#957c915cedafb22b55a798de9e557b932e10e1f0" + integrity sha512-ZsDHKxisGbdBh2IEb+AC6O3LgkBoibCbdXaZKBK6SBUEul085Zt3NUFmieTljXVkDWdewSLg4IvhkE8zKzQjVQ== dependencies: - datatables.net "^1.13.0" + datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net-fixedheader-bs5@^3.1.5: - version "3.4.1" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-3.4.1.tgz#b6e66989fd393983c3df9d5827d3a53ad028b36b" - integrity sha512-A2oDu1dcDzM6tF1IJNFtcnPQ5Vl3wJewyEs9I9/oI/a5P93nAZGbG6F5ZZedE9UDSMfNfCU3MbXYaUYmZEAqrA== +datatables.net-fixedheader-bs5@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-4.0.0.tgz#4fdf6b3ff76757896bd990aa5254e67cdc07b13b" + integrity sha512-7FZyjsAhSu02kosqnXVMEunsno2iLahcYGRnxc3gpfS5STsXeWwrOYU//r44ytXR7UMh7FHwHNCuKxBn2iEyiA== dependencies: - datatables.net-bs5 "^1.13.0" - datatables.net-fixedheader "3.4.1" + datatables.net-bs5 ">=2.0.0" + datatables.net-fixedheader "4.0.0" jquery ">=1.7" -datatables.net-fixedheader@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-3.4.1.tgz#db8b250e7819da989baa5df8c757a5a382754752" - integrity sha512-c9FJAShG5r8RJDIszWQvMFe6Ie+njfbHB9GhzOPjEF7zhbsMUQEkoYq1qW3ppOxY5psadDrT+D3f4iGM589u6w== +datatables.net-fixedheader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-fixedheader/-/datatables.net-fixedheader-4.0.0.tgz#ee9f8d89d42c48540ff09d19f9c8539a97797f03" + integrity sha512-Fw9hfN3nicI9RR23yaW+dynwaFYHBTmDwL0CwuVYMZoDcAqzWICBQKLrzx0m3TobdVfp6g0sL5vt3ORZDLwygA== dependencies: - datatables.net "^1.13.0" + datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net-responsive-bs5@^2.2.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-2.5.0.tgz#62a2702147f1a95f5949cc34e3482db943f67108" - integrity sha512-GklXpvBKOal11chL9l8RiQsvKYEZwxKA50pgwlkrbxrmRmqMH7+sMvLSE42QQCa5E5fWqtYsYdTY+SNkHfa+qA== +datatables.net-responsive-bs5@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-3.0.0.tgz#b30b6efbeecc5ec7908e25ab0a6eda96f6ef906f" + integrity sha512-heAN/DN9jNWBNBQFdc4fqccyy3KGoj29YtZWH+N78/aKICGMGQmi0PjgRz+lS6lqdBynGvD8ej5514E7b5nTRw== dependencies: - datatables.net-bs5 ">=1.13.4" - datatables.net-responsive ">=2.4.1" + datatables.net-bs5 ">=2.0.0" + datatables.net-responsive "3.0.0" jquery ">=1.7" -datatables.net-responsive@>=2.4.1: +datatables.net-responsive@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/datatables.net-responsive/-/datatables.net-responsive-3.0.0.tgz#230382ed4058079164dd3cdfeb2dd08712428e16" integrity sha512-6O+hZREfZ6bj86bEFOVYH76OgqETX7t0EsfKWwKuo8gpYe50SE9QPcy7DKsuO1swqluwS+442QIVsLfIXoBnNg== @@ -3266,16 +3258,16 @@ datatables.net-responsive@>=2.4.1: datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net-select-bs5@^1.2.7: - version "1.7.0" - resolved "https://registry.yarnpkg.com/datatables.net-select-bs5/-/datatables.net-select-bs5-1.7.0.tgz#5baff0d95f579135cbece3d324d99badc3f73db1" - integrity sha512-9lDH+V+9ewaVSpKUFMplmpxEBM6eeUl0C+feGD4BRKkrFhMAzVYfuLibm4/gJvG0burQciO9U9eoLI9ywdiWWw== +datatables.net-select-bs5@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/datatables.net-select-bs5/-/datatables.net-select-bs5-2.0.0.tgz#5eb4c5df40a474507935c5afb3d49ef01b5887b6" + integrity sha512-/kofh8KjUEzoHQ+Zji8movbzA3Ooe9Gz/UcjSJzc5CMHEq93gvcDT9x5jtRGBXO8zjQO0XWrXxFxkXoRO1SlAw== dependencies: - datatables.net-bs5 ">=1.13.4" - datatables.net-select ">=1.6.2" + datatables.net-bs5 ">=2.0.0" + datatables.net-select "2.0.0" jquery ">=1.7" -datatables.net-select@>=1.6.2: +datatables.net-select@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/datatables.net-select/-/datatables.net-select-2.0.0.tgz#7c484184d4a6ac660474a580f92ff53ae0532432" integrity sha512-sKMNoTlJejk5FfZo6Niwdn2/bHSDYiIt5WuMSsXzMGiCTIPtnDiYjNHF843vToKiTTsi+6T0zUuWddHLGPRsxA== @@ -3283,27 +3275,13 @@ datatables.net-select@>=1.6.2: datatables.net ">=2.0.0" jquery ">=1.7" -datatables.net@1.13.8: - version "1.13.8" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.8.tgz#05a2fb5a036b0b65b66d1bb1eae0ba018aaea8a3" - integrity sha512-2pDamr+GUwPTby2OgriVB9dR9ftFKD2AQyiuCXzZIiG4d9KkKFQ7gqPfNmG7uj9Tc5kDf+rGj86do4LAb/V71g== - dependencies: - jquery ">=1.7" - -datatables.net@2.0.0, datatables.net@>=2.0.0: +datatables.net@2.0.0, datatables.net@>=2.0.0, datatables.net@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-2.0.0.tgz#232c45855d78b0019ccea854eaf044e1927118d3" integrity sha512-HKndZD/qHNZyAhAyC1Bs8S+H652HedZK76xYAjzXR3xDohvxomJ8iWevsoRV4MvHSPgx8GQl3PAdBNpUvn0xJg== dependencies: jquery ">=1.7" -datatables.net@^1.13.0: - version "1.13.10" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.10.tgz#4527e2b5428394732331c8b7db8fa20a56c0cc7b" - integrity sha512-lVjpXGX9VzOpiPYnJ/KxOsYMAVa3oc3UniYGGo6pLBVCyajzMo80yisgXRz8J392wkZOc3bpp6VPs2pDbpKlyw== - dependencies: - jquery ">=1.7" - debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" From 51900b4b62ac46ba7b71503013995366907a30de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Feb 2024 19:58:13 +0100 Subject: [PATCH 068/634] Fixed visual bugs introduced by the datatables upgrade --- assets/css/app/tables.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/assets/css/app/tables.css b/assets/css/app/tables.css index bc097726..24da40c2 100644 --- a/assets/css/app/tables.css +++ b/assets/css/app/tables.css @@ -84,7 +84,7 @@ th.select-checkbox { * Datatables definitions/overrides ********************************************************************/ -.dataTables_length { +.dt-length { display: inline-flex; } @@ -94,6 +94,11 @@ table.dataTable tr.selected td.select-checkbox:after margin-top: -20px !important; } +/** Show pagination right aligned */ +.dt-paging .pagination { + justify-content: flex-end; +} + /****************************************************** Classes for Datatables export @@ -132,6 +137,7 @@ table.dataTable > thead > tr > th.select-checkbox:before { table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > th.select-checkbox:before { border: 2px solid var(--bs-tertiary-color) !important; + font-weight: bold; } table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after, table.dataTable > tbody > tr > th.select-checkbox:before, table.dataTable > tbody > tr > th.select-checkbox:after { @@ -142,6 +148,7 @@ table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbod table.dataTable > thead > tr.selected > th.select-checkbox:after { content: "✓"; font-size: 20px; + font-weight: bold; margin-top: -20px; margin-left: -6px; text-align: center; From d7e68605c97f3affddd61841a9c990b99eb33240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Feb 2024 20:10:52 +0100 Subject: [PATCH 069/634] Fixed row coloring issue with the new datatables --- assets/css/app/tables.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/css/app/tables.css b/assets/css/app/tables.css index 24da40c2..dd633f65 100644 --- a/assets/css/app/tables.css +++ b/assets/css/app/tables.css @@ -99,6 +99,11 @@ table.dataTable tr.selected td.select-checkbox:after justify-content: flex-end; } +/** Fix table row coloring */ +table.table.dataTable > :not(caption) > * > * { + background-color: var(--bs-table-bg); +} + /****************************************************** Classes for Datatables export From e9d03a0c95cde370be908e7f03cbf9a2359ec8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 18 Feb 2024 20:31:31 +0100 Subject: [PATCH 070/634] Fixed "Loading..." message on datatables with no content --- .../elements/datatables/datatables_controller.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/controllers/elements/datatables/datatables_controller.js b/assets/controllers/elements/datatables/datatables_controller.js index c53db751..f6c1f69f 100644 --- a/assets/controllers/elements/datatables/datatables_controller.js +++ b/assets/controllers/elements/datatables/datatables_controller.js @@ -145,6 +145,12 @@ export default class extends Controller { //Fix height of the length selector promise.then((dt) => { + + //Draw the rows to make sure the correct status text is displayed ("No matching records found" instead of "Loading...") + if (dt.data().length === 0) { + dt.rows().draw() + } + //Find all length selectors (select with name dt_length), which are inside a label const lengthSelectors = document.querySelectorAll('label select[name="dt_length"]'); //And remove the surrounding label, while keeping the select with all event handlers From 49034fabf292657141ea053f6ef45cf063c54f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 19 Feb 2024 00:01:16 +0100 Subject: [PATCH 071/634] Added phpstan template annotations to Voters to fix phpstan issues --- src/Security/Voter/AttachmentVoter.php | 3 +++ src/Security/Voter/BOMEntryVoter.php | 3 +++ src/Security/Voter/GroupVoter.php | 3 +++ src/Security/Voter/HasAccessPermissionsVoter.php | 1 + src/Security/Voter/ImpersonateUserVoter.php | 5 +++++ src/Security/Voter/LabelProfileVoter.php | 3 +++ src/Security/Voter/LogEntryVoter.php | 3 +++ src/Security/Voter/OrderdetailVoter.php | 3 +++ src/Security/Voter/ParameterVoter.php | 3 +++ src/Security/Voter/PartAssociationVoter.php | 1 + src/Security/Voter/PartLotVoter.php | 3 +++ src/Security/Voter/PartVoter.php | 2 ++ src/Security/Voter/PermissionVoter.php | 1 + src/Security/Voter/PricedetailVoter.php | 3 +++ src/Security/Voter/StructureVoter.php | 3 +++ src/Security/Voter/UserVoter.php | 3 +++ 16 files changed, 43 insertions(+) diff --git a/src/Security/Voter/AttachmentVoter.php b/src/Security/Voter/AttachmentVoter.php index 85a7eb1f..3a576ff2 100644 --- a/src/Security/Voter/AttachmentVoter.php +++ b/src/Security/Voter/AttachmentVoter.php @@ -45,6 +45,9 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; use function in_array; +/** + * @phpstan-extends Voter + */ final class AttachmentVoter extends Voter { private const ALLOWED_ATTRIBUTES = ['read', 'view', 'edit', 'delete', 'create', 'show_private', 'show_history']; diff --git a/src/Security/Voter/BOMEntryVoter.php b/src/Security/Voter/BOMEntryVoter.php index f83e2eb3..121c8172 100644 --- a/src/Security/Voter/BOMEntryVoter.php +++ b/src/Security/Voter/BOMEntryVoter.php @@ -29,6 +29,9 @@ use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ class BOMEntryVoter extends Voter { diff --git a/src/Security/Voter/GroupVoter.php b/src/Security/Voter/GroupVoter.php index 96ae20d0..af6adeaa 100644 --- a/src/Security/Voter/GroupVoter.php +++ b/src/Security/Voter/GroupVoter.php @@ -28,6 +28,9 @@ use App\Services\UserSystem\VoterHelper; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class GroupVoter extends Voter { diff --git a/src/Security/Voter/HasAccessPermissionsVoter.php b/src/Security/Voter/HasAccessPermissionsVoter.php index 16639d2f..25a11cc8 100644 --- a/src/Security/Voter/HasAccessPermissionsVoter.php +++ b/src/Security/Voter/HasAccessPermissionsVoter.php @@ -32,6 +32,7 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; /** * This voter implements a virtual role, which can be used if the user has any permission set to allowed. * We use this to restrict access to the homepage. + * @phpstan-extends Voter */ final class HasAccessPermissionsVoter extends Voter { diff --git a/src/Security/Voter/ImpersonateUserVoter.php b/src/Security/Voter/ImpersonateUserVoter.php index eebcfcc3..bbfa0794 100644 --- a/src/Security/Voter/ImpersonateUserVoter.php +++ b/src/Security/Voter/ImpersonateUserVoter.php @@ -30,6 +30,11 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; use Symfony\Component\Security\Core\User\UserInterface; +/** + * This voter implements a virtual role, which can be used if the user has any permission set to allowed. + * We use this to restrict access to the homepage. + * @phpstan-extends Voter + */ final class ImpersonateUserVoter extends Voter { diff --git a/src/Security/Voter/LabelProfileVoter.php b/src/Security/Voter/LabelProfileVoter.php index acccd435..9abaa8bf 100644 --- a/src/Security/Voter/LabelProfileVoter.php +++ b/src/Security/Voter/LabelProfileVoter.php @@ -47,6 +47,9 @@ use App\Services\UserSystem\VoterHelper; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class LabelProfileVoter extends Voter { protected const MAPPING = [ diff --git a/src/Security/Voter/LogEntryVoter.php b/src/Security/Voter/LogEntryVoter.php index 6b6bbb42..bc898d2a 100644 --- a/src/Security/Voter/LogEntryVoter.php +++ b/src/Security/Voter/LogEntryVoter.php @@ -31,6 +31,9 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class LogEntryVoter extends Voter { final public const ALLOWED_OPS = ['read', 'show_details', 'delete']; diff --git a/src/Security/Voter/OrderdetailVoter.php b/src/Security/Voter/OrderdetailVoter.php index 6c16cf42..b260ec19 100644 --- a/src/Security/Voter/OrderdetailVoter.php +++ b/src/Security/Voter/OrderdetailVoter.php @@ -51,6 +51,9 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class OrderdetailVoter extends Voter { public function __construct(private readonly Security $security, private readonly VoterHelper $helper) diff --git a/src/Security/Voter/ParameterVoter.php b/src/Security/Voter/ParameterVoter.php index 6699b56f..02f97147 100644 --- a/src/Security/Voter/ParameterVoter.php +++ b/src/Security/Voter/ParameterVoter.php @@ -44,6 +44,9 @@ use RuntimeException; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class ParameterVoter extends Voter { diff --git a/src/Security/Voter/PartAssociationVoter.php b/src/Security/Voter/PartAssociationVoter.php index e6e6abdb..7678b67a 100644 --- a/src/Security/Voter/PartAssociationVoter.php +++ b/src/Security/Voter/PartAssociationVoter.php @@ -51,6 +51,7 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; /** * This voter handles permissions for part associations. * The permissions are inherited from the part. + * @phpstan-extends Voter */ final class PartAssociationVoter extends Voter { diff --git a/src/Security/Voter/PartLotVoter.php b/src/Security/Voter/PartLotVoter.php index e4bfeddd..9968fbd3 100644 --- a/src/Security/Voter/PartLotVoter.php +++ b/src/Security/Voter/PartLotVoter.php @@ -51,6 +51,9 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class PartLotVoter extends Voter { public function __construct(private readonly Security $security, private readonly VoterHelper $helper) diff --git a/src/Security/Voter/PartVoter.php b/src/Security/Voter/PartVoter.php index ec849bf4..87843135 100644 --- a/src/Security/Voter/PartVoter.php +++ b/src/Security/Voter/PartVoter.php @@ -32,6 +32,8 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; * A Voter that votes on Part entities. * * See parts permissions for valid operations. + * + * @phpstan-extends Voter */ final class PartVoter extends Voter { diff --git a/src/Security/Voter/PermissionVoter.php b/src/Security/Voter/PermissionVoter.php index f6613cfc..e7a1caed 100644 --- a/src/Security/Voter/PermissionVoter.php +++ b/src/Security/Voter/PermissionVoter.php @@ -31,6 +31,7 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; * This voter allows you to directly check permissions from the permission structure, without passing an object. * This use the syntax like "@permission.op" * However you should use the "normal" object based voters if possible, because they are needed for a future ACL system. + * @phpstan-extends Voter */ final class PermissionVoter extends Voter { diff --git a/src/Security/Voter/PricedetailVoter.php b/src/Security/Voter/PricedetailVoter.php index 3dc8fc41..6ee412c7 100644 --- a/src/Security/Voter/PricedetailVoter.php +++ b/src/Security/Voter/PricedetailVoter.php @@ -52,6 +52,9 @@ use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; +/** + * @phpstan-extends Voter + */ final class PricedetailVoter extends Voter { public function __construct(private readonly Security $security, private readonly VoterHelper $helper) diff --git a/src/Security/Voter/StructureVoter.php b/src/Security/Voter/StructureVoter.php index 7b68215f..24f4d04f 100644 --- a/src/Security/Voter/StructureVoter.php +++ b/src/Security/Voter/StructureVoter.php @@ -39,6 +39,9 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; use function get_class; use function is_object; +/** + * @phpstan-extends Voter + */ final class StructureVoter extends Voter { protected const OBJ_PERM_MAP = [ diff --git a/src/Security/Voter/UserVoter.php b/src/Security/Voter/UserVoter.php index a06f098c..e6bfd5fb 100644 --- a/src/Security/Voter/UserVoter.php +++ b/src/Security/Voter/UserVoter.php @@ -30,6 +30,9 @@ use Symfony\Component\Security\Core\Authorization\Voter\Voter; use function in_array; +/** + * @phpstan-extends Voter + */ final class UserVoter extends Voter { public function __construct(private readonly VoterHelper $helper, private readonly PermissionManager $resolver) From e3e562a1549f9abb31bb660f39d9a139580dd6c8 Mon Sep 17 00:00:00 2001 From: Nexrem Date: Thu, 22 Feb 2024 15:12:40 +0100 Subject: [PATCH 072/634] Add LCSC Info Provider using their public API --- .../Providers/LCSCProvider.php | 301 ++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100755 src/Services/InfoProviderSystem/Providers/LCSCProvider.php diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php new file mode 100755 index 00000000..03b690d0 --- /dev/null +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -0,0 +1,301 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\InfoProviderSystem\Providers; + +use App\Entity\Parts\ManufacturingStatus; +use App\Form\InfoProviderSystem\ProviderSelectType; +use App\Services\InfoProviderSystem\DTOs\FileDTO; +use App\Services\InfoProviderSystem\DTOs\ParameterDTO; +use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; +use App\Services\InfoProviderSystem\DTOs\PriceDTO; +use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; +use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; +use Symfony\Contracts\HttpClient\HttpClientInterface; + +class LCSCProvider implements InfoProviderInterface +{ + + private const ENDPOINT_URL = 'https://wmsc.lcsc.com/wmsc'; + + public const DISTRIBUTOR_NAME = 'LCSC'; + + public function __construct(private readonly HttpClientInterface $lcscClient) + { + + } + + public function getProviderInfo(): array + { + return [ + 'name' => 'LCSC', + 'description' => 'This provider uses the LCSC API to search for parts.', + 'url' => 'https://www.lcsc.com/', + 'disabled_help' => 'This provider is enabled by default' + ]; + } + + public function getProviderKey(): string + { + return 'lcsc'; + } + + // This provider is always active + public function isActive(): bool + { + return true; + } + + /** + * @param string $id + * @return PartDetailDTO + */ + private function queryDetail(string $id): PartDetailDTO + { + $response = $this->lcscClient->request('GET', self::ENDPOINT_URL . "/product/detail", [ + 'query' => [ + 'productCode' => $id, + ], + ]); + + $arr = $response->toArray(); + $product = $arr['result'] ?? null; + + if ($product == null) + { + throw new \RuntimeException('Could not find product code: ' . $id); + } + + $dto = $this->getPartDetail($product); + + return $dto; + } + + /** + * @param string $term + * @return PartDetailDTO[] + */ + private function queryByTerm(string $term): array + { + $response = $this->lcscClient->request('GET', self::ENDPOINT_URL . "/search/global", [ + 'query' => [ + 'keyword' => $term, + ], + ]); + + $arr = $response->toArray(); + + // Get products list + $products = $arr['result']['productSearchResultVO']['productList'] ?? []; + // Get product tip + $tipProductCode = $arr['result']['tipProductDetailUrlVO']['productCode'] ?? null; + + $result = []; + + // LCSC does not display LCSC codes in the search, instead taking you directly to the + // detailed product listing. It does so utilizing a product tip field. + // If product tip exists and there are no products in the product list try a detail query + if (count($products) == 0 && !($tipProductCode == null)) { + $result[] = $this->queryDetail($tipProductCode); + } + + foreach ($products as $product) { + $result[] = $this->getPartDetail($product); + } + + return $result; + } + + /** + * Takes a deserialized json object of the product and returns a PartDetailDTO + * @param array $product + * @return PartDetailDTO + */ + function getPartDetail($product): PartDetailDTO + { + // Get product images in advance + $product_images = $this->getProductImages($product['productImages'] ?? null); + $product['productImageUrl'] = $product['productImageUrl'] ?? null; + + // If the product does not have a product image but otherwise has attached images, use the first one. + if (count($product_images) > 0) { + $product['productImageUrl'] = $product['productImageUrl'] ?? $product_images[0]->url; + } + + // LCSC puts HTML in footprints and descriptions sometimes randomly + $footprint = $product["encapStandard"] ?? null; + if ($footprint != null) { + $footprint = strip_tags($footprint); + } + + $part_detail = new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: $product['productCode'], + name: $product['productModel'], + description: strip_tags($product['productIntroEn']), + manufacturer: $product['brandNameEn'], + mpn: $product['productModel'] ?? null, + preview_image_url: $product['productImageUrl'], + manufacturing_status: null, + provider_url: $this->getProductShortURL($product['productCode']), + datasheets: $this->getProductDatasheets($product['pdfUrl'] ?? null), + parameters: $this->attributesToParameters($product['paramVOList'] ?? []), + vendor_infos: $this->pricesToVendorInfo($product['productCode'], $this->getProductShortURL($product['productCode']), $product['productPriceList'] ?? []), + footprint: $footprint, + images: $product_images, + mass: $product['weight'] ?? null, + ); + + return $part_detail; + } + + /** + * Converts the price array to a VendorInfoDTO array to be used in the PartDetailDTO + * @param string $sku + * @param string $url + * @param array $prices + * @return array + */ + private function pricesToVendorInfo(string $sku, string $url, array $prices): array + { + $price_dtos = []; + + foreach ($prices as $price) { + $price_dtos[] = new PriceDTO( + minimum_discount_amount: $price['ladder'], + price: $price['productPrice'], + currency_iso_code: $this->getUsedCurrency($price['currencySymbol']), + includes_tax: false, + ); + } + + return [ + new PurchaseInfoDTO( + distributor_name: self::DISTRIBUTOR_NAME, + order_number: $sku, + prices: $price_dtos, + product_url: $url, + ) + ]; + } + + /** + * Converts LCSC currency symbol to an ISO code. Have not seen LCSC provide other currencies other than USD yet. + * @param string $currency + * @return string + */ + private function getUsedCurrency(string $currency): string + { + //Decide based on the currency symbol + return match ($currency) { + 'US$' => 'USD', + default => throw new \RuntimeException('Unknown currency: ' . $currency) + }; + } + + /** + * Returns a valid LCSC product short URL from product code + * @param string $product_code + * @return string + */ + private function getProductShortURL($product_code): string + { + return 'https://www.lcsc.com/product-detail/' . $product_code .'.html'; + } + + /** + * Returns a product datasheet FileDTO array from a single pdf url + * @param string $url + * @return FileDTO[] + */ + private function getProductDatasheets($url): array + { + if ($url == null) { + return []; + } + + return [new FileDTO($url, null)]; + } + + /** + * Returns a FileDTO array with a list of product images + * @param array $images + * @return FileDTO[] + */ + private function getProductImages($images): array + { + $result = []; + foreach ($images as $image) { + $result[] = new FileDTO($image); + } + + return $result; + } + + /** + * @param array|null $attributes + * @return ParameterDTO[] + */ + private function attributesToParameters(?array $attributes): array + { + $result = []; + + foreach ($attributes as $attribute) { + + $result[] = ParameterDTO::parseValueField(name: $attribute['paramNameEn'], value: $attribute['paramValueEn'], unit: null, group: null); + } + + return $result; + } + + public function searchByKeyword(string $keyword): array + { + return $this->queryByTerm($keyword); + } + + public function getDetails(string $id): PartDetailDTO + { + $tmp = $this->queryByTerm($id); + if (count($tmp) === 0) { + throw new \RuntimeException('No part found with ID ' . $id); + } + + if (count($tmp) > 1) { + throw new \RuntimeException('Multiple parts found with ID ' . $id); + } + + return $tmp[0]; + } + + public function getCapabilities(): array + { + return [ + ProviderCapabilities::BASIC, + ProviderCapabilities::PICTURE, + ProviderCapabilities::DATASHEET, + ProviderCapabilities::PRICE, + ProviderCapabilities::FOOTPRINT, + ]; + } +} \ No newline at end of file From 0bbfaf9893dbb91efa492fcf9a11e9a74de8e752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 22 Feb 2024 22:41:09 +0100 Subject: [PATCH 073/634] Improved typing and formatting of LCSC provider slightly --- .../Providers/LCSCProvider.php | 78 ++++++++----------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index 03b690d0..0855cb78 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -24,13 +24,10 @@ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; -use App\Entity\Parts\ManufacturingStatus; -use App\Form\InfoProviderSystem\ProviderSelectType; use App\Services\InfoProviderSystem\DTOs\FileDTO; use App\Services\InfoProviderSystem\DTOs\ParameterDTO; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\PriceDTO; -use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; use Symfony\Contracts\HttpClient\HttpClientInterface; @@ -60,7 +57,7 @@ class LCSCProvider implements InfoProviderInterface { return 'lcsc'; } - + // This provider is always active public function isActive(): bool { @@ -82,14 +79,11 @@ class LCSCProvider implements InfoProviderInterface $arr = $response->toArray(); $product = $arr['result'] ?? null; - if ($product == null) - { + if ($product === null) { throw new \RuntimeException('Could not find product code: ' . $id); } - $dto = $this->getPartDetail($product); - - return $dto; + return $this->getPartDetail($product); } /** @@ -105,7 +99,7 @@ class LCSCProvider implements InfoProviderInterface ]); $arr = $response->toArray(); - + // Get products list $products = $arr['result']['productSearchResultVO']['productList'] ?? []; // Get product tip @@ -116,7 +110,7 @@ class LCSCProvider implements InfoProviderInterface // LCSC does not display LCSC codes in the search, instead taking you directly to the // detailed product listing. It does so utilizing a product tip field. // If product tip exists and there are no products in the product list try a detail query - if (count($products) == 0 && !($tipProductCode == null)) { + if (count($products) === 0 && !($tipProductCode === null)) { $result[] = $this->queryDetail($tipProductCode); } @@ -132,7 +126,7 @@ class LCSCProvider implements InfoProviderInterface * @param array $product * @return PartDetailDTO */ - function getPartDetail($product): PartDetailDTO + private function getPartDetail(array $product): PartDetailDTO { // Get product images in advance $product_images = $this->getProductImages($product['productImages'] ?? null); @@ -145,29 +139,27 @@ class LCSCProvider implements InfoProviderInterface // LCSC puts HTML in footprints and descriptions sometimes randomly $footprint = $product["encapStandard"] ?? null; - if ($footprint != null) { + if ($footprint !== null) { $footprint = strip_tags($footprint); } - $part_detail = new PartDetailDTO( - provider_key: $this->getProviderKey(), - provider_id: $product['productCode'], - name: $product['productModel'], - description: strip_tags($product['productIntroEn']), - manufacturer: $product['brandNameEn'], - mpn: $product['productModel'] ?? null, - preview_image_url: $product['productImageUrl'], - manufacturing_status: null, - provider_url: $this->getProductShortURL($product['productCode']), - datasheets: $this->getProductDatasheets($product['pdfUrl'] ?? null), - parameters: $this->attributesToParameters($product['paramVOList'] ?? []), - vendor_infos: $this->pricesToVendorInfo($product['productCode'], $this->getProductShortURL($product['productCode']), $product['productPriceList'] ?? []), - footprint: $footprint, - images: $product_images, - mass: $product['weight'] ?? null, - ); - - return $part_detail; + return new PartDetailDTO( + provider_key: $this->getProviderKey(), + provider_id: $product['productCode'], + name: $product['productModel'], + description: strip_tags($product['productIntroEn']), + manufacturer: $product['brandNameEn'], + mpn: $product['productModel'] ?? null, + preview_image_url: $product['productImageUrl'], + manufacturing_status: null, + provider_url: $this->getProductShortURL($product['productCode']), + footprint: $footprint, + datasheets: $this->getProductDatasheets($product['pdfUrl'] ?? null), + images: $product_images, + parameters: $this->attributesToParameters($product['paramVOList'] ?? []), + vendor_infos: $this->pricesToVendorInfo($product['productCode'], $this->getProductShortURL($product['productCode']), $product['productPriceList'] ?? []), + mass: $product['weight'] ?? null, + ); } /** @@ -199,7 +191,7 @@ class LCSCProvider implements InfoProviderInterface ) ]; } - + /** * Converts LCSC currency symbol to an ISO code. Have not seen LCSC provide other currencies other than USD yet. * @param string $currency @@ -219,19 +211,19 @@ class LCSCProvider implements InfoProviderInterface * @param string $product_code * @return string */ - private function getProductShortURL($product_code): string + private function getProductShortURL(string $product_code): string { return 'https://www.lcsc.com/product-detail/' . $product_code .'.html'; } - + /** * Returns a product datasheet FileDTO array from a single pdf url * @param string $url * @return FileDTO[] */ - private function getProductDatasheets($url): array + private function getProductDatasheets(?string $url): array { - if ($url == null) { + if ($url === null) { return []; } @@ -240,17 +232,12 @@ class LCSCProvider implements InfoProviderInterface /** * Returns a FileDTO array with a list of product images - * @param array $images + * @param array|null $images * @return FileDTO[] */ - private function getProductImages($images): array + private function getProductImages(?array $images): array { - $result = []; - foreach ($images as $image) { - $result[] = new FileDTO($image); - } - - return $result; + return array_map(static fn($image) => new FileDTO($image), $images ?? []); } /** @@ -262,7 +249,6 @@ class LCSCProvider implements InfoProviderInterface $result = []; foreach ($attributes as $attribute) { - $result[] = ParameterDTO::parseValueField(name: $attribute['paramNameEn'], value: $attribute['paramValueEn'], unit: null, group: null); } From d600cb4b9a585e0fcc422a23ec8d9fbdfa45c393 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 22 Feb 2024 23:22:52 +0100 Subject: [PATCH 074/634] Improved parsing of parameters. Values with unit and ranges get now properly parsed into the Part-DB structures --- .../InfoProviderSystem/DTOs/ParameterDTO.php | 26 ++++++++++++++++--- .../Providers/LCSCProvider.php | 19 +++++++++++++- .../DTOs/ParameterDTOTest.php | 16 ++++++++++++ 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php index f2a0d978..b5597eaf 100644 --- a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php @@ -87,14 +87,32 @@ class ParameterDTO { //Try to extract unit from value $unit = null; - if (is_string($value) && preg_match('/^(?[0-9.]+)\s*(?[°a-zA-Z_]+\s?\w{0,4})$/u', $value, $matches)) { - $value = $matches['value']; - $unit = $matches['unit']; + if (is_string($value)) { + [$number, $unit] = self::splitIntoValueAndUnit($value) ?? [$value, null]; - return self::parseValueField(name: $name, value: $value, unit: $unit, symbol: $symbol, group: $group); + return self::parseValueField(name: $name, value: $number, unit: $unit, symbol: $symbol, group: $group); } //Otherwise we assume that no unit is given return self::parseValueField(name: $name, value: $value, unit: null, symbol: $symbol, group: $group); } + + /** + * Splits the given value into a value and a unit part if possible. + * If the value is not in the expected format, null is returned. + * @param string $value The value to split + * @return array|null An array with the value and the unit part or null if the value is not in the expected format + * @phpstan-return array{0: string, 1: string}|null + */ + public static function splitIntoValueAndUnit(string $value): ?array + { + if (preg_match('/^(?[0-9.]+)\s*(?[°℃a-zA-Z_]+\s?\w{0,4})$/u', $value, $matches)) { + $value = $matches['value']; + $unit = $matches['unit']; + + return [$value, $unit]; + } + + return null; + } } \ No newline at end of file diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index 0855cb78..6f005c73 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -249,7 +249,24 @@ class LCSCProvider implements InfoProviderInterface $result = []; foreach ($attributes as $attribute) { - $result[] = ParameterDTO::parseValueField(name: $attribute['paramNameEn'], value: $attribute['paramValueEn'], unit: null, group: null); + + //If the attribute contains a tilde we assume it is a range + if (str_contains($attribute['paramValueEn'], '~')) { + $parts = explode('~', $attribute['paramValueEn']); + if (count($parts) === 2) { + //Try to extract number and unit from value (allow leading +) + [$number, $unit] = ParameterDTO::splitIntoValueAndUnit(ltrim($parts[0], " +")) ?? [$parts[0], null]; + [$number2, $unit2] = ParameterDTO::splitIntoValueAndUnit(ltrim($parts[1], " +")) ?? [$parts[1], null]; + + //If both parts have the same unit and both values are numerical, we assume it is a range + if ($unit === $unit2 && is_numeric($number) && is_numeric($number2)) { + $result[] = new ParameterDTO(name: $attribute['paramNameEn'], value_min: (float) $number, value_max: (float) $number2, unit: $unit, group: null); + continue; + } + } + } + + $result[] = ParameterDTO::parseValueIncludingUnit(name: $attribute['paramNameEn'], value: $attribute['paramValueEn'], group: null); } return $result; diff --git a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php index 26a4483a..4300259f 100644 --- a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php +++ b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php @@ -161,4 +161,20 @@ class ParameterDTOTest extends TestCase { $this->assertEquals($expected, ParameterDTO::parseValueIncludingUnit($name, $value, $symbol, $group)); } + + public function testSplitIntoValueAndUnit(): void + { + $this->assertEquals(['1.0', 'kg'], ParameterDTO::splitIntoValueAndUnit('1.0 kg')); + $this->assertEquals(['1.0', 'kg'], ParameterDTO::splitIntoValueAndUnit('1.0kg')); + $this->assertEquals(['1', 'kg'], ParameterDTO::splitIntoValueAndUnit('1 kg')); + + $this->assertEquals(['1.0', '°C'], ParameterDTO::splitIntoValueAndUnit('1.0°C')); + $this->assertEquals(['1.0', '°C'], ParameterDTO::splitIntoValueAndUnit('1.0 °C')); + + $this->assertEquals(['1.0', 'C_m'], ParameterDTO::splitIntoValueAndUnit('1.0C_m')); + $this->assertEquals(["70", "℃"], ParameterDTO::splitIntoValueAndUnit("70℃")); + + $this->assertNull(ParameterDTO::splitIntoValueAndUnit('kg')); + $this->assertNull(ParameterDTO::splitIntoValueAndUnit('Test')); + } } From 95ef97fcc2d2e39a183c5458be8e4db1b785a78b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 22 Feb 2024 23:32:12 +0100 Subject: [PATCH 075/634] Added possibility to enable/disable the LCSC provider --- .env | 7 +++++++ config/services.yaml | 4 ++++ .../InfoProviderSystem/Providers/LCSCProvider.php | 8 ++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.env b/.env index 85f25ae8..48c35b1d 100644 --- a/.env +++ b/.env @@ -168,6 +168,13 @@ PROVIDER_MOUSER_SEARCH_LIMIT=50 # Used when searching for keywords in the language specified when you signed up for Search API. PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE='true' +# LCSC Provider: +# LCSC does not provide an offical API, so this used the API LCSC uses to render their webshop. +# LCSC did not intended the use of this API and it could break any time, so use it at your own risk. + +# We dont require an API key for LCSC, just set this to 1 to enable LCSC support +PROVIDER_LCSC_ENABLED=0 + ################################################################################## # EDA integration related settings ################################################################################## diff --git a/config/services.yaml b/config/services.yaml index e31356c5..e10b4ebb 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -307,6 +307,10 @@ services: $options: '%env(string:PROVIDER_MOUSER_SEARCH_OPTION)%' $search_limit: '%env(int:PROVIDER_MOUSER_SEARCH_LIMIT)%' + App\Services\InfoProviderSystem\Providers\LCSCProvider: + arguments: + $enabled: '%env(bool:PROVIDER_LCSC_ENABLED)%' + #################################################################################################################### # API system #################################################################################################################### diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index 6f005c73..98f680f9 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -38,7 +38,7 @@ class LCSCProvider implements InfoProviderInterface public const DISTRIBUTOR_NAME = 'LCSC'; - public function __construct(private readonly HttpClientInterface $lcscClient) + public function __construct(private readonly HttpClientInterface $lcscClient, private bool $enabled = true) { } @@ -47,9 +47,9 @@ class LCSCProvider implements InfoProviderInterface { return [ 'name' => 'LCSC', - 'description' => 'This provider uses the LCSC API to search for parts.', + 'description' => 'This provider uses the (unofficial) LCSC API to search for parts.', 'url' => 'https://www.lcsc.com/', - 'disabled_help' => 'This provider is enabled by default' + 'disabled_help' => 'Set PROVIDER_LCSC_ENABLED to 1 (or true) in your environment variable config.' ]; } @@ -61,7 +61,7 @@ class LCSCProvider implements InfoProviderInterface // This provider is always active public function isActive(): bool { - return true; + return $this->enabled; } /** From 20be83c345ba211dce20fd98c5d93504b9fdd21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 22 Feb 2024 23:57:57 +0100 Subject: [PATCH 076/634] Allow to configure the currency to get prices in for the LCSCProvider --- .env | 2 ++ config/services.yaml | 1 + .../Providers/LCSCProvider.php | 24 +++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.env b/.env index 48c35b1d..a7faf70b 100644 --- a/.env +++ b/.env @@ -174,6 +174,8 @@ PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE='true' # We dont require an API key for LCSC, just set this to 1 to enable LCSC support PROVIDER_LCSC_ENABLED=0 +# The currency to get prices in (e.g. EUR, USD, etc.) +PROVIDER_LCSC_CURRENCY=EUR ################################################################################## # EDA integration related settings diff --git a/config/services.yaml b/config/services.yaml index e10b4ebb..0e30ab14 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -310,6 +310,7 @@ services: App\Services\InfoProviderSystem\Providers\LCSCProvider: arguments: $enabled: '%env(bool:PROVIDER_LCSC_ENABLED)%' + $currency: '%env(string:PROVIDER_LCSC_CURRENCY)%' #################################################################################################################### # API system diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index 98f680f9..11a2ae59 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -29,6 +29,8 @@ use App\Services\InfoProviderSystem\DTOs\ParameterDTO; use App\Services\InfoProviderSystem\DTOs\PartDetailDTO; use App\Services\InfoProviderSystem\DTOs\PriceDTO; use App\Services\InfoProviderSystem\DTOs\PurchaseInfoDTO; +use Symfony\Component\HttpFoundation\Cookie; +use Symfony\Component\Intl\Currencies; use Symfony\Contracts\HttpClient\HttpClientInterface; class LCSCProvider implements InfoProviderInterface @@ -38,7 +40,7 @@ class LCSCProvider implements InfoProviderInterface public const DISTRIBUTOR_NAME = 'LCSC'; - public function __construct(private readonly HttpClientInterface $lcscClient, private bool $enabled = true) + public function __construct(private readonly HttpClientInterface $lcscClient, private string $currency, private bool $enabled = true) { } @@ -71,6 +73,9 @@ class LCSCProvider implements InfoProviderInterface private function queryDetail(string $id): PartDetailDTO { $response = $this->lcscClient->request('GET', self::ENDPOINT_URL . "/product/detail", [ + 'headers' => [ + 'Cookie' => new Cookie('currencyCode', $this->currency) + ], 'query' => [ 'productCode' => $id, ], @@ -93,6 +98,9 @@ class LCSCProvider implements InfoProviderInterface private function queryByTerm(string $term): array { $response = $this->lcscClient->request('GET', self::ENDPOINT_URL . "/search/global", [ + 'headers' => [ + 'Cookie' => new Cookie('currencyCode', $this->currency) + ], 'query' => [ 'keyword' => $term, ], @@ -193,7 +201,7 @@ class LCSCProvider implements InfoProviderInterface } /** - * Converts LCSC currency symbol to an ISO code. Have not seen LCSC provide other currencies other than USD yet. + * Converts LCSC currency symbol to an ISO code. * @param string $currency * @return string */ @@ -202,6 +210,18 @@ class LCSCProvider implements InfoProviderInterface //Decide based on the currency symbol return match ($currency) { 'US$' => 'USD', + '€' => 'EUR', + 'A$' => 'AUD', + 'C$' => 'CAD', + '£' => 'GBP', + 'HK$' => 'HKD', + 'JP¥' => 'JPY', + 'RM' => 'MYR', + 'S$' => 'SGD', + '₽' => 'RUB', + 'kr' => 'SEK', + 'kr.' => 'DKK', + '₹' => 'INR', default => throw new \RuntimeException('Unknown currency: ' . $currency) }; } From 20ee16e3c05a2217704b32cd9b3b9fef77e82b95 Mon Sep 17 00:00:00 2001 From: Cody Jacob Date: Fri, 23 Feb 2024 05:13:15 -0700 Subject: [PATCH 077/634] Update eda_integration.md (#528) spelling mistakes. --grammerly was used --- docs/usage/eda_integration.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/usage/eda_integration.md b/docs/usage/eda_integration.md index 3bbee4da..614c55c9 100644 --- a/docs/usage/eda_integration.md +++ b/docs/usage/eda_integration.md @@ -6,7 +6,7 @@ parent: Usage # EDA / KiCad integration -Part-DB can function as central database for [EDA](https://en.wikipedia.org/wiki/Electronic_design_automation) or ECAD software used to design electronic schematics and PCBs. +Part-DB can function as a central database for [EDA](https://en.wikipedia.org/wiki/Electronic_design_automation) or ECAD software used to design electronic schematics and PCBs. You can connect your EDA software and can view your available parts, with the data saved from Part-DB directly in your EDA software. Part-DB allows to configure additional metadata for the EDA, to associate symbols and footprints for use inside the EDA software, so the part becomes directly usable inside the EDA software. @@ -20,12 +20,12 @@ This also allows to configure available and usable parts and their properties in > Part-DB uses the HTTP library feature of KiCad, which is experimental and not part of the stable KiCad 7 releases. If you want to use this feature, you need to install a KiCad nightly build (7.99 version). This feature will most likely also be part of KiCad 8. Part-DB should be accessible from the PCs with KiCAD. The URL should be stable (so no dynamically changing IP). -You require a user account in Part-DB, which has the permission to access Part-DB API and create API tokens. Every user can has its own account, or you setup a shared read-only account. +You require a user account in Part-DB, which has permission to access Part-DB API and create API tokens. Every user can have its own account, or you set up a shared read-only account. -To connect KiCad with Part-DB do following steps: +To connect KiCad with Part-DB do the following steps: -1. Create an API token on the user settings page for the KiCAD application and copy/save it, when it is shown. Currently KiCAD can only read Part-DB database, so a token with read only scope is enough. -2. Add some EDA metadata to parts, categories or footprints. Only parts with useable info will show up in KiCad. See below for more info. +1. Create an API token on the user settings page for the KiCAD application and copy/save it, when it is shown. Currently, KiCad can only read Part-DB database, so a token with a read-only scope is enough. +2. Add some EDA metadata to parts, categories, or footprints. Only parts with usable info will show up in KiCad. See below for more info. 3. Create a file `partd.kicad_httplib` (or similar, only the extension is important) with the following content: ``` { @@ -44,24 +44,24 @@ To connect KiCad with Part-DB do following steps: ``` 4. Replace the `root_url` with the URL of your Part-DB instance plus `/en/kicad-api/`. You can find the right value for this in the Part-DB user settings page under "API endpoints" in the "API tokens" panel. 5. Replace the `token` field value with the token you have generated in step 1. -6. Open KiCad and add this created file as library in the KiCad symbol table under (Preferences --> Manage Symbol Libraries) +6. Open KiCad and add this created file as a library in the KiCad symbol table under (Preferences --> Manage Symbol Libraries) If you then place a new part, the library dialog opens, and you should be able to see the categories and parts from Part-DB. ### How to associate footprints and symbols with parts -Part-DB dont save any concrete footprints or symbols for the part. Instead Part-DB just contains a reference string in the part metadata, which points to a symbol/footprint in KiCads local library. +Part-DB doesn't save any concrete footprints or symbols for the part. Instead, Part-DB just contains a reference string in the part metadata, which points to a symbol/footprint in KiCad's local library. You can define this on a per-part basis using the KiCad symbol and KiCad footprint field in the EDA tab of the part editor. Or you can define it at a category (symbol) or footprint level, to assign this value to all parts with this category and footprint. -For example to configure the values for an BC547 transistor you would put `Transistor_BJT:BC547` on the parts Kicad symbol to give it the right schematic symbol in EEschema and `Package_TO_SOT_THT:TO-92` to give it the right footprint in PcbNew. +For example, to configure the values for a BC547 transistor you would put `Transistor_BJT:BC547` on the parts Kicad symbol to give it the right schematic symbol in EEschema and `Package_TO_SOT_THT:TO-92` to give it the right footprint in PcbNew. -If you type in a character, you will get an autocomplete list of all symbols and footprints available in the kicad standard library. You can also input your own value. +If you type in a character, you will get an autocomplete list of all symbols and footprints available in the KiCad standard library. You can also input your own value. ### Parts and category visibility Only parts and their categories, on which there is any kind of EDA metadata are defined show up in KiCad. So if you want to see parts in KiCad, -you need to define at least a symbol, footprint, reference prefix or value on a part, category or footprint. +you need to define at least a symbol, footprint, reference prefix, or value on a part, category or footprint. You can use the "Force visibility" checkbox on a part or category to override this behavior and force parts to be visible or hidden in KiCad. @@ -69,11 +69,11 @@ You can use the "Force visibility" checkbox on a part or category to override th ### Category depth in KiCad -For performance reasons, only the most top level categories of Part-DB are shown as categories in KiCad. All parts in the subcategories are shown in the top level category. +For performance reasons, only the mmost top-level categories of Part-DB are shown as categories in KiCad. All parts in the subcategories are shown in the top-level category. -You can configure the depth of the categories shown in KiCad, via the `EDA_KICAD_CATEGORY_DEPTH` env option. The default value is 0, which meabs only the top level categories are shown. +You can configure the depth of the categories shown in KiCad, via the `EDA_KICAD_CATEGORY_DEPTH` env option. The default value is 0, which means only the top-level categories are shown. To show more levels of categories, you can set this value to a higher number. If you set this value to -1, all parts are shown inside a single category in KiCad, without any subcategories. -You can view the "real" category path of a part in the part details dialog in KiCad. \ No newline at end of file +You can view the "real" category path of a part in the part details dialog in KiCad. From 5d68922f2e159638a2272d58e4df8f1a82d4c8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 23 Feb 2024 13:56:23 +0100 Subject: [PATCH 078/634] Fixed some typos and grammar issues in documentation --- docs/api/authentication.md | 13 ++-- docs/api/intro.md | 51 +++++++--------- docs/installation/choosing_database.md | 13 ++-- docs/installation/installation_docker.md | 22 +++---- .../installation/installation_guide-debian.md | 33 +++++----- docs/installation/nginx.md | 2 +- docs/installation/saml_sso.md | 28 ++++----- docs/usage/backup_restore.md | 16 ++--- docs/usage/eda_integration.md | 4 +- docs/usage/getting_started.md | 61 +++++++++---------- docs/usage/import_export.md | 52 ++++++++-------- 11 files changed, 142 insertions(+), 153 deletions(-) diff --git a/docs/api/authentication.md b/docs/api/authentication.md index cb534097..b386c0cd 100644 --- a/docs/api/authentication.md +++ b/docs/api/authentication.md @@ -11,15 +11,14 @@ To use API endpoints, the external application has to authenticate itself, so th the data and which permissions the application should have during the access. Authentication is always bound to a specific user, so the external applications is acting on behalf of a -specific user. This user limits the permissions of the application, so that it can only access data, which the user is +specific user. This user limits the permissions of the application so that it can only access data, which the user is allowed to access. The only method currently available for authentication is to use API tokens: ## API tokens -An API token is a long alphanumeric string, which is bound to a specific user and can be used to authenticate as this -user, when accessing the API. +An API token is a long alphanumeric string, which is bound to a specific user and can be used to authenticate as this user when accessing the API. The API token is passed via the `Authorization` HTTP header during the API request, like the following: `Authorization: Bearer tcp_sdjfks....`. @@ -36,7 +35,7 @@ not access the API anymore with this token. ### Token permissions and scopes API tokens are ultimately limited by the permissions of the user, which belongs to the token. That means that the token -can only access data, which the user is allowed to access, no matter the token permissions. +can only access data, that the user is allowed to access, no matter the token permissions. But you can further limit the permissions of a token by choosing a specific scope for the token. The scope defines which subset of permissions the token has, which can be less than the permissions of the user. For example, you can have a @@ -50,15 +49,15 @@ change anything in the database. > Only use the full or admin scope, if you really need it, as they could potentially be used to do a lot of damage to > your Part-DB instance. -Following token scopes are available: +The following token scopes are available: * **Read-Only**: The token can only read non-sensitive data (like parts, but no users or groups) from the API and can not change anything. * **Edit**: The token can read and write non-sensitive data via the API. This includes creating, updating and deleting data. This should be enough for most applications. * **Admin**: The token can read and write all data via the API, including sensitive data like users and groups. This - should only be used for trusted applications, which need to access sensitive data, and perform administrative actions. -* **Full**: The token can do anything the user can do, including changing the users password and create new tokens. This + should only be used for trusted applications, which need to access sensitive data and perform administrative actions. +* **Full**: The token can do anything the user can do, including changing the user's password and creating new tokens. This should only be used for highly trusted applications!! Please note, that in early versions of the API, there might be no endpoints yet, to really perform the actions, which diff --git a/docs/api/intro.md b/docs/api/intro.md index 0b6936d2..8f1d181c 100644 --- a/docs/api/intro.md +++ b/docs/api/intro.md @@ -29,15 +29,14 @@ features and how to use them. The API is available under the `/api` path, but not reachable without proper permissions. You have to give the users, which should be able to access the API the proper permissions (Miscellaneous -> API). -Please note that there are two relevant permissions, the first one allows users to access the `/api/` path at all and -showing the documentation, -and the second one allows them to create API tokens which is needed for authentication of external applications. +Please note that there are two relevant permissions, the first one allows users to access the `/api/` path at all and show the documentation, +and the second one allows them to create API tokens which are needed for the authentication of external applications. ## Authentication To use API endpoints, the external application has to authenticate itself, so that Part-DB knows which user is accessing the data and -which permissions the application should have. Basically this is done by creating an API token for a user and then +which permissions the application should have. Basically, this is done by creating an API token for a user and then passing it on every request with the `Authorization` header as bearer token, so you add a header `Authorization: Bearer `. @@ -46,11 +45,10 @@ See [Authentication chapter]({% link api/authentication.md %}) for more details. ## API endpoints The API is split into different endpoints, which are reachable under the `/api/` path of your Part-DB instance ( -so `https://your-part-db.local/api/`). -There are various endpoints for each entity type (like `part`, `manufacturer`, etc.), which allow you to read and write -data and some special endpoints like `search` or `statistics`. +e.g. `https://your-part-db.local/api/`). +There are various endpoints for each entity type (like `part`, `manufacturer`, etc.), which allow you to read and write data, and some special endpoints like `search` or `statistics`. -For example all API endpoints for managing categories are available under `/api/categories/`. Depending on the exact +For example, all API endpoints for managing categories are available under `/api/categories/`. Depending on the exact path and the HTTP method used, you can read, create, update or delete categories. For most entities, there are endpoints like this: @@ -66,29 +64,28 @@ For most entities, there are endpoints like this: A full (interactive) list of endpoints can be displayed when visiting the `/api/` path in your browser, when you are logged in with a user, which is allowed to access the API. There is also a link to this page, on the user settings page in the API token section. -This documentation also list all available fields for each entity type and the allowed operations. +This documentation also lists all available fields for each entity type and the allowed operations. ## Formats The API supports different formats for the request and response data, which you can control via the `Accept` and `Content-Type` headers. You should use [JSON-LD](https://json-ld.org/) as format, which is basically JSON with some additional metadata, which -allows -to describe the data in a more structured way and also allows to link between different entities. You can achieve this +allows you to describe the data in a more structured way and also allows to link between different entities. You can achieve this by setting `Accept: application/ld+json` header to the API requests. To get plain JSON without any metadata or links, use the `Accept: application/json` header. Without an `Accept` header (e.g. when you call the endpoint in a browser), the API will return an HTML page with the documentation, so be sure to include the desired `Accept` header in your API requests. -If you can not control the `Accept` header, you can add an `.json` or `.jsonld` suffix to the URL to enforce a JSON or +If you can not control the `Accept` header, you can add a `.json` or `.jsonld` suffix to the URL to enforce a JSON or JSON-LD response (e.g. `/api/parts.jsonld`). ## OpenAPI schema Part-DB provides a [OpenAPI](https://swagger.io/specification/) (formally Swagger) schema for the API under `/api/docs.json` (so `https://your-part-db.local/api/docs.json`). -This schema is a machine-readable description of the API, which can be imported in software to test the API or even +This schema is a machine-readable description of the API, which can be imported into software to test the API or even automatically generate client libraries for the API. API generators which can generate a client library for the API from the schema are available for many programming @@ -120,14 +117,10 @@ See [API Platform docs](https://api-platform.com/docs/core/pagination) for more ## Filtering results / Searching When retrieving a list of entities, you can restrict the results by various filters. Almost all entities have a search -filter, -which allows you to only include entities, which (text) fields match the given search term: For example if you only want -to -get parts, with the Name "BC547", you can use `/api/parts.jsonld?name=BC547`. You can use `%` as wildcard for multiple -characters -in the search term (Be sure to properly encode the search term, if you use special characters). For example if you want -to get all parts, -whose name starts with "BC", you can use `/api/parts.jsonld?name=BC%25` (the `%25` is the url encoded version of `%`). +filter, which allows you to only include entities, which (text) fields match the given search term: For example, if you only want +to get parts, with the Name "BC547", you can use `/api/parts.jsonld?name=BC547`. You can use `%` as a wildcard for multiple +characters in the search term (Be sure to properly encode the search term, if you use special characters). For example, if you want +to get all parts, whose name starts with "BC", you can use `/api/parts.jsonld?name=BC%25` (the `%25` is the url encoded version of `%`). There are other filters available for some entities, allowing you to search on other fields, or restricting the results by numeric values or dates. See the endpoint documentation for the available filters. @@ -136,8 +129,8 @@ by numeric values or dates. See the endpoint documentation for the available fil To get all parts with a certain category, manufacturer, etc. you can use the `category`, `manufacturer`, etc. query parameters of the `/api/parts` endpoint. -They are so-called entity filters and accept a comma separated list of IDs of the entities you want to filter by. -For example if you want to get all parts with the category "Resistor" (Category ID 1) and "Capacitor" (Category ID 2), +They are so-called entity filters and accept a comma-separated list of IDs of the entities you want to filter by. +For example, if you want to get all parts with the category "Resistor" (Category ID 1) and "Capacitor" (Category ID 2), you can use `/api/parts.jsonld?category=1,2`. Suffix an id with `+` to suffix, to include all direct children categories of the given category. Use the `++` suffix to @@ -150,7 +143,7 @@ See the endpoint documentation for the available entity filters. ## Ordering results When retrieving a list of entities, you can order the results by various fields using the `order` query parameter. -For example if you want to get all parts ordered by their name, you can use `/api/parts/?order[name]=asc`. You can use +For example, if you want to get all parts ordered by their name, you can use `/api/parts/?order[name]=asc`. You can use this parameter multiple times to order by multiple fields. See the endpoint documentation for the available fields to order by. @@ -161,12 +154,12 @@ Sometimes you only want to get a subset of the properties of an entity, for exam part, but not all the other properties. You can achieve this using the `properties[]` query parameter with the name of the field you want to get. You can use this parameter multiple times to get multiple fields. -For example if you only want to get the name and the description of a part, you can +For example, if you only want to get the name and the description of a part, you can use `/api/parts/123?properties[]=name&properties[]=description`. -It is also possible to use this filters on list endpoints (get collection), to only get a subset of the properties of +It is also possible to use these filters on list endpoints (get collection), to only get a subset of the properties of all entities in the collection. -See [API Platform docs](https://api-platform.com/docs/core/filters/#property-filter) for more infos. +See [API Platform docs](https://api-platform.com/docs/core/filters/#property-filter) for more info. ## Change comment @@ -174,7 +167,7 @@ Similar to the changes using Part-DB web interface, you can add a change comment which will be visible in the log of the entity. -You can pass the text for this via the `_comment` query parameter (beware the proper encoding). For +You can pass the text for this via the `_comment` query parameter (beware of the proper encoding). For example `/api/parts/123?_comment=This%20is%20a%20change%20comment`. ## Creating attachments and parameters @@ -182,7 +175,7 @@ example `/api/parts/123?_comment=This%20is%20a%20change%20comment`. {: .warning } > The way described below is more a workaround than a proper solution. This might break in future versions of Part-DB! -Currently it is not possible to create attachments or parameters via a `POST` operation on the entity endpoint. +Currently, it is not possible to create attachments or parameters via a `POST` operation on the entity endpoint. The workaround for this is to send a patch request to the owning entity endpoint (e.g. parts `/api/parts/123`): ``` diff --git a/docs/installation/choosing_database.md b/docs/installation/choosing_database.md index 4bd9a93e..99d5f886 100644 --- a/docs/installation/choosing_database.md +++ b/docs/installation/choosing_database.md @@ -24,16 +24,15 @@ To use **MySQL/MariaDB** as database, you have to install and configure the MySQ database and user for Part-DB, which needs some additional work. When using docker you need an additional docker container, and volume for the data -When using **SQLite** The database can be backuped easily by just copying the SQLite file to a safe place. Ideally the * +When using **SQLite** The database can be backuped easily by just copying the SQLite file to a safe place. Ideally, the * *MySQL** database has to be dumped to a SQL file (using `mysqldump`). The `console partdb:backup` command can do this automatically -However, SQLite does not support certain operations like regex search, which has to be emulated by PHP and therefore are -pretty slow compared to the same operation at MySQL. In future there might be features that may only be available, when -using MySQL. Also SQLite has limitations in comparisons and sorting of unicode characters, which might lead to unexpected -behavior when using non-ASCII characters in your data. For example `µ` (micro sign) is not seen as equal to `μ`(greek minuscle mu), -therefore searching for `µ` (micro sign) will not find parts containing `μ` (mu) and vice versa. In MySQL identical -looking characters are seen as equal, which is more intuitive in most cases. +However, SQLite does not support certain operations like regex search, which has to be emulated by PHP and therefore is +pretty slow compared to the same operation at MySQL. In the future, there might be features that may only be available, when +using MySQL. Also, SQLite has limitations in comparisons and sorting of Unicode characters, which might lead to unexpected +behavior when using non-ASCII characters in your data. For example `µ` (micro sign) is not seen as equal to `μ(greek minuscule mu), +therefore searching for `µ` (micro sign) will not find parts containing `μ` (mu) and vice versa. In MySQL identical-looking characters are seen as equal, which is more intuitive in most cases. In general MySQL might perform better for big Part-DB instances with many entries, lots of users and high activity, than SQLite. diff --git a/docs/installation/installation_docker.md b/docs/installation/installation_docker.md index f90ac0bc..b1027611 100644 --- a/docs/installation/installation_docker.md +++ b/docs/installation/installation_docker.md @@ -20,7 +20,7 @@ where docker is available (especially recommended for Windows and macOS). Docker-compose configures the needed images and automatically creates the needed containers and volumes. -1. Install docker and docker-compose like described under https://docs.docker.com/compose/install/ +1. Install docker and docker-compose as described under https://docs.docker.com/compose/install/ 2. Create a folder where the Part-DB data should live 3. Create a file named docker-compose.yaml with the following content: @@ -74,7 +74,7 @@ services: # - TRUSTED_PROXIES=127.0.0.0/8,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 ``` -4. Customize the settings by changing the environment variables (or add new ones). See [Configuration]({% link +4. Customize the settings by changing the environment variables (or adding new ones). See [Configuration]({% link configuration.md %}) for more information. 5. Inside the folder, run @@ -90,10 +90,10 @@ docker exec --user=www-data partdb php bin/console doctrine:migrations:migrate and watch for the password output -6. Part-DB is available under `http://localhost:8080` and you can log in with username `admin` and the password shown +6. Part-DB is available under `http://localhost:8080` and you can log in with the username `admin` and the password shown before -The docker image uses a SQLite database and all data (database, uploads and other media) is put into folders relative to +The docker image uses a SQLite database and all data (database, uploads, and other media) is put into folders relative to the docker-compose.yml. ### MySQL @@ -183,15 +183,15 @@ docker exec --user=www-data partdb php bin/console doctrine:migrations:migrate ## Direct use of docker image -You can use the `jbtronics/part-db1:master` image directly. You have to expose the port 80 to a host port and configure +You can use the `jbtronics/part-db1:master` image directly. You have to expose port 80 to a host port and configure volumes for `/var/www/html/uploads` and `/var/www/html/public/media`. If you want to use SQLite database (which is default), you have to configure Part-DB to put the database file in a mapped volume via the `DATABASE_URL` environment variable. -For example if you set `DATABASE_URL=sqlite:///%kernel.project_dir%/var/db/app.db` then you will have to map +For example, if you set `DATABASE_URL=sqlite:///%kernel.project_dir%/var/db/app.db` then you will have to map the `/var/www/html/var/db/` folder to the docker container (see docker-compose.yaml for example). -You also have to create the database like described above in step 4. +You also have to create the database as described above in step 4. ## Running console commands @@ -200,8 +200,8 @@ executing `docker exec --user=www-data -it partdb bin/console [command]` ## Troubleshooting -*Login not possible. Login page is just reloading and no error message is shown or something like "CSFR token invalid"*: +*Login is not possible. Login page is just reloading and no error message is shown or something like "CSFR token invalid"*: -Clear all cookies in your browser or use an inkognito tab for Part-DB. -This related to the fact that Part-DB can not set cookies via HTTP, after some webpage has set cookies before under -localhost via https. This is a security mechanism of the browser and can not be bypassed by Part-DB. +Clear all cookies in your browser or use an incognito tab for Part-DB. +This is related to the fact that Part-DB can not set cookies via HTTP after some webpages have set cookies before under +localhost via HTTPS. This is a security mechanism of the browser and can not be bypassed by Part-DB. diff --git a/docs/installation/installation_guide-debian.md b/docs/installation/installation_guide-debian.md index 66077fec..d8c70a6f 100644 --- a/docs/installation/installation_guide-debian.md +++ b/docs/installation/installation_guide-debian.md @@ -8,9 +8,9 @@ nav_order: 4 # Part-DB installation guide for Debian 11 (Bullseye) This guide shows you how to install Part-DB directly on Debian 11 using apache2 and SQLite. This guide should work with -recent Ubuntu and other Debian based distributions with little to no changes. +recent Ubuntu and other Debian-based distributions with little to no changes. Depending on what you want to do, using the prebuilt docker images may be a better choice, as you don't need to install -this many dependencies. See [here]({% link installation/installation_docker.md %}) for more information of the docker +this many dependencies. See [here]({% link installation/installation_docker.md %}) for more information on the docker installation. {: .warning } @@ -30,8 +30,8 @@ sudo apt install git curl zip ca-certificates software-properties-common apt-tra ### Install PHP and apache2 -Part-DB is written in [PHP](https://php.net) and therefore needs an PHP interpreter to run. Part-DB needs PHP 8.1 or -higher, however it is recommended to use the most recent version of PHP for performance reasons and future +Part-DB is written in [PHP](https://php.net) and therefore needs a PHP interpreter to run. Part-DB needs PHP 8.1 or +higher. However, it is recommended to use the most recent version of PHP for performance reasons and future compatibility. As Debian 11 does not ship PHP 8.1 in its default repositories, we have to add a repository for it. You can skip this @@ -46,7 +46,7 @@ sudo curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x sudo apt update && sudo apt upgrade ``` -Now you can install PHP 8.1 and required packages (change the 8.1 in the package version according to the version you +Now you can install PHP 8.1 and the required packages (change the 8.1 in the package version according to the version you want to use): ```bash @@ -57,8 +57,8 @@ The apache2 webserver should be already installed with this command and configur ### Install composer -Part-DB uses [composer](https://getcomposer.org/) to install required PHP libraries. As the versions shipped in the -repositories is pretty old we install it manually: +Part-DB uses [composer](https://getcomposer.org/) to install required PHP libraries. As the version shipped in the +repositories is pretty old, we will install it manually: ```bash # Download composer installer script @@ -71,8 +71,8 @@ chmod +x /usr/local/bin/composer ### Install yarn and nodejs -To build the frontend (the user interface) Part-DB uses [yarn](https://yarnpkg.com/). As it depends on Node.js and the -shipped versions are pretty old, we install new versions from official Node.js repository: +To build the front end (the user interface) Part-DB uses [yarn](https://yarnpkg.com/). As it depends on Node.js and the +shipped versions are pretty old, we install new versions from the official Node.js repository: ```bash # Add recent node repository (nodejs 18 is supported until 2025) @@ -102,7 +102,7 @@ later. git clone https://github.com/Part-DB/Part-DB-symfony.git /var/www/partdb ``` -By default, you are now on the latest development version. In most cases you want to use the latest stable version. You +By default, you are now on the latest development version. In most cases, you want to use the latest stable version. You can switch to the latest stable version (tagged) by running the following command: ```bash @@ -110,7 +110,7 @@ can switch to the latest stable version (tagged) by running the following comman git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) ``` -Alternatively you can check out a specific version by running ( +Alternatively, you can check out a specific version by running ( see [GitHub Releases page](https://github.com/Part-DB/Part-DB-server/releases) for a list of available versions): ```bash @@ -176,12 +176,12 @@ To check if everything is installed, run the following command: sudo -u www-data php bin/console partdb:check-requirements ``` -The most things should be green, and no red ones. Yellow messages means optional dependencies which are not important +Most things should be green, and no red ones. Yellow messages mean optional dependencies which are not important but can improve performance and functionality. ### Create a database for Part-DB -Part-DB by default uses a file based sqlite database to store the data. Use the following command to create the +Part-DB by default uses a file-based SQLite database to store the data. Use the following command to create the database. The database will normally be created at `/var/www/partdb/var/app.db`. ```bash @@ -191,8 +191,7 @@ sudo -u www-data php bin/console doctrine:migrations:migrate The command will warn you about schema changes and potential data loss. Continue with typing `yes`. The command will output several lines of information. Somewhere should be a yellow background message -like `The initial password for the "admin" user is: f502481134`. Write down this password as you will need it later for -initial login. +like `The initial password for the "admin" user is: f502481134`. Write down this password as you will need it later for the initial login. ### Configure apache2 to show Part-DB @@ -248,7 +247,7 @@ sudo service apache2 restart ``` and Part-DB should now be available under `http://YourServerIP` (or `http://partdb.lan` if you configured DNS in your -network to point on the server). +network to point to the server). ### Login to Part-DB @@ -288,7 +287,7 @@ sudo -u www-data php bin/console cache:clear ## MySQL/MariaDB database -To use a MySQL database, follow the steps from above (except the creation of database, we will do this later). +To use a MySQL database, follow the steps from above (except the creation of the database, we will do this later). Debian 11 does not ship MySQL in its repositories anymore, so we use the compatible MariaDB instead: 1. Install maria-db with: diff --git a/docs/installation/nginx.md b/docs/installation/nginx.md index 362251cf..82a2e4cf 100644 --- a/docs/installation/nginx.md +++ b/docs/installation/nginx.md @@ -13,7 +13,7 @@ configured. ## Setup -1. Install composer and yarn like described in the [apache guide]({% link installation/installation_guide-debian.md +1. Install composer and yarn as described in the [apache guide]({% link installation/installation_guide-debian.md %}#install-composer). 2. Create a folder for Part-DB and install and configure it as described 3. Instead of creating the config for apache, add the following snippet to your nginx config: diff --git a/docs/installation/saml_sso.md b/docs/installation/saml_sso.md index 435656b9..d2e65e7f 100644 --- a/docs/installation/saml_sso.md +++ b/docs/installation/saml_sso.md @@ -48,7 +48,7 @@ the [Keycloak Getting Started Guide](https://www.keycloak.org/docs/latest/gettin *It is recommended to set this value to the domain name of your Part-DB installation, with an attached `/sp` ( e.g. `https://partdb.yourdomain.invalid/sp`)*. The name field should be set to something human-readable, like `Part-DB`. -3. Click on `Save` to create the new client. +3. Click on `Save` to create a new client. ### Configure the SAML client @@ -56,7 +56,7 @@ the [Keycloak Getting Started Guide](https://www.keycloak.org/docs/latest/gettin * Set `Home URL` to the homepage of your Part-DB installation (e.g. `https://partdb.yourdomain.invalid/`). * Set `Valid redirect URIs` to your homepage with a wildcard at the end ( e.g. `https://partdb.yourdomain.invalid/*`). - * Set `Valid post logout redirect URIs` to `+` to allow all urls from the `Valid redirect URIs`. + * Set `Valid post logout redirect URIs` to `+` to allow all URLs from the `Valid redirect URIs`. * Set `Name ID format` to `username` * Ensure `Force POST binding` is enabled. * Ensure `Sign documents` is enabled. @@ -135,8 +135,8 @@ On the first login of a SAML user, Part-DB will create a new user in the databas as the SAML user, but no password set. The user will be marked as a SAML user, so he can only log in via SAML in the future. However, in other aspects the user is a normal user, so Part-DB admins can set permissions for SAML users like for any other user and override permissions assigned via groups. - -For large organizations you maybe want to automatically assign permissions to SAML users based on the roles or + +For large organizations, you maybe want to automatically assign permissions to SAML users based on the roles or groups configured in the identity provider. For this purpose Part-DB allows you to map SAML roles or groups to Part-DB groups. See the next section for details. @@ -144,11 +144,11 @@ groups. See the next section for details. Part-DB allows you to configure a mapping between SAML roles or groups and Part-DB groups. This allows you to automatically assign permissions to SAML users based on the roles or groups configured in the identity provider. For -example if a user at your SAML provider has the role `admin`, you can configure Part-DB to assign the `admin` group to +example, if a user at your SAML provider has the role `admin`, you can configure Part-DB to assign the `admin` group to this user. This will give the user all permissions of the `admin` group. -For this you need first have to create the groups in Part-DB, to which you want to assign the users and configure their -permissions. You will need the IDs of the groups, which you can find in the `System->Group` page of Part-DB in the Info +For this, you need first have to create the groups in Part-DB, to which you want to assign the users and configure their +permissions. You will need the IDs of the groups, which you can find on the `System->Group` page of Part-DB in the Info tab. The map is provided as [JSON](https://en.wikipedia.org/wiki/JSON) encoded map between the SAML role and the group ID, @@ -158,7 +158,7 @@ you can configure via the `.env.local` or `docker-compose.yml` file. Please note string in single quotes here, as JSON itself uses double quotes ( e.g. `SAML_ROLE_MAPPING='{ "*": 2, "editor": 3, "admin": 1 }`). -For example if you want to assign the group with ID 1 (by default admin) to every SAML user which has the role `admin`, +For example, if you want to assign the group with ID 1 (by default admin) to every SAML user which has the role `admin`, the role with ID 3 (by default editor) to every SAML user with the role `editor` and everybody else to the group with ID 2 (by default readonly), you can configure the following map: @@ -176,9 +176,9 @@ If you want to assign users with a certain role to an empty group, provide the g valid group ID, so the user will not be assigned to any group. The SAML roles (or groups depending on your configuration), have to be supplied via a SAML attribute `group`. You have -to configure your SAML identity provider to provide this attribute. For example in Keycloak you can configure this -attribute in the `Client scopes` page. Select the `sp-dedicated` client scope (or create a new one) and click -on `Add mappers`. Select `Role mapping` or `Group membership`, change the field name and click `Add`. Now Part-DB will +to configure your SAML identity provider to provide this attribute. For example, in Keycloak you can configure this +attribute on the `Client scopes` page. Select the `sp-dedicated` client scope (or create a new one) and click +on `Add mappers`. Select `Role mapping` or `Group membership`, change the field name, and click `Add`. Now Part-DB will be provided with the groups of the user based on the Keycloak user database. By default, the group is assigned to the user on the first login and updated on every login based on the SAML @@ -203,12 +203,12 @@ provide these attributes, you can use to automatically fill the corresponding fi ## Use SAML Login for existing users -Part-DB distinguishes between local users and SAML users. Local users are users, which can log in via Part-DB login form -and which use the password (hash) saved in the Part-DB database. SAML users are stored in the database too (they are +Part-DB distinguishes between local users and SAML users. Local users are users, that can log in via the Part-DB login form +and use the password (hash) saved in the Part-DB database. SAML users are stored in the database too (they are created on the first login of the user via SAML), but they use the SAML identity provider to authenticate the user and have no password stored in the database. When you try you will get an error message. -For security reasons it is not possible to authenticate via SAML as a local user (and vice versa). So if you have +For security reasons, it is not possible to authenticate via SAML as a local user (and vice versa). So if you have existing users in your Part-DB database and want them to be able to log in via SAML in the future, you can use the `php bin/console partdb:user:convert-to-saml-user username` command to convert them to SAML users. This will remove the password hash from the database and mark them as SAML users, so they can log in via SAML in the future. diff --git a/docs/usage/backup_restore.md b/docs/usage/backup_restore.md index a88f11b5..bef3792d 100644 --- a/docs/usage/backup_restore.md +++ b/docs/usage/backup_restore.md @@ -7,8 +7,8 @@ parent: Usage # Backup and Restore Data When working productively you should back up the data and configuration of Part-DB regularly to prevent data loss. This -is also useful, if you want to migrate your Part-DB instance from one server to another. In that case you just have to -back up the data on server 1, move the backup to server 2, install Part-DB on server 2 and restore the backup. +is also useful if you want to migrate your Part-DB instance from one server to another. In that case, you just have to +back up the data on server 1, move the backup to server 2, install Part-DB on server 2, and restore the backup. ## Backup (automatic / Part-DB supported) @@ -23,11 +23,11 @@ To back up all possible data, run the following command: `php bin/console partdb:backup --full /path/to/backup/partdb_backup.zip`. It is possible to do only partial backups (config, attachments, or database). See `php bin/console partdb:backup --help` -for more infos about these options. +for more info about these options. ## Backup (manual) -There are 3 parts which have to be backup-ed: The configuration files, which contains the instance specific options, the +3 parts have to be backup-ed: The configuration files, which contain the instance-specific options, the uploaded files of attachments, and the database containing the most data of Part-DB. Everything else like thumbnails and cache files, are recreated automatically when needed. @@ -42,7 +42,7 @@ You have to recursively copy the `uploads/` folder and the `public/media` folder ### Database -#### Sqlite +#### SQLite If you are using sqlite, it is sufficient to just copy your `app.db` from your database location (normally `var/app.db`) to your backup location. @@ -55,8 +55,8 @@ interface (`mysqldump -uBACKUP -pPASSWORD DATABASE`) ## Restore -Install Part-DB as usual as described in the installation section, except the database creation / migration part. You -have to use the same database type (sqlite or mysql) as on the back-up server instance. +Install Part-DB as usual as described in the installation section, except for the database creation/migration part. You +have to use the same database type (SQLite or MySQL) as on the backuped server instance. ### Restore configuration @@ -69,7 +69,7 @@ Copy the `uploads/` and the `public/media/` folder from your backup into your ne ### Restore database -#### Sqlite +#### SQLite Copy the backup-ed `app.db` into the database folder normally `var/app.db` in Part-DB root folder. diff --git a/docs/usage/eda_integration.md b/docs/usage/eda_integration.md index 614c55c9..9444e55f 100644 --- a/docs/usage/eda_integration.md +++ b/docs/usage/eda_integration.md @@ -65,11 +65,11 @@ you need to define at least a symbol, footprint, reference prefix, or value on a You can use the "Force visibility" checkbox on a part or category to override this behavior and force parts to be visible or hidden in KiCad. -*Please note that KiCad caches the library categories. So if you change something, which would change the visibile categories in KiCad, you have to reload EEschema to see the changes.* +*Please note that KiCad caches the library categories. So if you change something, which would change the visible categories in KiCad, you have to reload EEschema to see the changes.* ### Category depth in KiCad -For performance reasons, only the mmost top-level categories of Part-DB are shown as categories in KiCad. All parts in the subcategories are shown in the top-level category. +For performance reasons, only the most top-level categories of Part-DB are shown as categories in KiCad. All parts in the subcategories are shown in the top-level category. You can configure the depth of the categories shown in KiCad, via the `EDA_KICAD_CATEGORY_DEPTH` env option. The default value is 0, which means only the top-level categories are shown. To show more levels of categories, you can set this value to a higher number. diff --git a/docs/usage/getting_started.md b/docs/usage/getting_started.md index 3eb96007..4bb8afb9 100644 --- a/docs/usage/getting_started.md +++ b/docs/usage/getting_started.md @@ -18,22 +18,22 @@ Before you start creating data structures, you should configure Part-DB to your options. This is done either via changing the `.env.local` file in a direct installation or by changing the env variables in your `docker-compose.yaml` file. -A list of possible configuration options, can be found [here]({% link configuration.md %}). +A list of possible configuration options can be found [here]({% link configuration.md %}). ## Change password, Set up Two-Factor-Authentication & Customize User settings -If you have not already done, you should change your user password. You can do this in the user settings (available in -the navigation bar drop down with the user symbol). +If you have not already done so, you should change your user password. You can do this in the user settings (available in +the navigation bar drop-down with the user symbol). ![image]({% link assets/getting_started/change_password.png %}) There you can also find the option, to set up Two-Factor Authentication methods like Google Authenticator. Using this is -highly recommended (especially if you have admin permissions) to increase the security of your account. (Two-Factor -Authentication even can be enforced for all members of a user group) +highly recommended (especially if you have admin permissions) to increase the security of your account. (Two-factor authentication +even can be enforced for all members of a user group) -In the user settings panel you can change account infos like your username, your first and last name (which will be -shown alongside your username to identify you better), department information and your email address. The email address -is used to send password reset mails, if your system is configured to use this. +In the user settings panel, you can change account info like your username, your first and last name (which will be +shown alongside your username to identify you better), department information, and your email address. The email address +is used to send password reset mails if your system is configured to use this. ![image]({% link assets/getting_started/user_settings.png %}) @@ -46,7 +46,7 @@ used. The banner which is shown on the homepage, can be customized/changed by changing the `config/banner.md` file with a text editor. You can use markdown and (safe) HTML here, to style and customize the banner. -You can even use Latex style equations by wrapping the expressions into `$` (like `$E=mc^2$`, which is rendered inline: +You can even use LaTeX-style equations by wrapping the expressions into `$` (like `$E=mc^2$`, which is rendered inline: $E=mc^2$) or `$$` (like `$$E=mc^2$$`) which will be rendered as a block, like so: $$E=mc^2$$ ## Create groups, users and customize permissions @@ -55,14 +55,14 @@ $E=mc^2$) or `$$` (like `$$E=mc^2$$`) which will be rendered as a block, like so When logged in as administrator, you can open the users menu in the `Tools` section of the sidebar under `System -> Users`. -At this page you can create new users, change their passwords and settings and change their permissions. -For each user which should use Part-DB you should set up an own account, so that tracking of what user did what works +On this page you can create new users, change their passwords and settings, and change their permissions. +For each user who should use Part-DB you should set up their own account so that tracking of what user did works properly. ![image]({% link assets/getting_started/user_admin.png %}) You should check the permissions for every user and ensure that they are in the intended way, and no user has more permissions than he needs. -For each capability you can choose between allow, forbid and inherit. In the last case, the permission is determined by +For each capability, you can choose between allow, forbid, and inherit. In the last case, the permission is determined by the group a user has (if no group is chosen, it equals forbid) ![image]({% link assets/getting_started/user_permissions.png %}) @@ -75,35 +75,34 @@ to restrict the permissions. ### Groups -If you have many users which should share the same permissions, it is useful to define the permissions using user +If you have many users who should share the same permissions, it is useful to define the permissions using user groups, which you can create and edit in the `System -> Groups` menu. -By default 3 groups are defined: +By default, 3 groups are defined: * `readonly` which users only have read permissions (like viewing, searching parts, attachments, etc.) * `users` which users also have rights to edit/delete/create elements -* `admin` which users can do administrative operations (like creating new users, show global system log, etc.) +* `admin` which users can do administrative operations (like creating new users, showing global system log, etc.) Users only use the setting of a capability from a group, if the user has a group associated and the capability on the user is set to `inherit` (which is the default if creating a new user). You can override the permissions settings of a -group per user by explicitly settings the permission at the user. +group per user by explicitly setting the permission of the user. Groups are organized as trees, meaning a group can have parent and child permissions and child groups can inherit permissions from their parents. -To inherit the permissions from a parent group set the capability to inherit, otherwise set it explicitly to override +To inherit the permissions from a parent group set the capability to inherit, otherwise, set it explicitly to override the parents' permission. ## Create Attachment types Every attachment (that is a file associated with a part, data structure, etc.) must have an attachment type. They can -be used to group attachments logically, like differentiating between datasheets, pictures and other documents. +be used to group attachments logically, like differentiating between datasheets, pictures, and other documents. You can create/edit attachment types in the tools sidebar under "Edit -> Attachment types": ![image]({% link assets/getting_started/attachment_type_admin.png %}) -Depending on your use case different entries here make sense. For part management the following (additional) entries -maybe make sense: +Depending on your use case different entries here make sense. For part management the following (additional) entries may make sense: * Datasheets (restricted to pdfs, Allowed filetypes: `application/pdf`) * Pictures (for generic pictures of components, storage locations, etc., Allowed filetypes: `image/*` @@ -111,34 +110,34 @@ maybe make sense: For every attachment type a list of allowed file types, which can be uploaded to an attachment with this attachment type, can be defined. You can either pass a list of allowed file extensions (e.g. `.pdf, .zip, .docx`) and/or a list of [Mime Types](https://en.wikipedia.org/wiki/Media_type) (e.g. `application/pdf, image/jpeg`) or a combination of both -here. To allow all browser supported images, you can use `image/*` wildcard here. +here. To allow all browser-supported images, you can use `image/*` wildcard here. ## (Optional) Create Currencies -If you want to save price information for parts in a currency different to your global currency (by default Euro), you +If you want to save price information for parts in a currency different from your global currency (by default Euro), you have to define the additional currencies you want to use under `Edit -> Currencies`: ![image]({% link assets/getting_started/currencies_admin.png %}) -You create a new currency, name it however you want (it is recommended to use the official name of the currency) and -select the currency ISO code from the list and save it. The currency symbol is determined automatically from chose ISO +You create a new currency, name it however you want (it is recommended to use the official name of the currency), +select the currency ISO code from the list, and save it. The currency symbol is determined automatically from the chosen ISO code. You can define an exchange rate in terms of your base currency (e.g. how many euros is one unit of your currency worth) -to convert the currencies values in your preferred display currency automatically. +to convert the currency values in your preferred display currency automatically. ## (Optional) Create Measurement Units By default, Part-DB assumes that the parts in inventory can be counted by individual indivisible pieces, like LEDs in a -box or books in a shelf. +box or books on a shelf. However, if you want to manage things, that are divisible and the stock is described by a physical quantity, like -length for cables, or volumina of a liquid, you have to define additional measurement units. +length for cables, or volumes of a liquid, you have to define additional measurement units. This is possible under `Edit -> Measurement Units`: ![image]({% link assets/getting_started/units_admin.png %}) You can give the measurement unit a name and an optional unit symbol (like `m` for meters) which is shown when quantities in this unit are displayed. The option `Use SI prefix` is useful for almost all physical quantities, as big -and small numbers are automatically formatted with SI-prefixes (like 1.5kg instead 1500 grams). +and small numbers are automatically formatted with SI prefixes (like 1.5kg instead 1500 grams). The measurement unit can be selected for each part individually, by setting the option in the advanced tab of a part`s edit menu. @@ -157,16 +156,16 @@ Every part has to be assigned to a category, so you should create at least one c ## (Optional) Create Footprints Footprints are used to describe the physical shape of a part, like a resistor or a capacitor. -They can be used to group parts by their physical shape and to find parts with in the same package. +They can be used to group parts by their physical shape and to find parts within the same package. You can create/edit footprints in the tools sidebar under "Edit -> Footprints". It is useful to create footprints for the most common packages, like SMD resistors, capacitors, etc. to make it easier to find parts with the same footprint. -You should create these as a tree structure, so that you can group footprints by their type. +You should create these as a tree structure so that you can group footprints by their type. See [Concepts]({% link concepts.md %}) for an example tree structure. -You can define attachments here which are associated with the footprint. The attachment set as preview image, will be +You can define attachments here which are associated with the footprint. The attachment set as the preview image, will be used whenever a visual representation of the footprint is needed (e.g. in the part list). For many common footprints, you can use the built-in footprints, which can be found in the "Builtin footprint image diff --git a/docs/usage/import_export.md b/docs/usage/import_export.md index f3316b26..e43936cc 100644 --- a/docs/usage/import_export.md +++ b/docs/usage/import_export.md @@ -7,7 +7,7 @@ parent: Usage # Import & Export data -Part-DB offers the possibility to import existing data (parts, datastructures, etc.) from existing data sources into +Part-DB offers the possibility to import existing data (parts, data structures, etc.) from existing data sources into Part-DB. Data can also be exported from Part-DB into various formats. ## Import @@ -34,23 +34,23 @@ find in the "Tools" sidebar panel. > You will not be able to check the data before it is written to the database, so you should review the data before > using the import tool. -You can upload the file which should be imported here and choose various options on how the data should be treated: +You can upload the file that should be imported here and choose various options on how the data should be treated: * **Format**: By default "auto" is selected here and Part-DB will try to detect the format of the file automatically based on its file extension. If you want to force a specific format or Part-DB can not auto-detect the format, you can select it here. -* **CSV delimiter**: If you upload an CSV file, you can select the delimiter character which is used to separate the - columns in the CSV file. Depending on the CSV file, this might be a comma (`,`), semicolon (`;`). +* **CSV delimiter**: If you upload a CSV file, you can select the delimiter character which is used to separate the + columns in the CSV file. Depending on the CSV file, this might be a comma (`,`) or semicolon (`;`). * **Category override**: You can select (or create) a category here, to which all imported parts should be assigned, no matter what was specified in the import file. This can be useful if you want to assign all imports to a certain category or if no category is specified in the data. If you leave this field empty, the category will be determined by the import file (or the export will error, if no category is specified). * **Mark all imported parts as "Needs review"**: If this is selected, all imported parts will be marked as "Needs review" after the import. This can be useful if you want to review all imported parts before using them. -* **Create unknown datastructures**: If this is selected Part-DB will create new datastructures (like categories, - manufacturers, etc.) if no datastructure(s) with the same name and path already exists. If this is not selected, only - existing datastructures will be used and if no matching datastrucure is found, the imported parts field will be empty. -* **Path delimiter**: Part-DB allows you to create/select nested datastructures (like categories, manufacturers, etc.) +* **Create unknown data structures**: If this is selected Part-DB will create new data structures (like categories, + manufacturers, etc.) if no data structure(s) with the same name and path already exists. If this is not selected, only + existing data structures will be used and if no matching data strucure is found, the imported parts field will be empty. +* **Path delimiter**: Part-DB allows you to create/select nested data structures (like categories, manufacturers, etc.) by using a path (e.g. `Category 1->Category 1.1`, which will select/create the `Category 1.1` whose parent is `Category 1`). This path is separated by the path delimiter. If you want to use a different path delimiter than the default one (which is `>`), you can select it here. @@ -59,7 +59,7 @@ You can upload the file which should be imported here and choose various options is not selected, the import will continue for the other parts and only the invalid parts will be skipped. After you have selected the options, you can start the import by clicking the "Import" button. When the import is -finished, you will see the results of the import in the lower half of the page. You find a table with the imported +finished, you will see the results of the import in the lower half of the page. You can find a table with the imported parts (including links to them) there. #### Fields description @@ -83,14 +83,14 @@ leave them empty or do not include the column in your file. * **`manufacturing_status`**: The manufacturing status of the part, must be one of the following values: `announced`, `active`, `nrfnd`, `eol`, `discontinued` or left empty. * **`needs_review`** or **`needs_review`**: If this is set to `1`, the part will be marked as "needs review". -* **`tags`**: A comma separated list of tags for the part. +* **`tags`**: A comma-separated list of tags for the part. * **`mass`**: The mass of the part in grams. * **`ipn`**: The IPN (Item Part Number) of the part. * **`minamount`**: The minimum amount of the part which should be in stock. * **`partUnit`**: The measurement unit of the part to use. Can be a path similar to the category field. -With the following fields you can specify storage locations and amount / quantity in stock of the part. An PartLot will -be created automatically from the data and assigned to the part. The following fields are helpers for an easy import for +With the following fields, you can specify storage locations and amount/quantity in stock of the part. A PartLot will +be created automatically from the data and assigned to the part. The following fields are helpers for an easy import of parts at one storage location. If you need to create a Part with multiple PartLots you have to use JSON format (or CSV) with nested objects: @@ -99,7 +99,7 @@ field. **`amount`**, **`quantity`** or **`instock`**: The amount of the part in stock. If this value is not set, the part lot will be marked with "unknown amount" -The following fields can be used to specify the supplier/distributor, supplier product number and the price of the part. +The following fields can be used to specify the supplier/distributor, supplier product number, and the price of the part. This is only possible for a single supplier/distributor and price with these fields. If you need to specify multiple suppliers/distributors or prices, you have to use JSON format (or CSV) with nested objects. **Please note that the supplier fields is required, if you want to import prices or supplier product numbers**. If the @@ -125,31 +125,31 @@ give the user any additional information. You can export data structures (like categories, manufacturers, etc.) in the respective edit page (e.g. Tools Panel -> Edit -> Category). -If you select a certain datastructure from your list, you can export it (and optionally all sub-datastructures) in the " +If you select a certain data structure from your list, you can export it (and optionally all sub data structures) in the " Export" tab. -If you want to export all datastructures of a certain type (e.g. all categories in your database), you can select the " +If you want to export all data structures of a certain type (e.g. all categories in your database), you can select the " Export all" function in the "Import / Export" tab of the "new element" page. You can select between the following export formats: -* **CSV** (Comma Separated Values): A semicolon separated list of values, where every line represents an element. This +* **CSV** (Comma Separated Values): A semicolon-separated list of values, where every line represents an element. This format can be imported into Excel or LibreOffice Calc and is easy to work with. However, it does not support nested - datastructures or sub data (like parameters, attachments, etc.), very well (many columns are generated, as every - possible sub data is exported as a separate column). + data structures or sub data (like parameters, attachments, etc.), very well (many columns are generated, as every + possible sub-data is exported as a separate column). * **JSON** (JavaScript Object Notation): A text-based format, which is easy to work with programming languages. It - supports nested datastructures and sub data (like parameters, attachments, etc.) very well. However, it is not easy to - work with in Excel or LibreOffice Calc and you maybe need to write some code to work with the exported data + supports nested data structures and sub-data (like parameters, attachments, etc.) very well. However, it is not easy to + work with in Excel or LibreOffice Calc and you may need to write some code to work with the exported data efficiently. -* **YAML** (Yet another Markup Language): Very similar to JSON -* **XML** (Extensible Markup Language): Good support with nested datastructures. Similar use case as JSON and YAML. +* **YAML** (Yet Another Markup Language): Very similar to JSON +* **XML** (Extensible Markup Language): Good support with nested data structures. Similar use cases as JSON and YAML. Also, you can select between the following export levels: * **Simple**: This will only export very basic information about the name (like the name, or description for parts) -* **Extended**: This will export all commonly used information about this datastructure (like notes, options, etc.) -* **Full**: This will export all available information about this datastructure (like all parameters, attachments) +* **Extended**: This will export all commonly used information about this data structure (like notes, options, etc.) +* **Full**: This will export all available information about this data structure (like all parameters, attachments) -Please note that the level will also be applied to all sub data or children elements. So if you select "Full" for a +Please note that the level will also be applied to all sub-data or children elements. So if you select "Full" for a part, all the associated categories, manufacturers, footprints, etc. will also be exported with all available information, this can lead to very large export files. @@ -158,4 +158,4 @@ information, this can lead to very large export files. You can export parts in all part tables. Select the parts you want via the checkbox in the table line and select the export format and level in the appearing menu. -See the section about exporting datastructures for more information about the export formats and levels. \ No newline at end of file +See the section about exporting data structures for more information about the export formats and levels. \ No newline at end of file From 861c0174df453a4cf85302b6b955c2810220a066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 23 Feb 2024 14:26:17 +0100 Subject: [PATCH 079/634] Fixed more typos and grammar issues in docs --- docs/concepts.md | 98 +++++++++++------------ docs/configuration.md | 71 ++++++++-------- docs/index.md | 6 +- docs/partkeepr_migration.md | 26 +++--- docs/troubleshooting.md | 4 +- docs/upgrade_legacy.md | 31 ++++--- docs/usage/information_provider_system.md | 39 +++++---- docs/usage/keybindings.md | 4 +- docs/usage/labels.md | 14 ++-- docs/usage/tips_tricks.md | 40 +++++---- 10 files changed, 164 insertions(+), 169 deletions(-) diff --git a/docs/concepts.md b/docs/concepts.md index 2511defe..b0861ffa 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -11,55 +11,55 @@ This page explains the different concepts of Part-DB and what their intended use 1. TOC {:toc} -## Part managment +## Part management ### Part A part is the central concept of Part-DB. A part represents a single kind (or type) of a thing, like an electronic component, a device, a book or similar (depending on what you use Part-DB for). A part entity just represents a certain -type of thing, so if you have 1000 times an BC547 transistor you would create ONE part with the name BC547 and set its +type of thing, so if you have 1000 times a BC547 transistor you would create ONE part with the name BC547 and set its quantity to 1000. The individual quantities (so a single BC547 transistor) of a part, should be indistinguishable from -each other, so that it does not matter which one of your 1000 things of Part you use. -A part entity have many fields, which can be used to describe it better. Most of the fields are optional: +each other so that it does not matter which one of your 1000 things of Part you use. +A part entity has many fields, which can be used to describe it better. Most of the fields are optional: -* **Name** (Required): The name of the part or how you want to call it. This could be a manufacturer provided name, or a - name you thought of your self. The name have to be unique in a single category. -* **Description**: A short (single-line) description of what this part is/does. For longer information you should use +* **Name** (Required): The name of the part or how you want to call it. This could be a manufacturer-provided name, or a + name you thought of yourself. The name have to be unique in a single category. +* **Description**: A short (single-line) description of what this part is/does. For longer information, you should use the comment field or the specifications * **Category** (Required): The category (see there) to which this part belongs to. -* **Tags**: The list of tags this part belong to. Tags can be used to group parts logically (similar to the category), +* **Tags**: The list of tags this part belongs to. Tags can be used to group parts logically (similar to the category), but tags are much less strict and formal (they don't have to be defined forehands) and you can assign multiple tags to a part. When clicking on a tag, a list with all parts which have the same tag, is shown. * **Min Instock**: *Not really implemented yet*. Parts where the total instock is below this value, will show up for ordering. * **Footprint**: See there. Useful especially for electronic parts, which have one of the common electronic footprints ( - like DIP8, SMD0805 or similar). If a part has no explicit defined preview picture, the preview picture of its + like DIP8, SMD0805 or similar). If a part has no explicitly defined preview picture, the preview picture of its footprint will be shown instead in tables. * **Manufacturer**: The manufacturer which has manufactured (not sold) this part. See Manufacturer entity for more info. * **Manufacturer part number** (MPN): If you have used your own name for a part, you can put the part number the - manufacturer uses in this field, so that you can find a part also under its manufacturer number. + manufacturer uses in this field so that you can find a part also under its manufacturer number. * **Link to product page**: If you want to link to the manufacturer website of a part, and it is not possible to determine it automatically from the part name, set in the manufacturer entity (or no manufacturer is set), you can set the link here for each part individually. * **Manufacturing Status**: The manufacturing status of this part, meaning the information about where the part is in its manufacturing lifecycle. -* **Needs review**: If you think parts information maybe are inaccurate or incomplete and needs some later - review/checking, you can set this flag. A part with this flag is marked, so that users know the information are not +* **Needs review**: If you think parts information may be inaccurate or incomplete and needs some later + review/checking, you can set this flag. A part with this flag is marked, so that users know the information is not completely trustworthy. * **Favorite**: Parts with this flag are highlighted in parts lists * **Mass**: The mass of a single piece of this part (so of a single transistor). Given in grams. -* **Internal Part number** (IPN): Each part is automatically assigned a numerical ID which identifies a part in the +* **Internal Part number** (IPN): Each part is automatically assigned a numerical ID that identifies a part in the database. This ID depends on when a part was created and can not be changed. If you want to assign your own unique identifiers, or sync parts identifiers with the identifiers of another database you can use this field. ### Stock / Part lot -A part can have many stock at multiple different locations. This is represented by part lots / stocks, which consists -basically of a storage location (so where are the parts of this lot are stored) and an amount (how many parts are there). +A part can have many stocks at multiple different locations. This is represented by part lots/stocks, which consists +basically of a storage location (so where the parts of this lot are stored) and an amount (how many parts are there). ### Purchase Information -The purchase information describe where the part can be bought (at which vendors) and to which prices. +The purchase information describes where the part can be bought (at which vendors) and at which prices. The first part (the order information) describes at which supplier the part can be bought and which is the name of the part under which you can order the part there. An order information can contain multiple price information, which describes the prices for the part at the supplier @@ -67,13 +67,13 @@ including bulk discount, etc. ### Parameters -Parameters represents various specifications / parameters of a part, like the maximum current of a diode, etc. The +Parameters represent various specifications/parameters of a part, like the maximum current of a diode, etc. The advantage of using parameters instead of just putting the data in the comment field or so, is that you can filter for -parameters values (including ranges and more) later on. -Parameters describe can describe numeric values and/or text values for which they can be filtered. This basically allows +parameter's values (including ranges and more) later on. +Parameters can describe numeric values and/or text values for which they can be filtered. This allows you to define custom fields on a part. -Using the group field a parameter allows you to group parameters together in the info page later (all parameters with +Using the group field as a parameter allows you to group parameters together on the info page later (all parameters with the same group value will be shown under the same group title). ## Core data @@ -99,17 +99,17 @@ possible category tree could look like this: ### Supplier -A Supplier is a vendor / distributor where you can buy/order parts. Price information of parts are associated with a +A Supplier is a vendor/distributor where you can buy/order parts. Price information of parts is associated with a supplier. ### Manufacturer -A manufacturer represents the company that manufacturer / build various parts (not necessary sell them). If the -manufacturer also sell the parts, you have to create a supplier for that. +A manufacturer represents the company that manufacturers/builds various parts (not necessarily sell them). If the +manufacturer also sells the parts, you have to create a supplier for that. ### Storage location -A storage location represents a place where parts can be stored. This could be a box, a shelf or other things (like the +A storage location represents a place where parts can be stored. This could be a box, a shelf, or other things (like the SMD feeder of a machine or so). Storage locations are hierarchical to represent storage locations contained in each other. @@ -129,12 +129,12 @@ Storage locations should be defined down to the smallest possible location, to m ### Footprint -In electronics many components have one of the common components cases / footprints. The footprint entity describes such +In electronics, many components have one of the common components cases/footprints. The footprint entity describes such common footprints, which can be assigned to parts. -You can assign an image (and an 3D model) as an attachment to a footprint, which will be used as preview for parts with +You can assign an image (and a 3D model) as an attachment to a footprint, which will be used as preview for parts with this footprint, even if the parts do not have an explicitly assigned preview image. -Footprints are a hierarchically which allows you to build logical sorted trees. An example tree could look like this: +Footprints are hierarchically which allows you to build logically sorted trees. An example tree could look like this: * Through-Hole components * DIP @@ -153,17 +153,17 @@ Footprints are a hierarchically which allows you to build logical sorted trees. ### Measurement Unit By default, part instock is counted in number of individual parts, which is fine for things like electronic components, -which exists only in integer quantities. However, if you have things with fractional units like the length of a wire or +which exist only in integer quantities. However, if you have things with fractional units like the length of a wire or the volume of a liquid, you have to define a measurement unit. -The measurement unit represents a physical quantity like mass, volume or length. +The measurement unit represents a physical quantity like mass, volume, or length. -You can define a short unit for it (like m for Meters, or g for gramms) which will be shown, when a quantity of a part +You can define a short unit for it (like m for Meters, or g for grams) which will be shown when a quantity of a part with this unit is shown. ### Currency By default, all prices are set in the base currency configured for the instance (by default euros). If you want to use -multiple currencies together (as e.g. vendors use foreign currencies for their price, and you do not want to update the +multiple currencies together (e.g. vendors use foreign currencies for their price, and you do not want to update the prices for every exchange rate change), you have to define these currencies here. You can set an exchange rate here in terms of the base currency (or fetch it from the internet if configured). The @@ -173,57 +173,57 @@ exchange rate will be used to show users the prices in their preferred currency. ### Attachment -An attachment is a file that can be associated with another entity (like a Part, Storelocation, User, etc.). This could +An attachment is a file that can be associated with another entity (like a Part, location, User, etc.). This could for example be a datasheet in a Part, the logo of a vendor or some CAD drawing of a footprint. An attachment has an attachment type (see below), which groups the attachments logically (and optionally restricts the allowed file types), a name describing the attachment and a file. The file can either be uploaded to the server and stored there, or given as a link to a file on another web path. If configured in the settings, it is also possible that -the webserver downloads the file from the supplied website and stores it locally on the server. +the web server downloads the file from the supplied website and stores it locally on the server. By default, all uploaded files, are accessible for everyone (even non-logged-in users), if the link is known. If your Part-DB instance is publicly available, and you want to store private/sensitive files on it, you should mark the -attachment as "Private attachment". Private attachments are only accessible to users, which has the permission to access +attachment as "Private attachment". Private attachments are only accessible to users, which has permission to access private attachments. -Please not, that no thumbnails are generated for private attachments, which can have a performance impact. +Please note, that no thumbnails are generated for private attachments, which can have a performance impact. Part-DB ships some preview images for various common footprints like DIP-8 and others, as internal resources. These can be accessed/searched by typing the keyword in the URL field of a part and choosing one of the choices from the dropdown. -### Preview image / attachment +### Preview image/attachment Most entities with attachments allow you to select one of the defined attachments as "Preview image". You can select an image attachment here, that previews the entity, this could be a picture of a Part, the logo of a manufacturer or supplier, the schematic symbol of a category or the image of a footprint. -The preview image will be shown in various locations together with the entities name. +The preview image will be shown in various locations together with the entity's name. -Please note that as long as the picture is not secret, it should be stored on the Part-DB instance (by upload, or -letting Part-DB download the file) and *not* be marked as a private attachments, so that thumbnails can be generated for +Please note that as long as the picture is not secret, it should be stored on the Part-DB instance (by uploading, or +letting Part-DB download the file) and *not* be marked as a private attachment, so that thumbnails can be generated for the picture (which improves performance). ### Attachment types Attachment types define logical groups of attachments. For example, you could define an attachment group "Datasheets" where all datasheets of Parts, Footprints, etc. belong in, "Pictures" for preview images and more. -You can define file type restrictions, which file types and extensions are allowed for files with that attachment type. +You can define file type restrictions, and which file types and extensions are allowed for files with that attachment type. ## User System ### User -Each person which should be able to use Part-DB (by logging in) is represented by a user entity, which defines things -like access rights, the password, and other things. For security reasons, every person which will use Part-DB should use -its own personal account with a secret password. This allows to track activity of the users via the log. +Each person who should be able to use Part-DB (by logging in) is represented by a user entity, which defines things +like access rights, the password, and other things. For security reasons, every person who will use Part-DB should use +their own personal account with a secret password. This allows to track activity of the users via the log. -There is a special user called `anonymous`, whose access rights are used to determine what a non-logged in user can do. +There is a special user called `anonymous`, whose access rights are used to determine what a non-logged-in user can do. Normally the anonymous user should be the most restricted user. For simplification of access management users can be assigned to groups. ### Group -A group is entity, to which users can be assigned to. This can be used to logically group users by for example -organisational structures and to simplify permissions management, as you can define groups with access rights for common +A group is an entity, to which users can be assigned to. This can be used to logically group users by for example +organizational structures and to simplify permissions management, as you can define groups with access rights for common use cases and then just assign users to them, without the need to change every permission on the users individually. ## Labels @@ -231,9 +231,9 @@ use cases and then just assign users to them, without the need to change every p ### Label profiles A label profile represents a template for a label (for a storage location, a part or part lot). It consists of a size, a -barcode type and the content. There are various placeholders which can be inserted in the text content and which will be -used replaced with data for the actual thing. +barcode type and the content. There are various placeholders that can be inserted in the text content and which will be +replaced with data for the actual thing. You do not have to define a label profile to generate labels (you can just set the settings on the fly in the label -dialog), however if you want to generate many labels, it is recommended to save the settings as label profile, to save +dialog), however, if you want to generate many labels, it is recommended to save the settings as a label profile, to save it for later usage. This ensures that all generated labels look the same. \ No newline at end of file diff --git a/docs/configuration.md b/docs/configuration.md index 1805ad01..a251ca3d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -6,21 +6,21 @@ nav_order: 5 # Configuration -Part-DBs behavior can be configured to your needs. There are different kind of configuration options: Options which are -user changeable (changeable dynamically via frontend), options which can be configured by environment variables, and -options which are only configurable via symfony config files. +Part-DBs behavior can be configured to your needs. There are different kinds of configuration options: Options, which are +user-changeable (changeable dynamically via frontend), options that can be configured by environment variables, and +options that are only configurable via Symfony config files. ## User changeable -Following things can be changed for every user and a user can change it for himself (if he has the correct permission -for it). Configuration is either possible via the users own setting page (where you can also change the password) or via +The following things can be changed for every user and a user can change it for himself (if he has the correct permission +for it). Configuration is either possible via the user's own settings page (where you can also change the password) or via the user admin page: -* **Language**: The language that the users prefers, and which will be used when no language is explicitly specified. - Language can still always be changed via the language selector. By default, the global configured language is used. -* **Timezone**: The timezone which the user resides in and in which all dates and times should be shown. By default, the +* **Language**: The language that the users prefer, and which will be used when no language is explicitly specified. + Language can still always be changed via the language selector. By default, the globally configured language is used. +* **Timezone**: The timezone in which the user resides and in which all dates and times should be shown. By default, the globally configured language. -* **Theme**: The theme to use for the frontend. Allows the user to choose the frontend design, he prefers. +* **Theme**: The theme to use for the front end. Allows the user to choose the front end design, he prefers. * **Preferred currency**: One of the defined currencies, in which all prices should be shown, if possible. Prices with other currencies will be converted to the price selected here @@ -28,19 +28,19 @@ the user admin page: The following configuration options can only be changed by the server administrator, by either changing the server variables, changing the `.env.local` file or setting env for your docker container. Here are just the most important -options listed, see `.env` file for full list of possible env variables. +options listed, see `.env` file for the full list of possible env variables. ### General options * `DATABASE_URL`: Configures the database which Part-DB uses. For mysql use a string in the form of `mysql://:@:/` here - (e.g. `DATABASE_URL=mysql://user:password@127.0.0.1:3306/part-db`). For sqlite use the following format to specify the + (e.g. `DATABASE_URL=mysql://user:password@127.0.0.1:3306/part-db`). For SQLite use the following format to specify the absolute path where it should be located `sqlite:///path/part/app.db`. You can use `%kernel.project_dir%` as placeholder for the Part-DB root folder (e.g. `sqlite:///%kernel.project_dir%/var/app.db`) * `DATABASE_MYSQL_USE_SSL_CA`: If this value is set to `1` or `true` and a MySQL connection is used, then the connection is encrypted by SSL/TLS and the server certificate is verified against the system CA certificates or the CA certificate bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept all certificates. -* `DEFAULT_LANG`: The default language to use server wide (when no language is explicitly specified by a user or via +* `DEFAULT_LANG`: The default language to use server-wide (when no language is explicitly specified by a user or via language chooser). Must be something like `en`, `de`, `fr`, etc. * `DEFAULT_TIMEZONE`: The default timezone to use globally, when a user has no timezone specified. Must be something like `Europe/Berlin`. See [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) under TZ Database name @@ -53,7 +53,7 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept * `INSTANCE_NAME`: The name of your installation. It will be shown as a title in the navbar and other places. By default `Part-DB`, but you can customize it to something likes `ExampleCorp. Inventory`. * `ALLOW_ATTACHMENT_DOWNLOADS` (allowed values `0` or `1`): By setting this option to 1, users can make Part-DB directly - download a file specified as a URL and create it as local file. Please note that this allows users access to all + download a file specified as a URL and create it as a local file. Please note that this allows users access to all resources publicly available to the server (so full access to other servers in the same local network), which could be a security risk. * `ATTACHMENT_DOWNLOAD_BY_DEFAULT`: When this is set to 1, the "download external file" checkbox is checked by default @@ -63,7 +63,7 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept not set their own picture). The users browsers have to download the pictures from a third-party (gravatar) server, so this might be a privacy risk. * `MAX_ATTACHMENT_FILE_SIZE`: The maximum file size (in bytes) for attachments. You can use the suffix `K`, `M` or `G` - to specify the size in kilobytes, megabytes or gigabytes. By default `100M` (100 megabytes). Please note that this + to specify the size in kilobytes, megabytes or gigabytes. By default `100M` (100 megabytes). Please note that this is only the limit of Part-DB. You still need to configure the php.ini `upload_max_filesize` and `post_max_size` to allow bigger files to be uploaded. * `DEFAULT_URI`: The default URI base to use for the Part-DB, when no URL can be determined from the browser request. @@ -71,8 +71,8 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept emails and other places, where the URL is needed. It is also used, when SAML is enabled.s If you are using a reverse proxy, you should set this to the URL of the reverse proxy (e.g. `https://part-db.example.com`). **This value must end with a slash**. -* `ENFORCE_CHANGE_COMMENTS_FOR`: With this option you can configure, where users are enforced to give a change reason, - which will be written to the log. This is a comma separated list of values (e.g. `part_edit,part_delete`). Leave empty +* `ENFORCE_CHANGE_COMMENTS_FOR`: With this option, you can configure, where users are enforced to give a change reason, + which will be written to the log. This is a comma-separated list of values (e.g. `part_edit,part_delete`). Leave empty to make change comments optional everywhere. Possible values are: * `part_edit`: Edit operation of an existing part * `part_delete`: Delete operation of an existing part @@ -91,10 +91,10 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept mail account, you can use the following syntax `MAILER_DSN=smtp://user:password@smtp.mailserver.invalid:587` * `EMAIL_SENDER_EMAIL`: The email address from which emails should be sent from (in most cases this has to be the same as the email address used for SMTP access) -* `EMAIL_SENDER_NAME`: Similar to `EMAIL_SENDER_EMAIL` but this allows you to specify the name from which the mails are +* `EMAIL_SENDER_NAME`: Similar to `EMAIL_SENDER_EMAIL`, but this allows you to specify the name from which the mails are sent from. * `ALLOW_EMAIL_PW_RESET`: Set this value to true, if you want to allow users to reset their password via an email - notification. You have to configure the mailprovider first before via the MAILER_DSN setting. + notification. You have to configure the mail provider first before via the MAILER_DSN setting. ### Table related settings @@ -105,15 +105,15 @@ bundled with Part-DB. Set `DATABASE_MYSQL_SSL_VERIFY_CERT` if you want to accept Also specify the default order of the columns. This is a comma separated list of column names. Available columns are: `name`, `id`, `ipn`, `description`, `category`, `footprint`, `manufacturer`, `storage_location`, `amount`, `minamount`, `partUnit`, `addedDate`, `lastModified`, `needs_review`, `favorite`, `manufacturing_status`, `manufacturer_product_number`, `mass`, `tags`, `attachments`, `edit`. -### History/Eventlog related settings +### History/Eventlog-related settings The following options are used to configure, which (and how much) data is written to the system log: -* `HISTORY_SAVE_CHANGED_FIELDS`: When this option is set to true, the name of the fields which are changed, are saved to +* `HISTORY_SAVE_CHANGED_FIELDS`: When this option is set to true, the name of the fields that are changed, are saved to the DB (so for example it is logged that a user has changed, that the user has changed the name and description of the field, but not the data/content of these changes) * `HISTORY_SAVE_CHANGED_DATA`: When this option is set to true, the changed data is saved to log (so it is logged, that - a user has changed the name of a part and what the name was before). This can increase database size, when you have a + a user has changed the name of a part and what the name was before). This can increase database size when you have a lot of changes to entities. * `HISTORY_SAVE_REMOVED_DATA`: When this option is set to true, removed data is saved to log, meaning that you can easily undelete an entity, when it was removed accidentally. @@ -126,10 +126,10 @@ then `HISTORY_SAVE_CHANGED_FIELDS`, `HISTORY_SAVE_CHANGED_DATA` and `HISTORY_SAV ### Error pages settings -* `ERROR_PAGE_ADMIN_EMAIL`: You can set an email-address here, which is shown on the error page, who should be contacted +* `ERROR_PAGE_ADMIN_EMAIL`: You can set an email address here, which is shown on the error page, who should be contacted about the issue (e.g. an IT support email of your company) * `ERROR_PAGE_SHOW_HELP`: Set this 0, to disable the solution hints shown on an error page. These hints should not - contain sensitive information, but could confuse end-users. + contain sensitive information but could confuse end-users. ### EDA related settings @@ -143,21 +143,21 @@ then `HISTORY_SAVE_CHANGED_FIELDS`, `HISTORY_SAVE_CHANGED_DATA` and `HISTORY_SAV The following settings can be used to enable and configure Single-Sign on via SAML. This allows users to log in to Part-DB without entering a username and password, but instead they are redirected to a SAML Identity Provider (IdP) and -are logged in automatically. This is especially useful, when you want to use Part-DB in a company, where all users have +are logged in automatically. This is especially useful when you want to use Part-DB in a company, where all users have a SAML account (e.g. via Active Directory or LDAP). You can find more advanced settings in the `config/packages/hslavich_onelogin_saml.yaml` file. Please note that this file is not backed up by the backup script, so you have to back up it manually, if you want to keep your changes. If you want to edit it on docker, you have to map the file to a volume. * `SAML_ENABLED`: When this is set to 1, SAML SSO is enabled and the SSO Login button is shown in the login form. You - have to configure the SAML settings below, before you can use this feature. + have to configure the SAML settings below before you can use this feature. * `SAML_BEHIND_PROXY`: Set this to 1, if Part-DB is behind a reverse proxy. See [here]({% link installation/reverse-proxy.md %}) for more information. Otherwise, leave it to 0 (default.) -* `SAML_ROLE_MAPPING`: A [JSON](https://en.wikipedia.org/wiki/JSON) encoded map which specifies how Part-DB should +* `SAML_ROLE_MAPPING`: A [JSON](https://en.wikipedia.org/wiki/JSON)-encoded map which specifies how Part-DB should convert the user roles given by SAML attribute `group` should be converted to a Part-DB group (specified by ID). You can use a wildcard `*` to map all otherwise unmapped roles to a certain group. Example: `{"*": 1, "admin": 2, "editor": 3}`. This would map all roles to the group with ID 1, except the - role `admin`, which is mapped to the group with ID 2 and the role `editor`, which is mapped to the group with ID 3. + role `admin`, which is mapped to the group with ID 2, and the role `editor`, which is mapped to the group with ID 3. * `SAML_UPDATE_GROUP_ON_LOGIN`: When this is enabled the group of the user is updated on every login of the user based on the SAML role attributes. When this is disabled, the group is only assigned on the first login of the user, and a Part-DB administrator can change the group afterward by editing the user. @@ -185,27 +185,27 @@ want to edit it on docker, you have to map the file to a volume. The settings prefixes with `PROVIDER_*` are used to configure the information providers. See the [information providers]({% link usage/information_provider_system.md %}) page for more information. -### Other / less used options +### Other / less-used options * `TRUSTED_PROXIES`: Set the IP addresses (or IP blocks) of trusted reverse proxies here. This is needed to get correct IP information (see [here](https://symfony.com/doc/current/deployment/proxies.html) for more info). * `TRUSTED_HOSTS`: To prevent `HTTP Host header attacks` you can set a regex containing all host names via which Part-DB should be accessible. If accessed via the wrong hostname, an error will be shown. * `DEMO_MODE`: Set Part-DB into demo mode, which forbids users to change their passwords and settings. Used for the demo - instance, should not be needed for normal installations. + instance. This should not be needed for normal installations. * `NO_URL_REWRITE_AVAILABLE` (allowed values `true` or `false`): Set this value to true, if your webserver does not - support rewrite. In this case, all URL paths will contain index.php/, which is needed then. Normally this setting do + support rewrite. In this case, all URL paths will contain index.php/, which is needed then. Normally this setting does not need to be changed. -* `REDIRECT_TO_HTTPS`: If this is set to true, all requests to http will be redirected to https. This is useful, if your - webserver does not already do this (like the one used in the demo instance). If your webserver already redirects to - https, you don't need to set this. Ensure that Part-DB is accessible via https, before you enable this setting. +* `REDIRECT_TO_HTTPS`: If this is set to true, all requests to http will be redirected to https. This is useful if your + web server does not already do this (like the one used in the demo instance). If your web server already redirects to + https, you don't need to set this. Ensure that Part-DB is accessible via HTTPS before you enable this setting. * `FIXER_API_KEY`: If you want to automatically retrieve exchange rates for base currencies other than euros, you have to configure an exchange rate provider API. [Fixer.io](https://fixer.io/) is preconfigured, and you just have to register there and set the retrieved API key in this environment variable. * `APP_ENV`: This value should always be set to `prod` in normal use. Set it to `dev` to enable debug/development mode. (**You should not do this on a publicly accessible server, as it will leak sensitive information!**) * `BANNER`: You can configure the text that should be shown as the banner on the homepage. Useful especially for docker - container. In all other applications you can just change the `config/banner.md` file. + containers. In all other applications you can just change the `config/banner.md` file. ## Banner @@ -218,8 +218,7 @@ markdown (and even some subset of HTML) syntax to format the text. You can also configure some options via the `config/parameters.yaml` file. This should normally not need, and you should know what you are doing, when you change something here. You should expect, that you will have to do some manual merge, when you have changed something here and update to a newer version of Part-DB. It is possible that -configuration -options here will change or completely removed in future versions of Part-DB. +configuration options here will change or be completely removed in future versions of Part-DB. If you change something here, you have to clear the cache, before the changes will take effect with the command `bin/console cache:clear`. diff --git a/docs/index.md b/docs/index.md index 55d3e379..7dafabf5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,10 +25,10 @@ It is installed on a web server and so can be accessed with any browser without ## Features -* Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer +* Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer, and multiple store locations and price information. Parts can be grouped using tags. You can associate various files like datasheets or pictures with the parts. -* Multi-Language support (currently German, English, Russian, Japanese and French (experimental)) +* Multi-language support (currently German, English, Russian, Japanese and French (experimental)) * Barcodes/Labels generator for parts and storage locations, scan barcodes via webcam using the builtin barcode scanner * User system with groups and detailed (fine granular) permissions. Two-factor authentication is supported (Google Authenticator and Webauthn/U2F keys) and can be enforced for groups. @@ -46,7 +46,7 @@ It is installed on a web server and so can be accessed with any browser without * Support for multiple currencies and automatic update of exchange rates supported * Powerful search and filter function, including parametric search (search for parts according to some specifications) * Easy migration from an existing PartKeepr instance (see [here]({%link partkeepr_migration.md %})) -* Use cloud providers (like Octopart, Digikey, farnell or TME) to automatically get part information, datasheets and +* Use cloud providers (like Octopart, Digikey, Farnell or TME) to automatically get part information, datasheets and prices for parts (see [here]({% link usage/information_provider_system.md %})) * API to access Part-DB from other applications/scripts * [Integration with KiCad]({%link usage/eda_integration.md %}): Use Part-DB as central datasource for your diff --git a/docs/partkeepr_migration.md b/docs/partkeepr_migration.md index 05a7eb70..e37f8055 100644 --- a/docs/partkeepr_migration.md +++ b/docs/partkeepr_migration.md @@ -12,34 +12,34 @@ nav_order: 101 This guide describes how to migrate from [PartKeepr](https://partkeepr.org/) to Part-DB. Part-DB has a built-in migration tool, which can be used to migrate the data from an existing PartKeepr instance to -a new Part-DB instance. Most of the data can be migrated, however there are some limitations, you can find below. +a new Part-DB instance. Most of the data can be migrated, however, there are some limitations, that you can find below. ## What can be imported -* Datastructures (Categories, Footprints, Storage Locations, Manufacturers, Distributors, Part Measurement Units) -* Basic part information's (Name, Description, Comment, etc.) -* Attachments and images of parts, projects, footprints, manufacturers and storage locations +* Data structures (Categories, Footprints, Storage Locations, Manufacturers, Distributors, Part Measurement Units) +* Basic part information (Name, Description, Comment, etc.) +* Attachments and images of parts, projects, footprints, manufacturers, and storage locations * Part prices (distributor infos) * Part parameters * Projects (including parts and attachments) -* Users (optional): Passwords however will be not migrated, and need to be reset later +* Users (optional): Passwords however will not be migrated, and need to be reset later ## What can't be imported -* Metaparts (A dummy version of the metapart will be created in Part-DB, however it will not function as metapart) +* Metaparts (A dummy version of the metapart will be created in Part-DB, however, it will not function as metapart) * Multiple manufacturers per part (only the last manufacturer of a part will be migrated) -* Overage information for project parts (the overage info will be set as comment in the project BOM, but will have no +* Overage information for project parts (the overage info will be set as a comment in the project BOM, but will have no effect) * Batch Jobs * Parameter Units (the units will be written into the parameters) * Project Reports and Project Runs -* Stock history +* Stock History * Any kind of PartKeepr preferences ## How to migrate -1. Install Part-DB like described in the installation guide. You can use any database backend you want (mysql or - sqlite). Run the database migration, but do not create any new data yet. +1. Install Part-DB as described in the installation guide. You can use any database backend you want (MySQL or + SQLite). Run the database migration, but do not create any new data yet. 2. Export your PartKeepr database as XML file using [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html): When the MySQL database is running on the local computer, and you are root you can just run the command `mysqldump --xml PARTKEEPR_DATABASE --result-file pk.xml`. @@ -47,7 +47,7 @@ a new Part-DB instance. Most of the data can be migrated, however there are some run `mysqldump --xml -h PARTKEEPR_HOST -u PARTKEEPR_USER -p PARTKEEPR_DATABASE`, where you replace `PARTKEEPR_HOST` with the hostname of your MySQL database and `PARTKEEPR_USER` with the username of MySQL user which has access to the PartKeepr database. You will be asked for the MySQL user password. -3. Go the Part-DB main folder and run the command `php bin/console partdb:migrations:import-partkeepr path/to/pk.xml`. +3. Go to the Part-DB main folder and run the command `php bin/console partdb:migrations:import-partkeepr path/to/pk.xml`. This step will delete all existing data in the Part-DB database and import the contents of PartKeepr. 4. Copy the contents of `data/files/` from your PartKeepr installation to the `uploads/` folder of your Part-DB installation and the contents of `data/images` from PartKeepr to `public/media/` of Part-DB. @@ -63,5 +63,5 @@ option on the database import command (step 3): All imported users of PartKeepr will be assigned to a new group "PartKeepr Users", which has normal user permissions (so editing data, but no administrative tasks). You can change the group and permissions later in Part-DB users management. -Passwords can not be imported from PartKeepr and all imported users get marked as disabled user. So to allow users to -login, you need to enable them in the user management and assign a password. \ No newline at end of file +Passwords can not be imported from PartKeepr and all imported users get marked as disabled. So to allow users to +log in, you need to enable them in the user management and assign a password. \ No newline at end of file diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 8c267c7a..f20a7f22 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -16,7 +16,7 @@ on how to fix the problem. If you have a problem that is not listed here, please If you encounter an error, try the following steps: -* Clear cache of Part-DB with the console command: +* Clear the cache of Part-DB with the console command: ```bash php bin/console cache:clear @@ -30,7 +30,7 @@ php bin/console doctrine:migrations:migrate If this does not help, please [open an issue on GitHub](https://github.com/Part-DB/Part-DB-symfony). -## Search for user and reset password: +## Search for the user and reset the password: You can list all users with the following command: `php bin/console partdb:users:list` To reset the password of a user you can use the following diff --git a/docs/upgrade_legacy.md b/docs/upgrade_legacy.md index dbb93a98..e1e43831 100644 --- a/docs/upgrade_legacy.md +++ b/docs/upgrade_legacy.md @@ -18,33 +18,32 @@ sections carefully before proceeding to upgrade. * PHP 8.1 or higher is required now (Part-DB 0.5 required PHP 5.4+, Part-DB 0.6 PHP 7.0). Releases are available for Windows too, so almost everybody should be able to use PHP 8.1 -* **Console access highly required.** The installation of composer and frontend dependencies require console access, - also more sensitive stuff like database migration work via CLI now, so you should have console access on your server. +* **Console access is highly recommended.** The installation of composer and frontend dependencies require console access, + also more sensitive stuff like database migration works via CLI now, so you should have console access on your server. * Markdown/HTML is now used instead of BBCode for rich text in description and command fields. It is possible to migrate your existing BBCode to Markdown via `php bin/console php bin/console partdb:migrations:convert-bbcode`. -* Server exceptions are not logged to event log anymore. For security reasons (exceptions can contain sensitive - information) - exceptions are only logged to server log (by default under './var/log'), so only the server admins can access it. -* Profile labels are now saved in Database (before they were saved in a separate JSON file). **The profiles of legacy +* Server exceptions are not logged into event log anymore. For security reasons (exceptions can contain sensitive + information) exceptions are only logged to server log (by default under './var/log'), so only the server admins can access it. +* Profile labels are now saved in the database (before they were saved in a separate JSON file). **The profiles of legacy Part-DB versions can not be imported into new Part-DB 1.0** -* Label placeholders now use the `[[PLACEHOLDER]]` format instead of `%PLACEHOLDER%`. Also, some placeholders has +* Label placeholders now use the `[[PLACEHOLDER]]` format instead of `%PLACEHOLDER%`. Also, some placeholders have changed. -* Configuration is now done via configuration files / environment variables instead of the WebUI (this maybe change in +* Configuration is now done via configuration files/environment variables instead of the WebUI (this may change in the future). -* Database updated are now done via console instead of the WebUI +* Database updates are now done via console instead of the WebUI * Permission system changed: **You will have to newly set the permissions of all users and groups!** -* Import / Export file format changed. Fields must be english now (unlike in legacy Part-DB versions, where german +* Import / Export file format changed. Fields must be English now (unlike in legacy Part-DB versions, where German fields in CSV were possible) - and you maybe have to change the header line/field names of your CSV files. + and you may have to change the header line/field names of your CSV files. ## Missing features -* No possibility to mark parts for ordering (yet) +* No possibility of marking parts for ordering (yet) * No support for 3D models of footprints (yet) -* No possibility to disable footprints, manufacturers globally (or per category). This should not have a big impact, +* No possibility to disable footprints, manufacturers globally (or per category). This should not have a big impact when you forbid users to edit/create them. -* No resistor calculator or SMD labels tools +* No resistor calculator or SMD label tools ## Upgrade process @@ -56,12 +55,12 @@ sections carefully before proceeding to upgrade. > Beware that all user and group permissions will be reset, and you have to set the permissions again > the new Part-DB as many permissions changed, and automatic migration is not possible. -1. Upgrade your existing Part-DB version the newest Part-DB 0.5.* version (at the moment Part-DB 0.5.8), like described +1. Upgrade your existing Part-DB version the newest Part-DB 0.5.* version (at the moment Part-DB 0.5.8), as described in the old Part-DB's repository. 2. Make a backup of your database and attachments. If something goes wrong during migration, you can use this backup to start over. If you have some more complex permission configuration, you maybe want to do screenshots of it, so you can redo it again later. -3. Set up the new Part-DB like described in installation section. You will need to do the setup for a MySQL instance ( +3. Set up the new Part-DB as described in the installation section. You will need to do the setup for a MySQL instance ( either via docker or direct installation). Set the `DATABASE_URL` environment variable in your `.env.local` ( or `docker-compose.yaml`) to your existing database. ( e.g. `DATABASE_URL=mysql://PARTDB_USER:PASSWORD@localhost:3306/DATABASE_NAME`) diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index 206b0535..dc2477a6 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -6,11 +6,11 @@ parent: Usage # Information provider system -Part-DB can create parts based on information from external sources: For example with the right setup you can just +Part-DB can create parts based on information from external sources: For example, with the right setup you can just search for a part number and Part-DB will query selected distributors and manufacturers for the part and create a part with the information it found. -This way your Part-DB parts automatically get datasheet links, prices, parameters and more, with just a few clicks. +This way your Part-DB parts automatically get datasheet links, prices, parameters, and more, with just a few clicks. ## Usage @@ -45,13 +45,13 @@ part. Part-DB tries to automatically find existing elements from your database for the information it got from the providers for fields like manufacturer, footprint, etc. -For this it searches for an element with the same name (case-insensitive) as the information it got from the provider. So -e.g. if the provider returns "EXAMPLE CORP" as manufacturer, +For this, it searches for an element with the same name (case-insensitive) as the information it got from the provider. So +e.g. if the provider returns "EXAMPLE CORP" as the manufacturer, Part-DB will automatically select the element with the name "Example Corp" from your database. As the names of these fields differ from provider to provider (and maybe not even normalized for the same provider), you can define multiple alternative names for an element (on their editing page). -For example if define a manufacturer "Example Corp" with the alternative names "Example Corp.", "Example Corp", "Example +For example, if you define a manufacturer "Example Corp" with the alternative names "Example Corp.", "Example Corp", "Example Corp. Inc." and "Example Corporation", then the provider can return any of these names and Part-DB will still automatically select the right element. @@ -72,12 +72,12 @@ add the alternative names "Datasheet" and "Image" to the alternative names field The system tries to be as flexible as possible, so many different information sources can be used. Each information source is called am "info provider" and handles the communication with the external source. -The providers are just a driver which handles the communication with the different external sources and converts them +The providers are just a driver that handles the communication with the different external sources and converts them into a common format Part-DB understands. That way it is pretty easy to create new providers as they just need to do very little work. Normally the providers utilize an API of a service, and you need to create an account at the provider and get an API key. -Also, there are limits on how many requests you can do per day or months, depending on the provider and your contract +Also, there are limits on how many requests you can do per day or month, depending on the provider and your contract with them. The following providers are currently available and shipped with Part-DB: @@ -86,8 +86,7 @@ The following providers are currently available and shipped with Part-DB: ### Octopart -The Octopart provider uses the [Octopart / Nexar API](https://nexar.com/api) to search for parts and getting -information. +The Octopart provider uses the [Octopart / Nexar API](https://nexar.com/api) to search for parts and get information. To use it you have to create an account at Nexar and create a new application on the [Nexar Portal](https://portal.nexar.com/). The name does not matter, but it is important that the application has access to the "Supply" scope. @@ -100,7 +99,7 @@ can see your current usage on the Nexar portal. Part-DB caches the search results internally, so if you have searched for a part before, it will not count against your monthly limit again, when you create it from the search results. -Following env configuration options are available: +The following env configuration options are available: * `PROVIDER_OCTOPART_CLIENT_ID`: The client ID you got from Nexar (mandatory) * `PROVIDER_OCTOPART_SECRET`: The client secret you got from Nexar (mandatory) @@ -109,18 +108,18 @@ Following env configuration options are available: Part-DB will save the prices in their native currency, and you can use Part-DB currency conversion feature to convert it to your preferred currency. * `PROVIDER_OCOTPART_COUNTRY`: The country you want to get prices in if available (optional, 2 letter ISO-code, - default: `DE`). To get correct prices, you have to set this and the currency setting to the correct value. + default: `DE`). To get the correct prices, you have to set this and the currency setting to the correct value. * `PROVIDER_OCTOPART_SEARCH_LIMIT`: The maximum number of results to return per search (optional, default: `10`). This affects how quickly your monthly limit is used up. * `PROVIDER_OCTOPART_ONLY_AUTHORIZED_SELLERS`: If set to `true`, only offers from [authorized sellers](https://octopart.com/authorized) will be returned (optional, default: `false`). -**Attention**: If you change the octopart clientID after you have already used the provider, you have to remove the +**Attention**: If you change the Octopart clientID after you have already used the provider, you have to remove the OAuth token in the Part-DB database. Remove the entry in the table `oauth_tokens` with the name `ip_octopart_oauth`. ### Digi-Key -The Digi-Key provider uses the [Digi-Key API](https://developer.digikey.com/) to search for parts and getting shopping +The Digi-Key provider uses the [Digi-Key API](https://developer.digikey.com/) to search for parts and get shopping information from [Digi-Key](https://www.digikey.com/). To use it you have to create an account at Digi-Key and get an API key on the [Digi-Key API page](https://developer.digikey.com/). @@ -128,7 +127,7 @@ You must create an organization there and create a "Production app". Most settin grant access to the "Product Information" API. You will get a Client ID and a Client Secret, which you have to put in the Part-DB env configuration (see below). -Following env configuration options are available: +The following env configuration options are available: * `PROVIDER_DIGIKEY_CLIENT_ID`: The client ID you got from Digi-Key (mandatory) * `PROVIDER_DIGIKEY_SECRET`: The client secret you got from Digi-Key (mandatory) @@ -138,7 +137,7 @@ Following env configuration options are available: The Digi-Key provider needs an additional OAuth connection. To do this, go to the information provider list (`https://your-partdb-instance.tld/tools/info_providers/providers`), -go the Digi-Key provider (in the disabled page) and click on the "Connect OAuth" button. You will be redirected to +go to Digi-Key provider (in the disabled page), and click on the "Connect OAuth" button. You will be redirected to Digi-Key, where you have to log in and grant access to the app. To do this your user needs the "Manage OAuth tokens" permission from the "System" section in the "System" tab. The OAuth connection should only be needed once, but if you have any problems with the provider, just click the button @@ -146,13 +145,13 @@ again, to establish a new connection. ### TME -The TME provider use the API of [TME](https://www.tme.eu/) to search for parts and getting shopping information from +The TME provider uses the API of [TME](https://www.tme.eu/) to search for parts and getting shopping information from them. To use it you have to create an account at TME and get an API key on the [TME API page](https://developers.tme.eu/en/). You have to generate a new anonymous key there and enter the key and secret in the Part-DB env configuration (see below). -Following env configuration options are available: +The following env configuration options are available: * `PROVIDER_TME_KEY`: The API key you got from TME (mandatory) * `PROVIDER_TME_SECRET`: The API secret you got from TME (mandatory) @@ -171,7 +170,7 @@ You have to create an account at Farnell and get an API key on the [Farnell API Register a new application there (settings does not matter, as long as you select the "Product Search API") and you will get an API key. -Following env configuration options are available: +The following env configuration options are available: * `PROVIDER_ELEMENT14_KEY`: The API key you got from Farnell (mandatory) * `PROVIDER_ELEMENT14_STORE_ID`: The store ID you want to use. This decides the language of results, currency and @@ -185,11 +184,11 @@ information from [Mouser](https://www.mouser.com/). You have to create an account at Mouser and register for an API key for the Search API on the [Mouser API page](https://www.mouser.de/api-home/). You will receive an API token, which you have to put in the Part-DB env configuration (see below): -At the registration you choose a country, language and currency in which you want to get the results. +At the registration you choose a country, language, and currency in which you want to get the results. *Attention*: Currently (January 2024) the mouser API seems to be somewhat broken, in the way that it does not return any information about datasheets and part specifications. Therefore Part-DB can not retrieve them, even if they are shown -at the mouser page. See [issue #503](https://github.com/Part-DB/Part-DB-server/issues/503) for more infos. +at the mouser page. See [issue #503](https://github.com/Part-DB/Part-DB-server/issues/503) for more info. Following env configuration options are available: diff --git a/docs/usage/keybindings.md b/docs/usage/keybindings.md index c6de67d4..698524c5 100644 --- a/docs/usage/keybindings.md +++ b/docs/usage/keybindings.md @@ -93,7 +93,7 @@ all text and search fields in Part-DB. ### Currency symbols -Please not the following keybindings are bound to a specific keycode. The key character is not the same on all +Please note, the following keybindings are bound to a specific keycode. The key character is not the same on all keyboards. It is given here for a US keyboard layout. @@ -108,7 +108,7 @@ For a German keyboard layout, replace ; with ö, and ' with ä. ### Others -Please not the following keybindings are bound to a specific keycode. The key character is not the same on all +Please note the following keybindings are bound to a specific keycode. The key character is not the same on all keyboards. It is given here for a US keyboard layout. diff --git a/docs/usage/labels.md b/docs/usage/labels.md index e2d73296..58c35062 100644 --- a/docs/usage/labels.md +++ b/docs/usage/labels.md @@ -7,12 +7,12 @@ parent: Usage # Labels Part-DB support the generation and printing of labels for parts, part lots and storage locations. -You can use the "Tools -> Label generator" menu entry to create labels, or click the label generation link on the part. +You can use the "Tools -> Label generator" menu entry to create labels or click the label generation link on the part. -You can define label templates by creating Label profiles. This way you can create many similar looking labels with for +You can define label templates by creating Label profiles. This way you can create many similar-looking labels with for many parts. -The content of the labels is defined by the templates content field. You can use the WYSIWYG editor to create and style +The content of the labels is defined by the template's content field. You can use the WYSIWYG editor to create and style the content (or write HTML code). Using the "Label placeholder" menu in the editor, you can insert placeholders for the data of the parts. It will be replaced by the concrete data when the label is generated. @@ -20,7 +20,7 @@ It will be replaced by the concrete data when the label is generated. ## Label placeholders A placeholder has the format `[[PLACEHOLDER]]` and will be filled with the concrete data by Part-DB. -You can use the "Placeholders" dropdown in content editor, to automatically insert the placeholders. +You can use the "Placeholders" dropdown in the content editor, to automatically insert the placeholders. ### Common @@ -124,12 +124,12 @@ the label generator settings: The default used font (DejaVu) does not support all characters. Especially characters from non-latin languages like Chinese, Japanese, Korean, Arabic, Hebrew, Cyrillic, etc. are not supported. -For this we use [Unifont](http://unifoundry.com/unifont.html) as fallback font. This font supports all (or most) unicode -characters, but is not as beautiful as DejaVu. +For this, we use [Unifont](http://unifoundry.com/unifont.html) as fallback font. This font supports all (or most) Unicode +characters but is not as beautiful as DejaVu. If you want to use a different (more beautiful) font, you can use the [custom fonts](#use-custom-fonts-for-pdf-labels) feature. There is the [Noto](https://www.google.com/get/noto/) font family from Google, which supports a lot of languages and is available in different styles (regular, bold, italic, bold-italic). -For example, you can use [Noto CJK](https://github.com/notofonts/noto-cjk) for more beautiful Chinese, Japanese +For example, you can use [Noto CJK](https://github.com/notofonts/noto-cjk) for more beautiful Chinese, Japanese, and Korean characters. \ No newline at end of file diff --git a/docs/usage/tips_tricks.md b/docs/usage/tips_tricks.md index 195738c6..d033cbe8 100644 --- a/docs/usage/tips_tricks.md +++ b/docs/usage/tips_tricks.md @@ -8,35 +8,35 @@ parent: Usage Following you can find miscellaneous tips and tricks for using Part-DB. -## Create datastructures directly from part edit page +## Create data structures directly from part edit page -Instead of first creating a category, manufacturer, footprint, etc. and then creating the part, you can create the -datastructures directly from the part edit page: Just type the name of the datastructure you want to create into the -select field on the part edit page and press "Create new ...". The new datastructure will be created, when you save +Instead of first creating a category, manufacturer, footprint, etc., and then creating the part, you can create the +data structures directly from the part edit page: Just type the name of the data structure you want to create into the +select field on the part edit page and press "Create new ...". The new data structure will be created when you save the part changes. -You can create also create nested datastructures this way. For example, if you want to create a new category "AVRs", +You can create also create nested data structures this way. For example, if you want to create a new category "AVRs", as a subcategory of "MCUs", you can just type "MCUs->AVRs" into the category select field and press "Create new". The new category "AVRs" will be created as a subcategory of "MCUs". If the category "MCUs" does not exist, it will be created too. -## Builtin footprint images +## Built-in footprint images -Part-DB includes several builtin images for common footprints. You can use these images in your footprint -datastructures, -by creating an attachment on the datastructure and selecting it as preview image. +Part-DB includes several built-in images for common footprints. You can use these images in your footprint +data structures, +by creating an attachment on the data structure and selecting it as the preview image. Type the name of the footprint image you want to use into the URL field of the attachment and select it from the dropdown menu. You can find a gallery of all builtin footprint images and their names in the "Builtin footprint image gallery", -which you can find in the "Tools" menu (you maybe need to give your user the permission to access this tool). +which you can find in the "Tools" menu (you may need to give your user the permission to access this tool). ## Parametric search -In the "parameters" tab of the filter panel on parts list page, you can define constraints, which parameter values -have to fulfill. This allows you to search for parts with specific parameters (or parameter ranges), for example you +In the "parameters" tab of the filter panel on parts list page, you can define constraints, and which parameter values +have to fulfill. This allows you to search for parts with specific parameters (or parameter ranges), for example, you can search for all parts with a voltage rating of greater than 5 V. -## View own users permissions +## View own user's permissions If you want to see which permissions your user has, you can find a list of the permissions in the "Permissions" panel on the user info page. @@ -49,10 +49,8 @@ part). You can find a list of supported features in the [KaTeX documentation](https://katex.org/docs/supported.html). To input a LaTeX equation, you have to wrap it in a pair of dollar signs (`$`). Single dollar signs mark inline -equations, -double dollar signs mark displayed equations (which will be its own line and centered). For example, the following -equation -will be rendered as an inline equation: +equations, double dollar signs mark displayed equations (which will be their own line and centered). +For example, the following equation will be rendered as an inline equation: ``` $E=mc^2$ @@ -77,16 +75,16 @@ free API used by default only supports the Euro as base currency. ## Enforce log comments On almost any editing operation it is possible to add a comment describing, what or why you changed something. -This comment will be written to change log and can be viewed later. -If you want to enforce your users to add comments to certain operations, you can do this by setting +This comment will be written to changelog and can be viewed later. +If you want to force your users to add comments to certain operations, you can do this by setting the `ENFORCE_CHANGE_COMMENTS_FOR` option. See the configuration reference for more information. ## Personal stocks and stock locations -For makerspaces and universities with a lot of users, where each user can have his own stock, which only he should be +For maker spaces and universities with a lot of users, where each user can have his own stock, which only he should be able to access, you can assign -the user as "owner" of a part lot. This way, only him is allowed to add or remove parts from this lot. +the user as "owner" of a part lot. This way, only he is allowed to add or remove parts from this lot. ## Update notifications From eab4d6f6007707122ea1ca84c0e421f7cd2df69c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 23 Feb 2024 14:55:56 +0100 Subject: [PATCH 080/634] Added documentation about LCSC provider --- docs/usage/information_provider_system.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md index dc2477a6..9abf75b8 100644 --- a/docs/usage/information_provider_system.md +++ b/docs/usage/information_provider_system.md @@ -199,6 +199,19 @@ Following env configuration options are available: * `PROVIDER_MOUSER_SEARCH_WITH_SIGNUP_LANGUAGE`: A bit of an obscure option. The original description of Mouser is: Used when searching for keywords in the language specified when you signed up for Search API. +### LCSC + +[LCSC](https://www.lcsc.com/) is a Chinese distributor of electronic parts. It does not offer a public API, but the LCSC +webshop uses an internal JSON based API to render the page. Part-DB can use this inofficial API to get part information +from LCSC. + +**Please note, that the use of this internal API is not intended or endorsed by LCS and it could break at any time. So use it at your own risk.** + +An API key is not required, it is enough to enable the provider using the following env configuration options: + +* `PROVIDER_LCSC_ENABLED`: Set this to `1` to enable the LCSC provider +* `PROVIDER_LCSC_CURRENCY`: The currency you want to get prices in (see LCSC webshop for available currencies, default: `EUR`) + ### Custom provider To create a custom provider, you have to create a new class implementing the `InfoProviderInterface` interface. As long From 0d6ab793ce8381a3a2f21b0ae9e7e8f2764ddaf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 23 Feb 2024 14:59:28 +0100 Subject: [PATCH 081/634] Fixed typos in README.md --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 04d8a687..023dd012 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ If you want to test Part-DB without installing it, you can use [this](https://de You can log in with username: *user* and password: *user*. Every change to the master branch gets automatically deployed, so it represents the current development progress and is -maybe not completely stable. Please mind, that the free Heroku instance is used, so it can take some time when loading +may not completely stable. Please mind, that the free Heroku instance is used, so it can take some time when loading the page for the first time. @@ -39,35 +39,35 @@ for the first time. ## Features -* Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer +* Inventory management of your electronic parts. Each part can be assigned to a category, footprint, manufacturer, and multiple store locations and price information. Parts can be grouped using tags. You can associate various files like datasheets or pictures with the parts. -* Multi-Language support (currently German, English, Russian, Japanese, French, Czech, Danish and Chinese) +* Multi-language support (currently German, English, Russian, Japanese, French, Czech, Danish, and Chinese) * Barcodes/Labels generator for parts and storage locations, scan barcodes via webcam using the builtin barcode scanner * User system with groups and detailed (fine granular) permissions. Two-factor authentication is supported (Google Authenticator and Webauthn/U2F keys) and can be enforced for groups. - Password reset via email can be setup. + Password reset via email can be set up. * Optional support for single sign-on (SSO) via SAML (using an intermediate service like [Keycloak](https://www.keycloak.org/) you can connect Part-DB to an existing LDAP or Active Directory server) -* Import/Export system for parts and datastructure. BOM import for projects from KiCAD is supported. +* Import/Export system for parts and data structure. BOM import for projects from KiCAD is supported. * Project management: Create projects and assign parts to the bill of material (BOM), to show how often you could build this project and directly withdraw all components needed from DB -* Event log: Track what changes happens to your inventory, track which user does what. Revert your parts to older +* Event log: Track what changes happen to your inventory, track which user does what. Revert your parts to older versions. -* Responsive design: You can use Part-DB on your PC, your tablet and your smartphone using the same interface. -* MySQL and SQLite supported as database backends +* Responsive design: You can use Part-DB on your PC, your tablet, and your smartphone using the same interface. +* MySQL and SQLite are supported as database backends * Support for rich text descriptions and comments in parts * Support for multiple currencies and automatic update of exchange rates supported * Powerful search and filter function, including parametric search (search for parts according to some specifications) * Automatic thumbnail generation for pictures -* Use cloud providers (like Octopart, Digikey, farnell or TME) to automatically get part information, datasheets and +* Use cloud providers (like Octopart, Digikey, Farnell, LCSC or TME) to automatically get part information, datasheets, and prices for parts * API to access Part-DB from other applications/scripts -* [Integration with KiCad](https://docs.part-db.de/usage/eda_integration.html): Use Part-DB as central datasource for your - KiCad and see available parts from Part-DB directly inside KiCad. +* [Integration with KiCad](https://docs.part-db.de/usage/eda_integration.html): Use Part-DB as the central datasource for your + KiCad and see available parts from Part-DB directly inside KiCad. -With these features Part-DB is useful to hobbyists, who want to keep track of their private electronic parts inventory, -or makerspaces, where many users have should have (controlled) access to the shared inventory. +With these features, Part-DB is useful to hobbyists, who want to keep track of their private electronic parts inventory, +or maker spaces, where many users should have (controlled) access to the shared inventory. Part-DB is also used by small companies and universities for managing their inventory. @@ -78,7 +78,7 @@ Part-DB is also used by small companies and universities for managing their inve this includes a minimum PHP version of **PHP 8.1** * A **MySQL** (at least 5.7) /**MariaDB** (at least 10.2.2) database server if you do not want to use SQLite. * Shell access to your server is highly suggested! -* For building the client side assets **yarn** and **nodejs** (>= 18.0) is needed. +* For building the client-side assets **yarn** and **nodejs** (>= 18.0) is needed. ## Installation @@ -88,8 +88,8 @@ read [this](https://docs.part-db.de/upgrade_legacy.html) first. *Hint:* A docker image is available under [jbtronics/part-db1](https://hub.docker.com/r/jbtronics/part-db1). How to set up Part-DB via docker is described [here](https://docs.part-db.de/installation/installation_docker.html). -**Below you find some very rough outline of the installation process, see [here](https://docs.part-db.de/installation/) -for a detailed guide how to install Part-DB.** +**Below you find a very rough outline of the installation process, see [here](https://docs.part-db.de/installation/) +for a detailed guide on how to install Part-DB.** 1. Copy or clone this repository into a folder on your server. 2. Configure your webserver to serve from the `public/` folder. @@ -107,13 +107,13 @@ for a detailed guide how to install Part-DB.** 6. _Optional_ (speeds up first load): Warmup cache: `php bin/console cache:warmup` 7. Upgrade database to new scheme (or create it, when it was empty): `php bin/console doctrine:migrations:migrate` and follow the instructions given. During the process the password for the admin is user is shown. Copy it. **Caution**: - This steps tamper with your database and could potentially destroy it. So make sure to make a backup of your + These steps tamper with your database and could potentially destroy it. So make sure to make a backup of your database. -8. You can configure Part-DB via `config/parameters.yaml`. You should check if settings match your expectations, after +8. You can configure Part-DB via `config/parameters.yaml`. You should check if settings match your expectations after you installed/upgraded Part-DB. Check if `partdb.default_currency` matches your mainly used currency (this can not be changed after creating price information). - Run `php bin/console cache:clear` when you changed something. -9. Access Part-DB in your browser (under the URL you put it) and login with user *admin*. Password is the one outputted + Run `php bin/console cache:clear` when you change something. +9. Access Part-DB in your browser (under the URL you put it) and log in with user *admin*. Password is the one outputted during DB setup. If you can not remember the password, set a new one with `php bin/console app:set-password admin`. You can create new users with the admin user and start using Part-DB. @@ -122,23 +122,23 @@ When you want to upgrade to a newer version, then just copy the new files into t and repeat the steps 4. to 7. Normally a random password is generated when the admin user is created during initial database creation, -however you can set the initial admin password, by setting the `INITIAL_ADMIN_PW` env var. +however, you can set the initial admin password, by setting the `INITIAL_ADMIN_PW` env var. You can configure Part-DB to your needs by changing environment variables in the `.env.local` file. See [here](https://docs.part-db.de/configuration.html) for more information. ### Reverse proxy -If you are using a reverse proxy, you have to ensure that the proxies sets the `X-Forwarded-*` headers correctly, or you +If you are using a reverse proxy, you have to ensure that the proxies set the `X-Forwarded-*` headers correctly, or you will get HTTP/HTTPS mixup and wrong hostnames. If the reverse proxy is on a different server (or it cannot access Part-DB via localhost) you have to set -the `TRUSTED_PROXIES` env variable to match your reverse proxies IP-address (or IP block). You can do this in +the `TRUSTED_PROXIES` env variable to match your reverse proxy's IP address (or IP block). You can do this in your `.env.local` or (when using docker) in your `docker-compose.yml` file. ## Donate for development If you want to donate to the Part-DB developer, see the sponsor button in the top bar (next to the repo name). -There you will find various methods to support development on a monthly or a one time base. +There you will find various methods to support development on a monthly or a one-time base. ## Built with From e8bc93f67adb35a03be8a5e47d65d6e3f9b7bcbd Mon Sep 17 00:00:00 2001 From: frank-f Date: Sat, 24 Feb 2024 22:48:38 +0100 Subject: [PATCH 082/634] Fix RegEx to handle negative values and Ohms without prefix (#530) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix RegEx to include negative values * Update RegEx to handle Ω without prefix * Update RegEx to include % * Handle plus/minus values as range * Fix copy&paste error * Change minimum value to negative * Escape decimal point and add slash to valid unit characters to be able to pick up for example "ppm/°C" * Skip empty values --- .../InfoProviderSystem/DTOs/ParameterDTO.php | 4 ++-- .../InfoProviderSystem/Providers/LCSCProvider.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php index b5597eaf..e8ff9fb9 100644 --- a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php @@ -106,7 +106,7 @@ class ParameterDTO */ public static function splitIntoValueAndUnit(string $value): ?array { - if (preg_match('/^(?[0-9.]+)\s*(?[°℃a-zA-Z_]+\s?\w{0,4})$/u', $value, $matches)) { + if (preg_match('/^(?-?[0-9\.]+)\s*(?[%Ω°℃a-z_\/]+\s?\w{0,4})$/iu', $value, $matches)) { $value = $matches['value']; $unit = $matches['unit']; @@ -115,4 +115,4 @@ class ParameterDTO return null; } -} \ No newline at end of file +} diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index 11a2ae59..eea43f61 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -270,8 +270,11 @@ class LCSCProvider implements InfoProviderInterface foreach ($attributes as $attribute) { + //Skip this attribute if it's empty + if (in_array(trim($attribute['paramValueEn']), array('', '-'))) { + continue; //If the attribute contains a tilde we assume it is a range - if (str_contains($attribute['paramValueEn'], '~')) { + } elseif (str_contains($attribute['paramValueEn'], '~')) { $parts = explode('~', $attribute['paramValueEn']); if (count($parts) === 2) { //Try to extract number and unit from value (allow leading +) @@ -284,6 +287,13 @@ class LCSCProvider implements InfoProviderInterface continue; } } + //If it's a plus/minus value, we'll also it like a range + } elseif (str_starts_with($attribute['paramValueEn'], '±')) { + [$number, $unit] = ParameterDTO::splitIntoValueAndUnit(ltrim($attribute['paramValueEn'], " ±")) ?? [$attribute['paramValueEn'], null]; + if (is_numeric($number)) { + $result[] = new ParameterDTO(name: $attribute['paramNameEn'], value_min: -abs((float) $number), value_max: abs((float) $number), unit: $unit, group: null); + continue; + } } $result[] = ParameterDTO::parseValueIncludingUnit(name: $attribute['paramNameEn'], value: $attribute['paramValueEn'], group: null); @@ -321,4 +331,4 @@ class LCSCProvider implements InfoProviderInterface ProviderCapabilities::FOOTPRINT, ]; } -} \ No newline at end of file +} From dbd841a72366d6b5c776a56dd4e7e95dcb70680f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 22:48:52 +0100 Subject: [PATCH 083/634] Updated dependencies --- composer.lock | 374 +++++++++++++++++++++++++++++++------------------- yarn.lock | 266 ++++++++++++++++++----------------- 2 files changed, 375 insertions(+), 265 deletions(-) diff --git a/composer.lock b/composer.lock index bf0eaea3..2190a059 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.13", + "version": "v3.2.14", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec" + "reference": "9f50aa73bfa0d08ab98f28f74a75d7f29d531bd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", - "reference": "3b42bafcccd2b530ca7bb920c7a3b9dc249d76ec", + "url": "https://api.github.com/repos/api-platform/core/zipball/9f50aa73bfa0d08ab98f28f74a75d7f29d531bd3", + "reference": "9f50aa73bfa0d08ab98f28f74a75d7f29d531bd3", "shasum": "" }, "require": { @@ -168,9 +168,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.13" + "source": "https://github.com/api-platform/core/tree/v3.2.14" }, - "time": "2024-02-01T14:41:52+00:00" + "time": "2024-02-20T09:52:06+00:00" }, { "name": "beberlei/assert", @@ -361,16 +361,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "b66d11b7479109ab547f9405b97205640b17d385" + "reference": "3ce240142f6d59b808dd65c1f52f7a1c252e6cfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385", - "reference": "b66d11b7479109ab547f9405b97205640b17d385", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/3ce240142f6d59b808dd65c1f52f7a1c252e6cfd", + "reference": "3ce240142f6d59b808dd65c1f52f7a1c252e6cfd", "shasum": "" }, "require": { @@ -417,7 +417,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.4.0" + "source": "https://github.com/composer/ca-bundle/tree/1.4.1" }, "funding": [ { @@ -433,7 +433,7 @@ "type": "tidelift" } ], - "time": "2023-12-18T12:05:55+00:00" + "time": "2024-02-23T10:16:52+00:00" }, { "name": "composer/package-versions-deprecated", @@ -1401,16 +1401,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.9", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -1472,7 +1472,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.9" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -1488,7 +1488,7 @@ "type": "tidelift" } ], - "time": "2024-01-15T18:05:13+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", @@ -1742,16 +1742,16 @@ }, { "name": "doctrine/orm", - "version": "2.18.0", + "version": "2.18.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b" + "reference": "e6eef1a97d41f1ee244b6e69d7359d00cb3e4c4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b", - "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b", + "url": "https://api.github.com/repos/doctrine/orm/zipball/e6eef1a97d41f1ee244b6e69d7359d00cb3e4c4a", + "reference": "e6eef1a97d41f1ee244b6e69d7359d00cb3e4c4a", "shasum": "" }, "require": { @@ -1837,9 +1837,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.18.0" + "source": "https://github.com/doctrine/orm/tree/2.18.1" }, - "time": "2024-01-31T15:53:12+00:00" + "time": "2024-02-22T12:22:44+00:00" }, { "name": "doctrine/persistence", @@ -1941,16 +1941,16 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", "shasum": "" }, "require": { @@ -1987,9 +1987,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" + "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" }, - "time": "2022-05-23T21:33:49+00:00" + "time": "2023-08-16T21:49:04+00:00" }, { "name": "dompdf/dompdf", @@ -3823,16 +3823,16 @@ }, { "name": "liip/imagine-bundle", - "version": "2.12.1", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/liip/LiipImagineBundle.git", - "reference": "cc19da6a02cfc472627cd441186cc6d25f550a53" + "reference": "2ad259dd46ce55f93c6e8d87908d2572bd94796e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/cc19da6a02cfc472627cd441186cc6d25f550a53", - "reference": "cc19da6a02cfc472627cd441186cc6d25f550a53", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/2ad259dd46ce55f93c6e8d87908d2572bd94796e", + "reference": "2ad259dd46ce55f93c6e8d87908d2572bd94796e", "shasum": "" }, "require": { @@ -3864,7 +3864,7 @@ "symfony/dependency-injection": "^3.4|^4.4|^5.3|^6.0|^7.0", "symfony/form": "^3.4|^4.4|^5.3|^6.0|^7.0", "symfony/messenger": "^4.4|^5.3|^6.0|^7.0", - "symfony/phpunit-bridge": "^5.3|^6.0|^7.0", + "symfony/phpunit-bridge": "^7.0.2", "symfony/templating": "^3.4|^4.4|^5.3|^6.0", "symfony/validator": "^3.4|^4.4|^5.3|^6.0|^7.0", "symfony/yaml": "^3.4|^4.4|^5.3|^6.0|^7.0" @@ -3920,9 +3920,9 @@ ], "support": { "issues": "https://github.com/liip/LiipImagineBundle/issues", - "source": "https://github.com/liip/LiipImagineBundle/tree/2.12.1" + "source": "https://github.com/liip/LiipImagineBundle/tree/2.12.2" }, - "time": "2023-11-14T07:59:41+00:00" + "time": "2024-02-23T21:12:25+00:00" }, { "name": "lorenzo/pinky", @@ -4954,6 +4954,92 @@ }, "time": "2020-10-15T08:29:30+00:00" }, + { + "name": "paragonie/sodium_compat", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" + }, + "time": "2023-04-30T00:54:53+00:00" + }, { "name": "part-db/label-fonts", "version": "v1.1.0", @@ -5611,21 +5697,21 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", "phpstan/phpdoc-parser": "^1.13" }, @@ -5663,22 +5749,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2024-01-11T11:49:22+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.25.0", + "version": "1.26.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", "shasum": "" }, "require": { @@ -5710,9 +5796,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2024-02-23T16:05:55+00:00" }, { "name": "psr/cache", @@ -11799,16 +11885,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.14.2", + "version": "v2.15.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "f775f6e811215156bfe41e6be234272d0c27e02b" + "reference": "c113ab8e92c6b14659f6be4e9bef5c1f4c4a000e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/f775f6e811215156bfe41e6be234272d0c27e02b", - "reference": "f775f6e811215156bfe41e6be234272d0c27e02b", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c113ab8e92c6b14659f6be4e9bef5c1f4c4a000e", + "reference": "c113ab8e92c6b14659f6be4e9bef5c1f4c4a000e", "shasum": "" }, "require": { @@ -11818,7 +11904,7 @@ "symfony/deprecation-contracts": "^2.0|^3.0", "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", - "twig/twig": "^2.15.3|^3.4.3" + "twig/twig": "^2.15.3|~3.8.0" }, "require-dev": { "symfony/asset-mapper": "^6.3|^7.0", @@ -11848,7 +11934,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.14.2" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.15.0" }, "funding": [ { @@ -11864,7 +11950,7 @@ "type": "tidelift" } ], - "time": "2024-02-07T20:26:48+00:00" + "time": "2024-02-14T16:26:57+00:00" }, { "name": "symfony/stopwatch", @@ -12456,7 +12542,7 @@ }, { "name": "symfony/ux-translator", - "version": "v2.14.2", + "version": "v2.15.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-translator.git", @@ -12512,7 +12598,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-translator/tree/v2.14.2" + "source": "https://github.com/symfony/ux-translator/tree/v2.15.0" }, "funding": [ { @@ -12532,16 +12618,16 @@ }, { "name": "symfony/ux-turbo", - "version": "v2.14.2", + "version": "v2.15.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "7cd466f33950aa82a2b7e1485d62d8da726a0051" + "reference": "d3590a43fee73304855dfc8022ccb57b0df9f03d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/7cd466f33950aa82a2b7e1485d62d8da726a0051", - "reference": "7cd466f33950aa82a2b7e1485d62d8da726a0051", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/d3590a43fee73304855dfc8022ccb57b0df9f03d", + "reference": "d3590a43fee73304855dfc8022ccb57b0df9f03d", "shasum": "" }, "require": { @@ -12608,7 +12694,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.14.2" + "source": "https://github.com/symfony/ux-turbo/tree/v2.15.0" }, "funding": [ { @@ -12624,7 +12710,7 @@ "type": "tidelift" } ], - "time": "2024-02-07T20:26:48+00:00" + "time": "2024-02-20T16:11:17+00:00" }, { "name": "symfony/validator", @@ -14199,17 +14285,17 @@ "time": "2023-12-08T13:02:43+00:00" }, { - "name": "web-token/jwt-core", - "version": "3.2.10", + "name": "web-token/jwt-library", + "version": "3.3.0", "source": { "type": "git", - "url": "https://github.com/web-token/jwt-core.git", - "reference": "2b7277a4837230cf2982a1484643a978d505eae3" + "url": "https://github.com/web-token/jwt-library.git", + "reference": "5edf0f193425bb9c695a433180ddf9d263f55063" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-core/zipball/2b7277a4837230cf2982a1484643a978d505eae3", - "reference": "2b7277a4837230cf2982a1484643a978d505eae3", + "url": "https://api.github.com/repos/web-token/jwt-library/zipball/5edf0f193425bb9c695a433180ddf9d263f55063", + "reference": "5edf0f193425bb9c695a433180ddf9d263f55063", "shasum": "" }, "require": { @@ -14217,16 +14303,32 @@ "ext-json": "*", "ext-mbstring": "*", "paragonie/constant_time_encoding": "^2.6", + "paragonie/sodium_compat": "^1.20", "php": ">=8.1", - "spomky-labs/pki-framework": "^1.0" + "psr/clock": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "spomky-labs/pki-framework": "^1.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/polyfill-mbstring": "^1.12" }, "conflict": { "spomky-labs/jose": "*" }, + "suggest": { + "ext-bcmath": "GMP or BCMath is highly recommended to improve the library performance", + "ext-gmp": "GMP or BCMath is highly recommended to improve the library performance", + "ext-openssl": "For key management (creation, optimization, etc.) and some algorithms (AES, RSA, ECDSA, etc.)", + "ext-sodium": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", + "paragonie/sodium_compat": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", + "spomky-labs/aes-key-wrap": "For all Key Wrapping algorithms (A128KW, A192KW, A256KW, A128GCMKW, A192GCMKW, A256GCMKW, PBES2-HS256+A128KW, PBES2-HS384+A192KW, PBES2-HS512+A256KW...)", + "symfony/http-client": "To enable JKU/X5U support." + }, "type": "library", "autoload": { "psr-4": { - "Jose\\Component\\Core\\": "" + "Jose\\Component\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -14243,7 +14345,7 @@ "homepage": "https://github.com/web-token/jwt-framework/contributors" } ], - "description": "Core component of the JWT Framework.", + "description": "JWT library", "homepage": "https://github.com/web-token", "keywords": [ "JOSE", @@ -14264,48 +14366,40 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-core/tree/3.2.10" + "issues": "https://github.com/web-token/jwt-library/issues", + "source": "https://github.com/web-token/jwt-library/tree/3.3.0" }, "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, { "url": "https://www.patreon.com/FlorentMorselli", "type": "patreon" } ], - "time": "2024-01-04T15:42:08+00:00" + "time": "2024-02-22T08:15:45+00:00" }, { "name": "web-token/jwt-signature", - "version": "3.2.10", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/web-token/jwt-signature.git", - "reference": "14fec03d581550396edd0bf20fe6308dac167165" + "reference": "eccfd59e658d4118414cf6d14229aa52eec387e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/14fec03d581550396edd0bf20fe6308dac167165", - "reference": "14fec03d581550396edd0bf20fe6308dac167165", + "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/eccfd59e658d4118414cf6d14229aa52eec387e7", + "reference": "eccfd59e658d4118414cf6d14229aa52eec387e7", "shasum": "" }, "require": { "php": ">=8.1", - "web-token/jwt-core": "^3.2" - }, - "suggest": { - "web-token/jwt-signature-algorithm-ecdsa": "ECDSA Based Signature Algorithms", - "web-token/jwt-signature-algorithm-eddsa": "EdDSA Based Signature Algorithms", - "web-token/jwt-signature-algorithm-experimental": "Experimental Signature Algorithms", - "web-token/jwt-signature-algorithm-hmac": "HMAC Based Signature Algorithms", - "web-token/jwt-signature-algorithm-none": "None Signature Algorithm", - "web-token/jwt-signature-algorithm-rsa": "RSA Based Signature Algorithms" + "web-token/jwt-library": "^3.3" }, "type": "library", - "autoload": { - "psr-4": { - "Jose\\Component\\Signature\\": "" - } - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -14317,10 +14411,10 @@ }, { "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-signature/contributors" + "homepage": "https://github.com/web-token/jwt-framework/contributors" } ], - "description": "Signature component of the JWT Framework.", + "description": "[DEPRECATED] Please use web-token/jwt-library instead.", "homepage": "https://github.com/web-token", "keywords": [ "JOSE", @@ -14341,7 +14435,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-signature/tree/3.2.10" + "source": "https://github.com/web-token/jwt-signature/tree/3.3.0" }, "funding": [ { @@ -14349,7 +14443,8 @@ "type": "patreon" } ], - "time": "2024-01-04T15:42:08+00:00" + "abandoned": "web-token/jwt-library", + "time": "2024-02-22T07:19:34+00:00" }, { "name": "webmozart/assert", @@ -15537,16 +15632,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.58", + "version": "1.10.59", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2" + "reference": "e607609388d3a6d418a50a49f7940e8086798281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", + "reference": "e607609388d3a6d418a50a49f7940e8086798281", "shasum": "" }, "require": { @@ -15595,7 +15690,7 @@ "type": "tidelift" } ], - "time": "2024-02-12T20:02:57+00:00" + "time": "2024-02-20T13:59:13+00:00" }, { "name": "phpstan/phpstan-doctrine", @@ -16111,16 +16206,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.16", + "version": "9.6.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", - "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd", + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd", "shasum": "" }, "require": { @@ -16194,7 +16289,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17" }, "funding": [ { @@ -16210,7 +16305,7 @@ "type": "tidelift" } ], - "time": "2024-01-19T07:03:14+00:00" + "time": "2024-02-23T13:14:51+00:00" }, { "name": "psalm/plugin-symfony", @@ -16339,12 +16434,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "3e513f303c13a625befa037a23b5d1ac9bde2a52" + "reference": "aafb7236bf0c11b93b24e951544bd83470b85bec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3e513f303c13a625befa037a23b5d1ac9bde2a52", - "reference": "3e513f303c13a625befa037a23b5d1ac9bde2a52", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/aafb7236bf0c11b93b24e951544bd83470b85bec", + "reference": "aafb7236bf0c11b93b24e951544bd83470b85bec", "shasum": "" }, "conflict": { @@ -16389,7 +16484,7 @@ "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<4.8", + "baserproject/basercms": "<5.0.9", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bigfork/silverstripe-form-capture": ">=3,<3.1.1", "billz/raspap-webgui": "<2.9.5", @@ -16419,7 +16514,7 @@ "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.17", + "ckeditor/ckeditor": "<4.24", "cockpit-hq/cockpit": "<=2.6.3", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.9", @@ -16475,6 +16570,7 @@ "elijaa/phpmemcacheadmin": "<=1.3", "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", "enshrined/svg-sanitize": "<0.15", "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", @@ -16592,7 +16688,7 @@ "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.4|>=2.5.4,<=3.8.12", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", @@ -16641,7 +16737,7 @@ "magneto/core": "<1.9.4.4-dev", "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<=2.25.7", + "mantisbt/mantisbt": "<2.26.1", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", "mautic/core": "<4.3", @@ -16664,7 +16760,7 @@ "mojo42/jirafeau": "<4.4", "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.0.0-RC2-dev", + "moodle/moodle": "<4.3.3", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", "mpdf/mpdf": "<=7.1.7", @@ -16726,7 +16822,7 @@ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "phanan/koel": "<5.1.4", - "phenx/php-svg-lib": "<0.5.1", + "phenx/php-svg-lib": "<0.5.2", "php-mod/curl": "<2.3.2", "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", "phpems/phpems": ">=6,<=6.1.3", @@ -16745,7 +16841,7 @@ "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.3.3", + "pimcore/admin-ui-classic-bundle": "<1.3.4", "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", "pimcore/demo": "<10.3", @@ -16763,7 +16859,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.3", + "prestashop/prestashop": "<8.1.4", "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", @@ -16786,6 +16882,7 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", + "redaxo/source": "<=5.15.1", "remdex/livehelperchat": "<3.99", "reportico-web/reportico": "<=7.1.21", "rhukster/dom-sanitizer": "<1.0.7", @@ -16923,6 +17020,7 @@ "topthink/framework": "<6.0.14", "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3", + "torrentpier/torrentpier": "<=2.4.1", "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", "tribalsystems/zenario": "<=9.4.59197", "truckersmp/phpwhois": "<=4.3.1", @@ -17068,7 +17166,7 @@ "type": "tidelift" } ], - "time": "2024-02-16T21:04:04+00:00" + "time": "2024-02-23T16:04:25+00:00" }, { "name": "sebastian/cli-parser", @@ -18308,16 +18406,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.54.0", + "version": "v1.55.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125" + "reference": "11a9d3125c5b93ab4043f0f2e9927fdc55881c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a8523cf35d777bf2d8cf5703fa73f378fdc27125", - "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/11a9d3125c5b93ab4043f0f2e9927fdc55881c17", + "reference": "11a9d3125c5b93ab4043f0f2e9927fdc55881c17", "shasum": "" }, "require": { @@ -18380,7 +18478,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.54.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.55.1" }, "funding": [ { @@ -18396,7 +18494,7 @@ "type": "tidelift" } ], - "time": "2024-02-06T21:23:55+00:00" + "time": "2024-02-21T13:41:51+00:00" }, { "name": "symfony/phpunit-bridge", @@ -18563,16 +18661,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.12", + "version": "12.1.14", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5" + "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/d87f15506b5200a0098076cdbf6d00913b4e41f5", - "reference": "d87f15506b5200a0098076cdbf6d00913b4e41f5", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/e3c4a241ee36704f7cf920d5931f39693e64afd5", + "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5", "shasum": "" }, "require": { @@ -18605,7 +18703,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.12" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.14" }, "funding": [ { @@ -18617,7 +18715,7 @@ "type": "github" } ], - "time": "2024-02-14T10:04:06+00:00" + "time": "2024-02-23T13:10:40+00:00" }, { "name": "theseer/tokenizer", @@ -18671,16 +18769,16 @@ }, { "name": "vimeo/psalm", - "version": "5.22.1", + "version": "5.22.2", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "e9dad66e11274315dac27e08349c628c7d6a1a43" + "reference": "d768d914152dbbf3486c36398802f74e80cfde48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/e9dad66e11274315dac27e08349c628c7d6a1a43", - "reference": "e9dad66e11274315dac27e08349c628c7d6a1a43", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d768d914152dbbf3486c36398802f74e80cfde48", + "reference": "d768d914152dbbf3486c36398802f74e80cfde48", "shasum": "" }, "require": { @@ -18777,7 +18875,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-02-15T22:52:31+00:00" + "time": "2024-02-22T23:39:07+00:00" } ], "aliases": [ diff --git a/yarn.lock b/yarn.lock index cf950cbe..3edd73be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1529,9 +1529,9 @@ integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@hotwired/turbo@^8.0.1": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.2.tgz#c31cdadfe66b98983066a94073b26fc7e15835f0" - integrity sha512-3K6QZkwWfosAV8zuM5bY+kKF02jp1lMQGsWfSE6wXdZBRBP3ah+Vj26YNqYtkEomBwRWA0QKhZgyJP7xOQkVEg== + version "8.0.3" + resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-8.0.3.tgz#338e07278f4b3c76921328d3c92dbc4831c209d0" + integrity sha512-qLgp7d6JaegKjMToTJahosrFxV3odfSbiekispQ3soOzE5jnU+iEMWlRvYRe/jvy5Q+JWoywtf9j3RD4ikVjIg== "@jbtronics/bs-treeview@^1.0.1": version "1.0.6" @@ -1558,9 +1558,9 @@ chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" + integrity sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1590,9 +1590,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + version "0.3.23" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80" + integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1768,9 +1768,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.56.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.2.tgz#1c72a9b794aa26a8b94ad26d5b9aa51c8a6384bb" - integrity sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw== + version "8.56.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.3.tgz#d1f6b2303ac5ed53cb2cf59e0ab680cde1698f5f" + integrity sha512-PvSf1wfv2wJpVIFUMSb+i4PvqNYkB9Rkp9ZDO3oaWzq4SKhsQk4mrMBr3ZH06I0hKrVGLBacmgl8JM4WVjb9dg== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1867,9 +1867,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" - integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== + version "20.11.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.20.tgz#f0a2aee575215149a62784210ad88b3a34843659" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== dependencies: undici-types "~5.26.4" @@ -2441,9 +2441,9 @@ bootbox@^6.0.0: integrity sha512-+Calbj1v5UvxAXXDAHfoBlsx63Hcz1JqHaZdJ5EjIcOlkyAbZLCreVScx0Em6ZUvsMCqynuz/3nGDyd9FtFrNQ== bootstrap@^5.1.3: - version "5.3.2" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.2.tgz#97226583f27aae93b2b28ab23f4c114757ff16ae" - integrity sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g== + version "5.3.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38" + integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg== bootswatch@^5.1.3: version "5.3.2" @@ -2503,7 +2503,7 @@ browserify-optional@^1.0.1: ast-types "^0.7.0" browser-resolve "^1.8.1" -browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3: +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -2599,9 +2599,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587: - version "1.0.30001588" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" - integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + version "1.0.30001589" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb" + integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg== chalk@^2.4.2: version "2.4.2" @@ -2755,7 +2755,7 @@ color-parse@1.4.2: dependencies: color-name "^1.0.0" -colord@^2.9.1: +colord@^2.9.1, colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== @@ -3067,25 +3067,25 @@ cssnano-preset-default@^5.2.14: postcss-svgo "^5.1.0" postcss-unique-selectors "^5.1.1" -cssnano-preset-default@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.3.tgz#b4ce755974f4dc8d3d09ac13bb6281cce3ced45e" - integrity sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA== +cssnano-preset-default@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.5.tgz#c7afd6af1230a78b8d12c6da771d1156ab0127cf" + integrity sha512-M+qRDEr5QZrfNl0B2ySdbTLGyNb8kBcSjuwR7WBamYBOEREH9t2efnB/nblekqhdGLZdkf4oZNetykG2JWRdZQ== dependencies: css-declaration-sorter "^7.1.1" cssnano-utils "^4.0.1" postcss-calc "^9.0.1" - postcss-colormin "^6.0.2" - postcss-convert-values "^6.0.2" + postcss-colormin "^6.0.3" + postcss-convert-values "^6.0.4" postcss-discard-comments "^6.0.1" - postcss-discard-duplicates "^6.0.1" - postcss-discard-empty "^6.0.1" + postcss-discard-duplicates "^6.0.2" + postcss-discard-empty "^6.0.2" postcss-discard-overridden "^6.0.1" - postcss-merge-longhand "^6.0.2" - postcss-merge-rules "^6.0.3" - postcss-minify-font-values "^6.0.1" - postcss-minify-gradients "^6.0.1" - postcss-minify-params "^6.0.2" + postcss-merge-longhand "^6.0.3" + postcss-merge-rules "^6.0.4" + postcss-minify-font-values "^6.0.2" + postcss-minify-gradients "^6.0.2" + postcss-minify-params "^6.0.3" postcss-minify-selectors "^6.0.2" postcss-normalize-charset "^6.0.1" postcss-normalize-display-values "^6.0.1" @@ -3093,11 +3093,11 @@ cssnano-preset-default@^6.0.3: postcss-normalize-repeat-style "^6.0.1" postcss-normalize-string "^6.0.1" postcss-normalize-timing-functions "^6.0.1" - postcss-normalize-unicode "^6.0.2" + postcss-normalize-unicode "^6.0.3" postcss-normalize-url "^6.0.1" postcss-normalize-whitespace "^6.0.1" postcss-ordered-values "^6.0.1" - postcss-reduce-initial "^6.0.2" + postcss-reduce-initial "^6.0.3" postcss-reduce-transforms "^6.0.1" postcss-svgo "^6.0.2" postcss-unique-selectors "^6.0.2" @@ -3122,12 +3122,12 @@ cssnano@^5.0.0: yaml "^1.10.2" cssnano@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.3.tgz#46db972da71aa159437287fb4c6bc9c5d3cc5d93" - integrity sha512-MRq4CIj8pnyZpcI2qs6wswoYoDD1t0aL28n+41c1Ukcpm56m1h6mCexIHBGjfZfnTqtGSSCP4/fB1ovxgjBOiw== + version "6.0.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.5.tgz#5ff1a344ca9d7862ee7198991cf3e7463bd12355" + integrity sha512-tpTp/ukgrElwu3ESFY4IvWnGn8eTt8cJhC2aAbtA3lvUlxp6t6UPv8YCLjNnEGiFreT1O0LiOM1U3QyTBVFl2A== dependencies: - cssnano-preset-default "^6.0.3" - lilconfig "^3.0.0" + cssnano-preset-default "^6.0.5" + lilconfig "^3.1.1" csso@^4.2.0: version "4.2.0" @@ -3330,7 +3330,7 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -define-data-property@^1.0.1, define-data-property@^1.1.2: +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -3481,9 +3481,9 @@ domhandler@^5.0.2, domhandler@^5.0.3: domelementtype "^2.3.0" dompurify@^3.0.3: - version "3.0.8" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.8.tgz#e0021ab1b09184bc8af7e35c7dd9063f43a8a437" - integrity sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ== + version "3.0.9" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.9.tgz#b3f362f24b99f53498c75d43ecbd784b0b3ad65e" + integrity sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ== domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" @@ -3521,9 +3521,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.668: - version "1.4.673" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz#1f077d9a095761804aec7ec6346c3f4b69b56534" - integrity sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw== + version "1.4.681" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.681.tgz#5f23fad8aa7e1f64cbb7dd9d15c7e39a1cd7e6e3" + integrity sha512-1PpuqJUFWoXZ1E54m8bsLPVYwIVCRzvaL+n5cjigGga4z854abDnFRc+cTa2th4S79kyGqya/1xoR7h+Y5G5lg== emoji-regex@^8.0.0: version "8.0.0" @@ -3600,12 +3600,13 @@ es-module-lexer@^1.2.1: integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + version "0.10.63" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.63.tgz#9c222a63b6a332ac80b1e373b426af723b895bd6" + integrity sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" + esniff "^2.0.1" next-tick "^1.1.0" es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: @@ -3749,6 +3750,16 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -4211,7 +4222,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== @@ -4219,9 +4230,9 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: es-define-property "^1.0.0" has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" @@ -4804,7 +4815,7 @@ lilconfig@^2.0.3: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lilconfig@^3.0.0: +lilconfig@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== @@ -5519,14 +5530,14 @@ postcss-colormin@^5.3.1: colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-colormin@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.2.tgz#2af9ce753937b08e058dbc6879e4aedfab42806b" - integrity sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw== +postcss-colormin@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.3.tgz#d33f444299e490e8b0914bd347ca8010983e935c" + integrity sha512-ECpkS+UZRyAtu/kjive2/1mihP+GNtgC8kcdU8ueWZi1ZVxMNnRziCLdhrWECJhEtSWijfX2Cl9XTTCK/hjGaA== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" caniuse-api "^3.0.0" - colord "^2.9.1" + colord "^2.9.3" postcss-value-parser "^4.2.0" postcss-convert-values@^5.1.3: @@ -5537,12 +5548,12 @@ postcss-convert-values@^5.1.3: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-convert-values@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.2.tgz#c4a7509aeb1cc7ac3f6948fcbffc2bf8cac7c56a" - integrity sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw== +postcss-convert-values@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.4.tgz#1f4cc51197f0f8bd85d6b5df4206df470f3a3df0" + integrity sha512-YT2yrGzPXoQD3YeA2kBo/696qNwn7vI+15AOS2puXWEvSWqdCqlOyDWRy5GNnOc9ACRGOkuQ4ESQEqPJBWt/GA== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" postcss-discard-comments@^5.1.2: @@ -5560,20 +5571,20 @@ postcss-discard-duplicates@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-duplicates@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.1.tgz#112b1a95948e69b3484fdd43584dda6930977939" - integrity sha512-1hvUs76HLYR8zkScbwyJ8oJEugfPV+WchpnA+26fpJ7Smzs51CzGBHC32RS03psuX/2l0l0UKh2StzNxOrKCYg== +postcss-discard-duplicates@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.2.tgz#11f389e6af55099b928dca34b10734360b34bc93" + integrity sha512-U2rsj4w6pAGROCCcD13LP2eBIi1whUsXs4kgE6xkIuGfkbxCBSKhkCTWyowFd66WdVlLv0uM1euJKIgmdmZObg== postcss-discard-empty@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-empty@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.1.tgz#b34cb45ec891246da4506b53e352390fdef126c4" - integrity sha512-yitcmKwmVWtNsrrRqGJ7/C0YRy53i0mjexBDQ9zYxDwTWVBgbU4+C9jIZLmQlTDT9zhml+u0OMFJh8+31krmOg== +postcss-discard-empty@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.2.tgz#9c4ca61f949dede0f7a1dfe3959e1003d0454500" + integrity sha512-rj6pVC2dVCJrP0Y2RkYTQEbYaCf4HEm+R/2StQgJqGHxAa3+KcYslNQhcRqjLHtl/4wpzipJluaJLqBj6d5eDQ== postcss-discard-overridden@^5.1.0: version "5.1.0" @@ -5620,13 +5631,13 @@ postcss-merge-longhand@^5.1.7: postcss-value-parser "^4.2.0" stylehacks "^5.1.1" -postcss-merge-longhand@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz#cd4e83014851da59545e9a906b245615550f4064" - integrity sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw== +postcss-merge-longhand@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.3.tgz#862ec759face52b7b33e6a6ee72b1d7dbdee0268" + integrity sha512-kF/y3DU8CRt+SX3tP/aG+2gkZI2Z7OXDsPU7FgxIJmuyhQQ1EHceIYcsp/alvzCm2P4c37Sfdu8nNrHc+YeyLg== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^6.0.2" + stylehacks "^6.0.3" postcss-merge-rules@^5.1.4: version "5.1.4" @@ -5638,12 +5649,12 @@ postcss-merge-rules@^5.1.4: cssnano-utils "^3.1.0" postcss-selector-parser "^6.0.5" -postcss-merge-rules@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.3.tgz#08fcf714faaad75b1980ecd961b080ae2f8ddeb3" - integrity sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA== +postcss-merge-rules@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.4.tgz#a4ac3ed63502428d846f8b71b2c880dba58c78f1" + integrity sha512-97iF3UJ5v8N1BWy38y+0l+Z8o5/9uGlEgtWic2PJPzoRrLB6Gxg8TVG93O0EK52jcLeMsywre26AUlX1YAYeHA== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" caniuse-api "^3.0.0" cssnano-utils "^4.0.1" postcss-selector-parser "^6.0.15" @@ -5655,10 +5666,10 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-font-values@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz#788eb930168be90225f3937f0b70aa19d8b532b2" - integrity sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w== +postcss-minify-font-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.2.tgz#fbaad399635ed9fd21078114b5c1109d43a714ed" + integrity sha512-IedzbVMoX0a7VZWjSYr5qJ6C37rws8kl8diPBeMZLJfWKkgXuMFY5R/OxPegn/q9tK9ztd0XRH3aR0u2t+A7uQ== dependencies: postcss-value-parser "^4.2.0" @@ -5671,12 +5682,12 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-gradients@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz#4faf1880b483dc37016658aa186b42194ff9b5bc" - integrity sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w== +postcss-minify-gradients@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.2.tgz#9efc9e3cf026ca2b4d33bce70a167b8416315868" + integrity sha512-vP5mF7iI6/5fcpv+rSfwWQekOE+8I1i7/7RjZPGuIjj6eUaZVeG4XZYZrroFuw1WQd51u2V32wyQFZ+oYdE7CA== dependencies: - colord "^2.9.1" + colord "^2.9.3" cssnano-utils "^4.0.1" postcss-value-parser "^4.2.0" @@ -5689,12 +5700,12 @@ postcss-minify-params@^5.1.4: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.2.tgz#bd64af642fa5610281b8a9461598bbb91f92ae05" - integrity sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw== +postcss-minify-params@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.3.tgz#c7e10f924350ae4a3d9698e4d56cc2ec02d65689" + integrity sha512-j4S74d3AAeCK5eGdQndXSrkxusV2ekOxbXGnlnZthMyZBBvSDiU34CihTASbJxuVB3bugudmwolS7+Dgs5OyOQ== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" cssnano-utils "^4.0.1" postcss-value-parser "^4.2.0" @@ -5846,12 +5857,12 @@ postcss-normalize-unicode@^5.1.1: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.2.tgz#361026744ff11baebaec771b60c2a5f36f274fd0" - integrity sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA== +postcss-normalize-unicode@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.3.tgz#86ca57e765d841ecc0c1c4f2a86182e728bbcf20" + integrity sha512-T2Bb3gXz0ASgc3ori2dzjv6j/P2IantreaC6fT8tWjqYUiqMAh5jGIkdPwEV2FaucjQlCLeFJDJh2BeSugE1ig== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" postcss-normalize-url@^5.1.0: @@ -5907,12 +5918,12 @@ postcss-reduce-initial@^5.1.2: browserslist "^4.21.4" caniuse-api "^3.0.0" -postcss-reduce-initial@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.2.tgz#763d25902406c872264041df69f182eb15a5d9be" - integrity sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw== +postcss-reduce-initial@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.3.tgz#112b039079ca96faeb0c5bbd8bfab6cf38e8177d" + integrity sha512-w4QIR9pEa1N4xMx3k30T1vLZl6udVK2RmNqrDXhBXX9L0mBj2a8ADs8zkbaEH7eUy1m30Wyr5EBgHN31Yq1JvA== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" caniuse-api "^3.0.0" postcss-reduce-transforms@^5.1.0: @@ -6461,13 +6472,14 @@ set-function-length@^1.2.1: has-property-descriptors "^1.0.1" set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: - define-data-property "^1.0.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" setimmediate@^1.0.5: version "1.0.5" @@ -6748,12 +6760,12 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylehacks@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.2.tgz#5bf2654561752547d4548765f35c9a49659b3742" - integrity sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg== +stylehacks@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.3.tgz#3cb7d4ceae5f310b9d211fd49bfda18984e89b9f" + integrity sha512-KzBqjnqktc8/I0ERCb+lGq06giF/JxDbw2r9kEVhen9noHeIDRtMWUp9r62sOk+/2bbX6sFG1GhsS7ToXG0PEg== dependencies: - browserslist "^4.22.2" + browserslist "^4.23.0" postcss-selector-parser "^6.0.15" sugarss@^4.0.1: @@ -6869,9 +6881,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.26.0, terser@^5.3.4: - version "5.27.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.1.tgz#b0092975ea1b379d166088a1a57e32f0839d84a2" - integrity sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug== + version "5.28.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28" + integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -7319,9 +7331,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.74.0: - version "5.90.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.2.tgz#189686a8a292427076db9907d495625345805fab" - integrity sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw== + version "5.90.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" + integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" From e1f1d10833175a8fae66c8acb950d7caa5544ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 22:51:02 +0100 Subject: [PATCH 084/634] Added test for change on ParamterDTO done by PR #530 --- tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php index 4300259f..b04e0ddd 100644 --- a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php +++ b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php @@ -174,6 +174,8 @@ class ParameterDTOTest extends TestCase $this->assertEquals(['1.0', 'C_m'], ParameterDTO::splitIntoValueAndUnit('1.0C_m')); $this->assertEquals(["70", "℃"], ParameterDTO::splitIntoValueAndUnit("70℃")); + $this->assertEquals(["-5.0", "kg"], ParameterDTO::splitIntoValueAndUnit("-5.0 kg")); + $this->assertNull(ParameterDTO::splitIntoValueAndUnit('kg')); $this->assertNull(ParameterDTO::splitIntoValueAndUnit('Test')); } From e937432d1ee08c6ff21c6540bfd5abe8d4382db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 23:23:36 +0100 Subject: [PATCH 085/634] Fixed phpstan issue --- src/Services/InfoProviderSystem/Providers/LCSCProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index eea43f61..c6c1d56c 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -271,7 +271,7 @@ class LCSCProvider implements InfoProviderInterface foreach ($attributes as $attribute) { //Skip this attribute if it's empty - if (in_array(trim($attribute['paramValueEn']), array('', '-'))) { + if (in_array(trim($attribute['paramValueEn']), array('', '-'), true)) { continue; //If the attribute contains a tilde we assume it is a range } elseif (str_contains($attribute['paramValueEn'], '~')) { From 4b7d200aa276888b486cd90fc28db59481b2fc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 23:32:50 +0100 Subject: [PATCH 086/634] Retrieve category info from LCSC --- .../InfoProviderSystem/Providers/LCSCProvider.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php index c6c1d56c..1212990e 100755 --- a/src/Services/InfoProviderSystem/Providers/LCSCProvider.php +++ b/src/Services/InfoProviderSystem/Providers/LCSCProvider.php @@ -151,11 +151,24 @@ class LCSCProvider implements InfoProviderInterface $footprint = strip_tags($footprint); } + //Build category by concatenating the catalogName and parentCatalogName + $category = null; + if (isset($product['parentCatalogName'])) { + $category = $product['parentCatalogName']; + } + if (isset($product['catalogName'])) { + $category = ($category ?? '') . ' -> ' . $product['catalogName']; + + // Replace the / with a -> for better readability + $category = str_replace('/', ' -> ', $category); + } + return new PartDetailDTO( provider_key: $this->getProviderKey(), provider_id: $product['productCode'], name: $product['productModel'], description: strip_tags($product['productIntroEn']), + category: $category, manufacturer: $product['brandNameEn'], mpn: $product['productModel'] ?? null, preview_image_url: $product['productImageUrl'], From 12e9497ccfdd2adf56d2845d0280cb8c39a9d866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 23:55:31 +0100 Subject: [PATCH 087/634] Sanatize remaining invalid URL characters somehow returned by InfoProviders This fixes issue #521 --- .../InfoProviderSystem/DTOs/FileDTO.php | 14 ++++- .../InfoProviderSystem/DTOs/FileDTOTest.php | 52 +++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php diff --git a/src/Services/InfoProviderSystem/DTOs/FileDTO.php b/src/Services/InfoProviderSystem/DTOs/FileDTO.php index 516ab949..d5ba7fe2 100644 --- a/src/Services/InfoProviderSystem/DTOs/FileDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/FileDTO.php @@ -29,14 +29,24 @@ namespace App\Services\InfoProviderSystem\DTOs; */ class FileDTO { + /** + * @var string The URL where to get this file + */ + public readonly string $url; + /** * @param string $url The URL where to get this file * @param string|null $name Optionally the name of this file */ public function __construct( - public readonly string $url, + string $url, public readonly ?string $name = null, - ) {} + ) { + //Find all occurrences of non URL safe characters and replace them with their URL encoded version. + //We only want to replace characters which can not have a valid meaning in a URL (what would break the URL). + //Digikey provided some wrong URLs with a ^ in them, which is not a valid URL character. (https://github.com/Part-DB/Part-DB-server/issues/521) + $this->url = preg_replace_callback('/[^a-zA-Z0-9_\-.$+!*();\/?:@=&#%]/', fn($matches) => urlencode($matches[0]), $url); + } } \ No newline at end of file diff --git a/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php new file mode 100644 index 00000000..3f0deafd --- /dev/null +++ b/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php @@ -0,0 +1,52 @@ +. + */ + +namespace App\Tests\Services\InfoProviderSystem\DTOs; + +use App\Services\InfoProviderSystem\DTOs\FileDTO; +use PHPUnit\Framework\TestCase; + +class FileDTOTest extends TestCase +{ + + + public static function escapingDataProvider(): array + { + return [ + //Normal URLs must be unchanged, even if they contain special characters + ["https://localhost:8000/en/part/1335/edit#attachments", "https://localhost:8000/en/part/1335/edit#attachments"], + ["https://localhost:8000/en/part/1335/edit?test=%20%20&sfee_aswer=test-223!*()", "https://localhost:8000/en/part/1335/edit?test=%20%20&sfee_aswer=test-223!*()"], + + //Remaining URL unsafe characters must be escaped + ["test%5Ese", "test^se"], + ["test+se", "test se"], + ["test%7Cse", "test|se"], + ]; + } + + /** + * @dataProvider escapingDataProvider + */ + public function testURLEscaping(string $expected, string $input): void + { + $fileDTO = new FileDTO( $input); + self::assertSame($expected, $fileDTO->url); + } +} From a5d184baef368e3e575b0adc10178e1a05a1bd3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 24 Feb 2024 23:58:27 +0100 Subject: [PATCH 088/634] Use rawurlencode instead of urlencode to sanatize URL-unsafe characters returned by the info providers. --- src/Services/InfoProviderSystem/DTOs/FileDTO.php | 2 +- tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOs/FileDTO.php b/src/Services/InfoProviderSystem/DTOs/FileDTO.php index d5ba7fe2..96dd1838 100644 --- a/src/Services/InfoProviderSystem/DTOs/FileDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/FileDTO.php @@ -45,7 +45,7 @@ class FileDTO //Find all occurrences of non URL safe characters and replace them with their URL encoded version. //We only want to replace characters which can not have a valid meaning in a URL (what would break the URL). //Digikey provided some wrong URLs with a ^ in them, which is not a valid URL character. (https://github.com/Part-DB/Part-DB-server/issues/521) - $this->url = preg_replace_callback('/[^a-zA-Z0-9_\-.$+!*();\/?:@=&#%]/', fn($matches) => urlencode($matches[0]), $url); + $this->url = preg_replace_callback('/[^a-zA-Z0-9_\-.$+!*();\/?:@=&#%]/', fn($matches) => rawurlencode($matches[0]), $url); } diff --git a/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php index 3f0deafd..8ec454e7 100644 --- a/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php +++ b/tests/Services/InfoProviderSystem/DTOs/FileDTOTest.php @@ -36,7 +36,7 @@ class FileDTOTest extends TestCase //Remaining URL unsafe characters must be escaped ["test%5Ese", "test^se"], - ["test+se", "test se"], + ["test%20se", "test se"], ["test%7Cse", "test|se"], ]; } From 2b6592686565a3f5999979c90bcc92dc42612c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Feb 2024 00:48:15 +0100 Subject: [PATCH 089/634] Cache the sidebar trees to save some database calls --- src/Services/Trees/TreeViewGenerator.php | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/Services/Trees/TreeViewGenerator.php b/src/Services/Trees/TreeViewGenerator.php index 4ffb02e0..f5bf3f0b 100644 --- a/src/Services/Trees/TreeViewGenerator.php +++ b/src/Services/Trees/TreeViewGenerator.php @@ -68,6 +68,7 @@ class TreeViewGenerator /** * Gets a TreeView list for the entities of the given class. + * The result is cached, if the full tree should be shown and no element should be selected. * * @param string $class The class for which the treeView should be generated * @param AbstractStructuralDBElement|null $parent The root nodes in the tree should have this element as parent (use null, if you want to get all entities) @@ -82,6 +83,40 @@ class TreeViewGenerator ?AbstractStructuralDBElement $parent = null, string $mode = 'list_parts', ?AbstractDBElement $selectedElement = null + ): array + { + //If we just want a part of a tree, don't cache it or select a specific element, don't cache it + if ($parent instanceof AbstractStructuralDBElement || $selectedElement instanceof AbstractDBElement) { + return $this->getTreeViewUncached($class, $parent, $mode, $selectedElement); + } + + $secure_class_name = $this->tagGenerator->getElementTypeCacheTag($class); + $key = 'sidebar_treeview_'.$this->keyGenerator->generateKey().'_'.$secure_class_name; + $key .= $mode; + + return $this->cache->get($key, function (ItemInterface $item) use ($class, $parent, $mode, $selectedElement, $secure_class_name) { + // Invalidate when groups, an element with the class or the user changes + $item->tag(['groups', 'tree_treeview', $this->keyGenerator->generateKey(), $secure_class_name]); + return $this->getTreeViewUncached($class, $parent, $mode, $selectedElement); + }); + } + + /** + * Gets a TreeView list for the entities of the given class. + * + * @param string $class The class for which the treeView should be generated + * @param AbstractStructuralDBElement|null $parent The root nodes in the tree should have this element as parent (use null, if you want to get all entities) + * @param string $mode The link type that will be generated for the hyperlink section of each node (see EntityURLGenerator for possible values). + * Set to empty string, to disable href field. + * @param AbstractDBElement|null $selectedElement The element that should be selected. If set to null, no element will be selected. + * + * @return TreeViewNode[] an array of TreeViewNode[] elements of the root elements + */ + private function getTreeViewUncached( + string $class, + ?AbstractStructuralDBElement $parent = null, + string $mode = 'list_parts', + ?AbstractDBElement $selectedElement = null ): array { $head = []; From b176cb1ae1ef5f809e4a1b0f13354a65289827c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Feb 2024 00:58:26 +0100 Subject: [PATCH 090/634] Use a much faster query to retrieve the total number of rows in datatables This should increase performance on part tables --- src/DataTables/PartsDataTable.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index 8a5cd42a..066ae528 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -208,6 +208,9 @@ final class PartsDataTable implements DataTableTypeInterface 'detail_query' => $this->getDetailQuery(...), 'entity' => Part::class, 'hydrate' => Query::HYDRATE_OBJECT, + //Use the simple total query, as we just want to get the total number of parts without any conditions + //For this the normal query would be pretty slow + 'simple_total_query' => true, 'criteria' => [ function (QueryBuilder $builder) use ($options): void { $this->buildCriteria($builder, $options); From fbd095ab50ba55b1d168f6f6378e2b5e24cbba6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Feb 2024 01:40:25 +0100 Subject: [PATCH 091/634] Only add the joins to the parts table filter query if they are really required This should improve the performance of the queries slightly --- src/DataTables/Filters/PartFilter.php | 28 +++++++-------- src/DataTables/Filters/PartSearchFilter.php | 12 +++---- src/DataTables/PartsDataTable.php | 39 +++++++++++++++++++-- 3 files changed, 57 insertions(+), 22 deletions(-) diff --git a/src/DataTables/Filters/PartFilter.php b/src/DataTables/Filters/PartFilter.php index 03c031a2..1e415c6e 100644 --- a/src/DataTables/Filters/PartFilter.php +++ b/src/DataTables/Filters/PartFilter.php @@ -115,31 +115,31 @@ class PartFilter implements FilterInterface */ //We have to use Having here, as we use an alias column which is not supported on the where clause and would result in an error $this->amountSum = (new IntConstraint('amountSum'))->useHaving(); - $this->lotCount = new IntConstraint('COUNT(partLots)'); + $this->lotCount = new IntConstraint('COUNT(_partLots)'); $this->lessThanDesired = new LessThanDesiredConstraint(); - $this->storelocation = new EntityConstraint($nodesListBuilder, StorageLocation::class, 'partLots.storage_location'); - $this->lotNeedsRefill = new BooleanConstraint('partLots.needs_refill'); - $this->lotUnknownAmount = new BooleanConstraint('partLots.instock_unknown'); - $this->lotExpirationDate = new DateTimeConstraint('partLots.expiration_date'); - $this->lotDescription = new TextConstraint('partLots.description'); - $this->lotOwner = new EntityConstraint($nodesListBuilder, User::class, 'partLots.owner'); + $this->storelocation = new EntityConstraint($nodesListBuilder, StorageLocation::class, '_partLots.storage_location'); + $this->lotNeedsRefill = new BooleanConstraint('_partLots.needs_refill'); + $this->lotUnknownAmount = new BooleanConstraint('_partLots.instock_unknown'); + $this->lotExpirationDate = new DateTimeConstraint('_partLots.expiration_date'); + $this->lotDescription = new TextConstraint('_partLots.description'); + $this->lotOwner = new EntityConstraint($nodesListBuilder, User::class, '_partLots.owner'); $this->manufacturer = new EntityConstraint($nodesListBuilder, Manufacturer::class, 'part.manufacturer'); $this->manufacturer_product_number = new TextConstraint('part.manufacturer_product_number'); $this->manufacturer_product_url = new TextConstraint('part.manufacturer_product_url'); $this->manufacturing_status = new ChoiceConstraint('part.manufacturing_status'); - $this->attachmentsCount = new IntConstraint('COUNT(attachments)'); - $this->attachmentType = new EntityConstraint($nodesListBuilder, AttachmentType::class, 'attachments.attachment_type'); - $this->attachmentName = new TextConstraint('attachments.name'); + $this->attachmentsCount = new IntConstraint('COUNT(_attachments)'); + $this->attachmentType = new EntityConstraint($nodesListBuilder, AttachmentType::class, '_attachments.attachment_type'); + $this->attachmentName = new TextConstraint('_attachments.name'); - $this->supplier = new EntityConstraint($nodesListBuilder, Supplier::class, 'orderdetails.supplier'); - $this->orderdetailsCount = new IntConstraint('COUNT(orderdetails)'); - $this->obsolete = new BooleanConstraint('orderdetails.obsolete'); + $this->supplier = new EntityConstraint($nodesListBuilder, Supplier::class, '_orderdetails.supplier'); + $this->orderdetailsCount = new IntConstraint('COUNT(_orderdetails)'); + $this->obsolete = new BooleanConstraint('_orderdetails.obsolete'); $this->parameters = new ArrayCollection(); - $this->parametersCount = new IntConstraint('COUNT(parameters)'); + $this->parametersCount = new IntConstraint('COUNT(_parameters)'); } public function apply(QueryBuilder $queryBuilder): void diff --git a/src/DataTables/Filters/PartSearchFilter.php b/src/DataTables/Filters/PartSearchFilter.php index b94d805a..a00dd25f 100644 --- a/src/DataTables/Filters/PartSearchFilter.php +++ b/src/DataTables/Filters/PartSearchFilter.php @@ -82,7 +82,7 @@ class PartSearchFilter implements FilterInterface $fields_to_search[] = 'part.name'; } if($this->category) { - $fields_to_search[] = 'category.name'; + $fields_to_search[] = '_category.name'; } if($this->description) { $fields_to_search[] = 'part.description'; @@ -94,22 +94,22 @@ class PartSearchFilter implements FilterInterface $fields_to_search[] = 'part.tags'; } if($this->storelocation) { - $fields_to_search[] = 'storelocations.name'; + $fields_to_search[] = '_storelocations.name'; } if($this->ordernr) { - $fields_to_search[] = 'orderdetails.supplierpartnr'; + $fields_to_search[] = '_orderdetails.supplierpartnr'; } if($this->mpn) { $fields_to_search[] = 'part.manufacturer_product_number'; } if($this->supplier) { - $fields_to_search[] = 'suppliers.name'; + $fields_to_search[] = '_suppliers.name'; } if($this->manufacturer) { - $fields_to_search[] = 'manufacturer.name'; + $fields_to_search[] = '_manufacturer.name'; } if($this->footprint) { - $fields_to_search[] = 'footprint.name'; + $fields_to_search[] = '_footprint.name'; } if ($this->ipn) { $fields_to_search[] = 'part.ipn'; diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index 066ae528..f2289fe2 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -241,7 +241,7 @@ final class PartsDataTable implements DataTableTypeInterface ) AS HIDDEN amountSum' ) ->from(Part::class, 'part') - ->leftJoin('part.category', 'category') + /*->leftJoin('part.category', 'category') ->leftJoin('part.master_picture_attachment', 'master_picture_attachment') ->leftJoin('part.partLots', 'partLots') ->leftJoin('partLots.storage_location', 'storelocations') @@ -252,7 +252,7 @@ final class PartsDataTable implements DataTableTypeInterface ->leftJoin('orderdetails.supplier', 'suppliers') ->leftJoin('part.attachments', 'attachments') ->leftJoin('part.partUnit', 'partUnit') - ->leftJoin('part.parameters', 'parameters') + ->leftJoin('part.parameters', 'parameters')*/ //This must be the only group by, or the paginator will not work correctly ->addGroupBy('part.id'); @@ -339,5 +339,40 @@ final class PartsDataTable implements DataTableTypeInterface $filter = $options['filter']; $filter->apply($builder); } + + //Check if the query contains certain conditions, for which we need to add additional joins + //The join fields get prefixed with an underscore, so we can check if they are used in the query easy without confusing them for a part subfield + $dql = $builder->getDQL(); + + if (str_contains($dql, '_category')) { + $builder->leftJoin('part.category', '_category'); + } + if (str_contains($dql, '_master_picture_attachment')) { + $builder->leftJoin('part.master_picture_attachment', '_master_picture_attachment'); + } + if (str_contains($dql, '_partLots') || str_contains($dql, '_storelocations')) { + $builder->leftJoin('part.partLots', '_partLots'); + $builder->leftJoin('_partLots.storage_location', '_storelocations'); + } + if (str_contains($dql, '_footprint')) { + $builder->leftJoin('part.footprint', '_footprint'); + } + if (str_contains($dql, '_manufacturer')) { + $builder->leftJoin('part.manufacturer', '_manufacturer'); + } + if (str_contains($dql, '_orderdetails') || str_contains($dql, '_suppliers')) { + $builder->leftJoin('part.orderdetails', '_orderdetails'); + $builder->leftJoin('_orderdetails.supplier', '_suppliers'); + } + if (str_contains($dql, '_attachments')) { + $builder->leftJoin('part.attachments', '_attachments'); + } + if (str_contains($dql, '_partUnit')) { + $builder->leftJoin('part.partUnit', '_partUnit'); + } + if (str_contains($dql, '_parameters')) { + $builder->leftJoin('part.parameters', '_parameters'); + } + } } From 2e5b2c8b7dc03fe819ffefe8951d3ca373607818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Feb 2024 01:46:35 +0100 Subject: [PATCH 092/634] Removed amountSum subquery from the detail query, as its result is not used anywhere --- src/DataTables/PartsDataTable.php | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php index f2289fe2..98bfb809 100644 --- a/src/DataTables/PartsDataTable.php +++ b/src/DataTables/PartsDataTable.php @@ -268,6 +268,8 @@ final class PartsDataTable implements DataTableTypeInterface * We can do complex fetch joins, as we do not need to filter or sort here (which would kill the performance). * The only condition should be for the IDs. * It is important that elements are ordered the same way, as the IDs are passed, or ordering will be wrong. + * + * We do not require the subqueries like amountSum here, as it is not used to render the table (and only for sorting) */ $builder ->select('part') @@ -281,16 +283,6 @@ final class PartsDataTable implements DataTableTypeInterface ->addSelect('orderdetails') ->addSelect('attachments') ->addSelect('storelocations') - //Calculate amount sum using a subquery, so we can filter and sort by it - ->addSelect( - '( - SELECT IFNULL(SUM(partLot.amount), 0.0) - FROM '.PartLot::class.' partLot - WHERE partLot.part = part.id - AND partLot.instock_unknown = false - AND (partLot.expiration_date IS NULL OR partLot.expiration_date > CURRENT_DATE()) - ) AS HIDDEN amountSum' - ) ->from(Part::class, 'part') ->leftJoin('part.category', 'category') ->leftJoin('part.master_picture_attachment', 'master_picture_attachment') From c7fac06b6502f33745098d9f854fd1b8e1a6035c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 25 Feb 2024 19:44:34 +0100 Subject: [PATCH 093/634] Updated dependencies --- composer.lock | 252 ++++++++++----------------------------------- config/bundles.php | 1 - symfony.lock | 3 - 3 files changed, 52 insertions(+), 204 deletions(-) diff --git a/composer.lock b/composer.lock index 2190a059..410a500c 100644 --- a/composer.lock +++ b/composer.lock @@ -4670,16 +4670,16 @@ }, { "name": "omines/datatables-bundle", - "version": "0.8.0", + "version": "0.8.1", "source": { "type": "git", "url": "https://github.com/omines/datatables-bundle.git", - "reference": "d0503e8bd56f5c4b379e930f51f499d0a04d07c1" + "reference": "3d31d1cddac5635803f59b3f7905feb0d4209c80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/omines/datatables-bundle/zipball/d0503e8bd56f5c4b379e930f51f499d0a04d07c1", - "reference": "d0503e8bd56f5c4b379e930f51f499d0a04d07c1", + "url": "https://api.github.com/repos/omines/datatables-bundle/zipball/3d31d1cddac5635803f59b3f7905feb0d4209c80", + "reference": "3d31d1cddac5635803f59b3f7905feb0d4209c80", "shasum": "" }, "require": { @@ -4691,36 +4691,36 @@ "symfony/translation": "^6.3|^7.0" }, "require-dev": { - "doctrine/common": "^2.6|^3.3", + "doctrine/common": "^3.4.3", "doctrine/doctrine-bundle": "^2.11.1", - "doctrine/orm": "^2.13.1", - "doctrine/persistence": "^3.0.3", + "doctrine/orm": "^2.17.2", + "doctrine/persistence": "^3.2.0", "ext-curl": "*", "ext-json": "*", "ext-mongodb": "*", "ext-pdo_sqlite": "*", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^v3.40.0", - "mongodb/mongodb": "^1.12", + "mongodb/mongodb": "^1.17", "ocramius/package-versions": "^2.8", - "phpoffice/phpspreadsheet": "^1.24.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8.2", - "phpstan/phpstan-doctrine": "^1.3.12", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-symfony": "^1.2.9", - "phpunit/phpunit": "^10.5.1", - "ruflin/elastica": "^6.0|^7.2", - "symfony/browser-kit": "^6.1.3|^7.0", - "symfony/css-selector": "^6.1.3|^7.0", - "symfony/doctrine-bridge": "^6.3|^7.0", - "symfony/dom-crawler": "^6.1.3|^7.0", - "symfony/intl": "^6.1|^7.0", - "symfony/mime": "^6.1.3|^7.0", - "symfony/phpunit-bridge": "^6.3|^7.0", - "symfony/twig-bundle": "^6.1.1|^7.0", - "symfony/var-dumper": "^6.1.3|^7.0", - "symfony/yaml": "^6.1.3|^7.0" + "phpoffice/phpspreadsheet": "^1.29.0 || ^2.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.55", + "phpstan/phpstan-doctrine": "^1.3.54", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-symfony": "^1.3.6", + "phpunit/phpunit": "^11.0.3", + "ruflin/elastica": "^6.2|^7.3.1", + "symfony/browser-kit": "^6.3|^7.0", + "symfony/css-selector": "^6.3|^7.0", + "symfony/doctrine-bridge": "^6.3|^7.0.2", + "symfony/dom-crawler": "^6.3|^7.0", + "symfony/intl": "^6.3|^7.0.2", + "symfony/mime": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3|^7.0.2", + "symfony/twig-bundle": "^6.3|^7.0", + "symfony/var-dumper": "^6.3|^7.0.2", + "symfony/yaml": "^6.3|^7.0" }, "suggest": { "doctrine/doctrine-bundle": "For integrated access to Doctrine object managers", @@ -4771,7 +4771,7 @@ ], "support": { "issues": "https://github.com/omines/datatables-bundle/issues", - "source": "https://github.com/omines/datatables-bundle/tree/0.8.0" + "source": "https://github.com/omines/datatables-bundle/tree/0.8.1" }, "funding": [ { @@ -4779,7 +4779,7 @@ "type": "github" } ], - "time": "2023-12-05T08:18:04+00:00" + "time": "2024-02-24T22:55:33+00:00" }, { "name": "onelogin/php-saml", @@ -6971,86 +6971,6 @@ ], "time": "2023-12-25T11:42:15+00:00" }, - { - "name": "spomky-labs/cbor-bundle", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/Spomky-Labs/cbor-bundle.git", - "reference": "157ca6ed2f6e957f9e95d71ca86bc67bf42ee79c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/cbor-bundle/zipball/157ca6ed2f6e957f9e95d71ca86bc67bf42ee79c", - "reference": "157ca6ed2f6e957f9e95d71ca86bc67bf42ee79c", - "shasum": "" - }, - "require": { - "php": ">=8.0", - "spomky-labs/cbor-php": "^3.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0" - }, - "require-dev": { - "infection/infection": "^0.25.3", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-beberlei-assert": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.0", - "rector/rector": "^0.12.5", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/phpunit-bridge": "^5.3|^6.0", - "symplify/easy-coding-standard": "^9.4" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "SpomkyLabs\\CborBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" - }, - { - "name": "All contributors", - "homepage": "https://github.com/spomky-labs/cbor-bundle/contributors" - } - ], - "description": "CBOR Encoder/Decoder Bundle for Symfony.", - "homepage": "https://github.com/spomky-labs", - "keywords": [ - "Concise Binary Object Representation", - "RFC7049", - "bundle", - "cbor", - "symfony" - ], - "support": { - "issues": "https://github.com/Spomky-Labs/cbor-bundle/issues", - "source": "https://github.com/Spomky-Labs/cbor-bundle/tree/v3.0.0" - }, - "funding": [ - { - "url": "https://github.com/Spomky", - "type": "github" - }, - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "time": "2021-11-23T21:41:00+00:00" - }, { "name": "spomky-labs/cbor-php", "version": "3.0.4", @@ -14037,16 +13957,16 @@ }, { "name": "web-auth/metadata-service", - "version": "4.7.9", + "version": "4.8.0", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-metadata-service.git", - "reference": "1da1fc6d8055c75af4e46cde169d7b920b8af90a" + "reference": "039e3ce40a06ab12f0090ac410da8e7a07fc2c2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-metadata-service/zipball/1da1fc6d8055c75af4e46cde169d7b920b8af90a", - "reference": "1da1fc6d8055c75af4e46cde169d7b920b8af90a", + "url": "https://api.github.com/repos/web-auth/webauthn-metadata-service/zipball/039e3ce40a06ab12f0090ac410da8e7a07fc2c2b", + "reference": "039e3ce40a06ab12f0090ac410da8e7a07fc2c2b", "shasum": "" }, "require": { @@ -14063,10 +13983,11 @@ "symfony/deprecation-contracts": "^3.2" }, "suggest": { + "phpdocumentor/reflection-docblock": "As of 4.5.x, the phpdocumentor/reflection-docblock component will become mandatory for converting objects such as the Metadata Statement", "psr/clock-implementation": "As of 4.5.x, the PSR Clock implementation will replace lcobucci/clock", "psr/log-implementation": "Recommended to receive logs from the library", - "web-token/jwt-key-mgmt": "Mandatory for fetching Metadata Statement from distant sources", - "web-token/jwt-signature-algorithm-ecdsa": "Mandatory for fetching Metadata Statement from distant sources" + "symfony/serializer": "As of 4.5.x, the symfony/serializer component will become mandatory for converting objects such as the Metadata Statement", + "web-token/jwt-library": "Mandatory for fetching Metadata Statement from distant sources" }, "type": "library", "extra": { @@ -14102,7 +14023,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.7.9" + "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.8.0" }, "funding": [ { @@ -14114,20 +14035,20 @@ "type": "patreon" } ], - "time": "2023-10-07T13:59:48+00:00" + "time": "2024-02-24T09:40:29+00:00" }, { "name": "web-auth/webauthn-lib", - "version": "4.7.9", + "version": "4.8.0", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-lib.git", - "reference": "03a652042d7b5e919e449954d729ced26ee3c3c2" + "reference": "dee648c4a0971633c9434391c710bd3f244d6aed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/03a652042d7b5e919e449954d729ced26ee3c3c2", - "reference": "03a652042d7b5e919e449954d729ced26ee3c3c2", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/dee648c4a0971633c9434391c710bd3f244d6aed", + "reference": "dee648c4a0971633c9434391c710bd3f244d6aed", "shasum": "" }, "require": { @@ -14148,10 +14069,7 @@ "suggest": { "psr/log-implementation": "Recommended to receive logs from the library", "symfony/event-dispatcher": "Recommended to use dispatched events", - "web-token/jwt-key-mgmt": "Mandatory for the AndroidSafetyNet Attestation Statement support", - "web-token/jwt-signature-algorithm-ecdsa": "Recommended for the AndroidSafetyNet Attestation Statement support", - "web-token/jwt-signature-algorithm-eddsa": "Recommended for the AndroidSafetyNet Attestation Statement support", - "web-token/jwt-signature-algorithm-rsa": "Mandatory for the AndroidSafetyNet Attestation Statement support" + "web-token/jwt-library": "Mandatory for the AndroidSafetyNet Attestation Statement support" }, "type": "library", "extra": { @@ -14187,7 +14105,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-lib/tree/4.7.9" + "source": "https://github.com/web-auth/webauthn-lib/tree/4.8.0" }, "funding": [ { @@ -14199,39 +14117,38 @@ "type": "patreon" } ], - "time": "2024-02-05T17:20:58+00:00" + "time": "2024-02-23T11:09:26+00:00" }, { "name": "web-auth/webauthn-symfony-bundle", - "version": "4.7.9", + "version": "4.8.0", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-symfony-bundle.git", - "reference": "f7a677c4063d1266d66dd4ef26833985a6afb4b9" + "reference": "d72050d6ce8cf6d7bd6180de7eb9204d1e4233a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/f7a677c4063d1266d66dd4ef26833985a6afb4b9", - "reference": "f7a677c4063d1266d66dd4ef26833985a6afb4b9", + "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/d72050d6ce8cf6d7bd6180de7eb9204d1e4233a2", + "reference": "d72050d6ce8cf6d7bd6180de7eb9204d1e4233a2", "shasum": "" }, "require": { "nyholm/psr7": "^1.5", "php": ">=8.1", "psr/event-dispatcher": "^1.0", - "spomky-labs/cbor-bundle": "^3.0", "symfony/config": "^6.1|^7.0", "symfony/dependency-injection": "^6.1|^7.0", "symfony/framework-bundle": "^6.1|^7.0", "symfony/http-client": "^6.1|^7.0", - "symfony/psr-http-message-bridge": "^2.1", + "symfony/psr-http-message-bridge": "^2.1|^6.1|^7.0", "symfony/security-bundle": "^6.1|^7.0", "symfony/security-core": "^6.1|^7.0", "symfony/security-http": "^6.1|^7.0", "symfony/serializer": "^6.1|^7.0", "symfony/validator": "^6.1|^7.0", "web-auth/webauthn-lib": "self.version", - "web-token/jwt-signature": "^3.1" + "web-token/jwt-library": "^3.3" }, "type": "symfony-bundle", "extra": { @@ -14270,7 +14187,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.7.9" + "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.8.0" }, "funding": [ { @@ -14282,7 +14199,7 @@ "type": "patreon" } ], - "time": "2023-12-08T13:02:43+00:00" + "time": "2024-02-23T11:09:26+00:00" }, { "name": "web-token/jwt-library", @@ -14381,71 +14298,6 @@ ], "time": "2024-02-22T08:15:45+00:00" }, - { - "name": "web-token/jwt-signature", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/web-token/jwt-signature.git", - "reference": "eccfd59e658d4118414cf6d14229aa52eec387e7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/eccfd59e658d4118414cf6d14229aa52eec387e7", - "reference": "eccfd59e658d4118414cf6d14229aa52eec387e7", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "web-token/jwt-library": "^3.3" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" - }, - { - "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-framework/contributors" - } - ], - "description": "[DEPRECATED] Please use web-token/jwt-library instead.", - "homepage": "https://github.com/web-token", - "keywords": [ - "JOSE", - "JWE", - "JWK", - "JWKSet", - "JWS", - "Jot", - "RFC7515", - "RFC7516", - "RFC7517", - "RFC7518", - "RFC7519", - "RFC7520", - "bundle", - "jwa", - "jwt", - "symfony" - ], - "support": { - "source": "https://github.com/web-token/jwt-signature/tree/3.3.0" - }, - "funding": [ - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "abandoned": "web-token/jwt-library", - "time": "2024-02-22T07:19:34+00:00" - }, { "name": "webmozart/assert", "version": "1.11.0", diff --git a/config/bundles.php b/config/bundles.php index 70b10fa5..b78bbc22 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -24,7 +24,6 @@ return [ Symfony\UX\Turbo\TurboBundle::class => ['all' => true], Jbtronics\TFAWebauthn\TFAWebauthnBundle::class => ['all' => true], Scheb\TwoFactorBundle\SchebTwoFactorBundle::class => ['all' => true], - SpomkyLabs\CborBundle\SpomkyLabsCborBundle::class => ['all' => true], Webauthn\Bundle\WebauthnBundle::class => ['all' => true], Nbgrp\OneloginSamlBundle\NbgrpOneloginSamlBundle::class => ['all' => true], Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true], diff --git a/symfony.lock b/symfony.lock index f3f36c9f..278cef71 100644 --- a/symfony.lock +++ b/symfony.lock @@ -453,9 +453,6 @@ "shivas/versioning-bundle": { "version": "3.1.3" }, - "spomky-labs/cbor-bundle": { - "version": "v2.0.3" - }, "symfony/apache-pack": { "version": "1.0", "recipe": { From 60942c825495402a4e6075f5da0b14c92268206a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 00:08:21 +0100 Subject: [PATCH 094/634] Added very basic livesearch feauture using algolia autocomplete --- .../elements/part_livesearch_controller.js | 77 +++++++++++++++++++ package.json | 3 + templates/homepage.html.twig | 6 ++ yarn.lock | 63 +++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 assets/controllers/elements/part_livesearch_controller.js diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js new file mode 100644 index 00000000..32edecb6 --- /dev/null +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -0,0 +1,77 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { Controller } from "@hotwired/stimulus"; +import { autocomplete } from '@algolia/autocomplete-js'; +import "@algolia/autocomplete-theme-classic/dist/theme.css"; +import {marked} from "marked"; + +export default class extends Controller { + + _autocomplete; + + connect() { + // The endpoint for searching parts + const base_url = this.element.dataset.autocomplete; + // The URL template for the part detail pages + const part_detail_uri_template = this.element.dataset.detailUrl; + + this._autocomplete = autocomplete({ + container: this.element, + placeholder: "Search for parts", + getSources({ query }) { + return [ + { + sourceId: 'parts', + getItems() { + const url = base_url.replace('__QUERY__', encodeURIComponent(query)); + + return fetch(url) + .then((response) => response.json()); + }, + templates: { + item({item, components, html}) { + const details_url = part_detail_uri_template.replace('__ID__', item.id); + + + return html` + +
+
+ ${item.name} +
+
+
+ ${components.Highlight({hit: item, attribute: 'name'})} +
+
+ ${components.Snippet({hit: item, attribute: 'description'})} +
+
+
+
+ `; + }, + }, + }, + ]; + }, + }); + } +} \ No newline at end of file diff --git a/package.json b/package.json index 8a9d78fe..bd0e7701 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,9 @@ "build": "encore production --progress" }, "dependencies": { + "@algolia/autocomplete-js": "^1.17.0", + "@algolia/autocomplete-plugin-redirect-url": "^1.17.0", + "@algolia/autocomplete-theme-classic": "^1.17.0", "@ckeditor/ckeditor5-alignment": "^41.0.0", "@ckeditor/ckeditor5-autoformat": "^41.0.0", "@ckeditor/ckeditor5-basic-styles": "^41.0.0", diff --git a/templates/homepage.html.twig b/templates/homepage.html.twig index 138257c7..f711b227 100644 --- a/templates/homepage.html.twig +++ b/templates/homepage.html.twig @@ -4,6 +4,12 @@ {% block content %} + +
+
+ + {% if is_granted('@system.show_updates') %} {{ nv.new_version_alert(new_version_available, new_version, new_version_url) }} {% endif %} diff --git a/yarn.lock b/yarn.lock index 3edd73be..bf65595e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,59 @@ # yarn lockfile v1 +"@algolia/autocomplete-core@1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.0.tgz#b9e62d9677dc0ee818bb59d917ff58908356a9a0" + integrity sha512-6E4sVb5+fGtSQs9mULlxUH84OWFUVZPMapa5dMCtUc7KyDRLY6+X/dA8xbDA8CX5phdBn1plLUET1B6NZnrZuw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.17.0" + "@algolia/autocomplete-shared" "1.17.0" + +"@algolia/autocomplete-js@1.17.0", "@algolia/autocomplete-js@^1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.17.0.tgz#91f0ef2232646316a26c79dadbeb2e7791de623c" + integrity sha512-RbD98hXtZOl6VohSAo7kMOFWQHR1x4wWaJFadJradFQ1TAA9hFEyirSIM+yT96UpKkdi08V2EBI+YwZ3/VETvw== + dependencies: + "@algolia/autocomplete-core" "1.17.0" + "@algolia/autocomplete-preset-algolia" "1.17.0" + "@algolia/autocomplete-shared" "1.17.0" + htm "^3.1.1" + preact "^10.13.2" + +"@algolia/autocomplete-plugin-algolia-insights@1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.0.tgz#dcec9b03a47375860a9f927816a1275d885ebdff" + integrity sha512-zbWImu+VxBDzUQONEhQXq3OzlipHLEtWbL4Nf/VOb1p1qHG/f96jCegOzzEZVPiQvZpRJnmhCUmsYNHlIBxKWw== + dependencies: + "@algolia/autocomplete-shared" "1.17.0" + +"@algolia/autocomplete-plugin-redirect-url@^1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-redirect-url/-/autocomplete-plugin-redirect-url-1.17.0.tgz#843a7af551a29e6c5d2a6585c17b7dcff50bee12" + integrity sha512-C/xvPKKM0+uHRvKDi7sE/P8qEtlo9lhDEB2YQJRY9X90osqlqwY4HqRZbauz4wGnHckrG0iqIN+xcCNEFN3Jxg== + dependencies: + "@algolia/autocomplete-core" "1.17.0" + "@algolia/autocomplete-js" "1.17.0" + "@algolia/autocomplete-preset-algolia" "1.17.0" + "@algolia/autocomplete-shared" "1.17.0" + +"@algolia/autocomplete-preset-algolia@1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.0.tgz#9d7d9673a922d75dfbedd3119e7ffa76f4c118c6" + integrity sha512-DhTkMs/9BzThhTU2nSTpQxVxHLzaRDZLid4Tf56D8s9IhEGfmzbNuLRmJNzgAOPv1smHtUErndmC+S9QNMDEJA== + dependencies: + "@algolia/autocomplete-shared" "1.17.0" + +"@algolia/autocomplete-shared@1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.0.tgz#7d0a8e504fe555c48df7ae6854d3d6633b0b32f5" + integrity sha512-7su4KH/2q2Fhud2VujUNhCMbIh7yp6wqWR3UuVje5P3kDRhTotPRmg3iRQi48YRYkk9o+airsrLl+rxJ/9FWng== + +"@algolia/autocomplete-theme-classic@^1.17.0": + version "1.17.0" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.17.0.tgz#bbd79df8f5240b3ddd3f9cdc9b8273753f15cd25" + integrity sha512-FsW/J/mG1YIPv93/QQ7KxMVNXAiVi9accGgoK2y3zDz58WpVgUug97SUoQzP4I9EMZAZAHQo0QbWXxpqTWkcOA== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -4268,6 +4321,11 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +htm@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/htm/-/htm-3.1.1.tgz#49266582be0dc66ed2235d5ea892307cc0c24b78" + integrity sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ== + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -5997,6 +6055,11 @@ postcss@^8.2.14, postcss@^8.2.15, postcss@^8.4.12, postcss@^8.4.24, postcss@^8.4 picocolors "^1.0.0" source-map-js "^1.0.2" +preact@^10.13.2: + version "10.19.6" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.6.tgz#66007b67aad4d11899f583df1b0116d94a89b8f5" + integrity sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" From 18eb0467eea4c2b65c1fdf947955394efe9480c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 00:28:17 +0100 Subject: [PATCH 095/634] Integrated algolia autocomplete search into navbar --- .../elements/part_livesearch_controller.js | 17 +++++++++++++++++ templates/_navbar_search.html.twig | 6 ++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 32edecb6..a1ad936b 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -24,6 +24,8 @@ import {marked} from "marked"; export default class extends Controller { + static targets = ["input"]; + _autocomplete; connect() { @@ -32,9 +34,24 @@ export default class extends Controller { // The URL template for the part detail pages const part_detail_uri_template = this.element.dataset.detailUrl; + const that = this; + this._autocomplete = autocomplete({ container: this.element, + panelContainer: document.body, + panelPlacement: 'end', placeholder: "Search for parts", + onSubmit({state, event, ...setters}) { + //Put the current text into each target input field + const input = that.inputTarget; + + if (!input) { + return; + } + + input.value = state.query; + input.form.requestSubmit(); + }, getSources({ query }) { return [ { diff --git a/templates/_navbar_search.html.twig b/templates/_navbar_search.html.twig index f13e5c96..d4452533 100644 --- a/templates/_navbar_search.html.twig +++ b/templates/_navbar_search.html.twig @@ -69,6 +69,8 @@ - - +
+ +
\ No newline at end of file From 4398b8698c6bea527169eac1bab788d7d53159d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 00:33:48 +0100 Subject: [PATCH 096/634] Set proper darkmode attribute for algolia autocomplete --- assets/controllers/common/darkmode_controller.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/controllers/common/darkmode_controller.js b/assets/controllers/common/darkmode_controller.js index 71111166..c5c15ab8 100644 --- a/assets/controllers/common/darkmode_controller.js +++ b/assets/controllers/common/darkmode_controller.js @@ -91,6 +91,9 @@ export default class extends Controller { _enableDarkmode() { //Add data-bs-theme="dark" to the html tag document.documentElement.setAttribute('data-bs-theme', 'dark'); + + //Add data-theme="dark" to the body tag for algolia autocomplete + document.body.setAttribute('data-theme', 'dark'); } /** @@ -100,6 +103,9 @@ export default class extends Controller { _disableDarkmode() { //Set data-bs-theme to light document.documentElement.setAttribute('data-bs-theme', 'light'); + + //Add data-theme="dark" to the body tag for algolia autocomplete + document.body.setAttribute('data-theme', 'light'); } From a3dcd1a0a80804e9f448058ace486731aa0d685d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 00:39:38 +0100 Subject: [PATCH 097/634] Added recent searches to search --- assets/controllers/elements/part_livesearch_controller.js | 8 ++++++++ package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index a1ad936b..338cb775 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -20,6 +20,7 @@ import { Controller } from "@hotwired/stimulus"; import { autocomplete } from '@algolia/autocomplete-js'; import "@algolia/autocomplete-theme-classic/dist/theme.css"; +import { createLocalStorageRecentSearchesPlugin } from '@algolia/autocomplete-plugin-recent-searches'; import {marked} from "marked"; export default class extends Controller { @@ -36,10 +37,17 @@ export default class extends Controller { const that = this; + const recentSearchesPlugin = createLocalStorageRecentSearchesPlugin({ + key: 'RECENT_SEARCH', + limit: 5, + }); + this._autocomplete = autocomplete({ container: this.element, panelContainer: document.body, panelPlacement: 'end', + plugins: [recentSearchesPlugin], + openOnFocus: true, placeholder: "Search for parts", onSubmit({state, event, ...setters}) { //Put the current text into each target input field diff --git a/package.json b/package.json index bd0e7701..bafa31e2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@algolia/autocomplete-js": "^1.17.0", - "@algolia/autocomplete-plugin-redirect-url": "^1.17.0", + "@algolia/autocomplete-plugin-recent-searches": "^1.17.0", "@algolia/autocomplete-theme-classic": "^1.17.0", "@ckeditor/ckeditor5-alignment": "^41.0.0", "@ckeditor/ckeditor5-autoformat": "^41.0.0", diff --git a/yarn.lock b/yarn.lock index bf65595e..ab8b5e62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,10 +28,10 @@ dependencies: "@algolia/autocomplete-shared" "1.17.0" -"@algolia/autocomplete-plugin-redirect-url@^1.17.0": +"@algolia/autocomplete-plugin-recent-searches@^1.17.0": version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-redirect-url/-/autocomplete-plugin-redirect-url-1.17.0.tgz#843a7af551a29e6c5d2a6585c17b7dcff50bee12" - integrity sha512-C/xvPKKM0+uHRvKDi7sE/P8qEtlo9lhDEB2YQJRY9X90osqlqwY4HqRZbauz4wGnHckrG0iqIN+xcCNEFN3Jxg== + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-recent-searches/-/autocomplete-plugin-recent-searches-1.17.0.tgz#ed340649481398feee12a9e7f1bfd66f90e1fbab" + integrity sha512-di5ZEFx0UgK7sR5pxon9NKiFrLL26J5xwL7ihhK4rHrSdRhSvRATr9d8uaShAZIveEUTMd/cZd6C+95Y1YrcdQ== dependencies: "@algolia/autocomplete-core" "1.17.0" "@algolia/autocomplete-js" "1.17.0" From c87f809d12f3c10c1e3dce81a1a8b96fd25d6c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 23:02:05 +0100 Subject: [PATCH 098/634] Added header to part livesearch dropdown part results --- assets/controllers/elements/part_livesearch_controller.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 338cb775..2a78d860 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -71,6 +71,10 @@ export default class extends Controller { .then((response) => response.json()); }, templates: { + header({ html }) { + return html`Parts +
`; + }, item({item, components, html}) { const details_url = part_detail_uri_template.replace('__ID__', item.id); From e16aa31ddf3ecf1c1a608716452f7041a84c8e88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 23:05:24 +0100 Subject: [PATCH 099/634] Fixed z-index of autocomplete dropdown --- .../elements/part_livesearch_controller.js | 1 + .../css/components/autocomplete_bootstrap.css | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 assets/css/components/autocomplete_bootstrap.css diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 2a78d860..693de5bd 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -20,6 +20,7 @@ import { Controller } from "@hotwired/stimulus"; import { autocomplete } from '@algolia/autocomplete-js'; import "@algolia/autocomplete-theme-classic/dist/theme.css"; +import "../../css/components/autocomplete_bootstrap.css"; import { createLocalStorageRecentSearchesPlugin } from '@algolia/autocomplete-plugin-recent-searches'; import {marked} from "marked"; diff --git a/assets/css/components/autocomplete_bootstrap.css b/assets/css/components/autocomplete_bootstrap.css new file mode 100644 index 00000000..fd06853e --- /dev/null +++ b/assets/css/components/autocomplete_bootstrap.css @@ -0,0 +1,27 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/*** + * Override some styles from the algolia autocomplete library to harmonize more with the bootstrap theme + */ + +/** Ensure that the autocomplete dropdown is always on top */ +.aa-Panel { + z-index: 1000; +} From c662dcfcd91013cc55347117727e352f638963c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Tue, 27 Feb 2024 23:39:49 +0100 Subject: [PATCH 100/634] Started to make the autocomplete theme more bootstrap like --- .../controllers/common/darkmode_controller.js | 6 -- .../css/components/autocomplete_bootstrap.css | 79 +++++++++++++++++++ 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/assets/controllers/common/darkmode_controller.js b/assets/controllers/common/darkmode_controller.js index c5c15ab8..71111166 100644 --- a/assets/controllers/common/darkmode_controller.js +++ b/assets/controllers/common/darkmode_controller.js @@ -91,9 +91,6 @@ export default class extends Controller { _enableDarkmode() { //Add data-bs-theme="dark" to the html tag document.documentElement.setAttribute('data-bs-theme', 'dark'); - - //Add data-theme="dark" to the body tag for algolia autocomplete - document.body.setAttribute('data-theme', 'dark'); } /** @@ -103,9 +100,6 @@ export default class extends Controller { _disableDarkmode() { //Set data-bs-theme to light document.documentElement.setAttribute('data-bs-theme', 'light'); - - //Add data-theme="dark" to the body tag for algolia autocomplete - document.body.setAttribute('data-theme', 'light'); } diff --git a/assets/css/components/autocomplete_bootstrap.css b/assets/css/components/autocomplete_bootstrap.css index fd06853e..83a9f79a 100644 --- a/assets/css/components/autocomplete_bootstrap.css +++ b/assets/css/components/autocomplete_bootstrap.css @@ -25,3 +25,82 @@ .aa-Panel { z-index: 1000; } + +/** Use a form definition similar to bootstraps form-control */ +.aa-Form { + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + color: var(--bs-body-color); + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; + +} + +.aa-Form:focus-within { + background-color: var(--bs-body-bg); + border-color: #86b7fe; + box-shadow: 0 0 0 0.25rem rgba(13,110,253,.25); + color: var(--bs-body-color); + outline: 0; +} + +/** Use a panel definition similar to bootstraps dropdown */ +.aa-Panel { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: var(--bs-box-shadow); + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} + +:root { + /** Font colors */ + --aa-text-color-rgb: var(--bs-body-color-rgb); + --aa-primary-color-rgb: var(--bs-primary-text-emphasis); + --aa-muted-color-rgb: var(--bs-secondary-text-emphasis); + + /** Border colors */ + --aa-panel-border-color-rgb: var(--bs-dropdown-border-color); + --aa-input-border-color-rgb: var(--bs-border-color); + --aa-input-border-color-alpha: 1.0; + + /* Background colors */ + --aa-background-color-rgb: var(--bs-dropdown-bg); + --aa-input-background-color-rgb: var(--bs-body-color); + --aa-selected-color-rgb: var(--bs-dropdown-link-hover-bg); + --aa-description-highlight-background-color-rgb: var(--bs-secondary-bg); + + /** Shadow colors */ + --aa-panel-shadow: var(--bs-dropdown-box-shadow) + +} \ No newline at end of file From 293afc3998028066eeb9ce8617edfb1983668c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 13:00:59 +0100 Subject: [PATCH 101/634] New Crowdin updates (#532) * New translations messages.en.xlf (Chinese Simplified) * New translations messages.en.xlf (Chinese Simplified) --- translations/messages.zh.xlf | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index c6cbcb9d..43498457 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -9323,7 +9323,7 @@ Element 3 part.filter.lotNeedsRefill - 需要补充 + 任何需要补充的批次 @@ -9785,7 +9785,7 @@ Element 3 project.bom.quantity - BOM 数量 + 数量 @@ -9893,19 +9893,19 @@ Element 3 part.new_build_part.error.build_part_already_exists - 该项目已映射到部件。 + 已映射到部件 project.edit.associated_build_part - 该项目已映射到部件。 + 映射到部件 project.edit.associated_build_part.add - 该项目已映射到部件。 + 创建生产成果部件 @@ -10163,13 +10163,13 @@ Element 3 project.builds.stocked - 库存充足 + 在库 project.builds.needed - 需要补充 + 所需 @@ -10193,7 +10193,7 @@ Element 3 project.builds.following_bom_entries_miss_instock_n - 您没有足够的库存部件生产该项目 %number_of_builds% 次。 以下部件需要补充: + 没有足够的部件生产该项目 %number_of_builds% 次。 以下部件需要补充: @@ -10433,7 +10433,7 @@ Element 3 log.element_edited.changed_fields.quantity - BOM 数量 + 数量 From 41e45599d494883e64505453c76d7a40dfe301c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 21:38:11 +0100 Subject: [PATCH 102/634] Use a modified theme for algolia/autocomplete, which plays better with bootstrap --- .../elements/part_livesearch_controller.js | 4 +- .../autocomplete_bootstrap_theme.css | 1119 +++++++++++++++++ 2 files changed, 1121 insertions(+), 2 deletions(-) create mode 100644 assets/css/components/autocomplete_bootstrap_theme.css diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 693de5bd..b25b3544 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -19,8 +19,8 @@ import { Controller } from "@hotwired/stimulus"; import { autocomplete } from '@algolia/autocomplete-js'; -import "@algolia/autocomplete-theme-classic/dist/theme.css"; -import "../../css/components/autocomplete_bootstrap.css"; +//import "@algolia/autocomplete-theme-classic/dist/theme.css"; +import "../../css/components/autocomplete_bootstrap_theme.css"; import { createLocalStorageRecentSearchesPlugin } from '@algolia/autocomplete-plugin-recent-searches'; import {marked} from "marked"; diff --git a/assets/css/components/autocomplete_bootstrap_theme.css b/assets/css/components/autocomplete_bootstrap_theme.css new file mode 100644 index 00000000..74d22c59 --- /dev/null +++ b/assets/css/components/autocomplete_bootstrap_theme.css @@ -0,0 +1,1119 @@ +/* + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/*** + * This file is based on the autocomplete-theme-classic from Algolia and modifies it to fit better into the bootstrap 5 + * theme of Part-DB. + */ + +/*! @algolia/autocomplete-theme-classic 1.17.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +/* ----------------*/ +/* 1. CSS Variables*/ +/* 2. Dark Mode*/ +/* 3. Autocomplete*/ +/* 4. Panel*/ +/* 5. Sources*/ +/* 6. Hit Layout*/ +/* 7. Panel Header*/ +/* 8. Panel Footer*/ +/* 9. Detached Mode*/ +/* 10. Gradients*/ +/* 11. Utilities*/ +/* ----------------*/ +/* Note:*/ +/* This theme reflects the markup structure of autocomplete with SCSS indentation.*/ +/* We use the SASS `@at-root` function to keep specificity low.*/ +/* ----------------*/ +/* 1. CSS Variables*/ +/* ----------------*/ +:root { + /* Input*/ + --aa-search-input-height: 44px; + --aa-input-icon-size: 20px; + /* Size and spacing*/ + --aa-base-unit: 16; + --aa-spacing-factor: 1; + --aa-spacing: calc(var(--aa-base-unit) * var(--aa-spacing-factor) * 1px); + --aa-spacing-half: calc(var(--aa-spacing) / 2); + --aa-panel-max-height: 650px; + /* Z-index*/ + --aa-base-z-index: 9999; + /* Font*/ + --aa-font-size: calc(var(--aa-base-unit) * 1px); + --aa-font-family: inherit; + --aa-font-weight-medium: 500; + --aa-font-weight-semibold: 600; + --aa-font-weight-bold: 700; + /* Icons*/ + --aa-icon-size: 20px; + --aa-icon-stroke-width: 1.6; + --aa-icon-color-rgb: 119, 119, 163; + --aa-icon-color-alpha: 1; + --aa-action-icon-size: 20px; + /* Text colors*/ + --aa-text-color-rgb: 38, 38, 39; + --aa-text-color-alpha: 1; + --aa-primary-color-rgb: 62, 52, 211; + --aa-primary-color-alpha: 0.2; + --aa-muted-color-rgb: 128, 126, 163; + --aa-muted-color-alpha: 0.6; + /* Border colors*/ + --aa-panel-border-color-rgb: 128, 126, 163; + --aa-panel-border-color-alpha: 0.3; + --aa-input-border-color-rgb: 128, 126, 163; + --aa-input-border-color-alpha: 0.8; + /* Background colors*/ + --aa-background-color-rgb: 255, 255, 255; + --aa-background-color-alpha: 1; + --aa-input-background-color-rgb: 255, 255, 255; + --aa-input-background-color-alpha: 1; + --aa-selected-color-rgb: 179, 173, 214; + --aa-selected-color-alpha: 0.205; + --aa-description-highlight-background-color-rgb: 245, 223, 77; + --aa-description-highlight-background-color-alpha: 0.5; + /* Detached mode*/ + --aa-detached-media-query: (max-width: 680px); + --aa-detached-modal-media-query: (min-width: 680px); + --aa-detached-modal-max-width: 680px; + --aa-detached-modal-max-height: 500px; + --aa-overlay-color-rgb: 115, 114, 129; + --aa-overlay-color-alpha: 0.4; + /* Shadows*/ + --aa-panel-shadow: 0 0 0 1px rgba(35, 38, 59, .1), + 0 6px 16px -4px rgba(35, 38, 59, .15); + /* Scrollbar*/ + --aa-scrollbar-width: 13px; + --aa-scrollbar-track-background-color-rgb: 234, 234, 234; + --aa-scrollbar-track-background-color-alpha: 1; + --aa-scrollbar-thumb-background-color-rgb: var(--aa-background-color-rgb); + --aa-scrollbar-thumb-background-color-alpha: 1; + /* Touch screens*/ +} +@media (hover: none) and (pointer: coarse) { + :root { + --aa-spacing-factor: 1.2; + --aa-action-icon-size: 22px; + } +} + +/* ----------------*/ +/* 2. Dark Mode*/ +/* ----------------*/ +body { + /* stylelint-disable selector-no-qualifying-type, selector-class-pattern */ + /* stylelint-enable selector-no-qualifying-type, selector-class-pattern */ +} + +/* Reset for `@extend`*/ +.aa-Panel *, .aa-Autocomplete *, +.aa-DetachedFormContainer * { + box-sizing: border-box; +} + +/* Init for `@extend`*/ +.aa-Panel, .aa-Autocomplete, +.aa-DetachedFormContainer { + color: rgba(var(--aa-text-color-rgb), var(--aa-text-color-alpha)); + color: var(--bs-body-color); + font-family: inherit; + font-weight: normal; + line-height: 1em; + margin: 0; + padding: 0; + text-align: left; +} + +/* ----------------*/ +/* 3. Autocomplete*/ +/* ----------------*/ +.aa-Autocomplete, +.aa-DetachedFormContainer { + /* Search box*/ +} +.aa-Form { + align-items: center; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + color: var(--bs-body-color); + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; + display: flex; + line-height: 1em; + margin: 0; + position: relative; + width: 100%; +} +.aa-Form:focus-within { + background-color: var(--bs-body-bg); + border-color: #86b7fe; + box-shadow: 0 0 0 0.25rem rgba(13,110,253,.25); + color: var(--bs-body-color); + outline: 0; +} +.aa-InputWrapperPrefix { + align-items: center; + display: flex; + flex-shrink: 0; + height: 44px; + height: var(--aa-search-input-height); + order: 1; + /* Container for search and loading icons*/ +} +.aa-Label, +.aa-LoadingIndicator { + cursor: auto; + cursor: initial; + flex-shrink: 0; + height: 100%; + padding: 0; + text-align: left; +} +.aa-Label svg, +.aa-LoadingIndicator svg { + color: var(--bs-primary-text-emphasis); + height: auto; + max-height: 20px; + max-height: var(--aa-input-icon-size); + stroke-width: 1.6; + stroke-width: var(--aa-icon-stroke-width); + width: 20px; + width: var(--aa-input-icon-size); +} + +.aa-SubmitButton, +.aa-LoadingIndicator { + height: 100%; + padding-left: calc((16 * 1 * 1px) * 0.75 - 1px); + padding-left: calc(calc(16 * 1 * 1px) * 0.75 - 1px); + padding-left: calc(var(--aa-spacing) * 0.75 - 1px); + padding-right: calc((16 * 1 * 1px) / 2); + padding-right: calc(calc(16 * 1 * 1px) / 2); + padding-right: var(--aa-spacing-half); + width: calc((16 * 1 * 1px) * 1.75 + 20px - 1px); + width: calc(calc(16 * 1 * 1px) * 1.75 + 20px - 1px); + width: calc(var(--aa-spacing) * 1.75 + var(--aa-icon-size) - 1px); +} +@media (hover: none) and (pointer: coarse) { + .aa-SubmitButton, + .aa-LoadingIndicator { + padding-left: calc(((16 * 1 * 1px) / 2) / 2 - 1px); + padding-left: calc(calc(calc(16 * 1 * 1px) / 2) / 2 - 1px); + padding-left: calc(var(--aa-spacing-half) / 2 - 1px); + width: calc(20px + (16 * 1 * 1px) * 1.25 - 1px); + width: calc(20px + calc(16 * 1 * 1px) * 1.25 - 1px); + width: calc(var(--aa-icon-size) + var(--aa-spacing) * 1.25 - 1px); + } +} + +.aa-SubmitButton { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + border: 0; + margin: 0; +} + +.aa-LoadingIndicator { + align-items: center; + display: flex; + justify-content: center; +} +.aa-LoadingIndicator[hidden] { + display: none; +} + +.aa-InputWrapper { + order: 3; + position: relative; + width: 100%; + /* Search box input (with placeholder and query)*/ +} +.aa-Input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + border: 0; + color: var(--bs-body-color); + font: inherit; + height: 44px; + height: var(--aa-search-input-height); + padding: 0; + width: 100%; + /* Focus is set and styled on the parent, it isn't necessary here*/ + /* Remove native appearance*/ +} +.aa-Input::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.aa-Input::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.aa-Input:focus { + box-shadow: none; + outline: none; +} +.aa-Input::-webkit-search-decoration, .aa-Input::-webkit-search-cancel-button, .aa-Input::-webkit-search-results-button, .aa-Input::-webkit-search-results-decoration { + -webkit-appearance: none; + appearance: none; +} + +.aa-InputWrapperSuffix { + align-items: center; + display: flex; + height: 44px; + height: var(--aa-search-input-height); + order: 4; + /* Accelerator to clear the query*/ +} +.aa-ClearButton { + align-items: center; + background: none; + border: 0; + color: var(--bs-secondary-color); + cursor: pointer; + display: flex; + height: 100%; + margin: 0; + padding: 0 calc((16 * 1 * 1px) * 0.8333333333 - 0.5px); + padding: 0 calc(calc(16 * 1 * 1px) * 0.8333333333 - 0.5px); + padding: 0 calc(var(--aa-spacing) * 0.8333333333 - 0.5px); +} +@media (hover: none) and (pointer: coarse) { + .aa-ClearButton { + padding: 0 calc((16 * 1 * 1px) * 0.6666666667 - 0.5px); + padding: 0 calc(calc(16 * 1 * 1px) * 0.6666666667 - 0.5px); + padding: 0 calc(var(--aa-spacing) * 0.6666666667 - 0.5px); + } +} +.aa-ClearButton:hover, .aa-ClearButton:focus { + color: var(--bs-body-color); +} +.aa-ClearButton[hidden] { + display: none; +} +.aa-ClearButton svg { + stroke-width: 1.6; + stroke-width: var(--aa-icon-stroke-width); + width: 20px; + width: var(--aa-icon-size); +} + +/* ----------------*/ +/* 4. Panel*/ +/* ----------------*/ +.aa-Panel { + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + + z-index: 1000; + + box-shadow: 0 0 0 1px rgba(35, 38, 59, 0.1); + overflow: hidden; + position: absolute; + transition: opacity 200ms ease-in, filter 200ms ease-in; + /* When a request isn't resolved yet*/ + + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +@media screen and (prefers-reduced-motion) { + .aa-Panel { + transition: none; + } +} +.aa-Panel button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background: none; + border: 0; + margin: 0; + padding: 0; +} +.aa-PanelLayout { + height: 100%; + margin: 0; + max-height: 650px; + max-height: var(--aa-panel-max-height); + overflow-y: auto; + padding: 0; + position: relative; + text-align: left; +} +.aa-PanelLayoutColumns--twoGolden { + display: grid; + grid-template-columns: 39.2% auto; + overflow: hidden; + padding: 0; +} + +.aa-PanelLayoutColumns--two { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + overflow: hidden; + padding: 0; +} + +.aa-PanelLayoutColumns--three { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + overflow: hidden; + padding: 0; +} + +.aa-Panel--stalled .aa-Source { + filter: grayscale(1); + opacity: 0.8; +} + +.aa-Panel--scrollable { + margin: 0; + max-height: 650px; + max-height: var(--aa-panel-max-height); + overflow-x: hidden; + overflow-y: auto; + padding: calc((16 * 1 * 1px) / 2); + padding: calc(calc(16 * 1 * 1px) / 2); + padding: var(--aa-spacing-half); + scrollbar-color: rgba(255, 255, 255, 1) rgba(234, 234, 234, 1); + scrollbar-color: rgba(var(--aa-scrollbar-thumb-background-color-rgb), var(--aa-scrollbar-thumb-background-color-alpha)) rgba(var(--aa-scrollbar-track-background-color-rgb), var(--aa-scrollbar-track-background-color-alpha)); + scrollbar-width: thin; +} +.aa-Panel--scrollable::-webkit-scrollbar { + width: 13px; + width: var(--aa-scrollbar-width); +} +.aa-Panel--scrollable::-webkit-scrollbar-track { + background-color: rgba(234, 234, 234, 1); + background-color: rgba(var(--aa-scrollbar-track-background-color-rgb), var(--aa-scrollbar-track-background-color-alpha)); +} +.aa-Panel--scrollable::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 1); + background-color: rgba(var(--aa-scrollbar-thumb-background-color-rgb), var(--aa-scrollbar-thumb-background-color-alpha)); + border-color: rgba(234, 234, 234, 1); + border-color: rgba(var(--aa-scrollbar-track-background-color-rgb), var(--aa-scrollbar-track-background-color-alpha)); + border-radius: 9999px; + border-style: solid; + border-width: 3px 2px 3px 3px; +} + +/* ----------------*/ +/* 5. Sources*/ +/* Each source can be styled independently*/ +/* ----------------*/ +.aa-Source { + margin: 0; + padding: 0; + position: relative; + width: 100%; + /* List of results inside the source*/ + /* Source title*/ + /* See all button*/ +} +.aa-Source:empty { + /* Hide empty section*/ + display: none; +} +.aa-SourceNoResults { + font-size: 1em; + margin: 0; + padding: calc(16 * 1 * 1px); + padding: var(--aa-spacing); +} + +.aa-List { + list-style: none; + margin: 0; + padding: 0; + position: relative; +} + +.aa-SourceHeader { + margin: calc((16 * 1 * 1px) / 2) 0.5em calc((16 * 1 * 1px) / 2) 0; + margin: calc(calc(16 * 1 * 1px) / 2) 0.5em calc(calc(16 * 1 * 1px) / 2) 0; + margin: var(--aa-spacing-half) 0.5em var(--aa-spacing-half) 0; + padding: 0; + position: relative; + /* Hide empty header*/ + /* Title typography*/ + /* Line separator*/ +} +.aa-SourceHeader:empty { + display: none; +} +.aa-SourceHeaderTitle { + background: var(--bs-body-bg); + color: var(--bs-primary-text-emphasis); + display: inline-block; + font-size: 0.8em; + font-weight: 600; + font-weight: var(--aa-font-weight-semibold); + margin: 0; + padding: 0 calc((16 * 1 * 1px) / 2) 0 0; + padding: 0 calc(calc(16 * 1 * 1px) / 2) 0 0; + padding: 0 var(--aa-spacing-half) 0 0; + position: relative; + z-index: 9999; + z-index: var(--aa-base-z-index); +} + +.aa-SourceHeaderLine { + border-bottom: solid 1px var(--bs-primary-text-emphasis); + display: block; + height: 2px; + left: 0; + margin: 0; + opacity: 0.3; + padding: 0; + position: absolute; + right: 0; + top: calc((16 * 1 * 1px) / 2); + top: calc(calc(16 * 1 * 1px) / 2); + top: var(--aa-spacing-half); + z-index: calc(9999 - 1); + z-index: calc(var(--aa-base-z-index) - 1); +} + +.aa-SourceFooterSeeAll { + background: linear-gradient(180deg, var(--bs-body-bg), rgba(128, 126, 163, 0.14)); + border: 1px solid var(--bs-secondary-color); + border-radius: 5px; + box-shadow: inset 0 0 2px #fff, 0 2px 2px -1px rgba(76, 69, 88, 0.15); + color: inherit; + font-size: 0.95em; + font-weight: 500; + padding: 0.475em 1em 0.6em; + -webkit-text-decoration: none; + text-decoration: none; +} +.aa-SourceFooterSeeAll:focus, .aa-SourceFooterSeeAll:hover { + border: 1px solid rgba(62, 52, 211, 1); + border: 1px solid rgba(var(--aa-primary-color-rgb), 1); + color: rgba(62, 52, 211, 1); + color: rgba(var(--aa-primary-color-rgb), 1); +} + +/* ----------------*/ +/* 6. Hit Layout*/ +/* ----------------*/ +.aa-Item { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: grid; + min-height: calc((16 * 1 * 1px) * 2.5); + min-height: calc(calc(16 * 1 * 1px) * 2.5); + min-height: calc(var(--aa-spacing) * 2.5); + padding: calc(((16 * 1 * 1px) / 2) / 2); + padding: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + padding: calc(var(--aa-spacing-half) / 2); + /* When the result is active*/ + /* The result type icon inlined SVG or image*/ + /* wrap hit with url but we don't need to see it*/ + /* Secondary click actions*/ +} +.aa-Item[aria-selected=true] { + background-color: var(--bs-tertiary-bg); +} +.aa-Item[aria-selected=true] .aa-ItemActionButton, +.aa-Item[aria-selected=true] .aa-ActiveOnly { + visibility: visible; +} +.aa-ItemIcon { + align-items: center; + background: var(--bs-body-bg); + border-radius: 3px; + box-shadow: inset 0 0 0 1px rgba(128, 126, 163, 0.3); + box-shadow: inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb), var(--aa-panel-border-color-alpha)); + color: rgba(119, 119, 163, 1); + color: rgba(var(--aa-icon-color-rgb), var(--aa-icon-color-alpha)); + display: flex; + flex-shrink: 0; + font-size: 0.7em; + height: calc(20px + ((16 * 1 * 1px) / 2)); + height: calc(20px + calc(calc(16 * 1 * 1px) / 2)); + height: calc(var(--aa-icon-size) + var(--aa-spacing-half)); + justify-content: center; + overflow: hidden; + stroke-width: 1.6; + stroke-width: var(--aa-icon-stroke-width); + text-align: center; + width: calc(20px + ((16 * 1 * 1px) / 2)); + width: calc(20px + calc(calc(16 * 1 * 1px) / 2)); + width: calc(var(--aa-icon-size) + var(--aa-spacing-half)); +} +.aa-ItemIcon img { + height: auto; + max-height: calc(20px + ((16 * 1 * 1px) / 2) - 8px); + max-height: calc(20px + calc(calc(16 * 1 * 1px) / 2) - 8px); + max-height: calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px); + max-width: calc(20px + ((16 * 1 * 1px) / 2) - 8px); + max-width: calc(20px + calc(calc(16 * 1 * 1px) / 2) - 8px); + max-width: calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px); + width: auto; +} +.aa-ItemIcon svg { + height: 20px; + height: var(--aa-icon-size); + width: 20px; + width: var(--aa-icon-size); +} +.aa-ItemIcon--alignTop { + align-self: flex-start; +} + +.aa-ItemIcon--noBorder { + background: none; + box-shadow: none; +} + +.aa-ItemIcon--picture { + height: 96px; + width: 96px; +} +.aa-ItemIcon--picture img { + max-height: 100%; + max-width: 100%; + padding: calc((16 * 1 * 1px) / 2); + padding: calc(calc(16 * 1 * 1px) / 2); + padding: var(--aa-spacing-half); +} + +.aa-ItemContent { + align-items: center; + cursor: pointer; + display: grid; + gap: calc((16 * 1 * 1px) / 2); + gap: calc(calc(16 * 1 * 1px) / 2); + grid-gap: calc((16 * 1 * 1px) / 2); + grid-gap: calc(calc(16 * 1 * 1px) / 2); + grid-gap: var(--aa-spacing-half); + gap: var(--aa-spacing-half); + grid-auto-flow: column; + line-height: 1.25em; + overflow: hidden; +} +.aa-ItemContent:empty { + display: none; +} +.aa-ItemContent mark { + background: none; + color: var(--bs-body-color); + font-style: normal; + font-weight: 700; + font-weight: var(--aa-font-weight-bold); +} +.aa-ItemContent--dual { + display: flex; + flex-direction: column; + justify-content: space-between; + text-align: left; +} +.aa-ItemContent--dual .aa-ItemContentTitle, +.aa-ItemContent--dual .aa-ItemContentSubtitle { + display: block; +} + +.aa-ItemContent--indented { + padding-left: calc(20px + (16 * 1 * 1px)); + padding-left: calc(20px + calc(16 * 1 * 1px)); + padding-left: calc(var(--aa-icon-size) + var(--aa-spacing)); +} + +.aa-ItemContentBody { + display: grid; + gap: calc(((16 * 1 * 1px) / 2) / 2); + gap: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + grid-gap: calc(((16 * 1 * 1px) / 2) / 2); + grid-gap: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + grid-gap: calc(var(--aa-spacing-half) / 2); + gap: calc(var(--aa-spacing-half) / 2); +} + +.aa-ItemContentTitle { + display: inline-block; + margin: 0 0.5em 0 0; + max-width: 100%; + overflow: hidden; + padding: 0; + text-overflow: ellipsis; + white-space: nowrap; +} + +.aa-ItemContentSubtitle { + font-size: 0.92em; +} +.aa-ItemContentSubtitleIcon::before { + border-color: var(--bs-tertiary-color); + border-style: solid; + content: ""; + display: inline-block; + left: 1px; + position: relative; + top: -3px; +} + +.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon::before { + border-width: 0 0 1.5px; + margin-left: calc((16 * 1 * 1px) / 2); + margin-left: calc(calc(16 * 1 * 1px) / 2); + margin-left: var(--aa-spacing-half); + margin-right: calc(((16 * 1 * 1px) / 2) / 2); + margin-right: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + margin-right: calc(var(--aa-spacing-half) / 2); + width: calc(((16 * 1 * 1px) / 2) + 2px); + width: calc(calc(calc(16 * 1 * 1px) / 2) + 2px); + width: calc(var(--aa-spacing-half) + 2px); +} + +.aa-ItemContentSubtitle--standalone { + align-items: center; + color: var(--bs-body-color); + display: grid; + gap: calc((16 * 1 * 1px) / 2); + gap: calc(calc(16 * 1 * 1px) / 2); + grid-gap: calc((16 * 1 * 1px) / 2); + grid-gap: calc(calc(16 * 1 * 1px) / 2); + grid-gap: var(--aa-spacing-half); + gap: var(--aa-spacing-half); + grid-auto-flow: column; + justify-content: start; +} +.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon::before { + border-radius: 0 0 0 3px; + border-width: 0 0 1.5px 1.5px; + height: calc((16 * 1 * 1px) / 2); + height: calc(calc(16 * 1 * 1px) / 2); + height: var(--aa-spacing-half); + width: calc((16 * 1 * 1px) / 2); + width: calc(calc(16 * 1 * 1px) / 2); + width: var(--aa-spacing-half); +} + +.aa-ItemContentSubtitleCategory { + color: var(--bs-secondary-color); + font-weight: 500; +} + +.aa-ItemContentDescription { + color: var(--bs-body-color); + font-size: 0.85em; + max-width: 100%; + overflow-x: hidden; + text-overflow: ellipsis; +} +.aa-ItemContentDescription:empty { + display: none; +} +.aa-ItemContentDescription mark { + background: rgba(245, 223, 77, 0.5); + background: rgba(var(--aa-description-highlight-background-color-rgb), var(--aa-description-highlight-background-color-alpha)); + color: rgba(38, 38, 39, 1); + color: rgba(var(--aa-text-color-rgb), var(--aa-text-color-alpha)); + font-style: normal; + font-weight: 500; + font-weight: var(--aa-font-weight-medium); +} + +.aa-ItemContentDash { + color: var(--bs-secondary-color); + display: none; + opacity: 0.4; +} + +.aa-ItemContentTag { + color: var(--bs-primary-text-emphasis); + border-radius: 3px; + margin: 0 0.4em 0 0; + padding: 0.08em 0.3em; +} + +.aa-ItemWrapper, +.aa-ItemLink { + align-items: center; + color: inherit; + display: grid; + gap: calc(((16 * 1 * 1px) / 2) / 2); + gap: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + grid-gap: calc(((16 * 1 * 1px) / 2) / 2); + grid-gap: calc(calc(calc(16 * 1 * 1px) / 2) / 2); + grid-gap: calc(var(--aa-spacing-half) / 2); + gap: calc(var(--aa-spacing-half) / 2); + grid-auto-flow: column; + justify-content: space-between; + width: 100%; +} + +.aa-ItemLink { + color: inherit; + -webkit-text-decoration: none; + text-decoration: none; +} + +.aa-ItemActions { + display: grid; + grid-auto-flow: column; + height: 100%; + justify-self: end; + margin: 0 calc((16 * 1 * 1px) / -3); + margin: 0 calc(calc(16 * 1 * 1px) / -3); + margin: 0 calc(var(--aa-spacing) / -3); + padding: 0 2px 0 0; +} + +.aa-ItemActionButton { + align-items: center; + background: none; + border: 0; + color: var(--bs-secondary-color); + cursor: pointer; + display: flex; + flex-shrink: 0; + padding: 0; +} +.aa-ItemActionButton:hover svg, .aa-ItemActionButton:focus svg { + color: var(--bs-body-color); +} +@media (hover: none) and (pointer: coarse) { + .aa-ItemActionButton:hover svg, .aa-ItemActionButton:focus svg { + color: inherit; + } +} +.aa-ItemActionButton svg { + color: var(--bs-secondary-color); + margin: 0; + margin: calc(calc(16 * 1 * 1px) / 3); + margin: calc(var(--aa-spacing) / 3); + stroke-width: 1.6; + stroke-width: var(--aa-icon-stroke-width); + width: 20px; + width: var(--aa-action-icon-size); +} + +.aa-ActiveOnly { + visibility: hidden; +} + +/*----------------*/ +/* 7. Panel Header*/ +/*----------------*/ +.aa-PanelHeader { + align-items: center; + background: var(--bs-primary-bg-subtle); + color: #fff; + display: grid; + height: var(--aa-modal-header-height); + margin: 0; + padding: calc((16 * 1 * 1px) / 2) calc(16 * 1 * 1px); + padding: calc(calc(16 * 1 * 1px) / 2) calc(16 * 1 * 1px); + padding: var(--aa-spacing-half) var(--aa-spacing); + position: relative; +} +.aa-PanelHeader::after { + background-image: linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); + background-image: linear-gradient(rgba(var(--aa-background-color-rgb), 1), rgba(var(--aa-background-color-rgb), 0)); + bottom: calc(((16 * 1 * 1px) / 2) * -1); + bottom: calc(calc(calc(16 * 1 * 1px) / 2) * -1); + bottom: calc(var(--aa-spacing-half) * -1); + content: ""; + height: calc((16 * 1 * 1px) / 2); + height: calc(calc(16 * 1 * 1px) / 2); + height: var(--aa-spacing-half); + left: 0; + pointer-events: none; + position: absolute; + right: 0; + z-index: 9999; + z-index: var(--aa-base-z-index); +} + +/*----------------*/ +/* 8. Panel Footer*/ +/*----------------*/ +.aa-PanelFooter { + background-color: var(--bs-body-bg); + box-shadow: inset 0 1px 0 var(--bs-dropdown-border-color); + display: flex; + justify-content: space-between; + margin: 0; + padding: calc(16 * 1 * 1px); + padding: var(--aa-spacing); + position: relative; + z-index: 9999; + z-index: var(--aa-base-z-index); +} +.aa-PanelFooter::after { + background-image: linear-gradient(rgba(255, 255, 255, 0), rgba(128, 126, 163, 0.6)); + background-image: linear-gradient(rgba(var(--aa-background-color-rgb), 0), rgba(var(--aa-muted-color-rgb), var(--aa-muted-color-alpha))); + content: ""; + height: calc(16 * 1 * 1px); + height: var(--aa-spacing); + left: 0; + opacity: 0.12; + pointer-events: none; + position: absolute; + right: 0; + top: calc((16 * 1 * 1px) * -1); + top: calc(calc(16 * 1 * 1px) * -1); + top: calc(var(--aa-spacing) * -1); + z-index: calc(9999 - 1); + z-index: calc(var(--aa-base-z-index) - 1); +} + +/*----------------*/ +/* 9. Detached Mode*/ +/*----------------*/ +.aa-DetachedContainer { + background: var(--bs-body-bg); + bottom: 0; + box-shadow: 0 0 0 1px rgba(35, 38, 59, 0.1), + 0 6px 16px -4px rgba(35, 38, 59, 0.15); + box-shadow: var(--aa-panel-shadow); + display: flex; + flex-direction: column; + left: 0; + margin: 0; + overflow: hidden; + padding: 0; + position: fixed; + right: 0; + top: 0; + z-index: 9999; + z-index: var(--aa-base-z-index); +} +.aa-DetachedContainer::after { + height: 32px; +} +.aa-DetachedContainer .aa-SourceHeader { + margin: calc((16 * 1 * 1px) / 2) 0 calc((16 * 1 * 1px) / 2) 2px; + margin: calc(calc(16 * 1 * 1px) / 2) 0 calc(calc(16 * 1 * 1px) / 2) 2px; + margin: var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px; +} +.aa-DetachedContainer .aa-Panel { + background-color: var(--bs-body-bg); + border-radius: 0; + box-shadow: none; + flex-grow: 1; + margin: 0; + padding: 0; + position: relative; +} +.aa-DetachedContainer .aa-PanelLayout { + bottom: 0; + box-shadow: none; + left: 0; + margin: 0; + max-height: none; + overflow-y: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; +} +.aa-DetachedFormContainer { + border-bottom: solid 1px rgba(128, 126, 163, 0.3); + border-bottom: solid 1px rgba(var(--aa-panel-border-color-rgb), var(--aa-panel-border-color-alpha)); + display: flex; + flex-direction: row; + justify-content: space-between; + margin: 0; + padding: calc((16 * 1 * 1px) / 2); + padding: calc(calc(16 * 1 * 1px) / 2); + padding: var(--aa-spacing-half); +} +.aa-DetachedCancelButton { + background: none; + border: 0; + border-radius: 3px; + color: var(--bs-body-color); + cursor: pointer; + font: inherit; + margin: 0 0 0 calc((16 * 1 * 1px) / 2); + margin: 0 0 0 calc(calc(16 * 1 * 1px) / 2); + margin: 0 0 0 var(--aa-spacing-half); + padding: 0 calc((16 * 1 * 1px) / 2); + padding: 0 calc(calc(16 * 1 * 1px) / 2); + padding: 0 var(--aa-spacing-half); +} +.aa-DetachedCancelButton:hover, .aa-DetachedCancelButton:focus { + box-shadow: inset 0 0 0 1px rgba(128, 126, 163, 0.3); + box-shadow: inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb), var(--aa-panel-border-color-alpha)); +} + +.aa-DetachedContainer--modal { + border-radius: 6px; + bottom: inherit; + height: auto; + margin: 0 auto; + max-width: 680px; + max-width: var(--aa-detached-modal-max-width); + position: absolute; + top: 3%; +} +.aa-DetachedContainer--modal .aa-PanelLayout { + max-height: 500px; + max-height: var(--aa-detached-modal-max-height); + padding-bottom: calc((16 * 1 * 1px) / 2); + padding-bottom: calc(calc(16 * 1 * 1px) / 2); + padding-bottom: var(--aa-spacing-half); + position: static; +} +.aa-DetachedContainer--modal .aa-PanelLayout:empty { + display: none; +} + +/* Search Button*/ +.aa-DetachedSearchButton { + align-items: center; + background-color: var(--bs-body-bg); + border: 1px solid var(--bs-secondary-border-subtle); + border-radius: 3px; + color: var(--bs-secondary-color); + cursor: pointer; + display: flex; + font: inherit; + font-family: inherit; + font-family: var(--aa-font-family); + font-size: calc(16 * 1px); + font-size: var(--aa-font-size); + height: 44px; + height: var(--aa-search-input-height); + margin: 0; + padding: 0 calc(44px / 8); + padding: 0 calc(var(--aa-search-input-height) / 8); + position: relative; + text-align: left; + width: 100%; +} +.aa-DetachedSearchButton:focus { + border-color: var(--bs-primary-border-subtle); + box-shadow: rgba(62, 52, 211, 0.2) 0 0 0 3px, inset rgba(62, 52, 211, 0.2) 0 0 0 2px; + box-shadow: var(--bs-primary-border-subtle) 0 0 0 3px, inset var(--bs-primary-border-subtle) 0 0 0 2px; + outline: currentColor none medium; +} +.aa-DetachedSearchButtonIcon { + align-items: center; + color: var(--bs-primary-text-emphasis); + cursor: auto; + cursor: initial; + display: flex; + flex-shrink: 0; + height: 100%; + justify-content: center; + width: calc(20px + (16 * 1 * 1px)); + width: calc(20px + calc(16 * 1 * 1px)); + width: calc(var(--aa-icon-size) + var(--aa-spacing)); +} + +.aa-DetachedSearchButtonQuery { + color: var(--bs-body-color); + line-height: 1.25em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.aa-DetachedSearchButtonPlaceholder[hidden] { + display: none; +} + +/* Remove scroll on `body`*/ +.aa-Detached { + height: 100vh; + overflow: hidden; +} + +.aa-DetachedOverlay { + background-color: rgba(115, 114, 129, 0.4); + background-color: rgba(var(--aa-overlay-color-rgb), var(--aa-overlay-color-alpha)); + height: 100vh; + left: 0; + margin: 0; + padding: 0; + position: fixed; + right: 0; + top: 0; + z-index: calc(9999 - 1); + z-index: calc(var(--aa-base-z-index) - 1); +} + +/*----------------*/ +/* 10. Gradients*/ +/*----------------*/ +.aa-GradientTop, +.aa-GradientBottom { + height: calc((16 * 1 * 1px) / 2); + height: calc(calc(16 * 1 * 1px) / 2); + height: var(--aa-spacing-half); + left: 0; + pointer-events: none; + position: absolute; + right: 0; + z-index: 9999; + z-index: var(--aa-base-z-index); +} + +.aa-GradientTop { + background-image: linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); + background-image: linear-gradient(rgba(var(--aa-background-color-rgb), 1), rgba(var(--aa-background-color-rgb), 0)); + top: 0; +} + +.aa-GradientBottom { + background-image: linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1)); + background-image: linear-gradient(rgba(var(--aa-background-color-rgb), 0), rgba(var(--aa-background-color-rgb), 1)); + border-bottom-left-radius: calc((16 * 1 * 1px) / 4); + border-bottom-left-radius: calc(calc(16 * 1 * 1px) / 4); + border-bottom-left-radius: calc(var(--aa-spacing) / 4); + border-bottom-right-radius: calc((16 * 1 * 1px) / 4); + border-bottom-right-radius: calc(calc(16 * 1 * 1px) / 4); + border-bottom-right-radius: calc(var(--aa-spacing) / 4); + bottom: 0; +} + +/*----------------*/ +/* 11. Utilities*/ +/*----------------*/ +@media (hover: none) and (pointer: coarse) { + .aa-DesktopOnly { + display: none; + } +} + +@media (hover: hover) { + .aa-TouchOnly { + display: none; + } +} \ No newline at end of file From 25a86427491d17ca240ab9c26cb3bf879aae6fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 21:41:45 +0100 Subject: [PATCH 103/634] Make algolia autocomplete headers blue in bootstrap theme --- .../components/autocomplete_bootstrap_theme.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/css/components/autocomplete_bootstrap_theme.css b/assets/css/components/autocomplete_bootstrap_theme.css index 74d22c59..62bd9927 100644 --- a/assets/css/components/autocomplete_bootstrap_theme.css +++ b/assets/css/components/autocomplete_bootstrap_theme.css @@ -186,7 +186,7 @@ body { } .aa-Label svg, .aa-LoadingIndicator svg { - color: var(--bs-primary-text-emphasis); + color: rgba(var(--bs-primary-rgb), 1.0); height: auto; max-height: 20px; max-height: var(--aa-input-icon-size); @@ -475,7 +475,7 @@ body { } .aa-SourceHeaderTitle { background: var(--bs-body-bg); - color: var(--bs-primary-text-emphasis); + color: rgba(var(--bs-primary-rgb), 1.0); display: inline-block; font-size: 0.8em; font-weight: 600; @@ -490,7 +490,7 @@ body { } .aa-SourceHeaderLine { - border-bottom: solid 1px var(--bs-primary-text-emphasis); + border-bottom: solid 1px rgba(var(--bs-primary-rgb), 1.0); display: block; height: 2px; left: 0; @@ -520,9 +520,9 @@ body { } .aa-SourceFooterSeeAll:focus, .aa-SourceFooterSeeAll:hover { border: 1px solid rgba(62, 52, 211, 1); - border: 1px solid rgba(var(--aa-primary-color-rgb), 1); + border: 1px solid rgba(var(--bs-primary-rgb), 1); color: rgba(62, 52, 211, 1); - color: rgba(var(--aa-primary-color-rgb), 1); + color: rgba(var(--bs-primary-rgb), 1); } /* ----------------*/ @@ -754,7 +754,7 @@ body { } .aa-ItemContentTag { - color: var(--bs-primary-text-emphasis); + color: rgba(var(--bs-primary-rgb), 1.0);; border-radius: 3px; margin: 0 0.4em 0 0; padding: 0.08em 0.3em; @@ -1025,7 +1025,7 @@ body { } .aa-DetachedSearchButtonIcon { align-items: center; - color: var(--bs-primary-text-emphasis); + color: rgba(var(--bs-primary-rgb), 1.0); cursor: auto; cursor: initial; display: flex; From f70f6c39cefe48e98ebd83a3d6e717e1826e6942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 22:00:12 +0100 Subject: [PATCH 104/634] Fixed error that algolia autocomplete input appeared multiple times after a link was clicked --- assets/controllers/elements/part_livesearch_controller.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index b25b3544..51738a30 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -30,7 +30,7 @@ export default class extends Controller { _autocomplete; - connect() { + initialize() { // The endpoint for searching parts const base_url = this.element.dataset.autocomplete; // The URL template for the part detail pages @@ -45,7 +45,7 @@ export default class extends Controller { this._autocomplete = autocomplete({ container: this.element, - panelContainer: document.body, + panelContainer: document.getElementById("navbar-frame"), panelPlacement: 'end', plugins: [recentSearchesPlugin], openOnFocus: true, From faa3bea3ab66511d550d6b63ffd73fe0d040d704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 22:06:54 +0100 Subject: [PATCH 105/634] Allow to navigate to dropdown entries by keyboard --- .../elements/part_livesearch_controller.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 51738a30..7b717880 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -50,6 +50,25 @@ export default class extends Controller { plugins: [recentSearchesPlugin], openOnFocus: true, placeholder: "Search for parts", + + // Use a navigator compatible with turbo: + navigator: { + navigate({ itemUrl }) { + window.Turbo.visit(itemUrl, { action: "advance" }); + }, + navigateNewTab({ itemUrl }) { + const windowReference = window.open(itemUrl, '_blank', 'noopener'); + + if (windowReference) { + windowReference.focus(); + } + }, + navigateNewWindow({ itemUrl }) { + window.open(itemUrl, '_blank', 'noopener'); + }, + }, + + // If the form is submitted, forward the term to the form onSubmit({state, event, ...setters}) { //Put the current text into each target input field const input = that.inputTarget; @@ -61,6 +80,8 @@ export default class extends Controller { input.value = state.query; input.form.requestSubmit(); }, + + getSources({ query }) { return [ { @@ -71,6 +92,9 @@ export default class extends Controller { return fetch(url) .then((response) => response.json()); }, + getItemUrl({ item }) { + return part_detail_uri_template.replace('__ID__', item.id); + }, templates: { header({ html }) { return html`Parts From 746ba398a996bfe34f1694f3de39d04878c0968c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 28 Feb 2024 22:08:32 +0100 Subject: [PATCH 106/634] Fixed missing dropdown after some link navigations --- .../css/components/autocomplete_bootstrap.css | 106 ------------------ templates/_navbar_search.html.twig | 3 +- 2 files changed, 2 insertions(+), 107 deletions(-) delete mode 100644 assets/css/components/autocomplete_bootstrap.css diff --git a/assets/css/components/autocomplete_bootstrap.css b/assets/css/components/autocomplete_bootstrap.css deleted file mode 100644 index 83a9f79a..00000000 --- a/assets/css/components/autocomplete_bootstrap.css +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). - * - * Copyright (C) 2019 - 2024 Jan Böhmer (https://github.com/jbtronics) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -/*** - * Override some styles from the algolia autocomplete library to harmonize more with the bootstrap theme - */ - -/** Ensure that the autocomplete dropdown is always on top */ -.aa-Panel { - z-index: 1000; -} - -/** Use a form definition similar to bootstraps form-control */ -.aa-Form { - background-color: var(--bs-body-bg); - border: var(--bs-border-width) solid var(--bs-border-color); - border-radius: var(--bs-border-radius); - color: var(--bs-body-color); - transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; - -} - -.aa-Form:focus-within { - background-color: var(--bs-body-bg); - border-color: #86b7fe; - box-shadow: 0 0 0 0.25rem rgba(13,110,253,.25); - color: var(--bs-body-color); - outline: 0; -} - -/** Use a panel definition similar to bootstraps dropdown */ -.aa-Panel { - --bs-dropdown-zindex: 1000; - --bs-dropdown-min-width: 10rem; - --bs-dropdown-padding-x: 0; - --bs-dropdown-padding-y: 0.5rem; - --bs-dropdown-spacer: 0.125rem; - --bs-dropdown-font-size: 1rem; - --bs-dropdown-color: var(--bs-body-color); - --bs-dropdown-bg: var(--bs-body-bg); - --bs-dropdown-border-color: var(--bs-border-color-translucent); - --bs-dropdown-border-radius: var(--bs-border-radius); - --bs-dropdown-border-width: var(--bs-border-width); - --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); - --bs-dropdown-divider-bg: var(--bs-border-color-translucent); - --bs-dropdown-divider-margin-y: 0.5rem; - --bs-dropdown-box-shadow: var(--bs-box-shadow); - --bs-dropdown-link-color: var(--bs-body-color); - --bs-dropdown-link-hover-color: var(--bs-body-color); - --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); - --bs-dropdown-link-active-color: #fff; - --bs-dropdown-link-active-bg: #0d6efd; - --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); - --bs-dropdown-item-padding-x: 1rem; - --bs-dropdown-item-padding-y: 0.25rem; - --bs-dropdown-header-color: #6c757d; - --bs-dropdown-header-padding-x: 1rem; - --bs-dropdown-header-padding-y: 0.5rem; - - padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); - margin: 0; - font-size: var(--bs-dropdown-font-size); - color: var(--bs-dropdown-color); - background-color: var(--bs-dropdown-bg); - background-clip: padding-box; - border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); - border-radius: var(--bs-dropdown-border-radius); -} - -:root { - /** Font colors */ - --aa-text-color-rgb: var(--bs-body-color-rgb); - --aa-primary-color-rgb: var(--bs-primary-text-emphasis); - --aa-muted-color-rgb: var(--bs-secondary-text-emphasis); - - /** Border colors */ - --aa-panel-border-color-rgb: var(--bs-dropdown-border-color); - --aa-input-border-color-rgb: var(--bs-border-color); - --aa-input-border-color-alpha: 1.0; - - /* Background colors */ - --aa-background-color-rgb: var(--bs-dropdown-bg); - --aa-input-background-color-rgb: var(--bs-body-color); - --aa-selected-color-rgb: var(--bs-dropdown-link-hover-bg); - --aa-description-highlight-background-color-rgb: var(--bs-secondary-bg); - - /** Shadow colors */ - --aa-panel-shadow: var(--bs-dropdown-box-shadow) - -} \ No newline at end of file diff --git a/templates/_navbar_search.html.twig b/templates/_navbar_search.html.twig index d4452533..1dc2ae36 100644 --- a/templates/_navbar_search.html.twig +++ b/templates/_navbar_search.html.twig @@ -69,7 +69,8 @@
-
From 409dcce3c76adf64d90f42f42888cba8a29d5024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 29 Feb 2024 20:39:27 +0100 Subject: [PATCH 107/634] Use correct translations for livesearch field in navbar --- .../elements/part_livesearch_controller.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 7b717880..5ded2df2 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -24,6 +24,12 @@ import "../../css/components/autocomplete_bootstrap_theme.css"; import { createLocalStorageRecentSearchesPlugin } from '@algolia/autocomplete-plugin-recent-searches'; import {marked} from "marked"; +import { + trans, + SEARCH_PLACEHOLDER, + SEARCH_SUBMIT +} from '../../translator'; + export default class extends Controller { static targets = ["input"]; @@ -49,7 +55,10 @@ export default class extends Controller { panelPlacement: 'end', plugins: [recentSearchesPlugin], openOnFocus: true, - placeholder: "Search for parts", + placeholder: trans(SEARCH_PLACEHOLDER), + translations: { + submitButtonTitle: trans(SEARCH_SUBMIT) + }, // Use a navigator compatible with turbo: navigator: { From faadd8e9a45ff45c3faf7991e18e393495ff8a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 29 Feb 2024 21:53:28 +0100 Subject: [PATCH 108/634] Improved layout for autocomplete dropdown --- .../elements/part_livesearch_controller.js | 17 ++++++++++++----- templates/_navbar_search.html.twig | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index 5ded2df2..d5facbea 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -27,7 +27,8 @@ import {marked} from "marked"; import { trans, SEARCH_PLACEHOLDER, - SEARCH_SUBMIT + SEARCH_SUBMIT, + STATISTICS_PARTS } from '../../translator'; export default class extends Controller { @@ -42,6 +43,9 @@ export default class extends Controller { // The URL template for the part detail pages const part_detail_uri_template = this.element.dataset.detailUrl; + //The URL of the placeholder picture + const placeholder_image = this.element.dataset.placeholderImage; + const that = this; const recentSearchesPlugin = createLocalStorageRecentSearchesPlugin({ @@ -106,25 +110,28 @@ export default class extends Controller { }, templates: { header({ html }) { - return html`Parts + return html`${trans(STATISTICS_PARTS)}
`; }, item({item, components, html}) { const details_url = part_detail_uri_template.replace('__ID__', item.id); - return html`
- ${item.name} + ${item.name}
- ${components.Highlight({hit: item, attribute: 'name'})} + + ${components.Highlight({hit: item, attribute: 'name'})} +
${components.Snippet({hit: item, attribute: 'description'})} + ${item.category ? html`

${item.category}

` : ""} + ${item.footprint ? html`

${item.footprint}

` : ""}
diff --git a/templates/_navbar_search.html.twig b/templates/_navbar_search.html.twig index 1dc2ae36..4b954b62 100644 --- a/templates/_navbar_search.html.twig +++ b/templates/_navbar_search.html.twig @@ -71,6 +71,7 @@ {# It is important that this element has an id field. Otherwise the dropdown panel wont appear after some link clicks #} From e00988047c6289093f0dbb0b04a9f6772885a33b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 29 Feb 2024 22:20:30 +0100 Subject: [PATCH 109/634] Added highlighting to search results --- .../elements/part_livesearch_controller.js | 38 ++++++++++++++++--- .../autocomplete_bootstrap_theme.css | 3 +- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index d5facbea..e79ed641 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -37,6 +37,19 @@ export default class extends Controller { _autocomplete; + _highlight = (text, query) => { + if (!text) return text; + if (!query) return text; + + const HIGHLIGHT_PRE_TAG = '__aa-highlight__' + const HIGHLIGHT_POST_TAG = '__/aa-highlight__' + + const escaped = query.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); + const regex = new RegExp(escaped, 'gi'); + + return text.replace(regex, (match) => `${HIGHLIGHT_PRE_TAG}${match}${HIGHLIGHT_POST_TAG}`); + } + initialize() { // The endpoint for searching parts const base_url = this.element.dataset.autocomplete; @@ -97,13 +110,28 @@ export default class extends Controller { getSources({ query }) { return [ + // The parts source { sourceId: 'parts', getItems() { const url = base_url.replace('__QUERY__', encodeURIComponent(query)); - return fetch(url) - .then((response) => response.json()); + const data = fetch(url) + .then((response) => response.json()) + ; + + //Iterate over all fields besides the id and highlight them + const fields = ["name", "description", "category", "footprint"]; + + data.then((items) => { + items.forEach((item) => { + for (const field of fields) { + item[field] = that._highlight(item[field], query); + } + }); + }); + + return data; }, getItemUrl({ item }) { return part_detail_uri_template.replace('__ID__', item.id); @@ -129,9 +157,9 @@ export default class extends Controller {
- ${components.Snippet({hit: item, attribute: 'description'})} - ${item.category ? html`

${item.category}

` : ""} - ${item.footprint ? html`

${item.footprint}

` : ""} + ${components.Highlight({hit: item, attribute: 'description'})} + ${item.category ? html`

${components.Highlight({hit: item, attribute: 'category'})}

` : ""} + ${item.footprint ? html`

${components.Highlight({hit: item, attribute: 'footprint'})}

` : ""}
diff --git a/assets/css/components/autocomplete_bootstrap_theme.css b/assets/css/components/autocomplete_bootstrap_theme.css index 62bd9927..d86232e5 100644 --- a/assets/css/components/autocomplete_bootstrap_theme.css +++ b/assets/css/components/autocomplete_bootstrap_theme.css @@ -629,9 +629,10 @@ body { display: none; } .aa-ItemContent mark { - background: none; + background: var(--bs-highlight-bg); color: var(--bs-body-color); font-style: normal; + padding: 0; font-weight: 700; font-weight: var(--aa-font-weight-bold); } From 1815162907b602fd651d1426cb0978397c04bb1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 29 Feb 2024 22:46:19 +0100 Subject: [PATCH 110/634] Added a search bar to homepage --- .../elements/part_livesearch_controller.js | 8 +++- templates/_navbar.html.twig | 5 ++- .../search.macro.html.twig} | 45 +++++++++++++++---- templates/homepage.html.twig | 12 ++--- 4 files changed, 52 insertions(+), 18 deletions(-) rename templates/{_navbar_search.html.twig => components/search.macro.html.twig} (76%) diff --git a/assets/controllers/elements/part_livesearch_controller.js b/assets/controllers/elements/part_livesearch_controller.js index e79ed641..e1350172 100644 --- a/assets/controllers/elements/part_livesearch_controller.js +++ b/assets/controllers/elements/part_livesearch_controller.js @@ -59,6 +59,9 @@ export default class extends Controller { //The URL of the placeholder picture const placeholder_image = this.element.dataset.placeholderImage; + //If the element is in navbar mode, or not + const navbar_mode = this.element.dataset.navbarMode === "true"; + const that = this; const recentSearchesPlugin = createLocalStorageRecentSearchesPlugin({ @@ -68,8 +71,9 @@ export default class extends Controller { this._autocomplete = autocomplete({ container: this.element, - panelContainer: document.getElementById("navbar-frame"), - panelPlacement: 'end', + //Place the panel in the navbar, if the element is in navbar mode + panelContainer: navbar_mode ? document.getElementById("navbar-frame") : document.body, + panelPlacement: this.element.dataset.panelPlacement, plugins: [recentSearchesPlugin], openOnFocus: true, placeholder: trans(SEARCH_PLACEHOLDER), diff --git a/templates/_navbar.html.twig b/templates/_navbar.html.twig index 2ae97371..0d775b8d 100644 --- a/templates/_navbar.html.twig +++ b/templates/_navbar.html.twig @@ -1,4 +1,5 @@ {% import "helper.twig" as helper %} +{% import "components/search.macro.html.twig" as search %}